sigo-package 1.2.36 → 1.2.38

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/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as sigo_entities from 'sigo-entities';
2
- import { ManoObraENTITY, ReservaENTITY, ItemDetalleLogisticaDTO, HomePassDTO, FlujoDocDTO, NodoDocDTO, DocumentacionPEXENTITY, ManoObraGlobalENTITY, PrecioEspecialidadENTITY, ObraChile9512ENTITY, ValorizacionManoObraDTO, ValorizacionDTO, PrecioContratistaMOAL02ENTITY, StockPersonalENTITY, StockAlmacenENTITY, TrabajoENTITY, ActividadesDTO, PreciosVigentesDTO, ContratoOTENTITY } from 'sigo-entities';
2
+ import { ManoObraENTITY, ReservaENTITY, ItemDetalleLogisticaDTO, HomePassDTO, FlujoDocDTO, NodoDocDTO, DocumentacionPEXENTITY, ManoObraGlobalENTITY, PrecioEspecialidadENTITY, ObraChile9512ENTITY, ValorizacionManoObraDTO, ValorizacionDTO, PrecioContratistaMOAL02ENTITY, StockPersonalENTITY, StockAlmacenENTITY, ConsumoMaterialAlemaniaENTITY, TrabajoENTITY, ActividadesDTO, PreciosVigentesDTO, ContratoOTENTITY } from 'sigo-entities';
3
3
 
