kts-component-invoice-operate 3.1.20 → 3.2.0

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 (272) hide show
  1. package/dist/Invoice/Invoice-digtal/_test/disabled/index.d.ts +4 -0
  2. package/dist/Invoice/Invoice-digtal/_test/easiest/index.d.ts +4 -0
  3. package/dist/Invoice/Invoice-digtal/_test/header/index.d.ts +4 -0
  4. package/dist/Invoice/Invoice-digtal/_test/readOnly/index.d.ts +4 -0
  5. package/dist/Invoice/Invoice-digtal/_test/stakeholder/index.d.ts +4 -0
  6. package/dist/Invoice/Invoice-digtal/_test/typeSelection/index.d.ts +4 -0
  7. package/dist/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.d.ts +10 -0
  8. package/dist/Invoice/InvoiceController/InvoiceControllerState/index.d.ts +6 -0
  9. package/dist/Invoice/InvoiceController/fns/addGoodDiscount.d.ts +1 -1
  10. package/dist/Invoice/InvoiceController/fns/addGoodDiscountV2.d.ts +12 -0
  11. package/dist/Invoice/InvoiceController/fns/delGood.d.ts +1 -1
  12. package/dist/Invoice/InvoiceController/index.d.ts +2 -0
  13. package/dist/Invoice/index.d.ts +25 -12
  14. package/dist/Invoice/tools/mounting/index.d.ts +3 -0
  15. package/dist/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.d.ts +1 -1
  16. package/dist/Invoice/ui/{Buyer → default/Buyer}/index.d.ts +1 -1
  17. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.d.ts +2 -2
  18. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +0 -1
  19. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +1 -1
  20. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +1 -1
  21. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +1 -1
  22. package/dist/Invoice/ui/default/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  23. package/dist/Invoice/ui/default/GoodsList/hook/useDeduction/index.d.ts +8 -0
  24. package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.d.ts +1 -1
  25. package/dist/Invoice/ui/default/GoodsList/hook/useWindowClick/index.d.ts +8 -0
  26. package/dist/Invoice/ui/{Seller → default/Seller}/index.d.ts +1 -1
  27. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.d.ts +35 -0
  28. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/index.d.ts +3 -0
  29. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
  30. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.d.ts +6 -0
  31. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
  32. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
  33. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
  34. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
  35. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  36. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
  37. package/dist/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.d.ts +8 -0
  38. package/dist/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.d.ts +8 -0
  39. package/dist/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.d.ts +8 -0
  40. package/dist/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.d.ts +8 -0
  41. package/dist/Invoice/ui/digtal/GoodsList/index.d.ts +17 -0
  42. package/dist/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.d.ts +3 -0
  43. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +5 -0
  44. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +5 -0
  45. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +6 -0
  46. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.d.ts +6 -0
  47. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +6 -0
  48. package/dist/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.d.ts +5 -0
  49. package/dist/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.d.ts +3 -0
  50. package/dist/Invoice/ui/digtal/GoodsList/ui/Search/index.d.ts +3 -0
  51. package/dist/Invoice/ui/digtal/GoodsList/ui/Statistics/index.d.ts +4 -0
  52. package/dist/Invoice/ui/digtal/GoodsList/ui/TableRow/index.d.ts +2 -0
  53. package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.d.ts +4 -0
  54. package/dist/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.d.ts +4 -0
  55. package/dist/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.d.ts +3 -0
  56. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.d.ts +35 -0
  57. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.d.ts +3 -0
  58. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.d.ts +7 -0
  59. package/dist/Invoice/ui/{GoodsList/hook/useColumns/ui/RowMenu → digtal/GoodsList.o/hook/useColumns/ui/RowEditButton}/index.d.ts +0 -1
  60. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.d.ts +4 -0
  61. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.d.ts +7 -0
  62. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.d.ts +7 -0
  63. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.d.ts +7 -0
  64. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.d.ts +7 -0
  65. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.d.ts +6 -0
  66. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.d.ts +8 -0
  67. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.d.ts +8 -0
  68. package/dist/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.d.ts +8 -0
  69. package/dist/Invoice/ui/digtal/GoodsList.o/index.d.ts +20 -0
  70. package/dist/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.d.ts +3 -0
  71. package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.d.ts +2 -0
  72. package/dist/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.d.ts +4 -0
  73. package/dist/Invoice/ui/digtal/InvoiceHeader/index.d.ts +14 -0
  74. package/dist/Invoice/ui/digtal/Sign/index.d.ts +10 -0
  75. package/dist/Invoice/ui/digtal/Stakeholder/index.d.ts +7 -0
  76. package/dist/InvoiceTypeModal/_test/easiest/index.d.ts +3 -0
  77. package/dist/InvoiceTypeModal/index.d.ts +34 -0
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.esm.js +6302 -189
  80. package/dist/index.js +6288 -174
  81. package/package.json +1 -1
  82. package/src/Invoice/Invoice-digtal/_test/disabled/index.tsx +38 -0
  83. package/src/Invoice/Invoice-digtal/_test/easiest/index.tsx +5 -0
  84. package/src/Invoice/Invoice-digtal/_test/header/index.tsx +17 -0
  85. package/src/Invoice/Invoice-digtal/_test/readOnly/index.tsx +42 -0
  86. package/src/Invoice/Invoice-digtal/_test/stakeholder/index.tsx +12 -0
  87. package/src/Invoice/Invoice-digtal/_test/typeSelection/index.tsx +29 -0
  88. package/src/Invoice/Invoice-digtal/index.md +19 -0
  89. package/src/Invoice/InvoiceController/InvoiceControllerState/Stakeholder/index.ts +11 -0
  90. package/src/Invoice/InvoiceController/InvoiceControllerState/index.ts +8 -0
  91. package/src/Invoice/InvoiceController/fns/addGoodDiscount.ts +1 -1
  92. package/src/Invoice/InvoiceController/fns/addGoodDiscountV2.ts +84 -0
  93. package/src/Invoice/InvoiceController/fns/delGood.ts +26 -28
  94. package/src/Invoice/InvoiceController/fns/saveEditGood.ts +1 -0
  95. package/src/Invoice/InvoiceController/index.ts +4 -0
  96. package/src/Invoice/_test/buyerNameSearch/index.tsx +2 -2
  97. package/src/Invoice/_test/easiest/index.tsx +1 -1
  98. package/src/Invoice/_test/endowCode/index.tsx +4 -4
  99. package/src/Invoice/_test/goodsMenuExpand/index.tsx +1 -1
  100. package/src/Invoice/_test/importBuyer/index.tsx +1 -1
  101. package/src/Invoice/_test/importGoods/index.tsx +1 -1
  102. package/src/Invoice/_test/invoiceType/index.tsx +1 -1
  103. package/src/Invoice/_test/seller/index.tsx +1 -1
  104. package/src/Invoice/_test/setDataSource/index.tsx +1 -1
  105. package/src/Invoice/_test/unit/index.tsx +1 -1
  106. package/src/Invoice/index.less +19 -1
  107. package/src/Invoice/index.md +6 -6
  108. package/src/Invoice/index.tsx +74 -19
  109. package/src/Invoice/tools/mounting/index.ts +14 -0
  110. package/src/Invoice/{ui/GoodsList/hook → tools}/useToGenerateId/index.ts +1 -1
  111. package/src/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.tsx +5 -5
  112. package/src/Invoice/ui/{Buyer → default/Buyer}/index.tsx +2 -2
  113. package/src/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.tsx +2 -2
  114. package/src/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.tsx +1 -1
  115. package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.tsx +5 -5
  116. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/autoFillFn/index.ts +4 -4
  117. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.tsx +3 -3
  118. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +2 -2
  119. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +2 -2
  120. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +3 -3
  121. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.tsx +2 -2
  122. package/src/Invoice/ui/default/GoodsList/hook/useDeduction/index.tsx +24 -0
  123. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useOnRow/index.tsx +3 -3
  124. package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.tsx +2 -2
  125. package/src/Invoice/ui/default/GoodsList/hook/useWindowClick/index.tsx +23 -0
  126. package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.tsx +2 -2
  127. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.tsx +2 -2
  128. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +4 -4
  129. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.tsx +2 -2
  130. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +2 -2
  131. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.tsx +1 -1
  132. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.tsx +1 -1
  133. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.tsx +1 -1
  134. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.tsx +2 -2
  135. package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.tsx +1 -1
  136. package/src/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.tsx +1 -1
  137. package/src/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.tsx +4 -4
  138. package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.tsx +1 -1
  139. package/src/Invoice/ui/{Seller → default/Seller}/index.tsx +2 -2
  140. package/src/Invoice/ui/{Sign → default/Sign}/index.tsx +1 -1
  141. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/autoFillFn/index.ts +520 -0
  142. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/index.tsx +623 -0
  143. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.less +10 -0
  144. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
  145. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
  146. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
  147. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
  148. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
  149. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
  150. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.less +13 -0
  151. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/index.tsx +98 -0
  152. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowMenu/spot.svg +1 -0
  153. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
  154. package/src/Invoice/ui/digtal/GoodsList/hook/useColumns/ui/TitleText/index.tsx +20 -0
  155. package/src/Invoice/ui/digtal/GoodsList/hook/useOnRow/index.tsx +39 -0
  156. package/src/Invoice/ui/digtal/GoodsList/hook/useRowSelection/index.tsx +112 -0
  157. package/src/Invoice/ui/digtal/GoodsList/hook/useWindowClick/index.tsx +23 -0
  158. package/src/Invoice/ui/digtal/GoodsList/index.less +57 -0
  159. package/src/Invoice/ui/digtal/GoodsList/index.tsx +181 -0
  160. package/src/Invoice/ui/digtal/GoodsList/ui/AddRowButton/index.tsx +66 -0
  161. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/index.tsx +321 -0
  162. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useAddDiscountRowButton/svg/add.svg +12 -0
  163. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +75 -0
  164. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useDelRowButton/index.tsx +50 -0
  165. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEmptyRefill/index.tsx +35 -0
  166. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useEndowCodeButton/index.tsx +82 -0
  167. package/src/Invoice/ui/digtal/GoodsList/ui/BulkMenu/hooks/useReselectInvoiceType/index.tsx +56 -0
  168. package/src/Invoice/ui/digtal/GoodsList/ui/DescribeSwitch/index.tsx +37 -0
  169. package/src/Invoice/ui/digtal/GoodsList/ui/Search/icon/magnifier.svg +1 -0
  170. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.less +12 -0
  171. package/src/Invoice/ui/digtal/GoodsList/ui/Search/index.tsx +50 -0
  172. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.less +54 -0
  173. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/index.tsx +99 -0
  174. package/src/Invoice/ui/digtal/GoodsList/ui/Statistics/svg/fork.svg +12 -0
  175. package/src/Invoice/ui/digtal/GoodsList/ui/TableRow/index.tsx +28 -0
  176. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.less +39 -0
  177. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual/index.tsx +109 -0
  178. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.less +44 -0
  179. package/src/Invoice/ui/digtal/GoodsList/ui/TableVirtual.o/index.tsx +96 -0
  180. package/src/Invoice/ui/digtal/GoodsList/ui/TaxIncludedSwitch/index.tsx +31 -0
  181. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/autoFillFn/index.ts +520 -0
  182. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/index.tsx +624 -0
  183. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.less +10 -0
  184. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/ItemNameInput/index.tsx +19 -0
  185. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowEditButton/index.tsx +30 -0
  186. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +43 -0
  187. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useAddDiscount/index.tsx +76 -0
  188. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useDelItem/index.tsx +41 -0
  189. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/hook/useEndowCode/index.tsx +34 -0
  190. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.less +13 -0
  191. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/index.tsx +98 -0
  192. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowMenu/spot.svg +1 -0
  193. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/RowSaveButton/index.tsx +14 -0
  194. package/src/Invoice/ui/digtal/GoodsList.o/hook/useColumns/ui/TitleText/index.tsx +20 -0
  195. package/src/Invoice/ui/digtal/GoodsList.o/hook/useOnRow/index.tsx +39 -0
  196. package/src/Invoice/ui/digtal/GoodsList.o/hook/useRowSelection/index.tsx +112 -0
  197. package/src/Invoice/ui/digtal/GoodsList.o/index.less +7 -0
  198. package/src/Invoice/ui/digtal/GoodsList.o/index.tsx +132 -0
  199. package/src/Invoice/ui/digtal/GoodsList.o/ui/AddRowButton/index.tsx +66 -0
  200. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableRow/index.tsx +28 -0
  201. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.less +43 -0
  202. package/src/Invoice/ui/digtal/GoodsList.o/ui/TableVirtual/index.tsx +109 -0
  203. package/src/Invoice/ui/digtal/InvoiceHeader/index.less +58 -0
  204. package/src/Invoice/ui/digtal/InvoiceHeader/index.tsx +77 -0
  205. package/src/Invoice/ui/digtal/Sign/index.less +49 -0
  206. package/src/Invoice/ui/digtal/Sign/index.tsx +90 -0
  207. package/src/Invoice/ui/digtal/Stakeholder/index.less +57 -0
  208. package/src/Invoice/ui/digtal/Stakeholder/index.tsx +237 -0
  209. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowDown.svg +3 -0
  210. package/src/Invoice/ui/digtal/Stakeholder/svg/arrowUp.svg +3 -0
  211. package/src/InvoiceTypeModal/_test/easiest/index.tsx +32 -0
  212. package/src/InvoiceTypeModal/index.less +8 -0
  213. package/src/InvoiceTypeModal/index.md +6 -0
  214. package/src/InvoiceTypeModal/index.tsx +123 -0
  215. package/src/index.ts +3 -0
  216. /package/dist/Invoice/ui/{AddComparisonDrawer → default/AddComparisonDrawer}/index.d.ts +0 -0
  217. /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/BuyerNameInput/index.d.ts +0 -0
  218. /package/dist/Invoice/ui/{Buyer → default/Buyer}/ui/ImportBuyerButton/index.d.ts +0 -0
  219. /package/dist/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.d.ts +0 -0
  220. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/index.d.ts +0 -0
  221. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.d.ts +0 -0
  222. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.d.ts +0 -0
  223. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.d.ts +0 -0
  224. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.d.ts +0 -0
  225. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/hook/useRowSelection/index.d.ts +0 -0
  226. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/index.d.ts +0 -0
  227. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/AddRowButton/index.d.ts +0 -0
  228. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.d.ts +0 -0
  229. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.d.ts +0 -0
  230. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useDelRowButton/index.d.ts +0 -0
  231. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useEndowCodeButton/index.d.ts +0 -0
  232. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.d.ts +0 -0
  233. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/DescribeSwitch/index.d.ts +0 -0
  234. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.d.ts +0 -0
  235. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.d.ts +0 -0
  236. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableRow/index.d.ts +0 -0
  237. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.d.ts +0 -0
  238. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.d.ts +0 -0
  239. /package/dist/Invoice/ui/{GoodsList → default/GoodsList}/ui/TaxIncludedSwitch/index.d.ts +0 -0
  240. /package/dist/Invoice/ui/{ImportBuyerDrawer → default/ImportBuyerDrawer}/index.d.ts +0 -0
  241. /package/dist/Invoice/ui/{ImportGoodsDrawer → default/ImportGoodsDrawer}/index.d.ts +0 -0
  242. /package/dist/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.d.ts +0 -0
  243. /package/dist/Invoice/ui/{Sign → default/Sign}/index.d.ts +0 -0
  244. /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.d.ts +0 -0
  245. /package/dist/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.d.ts +0 -0
  246. /package/src/Invoice/ui/{Buyer → default/Buyer}/index.less +0 -0
  247. /package/src/Invoice/ui/{EndowCodeDrawer → default/EndowCodeDrawer}/index.less +0 -0
  248. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.less +0 -0
  249. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/ItemNameInput/index.tsx +0 -0
  250. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowEditButton/index.tsx +0 -0
  251. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/hook/_useAddComparison/index.tsx +0 -0
  252. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/index.less +0 -0
  253. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowMenu/spot.svg +0 -0
  254. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/RowSaveButton/index.tsx +0 -0
  255. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/hook/useColumns/ui/TitleText/index.tsx +0 -0
  256. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/index.less +0 -0
  257. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useAddDiscountRowButton/index.less +0 -0
  258. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/hooks/useCommodityComparisonButton/index.tsx +0 -0
  259. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/BulkMenu/index.tsx +0 -0
  260. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/icon/magnifier.svg +0 -0
  261. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Search/index.less +0 -0
  262. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/Statistics/index.less +0 -0
  263. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.less +0 -0
  264. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual/index.tsx +0 -0
  265. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.less +0 -0
  266. /package/src/Invoice/ui/{GoodsList → default/GoodsList}/ui/TableVirtual.o/index.tsx +0 -0
  267. /package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/auto.svg +0 -0
  268. /package/src/Invoice/ui/{InvoiceHeader → default/InvoiceHeader}/index.less +0 -0
  269. /package/src/Invoice/ui/{Seller → default/Seller}/index.less +0 -0
  270. /package/src/Invoice/ui/{Sign → default/Sign}/index.less +0 -0
  271. /package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useDeduction/index.tsx +0 -0
  272. /package/src/Invoice/ui/{GoodsList → digtal/GoodsList.o}/hook/useWindowClick/index.tsx +0 -0
