b2m-utils 0.0.294 → 0.0.295

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.
package/build/index.js CHANGED
@@ -1024,10 +1024,6 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1024
1024
  if (percentageFees.length === 0) {
1025
1025
  return results;
1026
1026
  }
1027
- console.log("\n\uD83D\uDD04 Calculando ".concat(percentageFees.length, " fees TOTAL_PERCENTAGE de forma iterativa"));
1028
- console.log("\uD83D\uDCCB Fees: ".concat(percentageFees.map(function (f) { var _a; return "".concat((_a = f.fee) === null || _a === void 0 ? void 0 : _a.name, " (").concat(f.value, "%)"); }).join(', ')));
1029
- // Calcular fees não-percentuais (base fixa)
1030
- console.log("\uD83D\uDCCB Fees n\u00E3o-percentuais: ".concat(nonPercentageFees.map(function (f) { var _a; return "".concat((_a = f.fee) === null || _a === void 0 ? void 0 : _a.name); }).join(', ')));
1031
1027
  var baseNonPercentage = 0;
1032
1028
  // Se temos valores pré-calculados, usar eles ao invés de recalcular
1033
1029
  if (preCalculatedValues) {
@@ -1044,10 +1040,6 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1044
1040
  }));
1045
1041
  baseNonPercentage = nonPercentageResults.reduce(function (sum, r) { return sum + (r.totalToCalc || 0); }, 0);
1046
1042
  }
1047
- console.log("\uD83D\uDCCA Base n\u00E3o-percentual: R$ ".concat(baseNonPercentage.toFixed(2)));
1048
- if (!preCalculatedValues) {
1049
- console.log("\uD83D\uDCCA Detalhamento calculado automaticamente");
1050
- }
1051
1043
  // Calcular fees percentuais iterativamente até convergir
1052
1044
  var maxIterations = 10;
1053
1045
  var tolerance = 0.01; // Tolerância de 1 centavo
@@ -1055,10 +1047,8 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1055
1047
  var previousValues = new Map();
1056
1048
  percentageFees.forEach(function (pf) { return previousValues.set(pf.fee.id, 0); });
1057
1049
  var _loop_1 = function (iteration) {
1058
- console.log("\n--- Itera\u00E7\u00E3o ".concat(iteration + 1, " ---"));
1059
1050
  // Calcular cada fee percentual com base nos valores atuais das outras
1060
1051
  percentageFees.forEach(function (pf) {
1061
- var _a;
1062
1052
  // Calcular base: fees não-percentuais + outras fees percentuais (exceto ela mesma)
1063
1053
  var basePercentage = Array.from(previousValues.entries())
1064
1054
  .filter(function (_a) {
@@ -1072,7 +1062,6 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1072
1062
  var baseValue = baseNonPercentage + basePercentage;
1073
1063
  var percentValue = (+pf.value / 100);
1074
1064
  var calculatedValue = baseValue * percentValue;
1075
- console.log(" ".concat((_a = pf.fee) === null || _a === void 0 ? void 0 : _a.name, ": base=").concat(baseValue.toFixed(2), " (").concat(baseNonPercentage.toFixed(2), " + ").concat(basePercentage.toFixed(2), ") \u00D7 ").concat(pf.value, "% = ").concat(calculatedValue.toFixed(2)));
1076
1065
  previousValues.set(pf.fee.id, calculatedValue);
1077
1066
  // Armazenar resultado
1078
1067
  results.set(pf.fee.id, __assign(__assign({}, pf), { totalFee: calculatedValue, totalToCalc: calculatedValue, resultFee: "".concat(convertNumberToCurrency(baseValue, 'pt-br'), " x ").concat(+pf.value, "% = ").concat(convertNumberToCurrency(calculatedValue, 'pt-br')) }));
@@ -1095,7 +1084,6 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1095
1084
  hasConverged = false;
1096
1085
  }
1097
1086
  if (hasConverged) {
1098
- console.log("\u2705 Convergiu na itera\u00E7\u00E3o ".concat(iteration + 1, "!"));
1099
1087
  return "break";
1100
1088
  }
1101
1089
  };
@@ -1104,11 +1092,6 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1104
1092
  if (state_1 === "break")
1105
1093
  break;
1106
1094
  }
1107
- console.log("\n\uD83D\uDCC8 Resultado final das fees percentuais:");
1108
- results.forEach(function (result, feeId) {
1109
- var _a;
1110
- console.log(" ".concat((_a = result.fee) === null || _a === void 0 ? void 0 : _a.name, " (").concat(feeId, "): R$ ").concat((result.totalFee || 0).toFixed(2)));
1111
- });
1112
1095
  return results;
1113
1096
  };
1114
1097
 
@@ -1395,7 +1378,7 @@ var getLaneFromRatecard = function (cte) {
1395
1378
  };
1396
1379
 
1397
1380
  var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1398
- var _a, _b, _c;
1381
+ var _a, _b, _c, _d;
1399
1382
  var results = [];
1400
1383
  // Separar fees por tipo: normais, TOTAL_PERCENTAGE e ICMS
1401
1384
  var icmsFee = feesToCalc.find(function (f) { var _a; return ((_a = f.fee) === null || _a === void 0 ? void 0 : _a.id) === exports.FeeEnum.ICMS || f.feeId === exports.FeeEnum.ICMS; });
@@ -1422,8 +1405,8 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1422
1405
  });
