{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP004 OBJETIVO : Listar las Entrada de Diario de Ventas PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Julio 28, 1993 ------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS DEFINE p_vetb02 RECORD LIKE vetb00002.* DEFINE p_vetb03 RECORD LIKE vetb00003.* DEFINE p_iptb02 RECORD LIKE iptb00002.* DEFINE p_vetb04 RECORD LIKE vetb00004.* DEFINE p_iptb20 RECORD LIKE iptb00020.* DEFINE p_vetb60 RECORD LIKE vetb00060.* DEFINE p_compania RECORD LIKE companias.* DEFINE salir CHAR(1) DEFINE debito,debito1,credito,credito1 DECIMAL(12,2) DEFINE select_ac,usuarios,clave,impresor,selec_v,archivo,archivo1 STRING DEFINE lj,idx_ac,ano,idx_a,idx_c,l SMALLINT DEFINE ano_act,c_ano CHAR(4) DEFINE fecha_2 CHAR(8) DEFINE nombre_cta CHAR(30) DEFINE fecha_ini_per CHAR(8), iptb05 RECORD LIKE iptb00005.*, Pclave CHAR(12), HANDLER om.SaxDocumentHandler, r_output,afecta,detalle_ent STRING DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off CHAR(3), cmd,imprime,copia CHAR(150) DEFINE detalle CHAR(30) DEFINE mes SMALLINT DEFINE tasa DECIMAL(5,2) DEFINE p_fecha,fecha1, fecha2 DATE DEFINE nominas CHAR(1) DEFINE entra CHAR(14) DEFINE entra1 CHAR(5) DEFINE tipo_papel SMALLINT DEFINE mano_ob,material,material9,material6,gastos DECIMAL(12,2) ###### Variables para almacenar los datos selecionados ###### Variables que la almacenan la informacion enviada al reporte DEFINE salir1 CHAR(1) DEFINE idx INTEGER END GLOBALS 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 * INTO p_compania.* FROM companias CALL edprrp004() END MAIN FUNCTION edprrp004() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp004 FROM "edfmrp004" DISPLAY FORM edfmrp004 DISPLAY "edprrp004" AT 4,3 DISPLAY "Entrada de Diario Pilas Donadas Y Promociones" AT 6,17 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalle AFTER FIELD entra SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" # NEXT FIELD entra END IF LET entra1 = entra BEFORE FIELD fecha1 SELECT MAX(fecha) INTO p_fecha FROM cgtb00004 WHERE ref[1,5] = entra1 LET fecha1 = p_fecha + 1 DISPLAY BY NAME fecha1 AFTER FIELD fecha1 IF fecha1 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" #NEXT FIELD fecha1 END IF IF fecha1 <= p_fecha THEN ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA" #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 SELECT UNIQUE ref FROM cgtb00004 where ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" #NEXT FIELD fecha2 END IF END INPUT ##### Creando la facilidad para cancelar proceso con DELETE O SUPR IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF LET debito1 = 0 LET debito = 0 LET credito1 = 0 LET credito = 0 # Busca la informacion requerida DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) # Busca los codigos de los productos terminados # Busca las ventas reales del ano actual hasta el mes indicado anteriormente LET selec_v = "SELECT a.*,b.*,c.*,e.* FROM vetb00002 a INNER JOIN vetb00060 e ON a.ventas = e.ventas,vetb00003 b, iptb00002 c ", "WHERE a.factura = b.factura AND b.cod_n = c.cod_n AND ", " b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND ", " b.cod_sec = c.cod_sec AND CONVERT(DATE,a.fecha_factura,103) BETWEEN '",fecha1," '", " AND '",fecha2," '"," AND a.cond_pago=1 AND a.ventas = '1' AND ", " a.status_t IS NULL" DISPLAY " " AT 19,14 DISPLAY "<>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH movi_vr INTO p_vetb02.*,p_vetb03.*,p_iptb02.*, p_vetb60.* IF int_flag THEN CALL msg(2) LET int_flag = false RETURN END IF LET p_vetb02.sub_total = p_vetb03.cantidad * p_vetb03.precio LET p_vetb02.monto_desc = (p_vetb03.cantidad * p_vetb03.precio) * (p_vetb02.porc_desc/100) LET p_vetb02.monto_itbi = (p_vetb02.sub_total - p_vetb02.monto_desc)* (p_vetb02.porc_desc/100) LET p_vetb02.neto = p_vetb02.sub_total - p_vetb02.monto_desc + p_vetb02.monto_itbi OUTPUT TO REPORT reporte4(p_vetb02.*,p_vetb03.*,p_iptb02.*,p_vetb60.*) #OUTPUT TO REPORT entrada04(p_vetb02.*,p_vetb03.*,p_iptb02.*,p_vetb60.*) END FOREACH FINISH REPORT reporte4 #FINISH REPORT entrada04 END FUNCTION REPORT reporte4(x,v,b,c) DEFINE x RECORD LIKE vetb00002.* DEFINE v RECORD LIKE vetb00003.* DEFINE b RECORD LIKE iptb00002.* DEFINE c RECORD LIKE vetb00060.* DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off, doce,normal CHAR(2) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.sec_vend,b.cod_cia,v.cod_n FORMAT PAGE HEADER { LET doble_on = ASCII 14 LET doble_off = ASCII 20 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 LET lj = (80 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT comp_off PRINT COLUMN 1, "edprrp025", COLUMN lj, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2 PRINT COLUMN l, "Sistema de Entradas Al Diario", COLUMN 75, today using "dd/mm/yyyy" LET l = (80 - LENGTH("Ventas al Contado")) / 2 PRINT COLUMN l, "Ventas ", COLUMN 78, hora PRINT COLUMN 34, "Al ",fecha2 USING "dd/mm/yyyy" { IF pageno > 1 THEN PRINT COLUMN 1,ASCII 18,ASCII 27, ASCII 80 PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entra,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 50, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" ELSE } # PRINT COLUMN 1,ASCII 27, ASCII 80 PRINT COLUMN 1,comp_on PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "------------------------------" PRINT COLUMN 49, "MONTO", COLUMN 64, "MONTO", COLUMN 79, "MONTO", COLUMN 94, "MONTO", COLUMN 121, "CANTIDADES" PRINT COLUMN 1, "PRODUCTO", COLUMN 49, "BRUTO", COLUMN 60, "DESCUENTO", COLUMN 79, "ITBI", COLUMN 94, "NETO", COLUMN 123, "VENDIDAS" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "------------------------------" SKIP 1 LINE --END IF BEFORE GROUP OF x.sec_vend SKIP 2 LINE IF x.sec_vend = 144 THEN PRINT "**** SAN CRISTOBAL ****" ELSE PRINT "**** SANTO DOMINGO ****" END IF BEFORE GROUP OF b.cod_cia SKIP 1 LINE IF b.cod_cia = 1 THEN PRINT "PRODUCTO LOCAL" ELSE PRINT "PRODUCTO IMPORTADO" END IF BEFORE GROUP OF v.cod_n SELECT a.producto INTO p_iptb20.producto FROM iptb00020 a WHERE a.cod_n = v.cod_n AFTER GROUP OF v.cod_n PRINT COLUMN 1, v.cod_n USING "&"," ",p_iptb20.producto CLIPPED, COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##", COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##", COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##", COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##", COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###" AFTER GROUP OF b.cod_cia PRINT COLUMN 40, "--------------", COLUMN 55, "--------------", COLUMN 70, "--------------", COLUMN 85, "--------------", COLUMN 115, "---------------" PRINT COLUMN 1, "Total Por Origen Producto ---> ", COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##", COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##", COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##", COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##", COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###" AFTER GROUP OF x.sec_vend PRINT COLUMN 40, "--------------", COLUMN 55, "--------------", COLUMN 70, "--------------", COLUMN 85, "--------------", COLUMN 115, "---------------" PRINT COLUMN 1, "Total Por Localidad ---> ", COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##", COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##", COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##", COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##", COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###" ON LAST ROW PRINT COLUMN 40, "--------------", COLUMN 55, "--------------", COLUMN 70, "--------------", COLUMN 85, "--------------", COLUMN 115, "---------------" PRINT COLUMN 1, "Total Ventas ---> ", COLUMN 40, SUM(x.sub_total) USING "###,###,###.##", COLUMN 55, SUM(x.monto_desc) USING "###,###,###.##", COLUMN 70, SUM(x.monto_itbi) USING "###,###,###.##", COLUMN 85, SUM(x.neto) USING "###,###,###.##", COLUMN 115, SUM(v.cantidad) USING "###,###,###.###" PRINT COLUMN 40, "==============", COLUMN 55, "==============", COLUMN 70, "==============", COLUMN 85, "==============", COLUMN 115, "===============" PRINT ASCII 27, ASCII 80 SKIP TO TOP OF PAGE END REPORT FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) SELECT * INTO p_compania.* FROM companias LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 LET fecha = today USING "dd/mm/yyyy" LET hora = time DISPLAY p_compania.nombre CLIPPED AT 4,l ATTRIBUTE (REVERSE,YELLOW) DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) END FUNCTION REPORT entrada04(x,v,b,f,p_clave) DEFINE x RECORD LIKE vetb00002.* DEFINE v RECORD LIKE vetb00003.* DEFINE b RECORD LIKE iptb00002.* DEFINE f RECORD cuenta_no VARCHAR(8), departamento INTEGER, cod_n INTEGER, sec_vend INTEGER, cod_cia SMALLINT, id VARCHAR(2) END RECORD DEFINE vendedor,imp,imp1 CHAR (1) DEFINE descrip_venta CHAR(22) DEFINE descrip1 CHAR(30) DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off, doce,normal CHAR(2) DEFINE hora CHAR(5), p_clave CHAR(12) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY p_clave #x.sec_vend,b.cod_cia,v.cod_n FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 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 LET lj = (80 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT comp_off PRINT COLUMN 1, "edprrp004", COLUMN lj, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2 PRINT COLUMN l, "Sistema de Entradas Al Diario", COLUMN 75, today using "dd/mm/yyyy" LET l = (80 - LENGTH("Ventas al Contado")) / 2 PRINT COLUMN l, "Ventas al Contado", COLUMN 78, hora PRINT COLUMN 34, "Al ",fecha2 USING "dd/mm/yyyy" -- IF pageno > 1 THEN PRINT COLUMN 1,ASCII 18,ASCII 27, ASCII 80 PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entra,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 50, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" AFTER GROUP OF p_clave DISPLAY "P_CLAVE ", p_clave # BUSCA EL NOMBRE DE LA CUENTA # BUSCA NOMBRE DE LA CUENTA LET nombre_cta = NULL SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = f.cuenta_no IF STATUS = NOTFOUND THEN LET nombre_cta = "NO EXISTE CTA" END IF LET debito1 = 0 CASE WHEN f.id = "DE" LET debito1 = GROUP SUM(x.monto_desc) IF debito1 IS NULL THEN LET debito1 = 0 END IF IF debito1 IS NULL THEN LET debito1 = 0 END IF IF debito1 <> 0 THEN display "debito ",debito1 LET debito = debito + debito1 PRINT COLUMN 2, f.cuenta_no, COLUMN 11, f.departamento USING "<<<<", COLUMN 18, nombre_cta CLIPPED, COLUMN 50, debito1 using "((#,###,##&.&&)" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,f.cuenta_no,f.departamento,null, null,null,null,detalle,null,debito1, 0,null,user,current,null,null) END IF END IF WHEN f.id = "BR" LET credito1 = GROUP SUM(x.sub_total) IF credito1 IS NULL THEN LET credito1 = 0 END IF IF credito1 <> 0 THEN display "credito ",credito1 LET credito = credito + credito1 PRINT COLUMN 2, f.cuenta_no, COLUMN 11, f.departamento USING "<<<<", COLUMN 18, nombre_cta CLIPPED, COLUMN 50, credito1 using "((#,###,##&.&&)" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,f.cuenta_no,f.departamento,null, null,null,null,detalle,null,0,credito1, 0,null,user,current,null,null) END IF END IF END CASE ON LAST ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "1100" IF STATUS = NOTFOUND THEN LET nombre_cta = "NO EXISTE CTA" END IF LET debito1 = 0 LET debito1 = SUM(x.neto) using "(((,(((,##&.&&)" DISPLAY "DEBITO ",debito1 IF debito1 IS NULL THEN LET debito1 = 0 END IF IF debito1 IS NULL THEN LET debito1 = 0 END IF IF debito1 <> 0 THEN LET debito = debito + debito1 PRINT COLUMN 2, "1100", COLUMN 18, nombre_cta CLIPPED, COLUMN 50, debito1 using "(((,(((,##&.&&)" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"1100",null,null,null, null,null,detalle,null,debito1,0,null, user,current,null,null) END IF END IF #----------------------------------------------------------------------------- LET nombre_cta = NULL SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "2128-01" IF STATUS = NOTFOUND THEN LET nombre_cta = "NO EXISTE CTA" END IF LET credito1 = 0 LET credito1 = SUM(x.monto_itbi) using "(((,(((,##&.&&)" display "credito ",credito1 IF credito1 IS NULL THEN LET credito1 = 0 END IF IF credito1 <> 0 THEN LET credito = credito + credito1 PRINT COLUMN 2, "2128-01", COLUMN 18, nombre_cta CLIPPED, COLUMN 65, credito1 using "((#,###,##&.&&)" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"2128-01",null,null, null,null,null,detalle,null,0, credito1,null,user,current,null,null) END IF END IF PRINT COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 50,debito USING "###,###,##&.&&", COLUMN 65,credito USING "###,###,##&.&&",negrillas_off #LET material1 = 0 #LET mano_ob1 = 0 #LET gasto1 = 0 ##LET material6 = 0 #LET total1 = 0 SKIP 2 LINE PRINT COLUMN 1, detalle PRINT COLUMN 1,comp_off,negrillas_off SKIP 4 LINE END REPORT