801 lines
24 KiB
Plaintext
801 lines
24 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------------
|
|
PROGRAMA : CTPRRP007
|
|
DESCRIPCION : Reporte costo unitario real
|
|
OBSERVACION : Este reporte toma las informaciones de dos codigos de
|
|
movimiento de ventas que son el 30 y el 31
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA : Julio 12, 1993
|
|
--------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"ctprgb000.4gl"
|
|
DEFINE pilas LIKE iptb00002.nomenclatura
|
|
|
|
DEFINE codigos RECORD
|
|
cod_n LIKE intb00001.cod_n,
|
|
cod_grupo LIKE intb00001.cod_grupo,
|
|
cod_tipo LIKE intb00001.cod_tipo,
|
|
cod_sec LIKE intb00001.cod_sec
|
|
END RECORD
|
|
|
|
DEFINE salir CHAR(1)
|
|
DEFINE cod_pila CHAR(4),
|
|
codigo CHAR(2)
|
|
|
|
DEFINE selec1,selec2 CHAR(1000)
|
|
DEFINE p_ano CHAR(4)
|
|
DEFINE idx_1,idx_2,j,p_mes,engano SMALLINT
|
|
DEFINE p_fecha1,p_fecha DATE
|
|
|
|
# Variables para hacer calculo de variacion en el material
|
|
DEFINE total_m,total_l,total_g,total_1,total_2,total_3 DECIMAL(12,3)
|
|
|
|
# Definicion del arreglo para la impresion de las informaciones
|
|
DEFINE arr_calc ARRAY[70] OF RECORD
|
|
cod_mov SMALLINT,
|
|
l_pilas LIKE iptb00002.nomenclatura,
|
|
l_ventas DECIMAL(12,3),
|
|
l_material_std DECIMAL(12,3),
|
|
l_porc_mat DECIMAL(8,2),
|
|
l_variacion_mat DECIMAL(12,3),
|
|
l_costo_mat_real DECIMAL(12,3),
|
|
l_costo_unitario DECIMAL(8,3),
|
|
l_labor DECIMAL(12,3),
|
|
l_porc_lab DECIMAL(8,2),
|
|
l_variacion_lab DECIMAL(12,3),
|
|
l_costo_lab_real DECIMAL(12,3),
|
|
l_costo_primo_real DECIMAL(12,3),
|
|
l_costo_primo_unit DECIMAL(8,3),
|
|
l_gastos DECIMAL(12,3),
|
|
l_porc_gas DECIMAL(8,2),
|
|
l_variacion_gas DECIMAL(12,3),
|
|
l_gastos_real DECIMAL(12,3),
|
|
l_costo_total DECIMAL(12,3),
|
|
l_costo_unit_var DECIMAL(8,3),
|
|
l_costo_unit_fijo DECIMAL(8,3),
|
|
l_costo_unit_total DECIMAL(8,3)
|
|
END RECORD
|
|
|
|
FUNCTION ctprrp016()
|
|
# Definicion del record para el select de las ventas del mes
|
|
|
|
DEFINE ventas RECORD
|
|
pilas LIKE iptb00002.nomenclatura,
|
|
cantidad DECIMAL(12,3),
|
|
valor_m DECIMAL(12,3),
|
|
valor_l DECIMAL(12,3),
|
|
valor_g DECIMAL(12,3),
|
|
cod_mov LIKE iptb00006.cod_mov
|
|
END RECORD
|
|
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
COMMENT LINE 23,
|
|
ERROR LINE 24
|
|
|
|
CALL pantalla()
|
|
DISPLAY "ctprrp016" AT 4,3
|
|
DISPLAY "Costo Unitario Real" AT 6,31
|
|
OPEN FORM ctfmrp007 FROM "ctfmrp007"
|
|
DISPLAY FORM ctfmrp007
|
|
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
CONSTRUCT BY NAME criterio ON a.cod_n
|
|
|
|
# Entrada del mes del reporte y el ano, valores dados en el reporte
|
|
INPUT BY NAME p_mes,p_ano,total_1,total_2,total_3
|
|
AFTER FIELD p_ano
|
|
|
|
SELECT fecha_inicio INTO p_fecha1 FROM prdtable
|
|
WHERE mes = 1 and ano = p_ano
|
|
|
|
SELECT fecha_corte INTO p_fecha FROM prdtable
|
|
WHERE mes = p_mes and ano = p_ano
|
|
|
|
LET p_fechas = p_fecha USING "dd/mm/yy"
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
#NEXT FIELD p_mes
|
|
END IF
|
|
DISPLAY "<< Buscando Balances Cuentas... Espere Por Favor >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
# Determinando los valores correspondiente a la variacion en labor,
|
|
# material y gasto indirecto desde la tabla de contabilidad general
|
|
|
|
# Material
|
|
SELECT sum(a.debito-a.credito) INTO total_1 FROM cgtb00004 a,cttb00033 b
|
|
WHERE a.cuenta_no = b.cuenta_m and a.status_t is null and
|
|
a.fecha between p_fecha1 and p_fecha
|
|
|
|
# Labor
|
|
SELECT sum(a.debito-a.credito) INTO total_2 FROM cgtb00004 a,cttb00033 b
|
|
WHERE a.cuenta_no = b.cuenta_l and a.status_t is null and
|
|
a.fecha between p_fecha1 and p_fecha
|
|
|
|
# Gasto Indirecto
|
|
SELECT sum(a.debito-a.credito) INTO total_3 FROM cgtb00004 a,cttb00033 b
|
|
WHERE a.cuenta_no = b.cuenta_g and status_t is null and
|
|
fecha between p_fecha1 and p_fecha
|
|
|
|
DISPLAY BY NAME total_1,total_2,total_3 ATTRIBUTE (YELLOW)
|
|
IF total_1 is null THEN
|
|
LET total_1 = 0
|
|
END IF
|
|
IF total_2 is null THEN
|
|
LET total_2 = 0
|
|
END IF
|
|
IF total_3 is null THEN
|
|
LET total_3 = 0
|
|
END IF
|
|
{
|
|
LET total_1 = total_1 / 1000
|
|
LET total_2 = total_2 / 1000
|
|
LET total_3 = total_3 / 1000
|
|
}
|
|
DISPLAY BY NAME total_1
|
|
DISPLAY " "
|
|
AT 19,14
|
|
|
|
AFTER FIELD total_1
|
|
IF total_1 is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD total_1
|
|
END IF
|
|
AFTER FIELD total_2
|
|
IF total_2 is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD total_2
|
|
END IF
|
|
AFTER FIELD total_3
|
|
IF total_3 is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD total_3
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET p_fechas = p_fecha USING "dd/mm/yy"
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
#NEXT FIELD p_mes
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
# Borra los datos de esta tabla que contiene informaciones generada por este
|
|
# repoorte para el reporte ctprrp012
|
|
|
|
DELETE FROM cttb00036 WHERE fecha_lq = p_fecha
|
|
DELETE FROM cttb00021 WHERE mes = p_mes
|
|
# Seleccion de busqueda de la venta del mes especificado
|
|
LET selec1 =
|
|
"SELECT a.nomenclatura,sum(c.cantidad),sum(c.cantidad*f.material),",
|
|
" sum(c.cantidad*f.labor),sum(c.cantidad*f.gastos),f.ventas ",
|
|
"FROM iptb00002 a, vetb00003 c, iptb00004 f, vetb00002 e ",
|
|
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
|
|
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and ",
|
|
" c.cod_n = f.cod_n and c.cod_grupo = f.cod_grupo and ",
|
|
" c.cod_tipo = f.cod_tipo and c.cod_sec = f.cod_sec) and ",
|
|
" f.ano = ? and f.ventas = '1' and (e.factura=c.factura) and ",
|
|
" (e.fecha_factura between ? and ?) and ",
|
|
" (",criterio clipped,") and ",
|
|
" a.nomenclatura is not null and c.status_t is null ",
|
|
"GROUP BY 1,6 ORDER BY 6,1"
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE comando FROM selec1
|
|
DECLARE busca1 SCROLL CURSOR FOR comando
|
|
OPEN busca1 USING p_ano,p_fecha1,p_fecha
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
|
|
ATTRIBUTE(REVERSE)
|
|
|
|
START REPORT varia16 TO "C:\\archivo"
|
|
|
|
LET idx = 1
|
|
LET salir = "N"
|
|
LET idx_1 = 1
|
|
LET total_m = 0
|
|
LET total_l = 0
|
|
LET total_g = 0
|
|
WHILE status != notfound
|
|
FETCH ABSOLUTE idx_1 busca1 INTO ventas.*
|
|
IF status = notfound THEN
|
|
LET idx_1 = 1
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
# Validacion de variables para la unidades vendidas y costo materiales,
|
|
# costo labor, costo gasto indirecto
|
|
|
|
LET arr_calc[idx].cod_mov = ventas.cod_mov
|
|
LET arr_calc[idx].l_pilas = ventas.pilas
|
|
LET arr_calc[idx].l_ventas = ventas.cantidad #/ 1000
|
|
LET idx_1 = idx_1 + 1
|
|
LET arr_calc[idx].l_material_std = ventas.valor_m #/1000
|
|
LET arr_calc[idx].l_labor = ventas.valor_l #/1000
|
|
LET arr_calc[idx].l_gastos = ventas.valor_g #/1000
|
|
LET total_m = arr_calc[idx].l_material_std + total_m
|
|
LET total_l = arr_calc[idx].l_labor + total_l
|
|
LET total_g = arr_calc[idx].l_gastos + total_g
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
|
|
FOR j = 1 TO idx
|
|
|
|
# Calculos para las ventas locales
|
|
# Calculo material
|
|
|
|
#IF arr_calc[j].cod_mov = 30 THEN
|
|
|
|
LET arr_calc[j].l_porc_mat = (arr_calc[j].l_material_std / total_m) * 100
|
|
LET arr_calc[j].l_variacion_mat = (arr_calc[j].l_porc_mat * total_1)/100
|
|
LET arr_calc[j].l_costo_mat_real = arr_calc[j].l_material_std +
|
|
arr_calc[j].l_variacion_mat
|
|
LET arr_calc[j].l_costo_unitario = arr_calc[j].l_costo_mat_real /
|
|
arr_calc[j].l_ventas
|
|
|
|
# Calculo de Labor
|
|
IF total_l > 0 THEN
|
|
LET arr_calc[j].l_porc_lab = (arr_calc[j].l_labor / total_l) * 100
|
|
END IF
|
|
LET arr_calc[j].l_variacion_lab = (arr_calc[j].l_porc_lab * total_2)/100
|
|
LET arr_calc[j].l_costo_lab_real = arr_calc[j].l_labor +
|
|
arr_calc[j].l_variacion_lab
|
|
LET arr_calc[j].l_costo_primo_real = arr_calc[j].l_costo_mat_real +
|
|
arr_calc[j].l_costo_lab_real
|
|
LET arr_calc[j].l_costo_primo_unit = arr_calc[j].l_costo_primo_real /
|
|
arr_calc[j].l_ventas
|
|
|
|
# Gastos indirectos
|
|
IF total_g > 0 THEN
|
|
LET arr_calc[j].l_porc_gas = (arr_calc[j].l_gastos / total_g)* 100
|
|
END IF
|
|
LET arr_calc[j].l_variacion_gas = (arr_calc[j].l_porc_gas * total_3)/100
|
|
LET arr_calc[j].l_gastos_real = arr_calc[j].l_gastos +
|
|
arr_calc[j].l_variacion_gas
|
|
|
|
# Costos totales
|
|
LET arr_calc[j].l_costo_total = arr_calc[j].l_costo_mat_real +
|
|
arr_calc[j].l_costo_lab_real +
|
|
arr_calc[j].l_gastos_real
|
|
LET arr_calc[j].l_costo_unit_var = arr_calc[j].l_costo_primo_unit
|
|
LET arr_calc[j].l_costo_unit_fijo = arr_calc[j].l_gastos_real /
|
|
arr_calc[j].l_ventas
|
|
LET arr_calc[j].l_costo_unit_total = arr_calc[j].l_costo_total /
|
|
arr_calc[j].l_ventas
|
|
END FOR
|
|
LET engano = 1
|
|
OUTPUT TO REPORT varia16(engano)
|
|
FINISH REPORT varia16
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
REPORT varia16(engana)
|
|
DEFINE e,i,p,k,o,engana,l SMALLINT
|
|
DEFINE comp_off,normal,comp_on CHAR(3)
|
|
|
|
DEFINE imprime CHAR(1)
|
|
DEFINE t_ventas,t_porc_m,t_porc_l,t_porc_g,t_costo_mat_real,t_costo_lab_real,
|
|
t_costo_primo_real,t_costo_primo_unit,t_costo_unit_mat,
|
|
t_gastos_real,t_costos_totales,t_costo_unit_var,
|
|
t_costo_unit_fijo,t_costo_unit_total DECIMAL (12,3)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 3
|
|
|
|
ORDER BY engana
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET idx = idx - 1
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET l = ((idx * 14) - 26)/2
|
|
LET k = ((idx * 14) - 30)/2
|
|
LET p = ((idx * 14) - 18)/2
|
|
LET l = l + 17
|
|
LET k = k + 17
|
|
LET p = p + 17
|
|
PRINT comp_on
|
|
PRINT COLUMN 1, "ctprrp016"
|
|
PRINT COLUMN l, p_compania.nombre CLIPPED;
|
|
|
|
# Cuadre de la fecha del dia y la hora
|
|
LET e = 0
|
|
FOR j = 1 to idx
|
|
IF arr_calc[j].cod_mov = 1 THEN
|
|
LET o = o + 1
|
|
END IF
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET e = e + 1
|
|
END IF
|
|
END FOR
|
|
LET i = (idx * 12) + 26 + 17
|
|
PRINT COLUMN i, today using "dd/mm/yy"
|
|
|
|
PRINT COLUMN k, "DETERMINACION COSTOS UNITARIOS" ,
|
|
COLUMN i, time
|
|
PRINT COLUMN p, "VALOR EN MILES RD$"
|
|
|
|
SKIP 1 LINE
|
|
SELECT descrip INTO descrip1 FROM mestable WHERE mes = p_mes
|
|
PRINT COLUMN 1, "Mes de ",descrip1 clipped," de ",p_ano
|
|
|
|
LET l = 1
|
|
FOR j = 1 to idx
|
|
PRINT COLUMN l, "--------------";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l, "-------------------------------------"
|
|
LET t_ventas = 0
|
|
LET t_porc_m = 0
|
|
LET t_porc_l = 0
|
|
LET t_porc_g = 0
|
|
LET t_costo_mat_real = 0
|
|
LET t_costo_unit_mat = 0
|
|
LET t_costo_lab_real = 0
|
|
LET t_costo_primo_real = 0
|
|
LET t_costo_primo_unit = 0
|
|
LET t_gastos_real = 0
|
|
LET t_costos_totales = 0
|
|
LET t_costo_unit_var = 0
|
|
LET t_costo_unit_fijo = 0
|
|
LET t_costo_unit_total = 0
|
|
|
|
BEFORE GROUP OF engana
|
|
LET imprime = "N"
|
|
|
|
# Determinar el cuadre del encabezado MERCADO EXPORTACION
|
|
LET l = 0
|
|
LET k = 0
|
|
FOR j = 1 to idx
|
|
IF arr_calc[j].cod_mov = 1 THEN
|
|
LET l = l + 1
|
|
END IF
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET k = k + 1
|
|
END IF
|
|
END FOR
|
|
LET l = l * 12
|
|
LET k = (((k * 12)+l) - 19)/2
|
|
|
|
PRINT COLUMN 40, "MERCADO LOCAL"
|
|
# COLUMN l+k+3, "MERCADO EXPORTACION"
|
|
#----------------------------------------------------------------------------
|
|
LET l = 1
|
|
|
|
FOR j = 1 to idx
|
|
PRINT COLUMN l, "----------------";
|
|
LET l = l + 16
|
|
END FOR
|
|
PRINT COLUMN l, "-------------------------------------"
|
|
|
|
LET l = 30
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
LET imprime = "S"
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+6, "Producto";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l + 9, "COSTO"
|
|
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+2, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+6, arr_calc[j].l_pilas;
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+9, "TOTAL"
|
|
LET l = 1
|
|
|
|
FOR j = 1 to idx
|
|
PRINT COLUMN l, "--------------";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l, "-------------------------------------"
|
|
|
|
LET imprime = "N"
|
|
|
|
# Impresion del detalle
|
|
# de cada renglon del reporte
|
|
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Unidades Vendidas";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_ventas using "##,###,###.###";
|
|
LET t_ventas = t_ventas + arr_calc[j].l_ventas
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_ventas using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Material al std";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_material_std using "##,###,###.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, total_m using "---,---,###.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Porciento del Total";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+4, arr_calc[j].l_porc_mat using "#,###.#","%";
|
|
LET t_porc_m = arr_calc[j].l_porc_mat + t_porc_m
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_porc_m using "---,---.#"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Variacion en Material";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_variacion_mat using "--,---,---.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, total_1 using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Material al Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_mat_real using "---,---,---.###";
|
|
LET t_costo_mat_real = arr_calc[j].l_costo_mat_real + t_costo_mat_real
|
|
LET l = l + 14
|
|
INSERT INTO cttb00021
|
|
VALUES (arr_calc[j].cod_mov,p_mes,arr_calc[j].l_pilas,
|
|
arr_calc[j].l_costo_mat_real,arr_calc[j].l_costo_lab_real,
|
|
arr_calc[j].l_costo_unit_fijo,user,current)
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_mat_real using "--,----,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Unitario Real en Cuanto"
|
|
PRINT COLUMN 1, "a Materia Prima...";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+2, arr_calc[j].l_costo_unitario using "--,---.###";
|
|
LET t_costo_unit_mat = arr_calc[j].l_costo_unitario +
|
|
t_costo_unit_mat
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_unit_mat using "--,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Labor Directa al std";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_labor using "###,###.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
|
|
PRINT COLUMN l+4, total_l using "---,---,---.###"
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Porciento del Total";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+4, arr_calc[j].l_porc_lab using "#,###.#","%";
|
|
LET t_porc_l = arr_calc[j].l_porc_lab + t_porc_l
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_porc_l using "---,---.#"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Variacion en Labor ";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_variacion_lab using "--,---,---.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, total_2 using "--,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Labor al Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+2, arr_calc[j].l_costo_lab_real using "-----,---.###";
|
|
LET t_costo_lab_real = arr_calc[j].l_costo_lab_real + t_costo_lab_real
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_lab_real using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Primo al Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_primo_real using "---,---,---.###";
|
|
LET t_costo_primo_real = arr_calc[j].l_costo_primo_real +
|
|
t_costo_primo_real
|
|
LET l = l + 14
|
|
|
|
LET cod_pila = arr_calc[j].l_pilas[1,4]
|
|
|
|
{ IF cod_pila IS NOT NULL THEN
|
|
SELECT UNIQUE cod_n INTO articulos.cod_n
|
|
FROM iptb00002
|
|
WHERE nomenclatura = cod_pila
|
|
|
|
LET codigo = articulos.cod_n using "#",
|
|
articulos.cod_grupo using "#"
|
|
|
|
INSERT INTO cttb00027
|
|
VALUES (arr_calc[j].cod_mov,p_mes,codigo,arr_calc[j].l_costo_primo_real,
|
|
user,current)
|
|
END IF
|
|
}
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_primo_real using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Primo Unitario al Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_primo_unit using "---,---.###";
|
|
LET t_costo_primo_unit = arr_calc[j].l_costo_primo_unit +
|
|
t_costo_primo_unit
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_primo_unit using "---,---,---.###"
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Gasto Indirectos";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_gastos using "--,---,---.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, total_g using "---,---,---.###"
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Porciento del Total";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+2, arr_calc[j].l_porc_gas using "#,###.#","%";
|
|
LET t_porc_g = arr_calc[j].l_porc_gas + t_porc_g
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_porc_g using "---,---,---.#"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
PRINT COLUMN 1, "Variacion Gasto";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_variacion_gas using "-----,---.###";
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, total_3 using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Gasto Indirecto Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l+1, arr_calc[j].l_gastos_real using "--,---,---.###";
|
|
LET t_gastos_real = arr_calc[j].l_gastos_real + t_gastos_real
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_gastos_real using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Totales ";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_total using "---,---,---.###";
|
|
LET t_costos_totales = arr_calc[j].l_costo_total + t_costos_totales
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costos_totales using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Unitario Variable Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_unit_var using "---,---.###";
|
|
LET t_costo_unit_var = arr_calc[j].l_costo_unit_var + t_costo_unit_var
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_unit_var using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Unitario Fijo Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_unit_fijo using "---,---.###";
|
|
LET t_costo_unit_fijo = arr_calc[j].l_costo_unit_fijo +
|
|
t_costo_unit_fijo
|
|
LET l = l + 14
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_unit_fijo using "---,---,---.###"
|
|
|
|
LET imprime = "N"
|
|
LET l = 30
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "Costo Unitario Total Real";
|
|
FOR j = 1 TO idx
|
|
IF imprime = "N" THEN
|
|
IF arr_calc[j].cod_mov = 2 THEN
|
|
LET imprime = "S"
|
|
PRINT COLUMN l+3, "|";
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN l, arr_calc[j].l_costo_unit_total using "---,---.###";
|
|
LET t_costo_unit_total = arr_calc[j].l_costo_unit_total +
|
|
t_costo_unit_total
|
|
LET l = l + 14
|
|
# Busca Las Pilas Relacionadas con la nomenclatura para insertarla en
|
|
# la tabla cttb00036
|
|
LET pilas = arr_calc[j].l_pilas
|
|
DECLARE busca CURSOR FOR
|
|
SELECT cod_n,cod_grupo,cod_tipo,cod_sec
|
|
FROM iptb00002
|
|
WHERE nomenclatura = pilas and status_t is null
|
|
|
|
FOREACH busca INTO codigos.*
|
|
INSERT INTO cttb00036
|
|
VALUES (arr_calc[j].cod_mov,p_fecha,null,codigos.cod_n,
|
|
codigos.cod_grupo,codigos.cod_tipo,codigos.cod_sec,0,
|
|
arr_calc[j].l_costo_unit_total,NULL,USER,CURRENT,null, null)
|
|
END FOREACH
|
|
END FOR
|
|
PRINT COLUMN l+4, t_costo_unit_total using "---,---,---.##"
|
|
|
|
LET l = 1
|
|
|
|
FOR j = 1 to idx
|
|
PRINT COLUMN l, "================";
|
|
LET l = l + 16
|
|
END FOR
|
|
PRINT COLUMN l, "============================="
|
|
PRINT comp_off
|
|
LET imprime = "N"
|
|
END REPORT
|