b2m-utils 0.0.227 → 0.0.228

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.
@@ -536,8 +536,23 @@ var calculateFee = function (ratecardLaneFee, cte, allFees, debug, allFeesForCal
536
536
  currency: 'BRL',
537
537
  });
538
538
  var result = "".concat(redeliveryInfo ? "".concat(valueCurrency).concat(redeliveryInfo, " = ").concat(resultCurrency) : valueCurrency);
539
+ // Se for FTL com distância e tiver intervalo de KM, adicionar informação na descrição
540
+ if ((cte === null || cte === void 0 ? void 0 : cte.ratecardModalId) === RatecardModalEnum.ROAD_DOMESTIC_FTL && (cte === null || cte === void 0 ? void 0 : cte.distance) && (ratecardLaneFee.minKm || ratecardLaneFee.maxKm)) {
541
+ var kmRange = ratecardLaneFee.maxKm
542
+ ? "".concat(ratecardLaneFee.minKm || 0, "-").concat(ratecardLaneFee.maxKm, " km")
543
+ : "".concat(ratecardLaneFee.minKm, "+ km");
544
+ result = "".concat(cte.distance, " km (").concat(kmRange, ") = ").concat(redeliveryInfo ? "".concat(valueCurrency).concat(redeliveryInfo, " = ").concat(resultCurrency) : valueCurrency);
545
+ }
546
+ // Se houver taxedWeight e tiver intervalo de peso, adicionar informação na descrição
547
+ else if ((cte === null || cte === void 0 ? void 0 : cte.taxedWeight) && (ratecardLaneFee.minWeight || ratecardLaneFee.maxWeight)) {
548
+ var weightRange = ratecardLaneFee.maxWeight
549
+ ? "".concat(ratecardLaneFee.minWeight || 0, "-").concat(ratecardLaneFee.maxWeight, " kg")
550
+ : "".concat(ratecardLaneFee.minWeight, "+ kg");
551
+ result = "".concat(cte.taxedWeight, " kg (").concat(weightRange, ") = ").concat(redeliveryInfo ? "".concat(valueCurrency).concat(redeliveryInfo, " = ").concat(resultCurrency) : valueCurrency);
552
+ }
539
553
  totalFee = total;
540
554
  resultFee = result;
555
+ // Lógica de intervalo de peso
541
556
  if ((cte === null || cte === void 0 ? void 0 : cte.taxedWeight) && !ratecardLaneFee.maxWeight && ratecardLaneFee.minWeight && Math.ceil(+cte.taxedWeight) >= +ratecardLaneFee.minWeight) {
542
557
  // Não tem maxWeight - é o último intervalo
543
558
  // Encontrar todas as taxas do mesmo tipo que têm maxWeight
@@ -577,37 +592,77 @@ var calculateFee = function (ratecardLaneFee, cte, allFees, debug, allFeesForCal
577
592
  resultFee = result_4;
578
593
  }
579
594
  }
595
+ // Lógica de intervalo de KM para FTL
596
+ else if ((cte === null || cte === void 0 ? void 0 : cte.ratecardModalId) === RatecardModalEnum.ROAD_DOMESTIC_FTL && (cte === null || cte === void 0 ? void 0 : cte.distance) && !ratecardLaneFee.maxKm && ratecardLaneFee.minKm && +cte.distance >= +ratecardLaneFee.minKm) {
597
+ // Não tem maxKm - é o último intervalo
598
+ // Encontrar todas as taxas do mesmo tipo que têm maxKm
599
+ var feesWithMaxKm = allFeesForCalc === null || allFeesForCalc === void 0 ? void 0 : allFeesForCalc.filter(function (fee) {
600
+ var _a, _b;
601
+ return ((_a = fee.fee) === null || _a === void 0 ? void 0 : _a.id) === ((_b = ratecardLaneFee.fee) === null || _b === void 0 ? void 0 : _b.id) &&
602
+ fee.maxKm &&
603
+ (cte === null || cte === void 0 ? void 0 : cte.distance) &&
604
+ +fee.maxKm < +cte.distance;
605
+ });
606
+ // Ordenar pelo maxKm do maior para o menor
607
+ feesWithMaxKm === null || feesWithMaxKm === void 0 ? void 0 : feesWithMaxKm.sort(function (a, b) { return b.maxKm - a.maxKm; });
608
+ // Pegar o primeiro (maior maxKm)
609
+ var highestIntervalFee = feesWithMaxKm === null || feesWithMaxKm === void 0 ? void 0 : feesWithMaxKm[0];
610
+ if (highestIntervalFee) {
611
+ // Calcula baseado na taxa do intervalo mais alto que tem maxKm
612
+ var total_5 = +highestIntervalFee.value;
613
+ // Calcular diferença de distância
614
+ var kmDifference = Number((((cte === null || cte === void 0 ? void 0 : cte.distance) || 0) - (highestIntervalFee.maxKm || 0)).toFixed(2));
615
+ // Calcular valor adicional pela diferença de km
616
+ var additionalValue = kmDifference * +ratecardLaneFee.value;
617
+ // Somar ao total
618
+ total_5 += additionalValue;
619
+ // Aplicar multiplicador de redelivery ao valor final
620
+ var _k = applyRedeliveryMultiplier(total_5, cte), adjustedTotal_5 = _k.adjustedTotal, redeliveryInfo_5 = _k.redeliveryInfo;
621
+ total_5 = adjustedTotal_5;
622
+ var valueCurrency_3 = (+highestIntervalFee.value).toLocaleString('pt-br', {
623
+ style: 'currency',
624
+ currency: 'BRL',
625
+ });
626
+ var resultCurrency_5 = (+total_5).toLocaleString('pt-br', {
627
+ style: 'currency',
628
+ currency: 'BRL',
629
+ });
630
+ var result_5 = "".concat(cte.distance, " km = ").concat(valueCurrency_3, " + ").concat(kmDifference, " km x ").concat(convertNumberToCurrency(+ratecardLaneFee.value, 'pt-br')).concat(redeliveryInfo_5, " = ").concat(resultCurrency_5);
631
+ totalFee = total_5;
632
+ resultFee = result_5;
633
+ }
634
+ }
580
635
  break;
