前言
在erp进销存系统中,进是采购,销是销售,存是库存,这里主要讲的是采购流程,在采购流程中首先要有采购申请(简称申购单)——>申购单审核通过——>根据申购单生成采购单
场景再现
我:老师,当库存不足的时候,我们可以提交采购申请(某同学熟练的新增了一个申购单)
我:然后当申购单审核通过,生成一个新的采购订单
老师:你是说采购订单根据申购单生成,一个申购单生成一个采购订单(老师开始挖坑了)
我:对(老师挖坑我就跳真快乐)
老师:那有没有可能做到多个申购单生成一个采购订单(继续挖坑)
我:不可能,一个申购单只能生成一个采购订单(手动打脸( ̄ε(# ̄))
老师:
码农附体
问题: 如何多个申购单生成一个采购订单
解决关键: 把多个申购单需要申购的东西添加到新的采购订单中(这不是废话吗( ̄ε(# ̄))
申购单和采购单分主表从表,主表存主表信息,从表存需要采购的东西,也就是说我们的采购单不需要管申购单主表的东西,只需要把申购单从表的东西(申购物料)拿过来就可以,拿完一张又一张,最后再进行保存,就达到了多张申购单生成采购单的目的
1.生成新的采购单
首先我们先新增一张采购单,并在主表中输入自动生成的订单编号和必要信息
//============================新建=======================
function Clear_Ord(){
$("#main_info").form('clear');
// $("#applydetial").table();
$("#POM_TYPE").val("物料采购单");
$("#POM_APPLY_TIME").val("1");
//--------获取订单号-------
var Cont = "PUR";
if ($('#APOM_ID').val() == ''||$('#APOM_ID').val() ==null) {
$.post('../../php/GetBillNo.php', {
'Cont': Cont
},
function(data) {
$("#POM_ID").val(data['BILL_NO']);
}, "json");
}
//--------获取订单号-------
$("#POM_APPLY_NAME").val(obj[0].USER_ID);
}
2.添加采购物料
新增一个采购订单后,我们需要添加采购物料,采购物料来源于已经通过审核的申购单
那我们打开一个窗体,加载已审核的申购单,点击查看第一张申购单的物料,并添加到采购订单中来
//===================新增物料=====================
table.on('toolbar(receivablebill)', function(obj) {
var data = obj.data;
switch (obj.event) {
case 'add':
var json= JSON.stringify(data);
layer.open({
type : 2,
title : "添加采购物料",
// area : [ '100%', '100%' ],
area : [ '80%', '85%' ],
content : './applyitem.html'
});
break;
}
});
//===================查看申购单明细表===========
table.on('tool(apply)', function(obj){
var data = obj.data;
if(obj.event === 'detail'){
console.log(data.APOM_ID);
var Tab_NameD = "T_APOD";//查询的数据库表名
var Title2 = " where APOD_ID = '"+ data.APOM_ID +"'";//查询的数据库语句
$.post("../../php/Tab_query.php",{'Tab_Name':Tab_NameD,'Cont':Title2},
function(data1){
console.log(data1);
table.reload('tableall2',{
// "code":0,
// "msg":"",
// "count":data1.length,
"data":data1//查询后的数据赋值给表格
});
},"json");
}
});
//===================把数据调回采购单明细表格=============================================
table.on('toolbar(applydetial)', function(obj) {
var checkStatus = table.checkStatus(obj.config.id);
var data = checkStatus.data;
switch (obj.event) {
case 'ensure':
// console.log(data);
var index = parent.layer.getFrameIndex(window.name);//获取窗口索引
parent.layer.close(index);//关闭弹出层
var data1=new Array();
data1=parent.layui.table.cache.tableall;
for(var i=0;i<data.length;i++){
data1.push(data[i]);
}
parent.layui.table.reload('tableall',{
// "code":0,
// "msg":"",
// "count":data1.length,
"data":data1
});
break;
};
});
3.问题解决
我们可以看到我们已经把第一张申购单的申购物料导入采购单中了,那么我们是不是可以继续把第二张申购单的东西也导入到那张采购单中呢,如果可以的话,那多个申购单生成一个采购单的问题就解决了呀,事不宜迟,继续冲
我们可以看到两张申购单的物料都加进了采购单中,至此掀桌子事件已得到妥善解决
题外话
在大学中,很多老师手把手教你代码,也有的老师不教代码,讲方向,讲思路,功能代码实现靠自己,在自己刚接触IT时,希望老师是前者,在自己有一定的基础后,更希望自己的老师是后者,后者比前者更有意义(有一定的基础)