4
4
  interface IenvSIGO$1 {
5
5
  SISTEMAS_VALORIZACION_MANO_OBRA: string[];
@@ -335,6 +335,8 @@ declare function buildDataMaterialsRule(Materiales: Map<string, IMOAndMaterialsR
335
335
 
336
336
  declare function consumirStockPersonal(codDelegacion: string, codigoMaterial: string): boolean;
337
337
 
338
+ declare function checkMaterialAvailability(materials: IMateriales[], dataMaterialesUtilizados: IMateriales[], dataStockPersonal: StockPersonalENTITY[], dataStockAlmacen: StockAlmacenENTITY[], dataConsumoMaterial: ConsumoMaterialAlemaniaENTITY[], Controller: any): void;
339
+
338
340
  declare const CalcularResumenLiquidaciones: Funcion$1;
339
341
  interface Funcion$1 {
340
342
  (trabajo: TrabajoType, trabajos: any[]): ResumenLiquidacionesTypeChile;
@@ -527,4 +529,4 @@ declare function getContainerName(dirname: string): string;
527
529
 
528
530
  declare function buildTenantCollectionName(countryName: string, delegation: string, collection: string): string;
529
531
 
530
- export { ActualizarDataManoObra, ActualizarDataReserva, ActualizarDataResumenLiquidaciones, ActualizarDataResumenValorizacionesAlemania, ActualizarDataTrabajos, BuscarZonaContratista, CalcularResumenHPMOLiquidado, CalcularResumenLiquidaciones, CalcularResumenValorizacionesAlemania, CodigosMaterialDuctosAL02, CodigosMaterialDuctosAL04, CodigosMaterialSoplado, CodsMapeoMOMaterial, CodsMapeoMOMaterialNVT01, CodsMapeoMOMaterialSopladoClientes, CodsMapeoMOMaterialSopladoTroncal, CodsMapeoMO_Material_Arquertas, CompararFechas, CurrencyFormat, DocumentacionReplanteo, EstadoEspecialidad9612, GemeindeChangeNomenclatura, GetCodigoFechaActual, type IDocumentacion, type IMOAndMaterialsRules, type IMateriales, MOCantidadNVT01, MOHijasAL04, MOHijasDEPTH, MapeoEspecialidades9612, MapeoMOBOMAL04, MapeoMatBOMAL04, type MatRetiradosType, type MatStockAlmacenType, type MatStockPersonalType$1 as MatStockPersonalType, type MatUtilizadosType$1 as MatUtilizadosType, type MoUoType$1 as MoUoType, ModelDataFlujosDocumentacionReplanteo, ObtenerMONoReservada, ObtenerPrecioContratistaVigente, ObtenerZonaAsignada, type ResumenLiquidacionesType, type ResumenLiquidacionesTypeChile, SEGMENT_TY, type TARGET, UpdateNodosDocDP, buildDataMaterialsRule, buildTenantCollectionName, checkAndBuildMaterialsFromStock, codBalizaAL04, codClientes, codMOClientesAL02, codMOClientesAL02Asfaltado, codMOClientesAL02OC, codMOClientesAL02Soplado, codMOClientes_ReglaLiquidacion1, codMODROPAL04, codMODROPAL04OC, codMODROPAL04Soplado, codMOFTTFAL04, codMONoClientesAL02, codMONoClientesAL02Asfaltado, codMONoClientesAL02OC, codMONoClientesAL02Soplado, codMONoClientes_ReglaLiquidacion1, codMOOcultosAL04, codMOPublico, codMOTroncalAL02, codMOTroncalAL02Asfaltado, codMOTroncalAL02OC, codMOTroncalAL02Soplado, codMOTroncalAL04, codMOTroncalAL04Asfaltado, codMOTroncalAL04OC, codMOTroncalAL04Soplado, codMOTroncal_ReglaLiquidacion1, codNoCliente, codSopladoRD, codigosMOT1_F2, codigosMaterialDuctos, codigosMaterialUGG, consumirStockPersonal, convertDates, dataFlujosHomePass, esCadenaFechaISOValida, esObjetoFecha, generateUniqueNumber, generateUniqueNumberArray, getChannelName, getContainerName, getDateInTimeZone, getKeyRedisSortedSet, getModelDataAdicional, getNextID_Valorizacion, getQueueName, getQueueNameSaveOneNotification, isValidDate, isValidPartialEntity, logTiempoProceso, mapaEstadoObraFaseAL02, mapaMOMaterialAL02, mapaMOMaterialAL04, mapaReglaSopladoClientes, mapaReglaSopladoTroncal, obtenerDocumentacionClientes, obtenerDocumentacionNoClientes, obtenerPrecioManoObraAL02, obtenerPrecioManoObraAL04, obtenerTipoYCodigoMO, paisMap, searchCurrentContractorSpecialtyPrice, setContext, updatePriceContractorMOAL02, updatePriceContractorMOAL04, updatePriceMOAL02, updatePriceMOAL04, validateNoLookup };
532
+ export { ActualizarDataManoObra, ActualizarDataReserva, ActualizarDataResumenLiquidaciones, ActualizarDataResumenValorizacionesAlemania, ActualizarDataTrabajos, BuscarZonaContratista, CalcularResumenHPMOLiquidado, CalcularResumenLiquidaciones, CalcularResumenValorizacionesAlemania, CodigosMaterialDuctosAL02, CodigosMaterialDuctosAL04, CodigosMaterialSoplado, CodsMapeoMOMaterial, CodsMapeoMOMaterialNVT01, CodsMapeoMOMaterialSopladoClientes, CodsMapeoMOMaterialSopladoTroncal, CodsMapeoMO_Material_Arquertas, CompararFechas, CurrencyFormat, DocumentacionReplanteo, EstadoEspecialidad9612, GemeindeChangeNomenclatura, GetCodigoFechaActual, type IDocumentacion, type IMOAndMaterialsRules, type IMateriales, MOCantidadNVT01, MOHijasAL04, MOHijasDEPTH, MapeoEspecialidades9612, MapeoMOBOMAL04, MapeoMatBOMAL04, type MatRetiradosType, type MatStockAlmacenType, type MatStockPersonalType$1 as MatStockPersonalType, type MatUtilizadosType$1 as MatUtilizadosType, type MoUoType$1 as MoUoType, ModelDataFlujosDocumentacionReplanteo, ObtenerMONoReservada, ObtenerPrecioContratistaVigente, ObtenerZonaAsignada, type ResumenLiquidacionesType, type ResumenLiquidacionesTypeChile, SEGMENT_TY, type TARGET, UpdateNodosDocDP, buildDataMaterialsRule, buildTenantCollectionName, checkAndBuildMaterialsFromStock, checkMaterialAvailability, codBalizaAL04, codClientes, codMOClientesAL02, codMOClientesAL02Asfaltado, codMOClientesAL02OC, codMOClientesAL02Soplado, codMOClientes_ReglaLiquidacion1, codMODROPAL04, codMODROPAL04OC, codMODROPAL04Soplado, codMOFTTFAL04, codMONoClientesAL02, codMONoClientesAL02Asfaltado, codMONoClientesAL02OC, codMONoClientesAL02Soplado, codMONoClientes_ReglaLiquidacion1, codMOOcultosAL04, codMOPublico, codMOTroncalAL02, codMOTroncalAL02Asfaltado, codMOTroncalAL02OC, codMOTroncalAL02Soplado, codMOTroncalAL04, codMOTroncalAL04Asfaltado, codMOTroncalAL04OC, codMOTroncalAL04Soplado, codMOTroncal_ReglaLiquidacion1, codNoCliente, codSopladoRD, codigosMOT1_F2, codigosMaterialDuctos, codigosMaterialUGG, consumirStockPersonal, convertDates, dataFlujosHomePass, esCadenaFechaISOValida, esObjetoFecha, generateUniqueNumber, generateUniqueNumberArray, getChannelName, getContainerName, getDateInTimeZone, getKeyRedisSortedSet, getModelDataAdicional, getNextID_Valorizacion, getQueueName, getQueueNameSaveOneNotification, isValidDate, isValidPartialEntity, logTiempoProceso, mapaEstadoObraFaseAL02, mapaMOMaterialAL02, mapaMOMaterialAL04, mapaReglaSopladoClientes, mapaReglaSopladoTroncal, obtenerDocumentacionClientes, obtenerDocumentacionNoClientes, obtenerPrecioManoObraAL02, obtenerPrecioManoObraAL04, obtenerTipoYCodigoMO, paisMap, searchCurrentContractorSpecialtyPrice, setContext, updatePriceContractorMOAL02, updatePriceContractorMOAL04, updatePriceMOAL02, updatePriceMOAL04, validateNoLookup };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as sigo_entities from 'sigo-entities';
2
- import { ManoObraENTITY, ReservaENTITY, ItemDetalleLogisticaDTO, HomePassDTO, FlujoDocDTO, NodoDocDTO, DocumentacionPEXENTITY, ManoObraGlobalENTITY, PrecioEspecialidadENTITY, ObraChile9512ENTITY, ValorizacionManoObraDTO, ValorizacionDTO, PrecioContratistaMOAL02ENTITY, StockPersonalENTITY, StockAlmacenENTITY, TrabajoENTITY, ActividadesDTO, PreciosVigentesDTO, ContratoOTENTITY } from 'sigo-entities';
2
+ import { ManoObraENTITY, ReservaENTITY, ItemDetalleLogisticaDTO, HomePassDTO, FlujoDocDTO, NodoDocDTO, DocumentacionPEXENTITY, ManoObraGlobalENTITY, PrecioEspecialidadENTITY, ObraChile9512ENTITY, ValorizacionManoObraDTO, ValorizacionDTO, PrecioContratistaMOAL02ENTITY, StockPersonalENTITY, StockAlmacenENTITY, ConsumoMaterialAlemaniaENTITY, TrabajoENTITY, ActividadesDTO, PreciosVigentesDTO, ContratoOTENTITY } from 'sigo-entities';
3
3
 
4
4
  interface IenvSIGO$1 {
5
5
  SISTEMAS_VALORIZACION_MANO_OBRA: string[];
@@ -335,6 +335,8 @@ declare function buildDataMaterialsRule(Materiales: Map<string, IMOAndMaterialsR
335
335
 
336
336
  declare function consumirStockPersonal(codDelegacion: string, codigoMaterial: string): boolean;
337
337
 
338
+ declare function checkMaterialAvailability(materials: IMateriales[], dataMaterialesUtilizados: IMateriales[], dataStockPersonal: StockPersonalENTITY[], dataStockAlmacen: StockAlmacenENTITY[], dataConsumoMaterial: ConsumoMaterialAlemaniaENTITY[], Controller: any): void;
339
+
338
340
  declare const CalcularResumenLiquidaciones: Funcion$1;
339
341
  interface Funcion$1 {
340
342
  (trabajo: TrabajoType, trabajos: any[]): ResumenLiquidacionesTypeChile;
@@ -527,4 +529,4 @@ declare function getContainerName(dirname: string): string;
527
529
 
528
530
  declare function buildTenantCollectionName(countryName: string, delegation: string, collection: string): string;
529
531
 
530
- export { ActualizarDataManoObra, ActualizarDataReserva, ActualizarDataResumenLiquidaciones, ActualizarDataResumenValorizacionesAlemania, ActualizarDataTrabajos, BuscarZonaContratista, CalcularResumenHPMOLiquidado, CalcularResumenLiquidaciones, CalcularResumenValorizacionesAlemania, CodigosMaterialDuctosAL02, CodigosMaterialDuctosAL04, CodigosMaterialSoplado, CodsMapeoMOMaterial, CodsMapeoMOMaterialNVT01, CodsMapeoMOMaterialSopladoClientes, CodsMapeoMOMaterialSopladoTroncal, CodsMapeoMO_Material_Arquertas, CompararFechas, CurrencyFormat, DocumentacionReplanteo, EstadoEspecialidad9612, GemeindeChangeNomenclatura, GetCodigoFechaActual, type IDocumentacion, type IMOAndMaterialsRules, type IMateriales, MOCantidadNVT01, MOHijasAL04, MOHijasDEPTH, MapeoEspecialidades9612, MapeoMOBOMAL04, MapeoMatBOMAL04, type MatRetiradosType, type MatStockAlmacenType, type MatStockPersonalType$1 as MatStockPersonalType, type MatUtilizadosType$1 as MatUtilizadosType, type MoUoType$1 as MoUoType, ModelDataFlujosDocumentacionReplanteo, ObtenerMONoReservada, ObtenerPrecioContratistaVigente, ObtenerZonaAsignada, type ResumenLiquidacionesType, type ResumenLiquidacionesTypeChile, SEGMENT_TY, type TARGET, UpdateNodosDocDP, buildDataMaterialsRule, buildTenantCollectionName, checkAndBuildMaterialsFromStock, codBalizaAL04, codClientes, codMOClientesAL02, codMOClientesAL02Asfaltado, codMOClientesAL02OC, codMOClientesAL02Soplado, codMOClientes_ReglaLiquidacion1, codMODROPAL04, codMODROPAL04OC, codMODROPAL04Soplado, codMOFTTFAL04, codMONoClientesAL02, codMONoClientesAL02Asfaltado, codMONoClientesAL02OC, codMONoClientesAL02Soplado, codMONoClientes_ReglaLiquidacion1, codMOOcultosAL04, codMOPublico, codMOTroncalAL02, codMOTroncalAL02Asfaltado, codMOTroncalAL02OC, codMOTroncalAL02Soplado, codMOTroncalAL04, codMOTroncalAL04Asfaltado, codMOTroncalAL04OC, codMOTroncalAL04Soplado, codMOTroncal_ReglaLiquidacion1, codNoCliente, codSopladoRD, codigosMOT1_F2, codigosMaterialDuctos, codigosMaterialUGG, consumirStockPersonal, convertDates, dataFlujosHomePass, esCadenaFechaISOValida, esObjetoFecha, generateUniqueNumber, generateUniqueNumberArray, getChannelName, getContainerName, getDateInTimeZone, getKeyRedisSortedSet, getModelDataAdicional, getNextID_Valorizacion, getQueueName, getQueueNameSaveOneNotification, isValidDate, isValidPartialEntity, logTiempoProceso, mapaEstadoObraFaseAL02, mapaMOMaterialAL02, mapaMOMaterialAL04, mapaReglaSopladoClientes, mapaReglaSopladoTroncal, obtenerDocumentacionClientes, obtenerDocumentacionNoClientes, obtenerPrecioManoObraAL02, obtenerPrecioManoObraAL04, obtenerTipoYCodigoMO, paisMap, searchCurrentContractorSpecialtyPrice, setContext, updatePriceContractorMOAL02, updatePriceContractorMOAL04, updatePriceMOAL02, updatePriceMOAL04, validateNoLookup };
532
+ export { ActualizarDataManoObra, ActualizarDataReserva, ActualizarDataResumenLiquidaciones, ActualizarDataResumenValorizacionesAlemania, ActualizarDataTrabajos, BuscarZonaContratista, CalcularResumenHPMOLiquidado, CalcularResumenLiquidaciones, CalcularResumenValorizacionesAlemania, CodigosMaterialDuctosAL02, CodigosMaterialDuctosAL04, CodigosMaterialSoplado, CodsMapeoMOMaterial, CodsMapeoMOMaterialNVT01, CodsMapeoMOMaterialSopladoClientes, CodsMapeoMOMaterialSopladoTroncal, CodsMapeoMO_Material_Arquertas, CompararFechas, CurrencyFormat, DocumentacionReplanteo, EstadoEspecialidad9612, GemeindeChangeNomenclatura, GetCodigoFechaActual, type IDocumentacion, type IMOAndMaterialsRules, type IMateriales, MOCantidadNVT01, MOHijasAL04, MOHijasDEPTH, MapeoEspecialidades9612, MapeoMOBOMAL04, MapeoMatBOMAL04, type MatRetiradosType, type MatStockAlmacenType, type MatStockPersonalType$1 as MatStockPersonalType, type MatUtilizadosType$1 as MatUtilizadosType, type MoUoType$1 as MoUoType, ModelDataFlujosDocumentacionReplanteo, ObtenerMONoReservada, ObtenerPrecioContratistaVigente, ObtenerZonaAsignada, type ResumenLiquidacionesType, type ResumenLiquidacionesTypeChile, SEGMENT_TY, type TARGET, UpdateNodosDocDP, buildDataMaterialsRule, buildTenantCollectionName, checkAndBuildMaterialsFromStock, checkMaterialAvailability, codBalizaAL04, codClientes, codMOClientesAL02, codMOClientesAL02Asfaltado, codMOClientesAL02OC, codMOClientesAL02Soplado, codMOClientes_ReglaLiquidacion1, codMODROPAL04, codMODROPAL04OC, codMODROPAL04Soplado, codMOFTTFAL04, codMONoClientesAL02, codMONoClientesAL02Asfaltado, codMONoClientesAL02OC, codMONoClientesAL02Soplado, codMONoClientes_ReglaLiquidacion1, codMOOcultosAL04, codMOPublico, codMOTroncalAL02, codMOTroncalAL02Asfaltado, codMOTroncalAL02OC, codMOTroncalAL02Soplado, codMOTroncalAL04, codMOTroncalAL04Asfaltado, codMOTroncalAL04OC, codMOTroncalAL04Soplado, codMOTroncal_ReglaLiquidacion1, codNoCliente, codSopladoRD, codigosMOT1_F2, codigosMaterialDuctos, codigosMaterialUGG, consumirStockPersonal, convertDates, dataFlujosHomePass, esCadenaFechaISOValida, esObjetoFecha, generateUniqueNumber, generateUniqueNumberArray, getChannelName, getContainerName, getDateInTimeZone, getKeyRedisSortedSet, getModelDataAdicional, getNextID_Valorizacion, getQueueName, getQueueNameSaveOneNotification, isValidDate, isValidPartialEntity, logTiempoProceso, mapaEstadoObraFaseAL02, mapaMOMaterialAL02, mapaMOMaterialAL04, mapaReglaSopladoClientes, mapaReglaSopladoTroncal, obtenerDocumentacionClientes, obtenerDocumentacionNoClientes, obtenerPrecioManoObraAL02, obtenerPrecioManoObraAL04, obtenerTipoYCodigoMO, paisMap, searchCurrentContractorSpecialtyPrice, setContext, updatePriceContractorMOAL02, updatePriceContractorMOAL04, updatePriceMOAL02, updatePriceMOAL04, validateNoLookup };
package/dist/index.js CHANGED
@@ -61,6 +61,7 @@ __export(index_exports, {
61
61
  buildDataMaterialsRule: () => buildDataMaterialsRule,
62
62
  buildTenantCollectionName: () => buildTenantCollectionName,
63
63
  checkAndBuildMaterialsFromStock: () => checkAndBuildMaterialsFromStock,
64
+ checkMaterialAvailability: () => checkMaterialAvailability,
64
65
  codBalizaAL04: () => codBalizaAL04,
65
66
  codClientes: () => codClientes,
66
67
  codMOClientesAL02: () => codMOClientesAL02,
@@ -4410,7 +4411,19 @@ __name(buildPreliquidacionRules1, "buildPreliquidacionRules1");
4410
4411
 
4411
4412
  // src/Programados/Alemania/AL02/mapaMOMaterialAL02.ts
4412
4413
  var mapaMOMaterialAL02 = new Map([
4413
- ...buildPreliquidacionRules1()
4414
+ ...buildPreliquidacionRules1(),
4415
+ [
4416
+ "073006000",
4417
+ {
4418
+ Codigo: "073006000",
4419
+ ManoObra: [],
4420
+ Materiales: [],
4421
+ CantidadFija: true,
4422
+ CantidadPadre: false,
4423
+ Cantidad: 1,
4424
+ Factor: 1
4425
+ }
4426
+ ]
4414
4427
  ]);
4415
4428
 
4416
4429
  // src/Programados/Alemania/CalcularResumenHPMOLiquidado/index.ts
@@ -6000,6 +6013,47 @@ function buildDataMaterialsRule(Materiales, dataStockPersonal, dataStockAlmacen,
6000
6013
  }
6001
6014
  __name(buildDataMaterialsRule, "buildDataMaterialsRule");
6002
6015
 
6016
+ // src/Programados/Alemania/checkMaterialAvailability.ts
6017
+ function checkMaterialAvailability(materials, dataMaterialesUtilizados, dataStockPersonal, dataStockAlmacen, dataConsumoMaterial, Controller) {
6018
+ const dataMUStockPersonal = dataMaterialesUtilizados.filter((e) => e.stock === "Personal");
6019
+ const dataMUStockAlmacen = dataMaterialesUtilizados.filter((e) => e.stock === "Almacen");
6020
+ for (const material of materials) {
6021
+ if (material.stock === "Personal") {
6022
+ const stockPersonal = dataStockPersonal.find((e) => e.ID_StockPersonal === material.ID);
6023
+ if (!stockPersonal) {
6024
+ throw new Controller.SigoError(`No se encontr\xF3 el material ID_StockPersonal "${material.ID}" en data stock personal.`);
6025
+ }
6026
+ const utilizadoLocal = dataMUStockPersonal.filter((e) => e.ID === material.ID).reduce((acc, el) => acc += el.cantidad, 0);
6027
+ const { Despacho, Devolucion, Liquidacion, DespachoTR, DevolucionTR } = stockPersonal;
6028
+ const disponible = Despacho - Devolucion - Liquidacion + DespachoTR - DevolucionTR - utilizadoLocal;
6029
+ if (disponible < material.cantidad) {
6030
+ throw new Controller.SigoError(`No tiene stock personal suficiente para el material '${material.item.Codigo}${material.lote ? ` (lote: ${material.lote})` : ""}' para este trabajo. (Disponible: ${disponible})`);
6031
+ }
6032
+ } else if (material.stock === "Almacen") {
6033
+ const stockAlmacen = dataStockAlmacen.find((e) => e.ID_StockAlmacen === material.ID);
6034
+ if (!stockAlmacen) {
6035
+ throw new Controller.SigoError(`No se encontr\xF3 el material ID_StockAlmacen "${material.ID}" en data stock alamc\xE9n.`);
6036
+ }
6037
+ const utilizadoLocal = dataMUStockAlmacen.filter((e) => e.ID === material.ID).reduce((acc, el) => acc += el.cantidad, 0);
6038
+ const utilizadoCM = dataConsumoMaterial.reduce((ac, e) => {
6039
+ const exist = e.CosumoMaterial.filter((cm) => cm.CodigoLlave === stockAlmacen.CodigoLlave);
6040
+ if (exist.length > 1) {
6041
+ throw new Controller.SigoError(`No se pudo calcular utilizado consumo material.`);
6042
+ }
6043
+ return ac += exist.length ? exist[0].Cantidad : 0;
6044
+ }, 0);
6045
+ const { Ingreso, Despacho, Devolucion } = stockAlmacen;
6046
+ const disponible = Ingreso - Despacho + Devolucion - utilizadoLocal - utilizadoCM;
6047
+ if (disponible < material.cantidad) {
6048
+ throw new Controller.SigoError(`No tiene stock almac\xE9n suficiente para el material '${material.item.Codigo}${material.lote ? ` (lote: ${material.lote})` : ""}' para este trabajo. (Disponible: ${disponible})`);
6049
+ }
6050
+ } else {
6051
+ throw new Controller.SigoError(`No se encontraron casos para el tipo de stock ${material.stock}`);
6052
+ }
6053
+ }
6054
+ }
6055
+ __name(checkMaterialAvailability, "checkMaterialAvailability");
6056
+
6003
6057
  // src/Programados/Colombia/9612/MapaEspecialidadesColombia.ts
6004
6058
  var EstadoEspecialidad9612 = /* @__PURE__ */ function(EstadoEspecialidad96122) {
6005
6059
  EstadoEspecialidad96122["ACTIVO"] = "ACTIVO";
@@ -6688,6 +6742,7 @@ var getNextID_Valorizacion = /* @__PURE__ */ __name((valorizaciones) => {
6688
6742
  buildDataMaterialsRule,
6689
6743
  buildTenantCollectionName,
6690
6744
  checkAndBuildMaterialsFromStock,
6745
+ checkMaterialAvailability,
6691
6746
  codBalizaAL04,
6692
6747
  codClientes,
6693
6748
  codMOClientesAL02,
package/dist/index.mjs CHANGED
@@ -4281,7 +4281,19 @@ __name(buildPreliquidacionRules1, "buildPreliquidacionRules1");
4281
4281
 
4282
4282
  // src/Programados/Alemania/AL02/mapaMOMaterialAL02.ts
4283
4283
  var mapaMOMaterialAL02 = new Map([
4284
- ...buildPreliquidacionRules1()
4284
+ ...buildPreliquidacionRules1(),
4285
+ [
4286
+ "073006000",
4287
+ {
4288
+ Codigo: "073006000",
4289
+ ManoObra: [],
4290
+ Materiales: [],
4291
+ CantidadFija: true,
4292
+ CantidadPadre: false,
4293
+ Cantidad: 1,
4294
+ Factor: 1
4295
+ }
4296
+ ]
4285
4297
  ]);
4286
4298
 
4287
4299
  // src/Programados/Alemania/CalcularResumenHPMOLiquidado/index.ts
@@ -5871,6 +5883,47 @@ function buildDataMaterialsRule(Materiales, dataStockPersonal, dataStockAlmacen,
5871
5883
  }
5872
5884
  __name(buildDataMaterialsRule, "buildDataMaterialsRule");
5873
5885
 
5886
+ // src/Programados/Alemania/checkMaterialAvailability.ts
5887
+ function checkMaterialAvailability(materials, dataMaterialesUtilizados, dataStockPersonal, dataStockAlmacen, dataConsumoMaterial, Controller) {
5888
+ const dataMUStockPersonal = dataMaterialesUtilizados.filter((e) => e.stock === "Personal");
5889
+ const dataMUStockAlmacen = dataMaterialesUtilizados.filter((e) => e.stock === "Almacen");
5890
+ for (const material of materials) {
5891
+ if (material.stock === "Personal") {
5892
+ const stockPersonal = dataStockPersonal.find((e) => e.ID_StockPersonal === material.ID);
5893
+ if (!stockPersonal) {
5894
+ throw new Controller.SigoError(`No se encontr\xF3 el material ID_StockPersonal "${material.ID}" en data stock personal.`);
5895
+ }
5896
+ const utilizadoLocal = dataMUStockPersonal.filter((e) => e.ID === material.ID).reduce((acc, el) => acc += el.cantidad, 0);
5897
+ const { Despacho, Devolucion, Liquidacion, DespachoTR, DevolucionTR } = stockPersonal;
5898
+ const disponible = Despacho - Devolucion - Liquidacion + DespachoTR - DevolucionTR - utilizadoLocal;
5899
+ if (disponible < material.cantidad) {
5900
+ throw new Controller.SigoError(`No tiene stock personal suficiente para el material '${material.item.Codigo}${material.lote ? ` (lote: ${material.lote})` : ""}' para este trabajo. (Disponible: ${disponible})`);
5901
+ }
5902
+ } else if (material.stock === "Almacen") {
5903
+ const stockAlmacen = dataStockAlmacen.find((e) => e.ID_StockAlmacen === material.ID);
5904
+ if (!stockAlmacen) {
5905
+ throw new Controller.SigoError(`No se encontr\xF3 el material ID_StockAlmacen "${material.ID}" en data stock alamc\xE9n.`);
5906
+ }
5907
+ const utilizadoLocal = dataMUStockAlmacen.filter((e) => e.ID === material.ID).reduce((acc, el) => acc += el.cantidad, 0);
5908
+ const utilizadoCM = dataConsumoMaterial.reduce((ac, e) => {
5909
+ const exist = e.CosumoMaterial.filter((cm) => cm.CodigoLlave === stockAlmacen.CodigoLlave);
5910
+ if (exist.length > 1) {
5911
+ throw new Controller.SigoError(`No se pudo calcular utilizado consumo material.`);
5912
+ }
5913
+ return ac += exist.length ? exist[0].Cantidad : 0;
5914
+ }, 0);
5915
+ const { Ingreso, Despacho, Devolucion } = stockAlmacen;
5916
+ const disponible = Ingreso - Despacho + Devolucion - utilizadoLocal - utilizadoCM;
5917
+ if (disponible < material.cantidad) {
5918
+ throw new Controller.SigoError(`No tiene stock almac\xE9n suficiente para el material '${material.item.Codigo}${material.lote ? ` (lote: ${material.lote})` : ""}' para este trabajo. (Disponible: ${disponible})`);
5919
+ }
5920
+ } else {
5921
+ throw new Controller.SigoError(`No se encontraron casos para el tipo de stock ${material.stock}`);
5922
+ }
5923
+ }
5924
+ }
5925
+ __name(checkMaterialAvailability, "checkMaterialAvailability");
5926
+
5874
5927
  // src/Programados/Colombia/9612/MapaEspecialidadesColombia.ts
5875
5928
  var EstadoEspecialidad9612 = /* @__PURE__ */ function(EstadoEspecialidad96122) {
5876
5929
  EstadoEspecialidad96122["ACTIVO"] = "ACTIVO";
@@ -6558,6 +6611,7 @@ export {
6558
6611
  buildDataMaterialsRule,
6559
6612
  buildTenantCollectionName,
6560
6613
  checkAndBuildMaterialsFromStock,
6614
+ checkMaterialAvailability,
6561
6615
  codBalizaAL04,
6562
6616
  codClientes,
6563
6617
  codMOClientesAL02,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigo-package",
3
- "version": "1.2.36",
3
+ "version": "1.2.38",
4
4
  "description": "Funciones compartidas sigo",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -21,6 +21,6 @@
21
21
  "typescript": "^5.7.3"
22
22
  },
23
23
  "peerDependencies": {
24
- "sigo-entities": "^1.0.72"
24
+ "sigo-entities": "^1.0.76"
25
25
  }
26
26
  }