{ -------------------------------------------------------------------------------- PROGRAMA : CTPRRP015 DESCRIPCION : Reporte costo unitario real (Produccion) OBSERVACION : Este reporte toma las informaciones del codigo de movimiento de produccion 20 PROGRAMADOR : Juan F. Soto FECHA : Agosto 23, 1993 -------------------------------------------------------------------------------- } GLOBALS "ctprgb000.4gl" DEFINE salir,salir1,salir2,salir3 CHAR(1) DEFINE selec1,selec2,selec3 CHAR(1000) DEFINE p_ano CHAR(4) DEFINE idx_1,idx_2,j,p_mes,engano,idx1,idx2,idx3 SMALLINT # 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) DEFINE fecha_1,fecha_2 DATE # 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 ctprrp015() # Definicion del record para el select de las ventas del mes DEFINE reg_imp RECORD pilas LIKE iptb00002.nomenclatura, cantidad DECIMAL(12,3), valor_m DECIMAL(12,3), valor_l DECIMAL(12,3), valor_g DECIMAL(12,3) END RECORD DEFINE reg1_imp RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, pilas LIKE iptb00002.nomenclatura END RECORD DEFINE reg3_imp RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, material DECIMAL(12,4), labor DECIMAL(12,4), gastos DECIMAL(12,4) END RECORD DEFINE reg2_imp RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad_2 DECIMAL(12,2) END RECORD 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, ERROR LINE 24 CALL pantalla() DISPLAY "ctprrp015" AT 4,3 DISPLAY "Costo Unitario Real (Prod.)" AT 6,26 OPEN FORM ctfmrp007 FROM "ctfmrp015" DISPLAY FORM ctfmrp007 LET tipo_papel = 2 CALL msgrp000(tipo_papel) # 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_mes IF p_mes is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF AFTER FIELD p_ano IF p_ano is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF SELECT fecha_inicio,fecha_corte INTO fecha_1,fecha_2 FROM prdtable WHERE ano = p_ano AND mes = p_mes LET p_fechas = fecha_2 using "ddmmyy" CALL prd() IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF 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 = fecha_2 using "ddmmyy" 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 LET selec1 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.nomenclatura ", "FROM iptb00002 a WHERE a.status_t IS NULL ORDER BY 1,2,3,4 " DISPLAY "Buscando nomenclatura... Espere Por Favor" AT 19,14 PREPARE comando1 FROM selec1 DECLARE busca1 SCROLL CURSOR FOR comando1 OPEN busca1 LET selec3 = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", "MAX(a.material),MAX(a.labor),MAX(a.gastos) ", "FROM iptb00004 a ", "WHERE a.status_t IS NULL AND a.ventas = 1 AND a.ano = ? AND ", " a.mes_fin = 12 GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 " DISPLAY "Buscando Costos Std.... Espere Por Favor" AT 19,14 PREPARE comando3 FROM selec3 DECLARE busca3 SCROLL CURSOR FOR comando3 OPEN busca3 USING p_ano LET selec2 = "SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", "SUM(a.cantidad_2) ", "FROM iptb00006 a WHERE a.status_t IS NULL AND a.cod_mov=20 AND ", " a.fecha BETWEEN ? AND ? ", "GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 " DISPLAY "Buscando Cantidad.... Espere Por Favor" AT 19,14 PREPARE comando2 FROM selec2 DECLARE busca2 CURSOR FOR comando2 OPEN busca2 USING fecha_1,fecha_2 DELETE FROM cttb00021 WHERE mes = p_mes DISPLAY "<< >>" AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (BOLD) START REPORT varia1 TO "C:\\archivo" LET idx = 1 LET salir = "N" LET idx_1 = 0 LET total_m = 0 LET total_l = 0 LET total_g = 0 LET salir1 = "N" WHILE salir1 != "S" FETCH busca2 INTO reg2_imp.* IF status = notfound THEN LET salir1 = "S" LET idx_1 = 1 EXIT WHILE END IF IF reg2_imp.cantidad_2 IS NOT NULL THEN LET idx = idx + 1 LET ventas.cantidad = reg2_imp.cantidad_2 LET ventas.valor_m = 0 LET ventas.valor_l = 0 LET ventas.valor_g = 0 LET ventas.cod_mov = 20 LET idx2 = 1 LET salir2 = "N" WHILE salir2 != "S" FETCH ABSOLUTE idx2 busca1 INTO reg1_imp.* IF STATUS = NOTFOUND THEN LET salir2 = "S" LET idx2 = 1 LET STATUS = 0 EXIT WHILE END IF LET idx2 = idx2 + 1 IF reg2_imp.cod_n = reg1_imp.cod_n AND reg2_imp.cod_grupo = reg1_imp.cod_grupo AND reg2_imp.cod_tipo = reg1_imp.cod_tipo AND reg2_imp.cod_sec = reg1_imp.cod_sec THEN LET ventas.pilas = reg1_imp.pilas LET idx2 = 1 LET salir2 = "S" EXIT WHILE END IF END WHILE LET idx3 = 1 LET salir3 = "N" WHILE salir3 != "S" FETCH ABSOLUTE idx3 busca3 INTO reg3_imp.* IF STATUS = NOTFOUND THEN LET salir3 = "S" LET idx3 = 1 LET STATUS = 0 EXIT WHILE END IF LET idx3 = idx3 + 1 IF reg2_imp.cod_n = reg3_imp.cod_n AND reg2_imp.cod_grupo = reg3_imp.cod_grupo AND reg2_imp.cod_tipo = reg3_imp.cod_tipo AND reg2_imp.cod_sec = reg3_imp.cod_sec THEN LET ventas.valor_m = reg2_imp.cantidad_2 * reg3_imp.material LET ventas.valor_l = reg2_imp.cantidad_2 * reg3_imp.labor LET ventas.valor_g = reg2_imp.cantidad_2 * reg3_imp.gastos LET idx3 = 1 LET salir3 = "S" EXIT WHILE END IF END WHILE IF ventas.valor_m IS NULL THEN LET ventas.valor_m = 0 END IF IF ventas.valor_l IS NULL THEN LET ventas.valor_l = 0 END IF IF ventas.valor_g IS NULL THEN LET ventas.valor_g = 0 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 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 DISPLAY "Material ",ventas.pilas," ",ventas.valor_m USING "&&&,&&&,&&&.&&", "|",total_m USING "&&&,&&&,&&&.&&" END IF END WHILE FOR j = 1 TO idx # Calculos para las ventas locales # Calculo material #IF arr_calc[j].cod_mov = 30 THEN IF total_m > 0 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 ELSE LET arr_calc[j].l_porc_mat = 0 LET arr_calc[j].l_variacion_mat = 0 END IF LET arr_calc[j].l_costo_mat_real = arr_calc[j].l_material_std + arr_calc[j].l_variacion_mat IF arr_calc[j].l_ventas > 0 THEN LET arr_calc[j].l_costo_unitario = arr_calc[j].l_costo_mat_real / arr_calc[j].l_ventas ELSE LET arr_calc[j].l_costo_unitario = 0 END IF # Calculo de Labor IF total_l > 0 THEN LET arr_calc[j].l_porc_lab = (arr_calc[j].l_labor / total_l) * 100 LET arr_calc[j].l_variacion_lab = (arr_calc[j].l_porc_lab * total_2)/100 ELSE LET arr_calc[j].l_porc_lab = 0 LET arr_calc[j].l_variacion_lab = 0 END IF 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_lab_real + arr_calc[j].l_costo_lab_real IF arr_calc[j].l_ventas > 0 THEN LET arr_calc[j].l_costo_primo_unit = arr_calc[j].l_costo_primo_real / arr_calc[j].l_ventas ELSE LET arr_calc[j].l_costo_primo_unit = 0 END IF # Gastos indirectos IF total_g > 0 THEN LET arr_calc[j].l_porc_gas = (arr_calc[j].l_gastos / total_g) * 100 LET arr_calc[j].l_variacion_gas = (arr_calc[j].l_porc_gas * total_3)/100 ELSE LET arr_calc[j].l_porc_gas = 0 LET arr_calc[j].l_variacion_gas = 0 END IF 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 IF arr_calc[j].l_ventas > 0 THEN LET arr_calc[j].l_costo_unit_total = arr_calc[j].l_costo_total / arr_calc[j].l_ventas LET arr_calc[j].l_costo_unit_fijo = arr_calc[j].l_gastos_real / arr_calc[j].l_ventas ELSE LET arr_calc[j].l_costo_unit_total = 0 LET arr_calc[j].l_costo_unit_fijo = 0 END IF END FOR LET engano = 1 OUTPUT TO REPORT varia1(engano) FINISH REPORT varia1 FOR j = 1 TO idx INSERT INTO cttb00021 VALUES ("1",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 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT varia1(engana) { ------------------------------------------------------------------------------ Esta rutina del reporte solamente calcula los totales verticalmente de cada renglon especificado. El reporte viene con todos sus calculos ya hechos en la funcion anterior este se imprime por renglon en forma horizontal. Por la complejidad de los calculos y los requerimientos del usuario se utlizan arreglos para el calculo e impresion del mismo. Por la razon anteriormente citada el reporte esta sumamente largo y podria ser incomodo de entender por esta razon favor de comunicarse con el Ing. Juan F. Soto al Tel. 598-1163. ------------------------------------------------------------------------------ } DEFINE e,i,p,k,o,engana,l SMALLINT DEFINE normal,comp_on CHAR(3) DEFINE imprime CHAR(1) # Definicion de variables para los totales 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 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, "ctprrp015" PRINT COLUMN l, p_compania.nombre; # 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" LET k = k - 14 PRINT COLUMN k, "DETERMINACION COSTOS UNITARIOS DE PRODUCCION" , 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 #---------------------------------------------------------------------------- LET l = 1 FOR j = 1 to idx PRINT COLUMN l, "--------------"; LET l = l + 14 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, "Pila"; LET l = l + 12 END FOR PRINT COLUMN l + 9, "COSTO" # Aqui se prepara para imprimir los nombres de las pilas 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 + 12 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 # Aqui se prepara para imprimir las unidades vendias de cada pila LET l = 30 PRINT COLUMN 1, "Unidades Producidas"; 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 + 12 END FOR PRINT COLUMN l+4, t_ventas using "---,---.###" # Aqui se prepara para imprimir los costos de cada pila en cuanto a material 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 + 12 END FOR PRINT COLUMN l+4, total_m using "###,###.###" # Aqui se prepara para imprimir los porcientos de cada pila 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 + 12 END FOR PRINT COLUMN l+4, t_porc_m using "---,---.#" # Aqui se prepara para imprimir las variaciones del costo del material 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 + 12 END FOR PRINT COLUMN l+4, total_1 using "---,---.###" # Aqui se prepara para imprimir las costo material real 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 + 12 # Aqui se guarda las informaciones del costo real del material, # costo real de la labor, costo fijo unitario # para utilizarse en otro reporte END FOR PRINT COLUMN l+4, t_costo_mat_real using "---,---.###" # Aqui se prepara para imprimir las costo material real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_unit_mat using "---,---.###" # Aqui se prepara para imprimir la labor directa al eal 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 + 12 END FOR # Aqui se prepara para imprimir el total del porciento 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 + 12 END FOR PRINT COLUMN l+4, t_porc_l using "---,---.#" # Aqui se prepara para imprimir la variacion en labor 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 + 12 END FOR PRINT COLUMN l+4, total_2 using "---,---.###" # Aqui se prepara para imprimir Costo de labor 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 + 12 END FOR PRINT COLUMN l+4, t_costo_lab_real using "---,---.###" # Aqui se prepara para imprimir Costo primo real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_primo_real using "---,---.###" # Aqui se prepara para imprimir Costo primo unitario real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_primo_unit using "---,---.###" # Aqui se prepara para imprimir Gastos Indirectos 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 + 12 END FOR PRINT COLUMN l+4, total_g using "###,###.###" # Aqui se prepara para imprimir Porciento Total 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 + 12 END FOR PRINT COLUMN l+4, t_porc_g using "---,---.#" # Aqui se prepara para imprimir Variacion en Gasto 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 + 12 END FOR PRINT COLUMN l+4, total_3 using "---,---.###" # Aqui se prepara para imprimir Gasto Indirecto Real 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 + 12 END FOR PRINT COLUMN l+4, t_gastos_real using "---,---.###" # Aqui se prepara para imprimir Costo Total 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 + 12 END FOR PRINT COLUMN l+4, t_costos_totales using "---,---.###" # Aqui se prepara para imprimir Costo unitario variable real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_unit_var using "---,---.###" # Aqui se prepara para imprimir Costo unitario Fijo real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_unit_fijo using "---,---.###" # Aqui se prepara para imprimir Costo unitario Totla real 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 + 12 END FOR PRINT COLUMN l+4, t_costo_unit_total using "---,---.##" # Aqui se prepara para imprimir Costo unitario Totla real LET l = 1 FOR j = 1 to idx PRINT COLUMN l, "=============="; LET l = l + 14 END FOR PRINT COLUMN l, "=============================" LET imprime = "N" END REPORT