1423
1406
  if (siblingFees && (siblingFees === null || siblingFees === void 0 ? void 0 : siblingFees.length) > 0) {
1424
1407
  var siblingFeesResults = [];
1425
- for (var _e = 0, siblingFees_1 = siblingFees; _e < siblingFees_1.length; _e++) {
1426
- var item_1 = siblingFees_1[_e];
1408
+ for (var _f = 0, siblingFees_1 = siblingFees; _f < siblingFees_1.length; _f++) {
1409
+ var item_1 = siblingFees_1[_f];
1427
1410
  var result = calculateFee(item_1, cte, feesToCalc, false, allFeesForCalc);
1428
1411
  siblingFeesResults.push(result);
1429
1412
  }
@@ -1455,22 +1438,26 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1455
1438
  var item = normalFees_1[_i];
1456
1439
  _loop_1(item);
1457
1440
  }
1458
- // PASSADA 2: Calcular fees TOTAL_PERCENTAGE usando a soma das fees normais já calculadas
1459
- for (var _d = 0, totalPercentageFees_1 = totalPercentageFees; _d < totalPercentageFees_1.length; _d++) {
1460
- var item = totalPercentageFees_1[_d];
1461
- // Calcular soma das fees normais (excluindo TOTAL_PERCENTAGE e ICMS)
1462
- var totalWithoutPercentageFees = results
1463
- .filter(function (r) { return r.total > 0; })
1464
- .reduce(function (sum, r) { return sum + r.total; }, 0);
1465
- var percentage = item.value || 0;
1466
- var calculatedValue = (totalWithoutPercentageFees * percentage) / 100;
1467
- if (!isNaN(+calculatedValue) && calculatedValue > 0) {
1468
- results.push({
1469
- total: +(calculatedValue).toFixed(2),
1470
- resultFee: "".concat(convertNumberToCurrency(totalWithoutPercentageFees, 'pt-br'), " x ").concat(percentage, "% = ").concat(convertNumberToCurrency(calculatedValue, 'pt-br')),
1471
- feeValue: percentage,
1472
- feeId: item.feeId,
1473
- });
1441
+ // PASSADA 2: Calcular fees TOTAL_PERCENTAGE de forma iterativa
1442
+ if (totalPercentageFees.length > 0) {
1443
+ console.log("\n\uD83D\uDD04 [getCtesFeesResult] Calculando ".concat(totalPercentageFees.length, " fees TOTAL_PERCENTAGE"));
1444
+ console.log("\uD83D\uDCCB Fees: ".concat(totalPercentageFees.map(function (f) { var _a; return "".concat((_a = f.fee) === null || _a === void 0 ? void 0 : _a.name, " (").concat(f.value, "%)"); }).join(', ')));
1445
+ var percentageFeesCache = calculateTotalPercentageFees(feesToCalc, cte, allFeesForCalc);
1446
+ console.log("\u2705 Cache gerado com ".concat(percentageFeesCache.size, " fees"));
1447
+ for (var _e = 0, totalPercentageFees_1 = totalPercentageFees; _e < totalPercentageFees_1.length; _e++) {
1448
+ var item = totalPercentageFees_1[_e];
1449
+ if ((_d = item.fee) === null || _d === void 0 ? void 0 : _d.id) {
1450
+ var cachedResult = percentageFeesCache.get(item.fee.id);
1451
+ if (cachedResult && cachedResult.totalFee && cachedResult.totalFee > 0) {
1452
+ console.log(" ".concat(item.fee.name, ": R$ ").concat(cachedResult.totalFee.toFixed(2)));
1453
+ results.push({
1454
+ total: Number(cachedResult.totalFee.toFixed(2)),
1455
+ resultFee: cachedResult.resultFee || '',
1456
+ feeValue: item.value || 0,
1457
+ feeId: item.feeId,
1458
+ });
1459
+ }
1460
+ }
1474
1461
  }
1475
1462
  }
1476
1463
  // PASSADA 3: Calcular ICMS com base em todas as fees anteriores (normais + TOTAL_PERCENTAGE)
package/build/index.js.gz CHANGED
Binary file