前言
在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時,希望老師是前者,在自己有一定的基礎後,更希望自己的老師是後者,後者比前者更有意義(有一定的基礎)