b2m-utils 0.0.283 → 0.0.285

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
@@ -592,11 +592,6 @@ var calculateFee = function (ratecardLaneFee, cte, allFees, debug, allFeesForCal
592
592
  }
593
593
  return 0;
594
594
  });
595
- console.log({
596
- filteredFees: filteredFees_1,
597
- filteredFeesResults: filteredFeesResults,
598
- totalFromAllFees: totalFromAllFees,
599
- });
600
595
  if (totalFromAllFees && (totalFromAllFees === null || totalFromAllFees === void 0 ? void 0 : totalFromAllFees.length) > 0) {
601
596
  var totalValueFromAllFees = totalFromAllFees.filter(function (i) { return !isNaN(+i) && +i > 0; }).reduce(function (previous, current) {
602
597
  if (!isNaN(+previous) && !isNaN(+current)) {
@@ -1281,7 +1276,7 @@ var getLaneFromRatecard = function (cte) {
1281
1276
  };
1282
1277
 
1283
1278
  var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1284
- var _a, _b, _c, _d;
1279
+ var _a, _b, _c;
1285
1280
  var results = [];
1286
1281
  // Separar fees por tipo: normais, TOTAL_PERCENTAGE e ICMS
1287
1282
  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; });
@@ -1292,19 +1287,12 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1292
1287
  f.feeId !== exports.FeeEnum.ICMS &&
1293
1288
  ((_b = f.fee) === null || _b === void 0 ? void 0 : _b.feeCalculationTypeId) !== exports.FeeCalculationTypeEnum.TOTAL_PERCENTAGE;
1294
1289
  });
