{============================================================================== PROGRAMA : LQPRRP004 SISTEMA : Sistema de Liquidacion Materiales Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados PROGRAMADOR : Juan F. Soto FECHA : Mayo 13, 1994 MODIFICADO : VALENTIN RODRIGUEZ FECHA : MAYO, 2019 ==============================================================================} GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha DEFINE elije,imp,afecta,tipo_inventario CHAR(1) DEFINE p_ano,m_mes SMALLINT DEFINE fecha1, fecha2 DATE , p_fecha CHAR(10) DEFINE entra CHAR(25) DEFINE t_costst DECIMAL(12,2) DEFINE detalla CHAR(30) DEFINE orden CHAR(10) DEFINE t_variacion DECIMAL(12,2) DEFINE debe, haber DECIMAL(12,2), idz INT ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cuenta_no LIKE cgtb00001.cuenta_no, debito DECIMAL(18,2) END RECORD DEFINE i SMALLINT DEFINE fecha_inicial,fecha_final DATE DEFINE primera,imp_entrada CHAR(1) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL lqprrp004() END MAIN FUNCTION lqprrp004() DEFINE busca_datos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion CHAR(30), unidad CHAR(3), cod_sp SMALLINT, cod_sp_sec SMALLINT, proveedor CHAR(7), num_doc INTEGER, num_oc INTEGER, tipo CHAR(2), cantidad DECIMAL(12,5), precio DECIMAL(12,5), flete DECIMAL(12,5), imp_colect DECIMAL(12,5), imp_aduana DECIMAL(12,5), tasa DECIMAL(8,2), cost_std LIKE intb00013.costo_st END RECORD LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM lqfmrp004 FROM "lqfmrp004" DISPLAY FORM lqfmrp004 DISPLAY "lqprrp004" AT 4,3 DISPLAY "Liquidacion Mercancia pt" AT 6,28 LET tipo_papel = 2 CALL msgrp000(tipo_papel) CONSTRUCT criterio ON c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec FROM num_oc,cod_n,cod_grupo,cod_tipo,cod_sec AFTER CONSTRUCT IF INT_FLAG THEN CALL msg(2) LET INT_FLAG = FALSE EXIT PROGRAM END IF EXIT CONSTRUCT END CONSTRUCT INPUT BY NAME tipo_inventario, p_ano,m_mes,elije,imp_entrada,imp AFTER FIELD m_mes SELECT fecha_inicio, fecha_corte INTO fecha_inicial,fecha_final FROM prdtable where mes = m_mes AND ano = p_ano DISPLAY BY NAME fecha_inicial,fecha_final LET p_fechas = fecha_final using "ddmmyyyy" CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 # NEXT FIELD p_ano END IF AFTER INPUT EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0) LET chstd = UPSHIFT(chstd) LET primera = "S" IF tipo_inventario = '2' THEN LET selec = "SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ", " c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ", "FROM iptb00002 a,cotb00001 b,cgtb00018 c,cgtb00017 d ", "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 ", " (d.fecha between '", fecha_inicial USING "MM/DD/YYYY","' and '", fecha_final USING "MM/DD/YYYY","') and ", " (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ", " d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ", " (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = '2' ", " AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ", criterio CLIPPED, " ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " ELSE LET selec = "SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ", " c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ", "FROM intb00001 a,cotb00001 b,cgtb00018 c,cgtb00017 d ", "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 ", " (d.fecha between '", fecha_inicial USING "MM/dd/YYYY","' and '", fecha_final USING "MM/dd/YYYY","') and ", " (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ", " d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ", " (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = 1 ", " AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ", criterio CLIPPED, " ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec " END IF DISPLAY selec DISPLAY "elije ",elije LET idx = 1 PREPARE comando FROM selec DECLARE busca CURSOR FOR comando INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO') FOREACH busca INTO busca_datos.* DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion LET orden = busca_datos.num_oc USING "<<<<<<" IF busca_datos.imp_colect is null THEN LET busca_datos.imp_colect = 0 END IF IF busca_datos.imp_colect < 0 THEN LET busca_datos.imp_colect = busca_datos.imp_colect * -1 END IF IF busca_datos.imp_aduana is null THEN LET busca_datos.imp_aduana = 0 END IF IF busca_datos.imp_aduana < 0 THEN LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1 END IF # Busca el costos standard LET busca_datos.cost_std = 0 IF tipo_inventario = '2' THEN SELECT AVG(a.material+a.labor+a.gastos) INTO busca_datos.cost_std FROM iptb00004 a WHERE a.ventas = "1" and a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and a.cod_grupo = busca_datos.cod_grupo and a.cod_tipo = busca_datos.cod_tipo and a.cod_sec = busca_datos.cod_sec and a.status_t is NULL ELSE SELECT AVG(a.costo_st) INTO busca_datos.cost_std FROM intb00013 a WHERE a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and a.cod_grupo = busca_datos.cod_grupo and a.cod_tipo = busca_datos.cod_tipo and a.cod_sec = busca_datos.cod_sec and a.status_t is NULL END IF IF STATUS = NOTFOUND THEN LET busca_datos.cost_std = 0 END IF IF busca_datos.cost_std is null THEN LET busca_datos.cost_std = 0 END IF IF chstd = "yes" THEN DELETE FROM cttb00013 WHERE (fecha_lq = fecha_final AND tipo_lq = elije AND tipo_orden = 2 AND num_oc = busca_datos.num_oc) END IF IF imp="S" THEN LET r_filename ="lqprrp004.4rp" IF idx = 1 THEN IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview=1 CALL seleccionarsalida() RETURNING r_output -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default # CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1) LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF LET idx = 2 START REPORT liquida1 TO XML HANDLER HANDLER END IF DISPLAY "DATOS " OUTPUT TO REPORT liquida1(busca_datos.*) END IF END FOREACH IF imp = "S" THEN IF idx > 1 THEN FINISH REPORT liquida1 END IF END IF IF imp_entrada = "S" THEN CALL edprrp0271() END IF END FUNCTION REPORT liquida1(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion CHAR(30), unidad CHAR(3), cod_sp SMALLINT, cod_sp_sec SMALLINT, proveedor CHAR(7), num_doc INTEGER, num_oc INTEGER, tipo CHAR(2), cantidad DECIMAL(12,5), precio DECIMAL(12,5), flete DECIMAL(12,5), imp_colect DECIMAL(12,5), imp_aduana DECIMAL(12,5), tasa DECIMAL(8,2), cost_std LIKE intb00013.costo_st END RECORD DEFINE valor DECIMAL(12,2) DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl, t_fob,t_flete,t_seguro,t_cf,t_impcol,t_impaduana,t_dollar, t_costopl,t_recibida,t_precio,o_variacion DECIMAL(12,2) DEFINE no_reg SMALLINT DEFINE total_cf,t_costo, costo_unit DECIMAL(12,2), o_impaduana,o_impcolect,o_dollar,o_cf DECIMAL(12,2) DEFINE ot_fob, ot_flete, ot_cf, ot_seguro, ot_impcol, ot_impaduana, ot_dollar, ot_costopl, ot_costo, ot_precio, ot_costst, ot_variacion DECIMAL(12,2) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE hora CHAR(5) DEFINE fechaActual, orden_tipo CHAR(12) DEFINE codigo CHAR(25) DEFINE codigos_sp, tituloFecha CHAR(25) DEFINE material,titulo STRING {OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 PAGE LENGTH 150} FORMAT PAGE HEADER LET hora = TIME LET fechaActual = today using "dd/mm/yy" IF tipo_inventario = '2' THEN LET titulo = 'Liquidacion Mercancias Productos Terminados' ELSE LET titulo = 'Liquidacion Mercancias Materia Prima' END IF IF primera = "S" THEN LET t_fob = 0 LET t_flete = 0 LET t_seguro = 0 LET t_cf = 0 LET t_impcol = 0 LET t_impaduana = 0 LET t_dollar = 0 LET t_costopl = 0 LET t_recibida = 0 LET t_costo = 0 LET t_precio = 0 LET t_costst = 0 LET t_variacion = 0 LET o_variacion = 0 LET primera = "N" LET idz = 1 END IF BEFORE GROUP OF x.num_oc IF total_cf is null THEN LET total_cf = 0 END IF LET ot_fob =0 LET ot_flete =0 LET ot_cf =0 LET ot_seguro =0 LET ot_impcol =0 LET ot_impaduana =0 LET ot_dollar =0 LET ot_costopl =0 LET ot_costo =0 LET ot_precio =0 LET ot_costst =0 LET ot_variacion =0 LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy" ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy", fecha_final USING "dd/mm/yy",titulo ON EVERY ROW LET seguro = 0 LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-", x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&" LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&" LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo SELECT CONVERT(CHAR(10),MIN(a.fecha),101) INTO p_fecha FROM iptb00006 a WHERE a.num_doc = x.num_doc and cod_mov in (10) AND status_t IS NULL LET fob = x.precio LET c_f = fob + x.flete LET valor = c_f * x.tasa IF elije = "L" THEN LET seguro = 0 END IF IF no_reg > 1 THEN LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f LET x.imp_colect = (x.imp_colect / total_cf) * c_f END IF LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor LET costo_unit = cost_pl / x.cantidad LET precio_std = x.cantidad * x.cost_std LET variacion = cost_pl - precio_std LET material = "(",codigo,")","-",x.descripcion CLIPPED PRINTX material, codigos_sp,x.proveedor, orden_tipo, fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana, valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std, variacion IF tipo_inventario = '2' THEN IF chstd = "YES" THEN SELECT UNIQUE a.cod_n FROM iptb00004 a WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND a.ano = p_ano and a.mes_ini = 1 AND a.mes_fin = 12 IF STATUS = NOTFOUND THEN INSERT INTO iptb00004 (ventas,mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_Sec,material,labor,gastos,us_crea,fech_crea) VALUES ('1','01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,costo_unit,0,0,SUSER_SNAME(),GETDATE()) END IF END IF ELSE IF chstd = "YES" THEN SELECT UNIQUE a.cod_n FROM intb00013 a WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND a.ano = p_ano AND a.mes_ini = 1 AND a.mes_fin = 12 IF STATUS = NOTFOUND THEN INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo, x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null, NULL) END IF END IF END IF INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden) VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo, x.cod_sec,x.cantidad,costo_unit,null,usuarios,GETDATE(),x.tipo) INSERT INTO cttb000log2 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec) VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec) # Acumulacion de totales IF o_impaduana is null THEN LET o_impaduana = 0 END IF IF o_variacion is null THEN LET o_variacion = 0 END IF IF o_impcolect is null THEN LET o_impcolect = 0 END IF IF o_dollar is null THEN LET o_dollar = 0 END IF IF o_cf is null THEN LET o_cf = 0 END IF LET t_fob = t_fob + fob LET t_flete = t_flete + x.flete LET t_seguro = t_seguro + seguro LET t_cf = t_cf + c_f LET t_impcol = t_impcol + x.imp_colect LET t_impaduana = t_impaduana + x.imp_aduana LET t_dollar = t_dollar + valor LET t_costopl = t_costopl + cost_pl LET t_costo = t_costo + costo_unit LET t_precio = t_precio + x.cost_std LET t_costst = t_costst + precio_std LET t_variacion = t_variacion + variacion LET o_variacion = o_variacion + cost_pl LET o_impaduana = o_impaduana + x.imp_aduana + seguro LET o_impcolect = o_impcolect + x.imp_colect LET o_dollar = o_dollar + valor LET o_cf = o_cf + c_f LET ot_fob = ot_fob + fob LET ot_flete = ot_flete + x.flete LET ot_cf = ot_cf + c_f LET ot_seguro = ot_seguro + seguro LET ot_impcol = ot_impcol + x.imp_colect LET ot_impaduana = ot_impaduana + x.imp_aduana LET ot_dollar = ot_dollar + valor LET ot_costopl = ot_costopl + cost_pl LET ot_costo = ot_costo + costo_unit LET ot_precio = ot_precio + x.cost_std LET ot_costst = ot_costst + precio_std LET ot_variacion = ot_variacion + variacion AFTER GROUP OF x.num_oc # Validacion del arreglo para imprimir la entrada 27 IF imp_entrada = "S" THEN LET entrada27[idz].cuenta_no = "1161" LET entrada27[idz].cod_aux = x.cod_sp LET entrada27[idz].cod_sec = x.cod_sp_sec LET entrada27[idz].num_doc = x.num_oc LET entrada27[idz].valor = o_impaduana LET o_impaduana = 0 LET idz = idz + 1 LET entrada27[idz].cuenta_no = "1161-01" LET entrada27[idz].cod_aux = x.cod_sp LET entrada27[idz].cod_sec = x.cod_sp_sec LET entrada27[idz].num_doc = x.num_oc LET entrada27[idz].valor = o_impcolect LET o_impcolect = 0 LET idz = idz + 1 LET entrada27[idz].cuenta_no = "1161-02" LET entrada27[idz].cod_aux = x.cod_sp LET entrada27[idz].cod_sec = x.cod_sp_sec LET entrada27[idz].num_doc = x.num_oc LET entrada27[idz].valor = o_dollar LET o_dollar = 0 LET idz = idz + 1 LET entrada27[idz].cuenta_no = "1161-03" LET entrada27[idz].cod_aux = x.cod_sp LET entrada27[idz].cod_sec = x.cod_sp_sec LET entrada27[idz].num_doc = x.num_oc LET entrada27[idz].valor = o_cf LET o_cf = 0 LET idz = idz + 1 END IF PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar, ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion ON LAST ROW PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar, t_costopl,t_costo,t_precio,t_costst,t_variacion LET o_impaduana = 0 LET o_impcolect = 0 LET o_dollar = 0 LET o_cf = 0 END REPORT {------------------------------------------------------------------------------- PROGRAMA : EDPRRP027 OBJETIVO : Listar las Entrada de Diario Productos Terminados PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Mayo 20, 1994. -------------------------------------------------------------------------------} FUNCTION edprrp0271() #WHENEVER ERROR CONTINUE DEFINE longitud,u_mes,numero_ent,i SMALLINT, ch_ano CHAR(4) LET r_filename ="lqprrp004b.4rp" OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp027 FROM "edfmrp027" DISPLAY FORM edfmrp027 { DISPLAY "edprrp027" AT 4,3 DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21} { LET tipo_papel = 1 CALL msgrp000(tipo_papel)} ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalla BEFORE INPUT LET numero_ent = 27 LET fecha1 =fecha_inicial LET fecha2 =fecha_final DISPLAY BY NAME fecha1,fecha2 CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra DISPLAY BY NAME entra AFTER FIELD entra LET longitud = LENGTH(entra) IF longitud != 16 THEN LET numero_msg = 77 CALL msg(numero_msg) NEXT FIELD entra END IF LET existe = "N" SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra IF STATUS != NOTFOUND THEN LET existe = "S" END IF AFTER FIELD fecha1 IF fecha1 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 is null THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR" NEXT FIELD fecha1 END IF ###### Selecionando en rango de fecha de la tabla de periodo para el fecha2 AFTER INPUT IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF IF fecha2 > TODAY THEN CALL msg(57) END IF END INPUT ##### Creando la facilidad para cancelar proceso con DELETE O SUPR LET i = 1 {CALL configureoutput("XLS") RETURNING handler START REPORT entrada271 TO XML HANDLER handler} IF i = 1 THEN IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview=1 CALL seleccionarsalida() RETURNING r_output -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF LET i = 2 START REPORT entrada271 TO XML HANDLER HANDLER END IF DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte LET diario1.debito = t_costst IF tipo_inventario = "2" THEN LET diario1.cuenta_no = "1131-02" ELSE LET diario1.cuenta_no = "1151" END IF OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra) IF i > 1 THEN FINISH REPORT entrada271 END IF END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada271(x,fecha1,fecha2,detalle1,entrada) DEFINE x RECORD cuenta_no LIKE cgtb00001.cuenta_no, debito DECIMAL(10,2) END RECORD ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE debito,credito DECIMAL(12,2) DEFINE detalle1 CHAR(30) DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda DEFINE cod_aux_sec CHAR(6) DEFINE doce CHAR(2) DEFINE hora,referencia CHAR(5) DEFINE entrada CHAR(25), nombre_cta LIKE cgtb00001.descripcion DEFINE fechaActual CHAR(12) { OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 150} FORMAT PAGE HEADER LET hora = TIME LET fechaActual = today using "dd/mm/yy" ##### Selecionado la descripcion del fecha BEFORE GROUP OF x.cuenta_no PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce ON EVERY ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no IF debito is null THEN LET debito = 0 END IF PRINTX x.cuenta_no, x.debito, nombre_cta LET debito = debito + x.debito IF afecta = "S" THEN IF x.cuenta_no IS NOT NULL THEN BEGIN WORK CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra DISPLAY BY NAME entra LET entrada = entra INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE()) END IF END IF ON LAST ROW IF tipo_inventario = "2" THEN SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "5615" LET debe = 0 LET haber = 0 LET referencia = "5615" ELSE SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "1152" LET debe = 0 LET haber = 0 LET referencia = "1152" END IF IF credito is null THEN LET credito = 0 END IF IF debito is null THEN LET debito = 0 END IF IF t_variacion > 0 THEN LET debito = debito + t_variacion LET debe = t_variacion IF afecta = "S" THEN IF tipo_inventario = "2" THEN INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito ,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE()) ELSE INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito ,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE()) END IF END IF ELSE LET t_variacion = t_variacion * -1 LET credito = credito + t_variacion LET haber = t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito ,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() ) END IF END IF ###### Acumulando totales por columna PRINTX referencia, nombre_cta, debe, haber LET credito = 0 # Impresion detalle de la entrada con ordenes de compras FOR i = 1 TO idz # IF entrada27[i].cuenta_no IS NOT NULL THEN # IF entrada27[i].cod_aux is not null THEN IF entrada27[i].valor < 0 THEN LET entrada27[i].valor = entrada27[i].valor * -1 END IF LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&" IF cod_aux_sec IS NULL THEN LET cod_aux_sec = ' ' END IF # DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&" PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc, entrada27[i].valor IF entrada27[i].valor IS NULL THEN LET entrada27[i].valor=0 END IF LET credito = credito + entrada27[i].valor IF afecta = "S" THEN IF entrada27[i].valor < 0 THEN LET entrada27[i].valor = entrada27[i].valor * -1 END IF IF entrada27[i].cuenta_no IS NOT NULL THEN INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux ,cod_sec,detalle_1,debito,credito,us_crea,fech_crea) VALUES (fecha2,1,entrada,entrada27[i].cuenta_no, entrada27[i].num_doc,entrada27[i].cod_aux, entrada27[i].cod_sec,detalle1,0, entrada27[i].valor,SUSER_SNAME(),GETDATE()) END IF END IF # END IF #END IF END FOR IF afecta = "S" THEN COMMIT WORK END IF ###### Imprime total DEBITO y total CREDITO PRINTX debito,credito,detalle1 LET debito = 0 LET credito = 0 END REPORT