shareneus 1.0.5

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 (125) hide show
  1. package/dist/aggregation/aggregation.js +60 -0
  2. package/dist/enums/cache-enums.js +37 -0
  3. package/dist/enums/code-enums.js +288 -0
  4. package/dist/enums/enums.js +362 -0
  5. package/dist/enums/industry-enums.js +24 -0
  6. package/dist/excel-files/GSTR-RO-excel.service.js +935 -0
  7. package/dist/excel-files/GSTR1-excel.service.js +295 -0
  8. package/dist/excel-files/GSTR2-excel.service.js +295 -0
  9. package/dist/excel-files/analysis-excel.service.js +297 -0
  10. package/dist/excel-files/category-wise-item-excel.service.js +274 -0
  11. package/dist/excel-files/cust-balance-excel.service.js +287 -0
  12. package/dist/excel-files/cust-wise-sales-details.js +320 -0
  13. package/dist/excel-files/cust-wise-sales-summary-excel.service.js +302 -0
  14. package/dist/excel-files/expiring-drugs-excel.service.js +292 -0
  15. package/dist/excel-files/insurance-expire-excel.service.js +301 -0
  16. package/dist/excel-files/invoice-wise-excel.service.js +857 -0
  17. package/dist/excel-files/item-wise-doctor-sale-excel.service.js +258 -0
  18. package/dist/excel-files/item-wise-mout-details.js +292 -0
  19. package/dist/excel-files/item-wise-mout-summary.js +286 -0
  20. package/dist/excel-files/items-wise-sales-excel.service.js +314 -0
  21. package/dist/excel-files/manf-wise-sales-excel.service.js +276 -0
  22. package/dist/excel-files/operator-wise-details.js +265 -0
  23. package/dist/excel-files/operator-wise-summary.js +266 -0
  24. package/dist/excel-files/payment-receive-excel.service.js +225 -0
  25. package/dist/excel-files/payments-made-excel.service.js +302 -0
  26. package/dist/excel-files/repair-orders-excel.service.js +255 -0
  27. package/dist/excel-files/sa-wise-labor-sales-excel.service.js +232 -0
  28. package/dist/excel-files/sa-wise-part-sales-excel.service.js +232 -0
  29. package/dist/excel-files/sale-summary-excel.service.js +326 -0
  30. package/dist/excel-files/sales-by-service-details-excel.service.js +1 -0
  31. package/dist/excel-files/sales-by-service-summary-excel.service.js +422 -0
  32. package/dist/excel-files/scheduled-drug-summary-excel.service.js +367 -0
  33. package/dist/excel-files/scheduled-drugs-excel.service.js +366 -0
  34. package/dist/excel-files/spares-issue-excel.service.js +492 -0
  35. package/dist/excel-files/stock-excel.service.js +283 -0
  36. package/dist/excel-files/tally-sales-import.service.js +765 -0
  37. package/dist/excel-files/ven-balance-excel.service.js +293 -0
  38. package/dist/index.js +237 -0
  39. package/dist/services/analysis-pdf.service.js +105 -0
  40. package/dist/services/appointment-total.service.js +253 -0
  41. package/dist/services/auto-sales-receipt-pdf.service.js +539 -0
  42. package/dist/services/category-wise-item-pdf.service.js +98 -0
  43. package/dist/services/checklist-pdf.js +140 -0
  44. package/dist/services/checklists-pdf.js +124 -0
  45. package/dist/services/cn-print.service.js +211 -0
  46. package/dist/services/consultation-fee-receipt.service.js +378 -0
  47. package/dist/services/consultation-full-pdf.service.js +220 -0
  48. package/dist/services/consultation-pdf.service.js +360 -0
  49. package/dist/services/credit-note-pdf.service.js +578 -0
  50. package/dist/services/credit-note-totals.service.js +328 -0
  51. package/dist/services/cust-wise-sales-details-pdf.service.js +118 -0
  52. package/dist/services/cust-wise-sales-summary-pdf.service.js +111 -0
  53. package/dist/services/customer-balances-pdf.service.js +169 -0
  54. package/dist/services/dc-landscape-pdf.service.js +903 -0
  55. package/dist/services/dc-landscape-without-price-pdf.service.js +853 -0
  56. package/dist/services/dc-without-price-pdf.service.js +489 -0
  57. package/dist/services/debit-note-pdf.service.js +673 -0
  58. package/dist/services/debit-note-print.service.js +234 -0
  59. package/dist/services/debit-note-totals.service.js +293 -0
  60. package/dist/services/delivery-challan-pdf.service.js +434 -0
  61. package/dist/services/delivery-challan-print.service.js +177 -0
  62. package/dist/services/delivery-challan-totals.js +339 -0
  63. package/dist/services/equipment-design-pdf.service.js +144 -0
  64. package/dist/services/est.print-service.js +1053 -0
  65. package/dist/services/expiring-drugs-pdf.service.js +156 -0
  66. package/dist/services/hc-inv-pdf.service.js +837 -0
  67. package/dist/services/insurance-expire-pdf.service.js +99 -0
  68. package/dist/services/inv-pdf.service.js +785 -0
  69. package/dist/services/inv-print.service.js +415 -0
  70. package/dist/services/invoice-landscape-pdf.service.js +909 -0
  71. package/dist/services/invoice-total.service.js +659 -0
  72. package/dist/services/issue-parts-pdf.service.js +763 -0
  73. package/dist/services/item-detais-pdf.js +136 -0
  74. package/dist/services/item-wise-doctor-sale-pdf.service.js +164 -0
  75. package/dist/services/item-wise-mout-details-pdf.js +107 -0
  76. package/dist/services/item-wise-mout-summary-pdf.js +99 -0
  77. package/dist/services/item-wise-sales-pdf.service.js +178 -0
  78. package/dist/services/manf-wise-sales-pdf.service.js +173 -0
  79. package/dist/services/meeting-pdf.js +369 -0
  80. package/dist/services/mout-pdf.service.js +503 -0
  81. package/dist/services/operator-wise-details-pdf.service.js +103 -0
  82. package/dist/services/operator-wise-summary-pdf.js +101 -0
  83. package/dist/services/pack-ship-pdf.service.js +105 -0
  84. package/dist/services/pack-ship-print.service.js +167 -0
  85. package/dist/services/payment-pdf.service.js +373 -0
  86. package/dist/services/payment-report-pdf.service.js +106 -0
  87. package/dist/services/po-totals.service.js +279 -0
  88. package/dist/services/pos-receipt-pdf.js +438 -0
  89. package/dist/services/purchase-order-pdf.service.js +924 -0
  90. package/dist/services/purchase-order-print.service.js +150 -0
  91. package/dist/services/purchase-order-totals.service.js +280 -0
  92. package/dist/services/receipt-print.service.js +50 -0
  93. package/dist/services/reorder-point-pdf.service.js +151 -0
  94. package/dist/services/repair-orders-pdf.service.js +172 -0
  95. package/dist/services/ro-pdf.service.js +1764 -0
  96. package/dist/services/ro-print-service.js +737 -0
  97. package/dist/services/ro-totals.service.js +1241 -0
  98. package/dist/services/sales-by-service-pdf.service.js +116 -0
  99. package/dist/services/sales-pdf.service.js +630 -0
  100. package/dist/services/sales-print.service.js +305 -0
  101. package/dist/services/sales-receipt-pdf.service.js +611 -0
  102. package/dist/services/sales-receipt-print.service.js +425 -0
  103. package/dist/services/sales-totals.service.js +339 -0
  104. package/dist/services/scheduled-drug-pdf.service.js +176 -0
  105. package/dist/services/scheduled-drug-summary-pdf.service.js +188 -0
  106. package/dist/services/separate-wo-print.service.js +351 -0
  107. package/dist/services/shared-inv-pdf.service.js +763 -0
  108. package/dist/services/shared-pdf.service.js +2569 -0
  109. package/dist/services/shared-print.service.js +885 -0
  110. package/dist/services/task-pdf.service.js +220 -0
  111. package/dist/services/task-reports-pdf.service.js +296 -0
  112. package/dist/services/technician-pdf.service.js +238 -0
  113. package/dist/services/technician-print.service.js +87 -0
  114. package/dist/services/transfer-order-pdf.service.js +139 -0
  115. package/dist/services/vendor-balances-pdf.service.js +101 -0
  116. package/dist/services/vendor-credit-note-pdf.service.js +1007 -0
  117. package/dist/services/vendor-credit-note-print.service.js +104 -0
  118. package/dist/services/vendor-credit-note-totals.service.js +327 -0
  119. package/dist/services/vendor-debit-note-pdf.service.js +561 -0
  120. package/dist/services/vendor-debit-note-print.service.js +245 -0
  121. package/dist/services/vendor-debit-note-totals.service.js +305 -0
  122. package/dist/utils/my-date.js +652 -0
  123. package/dist/utils/tr-utils.js +354 -0
  124. package/package.json +24 -0
  125. package/tsconfig.json +109 -0
