kts-component-invoice-operate 3.2.216 → 3.2.217

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/.dumi/theme/builtins/API.tsx +66 -66
  2. package/.editorconfig +16 -16
  3. package/.fatherrc.ts +4 -4
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +8 -8
  7. package/README.md +13 -9
  8. package/dist/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.d.ts +2 -0
  9. package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +1 -0
  10. package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +4 -1
  11. package/dist/index.esm.js +242 -135
  12. package/dist/index.js +241 -134
  13. package/docs/index.md +5 -5
  14. package/docs-dist/404.html +33 -33
  15. package/docs-dist/index.html +33 -33
  16. package/docs-dist/static/arrowDown.a1cbf0d8.svg +2 -2
  17. package/docs-dist/static/arrowUp.4c482054.svg +2 -2
  18. package/docs-dist/static/fork.5431267d.svg +11 -11
  19. package/docs-dist/static/plus.44013ce3.svg +11 -11
  20. package/docs-dist/static/plus.4fd1af30.svg +11 -11
  21. package/docs-dist/umi.css +18 -18
  22. package/index.html +12 -12
  23. package/package.json +62 -62
  24. package/src/Invoice/Invoice-digtal/_test/architecture/index.tsx +21 -21
  25. package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +40 -40
  26. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +182 -176
  27. package/src/Invoice/Invoice-digtal/_test/freight/index.tsx +14574 -14574
  28. package/src/Invoice/Invoice-digtal/_test/header/index.tsx +84 -84
  29. package/src/Invoice/Invoice-digtal/_test/importGoods/index.tsx +868 -868
  30. package/src/Invoice/Invoice-digtal/_test/importStakeholder/index.tsx +18 -18
  31. package/src/Invoice/Invoice-digtal/_test/lineCredit/index.tsx +19 -19
  32. package/src/Invoice/Invoice-digtal/_test/prefab/index.tsx +150 -150
  33. package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +55 -55
  34. package/src/Invoice/Invoice-digtal/_test/realEstateInfo/index.tsx +27 -21
  35. package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -12
  36. package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -29
  37. package/src/Invoice/Invoice-digtal/index.md +44 -42
  38. package/src/Invoice/InvoiceController/InvoiceControllerForm/index.ts +105 -105
  39. package/src/Invoice/InvoiceController/InvoiceControllerState/AutoComplete/index.ts +26 -26
  40. package/src/Invoice/InvoiceController/InvoiceControllerState/BuyerState/index.tsx +88 -88
  41. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IColumnsReplenish/index.ts +10 -10
  42. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/IGood/index.ts +33 -33
  43. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/ImportGoods/index.ts +81 -81
  44. package/src/Invoice/InvoiceController/InvoiceControllerState/FreightListState/index.ts +39 -39
  45. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/Drag/index.ts +15 -15
  46. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/EndowCode/index.tsx +104 -104
  47. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IColumnsReplenish/index.ts +10 -10
  48. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/IGood/index.ts +87 -87
  49. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ImportGoods/index.ts +84 -84
  50. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/LineAttributeType/index.ts +7 -7
  51. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/ProductComparison/index.ts +9 -9
  52. package/src/Invoice/InvoiceController/InvoiceControllerState/GoodsListState/index.ts +134 -131
  53. package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +13 -13
  54. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +71 -71
  55. package/src/Invoice/InvoiceController/fns/addFreight.ts +11 -11
  56. package/src/Invoice/InvoiceController/fns/addGood.ts +11 -11
  57. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +126 -126
  58. package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +86 -86
  59. package/src/Invoice/InvoiceController/fns/delFreight.ts +38 -38
  60. package/src/Invoice/InvoiceController/fns/delGood.ts +41 -41
  61. package/src/Invoice/InvoiceController/fns/getGoodsSearch.ts +26 -26
  62. package/src/Invoice/InvoiceController/fns/importGoodsDrawer.ts +79 -79
  63. package/src/Invoice/InvoiceController/fns/itemBlur.ts +40 -40
  64. package/src/Invoice/InvoiceController/fns/mergeDetails.ts +201 -201
  65. package/src/Invoice/InvoiceController/fns/mergeDiscount.ts +35 -35
  66. package/src/Invoice/InvoiceController/fns/saveEditFreight.ts +24 -24
  67. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +24 -24
  68. package/src/Invoice/InvoiceController/fns/setEditFreight.ts +16 -16
  69. package/src/Invoice/InvoiceController/fns/setEditGood.ts +16 -16
  70. package/src/Invoice/InvoiceController/fns/setFreight.ts +10 -10
  71. package/src/Invoice/InvoiceController/fns/setGoods.ts +10 -10
  72. package/src/Invoice/InvoiceController/fns/updateInvoiceNo.ts +8 -8
  73. package/src/Invoice/InvoiceController/index.ts +106 -106
  74. package/src/Invoice/_test/buyerNameSearch/index.tsx +42 -42
  75. package/src/Invoice/_test/children/index.tsx +214 -214
  76. package/src/Invoice/_test/deduction/index.tsx +935 -935
  77. package/src/Invoice/_test/draft/index.tsx +40 -40
  78. package/src/Invoice/_test/easiest/index.tsx +5 -5
  79. package/src/Invoice/_test/endowCode/index.tsx +1158 -1158
  80. package/src/Invoice/_test/goodsMenuExpand/index.tsx +32 -32
  81. package/src/Invoice/_test/importBuyer/index.tsx +74 -74
  82. package/src/Invoice/_test/importGoods/index.tsx +1197 -1197
  83. package/src/Invoice/_test/invoiceType/index.tsx +59 -59
  84. package/src/Invoice/_test/isInvoiceNo/index.tsx +12 -12
  85. package/src/Invoice/_test/replaceHead/index.tsx +22 -22
  86. package/src/Invoice/_test/retrieveData/index.tsx +22 -22
  87. package/src/Invoice/_test/seller/index.tsx +28 -28
  88. package/src/Invoice/_test/setDataSource/index.tsx +73 -73
  89. package/src/Invoice/_test/unit/index.tsx +19 -19
  90. package/src/Invoice/index.less +31 -31
  91. package/src/Invoice/index.md +56 -56
  92. package/src/Invoice/index.tsx +197 -197
  93. package/src/Invoice/tools/calculate/index.ts +144 -144
  94. package/src/Invoice/tools/coolingFn/index.ts +17 -17
  95. package/src/Invoice/tools/evaluate/index.ts +7 -7
  96. package/src/Invoice/tools/idGenerator/index.ts +2 -2
  97. package/src/Invoice/tools/itemName/index.ts +55 -55
  98. package/src/Invoice/tools/lazyFn/index.ts +19 -19
  99. package/src/Invoice/tools/mounting/index.ts +13 -13
  100. package/src/Invoice/tools/strringFn/index.ts +40 -40
  101. package/src/Invoice/tools/useToGenerateId/index.ts +10 -10
  102. package/src/Invoice/tools/utils/index.ts +1 -1
  103. package/src/Invoice/tools/utils/money/index.ts +20 -20
  104. package/src/Invoice/ui/default/AddComparisonDrawer/index.tsx +149 -149
  105. package/src/Invoice/ui/default/Buyer/index.less +219 -219
  106. package/src/Invoice/ui/default/Buyer/index.tsx +114 -114
  107. package/src/Invoice/ui/default/Buyer/ui/BuyerNameInput/index.tsx +166 -166
  108. package/src/Invoice/ui/default/Buyer/ui/ImportBuyerButton/index.tsx +21 -21
  109. package/src/Invoice/ui/default/EndowCodeDrawer/index.less +8 -8
  110. package/src/Invoice/ui/default/EndowCodeDrawer/index.tsx +612 -612
  111. package/src/Invoice/ui/default/GoodsList/hook/useColumns/autoFillFn/index.ts +647 -647
  112. package/src/Invoice/ui/default/GoodsList/hook/useColumns/index.tsx +712 -712
  113. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  114. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  115. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/Expand/index.tsx +57 -57
  116. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.less +18 -18
  117. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemCodeInput/index.tsx +49 -49
  118. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +17 -17
  119. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +91 -91
  120. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  121. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  122. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +118 -118
  123. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/dist/index.js +32 -32
  124. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  125. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +25 -25
  126. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  127. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +99 -99
  128. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  129. package/src/Invoice/ui/default/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  130. package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -24
  131. package/src/Invoice/ui/default/GoodsList/hook/useOnRow/index.tsx +52 -52
  132. package/src/Invoice/ui/default/GoodsList/hook/useRowSelection/index.tsx +120 -120
  133. package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -23
  134. package/src/Invoice/ui/default/GoodsList/index.less +185 -185
  135. package/src/Invoice/ui/default/GoodsList/index.tsx +205 -205
  136. package/src/Invoice/ui/default/GoodsList/ui/AddRowButton/index.tsx +65 -65
  137. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +21 -21
  138. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +244 -244
  139. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  140. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +69 -69
  141. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +65 -65
  142. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDetails/index.tsx +91 -91
  143. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useMergeDiscount/index.tsx +36 -36
  144. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesDiscount/index.tsx +109 -109
  145. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/hooks/useSalesGifts/index.tsx +94 -94
  146. package/src/Invoice/ui/default/GoodsList/ui/BulkMenu/index.tsx +37 -37
  147. package/src/Invoice/ui/default/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  148. package/src/Invoice/ui/default/GoodsList/ui/Search/index.less +10 -10
  149. package/src/Invoice/ui/default/GoodsList/ui/Search/index.tsx +52 -52
  150. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.less +18 -18
  151. package/src/Invoice/ui/default/GoodsList/ui/Statistics/index.tsx +114 -114
  152. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.less +40 -40
  153. package/src/Invoice/ui/default/GoodsList/ui/TableRow/index.tsx +71 -71
  154. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.less +38 -38
  155. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual/index.tsx +130 -130
  156. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.less +44 -44
  157. package/src/Invoice/ui/default/GoodsList/ui/TableVirtual.o/index.tsx +96 -96
  158. package/src/Invoice/ui/default/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -31
  159. package/src/Invoice/ui/default/ImportBuyerDrawer/index.tsx +75 -75
  160. package/src/Invoice/ui/default/ImportGoodsDrawer/index.tsx +201 -201
  161. package/src/Invoice/ui/default/InvoiceHeader/index.less +68 -68
  162. package/src/Invoice/ui/default/InvoiceHeader/index.tsx +246 -246
  163. package/src/Invoice/ui/default/Seller/index.less +113 -113
  164. package/src/Invoice/ui/default/Seller/index.tsx +98 -98
  165. package/src/Invoice/ui/default/Sign/index.less +14 -14
  166. package/src/Invoice/ui/default/Sign/index.tsx +71 -71
  167. package/src/Invoice/ui/digtal/Architecture/index.less +18 -18
  168. package/src/Invoice/ui/digtal/Architecture/index.tsx +177 -177
  169. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/dist/index.js +616 -616
  170. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/index.tsx +246 -246
  171. package/src/Invoice/ui/digtal/FreightList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  172. package/src/Invoice/ui/digtal/FreightList/hook/useOnRow/index.tsx +37 -37
  173. package/src/Invoice/ui/digtal/FreightList/hook/useRowSelection/index.tsx +119 -119
  174. package/src/Invoice/ui/digtal/FreightList/hook/useWindowClick/index.tsx +23 -23
  175. package/src/Invoice/ui/digtal/FreightList/index.less +72 -72
  176. package/src/Invoice/ui/digtal/FreightList/index.tsx +129 -129
  177. package/src/Invoice/ui/digtal/FreightList/ui/AddRowButton/index.tsx +74 -74
  178. package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  179. package/src/Invoice/ui/digtal/FreightList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +36 -36
  180. package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.less +28 -28
  181. package/src/Invoice/ui/digtal/FreightList/ui/TableRow/index.tsx +20 -20
  182. package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.less +38 -38
  183. package/src/Invoice/ui/digtal/FreightList/ui/TableVirtual/index.tsx +108 -108
  184. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +683 -683
  185. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/dist/index.js +616 -616
  186. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +712 -703
  187. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/svg/plus.svg +11 -11
  188. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.less +20 -20
  189. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/Drag/index.tsx +205 -205
  190. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +9 -9
  191. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +87 -87
  192. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -30
  193. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -43
  194. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -76
  195. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -41
  196. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -34
  197. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -13
  198. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -98
  199. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -14
  200. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -20
  201. package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +51 -51
  202. package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +121 -121
  203. package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -23
  204. package/src/Invoice/ui/digtal/GoodsList/index.less +56 -56
  205. package/src/Invoice/ui/digtal/GoodsList/index.tsx +181 -179
  206. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +77 -77
  207. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +340 -340
  208. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +11 -11
  209. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -75
  210. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -50
  211. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +37 -37
  212. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -82
  213. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +57 -57
  214. package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +36 -36
  215. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +11 -11
  216. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +60 -60
  217. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +53 -53
  218. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +98 -98
  219. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +11 -11
  220. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.less +28 -28
  221. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +52 -52
  222. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +38 -38
  223. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +108 -108
  224. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +34 -31
  225. package/src/Invoice/ui/digtal/InvoiceHeader/index.less +57 -57
  226. package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -77
  227. package/src/Invoice/ui/digtal/RealEstateInfo/index.less +21 -14
  228. package/src/Invoice/ui/digtal/RealEstateInfo/index.tsx +242 -192
  229. package/src/Invoice/ui/digtal/Sign/index.less +48 -48
  230. package/src/Invoice/ui/digtal/Sign/index.tsx +99 -99
  231. package/src/Invoice/ui/digtal/StakeFarmerholder/index.less +99 -99
  232. package/src/Invoice/ui/digtal/StakeFarmerholder/index.tsx +477 -477
  233. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/arrowDown.svg +2 -2
  234. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/arrowUp.svg +2 -2
  235. package/src/Invoice/ui/digtal/StakeFarmerholder/svg/plus.svg +11 -11
  236. package/src/Invoice/ui/digtal/Stakeholder/index.less +99 -99
  237. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +435 -435
  238. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +2 -2
  239. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +2 -2
  240. package/src/Invoice/ui/digtal/Stakeholder/svg/plus.svg +11 -11
  241. package/src/InvoiceTypeModal/_test/easiest/index.tsx +31 -31
  242. package/src/InvoiceTypeModal/dist/index.js +92 -92
  243. package/src/InvoiceTypeModal/index.less +7 -7
  244. package/src/InvoiceTypeModal/index.md +5 -5
  245. package/src/InvoiceTypeModal/index.tsx +161 -161
  246. package/src/TaxClassificationCodeModal/_test/easiest/index.tsx +184 -184
  247. package/src/TaxClassificationCodeModal/index.less +17 -17
  248. package/src/TaxClassificationCodeModal/index.md +6 -6
  249. package/src/TaxClassificationCodeModal/index.tsx +152 -152
  250. package/src/index.ts +13 -13
  251. package/tsconfig.json +31 -31
  252. package/typings.d.ts +3 -3