@@ -0,0 +1,520 @@
1
+ /**
2
+ * 数量 保留15位数字
3
+ * 单价 保留15位数字
4
+ * 金额 小数点后 2位
5
+ * 税额 小数点后 2位
6
+ */
7
+ import { WrappedFormUtils } from 'kts-components-antd-x3/lib/form/Form';
8
+ import InvoiceController, { IGood, LineAttributeType } from '../../../../../../InvoiceController';
9
+ import evaluate from '../../../../../../tools/evaluate';
10
+ import { message } from 'kts-components-antd-x3'
11
+ import { format2, format15, countTaxAmount, countAmountExcludeTax, countPrice } from '../../../../../../tools/calculate';
12
+ import moment from 'moment';
13
+
14
+ export { format2, format15 } from '../../../../../../tools/calculate';
15
+
16
+
17
+
18
+ /** 延迟函数 */
19
+ const lazyFn = (fn: Function, delayed: number = 200) => {
20
+ let timer: any;
21
+ return (...par: any[]) => {
22
+ clearTimeout(timer);
23
+ timer = setTimeout(() => {
24
+ timer = undefined;
25
+ fn.apply(null, par);
26
+ }, delayed);
27
+ };
28
+ };
29
+
30
+ let promptErrV: any = {}
31
+
32
+ /** 提示错误 */
33
+ const promptErr = (err: any) => {
34
+ if (!err) return false;
35
+ if (err.errors[0].message === 'lineAmountIncludeTax need to revalidate') return true;
36
+ if (err.errors[0].message === 'lineAmountExcludeTax need to revalidate') return true;
37
+ if (err.errors[0].message === 'priceIncludeTax need to revalidate') return true;
38
+ if (err.errors[0].message === 'priceExcludeTax need to revalidate') return true;
39
+
40
+ if (new Date().getTime() - promptErrV.t > 2000 || err.errors[0].message !== promptErrV.m) {
41
+ promptErrV.t = new Date().getTime();
42
+ promptErrV.m = err.errors[0].message;
43
+ message.error({ content: err.errors[0].message, duration: 2 });
44
+ }
45
+
46
+ return true;
47
+ }
48
+
49
+ /** 清除计算中启动字段 */
50
+ export const clearCalculatingField = async (controller: InvoiceController) => controller.run(async s => s.calculatingField = '');
51
+
52
+ /** 数量改变了 */
53
+ export const onChangeQuantity = lazyFn(
54
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
55
+ form.validateFields(async (err, values) => {
56
+ err = err || {};
57
+
58
+ if (!values.quantity && values.quantity !== 0) {
59
+ await controller.setEditGood({ quantity: undefined });
60
+ await clearCalculatingField(controller);
61
+ return;
62
+ }
63
+ if (err.quantity) {
64
+ await clearCalculatingField(controller);
65
+ return
66
+ };
67
+
68
+ const calculatingDigits = controller.state.calculatingDigits;
69
+ const quantity = format15(values.quantity, calculatingDigits);
70
+ await controller.setEditGood({ quantity });
71
+ form.setFieldsValue({ quantity });
72
+
73
+ // 是否含税
74
+ if (controller.state.goodsListState.isTaxIncluded) {
75
+ // 含税
76
+ if (!err.priceIncludeTax && values.priceIncludeTax) {
77
+ // 可以找到 单价(含税)
78
+ const priceIncludeTax = format15(values.priceIncludeTax, calculatingDigits);
79
+ const lineAmountIncludeTax = format2(evaluate(`${priceIncludeTax} * ${quantity}`));
80
+ form.setFieldsValue({ lineAmountIncludeTax });
81
+ await controller.setEditGood({ lineAmountIncludeTax });
82
+ } else if (!err.lineAmountIncludeTax && values.lineAmountIncludeTax) {
83
+ // 可以找到 金额(含税)
84
+ const lineAmountIncludeTax = format2(values.lineAmountIncludeTax);
85
+ const priceIncludeTax = format15(
86
+ evaluate(`${lineAmountIncludeTax} / ${quantity}`),
87
+ calculatingDigits);
88
+ form.setFieldsValue({ priceIncludeTax });
89
+ await controller.setEditGood({ priceIncludeTax });
90
+ }
91
+
92
+ // 更新不含税
93
+ await updateUnitPriceExcludingTax(controller, form, record);
94
+ } else {
95
+ // 不含税
96
+ if (!err.priceExcludeTax && values.priceExcludeTax) {
97
+ const priceExcludeTax = format15(values.priceExcludeTax, calculatingDigits);
98
+ const lineAmountExcludeTax = format2(evaluate(`${quantity} * ${priceExcludeTax}`));
99
+ form.setFieldsValue({ lineAmountExcludeTax });
100
+ await controller.setEditGood({ lineAmountExcludeTax, quantity });
101
+ } else if (!err.lineAmountExcludeTax && values.lineAmountExcludeTax) {
102
+ const lineAmountExcludeTax = format2(values.lineAmountExcludeTax);
103
+ const priceExcludeTax = format15(evaluate(`${lineAmountExcludeTax} / ${quantity}`), calculatingDigits);
104
+ form.setFieldsValue({ priceExcludeTax });
105
+ await controller.setEditGood({ priceExcludeTax, quantity });
106
+ }
107
+
108
+ // 更新含税
109
+ await updateUnitPriceTax(controller, form, record);
110
+ }
111
+
112
+ // 清楚 计算中启动字段
113
+ await clearCalculatingField(controller);
114
+ });
115
+ },
116
+ 1000,
117
+ );
118
+
119
+ /** 单价(含税) */
120
+ export const onChangePriceIncludeTax = lazyFn(
121
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
122
+ form.validateFields(async (err, values) => {
123
+ err = err || {};
124
+
125
+ if (!values.priceIncludeTax && values.priceIncludeTax !== 0) {
126
+ await controller.setEditGood({ priceIncludeTax: undefined, priceExcludeTax: undefined });
127
+ await clearCalculatingField(controller);
128
+ return;
129
+ }
130
+ if (err.priceIncludeTax) {
131
+ await clearCalculatingField(controller);
132
+ return;
133
+ }
134
+
135
+ const calculatingDigits = controller.state.calculatingDigits;
136
+ const priceIncludeTax = format15(values.priceIncludeTax, calculatingDigits);
137
+ await controller.setEditGood({ priceIncludeTax });
138
+ form.setFieldsValue({ priceIncludeTax });
139
+
140
+ // 是否有数量
141
+ if (!err.quantity && values.quantity) {
142
+ const quantity = format15(values.quantity, calculatingDigits);
143
+ const lineAmountIncludeTax = format2(evaluate(`${quantity} * ${priceIncludeTax}`));
144
+ form.setFieldsValue({ lineAmountIncludeTax });
145
+ await controller.setEditGood({ lineAmountIncludeTax });
146
+ } else if (!err.lineAmountIncludeTax && values.lineAmountIncludeTax) {
147
+ const lineAmountIncludeTax = format2(values.lineAmountIncludeTax);
148
+ const quantity = format15(evaluate(`${lineAmountIncludeTax} / ${priceIncludeTax}`), calculatingDigits);
149
+ form.setFieldsValue({ quantity });
150
+ await controller.setEditGood({ quantity });
151
+ }
152
+
153
+ // 更新不含税
154
+ await updateUnitPriceExcludingTax(controller, form, record);
155
+
156
+ // 清楚 计算中启动字段
157
+ await clearCalculatingField(controller);
158
+ });
159
+ },
160
+ 1000,
161
+ );
162
+
163
+ /** 单价(不含税) */
164
+ export const onChangePriceExcludeTax = lazyFn(
165
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
166
+ form.validateFields(async (err, values) => {
167
+ err = err || {};
168
+
169
+ if (!values.priceExcludeTax && values.priceExcludeTax !== 0) {
170
+ await controller.setEditGood({ priceIncludeTax: undefined, priceExcludeTax: undefined });
171
+ await clearCalculatingField(controller);
172
+ return;
173
+ }
174
+ if (err.priceExcludeTax) {
175
+ await clearCalculatingField(controller);
176
+ return;
177
+ }
178
+
179
+ const calculatingDigits = controller.state.calculatingDigits;
180
+ const priceExcludeTax = format15(values.priceExcludeTax, calculatingDigits);
181
+ await controller.setEditGood({ priceExcludeTax });
182
+ form.setFieldsValue({ priceExcludeTax });
183
+
184
+ // 是否有数量
185
+ if (!err.quantity && values.quantity) {
186
+ const quantity = format15(values.quantity, calculatingDigits);
187
+ const lineAmountExcludeTax = format2(evaluate(`${quantity} * ${priceExcludeTax}`));
188
+ form.setFieldsValue({ lineAmountExcludeTax });
189
+ await controller.setEditGood({ lineAmountExcludeTax });
190
+ } else if (!err.lineAmountExcludeTax && values.lineAmountExcludeTax) {
191
+ const lineAmountExcludeTax = format2(values.lineAmountExcludeTax);
192
+ const quantity = format15(
193
+ evaluate(`${lineAmountExcludeTax} / ${priceExcludeTax}`),
194
+ calculatingDigits
195
+ );
196
+ form.setFieldsValue({ quantity });
197
+ await controller.setEditGood({ quantity });
198
+ }
199
+
200
+ // 更新含税
201
+ await updateUnitPriceTax(controller, form, record);
202
+
203
+ // 清楚 计算中启动字段
204
+ await clearCalculatingField(controller);
205
+ });
206
+ },
207
+ 1000,
208
+ );
209
+
210
+ /** 金额(含税) */
211
+ export const onChangeLineAmountIncludeTax = lazyFn(
212
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
213
+ form.validateFields(async (err, values) => {
214
+
215
+ err = err || {};
216
+ if (promptErr(err.lineAmountIncludeTax) || !values.lineAmountIncludeTax) {
217
+ // 更新不含税
218
+ await controller.setEditGood({ lineAmountIncludeTax: undefined, lineAmountExcludeTax: undefined });
219
+ await updateUnitPriceExcludingTax(controller, form, record);
220
+ await clearCalculatingField(controller);
221
+ return;
222
+ }
223
+
224
+ const calculatingDigits = controller.state.calculatingDigits;
225
+ const lineAmountIncludeTax = format2(values.lineAmountIncludeTax);
226
+ await controller.setEditGood({ lineAmountIncludeTax });
227
+ form.setFieldsValue({ lineAmountIncludeTax });
228
+
229
+ // 是否有数量
230
+ if (!err.quantity && values.quantity) {
231
+ const quantity = format15(values.quantity, calculatingDigits);
232
+ const priceIncludeTax = format15(evaluate(`${lineAmountIncludeTax} / ${quantity}`), calculatingDigits);
233
+ form.setFieldsValue({ priceIncludeTax });
234
+ await controller.setEditGood({ priceIncludeTax });
235
+ } else if (!err.priceIncludeTax && (values.priceIncludeTax || values.priceIncludeTax === 0)) {
236
+ const priceIncludeTax = format15(values.priceIncludeTax, calculatingDigits);
237
+ const quantity = format15(evaluate(`${lineAmountIncludeTax} / ${priceIncludeTax}`), calculatingDigits);
238
+ form.setFieldsValue({ quantity });
239
+ await controller.setEditGood({ quantity });
240
+ }
241
+
242
+ // 更新不含税
243
+ await updateUnitPriceExcludingTax(controller, form, record);
244
+
245
+ // 清楚 计算中启动字段
246
+ await clearCalculatingField(controller);
247
+ });
248
+ },
249
+ 1000,
250
+ );
251
+
252
+ /** 金额(不含税) */
253
+ export const onChangeLineAmountExcludeTax = lazyFn(
254
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
255
+ form.validateFields(async (err, values) => {
256
+ err = err || {};
257
+ if (promptErr(err.lineAmountExcludeTax) || !values.lineAmountExcludeTax) {
258
+ // 更新含税
259
+ await controller.setEditGood({ lineAmountIncludeTax: undefined, lineAmountExcludeTax: undefined });
260
+ await updateUnitPriceTax(controller, form, record);
261
+ await clearCalculatingField(controller);
262
+ return;
263
+ }
264
+ const calculatingDigits = controller.state.calculatingDigits;
265
+ const lineAmountExcludeTax = format2(values.lineAmountExcludeTax);
266
+ await controller.setEditGood({ lineAmountExcludeTax });
267
+ form.setFieldsValue({ lineAmountExcludeTax });
268
+
269
+ // 是否有数量
270
+ if (!err.quantity && values.quantity) {
271
+ const quantity = format15(values.quantity, calculatingDigits);
272
+ const priceExcludeTax = format15(evaluate(`${lineAmountExcludeTax} / ${quantity}`), calculatingDigits);
273
+ form.setFieldsValue({ priceExcludeTax });
274
+ await controller.setEditGood({ priceExcludeTax });
275
+ } else if (!err.priceExcludeTax && values.priceExcludeTax) {
276
+ const priceExcludeTax = format15(values.priceExcludeTax, calculatingDigits);
277
+ const quantity = format15(evaluate(`${lineAmountExcludeTax} / ${priceExcludeTax}`), calculatingDigits);
278
+ form.setFieldsValue({ quantity });
279
+ await controller.setEditGood({ quantity });
280
+ }
281
+
282
+ // 更新含税
283
+ await updateUnitPriceTax(controller, form, record);
284
+
285
+ // 清楚 计算中启动字段
286
+ await clearCalculatingField(controller);
287
+ });
288
+ },
289
+ 1000,
290
+ );
291
+
292
+ /** 税率 */
293
+ export const onChangeTaxRate = lazyFn(
294
+ (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
295
+
296
+ form.validateFields(async (err, values) => {
297
+ err = err || {};
298
+ if (promptErr(err.taxRate) || (!values.taxRate && values.taxRate !== 0)) return;
299
+
300
+ let taxRate = parseFloat(values.taxRate);
301
+ await controller.setEditGood({ taxRate });
302
+
303
+ // 去掉赋码
304
+ (() => {
305
+ const cache = controller.state.goodsListState.endowCode.cache;
306
+ const record = controller.state.goodsListState.editGood;
307
+ if (record && cache[record.$index]) {
308
+ record.favouredPolicyName = cache[record.$index].favouredPolicyName;
309
+ record.favouredPolicyMark = cache[record.$index].favouredPolicyMark;
310
+ record.taxFreeType = cache[record.$index].taxFreeType;
311
+ cache[record.$index] = undefined;
312
+ }
313
+ })()
314
+
315
+ // 是否含税
316
+ if (controller.state.goodsListState.isTaxIncluded) {
317
+ await updateUnitPriceExcludingTax(controller, form, record);
318
+ } else {
319
+ await updateUnitPriceTax(controller, form, record);
320
+ }
321
+
322
+ // 清楚 计算中启动字段
323
+ await clearCalculatingField(controller);
324
+ });
325
+ },
326
+ 1000,
327
+ );
328
+
329
+ /** 小规模纳税人 1% 和 3% 自动赋码免税 */
330
+ export function dutyFree(controller: InvoiceController, taxRate: number, form: WrappedFormUtils<any>, record: IGood) {
331
+
332
+ const cache = controller.state.goodsListState.endowCode.cache;
333
+ const invoiceType = controller.state.invoiceType;
334
+
335
+ // 4月1日至12月31日
336
+ console.log('===> 小规模纳税人免税逻辑');
337
+ console.log('===> invoiceType', invoiceType);
338
+ console.log('===> en', controller.state.en);
339
+ console.log('===> taxRate', taxRate);
340
+ console.log('===> state', controller.state);
341
+
342
+ if (moment().valueOf() > moment('2022-12-31 23:59').valueOf()) return taxRate;
343
+ if (controller.state.en !== '08') return taxRate;
344
+ if (invoiceType !== '10' && invoiceType !== '04') return taxRate;
345
+
346
+ if (taxRate === 1 || taxRate === 3) {
347
+ cache[record.$index] = { favouredPolicyName: record.favouredPolicyName, favouredPolicyMark: record.favouredPolicyMark, taxFreeType: record.taxFreeType }
348
+ record.favouredPolicyName = '免税';
349
+ record.taxRate = 0;
350
+ record.favouredPolicyMark = 1;
351
+ record.taxFreeType = 1 as any;
352
+ form.setFieldsValue({ taxRate: 0 });
353
+ return 0;
354
+ }
355
+ }
356
+
357
+ /** 含税 => 更新(不含税) */
358
+ export const updateUnitPriceExcludingTax = async (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
359
+ return new Promise((resolve) => {
360
+ form.validateFields(async (err, values) => {
361
+
362
+ err = err || {};
363
+
364
+ /** 税额 */
365
+ let taxAmount;
366
+
367
+ /** 金额(不含税) */
368
+ let lineAmountExcludeTax;
369
+
370
+ /** 不含税单价 */
371
+ let priceExcludeTax;
372
+
373
+ /** 扣除额 */
374
+ const deduction = controller.state.goodsListState.deduction;
375
+
376
+ // 计算税额
377
+ if (!promptErr(err.lineAmountIncludeTax) && !promptErr(err.taxRate)) {
378
+ taxAmount = countTaxAmount(values.lineAmountIncludeTax, deduction, values.taxRate);
379
+ }
380
+ form.setFieldsValue({ taxAmount });
381
+ await controller.setEditGood({ taxAmount });
382
+
383
+ // 计算 金额(不含税)
384
+ if ((taxAmount || taxAmount === 0) && !promptErr(err.lineAmountIncludeTax)) {
385
+ lineAmountExcludeTax = countAmountExcludeTax(values.lineAmountIncludeTax, taxAmount);
386
+ }
387
+ form.setFieldsValue({ lineAmountExcludeTax });
388
+ await controller.setEditGood({ lineAmountExcludeTax });
389
+
390
+ // 单价(不含税)
391
+ if (lineAmountExcludeTax && !promptErr(err.quantity)) {
392
+ priceExcludeTax = countPrice(lineAmountExcludeTax, values.quantity, controller.state.calculatingDigits);
393
+ }
394
+ form.setFieldsValue({ priceExcludeTax });
395
+ await controller.setEditGood({ priceExcludeTax });
396
+ });
397
+
398
+ resolve(undefined)
399
+ })
400
+ };
401
+
402
+ /** 不含税 => 更新(含税) */
403
+ export const updateUnitPriceTax = async (controller: InvoiceController, form: WrappedFormUtils, record: IGood) => {
404
+ return new Promise((resolve) => {
405
+ form.validateFields(async (err, values) => {
406
+ err = err || {};
407
+
408
+ if (
409
+ !err.taxRat &&
410
+ (values.taxRate || values.taxRate === 0) &&
411
+ !promptErr(err.lineAmountExcludeTax) &&
412
+ (values.lineAmountExcludeTax || values.lineAmountExcludeTax === 0)
413
+ ) {
414
+
415
+ const calculatingDigits = controller.state.calculatingDigits;
416
+ // 金额(含税)= 金额(不含税)* (1+ 税率)
417
+ const lineAmountExcludeTax = format2(values.lineAmountExcludeTax);
418
+ const lineAmountIncludeTax = format2(evaluate(`${lineAmountExcludeTax} * (1+(${values.taxRate}/100))`));
419
+ await controller.setEditGood({ lineAmountIncludeTax });
420
+
421
+ // 单价(含税) = 金额(含税) / (數量)
422
+ // 是否有数量
423
+ if (!err.quantity && values.quantity) {
424
+ const priceIncludeTax = format15(evaluate(`${lineAmountIncludeTax} / ${values.quantity}`), calculatingDigits);
425
+ await controller.setEditGood({ priceIncludeTax });
426
+ }
427
+
428
+ // 税额 = 金额(含税)-金额(不含税)
429
+ const taxAmount = evaluate(`${lineAmountIncludeTax} - ${lineAmountExcludeTax}`);
430
+ form.setFieldsValue({ taxAmount });
431
+ await controller.setEditGood({ taxAmount });
432
+ } else {
433
+ form.setFieldsValue({ taxAmount: undefined });
434
+ await controller.setEditGood({ taxAmount: undefined });
435
+ }
436
+ // 单价(含税) = 单价(不含税) * (1+税率)
437
+ // if (
438
+ // !err.taxRat &&
439
+ // (values.taxRate || values.taxRate === 0) &&
440
+ // !promptErr(err.priceExcludeTax) &&
441
+ // (values.priceExcludeTax || values.priceExcludeTax === 0)
442
+ // ) {
443
+ // const priceExcludeTax = format15(values.priceExcludeTax);
444
+ // const priceIncludeTax = format15(evaluate(`${priceExcludeTax} * (1+(${values.taxRate}/100))`));
445
+ // await controller.setEditGood({ priceIncludeTax });
446
+ // }
447
+
448
+ resolve(undefined)
449
+ });
450
+ })
451
+ };
452
+
453
+ /** 保存到编辑货物 */
454
+ export const onSaveEditGood = lazyFn(
455
+ (
456
+ controller: InvoiceController,
457
+ form: WrappedFormUtils,
458
+ record: IGood,
459
+ id: string,
460
+ ) => {
461
+ form.validateFields(async (err, values) => {
462
+ err = err || {};
463
+ if (err[id]) return;
464
+
465
+ const v = {} as any;
466
+ v[id] = values[id];
467
+ await controller.setEditGood({ ...v });
468
+ });
469
+ },
470
+ 1000,
471
+ );
472
+
473
+ /** 单调赋码 */
474
+ export const endowCode = async (controller: InvoiceController, goods: IGood) => {
475
+ await controller.wait();
476
+ await controller.saveEditGood();
477
+ await controller.pipeline(async (s) => {
478
+ if (s.goodsListState.form && s.goodsListState.editGood?.$index === goods?.$index) {
479
+ const err: any = s.goodsListState.form.getFieldsError();
480
+ for (let key in err) {
481
+ if (!err[key]) continue;
482
+ message.error(err[key][0]);
483
+ return;
484
+ }
485
+ }
486
+
487
+ let g = s.goodsListState.goodsMap.get(goods.$index) as any;
488
+ let i = s.goodsListState.goodsList.indexOf(g);
489
+
490
+ switch (goods.lineAttribute) {
491
+ case LineAttributeType.正常:
492
+ s.goodsListState.endowCode.endowcodeGoodIndex = [goods.$index];
493
+ break;
494
+
495
+ case LineAttributeType.折扣行:
496
+
497
+ s.goodsListState.endowCode.endowcodeGoodIndex = [goods.$index, s.goodsListState.goodsList[i - 1].$index];
498
+ break;
499
+
500
+ case LineAttributeType.被折扣行:
501
+ s.goodsListState.endowCode.endowcodeGoodIndex = [goods.$index, s.goodsListState.goodsList[i + 1].$index];
502
+ break;
503
+ }
504
+ })();
505
+ }
506
+
507
+ /** 修改了 项目名称 */
508
+ export const onChangeItemName = async (controller: InvoiceController, form: WrappedFormUtils<any>, record: IGood) => {
509
+ controller.run(async s => {
510
+ const value = form.getFieldsValue().itemName;
511
+
512
+ if (s.goodsListState.isMyShow) {
513
+ await controller.setEditGood({ itemNameSelf: value });
514
+ record.itemName && await controller.setEditGood({ itemName: record.itemName });
515
+ } else {
516
+ await controller.setEditGood({ itemName: value });
517
+ record.itemNameSelf && await controller.setEditGood({ itemNameSelf: record.itemNameSelf });
518
+ }
519
+ })
520
+ }