导入功能优化
This commit is contained in:
parent
b8f40498df
commit
77d3b9899c
|
|
@ -1,7 +1,7 @@
|
|||
/*YInZLc9/kvMC1mGq3o4LwAszAXwVlsNyvp/9X8WPLW8=*/
|
||||
import React, { Component } from 'react';
|
||||
|
||||
import { ajax, createPage, base, high } from 'nc-lightapp-front';
|
||||
import { ajax, createPage, base, high,toast } from 'nc-lightapp-front';
|
||||
import backBtnClick from './btnClicks/back_BtnClick';
|
||||
import checkAddLine from './btnClicks/checkAddline';
|
||||
import checkDeleteLine from './btnClicks/checkDeleteLine';
|
||||
|
|
@ -161,10 +161,20 @@ class SaleInvoiceCard extends Component {
|
|||
}
|
||||
let formData = new FormData();
|
||||
let dome = document.querySelector("#fileInfo");
|
||||
let olddate = this.props.cardTable.getAllData(this.tableId)
|
||||
let olddate = this.props.cardTable.getAllData(this.tableId);
|
||||
formData.append('imgFile', dome.files[0]);
|
||||
// headers['Content-Type'] = 'multipart/form-data'
|
||||
formData.append('states', states);
|
||||
formData.append('states', states);vsrctype
|
||||
let srcids = [];
|
||||
let vsrctype = [];
|
||||
for(let i=0;i<olddate.rows.length;i++){
|
||||
srcids.push(olddate.rows[i].values.csrcid.value);
|
||||
vsrctype.push(olddate.rows[i].values.vsrctype.value);
|
||||
}
|
||||
formData.append('srcids', srcids);
|
||||
formData.append('vsrctype', vsrctype);
|
||||
// 存储超出分配的物料信息
|
||||
let excessMaterials = "";
|
||||
|
||||
ajax({
|
||||
url: '/nccloud/so/saleinvoice/SaleInvoiceNumImport.do',
|
||||
data: formData,
|
||||
|
|
@ -172,34 +182,64 @@ class SaleInvoiceCard extends Component {
|
|||
success: (res) => {
|
||||
console.log("成功")
|
||||
if (res.data.isSuccess == "Y") {
|
||||
for(let row of res.data.data){
|
||||
let taxPrice=row.taxPrice;
|
||||
let materialCode=row.materialCode;
|
||||
|
||||
for(let row of res.data.data){
|
||||
let taxPrice = row.taxPrice;
|
||||
let materialCode = row.materialCode;
|
||||
let rowNumber = row.rowNumber;
|
||||
let matchQuantity = parseFloat(row.matchQuantity) || 0;
|
||||
let remaining = matchQuantity;
|
||||
// 筛选匹配的行(物料编码+含税单价)
|
||||
let matchedRows = [];
|
||||
for(let i=0;i<olddate.rows.length;i++){
|
||||
//物料编码
|
||||
let cmaterialvid = olddate.rows[i].values.cmaterialvid.display;
|
||||
// 含税单价
|
||||
let nqtorigtaxprice = olddate.rows[i].values.nqtorigtaxprice.value;
|
||||
if(cmaterialvid == materialCode && parseFloat(taxPrice)==parseFloat(nqtorigtaxprice)){
|
||||
this.props.cardTable.setValByKeyAndIndex("saleinvoice_b", i, "vbdef18", { value: row.matchQuantity })
|
||||
}
|
||||
let nnum =parseFloat(olddate.rows[i].values.nnum.value);
|
||||
for(let tsrow of res.data.tsdata){
|
||||
if(olddate.rows[i].values.csrcid.value == tsrow.srcid){
|
||||
let taxPriceInt = Math.trunc(parseFloat(taxPrice) || 0); // 去除小数部分,保留整数位
|
||||
let tableTaxPriceInt = Math.trunc(parseFloat(nqtorigtaxprice) || 0);
|
||||
if(cmaterialvid == materialCode && taxPriceInt == tableTaxPriceInt && nnum >0){
|
||||
matchedRows.push({
|
||||
index: i,
|
||||
row: olddate.rows[i],
|
||||
nnum: parseFloat(olddate.rows[i].values.nnum.value) || 0,
|
||||
date: tsrow.ts // 日期字段,需按实际字段名调整
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 无匹配行
|
||||
if(matchedRows.length == 0){
|
||||
excessMaterials += "EXCEL第"+rowNumber+"行 物料编码【"+materialCode+"】(含税单价:"+taxPrice+"):需分配"+matchQuantity+",无匹配库存\n";
|
||||
continue;
|
||||
}
|
||||
// 按日期升序排序(早日期在前)
|
||||
matchedRows.sort(function(a,b){
|
||||
return new Date(a.date) - new Date(b.date);
|
||||
});
|
||||
// 分配数量
|
||||
let allocatedTotal = 0;
|
||||
for(let j=0;j<matchedRows.length;j++){
|
||||
if(remaining <= 0) break;
|
||||
let currentRow = matchedRows[j];
|
||||
let allocateNum = Math.min(remaining, currentRow.nnum);
|
||||
// 设置分配数量
|
||||
this.props.cardTable.setValByKeyAndIndex("saleinvoice_b", currentRow.index, "vbdef18", { value: allocateNum });
|
||||
allocatedTotal += allocateNum;
|
||||
remaining -= allocateNum;
|
||||
}
|
||||
// 处理超出部分
|
||||
if(remaining > 0){
|
||||
excessMaterials += "EXCEL第"+rowNumber+"行 物料编码【"+materialCode+"】(含税单价:"+taxPrice+"):需分配"+matchQuantity+",实际分配"+allocatedTotal+",超出"+remaining+"\n";
|
||||
}
|
||||
// for (let bvo of olddate.rows) {
|
||||
// //物料编码
|
||||
// let cmaterialvid = bvo.values.cmaterialvid.display;
|
||||
// // 含税单价
|
||||
// let nqtorigtaxprice = bvo.values.nqtorigtaxprice.value;
|
||||
// if(cmaterialvid == materialCode && parseFloat(taxPrice)==parseFloat(nqtorigtaxprice)){
|
||||
// this.props.cardTable.setValByKeyAndIndex("saleinvoice_b", 1, "vbdef18", { value: row.matchQuantity })
|
||||
// }
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
// 提示超出信息
|
||||
if(excessMaterials != ""){
|
||||
toast({ color: 'danger', content: "以下物料分配数量超出可用库存:\n"+excessMaterials });;
|
||||
// alert(excessMaterials);
|
||||
}
|
||||
}
|
||||
// let id = this.props.getUrlParam(PRIMARY_KEY.id);
|
||||
// this.onRefresh();
|
||||
}
|
||||
})
|
||||
// 置空,不然重复导入同名不会执行
|
||||
|
|
|
|||
Loading…
Reference in New Issue