@@ -0,0 +1,659 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvoiceTotalsService = void 0;
4
+ const aggregation_1 = require("../aggregation/aggregation");
5
+ const tr_utils_1 = require("../utils/tr-utils");
6
+ class InvoiceTotalsService {
7
+ static GetTotalsValue(opCodesList, PartsList, IsIndependentTax, DetailedInfo, LDisc, LPerc, PDisc, PPerc, Disc, Perc, TaxCodes, WithItems, Settings, Adjust, isRoundable) {
8
+ LPerc = tr_utils_1.TrUtils.SetPercToStringIfNull(LPerc);
9
+ PPerc = tr_utils_1.TrUtils.SetPercToStringIfNull(PPerc);
10
+ Perc = tr_utils_1.TrUtils.SetPercToStringIfNull(Perc);
11
+ LDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(LDisc);
12
+ PDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(PDisc);
13
+ Disc = tr_utils_1.TrUtils.SetValueToZeroIfNull(Disc);
14
+ if (tr_utils_1.TrUtils.IsNull(opCodesList)) {
15
+ opCodesList = [];
16
+ }
17
+ if (tr_utils_1.TrUtils.IsNull(PartsList)) {
18
+ PartsList = [];
19
+ }
20
+ opCodesList = this.CalculateLaborValues(opCodesList, IsIndependentTax);
21
+ PartsList = this.CalculateLaborPartValues(PartsList, IsIndependentTax);
22
+ let finalTotalsData = this.GetFinalRODataForSave(opCodesList, PartsList, IsIndependentTax, LDisc, LPerc, PDisc, PPerc, Disc, Perc, DetailedInfo, Settings, tr_utils_1.TrUtils.SetValueToZeroIfNull(Adjust), isRoundable);
23
+ if (DetailedInfo) {
24
+ finalTotalsData = this.GetDetailedTotalsData(finalTotalsData, IsIndependentTax, opCodesList, PartsList, TaxCodes);
25
+ }
26
+ if (WithItems) {
27
+ finalTotalsData.Ops = opCodesList;
28
+ finalTotalsData.Items = PartsList;
29
+ }
30
+ return finalTotalsData;
31
+ }
32
+ static CalculateLaborValues(opCodesList, IsIndependentTax) {
33
+ opCodesList = this.ResetLaborValues(opCodesList, IsIndependentTax);
34
+ // opCodesList = this.GetOperationsDiscountPrice(opCodesList);
35
+ // opCodesList = this.GetOperationsAfterDiscount(opCodesList,IsIndependentTax);
36
+ // opCodesList = this.GetOperationsAfterTax(opCodesList, IsIndependentTax);
37
+ return opCodesList;
38
+ }
39
+ static ResetLaborValues(opCodesList, IsIndependentTax) {
40
+ opCodesList.forEach((Operation) => {
41
+ Operation = this.ResetLaborValueIfInvalid(Operation);
42
+ Operation.DiscountedPrice = (0, aggregation_1.addition)(Operation.Disc, Operation.RecDisc);
43
+ if (tr_utils_1.TrUtils.IsNull(Operation.Amt)) {
44
+ Operation.Amt = Operation.Pr;
45
+ }
46
+ if (IsIndependentTax) {
47
+ Operation.AfterLaborDisc = Operation.NetAmt;
48
+ Operation.AfterLaborTax = (0, aggregation_1.addition)(Operation.AfterLaborDisc, Operation.CGST, Operation.SGST, Operation.IGST);
49
+ }
50
+ else {
51
+ Operation.AfterLaborDisc = (0, aggregation_1.subtraction)(Operation.Amt, Operation.Disc);
52
+ Operation.AfterLaborTax = Operation.AfterLaborDisc;
53
+ }
54
+ });
55
+ return opCodesList;
56
+ }
57
+ static ResetLaborValueIfInvalid(Operation) {
58
+ Operation.Pr = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.Pr);
59
+ Operation.RecDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.RecDisc);
60
+ Operation.Disc = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.Disc);
61
+ Operation.CGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.CGST);
62
+ Operation.SGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.SGST);
63
+ Operation.IGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Operation.IGST);
64
+ return Operation;
65
+ }
66
+ static CalculateLaborPartValues(PartsList, IsIndependentTax) {
67
+ PartsList = this.ResetLaborPartValues(PartsList, IsIndependentTax);
68
+ // PartsList = this.GetLaborPartsDiscountPrice(PartsList);
69
+ // PartsList = this.GetLaborPartsAfterDiscount(PartsList,IsIndependentTax);
70
+ // PartsList = this.GetPartsAfterTax(PartsList, IsIndependentTax);
71
+ return PartsList;
72
+ }
73
+ static ResetLaborPartValues(PartsList, IsIndependentTax) {
74
+ PartsList.forEach((Part) => {
75
+ Part = this.ResetLaborPartValueIfInvalid(Part);
76
+ Part.DiscountedPrice = (0, aggregation_1.addition)(Part.Disc, Part.RecDisc);
77
+ if (IsIndependentTax) {
78
+ Part.AfterPartDisc = Part.NetAmt;
79
+ Part.AfterPartTax = (0, aggregation_1.addition)(Part.AfterPartDisc, Part.CGST, Part.SGST, Part.IGST);
80
+ }
81
+ else {
82
+ Part.AfterPartDisc = (0, aggregation_1.subtraction)(Part.UnAmt, Part.Disc);
83
+ Part.AfterPartTax = Part.AfterPartDisc;
84
+ }
85
+ });
86
+ return PartsList;
87
+ }
88
+ static ResetLaborPartValueIfInvalid(Part) {
89
+ Part.UnPr = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.UnPr);
90
+ Part.Disc = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.Disc);
91
+ Part.RecDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.RecDisc);
92
+ Part.CGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.CGST);
93
+ Part.SGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.SGST);
94
+ Part.IGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(Part.IGST);
95
+ return Part;
96
+ }
97
+ static GetFinalRODataForSave(LaborList, PartsList, IsIndependentTax, LDisc, LPerc, PDisc, PPerc, Disc, Perc, DetailedInfo, Settings, Adjust, isRoundable) {
98
+ let finalTotalsData = {};
99
+ finalTotalsData = this.SetMainDiscountValues(LPerc, PPerc, LDisc, PDisc, Disc, Perc, finalTotalsData, DetailedInfo);
100
+ finalTotalsData.Settings = Settings;
101
+ finalTotalsData = this.GetFinalCustomerTotalsData(finalTotalsData, LaborList, PartsList, IsIndependentTax, DetailedInfo, Adjust, isRoundable);
102
+ return finalTotalsData;
103
+ }
104
+ static SetMainDiscountValues(LPerc, PPerc, LDisc, PDisc, Disc, Perc, finalTotalsData, DetailedInfo) {
105
+ finalTotalsData.LDisc = LDisc;
106
+ finalTotalsData.LPerc = LPerc;
107
+ finalTotalsData.PDisc = PDisc;
108
+ finalTotalsData.PPerc = PPerc;
109
+ finalTotalsData.Disc = Disc;
110
+ finalTotalsData.Perc = Perc;
111
+ if (DetailedInfo) {
112
+ finalTotalsData.FixedLDisc = LDisc;
113
+ finalTotalsData.FixedPDisc = PDisc;
114
+ finalTotalsData.FixedDisc = Disc;
115
+ }
116
+ return finalTotalsData;
117
+ }
118
+ static GetPartsAfterDiscount1(PartsList) {
119
+ let AfterIndvidualDisc = 0;
120
+ PartsList.forEach((Part) => {
121
+ if (!Part.Ret) {
122
+ AfterIndvidualDisc = (0, aggregation_1.addition)(AfterIndvidualDisc, (0, aggregation_1.subtraction)(Part.UnAmt, Part.Disc));
123
+ }
124
+ });
125
+ return AfterIndvidualDisc;
126
+ }
127
+ static GetLaborTotalAfterDiscount1(OperationsList) {
128
+ let AfterIndvidualDisc = 0;
129
+ OperationsList.forEach((Operation) => {
130
+ if (tr_utils_1.TrUtils.IsNull(Operation.Amt)) {
131
+ Operation.Amt = Operation.Pr;
132
+ }
133
+ AfterIndvidualDisc = (0, aggregation_1.addition)(AfterIndvidualDisc, (0, aggregation_1.subtraction)(Operation.Amt, Operation.Disc));
134
+ });
135
+ return AfterIndvidualDisc;
136
+ }
137
+ static GetFinalCustomerTotalsData(finalTotalsData, LaborList, PartsList, IsIndependentTax, DetailedInfo, Adjust, isRoundable) {
138
+ let CustomerAfterDiscTotals = this.GetSubTotalFor(LaborList, PartsList);
139
+ let CustLaborTaxTotal = this.GetLaborTaxTotalFor(LaborList, IsIndependentTax);
140
+ let CustPartTaxTotal = this.GetPartsTaxTotalFor(PartsList, IsIndependentTax);
141
+ let RetCustParrtTaxTotal = this.GetRetPartsTaxTotalFor(PartsList, IsIndependentTax);
142
+ let NonRetCustParrtTaxTotal = this.GetNonRetPartsTaxTotalFor(PartsList, IsIndependentTax);
143
+ finalTotalsData.SubTotal = tr_utils_1.TrUtils.FixedTo(CustomerAfterDiscTotals);
144
+ let CustLaborDiscTotal = this.GetLaborDiscountedTotal(LaborList, IsIndependentTax, finalTotalsData);
145
+ let CustPartsDiscTotal = this.GetPartDiscountedTotal(PartsList, IsIndependentTax, finalTotalsData);
146
+ let CustLaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(LaborList);
147
+ let CustPartsTotalAfterDisc = this.GetPartsTotalAfterDiscount(PartsList);
148
+ if (IsIndependentTax) {
149
+ finalTotalsData.STotal = (0, aggregation_1.addition)(CustLaborDiscTotal, CustPartsDiscTotal, CustLaborTotalAfterDisc, CustPartsTotalAfterDisc);
150
+ }
151
+ else {
152
+ finalTotalsData.STotal = (0, aggregation_1.addition)(CustLaborTotalAfterDisc, CustPartsTotalAfterDisc);
153
+ }
154
+ let CustLaborTotalAfterDisc1 = this.GetLaborTotalAfterDiscount1(LaborList);
155
+ let CustPartsTotalAfterDisc1 = this.GetPartsAfterDiscount1(PartsList);
156
+ let AmtAfterIndvidualItemDisc = (0, aggregation_1.addition)(CustLaborTotalAfterDisc1, CustPartsTotalAfterDisc1);
157
+ finalTotalsData.SIndTotal = AmtAfterIndvidualItemDisc;
158
+ finalTotalsData.Disc = !tr_utils_1.TrUtils.IsEmpty(finalTotalsData.Perc) ? tr_utils_1.TrUtils.ConvertPercToVal(finalTotalsData.Perc, AmtAfterIndvidualItemDisc) : finalTotalsData.Disc;
159
+ let CustTotal = this.GetCustomerTotalBasedOnTaxType(finalTotalsData, CustLaborTaxTotal, CustPartTaxTotal, LaborList, PartsList, IsIndependentTax, Adjust);
160
+ let RetCustTotal = this.GetRetCustomerTotalBasedOnTaxType(finalTotalsData, CustLaborTaxTotal, RetCustParrtTaxTotal, LaborList, PartsList, IsIndependentTax, Adjust);
161
+ let NonRetCustTotal = this.GetNonRetCustomerTotalBasedOnTaxType(finalTotalsData, CustLaborTaxTotal, NonRetCustParrtTaxTotal, LaborList, PartsList, IsIndependentTax, Adjust);
162
+ if (isRoundable) {
163
+ finalTotalsData.Round = (0, aggregation_1.subtraction)(Math.round(CustTotal), CustTotal);
164
+ finalTotalsData.Total = Math.round(CustTotal);
165
+ }
166
+ else {
167
+ finalTotalsData.Total = tr_utils_1.TrUtils.FixedTo(CustTotal);
168
+ }
169
+ finalTotalsData.RetTotal = tr_utils_1.TrUtils.FixedTo(RetCustTotal);
170
+ finalTotalsData.NonRetTotal = tr_utils_1.TrUtils.FixedTo(NonRetCustTotal);
171
+ if (DetailedInfo) {
172
+ finalTotalsData.FixedSubTotal = tr_utils_1.TrUtils.FixedTo(CustomerAfterDiscTotals);
173
+ finalTotalsData.FixedTotal = tr_utils_1.TrUtils.FixedTo(CustTotal);
174
+ finalTotalsData.Adj = tr_utils_1.TrUtils.FixedTo(Adjust);
175
+ }
176
+ return finalTotalsData;
177
+ }
178
+ static GetSubTotalFor(LaborList, PartsList) {
179
+ let LaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(LaborList);
180
+ let PartsTotalAfterDisc = this.GetPartsTotalAfterDiscount(PartsList);
181
+ return (0, aggregation_1.addition)(LaborTotalAfterDisc, PartsTotalAfterDisc);
182
+ }
183
+ static GetLaborTotalAfterDiscount(LaborList) {
184
+ let LaborTotalAfterDisc = 0;
185
+ LaborList.forEach((Labor) => {
186
+ LaborTotalAfterDisc = (0, aggregation_1.addition)(LaborTotalAfterDisc, Labor.AfterLaborDisc);
187
+ });
188
+ return LaborTotalAfterDisc;
189
+ }
190
+ static GetPartsTotalAfterDiscount(PartsList) {
191
+ let PartsTotalAfterDisc = 0;
192
+ let RetPartsTotalAfterDisc = 0;
193
+ PartsList.forEach((Part) => {
194
+ if (Part.Ret === true) {
195
+ RetPartsTotalAfterDisc = (0, aggregation_1.addition)(RetPartsTotalAfterDisc, Part.AfterPartDisc);
196
+ }
197
+ else {
198
+ PartsTotalAfterDisc = (0, aggregation_1.addition)(PartsTotalAfterDisc, Part.AfterPartDisc);
199
+ }
200
+ });
201
+ return (0, aggregation_1.subtraction)(PartsTotalAfterDisc, RetPartsTotalAfterDisc);
202
+ }
203
+ static GetRetPartsTotalAfterDiscount(PartsList) {
204
+ let RetPartsTotalAfterDisc = 0;
205
+ PartsList.forEach((Part) => {
206
+ if (Part.Ret === true) {
207
+ RetPartsTotalAfterDisc = (0, aggregation_1.addition)(RetPartsTotalAfterDisc, Part.AfterPartDisc);
208
+ }
209
+ });
210
+ return RetPartsTotalAfterDisc;
211
+ }
212
+ static GetNonRetPartsTotalAfterDiscount(PartsList) {
213
+ let NonRetPartsTotalAfterDisc = 0;
214
+ PartsList.forEach((Part) => {
215
+ if (tr_utils_1.TrUtils.IsNull(Part.Ret) || Part.Ret === false) {
216
+ NonRetPartsTotalAfterDisc = (0, aggregation_1.addition)(NonRetPartsTotalAfterDisc, Part.AfterPartDisc);
217
+ }
218
+ });
219
+ return NonRetPartsTotalAfterDisc;
220
+ }
221
+ static GetDetailedTotalsData(finalTotalsData, IsIndependentTax, opCodesList, PartsList, TaxCodes) {
222
+ finalTotalsData.CustLaborDiscTotal = this.GetLaborDiscountedTotal(opCodesList, IsIndependentTax, finalTotalsData);
223
+ finalTotalsData.CustPartsDiscTotal = this.GetPartDiscountedTotal(PartsList, IsIndependentTax, finalTotalsData);
224
+ finalTotalsData.CustLaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(opCodesList);
225
+ finalTotalsData.CustPartsTotalAfterDisc = this.GetPartsTotalAfterDiscount(PartsList);
226
+ finalTotalsData.CustLaborTotalBeforeDisc = (0, aggregation_1.addition)(finalTotalsData.CustLaborTotalAfterDisc, finalTotalsData.CustLaborDiscTotal);
227
+ if (IsIndependentTax) {
228
+ finalTotalsData.CustPartsTotalBeforeDisc = (0, aggregation_1.addition)(finalTotalsData.CustPartsTotalAfterDisc, finalTotalsData.CustPartsDiscTotal);
229
+ }
230
+ else {
231
+ finalTotalsData.CustPartsTotalBeforeDisc = finalTotalsData.CustPartsTotalAfterDisc;
232
+ }
233
+ let LaborTaxInfo = this.GetLaborGSTTaxTotal(opCodesList, IsIndependentTax);
234
+ finalTotalsData.CustLaborITax = tr_utils_1.TrUtils.SetValueToZeroIfNull(LaborTaxInfo[3]);
235
+ finalTotalsData.CustLaborSGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(LaborTaxInfo[1]);
236
+ finalTotalsData.CustLaborCGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(LaborTaxInfo[0]);
237
+ finalTotalsData.CustLaborIGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(LaborTaxInfo[2]);
238
+ let PartTaxInfo = this.GetPartGSTTaxTotal(PartsList, IsIndependentTax);
239
+ finalTotalsData.CustPartITax = this.GetPartsTaxTotalFor(PartsList, IsIndependentTax);
240
+ finalTotalsData.CustPartCGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(PartTaxInfo[0]);
241
+ finalTotalsData.CustPartIGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(PartTaxInfo[2]);
242
+ finalTotalsData.CustPartSGST = tr_utils_1.TrUtils.SetValueToZeroIfNull(PartTaxInfo[1]);
243
+ finalTotalsData.CustLaborAfterTax = (0, aggregation_1.addition)(finalTotalsData.CustLaborITax, finalTotalsData.CustLaborTotalAfterDisc);
244
+ finalTotalsData.CustPartAfterTax = (0, aggregation_1.addition)(finalTotalsData.CustPartITax, finalTotalsData.CustPartsTotalAfterDisc);
245
+ finalTotalsData.CustTaxGroupData = this.GetTaxGroupingForPartsByHSN(PartsList, TaxCodes);
246
+ finalTotalsData.CustTaxGroupDataByPerc = this.GetTaxGroupingForPartsByPerc(PartsList, TaxCodes);
247
+ finalTotalsData.CustLaborTaxGroupDataByPerc = this.GetTaxGroupingForLaborByPerc(opCodesList, TaxCodes);
248
+ finalTotalsData.CustTotalRoundedBy = tr_utils_1.TrUtils.FixedTo(finalTotalsData.Round);
249
+ finalTotalsData.CustRoundedTotal = tr_utils_1.TrUtils.FixedTo(finalTotalsData.Total);
250
+ finalTotalsData.CustRetRoundedTotal = tr_utils_1.TrUtils.FixedTo(finalTotalsData.RetTotal);
251
+ finalTotalsData.CustNonRetRoundedTotal = tr_utils_1.TrUtils.FixedTo(finalTotalsData.NonRetTotal);
252
+ for (var key in finalTotalsData) {
253
+ if (key !== 'Total' && key !== 'SubTotal' &&
254
+ key !== 'LDisc' && key !== 'LPerc' && key !== 'PDisc' &&
255
+ key !== 'PPerc' && key !== 'Disc' && key !== 'Perc' && key !== 'Tax'
256
+ && typeof finalTotalsData[key] === 'number') {
257
+ finalTotalsData[key] = tr_utils_1.TrUtils.FixPriceValue(finalTotalsData[key]);
258
+ }
259
+ }
260
+ return finalTotalsData;
261
+ }
262
+ static GetTaxGroupingForLaborByPerc(opCodesList, TaxCodes) {
263
+ opCodesList = this.GetCombinedTaxPercentage(tr_utils_1.TrUtils.Stringify(opCodesList), TaxCodes);
264
+ // opCodesList = this.ResetPartsHSNIfInvalid(opCodesList);
265
+ let FinalMatchedParts = this.CompareLaborByPerc(opCodesList, TaxCodes);
266
+ return this.GetTaxGroupingInfoBySAC(FinalMatchedParts, TaxCodes);
267
+ }
268
+ static GetTaxGroupingForPartsByPerc(Parts, TaxCodes) {
269
+ Parts = this.GetCombinedTaxPercentage(tr_utils_1.TrUtils.Stringify(Parts), TaxCodes);
270
+ // Parts = this.ResetPartsHSNIfInvalid(Parts);
271
+ let FinalMatchedParts = this.ComparePartsByPerc(Parts, TaxCodes);
272
+ return this.GetTaxGroupingInfoByHSN(FinalMatchedParts, TaxCodes);
273
+ }
274
+ static GetTaxGroupingInfoBySAC(FinalMatchedLabors, TaxCodes) {
275
+ let SACTaxInfo = [];
276
+ FinalMatchedLabors === null || FinalMatchedLabors === void 0 ? void 0 : FinalMatchedLabors.forEach((MatchedLabor) => {
277
+ let TaxInfo = {};
278
+ let TaxOnAmount = 0;
279
+ let TaxAmount = 0;
280
+ let CGSTAmt = 0;
281
+ let SGSTAmt = 0;
282
+ let IGSTAmt = 0;
283
+ let SAC = MatchedLabor[0].SAC;
284
+ TaxInfo.CombinedTaxPercentage = MatchedLabor[0].CombinedTaxPercentage;
285
+ MatchedLabor === null || MatchedLabor === void 0 ? void 0 : MatchedLabor.forEach((argMatchedGSTLabor) => {
286
+ TaxOnAmount = (0, aggregation_1.addition)(TaxOnAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.AfterLaborDisc));
287
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.CGST));
288
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.IGST));
289
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.SGST));
290
+ CGSTAmt = (0, aggregation_1.addition)(CGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.CGST));
291
+ SGSTAmt = (0, aggregation_1.addition)(SGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.SGST));
292
+ IGSTAmt = (0, aggregation_1.addition)(IGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTLabor.IGST));
293
+ });
294
+ TaxInfo.SAC = SAC;
295
+ TaxInfo.CGSTAmt = CGSTAmt;
296
+ TaxInfo.SGSTAmt = SGSTAmt;
297
+ TaxInfo.IGSTAmt = IGSTAmt;
298
+ TaxInfo.TotalTaxableAmount = tr_utils_1.TrUtils.FixPriceValue(TaxOnAmount);
299
+ TaxInfo.TotalTaxAmount = tr_utils_1.TrUtils.FixPriceValue(TaxAmount);
300
+ TaxInfo.ItemsCount = MatchedLabor.length;
301
+ let GSTValues = this.GetGSTValueBasedOnTaxCode(MatchedLabor[0].TCode, TaxCodes);
302
+ TaxInfo.CGST = GSTValues[0];
303
+ TaxInfo.SGST = GSTValues[1];
304
+ TaxInfo.IGST = GSTValues[2];
305
+ if (TaxOnAmount !== 0) {
306
+ SACTaxInfo.push(TaxInfo);
307
+ }
308
+ });
309
+ return SACTaxInfo;
310
+ }
311
+ static CompareLaborByPerc(opCodesList, TaxCodes) {
312
+ let FinalMatchedLabors = [];
313
+ opCodesList === null || opCodesList === void 0 ? void 0 : opCodesList.forEach((Labor) => {
314
+ let MatchedLaborsBasedOnPerc = opCodesList.filter((argLabor) => {
315
+ let PartFound = false;
316
+ FinalMatchedLabors.forEach((FinalArgLabors) => {
317
+ let PartIndex = FinalArgLabors.findIndex((FinalArgPart) => {
318
+ return FinalArgPart._id === argLabor._id;
319
+ });
320
+ if (PartIndex !== -1) {
321
+ PartFound = true;
322
+ }
323
+ });
324
+ // let argGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(argLabor.TCode, TaxCodes);
325
+ // let argCGST = argGSTValues[0];
326
+ // let argSGST = argGSTValues[1];
327
+ // let argIGST = argGSTValues[2];
328
+ // let laborGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(Labor.TCode, TaxCodes);
329
+ // let laborCGST = laborGSTValues[0];
330
+ // let laborSGST = laborGSTValues[1];
331
+ // let laborIGST = laborGSTValues[2];
332
+ return (!PartFound) &&
333
+ (argLabor.CGSTAmt === Labor.CGSTAmt) && (argLabor.IGSTAmt === Labor.IGSTAmt) &&
334
+ (argLabor.SGSTAmt === Labor.SGSTAmt);
335
+ });
336
+ if (MatchedLaborsBasedOnPerc.length !== 0) {
337
+ FinalMatchedLabors.push(MatchedLaborsBasedOnPerc);
338
+ }
339
+ });
340
+ return FinalMatchedLabors;
341
+ }
342
+ static ComparePartsByPerc(Parts, TaxCodes) {
343
+ let FinalMatchedParts = [];
344
+ Parts === null || Parts === void 0 ? void 0 : Parts.forEach((Part) => {
345
+ let MatchedPartsBasedOnHSN = Parts.filter((argPart) => {
346
+ let PartFound = false;
347
+ FinalMatchedParts.forEach((FinalArgParts) => {
348
+ let PartIndex = FinalArgParts.findIndex((FinalArgPart) => {
349
+ return FinalArgPart._id === argPart._id;
350
+ });
351
+ if (PartIndex !== -1) {
352
+ PartFound = true;
353
+ }
354
+ });
355
+ // let argGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(argPart.TCode, TaxCodes);
356
+ // let argCGST = argGSTValues[0];
357
+ // let argSGST = argGSTValues[1];
358
+ // let argIGST = argGSTValues[2];
359
+ // let partGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(Part.TCode, TaxCodes);
360
+ // let partCGST = partGSTValues[0];
361
+ // let partSGST = partGSTValues[1];
362
+ // let partIGST = partGSTValues[2];
363
+ return (!PartFound) &&
364
+ (argPart.CGSTAmt === Part.CGSTAmt) && (argPart.IGSTAmt === Part.IGSTAmt) &&
365
+ (argPart.SGSTAmt === Part.SGSTAmt);
366
+ });
367
+ if (MatchedPartsBasedOnHSN.length !== 0) {
368
+ FinalMatchedParts.push(MatchedPartsBasedOnHSN);
369
+ }
370
+ });
371
+ return FinalMatchedParts;
372
+ }
373
+ static GetLaborDiscountedTotal(LaborList, isTaxable, finalTotalsData) {
374
+ let LaborDiscountedTotal = 0;
375
+ let overallLaborDisc = 0;
376
+ if (!isTaxable) {
377
+ overallLaborDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(finalTotalsData.LDisc);
378
+ }
379
+ else {
380
+ LaborList.forEach((Labor) => {
381
+ LaborDiscountedTotal = (0, aggregation_1.addition)(LaborDiscountedTotal, Labor.DiscountedPrice);
382
+ });
383
+ }
384
+ return (0, aggregation_1.addition)(LaborDiscountedTotal, overallLaborDisc);
385
+ }
386
+ static GetPartDiscountedTotal(PartsList, isTaxable, finalTotalsData) {
387
+ let PartsDiscountedTotal = 0;
388
+ let RetPartsDiscountedTotal = 0;
389
+ let overallPartDisc = 0;
390
+ if (!isTaxable) {
391
+ overallPartDisc = tr_utils_1.TrUtils.SetValueToZeroIfNull(finalTotalsData.PDisc);
392
+ }
393
+ else {
394
+ PartsList.forEach((Part) => {
395
+ if (Part.Ret === true) {
396
+ RetPartsDiscountedTotal = (0, aggregation_1.addition)(RetPartsDiscountedTotal, Part.DiscountedPrice);
397
+ }
398
+ else {
399
+ PartsDiscountedTotal = (0, aggregation_1.addition)(PartsDiscountedTotal, Part.DiscountedPrice);
400
+ }
401
+ });
402
+ }
403
+ return (0, aggregation_1.addition)((0, aggregation_1.subtraction)(PartsDiscountedTotal, RetPartsDiscountedTotal), overallPartDisc);
404
+ }
405
+ static GetLaborTaxTotalFor(opCodesList, IsIndependentTax) {
406
+ let TotalTaxAmt = 0;
407
+ if (IsIndependentTax) {
408
+ opCodesList.forEach((Labor) => {
409
+ TotalTaxAmt = (0, aggregation_1.addition)(TotalTaxAmt, Labor.CGST, Labor.SGST, Labor.IGST);
410
+ });
411
+ }
412
+ return TotalTaxAmt;
413
+ }
414
+ static GetPartsTaxTotalFor(PartsList, IsIndependentTax) {
415
+ let TotalTaxAmt = 0;
416
+ let RetTotalTaxAmt = 0;
417
+ if (IsIndependentTax) {
418
+ PartsList.forEach((Part) => {
419
+ if (Part.Ret === true) {
420
+ RetTotalTaxAmt = (0, aggregation_1.addition)(RetTotalTaxAmt, Part.CGST, Part.SGST, Part.IGST);
421
+ }
422
+ else {
423
+ TotalTaxAmt = (0, aggregation_1.addition)(TotalTaxAmt, Part.CGST, Part.SGST, Part.IGST);
424
+ }
425
+ });
426
+ }
427
+ return (0, aggregation_1.subtraction)(TotalTaxAmt, RetTotalTaxAmt);
428
+ }
429
+ static GetRetPartsTaxTotalFor(PartsList, IsIndependentTax) {
430
+ let RetTotalTaxAmt = 0;
431
+ if (IsIndependentTax) {
432
+ PartsList.forEach((Part) => {
433
+ if (Part.Ret === true) {
434
+ RetTotalTaxAmt = (0, aggregation_1.addition)(RetTotalTaxAmt, Part.CGST, Part.SGST, Part.IGST);
435
+ }
436
+ });
437
+ }
438
+ return RetTotalTaxAmt;
439
+ }
440
+ static GetNonRetPartsTaxTotalFor(PartsList, IsIndependentTax) {
441
+ let NonRetTotalTaxAmt = 0;
442
+ if (IsIndependentTax) {
443
+ PartsList.forEach((Part) => {
444
+ if (tr_utils_1.TrUtils.IsNull(Part.Ret) || Part.Ret === false) {
445
+ NonRetTotalTaxAmt = (0, aggregation_1.addition)(NonRetTotalTaxAmt, Part.CGST, Part.SGST, Part.IGST);
446
+ }
447
+ });
448
+ }
449
+ return NonRetTotalTaxAmt;
450
+ }
451
+ static GetCustomerTotalBasedOnTaxType(finalTotalsData, LaborTaxAmount, PartsTaxAmount, LaborList, PartsList, IsIndependentTax, Adjust) {
452
+ let LaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(LaborList);
453
+ let PartsTotalAfterDisc = this.GetPartsTotalAfterDiscount(PartsList);
454
+ if (IsIndependentTax) {
455
+ return (0, aggregation_1.addition)(LaborTotalAfterDisc, PartsTotalAfterDisc, LaborTaxAmount, PartsTaxAmount, Adjust);
456
+ }
457
+ else {
458
+ return (0, aggregation_1.addition)((0, aggregation_1.subtraction)((0, aggregation_1.addition)((0, aggregation_1.subtraction)(LaborTotalAfterDisc, finalTotalsData.LDisc), (0, aggregation_1.subtraction)(PartsTotalAfterDisc, finalTotalsData.PDisc)), finalTotalsData.Disc), Adjust);
459
+ }
460
+ }
461
+ static GetRetCustomerTotalBasedOnTaxType(finalTotalsData, LaborTaxAmount, PartsTaxAmount, LaborList, PartsList, IsIndependentTax, Adjust) {
462
+ let LaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(LaborList);
463
+ let PartsTotalAfterDisc = this.GetRetPartsTotalAfterDiscount(PartsList);
464
+ if (IsIndependentTax) {
465
+ return (0, aggregation_1.addition)(LaborTotalAfterDisc, PartsTotalAfterDisc, LaborTaxAmount, PartsTaxAmount);
466
+ }
467
+ else {
468
+ return tr_utils_1.TrUtils.FixedTo((0, aggregation_1.addition)((0, aggregation_1.subtraction)(LaborTotalAfterDisc, finalTotalsData.LDisc), (0, aggregation_1.subtraction)(PartsTotalAfterDisc, finalTotalsData.PDisc)));
469
+ }
470
+ }
471
+ static GetNonRetCustomerTotalBasedOnTaxType(finalTotalsData, LaborTaxAmount, PartsTaxAmount, LaborList, PartsList, IsIndependentTax, Adjust) {
472
+ let LaborTotalAfterDisc = this.GetLaborTotalAfterDiscount(LaborList);
473
+ let PartsTotalAfterDisc = this.GetNonRetPartsTotalAfterDiscount(PartsList);
474
+ if (IsIndependentTax) {
475
+ return (0, aggregation_1.addition)(LaborTotalAfterDisc, PartsTotalAfterDisc, LaborTaxAmount, PartsTaxAmount);
476
+ }
477
+ else {
478
+ return tr_utils_1.TrUtils.FixedTo((0, aggregation_1.addition)((0, aggregation_1.subtraction)(LaborTotalAfterDisc, finalTotalsData.LDisc), (0, aggregation_1.subtraction)(PartsTotalAfterDisc, finalTotalsData.PDisc)));
479
+ }
480
+ }
481
+ static LaborTotalAfterDiscount(LaborTotalAfterDisc, LaborTaxAmount, MainLDisc, LDiscInPerc) {
482
+ let LaborTotal = (0, aggregation_1.addition)(LaborTotalAfterDisc, LaborTaxAmount);
483
+ if (!tr_utils_1.TrUtils.IsZero(MainLDisc)) {
484
+ if (!tr_utils_1.TrUtils.IsEmpty(LDiscInPerc)) {
485
+ LaborTotal = (0, aggregation_1.subtraction)(LaborTotal, (0, aggregation_1.division)((0, aggregation_1.multiply)(LaborTotal, Number(LDiscInPerc)), 100));
486
+ }
487
+ else {
488
+ LaborTotal = (0, aggregation_1.subtraction)(LaborTotal, MainLDisc);
489
+ }
490
+ }
491
+ return LaborTotal;
492
+ }
493
+ static ItemsTotalAfterDiscount(PartsTotalAfterDisc, PartsTaxAmount, MainPDisc, PDiscInPerc) {
494
+ let ItemsTotal = (0, aggregation_1.addition)(PartsTotalAfterDisc, PartsTaxAmount);
495
+ if (!tr_utils_1.TrUtils.IsZero(MainPDisc)) {
496
+ if (!tr_utils_1.TrUtils.IsEmpty(PDiscInPerc)) {
497
+ ItemsTotal = (0, aggregation_1.subtraction)(ItemsTotal, (0, aggregation_1.division)((0, aggregation_1.multiply)(ItemsTotal, Number(PDiscInPerc)), 100));
498
+ }
499
+ else {
500
+ ItemsTotal = (0, aggregation_1.subtraction)(ItemsTotal, MainPDisc);
501
+ }
502
+ }
503
+ return ItemsTotal;
504
+ }
505
+ static GetLaborGSTTaxTotal(opCodesList, IsIndependentTax) {
506
+ let TotalCGSTAmt = 0;
507
+ let TotalSGSTAmt = 0;
508
+ let TotalIGSTAmt = 0;
509
+ let TotalTaxAmt = 0;
510
+ if (IsIndependentTax) {
511
+ opCodesList.forEach((Labor) => {
512
+ TotalCGSTAmt = (0, aggregation_1.addition)(TotalCGSTAmt, Labor.CGST);
513
+ TotalSGSTAmt = (0, aggregation_1.addition)(TotalSGSTAmt, Labor.SGST);
514
+ TotalIGSTAmt = (0, aggregation_1.addition)(TotalIGSTAmt, Labor.IGST);
515
+ TotalTaxAmt = (0, aggregation_1.addition)(TotalTaxAmt, Labor.CGST, Labor.SGST, Labor.IGST);
516
+ });
517
+ }
518
+ return [TotalCGSTAmt, TotalSGSTAmt, TotalIGSTAmt, TotalTaxAmt];
519
+ }
520
+ static GetPartGSTTaxTotal(PartsList, IsIndependentTax) {
521
+ let TotalCGSTAmt = 0;
522
+ let RetTotalCGSTAmt = 0;
523
+ let RetTotalIGSTAmt = 0;
524
+ let TotalIGSTAmt = 0;
525
+ let TotalSGSTAmt = 0;
526
+ let RetTotalSGSTAmt = 0;
527
+ if (IsIndependentTax) {
528
+ PartsList.forEach((Part) => {
529
+ if (Part.Ret === true) {
530
+ RetTotalCGSTAmt = (0, aggregation_1.addition)(RetTotalCGSTAmt, Part.CGST);
531
+ RetTotalSGSTAmt = (0, aggregation_1.addition)(RetTotalSGSTAmt, Part.SGST);
532
+ RetTotalIGSTAmt = (0, aggregation_1.addition)(RetTotalIGSTAmt, Part.IGST);
533
+ }
534
+ else {
535
+ TotalCGSTAmt = (0, aggregation_1.addition)(TotalCGSTAmt, Part.CGST);
536
+ TotalSGSTAmt = (0, aggregation_1.addition)(TotalSGSTAmt, Part.SGST);
537
+ TotalIGSTAmt = (0, aggregation_1.addition)(TotalIGSTAmt, Part.IGST);
538
+ }
539
+ });
540
+ }
541
+ return [TotalCGSTAmt, TotalSGSTAmt, TotalIGSTAmt];
542
+ }
543
+ static GetTaxGroupingForPartsByHSN(Parts, TaxCodes) {
544
+ Parts = this.GetCombinedTaxPercentage(tr_utils_1.TrUtils.Stringify(Parts), TaxCodes);
545
+ // Parts = this.ResetPartsHSNIfInvalid(Parts);
546
+ let FinalMatchedParts = this.ComparePartsByHSN(Parts, TaxCodes);
547
+ return this.GetTaxGroupingInfoByHSN(FinalMatchedParts, TaxCodes);
548
+ }
549
+ static GetCombinedTaxPercentage(Parts, TaxCodes) {
550
+ Parts.forEach((Part) => {
551
+ if (tr_utils_1.TrUtils.IsNull(Part.HSN)) {
552
+ Part.HSN = '';
553
+ }
554
+ let GSTValues = this.GetGSTValueBasedOnTaxCode(Part.TCode, TaxCodes);
555
+ // let CGST = GSTValues[0];
556
+ // let SGST = GSTValues[1];
557
+ // let IGST = GSTValues[2];
558
+ Part.CGSTAmt = tr_utils_1.TrUtils.SetValueToZeroIfNull(GSTValues[0]);
559
+ Part.SGSTAmt = tr_utils_1.TrUtils.SetValueToZeroIfNull(GSTValues[1]);
560
+ Part.IGSTAmt = tr_utils_1.TrUtils.SetValueToZeroIfNull(GSTValues[2]);
561
+ Part.CombinedTaxPercentage = (0, aggregation_1.addition)(Part.CGSTAmt, Part.SGSTAmt, Part.IGSTAmt);
562
+ });
563
+ return Parts;
564
+ }
565
+ static ComparePartsByHSN(Parts, TaxCodes) {
566
+ let FinalMatchedParts = [];
567
+ Parts.forEach((Part) => {
568
+ let MatchedPartsBasedOnHSN = Parts.filter((argPart) => {
569
+ let PartFound = false;
570
+ FinalMatchedParts.forEach((FinalArgParts) => {
571
+ let PartIndex = FinalArgParts.findIndex((FinalArgPart) => {
572
+ return FinalArgPart._id === argPart._id;
573
+ });
574
+ if (PartIndex !== -1) {
575
+ PartFound = true;
576
+ }
577
+ });
578
+ // let argGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(argPart.TCode, TaxCodes);
579
+ // let argCGST = argGSTValues[0];
580
+ // let argSGST = argGSTValues[1];
581
+ // let argIGST = argGSTValues[2];
582
+ // let partGSTValues: any[] = this.GetGSTValueBasedOnTaxCode(Part.TCode, TaxCodes);
583
+ // let partCGST = partGSTValues[0];
584
+ // let partSGST = partGSTValues[1];
585
+ // let partIGST = partGSTValues[2];
586
+ return (argPart.HSN === Part.HSN) && (!PartFound) &&
587
+ (argPart.CGSTAmt === Part.CGSTAmt) && (argPart.IGSTAmt === Part.IGSTAmt) &&
588
+ (argPart.SGSTAmt === Part.SGSTAmt);
589
+ });
590
+ if (MatchedPartsBasedOnHSN.length !== 0) {
591
+ FinalMatchedParts.push(MatchedPartsBasedOnHSN);
592
+ }
593
+ });
594
+ return FinalMatchedParts;
595
+ }
596
+ static GetTaxGroupingInfoByHSN(FinalMatchedParts, TaxCodes) {
597
+ let HSNTaxInfo = [];
598
+ FinalMatchedParts.forEach((MatchedPart) => {
599
+ let TaxInfo = {};
600
+ let TaxOnAmount = 0;
601
+ let TaxAmount = 0;
602
+ let CGSTAmt = 0;
603
+ let SGSTAmt = 0;
604
+ let IGSTAmt = 0;
605
+ let HSN = MatchedPart[0].HSN;
606
+ TaxInfo.CombinedTaxPercentage = MatchedPart[0].CombinedTaxPercentage;
607
+ MatchedPart.forEach((argMatchedGSTPart) => {
608
+ TaxOnAmount = (0, aggregation_1.addition)(TaxOnAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.AfterPartDisc));
609
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.CGST));
610
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.IGST));
611
+ TaxAmount = (0, aggregation_1.addition)(TaxAmount, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.SGST));
612
+ CGSTAmt = (0, aggregation_1.addition)(CGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.CGST));
613
+ SGSTAmt = (0, aggregation_1.addition)(SGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.SGST));
614
+ IGSTAmt = (0, aggregation_1.addition)(IGSTAmt, tr_utils_1.TrUtils.FixedTo(argMatchedGSTPart.IGST));
615
+ });
616
+ TaxInfo.HSN = HSN;
617
+ TaxInfo.CGSTAmt = CGSTAmt;
618
+ TaxInfo.SGSTAmt = SGSTAmt;
619
+ TaxInfo.IGSTAmt = IGSTAmt;
620
+ TaxInfo.TotalTaxableAmount = tr_utils_1.TrUtils.FixPriceValue(TaxOnAmount);
621
+ TaxInfo.TotalTaxAmount = tr_utils_1.TrUtils.FixPriceValue(TaxAmount);
622
+ TaxInfo.ItemsCount = MatchedPart.length;
623
+ // let GSTValues: any[] = this.GetGSTValueBasedOnTaxCode(MatchedPart[0].TCode, TaxCodes);
624
+ // TaxInfo.CGST = GSTValues[0];
625
+ // TaxInfo.SGST = GSTValues[1];
626
+ // TaxInfo.IGST = GSTValues[2];
627
+ TaxInfo.CGST = MatchedPart[0].CGSTAmt;
628
+ TaxInfo.IGST = MatchedPart[0].IGSTAmt;
629
+ TaxInfo.SGST = MatchedPart[0].SGSTAmt;
630
+ if (TaxOnAmount !== 0) {
631
+ HSNTaxInfo.push(TaxInfo);
632
+ }
633
+ });
634
+ return HSNTaxInfo;
635
+ }
636
+ static GetGSTValueBasedOnTaxCode(TCode, TaxCodes) {
637
+ let CGST = 0;
638
+ let SGST = 0;
639
+ let IGST = 0;
640
+ if (tr_utils_1.TrUtils.IsNull(TCode)) {
641
+ return [CGST, SGST, IGST];
642
+ }
643
+ let TCodeIndex = TaxCodes.findIndex((TaxCode) => {
644
+ return TaxCode._id === Number(TCode);
645
+ });
646
+ if (TCodeIndex !== -1) {
647
+ if (TaxCodes[TCodeIndex].Type === 'Intra') {
648
+ return [TaxCodes[TCodeIndex].CGST, TaxCodes[TCodeIndex].SGST, 0];
649
+ }
650
+ else {
651
+ return [0, 0, TaxCodes[TCodeIndex].IGST];
652
+ }
653
+ }
654
+ else {
655
+ return [CGST, SGST, IGST];
656
+ }
657
+ }
658
+ }
659
+ exports.InvoiceTotalsService = InvoiceTotalsService;