b2m-utils 0.0.302 → 0.0.304

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.
@@ -1443,7 +1443,7 @@ var getLaneFromRatecard = function (cte) {
1443
1443
  };
1444
1444
 
1445
1445
  var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1446
- var _a, _b, _c, _d, _e, _f;
1446
+ var _a, _b, _c, _d;
1447
1447
  var results = [];
1448
1448
  // Separar fees por tipo: normais, TOTAL_PERCENTAGE e ICMS
1449
1449
  var icmsFee = feesToCalc.find(function (f) { var _a; return ((_a = f.fee) === null || _a === void 0 ? void 0 : _a.id) === FeeEnum.ICMS || f.feeId === FeeEnum.ICMS; });
@@ -1454,8 +1454,6 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1454
1454
  f.feeId !== FeeEnum.ICMS &&
1455
1455
  ((_b = f.fee) === null || _b === void 0 ? void 0 : _b.feeCalculationTypeId) !== FeeCalculationTypeEnum.TOTAL_PERCENTAGE;
1456
1456
  });
1457
- // PASSADA 1: Calcular fees normais (não TOTAL_PERCENTAGE, não ICMS)
1458
- console.log("\n\uD83D\uDCE6 [getCtesFeesResult] Calculando ".concat(normalFees.length, " fees normais"));
1459
1457
  var _loop_1 = function (item) {
1460
1458
  var feeTotal = calculateFee(item, cte, feesToCalc, false, allFeesForCalc);
1461
1459
  if (feeTotal === null || feeTotal === void 0 ? void 0 : feeTotal.totalFee) {
@@ -1472,8 +1470,8 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1472
1470
  });
1473
1471
  if (siblingFees && (siblingFees === null || siblingFees === void 0 ? void 0 : siblingFees.length) > 0) {
1474
1472
  var siblingFeesResults = [];
1475
- for (var _h = 0, siblingFees_1 = siblingFees; _h < siblingFees_1.length; _h++) {
1476
- var item_1 = siblingFees_1[_h];
1473
+ for (var _f = 0, siblingFees_1 = siblingFees; _f < siblingFees_1.length; _f++) {
1474
+ var item_1 = siblingFees_1[_f];
1477
1475
  var result = calculateFee(item_1, cte, feesToCalc, false, allFeesForCalc);
1478
1476
  siblingFeesResults.push(result);
1479
1477
  }
@@ -1485,14 +1483,12 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1485
1483
  });
1486
1484
  if ((siblingFeesResults === null || siblingFeesResults === void 0 ? void 0 : siblingFeesResults.length) > 0) {
1487
1485
  if (((_b = siblingFeesResults[0]) === null || _b === void 0 ? void 0 : _b.totalFee) && ((_c = siblingFeesResults[0]) === null || _c === void 0 ? void 0 : _c.totalFee) > totalFee) {
1488
- console.log(" \u26A0\uFE0F ".concat((_d = item.fee) === null || _d === void 0 ? void 0 : _d.name, ": R$ ").concat(totalFee.toFixed(2), " \u2192 R$ 0.00 (sibling maior)"));
1489
1486
  totalToPush = 0;
1490
1487
  }
1491
1488
  }
1492
1489
  }
1493
1490
  }
1494
1491
  if (!isNaN(+totalToPush) && totalToPush > 0) {
1495
- console.log(" \u2705 ".concat((_e = item.fee) === null || _e === void 0 ? void 0 : _e.name, ": R$ ").concat(totalToPush.toFixed(2)));
1496
1492
  results.push({
1497
1493
  total: +(totalToPush).toFixed(2),
1498
1494
  resultFee: resultFee,
@@ -1502,15 +1498,13 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1502
1498
  }
1503
1499
  }
1504
1500
  };
1501
+ // PASSADA 1: Calcular fees normais (não TOTAL_PERCENTAGE, não ICMS)
1505
1502
  for (var _i = 0, normalFees_1 = normalFees; _i < normalFees_1.length; _i++) {
1506
1503
  var item = normalFees_1[_i];
1507
1504
  _loop_1(item);
1508
1505
  }
