import React from 'react'; import { Drawer, Table } from 'kts-components-antd-x3'; import Invoice from '../../..'; import { updateUnitPriceExcludingTax, updateUnitPriceTax, dutyFree, format15 } from '../GoodsList/hook/useColumns/autoFillFn'; import { countAmountIncludeTax } from '../../../tools/calculate' import { IGood } from '../../../InvoiceController'; import evaluate from '../../../tools/evaluate'; export default () => { const controller = Invoice.useInvoiceController(); const visible = controller.useMemo(s => s.goodsListState.importGoods.isVisibleDrawer, []); const topExpand = controller.useMemo(s => s.goodsListState.importGoods.topExpand, []); const onClose = React.useCallback(() => { controller.pipeline(async s => { s.goodsListState.importGoods.isVisibleDrawer = false })(); }, [controller]); return ( { topExpand &&
{topExpand}
}
); }; const DrawerBody = () => { const controller = Invoice.useInvoiceController(); const columns = controller.useMemo(s => s.goodsListState.importGoods.columns, []); const dataSource = controller.useMemo(s => s.goodsListState.importGoods.dataSource, []); const pagination = controller.useMemo(s => s.goodsListState.importGoods.pagination, []); // const [editGood] = React.useState(controller.state.goodsListState.editGood); React.useEffect(() => { controller.getGoodsList && controller.getGoodsList({ pagination: { current: 1 } }) }, [controller]); return ( { controller.getGoodsList && controller.getGoodsList({ pagination }) }} onRow={record => { return { onClick: () => { controller.run(async s => { Object.keys(record).filter(e => !record[e] && record[e] !== 0).forEach(e => { delete record[e] }); // 导入时校验函数 if (await s.goodsListState.importGoods.verifyFn(record) === false) return; // 没用 被编辑的货物 和 form 就退出 if (!s.goodsListState.editGood || !s.goodsListState.form) return; // 导入时清空之前输入的值,使用导入的单价和税率(参考税局系统) record.quantity = undefined; record.lineAmountExcludeTax = undefined; record.lineAmountIncludeTax = undefined; // 中间数据 const between = { ...record }; between.itemName = getItemName(record, s.goodsListState.editGood); between.itemCode = getItemCode(record, s.goodsListState.editGood); between.itemNameOther = getItemNameOther(record, s.goodsListState.editGood); // 设置编辑货物 const editGood: IGood = s.goodsListState.editGood = { ...s.goodsListState.editGood, itemModelName: undefined, itemModelNameSelf: undefined, ...between }; if (editGood.taxRate) { editGood.taxRate = dutyFree(controller, editGood.taxRate, s.goodsListState.form, editGood) } if (`${editGood.priceIncludeTax}` === '0') { editGood.priceIncludeTax = undefined; editGood.priceExcludeTax = undefined; } else { editGood.priceExcludeTax = getPriceExcludeTax(editGood, record, s.calculatingDigits) as number; } if (editGood.quantity && editGood.priceIncludeTax) { editGood.lineAmountIncludeTax = countAmountIncludeTax(editGood.quantity, editGood.priceIncludeTax, s.calculatingDigits); } // 导入FORM里 s.goodsListState.form.setFieldsValue({ ...editGood, }); // if (s.goodsListState.isMyShow) { // s.goodsListState.form.setFieldsValue({ // ...editGood, // itemName: editGood.itemNameSelf, // itemModelName: editGood.itemModelNameSelf, // }); // } else { // s.goodsListState.form.setFieldsValue({ // ...editGood, // }); // } s.goodsListState.importGoods.isVisibleDrawer = false; s.goodsListState.isTaxIncluded ? await updateUnitPriceExcludingTax(controller, s.goodsListState.form, record) : await updateUnitPriceTax(controller, s.goodsListState.form, record) }) } }; }} /> ); }; /** 项目名称 */ // const getItemName = (record: any) => { // return record.shorthand // ? `*${record.shorthand}*${record.itemName}` // : record.itemName; // }; /** 货物单价,不含税 */ const getPriceExcludeTax = (s: IGood, record: any, calculatingDigits?: number) => { if ((!s.taxRate && s.taxRate !== 0) || (!record.priceIncludeTax && record.priceIncludeTax !== 0)) return; // 单价(含税)/(1+税率) = 单价(不含税) return format15(evaluate(`${record.priceIncludeTax} / (1+${s.taxRate}/100)`), calculatingDigits); }; // 获取我方名称 const getItemName = (record: any, editGood: IGood) => { // let shorthand; // shorthand = record.shorthand; // if (shorthand) { // return `*${shorthand}*${record.itemName}`; // } // shorthand = getSN(editGood.itemName)?.shorthand; // if (shorthand) { // return `*${shorthand}*${record.itemNameSelf}`; // } return record.itemName; } // 获取他方名称 const getItemNameOther = (record: any, editGood: IGood) => { // if (!editGood.itemName) return editGood.itemName; // let shorthand; // shorthand = record.shorthand; // if (shorthand) { // return `*${shorthand}*${record.itemNameSelf}`; // } return record.itemName; } // 获取商品编号 const getItemCode = (record: any, editGood: IGood) => { // let shorthand; // shorthand = record.shorthand; // if (shorthand) { // return `*${shorthand}*${record.itemName}`; // } // shorthand = getSN(editGood.itemName)?.shorthand; // if (shorthand) { // return `*${shorthand}*${record.itemNameSelf}`; // } return record.productCode; }