{ ----------------------------------------------------------------------------- PROGRAMA : VEPRMT035 OBJETIVO : Mantenimiento de notas de credito REALIZADO POR : Juan F. soto FECHA : Junio 08, 1994 ----------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE arr_recibo ARRAY [200] OF RECORD aplica_a LIKE cctb00001.aplica_a, valor_pen DECIMAL(12,2), desc_p LIKE cctb00001.monto_desc, val_desc DECIMAL(12,2), valor_pag DECIMAL(12,2) END RECORD DEFINE arr_itbi ARRAY[10] OF DECIMAL(12,2) DEFINE nombre_emp,nom_cli CHAR(30) DEFINE p_num_doc,aplicar INTEGER DEFINE p_itbi,valor_fac,p_total,val_pen,valor2 DECIMAL(12,2) DEFINE fecha1 DATE DEFINE codi_cia SMALLINT DEFINE nombre_cta CHAR(30) DEFINE p_tipo_cliente,p_sec_cliente SMALLINT ####### Funcion para agregar un recibo de pago FUNCTION veprmt035() OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22 CALL pantalla() OPEN FORM vefmmt035 FROM "vefmmt035" DISPLAY FORM vefmmt035 DISPLAY "veprmt035" AT 4,3 DISPLAY " Notas de Credito" AT 6,31 MENU "OPCION" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CALL ccpcad035() COMMAND "Consultar-modificar" " Busca Registro Cancela Operacion" CALL ccpcmf035() COMMAND "Salir" EXIT MENU END MENU END FUNCTION FUNCTION ccpcad035() DEFINE porc_p DECIMAL(10,2) DEFINE emp SMALLINT DEFINE hoy DATE LET hoy = null LABEL volver: LET recibo.fecha_orig = fecha1 # Control Secuencial de las notas de creditos SELECT ult_recibo INTO p_num_doc FROM cctb00003 WHERE tipo_doc = "DE" LET p_num_doc = p_num_doc + 1 LET recibo.num_doc = p_num_doc DISPLAY BY NAME recibo.num_doc ATTRIBUTE (BOLD) LET recibo.cod_emp_sec = null LET recibo.fecha_orig = null LET recibo.tipo_cliente = null LET recibo.sec_cliente = null LET recibo.itbi = 0 INPUT BY NAME recibo.* WITHOUT DEFAULTS ## VENTANAS PARA BUSCAR LOS CLIENTES Y LOS EMPLEADOS { ON KEY (CONTROL-W) CASE WHEN INFIELD(tipo_cliente) CALL consulta_clientes() LET recibo.tipo_cliente = cliente_dir.tipo_cliente LET recibo.sec_cliente = cliente_dir.sec_cliente SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD) DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD) DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD) NEXT FIELD cod_emp_sec WHEN INFIELD(sec_cliente) CALL consulta_clientes() LET recibo.tipo_cliente = cliente_dir.tipo_cliente LET recibo.sec_cliente = cliente_dir.sec_cliente SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD) DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD) DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD) NEXT FIELD cod_emp_sec WHEN INFIELD(cod_emp_sec) CALL consulta_empleados() LET recibo.cod_emp_sec = transportista.sec_transp SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec DISPLAY BY NAME recibo.cod_emp_sec ATTRIBUTE (BOLD) LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD) NEXT FIELD fecha_orig END CASE } AFTER FIELD fecha_orig IF recibo.fecha_orig IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_orig END IF LET p_fechas = recibo.fecha_orig CALL prd() IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha_orig END IF LET fecha1 = recibo.fecha_orig AFTER FIELD concepto EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF FOR idx = 1 to 3 LET arr_recibo[idx].aplica_a = null LET arr_recibo[idx].valor_pen = null LET arr_recibo[idx].valor_pag = null LET arr_recibo[idx].val_desc = null DISPLAY arr_recibo[idx].aplica_a to s_recibo[idx].aplica_a DISPLAY arr_recibo[idx].valor_pen to s_recibo[idx].valor_pen DISPLAY arr_recibo[idx].valor_pag to s_recibo[idx].valor_pag DISPLAY arr_recibo[idx].val_desc to s_recibo[idx].val_desc END FOR LABEL arreglo: FOR idx = 1 TO 20 LET arr_recibo[idx].aplica_a = NULL LET arr_recibo[idx].valor_pen = NULL LET arr_recibo[idx].valor_pag = NULL LET arr_recibo[idx].desc_p = NULL END FOR ## AQUI SE INTRODUCEN LOS DATOS DEL ARREGLO INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.* ## VENTANA PARA BUSCAR LOS DOCUMENTOS BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() LET p_itbi = 0 AFTER FIELD aplica_a IF arr_recibo[curr].aplica_a IS NOT NULL THEN LET bandera = 0 CALL repetir1() IF bandera = 1 THEN NEXT FIELD aplica_a END IF # Busca el valor pendiente de la factura SELECT unique a.cod_sp,a.cod_sp_sec,a.cod_cia INTO p_tipo_cliente,p_sec_cliente,codi_cia FROM iptb00006 a WHERE a.num_doc = arr_recibo[curr].aplica_a and a.cod_mov = 12 and a.fecha > "010494" and a.status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD aplica_a END IF IF recibo.tipo_cliente is null or recibo.sec_cliente is null THEN LET recibo.tipo_cliente = p_tipo_cliente LET recibo.sec_cliente = p_sec_cliente END IF IF recibo.sec_cliente != p_sec_cliente THEN LET numero_msg = 214 CALL msg(numero_msg) NEXT FIELD aplica_a END IF SELECT a.sec_vend INTO recibo.cod_emp_sec FROM vetb00028 a WHERE a.tipo_cliente = recibo.tipo_cliente and a.sec_cliente = recibo.sec_cliente SELECT b.nombre INTO nom_cli FROM vetb00004 b WHERE b.tipo_cliente = recibo.tipo_cliente and b.sec_cliente = recibo.sec_cliente and b.status_t is null IF status = notfound THEN LET nom_cli = "NO E X I S T E" END IF DISPLAY BY NAME recibo.tipo_cliente,recibo.sec_cliente, nom_cli ATTRIBUTE (BOLD) LET descrip2 = null LET descrip3 = null SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec IF status = notfound THEN LET nombre_emp = "NO E X I S T E" ELSE LET nombre_emp = descrip2 clipped," ",descrip3 clipped END IF DISPLAY BY NAME recibo.cod_emp_sec,nombre_emp ATTRIBUTE (BOLD) SET EXPLAIN ON SELECT sum(a.cantidad_2*b.precio) INTO valor_fac FROM iptb00006 a,vetb00025 b WHERE a.num_doc = arr_recibo[curr].aplica_a and a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and a.cod_tipo = b.cod_tipo and a.cod_sec = b.cod_sec and a.cod_mov = 12 and b.sec_cliente is null and b.ventas = "1" and a.fecha > "010194" LET arr_recibo[curr].valor_pen = valor_fac DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen END IF BEFORE FIELD desc_p LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p AFTER FIELD desc_p IF arr_recibo[curr].desc_p is null THEN LET arr_recibo[curr].desc_p = 0 END IF # El campo VALOR_PEN gruarda el valor bruto de la nota decredito obtenida # por la multiplicacion de las cantidades devueltas por el movimiento 12 # por el precio actual del producto LET arr_recibo[curr].val_desc = arr_recibo[curr].valor_pen * (arr_recibo[curr].desc_p / 100) LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pag - arr_recibo[curr].val_desc # Calcula el itbi despues de restar el descuento al monto bruto LET p_itbi = arr_recibo[curr].valor_pag * .08 LET recibo.itbi = recibo.itbi + p_itbi DISPLAY BY NAME recibo.itbi DISPLAY arr_recibo[curr].valor_pag to s_recibo[scr_l].valor_pag DISPLAY arr_recibo[curr].val_desc to s_recibo[scr_l].val_desc AFTER FIELD valor_pag IF arr_recibo[curr].valor_pag is not null THEN IF arr_recibo[curr].aplica_a IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD aplica_a END IF END IF IF arr_recibo[curr].aplica_a is not null and arr_recibo[curr].valor_pen is not null THEN IF arr_recibo[curr].aplica_a IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD aplica_a END IF LET bandera = 0 CALL repetir1() IF bandera = 1 THEN NEXT FIELD aplica_a END IF IF arr_recibo[curr].valor_pag IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD valor_pag END IF LET p_total = 0 FOR idx = 1 TO arr_count() IF arr_recibo[idx].valor_pag is not null THEN LET p_total = p_total + arr_recibo[idx].valor_pag END IF END FOR DISPLAY BY NAME p_total ATTRIBUTE(BOLD) # Controla que el valor aplicado a las facturas no exceda el monto del recibo END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT START REPORT credito TO "%USHOME%\\archivo" UPDATE cctb00003 set ult_recibo = recibo.num_doc, us_crea = user, fech_crea = current, us_mod = user, fech_mod = current WHERE tipo_doc in ("DE") FOR idx = 1 to arr_count() IF arr_recibo[idx].aplica_a is not null THEN OUTPUT TO REPORT credito (recibo.*,arr_recibo[idx].*,nom_cli,descrip2,descrip3,codi_cia) END IF END FOR FINISH REPORT credito CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) LET emp = recibo.cod_emp_sec CLEAR FORM GOTO volver END FUNCTION ## Funcion para consultar/modificar un recibo de pago FUNCTION ccpcmf035() DEFINE usuario RECORD us_crea CHAR(9), fech_crea LIKE cctb00001.fech_crea END RECORD # WHENEVER ERROR CONTINUE ## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO CONSTRUCT CRITERIO ON num_doc,tipo_cliente,sec_cliente FROM cctb00001.num_doc, cctb00001.tipo_cliente,cctb00001.sec_cliente IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF LET selec = "SELECT UNIQUE num_doc,tipo_cliente,", " sec_cliente,cod_emp_sec,fecha_orig ", " FROM cctb00001 WHERE ",criterio clipped, " and tipo_doc = 'DE' AND status_t is null ", " ORDER BY 1,2" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME recibo.*,nom_cli,nombre_emp LABEL vuelve: MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME recibo.*,nom_cli,nombre_emp COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME recibo.*,nom_cli,nombre_emp COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME recibo.*,nom_cli,nombre_emp COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO recibo.* IF status = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT nombre INTO nom_cli FROM vetb00004 WHERE tipo_cliente = recibo.tipo_cliente and sec_cliente = recibo.sec_cliente SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003 WHERE num_emp = recibo.cod_emp_sec LET nombre_emp = descrip2 clipped," ",descrip3 clipped DISPLAY BY NAME recibo.*,nom_cli,nombre_emp COMMAND KEY ("N") "aNular" LET p_fechas = recibo.fecha_orig CALL prd() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ## AQUI SE REALIZA LA ANULACION DE UN REGISTRO UPDATE cctb00001 set status_t = "E" WHERE tipo_doc = "DE" and num_doc = recibo.num_doc LET numero_msg = 82 CALL msg(numero_msg) COMMAND "Retornar" CLEAR FORM FOR idx = 1 to 3 LET arr_recibo[idx].aplica_a = null LET arr_recibo[idx].valor_pen = null LET arr_recibo[idx].valor_pag = null DISPLAY arr_recibo[idx].aplica_a to s_recibo[idx].aplica_a DISPLAY arr_recibo[idx].valor_pen to s_recibo[idx].valor_pen DISPLAY arr_recibo[idx].valor_pag to s_recibo[idx].valor_pag END FOR EXIT MENU END MENU END FUNCTION FUNCTION repetir1() DEFINE ant_art RECORD aplica_a INTEGER, valor_pag INTEGER END RECORD LET ant_art.aplica_a = arr_recibo[curr].aplica_a LET ant_art.valor_pag = arr_recibo[curr].valor_pag FOR idx = 1 to arr_count() IF idx != curr THEN IF arr_recibo[idx].aplica_a IS NOT NULL AND arr_recibo[idx].valor_pag IS NOT NULL THEN IF arr_recibo[idx].aplica_a = ant_art.aplica_a AND arr_recibo[idx].valor_pag = ant_art.valor_pag THEN LET numero_msg = 21 CALL msg(numero_msg) LET bandera = 1 ELSE IF bandera != 1 THEN LET bandera = 0 END IF END IF END IF END IF END FOR END FUNCTION { FUNCTION consulta_clientes() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.nombre FROM nombre LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ", " FROM vetb00004 a", " WHERE ", "a.status_t is null AND ", criterio clipped, "ORDER BY 1,2 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_c END IF PREPARE busca_clientes FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_clientes CURSOR FOR busca_clientes LET idx = 1 FOREACH buscar_clientes INTO arr_clientes[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Cliente donde esta el cursor" DISPLAY ARRAY arr_clientes TO s_clientes.* LET curr1 = arr_curr() LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente LET descrip1 = arr_clientes[curr1].nombre LABEL salir_consulta_c: CLOSE WINDOW busqueda END FUNCTION FUNCTION consulta_empleados() OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.nom1_emp FROM descrip6 LET selec2 = "SELECT num_emp,a.nom1_emp,a.apell1_emp ", " FROM adtb00003 a", " WHERE ", "a.status_t is null AND ", criterio clipped, "ORDER BY 1 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_e END IF PREPARE busca_empleados FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_empleados CURSOR FOR busca_empleados LET idx = 1 FOREACH buscar_empleados INTO arr_empleados[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp LET empleados[idx].descrip6 = arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Empleado donde esta el cursor" DISPLAY ARRAY empleados TO s_empleados.* LET curr1 = arr_curr() LET transportista.sec_transp = empleados[curr1].cod_emp_sec LET descrip6 = empleados[curr1].descrip6 LABEL salir_consulta_e: CLOSE WINDOW busqueda2 END FUNCTION } REPORT credito(x,z,nombre_cli,nombre,apellido,cia) DEFINE x RECORD num_doc LIKE cctb00001.num_doc, tipo_cliente LIKE cctb00001.tipo_cliente, sec_cliente LIKE cctb00001.sec_cliente, cod_emp_sec LIKE cctb00001.cod_emp_sec, fecha_orig LIKE cctb00001.fecha_orig , itbi DECIMAL(12,2), concepto CHAR(60) END RECORD DEFINE z RECORD aplica_a LIKE cctb00001.aplica_a, valor_pen DECIMAL(12,2), desc_p LIKE cctb00001.monto_desc, valor_desc DECIMAL(12,2), valor_pag DECIMAL(12,2) END RECORD DEFINE cia SMALLINT DEFINE total_nc,total_bruto,sub_total,total_desc,itbis DECIMAL(12,2) DEFINE nombre_cli,nombre,apellido CHAR(30) DEFINE comp_on,comp_off,negrillas_on,negrillas_off,doble_on,doble_off CHAR(2) OUTPUT TOP MARGIN 0 LEFT MARGIN 4 PAGE LENGTH 33 ORDER BY x.num_doc FORMAT BEFORE GROUP OF x.num_doc LET negrillas_on = ASCII 27, ASCII 71 LET negrillas_off = ASCII 27, ASCII 72 LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET comp_off = ASCII 18 LET comp_on = ASCII 15 PRINT comp_off PRINT COLUMN 1, negrillas_on PRINT COLUMN 17, "E L E C T R O D O M E S T I C O S J U V I A R", COLUMN 70, "Pag.", COLUMN 74, pageno using "###" PRINT COLUMN 28, "Sistema de Ventas ", COLUMN 70, today using "dd/mm/yyyy" PRINT COLUMN 70, time PRINT COLUMN 22,doble_on,negrillas_on,"NOTAS DE CREDITO",doble_off, negrillas_off PRINT negrillas_on PRINT COLUMN 1, "Numero :",doble_on,x.num_doc using "&&&&&&",doble_off, negrillas_off PRINT COLUMN 1, "CLiente :",x.tipo_cliente using "&&","-",x.sec_cliente using "&&&&"," ",nombre_cli PRINT COLUMN 1, "Vendedor: ",x.cod_emp_sec using "&&&&"," ",nombre clipped,",", apellido PRINT COLUMN 1, "Fecha :",x.fecha_orig using "dd/mm/yy" PRINT COLUMN 1, "Concepto :",x.concepto LET nombre = null LET apellido = null LET nombre_cli = null PRINT COLUMN 1, negrillas_on, "--------------------------------------------------------------" PRINT COLUMN 4, "Documento", COLUMN 16, "Valor", COLUMN 24, "Porc", COLUMN 32, "Valor", COLUMN 45, "Valor" PRINT COLUMN 4, "Almacen", COLUMN 16, "Bruto", COLUMN 24, "Desc.", COLUMN 32, "Descuento", COLUMN 45, "Acreditado" PRINT COLUMN 1, "--------------------------------------------------------------",negrillas_off LET total_bruto = 0 LET total_desc = 0 LET sub_total = 0 ON EVERY ROW PRINT COLUMN 4, z.aplica_a using "&&&&&&", COLUMN 14, z.valor_pen using "##,###.##", COLUMN 24, z.desc_p using "%##.##", COLUMN 32, z.valor_desc using "##,###.##", COLUMN 45, Z.valor_pag using "##,###.##" LET total_bruto = total_bruto + z.valor_pen LET total_desc = total_desc + z.valor_desc LET sub_total = sub_total + z.valor_pag AFTER GROUP OF x.num_doc PRINT COLUMN 14, "---------", COLUMN 32, "----------", COLUMN 45, "----------" PRINT COLUMN 4, "Sub-Total", COLUMN 13, total_bruto using "###,###.##", COLUMN 31, total_desc using "###,###.##", COLUMN 44, sub_total using "###,###.##" PRINT COLUMN 4, "Itbi 8% ", COLUMN 45, x.itbi using "##,###.##" PRINT COLUMN 45,"----------" PRINT COLUMN 44, sub_total + x.itbi using "###,###.##" LET total_nc = sub_total + x.itbi LET total_nc = total_nc - total_desc ## Agrega registro al la tabla de cuentas por cobrar # Se esta tomando el campo VALOR_EFECTIVO para guardar el itbi, # VALOR_CHEQUE para guardar el total bruto, INSERT INTO cctb00001 values (null,cia,"DE", x.num_doc, x.tipo_cliente,x.sec_cliente,null, x.cod_emp_sec,x.fecha_orig,null, x.num_doc,null,null,total_nc, x.itbi,total_bruto,null, total_desc,null, USER,CURRENT,null,null) PAGE TRAILER SKIP 1 LINE PRINT COLUMN 6, " Preparado Por", COLUMN 40, " Autorizado Por" PRINT PRINT COLUMN 6, "---------------------------", COLUMN 36, "---------------------------" END REPORT