{ ============================================================================== PROGRAMA : LQPRRP004 SISTEMA : Sistema de Liquidacion Materiales Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados PROGRAMADOR : Juan F. Soto FECHA : Mayo 13, 1994 MODIFICADO : FECHA : ============================================================================== } GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha DEFINE elije,imp,afecta CHAR(1) DEFINE p_ano,m_mes SMALLINT DEFINE fecha1, fecha2 DATE , p_fecha CHAR(10) DEFINE entra CHAR(14) DEFINE t_costst DECIMAL(12,2) DEFINE detalla CHAR(30) DEFINE orden CHAR(10) DEFINE t_variacion DECIMAL(12,2) ###### 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 "decomarmol" USER usuarios USING clave SELECT a.* INTO p_companias.* 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,2), precio DECIMAL(12,2), flete DECIMAL(12,2), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), 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 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 respuesta = FGL_WINQUESTION("IMPRESION","DESEA REPORTE EN PANTALLA?","NO","NO|YES","QUESTION",0) LET primera = "S" CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia IF respuesta = "YES" THEN START REPORT liquida1 TO SCREEN ELSE START REPORT liquida1 TO archivo END IF DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) LET selec = "SELECT UNIQUE 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 = '02' ", "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 " PREPARE comando FROM selec DECLARE busca CURSOR FOR comando INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','GENERO') FOREACH busca INTO busca_datos.* LET orden = busca_datos.num_oc USING "<<<<<<" { #Busca la entrada 64 del rango especificado SELECT sum(debito-credito) INTO valor_64 FROM cgtb00004 WHERE (fecha between fecha_inicial and fecha_final and ref[1,5] = "ED.64") AND (cod_aux = cod_aux and cod_sec = cod_sec and num_doc = orden and status_t is null) IF valor_64 is null THEN LET valor_64 = 0 END IF # Busca el monto pagado al colector SELECT sum(a.debito-a.credito) INTO busca_datos.imp_colect FROM cgtb00004 a WHERE (a.cuenta_no = "1161-01" and a.status_t is null and a.fecha <= fecha_final and a.cod_sec = a.cod_sec and a.num_doc = orden) } 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 { # Busca los gastos aduanales SELECT sum(debito-credito) INTO busca_datos.imp_aduana FROM cgtb00004 WHERE (cuenta_no = "1161" and status_t is null and fecha <= fecha_final and cod_sec = cod_sec and num_doc = orden) } 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 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 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 OUTPUT TO REPORT liquida1(busca_datos.*) END FOREACH FINISH REPORT liquida1 IF respuesta <> "YES" THEN IF imp = "S" THEN RUN imprime END IF END IF IF imp_entrada = "S" THEN CALL edprrp0271() END IF CLEAR SCREEN 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,2), precio DECIMAL(12,2), flete DECIMAL(12,2), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), tasa DECIMAL(8,2), cost_std LIKE intb00013.costo_st END RECORD DEFINE valor DECIMAL(12,2) DEFINE fecha1,fecha2 DATE 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,4), o_impaduana,o_impcolect,o_dollar,o_cf DECIMAL(12,2) DEFINE balan_act, 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) DEFINE descrip1 CHAR(30) DEFINE p_cuenta CHAR(8) DEFINE otras_cta CHAR(8) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 FORMAT PAGE HEADER LET doble_on = ASCII 14 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_on, COLUMN 2, "lqprrp004", COLUMN 14, negrillas_on, COLUMN 15, doble_on, COLUMN l, p_compania.nombre CLIPPED, negrillas_off, COLUMN 140, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Contabilidad de Costo")) / 2 PRINT COLUMN l, "Sistema de Contabilidad de Costo", COLUMN 210, today using "dd/mm/yy" LET l = (80 - LENGTH("Liquidacion Mercancia")) / 2 PRINT COLUMN l, "Liquidacion Mercancia", COLUMN 210, hora PRINT COLUMN 98, "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy" PRINT negrillas_on PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------", "-------------------------------", "-------------------------------", "------------------------------------" PRINT COLUMN 128,"GASTO" PRINT COLUMN 61, "Ordenes", COLUMN 96, "COSTO &", COLUMN 115, "IMPUESTO", COLUMN 128, "ADUANAL", COLUMN 141, "PRIMA ", COLUMN 153, "COSTO EN", COLUMN 166, "UNIDADES", COLUMN 186, "COSTO", COLUMN 197, "PRECIO", COLUMN 209, "COSTO" PRINT COLUMN 1, "Materiales", COLUMN 50, "Proveedor", COLUMN 61, "Compras", COLUMN 76, "FOB", COLUMN 83, "FLETE", COLUMN 96, "FLETE", COLUMN 104, "SEGURO", COLUMN 115, "COLECTOR", COLUMN 128, "Y OTROS", COLUMN 141, "DOLLAR", COLUMN 153, "PLANTA", COLUMN 166, "RECIBIDA", COLUMN 189, "UNIT.", COLUMN 201, "STD", COLUMN 212, "STD", COLUMN 224, "VARIACION" PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------" , "-----------------------------", "-------------------------------", "-------------------------------", "------------------------------------" 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 idx = 1 LET primera = "N" END IF BEFORE GROUP OF x.num_oc { # Busca La suma del costo y flete SELECT SUM(a.fob+a.costo_flete),count(*) INTO total_cf,no_reg FROM cgtb00018 a,cgtb00017 b WHERE a.num_oc = x.num_oc and a.tipo = x.tipo and b.fecha between fecha_inicial and fecha_final and a.num_oc = b.num_oc and a.tipo = b.tipo and a.status_t is null and a.rep_entrada = b.rep_entrada } 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 PRINT negrillas_off ON EVERY ROW LET seguro = 0 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 #jhonny 10/4/99 LET seguro = (c_f * .10) LET valor = c_f * x.tasa IF elije = "L" THEN LET seguro = 0 END IF IF no_reg > 1 THEN #print "impaduana ",x.imp_aduana using "##,###.##"," totalcf ",total_cf using "##,###.##" ," "," costo y Flete ",c_f using "##,###.##" 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 PRINT COLUMN 1, x.cod_n using "&&&&","-",x.cod_grupo using "&&&&","-", x.cod_tipo using "&&&&","-",x.cod_sec using "&&&&", 2 SPACES,x.descripcion, #COLUMN 34,x.unidad, 2 SPACES, x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&", COLUMN 47,x.proveedor, COLUMN 60, x.num_oc using "&&&&&","-",x.tipo, COLUMN 69,fob using "###,###.##", COLUMN 81,x.flete using "##,###.##", COLUMN 91, c_f using "###,###.##", COLUMN 103, seguro using "#,###.##", COLUMN 113, x.imp_colect using "###,###.##", COLUMN 125, x.imp_aduana using "###,###.##", COLUMN 137, valor using "##,###,###.##", COLUMN 149, cost_pl using "##,###,###.##", COLUMN 161, x.cantidad using "##,###.##", COLUMN 180, costo_unit using "###,###.####", COLUMN 195, x.cost_std using "#,###,###.####", COLUMN 208, precio_std using "#,###,###.##", COLUMN 220, variacion using "--,---,---.##" 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 = '01' 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()) {ELSE UPDATE iptb00004 SET material = costo_unit, us_mod = suser_sname(), fech_mod = getdate() WHERE iptb00004.cod_n = x.cod_n AND iptb00004.cod_grupo = x.cod_grupo AND iptb00004.cod_tipo = x.cod_tipo AND iptb00004.cod_sec = x.cod_sec AND iptb00004.mes_ini = "01" AND iptb00004.mes_fin = "12" AND iptb00004.ano = p_ano } 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,SUSER_SNAME(),GETDATE(),x.tipo) INSERT INTO cttb000log2 (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,programa) 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,SUSER_SNAME(),GETDATE(),x.tipo,'lqprrp004') # 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[idx].cuenta_no = "1161" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_impaduana LET o_impaduana = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-01" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_impcolect LET o_impcolect = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-02" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_dollar LET o_dollar = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-03" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_cf LET o_cf = 0 LET idx = idx + 1 END IF #------------------------------------------------------------------------- PRINT COLUMN 1, "------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "----------" PRINT COLUMN 1, "Totales orden-> ", COLUMN 72, ot_fob using "#,###,###.##", 2 SPACES, ot_flete using "##,###.##", 2 SPACES, ot_cf using "###,###.##", 2 SPACES, ot_seguro using "##,###.##", 2 SPACES, ot_impcol using "#,###,###.##", 2 SPACES, ot_impaduana using "#,###,###.##", 2 SPACES, ot_dollar using "##,###,###.##", 2 SPACES, ot_costopl using "##,###,###.##", 2 SPACES, ot_costo using "#,###,###.##", 2 SPACES, ot_precio using "#,###,###.####", 2 SPACES, ot_costst using "#,###,###.####", 2 SPACES, ot_variacion using "--,---,---.##" ON LAST ROW PRINT COLUMN 1,"------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "----------" PRINT COLUMN 1, "Totales ----> ", COLUMN 67,t_fob using "#,###,###.##", COLUMN 80, t_flete using "##,###.##", COLUMN 91, t_cf using "#,###,###.##", COLUMN 104, t_seguro using "##,###.##", COLUMN 114, t_impcol using "##,###,###.##", COLUMN 128, t_impaduana using "#,###,###.##", COLUMN 141, t_dollar using "##,###,###.##", COLUMN 155, t_costopl using "##,###,###.##", COLUMN 167, t_costo using "##,##,###.###", COLUMN 180, t_precio using "##,###,###.####", COLUMN 197, t_costst using "##,###,###.####", COLUMN 213, t_variacion using "--,---,---.##" 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 Mat. Prima Recibida PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Mayo 20, 1994. ------------------------------------------------------------------------------- } FUNCTION edprrp0271() # WHENEVER ERROR CONTINUE DEFINE longitud SMALLINT 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 AFTER FIELD entra LET longitud = LENGTH(entra) IF longitud != 14 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 END INPUT ##### Creando la facilidad para cancelar proceso con DELETE O SUPR LET idx = idx - 1 ##### Envia la Informacion al printer de contabilidad CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT entrada271 TO archivo DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte LET diario1.debito = t_costst LET diario1.cuenta_no = "1131-02" OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra) FINISH REPORT entrada271 RUN imprime 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 mano_obra,sueldo_ind,monto_banco DECIMAL(12,2) DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2) DEFINE total7,total8 DECIMAL(12,2) ## Acumula los totales DEBITO Y CREDITO DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda DEFINE nomina CHAR(1) DEFINE doble_on CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE dpto INTEGER DEFINE nomina1 CHAR(24) DEFINE entrada CHAR(14), nombre_cta LIKE cgtb00001.descripcion OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 100 FORMAT PAGE HEADER LET doble_on = ASCII 14 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27,ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time ##### Selecionado la descripcion del fecha2 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_off,"edprrp027", COLUMN l,p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Contabilidad")) / 2 PRINT COLUMN l, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yy" LET l = (80 - LENGTH("Entrada de Diario Mat. Importada Recibida")) / 2 PRINT COLUMN l, "Entrada de Diario Mat. Importada Recibida", COLUMN 78, hora PRINT COLUMN 30, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" # , negrillas_off SKIP 1 LINE PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entrada PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT doce PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 17, "Catalogo", COLUMN 26, "Refe", COLUMN 41, "Concepto", COLUMN 75, "Debe", COLUMN 93, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", negrillas_off SKIP 1 LINE 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 PRINT COLUMN 2, x.cuenta_no, COLUMN 35, nombre_cta CLIPPED, COLUMN 66, x.debito using "###,###,##&.&&" LET debito = debito + x.debito IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,null,null,null, null,null,detalle1,null,x.debito,0,null,SUSER_SNAME(), GETDATE(),null,null) END IF ON LAST ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "5615" IF credito is null THEN LET credito = 0 END IF IF debito is null THEN LET debito = 0 END IF ###### Acumulando totales por columna PRINT COLUMN 4, "5615", COLUMN 35, nombre_cta CLIPPED; IF t_variacion > 0 THEN PRINT COLUMN 66, t_variacion using "###,###,##&.&&" LET debito = debito + t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"5615",null,null, null,null,null,detalle1,null, t_variacion,0,null,SUSER_SNAME(),GETDATE(), null,null) END IF ELSE PRINT COLUMN 84, t_variacion using "###,###,##&.&&" LET t_variacion = t_variacion * -1 LET credito = credito + t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"5615",null,null, null,null,null,detalle1,null,0, t_variacion,null,SUSER_SNAME(),GETDATE(), null,null) END IF END IF # Impresion detalle de la entrada con ordenes de compras FOR i = 1 TO idx 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 PRINT COLUMN 4, entrada27[i].cuenta_no, COLUMN 17, entrada27[i].cod_aux using "&&","-", entrada27[i].cod_sec using "&&&&", COLUMN 26, entrada27[i].num_doc using "&&&&&&", COLUMN 84, entrada27[i].valor using "###,###,##&.&&" 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 INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,null, entrada27[i].num_doc,entrada27[i].cod_aux, entrada27[i].cod_sec,detalle1,null,null,0, entrada27[i].valor,null, SUSER_SNAME(),GETDATE(),null,null) END IF END IF END FOR ###### Imprime total DEBITO y total CREDITO SKIP 1 LINE PRINT COLUMN 1,negrillas_on PRINT COLUMN 66,"--------------", COLUMN 84,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 66,debito USING "###,###,##&.&&", COLUMN 84,credito USING "###,###,##&.&&",negrillas_off LET debito = 0 LET credito = 0 SKIP 2 LINE PRINT COLUMN 1, detalle1 PRINT COLUMN 1,comp_off,negrillas_off SKIP 4 LINE END REPORT