HITB Inicializacion - Reporte de Lista de Edicion -¿Como se calcula la columna de After Reset?

Hola,

Recientemente tuve un caso donde nos pedian explicar como es que GP realiza el cálculo de la columna "After Reset" que aparece en el reporte de Lista de Edicion que se muestra al momento de ejecutar el paso 3 del proceso de inicialización de HITB.

A continuación quiero compartir con ustedes un PSEUDOCODIGO que explica a un buen nivel de detalle como se llevan a cabo estos cálculos, esperando que esta información les sea de utilidad.

 

--**************************************************************************************************************************************************************
--HITB - PROCESO DE INICIALIZACION - PASO 3
--REPORTE - HITB Reset Tool Edit List
--COLUMNA: AFTER RESET: --CALCULO DEL VALOR DEL INVENTARIO ACTUAL QUE QUEDARÍA DESPUES DE LA INICIALIZACION
--**************************************************************************************************************************************************************
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
--PSEUDO ALGORITMO UTILIZADO PARA EL CALCULO DEL VALOR DEL INVENTARIO
-------------------------------------------------------------------------------------------------------------------------------------------------------------

FOR EACH [Articulos Sin Manufactura] AND --Todos los articulos sin manufactura
   [Articulos de Manufactura con Metodo costeo Perpetuos] --Todos los articulos de manufactura con metodos de costeo Perpetuos (LIFO,FIFO,Promedio)
  
 FOR EACH [Recepcion de inventario abierta] --Son todos los registros de la tabla IV10200 de estos artículos donde QTYRECVD <> QTYSOLD  

   --Articulos con Metodo de costeo LIFO,FIFO Perpetuo
   WHEN IV00101.VCTNMTHD in (1,2)
   LAYERCOST_CALC =(IV10200.QTYRECVD - IV10200.QTYSOLD) * IV10200.UNITCOST
  
   --Articulos con Metodo de costeo Promedio Perpetuo
   WHEN IV00101.VCTNMTHD in (3)
  
   --Si el tipo de cantidad es OnHand
   IF IV10200.QTYTYPE = 1 THEN
    LAYERCOST_CALC =(IV10200.QTYRECVD - IV10200.QTYSOLD) * IV00101.CURRCOST
   
   --Cualquier otro tipo de cantidad (2:Returned,3:In Use, 4:In Service, 5:Damaged)
   ELSE
    LAYERCOST_CALC =(IV10200.QTYRECVD - IV10200.QTYSOLD) * IV10200.UNITCOST

   --Articulos con Metodo de costeo FIFO,LIFO Periodicos (costo estandar)
   WHEN IV00101.VCTNMTHD in (4,5)
   LAYERCOST_CALC =(IV10200.QTYRECVD - IV10200.QTYSOLD) * IV00101.STNDCOST
  