1295
- console.log('DEBUG getCtesFeesResult - Separação de fees:', {
1296
- totalFees: feesToCalc.length,
1297
- icmsFee: icmsFee ? { feeId: icmsFee.feeId, 'fee.id': (_a = icmsFee.fee) === null || _a === void 0 ? void 0 : _a.id } : null,
1298
- totalPercentageCount: totalPercentageFees.length,
1299
- normalFeesCount: normalFees.length,
1300
- normalFeeIds: normalFees.map(function (f) { var _a; return ({ feeId: f.feeId, 'fee.id': (_a = f.fee) === null || _a === void 0 ? void 0 : _a.id }); })
1301
- });
1302
1290
  var _loop_1 = function (item) {
1303
1291
  var feeTotal = calculateFee(item, cte, feesToCalc, false, allFeesForCalc);
1304
1292
  if (feeTotal === null || feeTotal === void 0 ? void 0 : feeTotal.totalFee) {
1305
1293
  var totalFee = feeTotal.totalFee, resultFee = feeTotal.resultFee, feeValue = feeTotal.feeValue;
1306
1294
  var totalToPush = totalFee;
1307
- if ((_b = item.fee) === null || _b === void 0 ? void 0 : _b.parentId) {
1295
+ if ((_a = item.fee) === null || _a === void 0 ? void 0 : _a.parentId) {
1308
1296
  var fee_1 = item.fee;
1309
1297
  var siblingFees = feesToCalc === null || feesToCalc === void 0 ? void 0 : feesToCalc.filter(function (i) {
1310
1298
  var _a, _b, _c;
@@ -1315,8 +1303,8 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1315
1303
  });
1316
1304
  if (siblingFees && (siblingFees === null || siblingFees === void 0 ? void 0 : siblingFees.length) > 0) {
1317
1305
  var siblingFeesResults = [];
1318
- for (var _f = 0, siblingFees_1 = siblingFees; _f < siblingFees_1.length; _f++) {
1319
- var item_1 = siblingFees_1[_f];
1306
+ for (var _e = 0, siblingFees_1 = siblingFees; _e < siblingFees_1.length; _e++) {
1307
+ var item_1 = siblingFees_1[_e];
1320
1308
  var result = calculateFee(item_1, cte, feesToCalc, false, allFeesForCalc);
1321
1309
  siblingFeesResults.push(result);
1322
1310
  }
@@ -1327,7 +1315,7 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1327
1315
  return 0;
1328
1316
  });
1329
1317
  if ((siblingFeesResults === null || siblingFeesResults === void 0 ? void 0 : siblingFeesResults.length) > 0) {
1330
- if (((_c = siblingFeesResults[0]) === null || _c === void 0 ? void 0 : _c.totalFee) && ((_d = siblingFeesResults[0]) === null || _d === void 0 ? void 0 : _d.totalFee) > totalFee) {
1318
+ if (((_b = siblingFeesResults[0]) === null || _b === void 0 ? void 0 : _b.totalFee) && ((_c = siblingFeesResults[0]) === null || _c === void 0 ? void 0 : _c.totalFee) > totalFee) {
1331
1319
  totalToPush = 0;
1332
1320
  }
1333
1321
  }
@@ -1349,8 +1337,8 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1349
1337
  _loop_1(item);
1350
1338
  }
1351
1339
  // PASSADA 2: Calcular fees TOTAL_PERCENTAGE usando a soma das fees normais já calculadas
1352
- for (var _e = 0, totalPercentageFees_1 = totalPercentageFees; _e < totalPercentageFees_1.length; _e++) {
1353
- var item = totalPercentageFees_1[_e];
1340
+ for (var _d = 0, totalPercentageFees_1 = totalPercentageFees; _d < totalPercentageFees_1.length; _d++) {
1341
+ var item = totalPercentageFees_1[_d];
1354
1342
  // Calcular soma das fees normais (excluindo TOTAL_PERCENTAGE e ICMS)
1355
1343
  var totalWithoutPercentageFees = results
1356
1344
  .filter(function (r) { return r.total > 0; })
@@ -1375,12 +1363,6 @@ var getCtesFeesResult = function (feesToCalc, cte, allFeesForCalc) {
1375
1363
  var icmsRate = (cte.icmsIncidence !== undefined && cte.icmsIncidence !== null && !isNaN(+cte.icmsIncidence))
1376
1364
  ? +(cte.icmsIncidence) / 100
1377
1365
  : icmsFee.value || 0;
1378
- console.log('DEBUG ICMS getCtesFeesResult:', {
1379
- valuesForIcms: valuesForIcms,
1380
- icmsRate: icmsRate,
1381
- totalBeforeIcms: valuesForIcms.reduce(function (sum, val) { return sum + val; }, 0),
1382
- results: results.map(function (r) { return ({ feeId: r.feeId, total: r.total }); })
1383
- });
1384
1366
  // Usar calculateIcms diretamente
1385
1367
  var icmsCalculation = calculateIcms(valuesForIcms, icmsRate);
1386
1368
  if (icmsCalculation.isValid && !isNaN(+icmsCalculation.total)) {
@@ -7914,13 +7896,128 @@ var setFormattedDatesInObjects = function (objectFormat) { return __awaiter(void
7914
7896
  });
7915
7897
  }); };
7916
7898
 
7899
+ var TARIFF_MAPPING = {
7900
+ "Frete Rodo LTL Valor fixo": ["Frete", "Frete peso", "Frete Rodo", "Frete LTL", "Frete Rodo LTL"],
7901
+ "Pedagio cada 100kg / fração": ["Pedagio", "Pedágio", "Pedagio cada 100kg", "Pedágio cada 100kg", "Valor pedagio"],
7902
+ "ICMS Alíquota": ["ICMS", "ICMS Alíquota", "Imposto ICMS", "ICMS Imposto", "IMP REPASSADO"],
7903
+ "AdValorem % Valor NF": ["AdValorem", "Ad valorem", "Advalorem", "AdValorem NF", "Ad Valorem NF"],
7904
+ "GRIS % Valor NF": ["GRIS", "GRIS NF", "Seguro GRIS", "Seguro", "GRIS Seguro"],
7905
+ "Taxa de despacho": ["Despacho", "Taxa despacho", "Despacho aduaneiro", "Despache"],
7906
+ "Taxa de armazenagem": ["Armazenagem", "Armazenagem", "Estocagem", "Armazém"],
7907
+ "Taxa de coleta": ["Coleta", "Taxa coleta", "Coleta e entrega"],
7908
+ "Taxa de entrega": ["Entrega", "Taxa entrega", "Entrega urbana"],
7909
+ "Taxa de embarque": ["Embarque", "Taxa embarque", "Embarque/desembarque"],
7910
+ "TRT % Frete": ["TRT %", "TRT Percentual", "TRT percentual"],
7911
+ "TRT Min": ["TRT", "TRT Min", "TRT mínimo", "TRT minimo"],
7912
+ "TDE % Frete": ["TDE %", "TDE Percentual", "TDE percentual"],
7913
+ "TDE Min": ["TDE", "TDE Min", "TDE mínimo", "TDE minimo"],
7914
+ "Frete % Valor NF": ["Valor frete", "Valor Frete", "Frete valor", "Frete Valor", "Valor do frete"],
7915
+ "Taxa por conhecimento Valor fixo": ["Taxa por conhecimento", "Despacho", "DESPACHO"],
7916
+ "TSO % Valor NF": ["POS", "TSO"],
7917
+ "TSO Min": ["POS", "TSO", "TSO mínimo", "TSO minimo"],
7918
+ "Suframa por CTE/CRT": ["Suframa", "Suframa por CTE"],
7919
+ };
7920
+ var parseAliases = function (aliasesString) {
7921
+ return aliasesString
7922
+ .split(';')
7923
+ .map(function (alias) { return alias.trim(); })
7924
+ .filter(function (alias) { return alias.length > 0; });
7925
+ };
7926
+ var buildDynamicMapping = function (ratecardAliases) {
7927
+ var mapping = {};
7928
+ for (var _i = 0, ratecardAliases_1 = ratecardAliases; _i < ratecardAliases_1.length; _i++) {
7929
+ var alias = ratecardAliases_1[_i];
7930
+ mapping[alias.feeName] = parseAliases(alias.aliases);
7931
+ }
7932
+ return mapping;
7933
+ };
7934
+ var findAuditedMatch = function (chargedFee, auditedFees, dynamicMapping) {
7935
+ var directMatch = auditedFees.find(function (audited) { var _a, _b; return ((_a = audited.feeName) === null || _a === void 0 ? void 0 : _a.toLowerCase().trim()) === ((_b = chargedFee.name) === null || _b === void 0 ? void 0 : _b.toLowerCase().trim()); });
7936
+ if (directMatch)
7937
+ return directMatch;
7938
+ for (var _i = 0, auditedFees_1 = auditedFees; _i < auditedFees_1.length; _i++) {
7939
+ var auditedFee = auditedFees_1[_i];
7940
+ var possibleChargedNames = (dynamicMapping === null || dynamicMapping === void 0 ? void 0 : dynamicMapping[auditedFee.feeName]) ||
7941
+ TARIFF_MAPPING[auditedFee.feeName];
7942
+ if (possibleChargedNames) {
7943
+ var isMatch = possibleChargedNames.some(function (possibleName) { var _a; return ((_a = chargedFee.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().trim()) === possibleName.toLowerCase().trim(); });
7944
+ if (isMatch) {
7945
+ return auditedFee;
7946
+ }
7947
+ }
7948
+ }
7949
+ return null;
7950
+ };
7951
+ var matchAllTariffs = function (chargedFees, auditedFees, dynamicMapping) {
7952
+ var results = [];
7953
+ var usedCharged = new Set();
7954
+ var usedAudited = new Set();
7955
+ chargedFees.forEach(function (charged) {
7956
+ var _a, _b;
7957
+ var auditedMatch = findAuditedMatch(charged, auditedFees, dynamicMapping);
7958
+ if (auditedMatch) {
7959
+ var difference = +charged.value - +((_a = auditedMatch.approvedValue) !== null && _a !== void 0 ? _a : auditedMatch.total);
7960
+ results.push({
7961
+ chargedName: charged.name,
7962
+ chargedValue: charged.value,
7963
+ auditedName: auditedMatch.feeName,
7964
+ auditedValue: (_b = auditedMatch.approvedValue) !== null && _b !== void 0 ? _b : auditedMatch.total,
7965
+ difference: Math.round(difference * 100) / 100,
7966
+ status: 'MATCHED'
7967
+ });
7968
+ usedCharged.add(charged.name);
7969
+ usedAudited.add(auditedMatch.feeName);
7970
+ }
7971
+ });
7972
+ chargedFees.filter(function (charged) { return !usedCharged.has(charged.name); })
7973
+ .forEach(function (charged) {
7974
+ results.push({
7975
+ chargedName: charged.name,
7976
+ chargedValue: charged.value,
7977
+ auditedName: 'NÃO AUDITADO',
7978
+ auditedValue: 0,
7979
+ difference: charged.value,
7980
+ status: 'CHARGED_ONLY'
7981
+ });
7982
+ });
7983
+ auditedFees.filter(function (audited) { return !usedAudited.has(audited.feeName); })
7984
+ .forEach(function (audited) {
7985
+ var _a, _b;
7986
+ results.push({
7987
+ chargedName: 'NÃO COBRADO',
7988
+ chargedValue: 0,
7989
+ auditedName: audited.feeName,
7990
+ auditedValue: (_a = audited.approvedValue) !== null && _a !== void 0 ? _a : audited.total,
7991
+ difference: -((_b = audited.approvedValue) !== null && _b !== void 0 ? _b : audited.total),
7992
+ status: 'AUDITED_ONLY'
7993
+ });
7994
+ });
7995
+ return results;
7996
+ };
7997
+ var addTariffMapping = function (auditedTariffName, chargedTariffNames) {
7998
+ TARIFF_MAPPING[auditedTariffName] = chargedTariffNames;
7999
+ };
8000
+ var getTariffVariations = function (auditedTariffName) {
8001
+ return TARIFF_MAPPING[auditedTariffName] || [auditedTariffName];
8002
+ };
8003
+ var isTariffMatch = function (chargedName, auditedTariffName) {
8004
+ var variations = getTariffVariations(auditedTariffName);
8005
+ return variations.some(function (variation) {
8006
+ return variation.toLowerCase().trim() === chargedName.toLowerCase().trim();
8007
+ });
8008
+ };
8009
+
7917
8010
  exports.EXPORT_CTE_COLUMN_LABELS = EXPORT_CTE_COLUMN_LABELS;
7918
8011
  exports.EXPORT_CTE_TYPE_LABELS = EXPORT_CTE_TYPE_LABELS;
8012
+ exports.TARIFF_MAPPING = TARIFF_MAPPING;
8013
+ exports.addTariffMapping = addTariffMapping;
7919
8014
  exports.applyRedeliveryMultiplier = applyRedeliveryMultiplier;
8015
+ exports.buildDynamicMapping = buildDynamicMapping;
7920
8016
  exports.calculateFee = calculateFee;
7921
8017
  exports.calculateIcms = calculateIcms;
7922
8018
  exports.convertNumberToCurrency = convertNumberToCurrency;
7923
8019
  exports.filterSiblingFees = filterSiblingFees;
8020
+ exports.findAuditedMatch = findAuditedMatch;
7924
8021
  exports.formatDateString = formatDateString;
7925
8022
  exports.getAllFeesForCalculation = getAllFeesForCalculation;
7926
8023
  exports.getAuditTotalFromCte = getAuditTotalFromCte;
@@ -7941,7 +8038,11 @@ exports.getNormalizedCityName = getNormalizedCityName;
7941
8038
  exports.getRatecardFromCte = getRatecardFromCte;
7942
8039
  exports.getRouteDeliveryTimeFromFreight = getRouteDeliveryTimeFromFreight;
7943
8040
  exports.getRouteOnTimeFromFreight = getRouteOnTimeFromFreight;
8041
+ exports.getTariffVariations = getTariffVariations;
8042
+ exports.isTariffMatch = isTariffMatch;
8043
+ exports.matchAllTariffs = matchAllTariffs;
7944
8044
  exports.normalizeString = normalizeString;
8045
+ exports.parseAliases = parseAliases;
7945
8046
  exports.setFormattedDatesInObjects = setFormattedDatesInObjects;
7946
8047
  exports.verifyConditionalFee = verifyConditionalFee;
7947
8048
  exports.verifyDefaultFees = verifyDefaultFees;
package/build/index.js.gz CHANGED
Binary file