581
636
  case FeeCalculationTypeEnum.COMMODITY_VALUE:
582
637
  if (value) {
583
638
  var commodityValue = (_a = cte === null || cte === void 0 ? void 0 : cte.commodityValue) !== null && _a !== void 0 ? _a : 0;
584
- var total_5 = +commodityValue * (+value / 100);
585
- var _k = applyRedeliveryMultiplier(total_5, cte), adjustedTotal_5 = _k.adjustedTotal, redeliveryInfo_5 = _k.redeliveryInfo;
586
- total_5 = adjustedTotal_5;
587
- var resultCurrency_5 = (+total_5).toLocaleString('pt-br', {
639
+ var total_6 = +commodityValue * (+value / 100);
640
+ var _l = applyRedeliveryMultiplier(total_6, cte), adjustedTotal_6 = _l.adjustedTotal, redeliveryInfo_6 = _l.redeliveryInfo;
641
+ total_6 = adjustedTotal_6;
642
+ var resultCurrency_6 = (+total_6).toLocaleString('pt-br', {
588
643
  style: 'currency',
589
644
  currency: 'BRL',
590
645
  });
591
- var result_5 = "".concat(convertNumberToCurrency(+commodityValue, 'pt-br'), " x ").concat(value, "%").concat(redeliveryInfo_5, " = ").concat(resultCurrency_5);
592
- totalFee = total_5;
593
- resultFee = result_5;
646
+ var result_6 = "".concat(convertNumberToCurrency(+commodityValue, 'pt-br'), " x ").concat(value, "%").concat(redeliveryInfo_6, " = ").concat(resultCurrency_6);
647
+ totalFee = total_6;
648
+ resultFee = result_6;
594
649
  }
595
650
  break;
596
651
  case FeeCalculationTypeEnum.TAXED_WEIGHT:
597
652
  if (value) {
598
653
  var taxedWeight = (_b = cte === null || cte === void 0 ? void 0 : cte.taxedWeight) !== null && _b !== void 0 ? _b : 0;
599
- var total_6 = +taxedWeight * +value;
600
- var _l = applyRedeliveryMultiplier(total_6, cte), adjustedTotal_6 = _l.adjustedTotal, redeliveryInfo_6 = _l.redeliveryInfo;
601
- total_6 = adjustedTotal_6;
602
- var resultCurrency_6 = (+total_6).toLocaleString('pt-br', {
654
+ var total_7 = +taxedWeight * +value;
655
+ var _m = applyRedeliveryMultiplier(total_7, cte), adjustedTotal_7 = _m.adjustedTotal, redeliveryInfo_7 = _m.redeliveryInfo;
656
+ total_7 = adjustedTotal_7;
657
+ var resultCurrency_7 = (+total_7).toLocaleString('pt-br', {
603
658
  style: 'currency',
604
659
  currency: 'BRL',
605
660
  });
606
- var result_6 = "".concat(taxedWeight, " kg x ").concat(convertNumberToCurrency(+value, 'pt-br', {
661
+ var result_7 = "".concat(taxedWeight, " kg x ").concat(convertNumberToCurrency(+value, 'pt-br', {
607
662
  minimumFractionDigits: 4,
608
- })).concat(redeliveryInfo_6, " = ").concat(resultCurrency_6);
609
- totalFee = total_6;
610
- resultFee = result_6;
663
+ })).concat(redeliveryInfo_7, " = ").concat(resultCurrency_7);
664
+ totalFee = total_7;
665
+ resultFee = result_7;
611
666
  }
612
667
  break;
613
668
  /*if (ratecardLaneFee.minWeight && cte?.taxedWeight) {
Binary file