1509
- console.log("\uD83D\uDCCA Total parcial (fees normais): R$ ".concat(results.reduce(function (sum, r) { return sum + r.total; }, 0).toFixed(2)));
1510
1506
  // PASSADA 2: Calcular fees TOTAL_PERCENTAGE de forma iterativa
1511
1507
  if (totalPercentageFees.length > 0) {
1512
- console.log("\n\uD83D\uDD04 [getCtesFeesResult] Calculando ".concat(totalPercentageFees.length, " fees TOTAL_PERCENTAGE"));
1513
- 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(', ')));
1514
1508
  // Criar Map com valores já calculados das fees normais (respeitando lógica de siblings)
1515
1509
  var preCalculatedValues_1 = new Map();
1516
1510
  results.forEach(function (r) {
@@ -1520,15 +1514,12 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1520
1514
  preCalculatedValues_1.set(fee.fee.id, r.total);
1521
1515
  }
1522
1516
  });
1523
- console.log("\uD83D\uDCCA Usando ".concat(preCalculatedValues_1.size, " valores pr\u00E9-calculados"));
1524
1517
  var percentageFeesCache = calculateTotalPercentageFees(feesToCalc, cte, allFeesForCalc, preCalculatedValues_1);
1525
- console.log("\u2705 Cache gerado com ".concat(percentageFeesCache.size, " fees"));
1526
- for (var _g = 0, totalPercentageFees_1 = totalPercentageFees; _g < totalPercentageFees_1.length; _g++) {
1527
- var item = totalPercentageFees_1[_g];
1528
- if ((_f = item.fee) === null || _f === void 0 ? void 0 : _f.id) {
1518
+ for (var _e = 0, totalPercentageFees_1 = totalPercentageFees; _e < totalPercentageFees_1.length; _e++) {
1519
+ var item = totalPercentageFees_1[_e];
1520
+ if ((_d = item.fee) === null || _d === void 0 ? void 0 : _d.id) {
1529
1521
  var cachedResult = percentageFeesCache.get(item.fee.id);
1530
1522
  if (cachedResult && cachedResult.totalFee && cachedResult.totalFee > 0) {
1531
- console.log(" ".concat(item.fee.name, ": R$ ").concat(cachedResult.totalFee.toFixed(2)));
1532
1523
  results.push({
1533
1524
  total: Number(cachedResult.totalFee.toFixed(2)),
1534
1525
  resultFee: cachedResult.resultFee || '',
@@ -1541,20 +1532,15 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1541
1532
  }
1542
1533
  // PASSADA 3: Calcular ICMS com base em todas as fees anteriores (normais + TOTAL_PERCENTAGE)
1543
1534
  if (icmsFee) {
1544
- console.log("\n\uD83D\uDCB0 [getCtesFeesResult] Calculando ICMS");
1545
1535
  // Coletar apenas os valores das fees que realmente contam (total > 0)
1546
1536
  var valuesForIcms = results
1547
1537
  .filter(function (r) { return r.total > 0; })
1548
1538
  .map(function (r) { return r.total; });
1549
- console.log("\uD83D\uDCCA Valores para ICMS: ".concat(valuesForIcms.map(function (v) { return "R$ ".concat(v.toFixed(2)); }).join(' + '), " = R$ ").concat(valuesForIcms.reduce(function (a, b) { return a + b; }, 0).toFixed(2)));
1550
1539
  var icmsRate = (cte.icmsIncidence !== undefined && cte.icmsIncidence !== null && !isNaN(+cte.icmsIncidence))
1551
1540
  ? +(cte.icmsIncidence) / 100
1552
1541
  : icmsFee.value || 0;
1553
- console.log("\uD83D\uDCC8 Al\u00EDquota ICMS: ".concat((icmsRate * 100).toFixed(2), "%"));
1554
1542
  // Usar calculateIcms diretamente
1555
1543
  var icmsCalculation = calculateIcms(valuesForIcms, icmsRate);
1556
- console.log("\u2705 ICMS calculado: R$ ".concat(icmsCalculation.total.toFixed(2)));
1557
- console.log("\uD83D\uDCCB Total de fees no results antes do ICMS: ".concat(results.length));
1558
1544
  if (icmsCalculation.isValid && !isNaN(+icmsCalculation.total)) {
1559
1545
  results.push({
1560
1546
  total: +(icmsCalculation.total).toFixed(2),
@@ -1562,11 +1548,8 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1562
1548
  feeValue: icmsRate,
1563
1549
  feeId: icmsFee.feeId,
1564
1550
  });
1565
- console.log("\uD83D\uDCCB Total de fees no results depois do ICMS: ".concat(results.length));
1566
1551
  }
1567
1552
  }
1568
- console.log("\n\uD83C\uDFAF [getCtesFeesResult] Total final: R$ ".concat(results.reduce(function (sum, r) { return sum + r.total; }, 0).toFixed(2)));
1569
- console.log("\uD83D\uDCCB Breakdown: ".concat(results.map(function (r) { return "R$ ".concat(r.total.toFixed(2)); }).join(' + '), "\n"));
1570
1553
  return results;
1571
1554
  };
1572
1555
 
@@ -8023,20 +8006,20 @@ var renderChargedValue = function (value, cte, feeName) {
8023
8006
  console.log('🔍 ICMS rateio habilitado:', isIcmsApportionmentEnabled);
8024
8007
  console.log('🔍 feeName contém ICMS:', feeName === null || feeName === void 0 ? void 0 : feeName.toUpperCase().includes('ICMS'));
8025
8008
  // Se for ICMS e o rateio estiver habilitado, calcular e mostrar o rateio
8026
- if (isIcmsApportionmentEnabled && (feeName === null || feeName === void 0 ? void 0 : feeName.toUpperCase().includes('ICMS'))) {
8009
+ if (isIcmsApportionmentEnabled) {
8027
8010
  console.log('✅ Aplicando rateio de ICMS');
8028
- // Obter a alíquota de ICMS do CTE (icmsIncidence vem em decimal, ex: 0.12 para 12%)
8029
- var icmsRate = cte.icmsIncidence ? Number(cte.icmsIncidence) : 0.12; // Default 12%
8030
- console.log(' - icmsRate:', icmsRate);
8031
- // Calcular o ICMS baseado no valor cobrado
8032
- // A função calculateIcms espera um array de valores e a alíquota
8033
- var icmsResult = calculateIcms([numericValue], icmsRate);
8034
- console.log(' - icmsResult.total:', icmsResult.total);
8035
- // Valor cobrado menos o ICMS calculado
8036
- var valueAfterIcms = numericValue - icmsResult.total;
8011
+ // Obter a alíquota de ICMS do CTE (icmsIncidence vem como número, ex: 7 para 7%)
8012
+ var icmsIncidence = cte.icmsIncidence ? Number(cte.icmsIncidence) : 12; // Default 12%
8013
+ console.log(' - icmsIncidence:', icmsIncidence);
8014
+ // Calcular: valor * (100 - icmsIncidence) / 100
8015
+ // Exemplo: 5,42 * (100 - 7) / 100 = 5,42 * 0,93 = 5,04
8016
+ var multiplier = (100 - icmsIncidence) / 100;
8017
+ var valueAfterIcms = numericValue * multiplier;
8018
+ console.log(' - multiplier:', multiplier);
8019
+ console.log(' - valueAfterIcms:', valueAfterIcms);
8037
8020
  var formattedValueAfterIcms = convertNumberToCurrency(valueAfterIcms, 'pt-br');
8038
- var formattedIcms = convertNumberToCurrency(icmsResult.total, 'pt-br');
8039
- var result = "".concat(formattedValue, " - ").concat(formattedIcms, " = ").concat(formattedValueAfterIcms, " (rateado)");
8021
+ var percentageToShow = (100 - icmsIncidence);
8022
+ var result = "".concat(formattedValue, " x ").concat(percentageToShow, "% = ").concat(formattedValueAfterIcms);
8040
8023
  console.log(' - resultado:', result);
8041
8024
  return result;
8042
8025
  }
Binary file