@@ -1,79 +1,79 @@
1
- import { dutyFree, format15, updateUnitPriceExcludingTax, updateUnitPriceTax } from '../../ui/default/GoodsList/hook/useColumns/autoFillFn';
2
- import { InvoiceControllerState, IGood } from '../';
3
- import evaluate from '../../tools/evaluate';
4
- import { countAmountIncludeTax } from '../../tools/calculate';
5
-
6
- /**
7
- * 删除一个货物
8
- */
9
- export default async (s: InvoiceControllerState, record: any, controller:any) => {
10
- Object.keys(record).filter(e => !record[e] && record[e] !== 0).forEach(e => { delete record[e] });
11
-
12
- // 没用 被编辑的货物 和 form 就退出
13
- if (!s.goodsListState.editGood || !s.goodsListState.form) return;
14
-
15
- // 导入时清空之前输入的值,使用导入的单价和税率(参考税局系统)
16
- record.quantity = undefined;
17
- record.lineAmountExcludeTax = undefined;
18
- record.lineAmountIncludeTax = undefined;
19
-
20
- // 中间数据
21
- const between: any = {...record };
22
-
23
- between.itemCode = record.itemCode;
24
- between.shorthand = record.shorthand;
25
- between.itemName = record.itemName;
26
- between.itemNameOther = record.itemName;
27
- between.itemModelName = record.itemModelName;
28
- between.unit = record.unit;
29
- between.quantity = record.quantity;
30
- between.priceIncludeTax = record.priceIncludeTax;
31
- between.lineAmountIncludeTax = record.lineAmountIncludeTax;
32
- between.lineAmountExcludeTax = record.lineAmountExcludeTax;
33
- between.taxRate = record.taxRate;
34
- between.taxAmount = record.taxAmount;
35
-
36
- // 设置编辑货物
37
- const editGood: IGood = s.goodsListState.editGood = { ...s.goodsListState.editGood, ...between };
38
-
39
- if (editGood.taxRate) {
40
- editGood.taxRate = dutyFree(controller, editGood.taxRate, s.goodsListState.form, editGood)
41
- }
42
-
43
- if (`${editGood.priceIncludeTax}` === '0') {
44
- editGood.priceIncludeTax = undefined;
45
- editGood.priceExcludeTax = undefined;
46
- } else {
47
- editGood.priceExcludeTax = getPriceExcludeTax(editGood, record, s.calculatingDigits) as number;
48
- }
49
-
50
- if (editGood.quantity && editGood.priceIncludeTax) {
51
- editGood.lineAmountIncludeTax = countAmountIncludeTax(editGood.quantity, editGood.priceIncludeTax, s.calculatingDigits);
52
- }
53
-
54
- // 导入FORM里
55
- if (s.goodsListState.isMyShow) {
56
- s.goodsListState.form.setFieldsValue({
57
- ...editGood,
58
- itemName: editGood.itemNameSelf,
59
- itemModelName: editGood.itemModelNameSelf,
60
- });
61
- } else {
62
- s.goodsListState.form.setFieldsValue({
63
- ...editGood,
64
- });
65
- }
66
-
67
- // s.goodsListState.importGoods.isVisibleDrawer = false;
68
- s.goodsListState.isTaxIncluded
69
- ? await updateUnitPriceExcludingTax(controller, s.goodsListState.form, record)
70
- : await updateUnitPriceTax(controller, s.goodsListState.form, record)
71
- }
72
-
73
- /** 货物单价,不含税 */
74
- const getPriceExcludeTax = (s: IGood, record: any, calculatingDigits?: number) => {
75
- if ((!s.taxRate && s.taxRate !== 0) || (!record.priceIncludeTax && record.priceIncludeTax !== 0)) return;
76
-
77
- // 单价(含税)/(1+税率) = 单价(不含税)
78
- return format15(evaluate(`${record.priceIncludeTax} / (1+${s.taxRate}/100)`), calculatingDigits);
79
- };
1
+ import { dutyFree, format15, updateUnitPriceExcludingTax, updateUnitPriceTax } from '../../ui/default/GoodsList/hook/useColumns/autoFillFn';
2
+ import { InvoiceControllerState, IGood } from '../';
3
+ import evaluate from '../../tools/evaluate';
4
+ import { countAmountIncludeTax } from '../../tools/calculate';
5
+
6
+ /**
7
+ * 删除一个货物
8
+ */
9
+ export default async (s: InvoiceControllerState, record: any, controller:any) => {
10
+ Object.keys(record).filter(e => !record[e] && record[e] !== 0).forEach(e => { delete record[e] });
11
+
12
+ // 没用 被编辑的货物 和 form 就退出
13
+ if (!s.goodsListState.editGood || !s.goodsListState.form) return;
14
+
15
+ // 导入时清空之前输入的值,使用导入的单价和税率(参考税局系统)
16
+ record.quantity = undefined;
17
+ record.lineAmountExcludeTax = undefined;
18
+ record.lineAmountIncludeTax = undefined;
19
+
20
+ // 中间数据
21
+ const between: any = {...record };
22
+
23
+ between.itemCode = record.itemCode;
24
+ between.shorthand = record.shorthand;
25
+ between.itemName = record.itemName;
26
+ between.itemNameOther = record.itemName;
27
+ between.itemModelName = record.itemModelName;
28
+ between.unit = record.unit;
29
+ between.quantity = record.quantity;
30
+ between.priceIncludeTax = record.priceIncludeTax;
31
+ between.lineAmountIncludeTax = record.lineAmountIncludeTax;
32
+ between.lineAmountExcludeTax = record.lineAmountExcludeTax;
33
+ between.taxRate = record.taxRate;
34
+ between.taxAmount = record.taxAmount;
35
+
36
+ // 设置编辑货物
37
+ const editGood: IGood = s.goodsListState.editGood = { ...s.goodsListState.editGood, ...between };
38
+
39
+ if (editGood.taxRate) {
40
+ editGood.taxRate = dutyFree(controller, editGood.taxRate, s.goodsListState.form, editGood)
41
+ }
42
+
43
+ if (`${editGood.priceIncludeTax}` === '0') {
44
+ editGood.priceIncludeTax = undefined;
45
+ editGood.priceExcludeTax = undefined;
46
+ } else {
47
+ editGood.priceExcludeTax = getPriceExcludeTax(editGood, record, s.calculatingDigits) as number;
48
+ }
49
+
50
+ if (editGood.quantity && editGood.priceIncludeTax) {
51
+ editGood.lineAmountIncludeTax = countAmountIncludeTax(editGood.quantity, editGood.priceIncludeTax, s.calculatingDigits);
52
+ }
53
+
54
+ // 导入FORM里
55
+ if (s.goodsListState.isMyShow) {
56
+ s.goodsListState.form.setFieldsValue({
57
+ ...editGood,
58
+ itemName: editGood.itemNameSelf,
59
+ itemModelName: editGood.itemModelNameSelf,
60
+ });
61
+ } else {
62
+ s.goodsListState.form.setFieldsValue({
63
+ ...editGood,
64
+ });
65
+ }
66
+
67
+ // s.goodsListState.importGoods.isVisibleDrawer = false;
68
+ s.goodsListState.isTaxIncluded
69
+ ? await updateUnitPriceExcludingTax(controller, s.goodsListState.form, record)
70
+ : await updateUnitPriceTax(controller, s.goodsListState.form, record)
71
+ }
72
+
73
+ /** 货物单价,不含税 */
74
+ const getPriceExcludeTax = (s: IGood, record: any, calculatingDigits?: number) => {
75
+ if ((!s.taxRate && s.taxRate !== 0) || (!record.priceIncludeTax && record.priceIncludeTax !== 0)) return;
76
+
77
+ // 单价(含税)/(1+税率) = 单价(不含税)
78
+ return format15(evaluate(`${record.priceIncludeTax} / (1+${s.taxRate}/100)`), calculatingDigits);
79
+ };
@@ -1,40 +1,40 @@
1
- import { updateUnitPriceExcludingTax, updateUnitPriceTax } from '../../ui/default/GoodsList/hook/useColumns/autoFillFn';
2
- import { InvoiceControllerState, IGood } from '../';
3
-
4
- /**
5
- * 项目名称智能赋码
6
- */
7
- export default async (s: InvoiceControllerState, record: any, controller:any) => {
8
- Object.keys(record).filter(e => !record[e] && record[e] !== 0).forEach(e => { delete record[e] });
9
-
10
- // 没用 被编辑的货物 和 form 就退出
11
- if (!s.goodsListState.editGood || !s.goodsListState.form) return;
12
-
13
- // 中间数据
14
- const between: any = {...record };
15
-
16
- between.taxClassificationCode = record.taxClassificationCode;
17
- between.shorthand = record.shorthand;
18
-
19
- // 设置编辑货物
20
- const editGood: IGood = s.goodsListState.editGood = { ...s.goodsListState.editGood, ...between };
21
-
22
- // 导入FORM里
23
- if (s.goodsListState.isMyShow) {
24
- s.goodsListState.form.setFieldsValue({
25
- ...editGood,
26
- itemName: editGood.itemNameSelf,
27
- itemModelName: editGood.itemModelNameSelf,
28
- });
29
- } else {
30
- s.goodsListState.form.setFieldsValue({
31
- ...editGood,
32
- });
33
- }
34
-
35
- s.goodsListState.isTaxIncluded
36
- ? await updateUnitPriceExcludingTax(controller, s.goodsListState.form, record)
37
- : await updateUnitPriceTax(controller, s.goodsListState.form, record)
38
- }
39
-
40
-
1
+ import { updateUnitPriceExcludingTax, updateUnitPriceTax } from '../../ui/default/GoodsList/hook/useColumns/autoFillFn';
2
+ import { InvoiceControllerState, IGood } from '../';
3
+
4
+ /**
5
+ * 项目名称智能赋码
6
+ */
7
+ export default async (s: InvoiceControllerState, record: any, controller:any) => {
8
+ Object.keys(record).filter(e => !record[e] && record[e] !== 0).forEach(e => { delete record[e] });
9
+
10
+ // 没用 被编辑的货物 和 form 就退出
11
+ if (!s.goodsListState.editGood || !s.goodsListState.form) return;
12
+
13
+ // 中间数据
14
+ const between: any = {...record };
15
+
16
+ between.taxClassificationCode = record.taxClassificationCode;
17
+ between.shorthand = record.shorthand;
18
+
19
+ // 设置编辑货物
20
+ const editGood: IGood = s.goodsListState.editGood = { ...s.goodsListState.editGood, ...between };
21
+
22
+ // 导入FORM里
23
+ if (s.goodsListState.isMyShow) {
24
+ s.goodsListState.form.setFieldsValue({
25
+ ...editGood,
26
+ itemName: editGood.itemNameSelf,
27
+ itemModelName: editGood.itemModelNameSelf,
28
+ });
29
+ } else {
30
+ s.goodsListState.form.setFieldsValue({
31
+ ...editGood,
32
+ });
33
+ }
34
+
35
+ s.goodsListState.isTaxIncluded
36
+ ? await updateUnitPriceExcludingTax(controller, s.goodsListState.form, record)
37
+ : await updateUnitPriceTax(controller, s.goodsListState.form, record)
38
+ }
39
+
40
+
@@ -1,202 +1,202 @@
1
-
2
- import { message } from 'kts-xui';
3
- import { chain, bignumber } from 'mathjs';
4
- import idGenerator from '../../tools/idGenerator';
5
- import { IGood, InvoiceControllerState, LineAttributeType } from '..';
6
- import { format15 } from '../../tools/calculate';
7
-
8
- export default async function mergeDetails(state: InvoiceControllerState, selectedGoodIndex?: string[]) {
9
-
10
- if (state.goodsListState.editGood || !selectedGoodIndex || selectedGoodIndex.length < 2) return;
11
-
12
- const goodsList = state.goodsListState.goodsList.filter(e => selectedGoodIndex.indexOf(e.$index) >= 0);
13
- if (goodsList.length < 2) return;
14
-
15
- grouping(goodsList).forEach(merge);
16
-
17
- /** 分组 */
18
- function grouping(goodsList: IGood[]): IGood[][] {
19
- const grouped: any = {};
20
- goodsList.forEach(good => {
21
- const key = (() => {
22
- switch (good.lineAttribute) {
23
- case LineAttributeType.折让行:
24
- return LineAttributeType.折让行
25
- case LineAttributeType.赠品行:
26
- return LineAttributeType.赠品行
27
- default:
28
- return LineAttributeType.正常
29
- }
30
- })()
31
-
32
- if (!grouped[key]) {
33
- grouped[key] = [];
34
- }
35
-
36
- grouped[key].push({ ...good, lineAttribute: key });
37
- })
38
- return Object.values(grouped);
39
- }
40
-
41
- /** 合并 */
42
- async function merge(goodsList: IGood[]) {
43
- if (goodsList.length < 2) return;
44
-
45
- const selectedGoodIndex = goodsList.map(e => e.$index);
46
- try {
47
- // 创建合并后的商品对象
48
- let sum: IGood = {
49
- $index: idGenerator(),
50
- lineAttribute: goodsList[0].lineAttribute,
51
- }
52
-
53
- // 存在税率不一样的明细,不能合并
54
- await checkTaxTate(goodsList);
55
-
56
- // 填充行明细信息
57
- sum = await fillingInformationGood(goodsList, sum);
58
-
59
- // 合并数量
60
- sum.quantity = await mergeQuantity(goodsList, state.calculatingDigits);
61
-
62
- // 合并金额(不含税)
63
- sum.lineAmountExcludeTax = await mergeLineAmountExcludeTax(goodsList);
64
-
65
- // 合并金额(含税)
66
- sum.lineAmountIncludeTax = await mergeLineAmountIncludeTax(goodsList);
67
-
68
- // 计算单价(不含税)
69
- sum.priceExcludeTax = await calculatePriceExcludeTax(sum, state.calculatingDigits);
70
-
71
- // 计算单价(含税)
72
- sum.priceIncludeTax = await calculatePriceIncludeTax(sum, state.calculatingDigits);
73
-
74
- // 计算税额
75
- sum.taxAmount = chain(bignumber(sum.lineAmountIncludeTax)).subtract(bignumber(sum.lineAmountExcludeTax)).done().toNumber()
76
-
77
- // 校验数据 是否数量和金额是否同号
78
- await checkSameNumber(sum);
79
-
80
- const p = state.goodsListState.goodsList.indexOf(goodsList[0]);
81
- state.goodsListState.goodsList = state.goodsListState.goodsList.filter(e => selectedGoodIndex.indexOf(e.$index) < 0);
82
- state.goodsListState.goodsList.splice(p, 0, sum);
83
- state.goodsListState.goodsList = state.goodsListState.goodsList.filter(e => e.lineAmountExcludeTax !== 0);
84
- state.goodsListState.goodsMap = new Map();
85
- state.goodsListState.goodsList.forEach(e => { state.goodsListState.goodsMap.set(e.$index, e) });
86
- state.goodsListState.selectedGoodIndex = [];
87
- } catch (error: any) {
88
- showError(error)
89
- }
90
- }
91
- }
92
-
93
- /** 计算单价(含税) */
94
- async function calculatePriceIncludeTax(sum: IGood, calculatingDigits?: number) {
95
- if (!sum.quantity) return undefined;
96
- const value = chain(bignumber(sum.lineAmountIncludeTax)).divide(bignumber(sum.quantity)).done().toNumber()
97
- return format15(value, calculatingDigits) || undefined;
98
- }
99
-
100
- /** 计算单价(不含税) */
101
- async function calculatePriceExcludeTax(sum: IGood, calculatingDigits?: number) {
102
- if (!sum.quantity) return undefined;
103
- const value = chain(bignumber(sum.lineAmountExcludeTax)).divide(bignumber(sum.quantity)).done().toNumber();
104
- return format15(value, calculatingDigits) || undefined;
105
- }
106
-
107
- /** 合并金额(含税) */
108
- async function mergeLineAmountIncludeTax(goodsList: IGood[]) {
109
- let sum = chain(bignumber(0));
110
- goodsList.forEach(e => {
111
- sum = sum.add(bignumber(e.lineAmountIncludeTax || 0))
112
- })
113
- return sum.done().toNumber();
114
- }
115
-
116
- /** 合并金额(不含税) */
117
- async function mergeLineAmountExcludeTax(goodsList: IGood[]) {
118
- let sum = chain(bignumber(0));
119
- goodsList.forEach(e => {
120
- sum = sum.add(bignumber(e.lineAmountExcludeTax || 0))
121
- })
122
- return sum.done().toNumber();
123
- }
124
-
125
- /** 合并数量 */
126
- async function mergeQuantity(goodsList: IGood[], calculatingDigits?: number) {
127
- let sum = chain(bignumber(0));
128
- goodsList.forEach(e => {
129
- sum = sum.add(bignumber(e.quantity || 0))
130
- })
131
-
132
- return sum.done().toNumber()
133
- ? format15(sum.done().toNumber() || 0, calculatingDigits) as any
134
- : undefined
135
- }
136
-
137
- /** 填充行明细信息 */
138
- async function fillingInformationGood(goodsList: IGood[], sum: IGood) {
139
- sum = { ...sum };
140
-
141
- const goods = goodsList[findMaxIndex(goodsList.map(e => e.lineAmountIncludeTax || 0))]
142
-
143
- return { ...goods, lineAttribute: sum.lineAttribute };
144
- }
145
-
146
- /** 存在税率不一样的明细,不能合并 */
147
- async function checkTaxTate(goodsList: IGood[]) {
148
- const tax = goodsList[0].taxRate;
149
- for (let i = 1; i < goodsList.length; i++) {
150
- if (tax !== goodsList[i].taxRate) {
151
- throw new Error('存在税率不一样的明细,不能合并');
152
- }
153
- }
154
- }
155
-
156
- /** 校验数据 是否数量和金额是否同号 */
157
- async function checkSameNumber(good: IGood) {
158
- if (!good.quantity) return;
159
-
160
- if (!good.lineAmountExcludeTax && good.lineAmountExcludeTax !== 0) {
161
- const content = '金额不能为空';
162
- message.error({ content, key: content });
163
- throw new Error(content);
164
- }
165
-
166
- if (
167
- good.quantity >= 0 && good.lineAmountExcludeTax >= 0 ||
168
- good.lineAmountExcludeTax === 0 ||
169
- good.quantity < 0 && good.lineAmountExcludeTax < 0
170
- ) {
171
- return;
172
- } else {
173
- const content = '合并失败,合并后“数量”和“金额”必须同时为正数或同时为负数。';
174
- message.error({ content, key: content });
175
- throw new Error(content);
176
- }
177
- }
178
-
179
- /** 显示错误信息 */
180
- function showError(error: Error) {
181
- console.log(error);
182
- message.error({ content: error.message, key: error.message });
183
- }
184
-
185
- /** 查询最大数据的索引 */
186
- function findMaxIndex(arr: number[]): number {
187
- if (arr.length === 0) {
188
- throw new Error("数组为空");
189
- }
190
-
191
- let maxIndex = 0;
192
- let maxValue = arr[0];
193
-
194
- for (let i = arr.length - 1; i >= 0; i--) {
195
- if (arr[i] > maxValue) {
196
- maxValue = arr[i];
197
- maxIndex = i;
198
- }
199
- }
200
-
201
- return maxIndex;
1
+
2
+ import { message } from 'kts-xui';
3
+ import { chain, bignumber } from 'mathjs';
4
+ import idGenerator from '../../tools/idGenerator';
5
+ import { IGood, InvoiceControllerState, LineAttributeType } from '..';
6
+ import { format15 } from '../../tools/calculate';
7
+
8
+ export default async function mergeDetails(state: InvoiceControllerState, selectedGoodIndex?: string[]) {
9
+
10
+ if (state.goodsListState.editGood || !selectedGoodIndex || selectedGoodIndex.length < 2) return;
11
+
12
+ const goodsList = state.goodsListState.goodsList.filter(e => selectedGoodIndex.indexOf(e.$index) >= 0);
13
+ if (goodsList.length < 2) return;
14
+
15
+ grouping(goodsList).forEach(merge);
16
+
17
+ /** 分组 */
18
+ function grouping(goodsList: IGood[]): IGood[][] {
19
+ const grouped: any = {};
20
+ goodsList.forEach(good => {
21
+ const key = (() => {
22
+ switch (good.lineAttribute) {
23
+ case LineAttributeType.折让行:
24
+ return LineAttributeType.折让行
25
+ case LineAttributeType.赠品行:
26
+ return LineAttributeType.赠品行
27
+ default:
28
+ return LineAttributeType.正常
29
+ }
30
+ })()
31
+
32
+ if (!grouped[key]) {
33
+ grouped[key] = [];
34
+ }
35
+
36
+ grouped[key].push({ ...good, lineAttribute: key });
37
+ })
38
+ return Object.values(grouped);
39
+ }
40
+
41
+ /** 合并 */
42
+ async function merge(goodsList: IGood[]) {
43
+ if (goodsList.length < 2) return;
44
+
45
+ const selectedGoodIndex = goodsList.map(e => e.$index);
46
+ try {
47
+ // 创建合并后的商品对象
48
+ let sum: IGood = {
49
+ $index: idGenerator(),
50
+ lineAttribute: goodsList[0].lineAttribute,
51
+ }
52
+
53
+ // 存在税率不一样的明细,不能合并
54
+ await checkTaxTate(goodsList);
55
+
56
+ // 填充行明细信息
57
+ sum = await fillingInformationGood(goodsList, sum);
58
+
59
+ // 合并数量
60
+ sum.quantity = await mergeQuantity(goodsList, state.calculatingDigits);
61
+
62
+ // 合并金额(不含税)
63
+ sum.lineAmountExcludeTax = await mergeLineAmountExcludeTax(goodsList);
64
+
65
+ // 合并金额(含税)
66
+ sum.lineAmountIncludeTax = await mergeLineAmountIncludeTax(goodsList);
67
+
68
+ // 计算单价(不含税)
69
+ sum.priceExcludeTax = await calculatePriceExcludeTax(sum, state.calculatingDigits);
70
+
71
+ // 计算单价(含税)
72
+ sum.priceIncludeTax = await calculatePriceIncludeTax(sum, state.calculatingDigits);
73
+
74
+ // 计算税额
75
+ sum.taxAmount = chain(bignumber(sum.lineAmountIncludeTax)).subtract(bignumber(sum.lineAmountExcludeTax)).done().toNumber()
76
+
77
+ // 校验数据 是否数量和金额是否同号
78
+ await checkSameNumber(sum);
79
+
80
+ const p = state.goodsListState.goodsList.indexOf(goodsList[0]);
81
+ state.goodsListState.goodsList = state.goodsListState.goodsList.filter(e => selectedGoodIndex.indexOf(e.$index) < 0);
82
+ state.goodsListState.goodsList.splice(p, 0, sum);
83
+ state.goodsListState.goodsList = state.goodsListState.goodsList.filter(e => e.lineAmountExcludeTax !== 0);
84
+ state.goodsListState.goodsMap = new Map();
85
+ state.goodsListState.goodsList.forEach(e => { state.goodsListState.goodsMap.set(e.$index, e) });
86
+ state.goodsListState.selectedGoodIndex = [];
87
+ } catch (error: any) {
88
+ showError(error)
89
+ }
90
+ }
91
+ }
92
+
93
+ /** 计算单价(含税) */
94
+ async function calculatePriceIncludeTax(sum: IGood, calculatingDigits?: number) {
95
+ if (!sum.quantity) return undefined;
96
+ const value = chain(bignumber(sum.lineAmountIncludeTax)).divide(bignumber(sum.quantity)).done().toNumber()
97
+ return format15(value, calculatingDigits) || undefined;
98
+ }
99
+
100
+ /** 计算单价(不含税) */
101
+ async function calculatePriceExcludeTax(sum: IGood, calculatingDigits?: number) {
102
+ if (!sum.quantity) return undefined;
103
+ const value = chain(bignumber(sum.lineAmountExcludeTax)).divide(bignumber(sum.quantity)).done().toNumber();
104
+ return format15(value, calculatingDigits) || undefined;
105
+ }
106
+
107
+ /** 合并金额(含税) */
108
+ async function mergeLineAmountIncludeTax(goodsList: IGood[]) {
109
+ let sum = chain(bignumber(0));
110
+ goodsList.forEach(e => {
111
+ sum = sum.add(bignumber(e.lineAmountIncludeTax || 0))
112
+ })
113
+ return sum.done().toNumber();
114
+ }
115
+
116
+ /** 合并金额(不含税) */
117
+ async function mergeLineAmountExcludeTax(goodsList: IGood[]) {
118
+ let sum = chain(bignumber(0));
119
+ goodsList.forEach(e => {
120
+ sum = sum.add(bignumber(e.lineAmountExcludeTax || 0))
121
+ })
122
+ return sum.done().toNumber();
123
+ }
124
+
125
+ /** 合并数量 */
126
+ async function mergeQuantity(goodsList: IGood[], calculatingDigits?: number) {
127
+ let sum = chain(bignumber(0));
128
+ goodsList.forEach(e => {
129
+ sum = sum.add(bignumber(e.quantity || 0))
130
+ })
131
+
132
+ return sum.done().toNumber()
133
+ ? format15(sum.done().toNumber() || 0, calculatingDigits) as any
134
+ : undefined
135
+ }
136
+
137
+ /** 填充行明细信息 */
138
+ async function fillingInformationGood(goodsList: IGood[], sum: IGood) {
139
+ sum = { ...sum };
140
+
141
+ const goods = goodsList[findMaxIndex(goodsList.map(e => e.lineAmountIncludeTax || 0))]
142
+
143
+ return { ...goods, lineAttribute: sum.lineAttribute };
144
+ }
145
+
146
+ /** 存在税率不一样的明细,不能合并 */
147
+ async function checkTaxTate(goodsList: IGood[]) {
148
+ const tax = goodsList[0].taxRate;
149
+ for (let i = 1; i < goodsList.length; i++) {
150
+ if (tax !== goodsList[i].taxRate) {
151
+ throw new Error('存在税率不一样的明细,不能合并');
152
+ }
153
+ }
154
+ }
155
+
156
+ /** 校验数据 是否数量和金额是否同号 */
157
+ async function checkSameNumber(good: IGood) {
158
+ if (!good.quantity) return;
159
+
160
+ if (!good.lineAmountExcludeTax && good.lineAmountExcludeTax !== 0) {
161
+ const content = '金额不能为空';
162
+ message.error({ content, key: content });
163
+ throw new Error(content);
164
+ }
165
+
166
+ if (
167
+ good.quantity >= 0 && good.lineAmountExcludeTax >= 0 ||
168
+ good.lineAmountExcludeTax === 0 ||
169
+ good.quantity < 0 && good.lineAmountExcludeTax < 0
170
+ ) {
171
+ return;
172
+ } else {
173
+ const content = '合并失败,合并后“数量”和“金额”必须同时为正数或同时为负数。';
174
+ message.error({ content, key: content });
175
+ throw new Error(content);
176
+ }
177
+ }
178
+
179
+ /** 显示错误信息 */
180
+ function showError(error: Error) {
181
+ console.log(error);
182
+ message.error({ content: error.message, key: error.message });
183
+ }
184
+
185
+ /** 查询最大数据的索引 */
186
+ function findMaxIndex(arr: number[]): number {
187
+ if (arr.length === 0) {
188
+ throw new Error("数组为空");
189
+ }
190
+
191
+ let maxIndex = 0;
192
+ let maxValue = arr[0];
193
+
194
+ for (let i = arr.length - 1; i >= 0; i--) {
195
+ if (arr[i] > maxValue) {
196
+ maxValue = arr[i];
197
+ maxIndex = i;
198
+ }
199
+ }
200
+
201
+ return maxIndex;
202
202
  }