FOR EACH [Articulos de Manufactura con costo Estandar] --Son todos los articulos de manufactura que se encuentran en la tabla "ICIV0323-IC_IV_STANDARD" y tienen costo estandar.

 FOR EACH [Recepcion de inventario abierta] --Son todos los registros de la tabla IV10200 de estos artículos donde QTYRECVD <> QTYSOLD

  WHEN IV00101.VCTNMTHD in (4,5) THEN -- Metodo de costeo FIFO, LIFO Periodic
   --MFG Material cost, MATCOSTI_1 used
   LAYERCOST_CALC = (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.MATCOSTI_1)
   
   --This is for the Material Fixed Overhead amount.
   IF ICIV0323.MATFIXOHDCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.MATFIXOHDCOSTI_1)
   
   --This is for the Labor Costs (LABCOSTI_1).
   IF ICIV0323.LABCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.LABCOSTI_1)
    
   --This is for the Labor Fixed Overhead (LABFIXOHDCOSTI_1)
   IF ICIV0323.LABFIXOHDCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.LABFIXOHDCOSTI_1)
    
   --This is for the Labor Variable Overhead costs (LABVAROHDCOSTI_1)
   IF ICIV0323.LABVAROHDCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.LABVAROHDCOSTI_1)
    
   --This is for the machine cost (MACHCOSTI_1).
   IF ICIV0323.MACHCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.MACHCOSTI_1)
  
   --This is for the Machine Fixed Overhead cost (MACHFIXOHDCOSTI_1)
   IF ICIV0323.MACHFIXOHDCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.MACHFIXOHDCOSTI_1)
    
   --This is for the Machine Variable Overhead costs (MACHVAROHDCOSTI_1)
   IF ICIV0323.MACHVAROHDCOSTI_1 <> .00000 THEN --ADD TO THE TOTAL COST
    LAYERCOST_CALC = LAYERCOST_CALC + (IV10200.QTYRECVD - IV10200.QTYSOLD) * (ICIV0323.MACHVAROHDCOSTI_1)
   

 -------------------------------------------------------------------------------------------------------------------------------------------------------------
 --CUENTAS CONSIDERADAS EN EL CALCULO DEL COSTO
 -------------------------------------------------------------------------------------------------------------------------------------------------------------

 *Los costos se sumarizan por cuenta, la cuenta en primera instancia se toma de la tarjeta del artículo-IV00101,
  si no viene configurada ahi, se toma de la tabla "Maestro de cuentas-SY01100"
  En el caso de costos de manufactura las cuentas se toman de la tabla "CT00102-IC_COST_IV_Item_MSTR"
 
 
 *La cuenta utilizada, depende del tipo de cantidad
 CASE
   WHEN IV10200.QTYTYPE = 1 THEN
    CASE WHEN IV00101.IVIVINDX = 0 THEN (SELECT ACTINDX FROM SY01100 WHERE SERIES = 5 and PTGACDSC = 'Inventory Control')
      ELSE IV00101.IVIVINDX
    END
    WHEN IV10200.QTYTYPE = 2 THEN
    CASE WHEN IV00101.IVRETIDX = 0 THEN (SELECT ACTINDX FROM SY01100 WHERE SERIES = 5 and PTGACDSC = 'Inventory Returns')
      ELSE IV00101.IVRETIDX
    END
    WHEN IV10200.QTYTYPE = 3 THEN
    CASE WHEN IV00101.IVINUSIX = 0 THEN (SELECT ACTINDX FROM SY01100 WHERE SERIES = 5 and PTGACDSC = 'In Use')
      ELSE IV00101.IVINUSIX
    END
    WHEN IV10200.QTYTYPE = 4 THEN
    CASE WHEN IV00101.IVINSVIX = 0 THEN (SELECT ACTINDX FROM SY01100 WHERE SERIES = 5 and PTGACDSC = 'In Service')
      ELSE IV00101.IVINSVIX
    END
    WHEN IV10200.QTYTYPE = 5 THEN
    CASE WHEN IV00101.IVDMGIDX = 0 THEN (SELECT ACTINDX FROM SY01100 WHERE SERIES = 5 and PTGACDSC = 'Damaged')
      ELSE IV00101.IVDMGIDX
    END
    ELSE 0
 END,  --IVIVINDX    
 
 *Para el caso los costos de manufactura, las cuentas se toman de:
 CASE
  WHEN [MFG Material cost] THEN [MISMAS CUENTAS QUE PARA ARTICULOS SIN MANUFACTURA, VER TABLA LOGICA ARRIBA]
 
  WHEN [Material Fixed Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVIMATOHIXI
  
  WHEN [Material Variable Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVINVMATOHVARIX_I
  
  WHEN [Labor Costs] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVILIXI
  
  WHEN [Labor Fixed Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVILABOHIXI
  
  WHEN [Labor Variable Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVINVLABOHVARIX_I
  
  WHEN [Machine cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVIMXI
  
  WHEN [Machine Fixed Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVIMACHOHIXI
  
  WHEN [Machine Variable Overhead cost] & IV10200.QTYTYPE = 1 THEN CT00102.ICIVINVMACHOHVARIX_I
  
  
 END