Files
MBS/PROYECTO/ctdir/ctprrp007.4gl
T

799 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 ctprrp007()
# 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 "ctprrp007" 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,fecha_corte INTO p_fecha1,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 (blue)
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
DELETE FROM cttb00027 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, prdtable d, 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 d.fecha_inicio and d.fecha_corte) and ",
" d.mes = ? and d.ano = ? 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_mes,p_ano
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
ATTRIBUTE(REVERSE)
START REPORT varia 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 varia(engano)
FINISH REPORT varia
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT varia(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, "ctprrp007"
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]
{
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 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