{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP042 OBJETIVO : COMISIONES POR COBROS PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : SEPTIEMBRE 9, 1997 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE fecha_inicial,fecha_final DATE , vend_ant SMALLINT DEFINE ventas RECORD sec_vend SMALLINT, compania SMALLINT, factura INTEGER, fecha_factura DATE, tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_bruto DECIMAL(10,2), monto_desc DECIMAL(10,2), monto_neto DECIMAL(10,2), status_t CHAR(1) , cond_pago LIKE vetb00002.cond_pago, num_doc LIKE cctb00001.num_doc, fecha_orig LIKE cctb00001.fecha_orig, valor_rec LIKE cctb00001.valor, itbi LIKE vetb00002.porc_itbi, comision DECIMAL(12,2), monto_dev DECIMAL(12,2) END RECORD FUNCTION ccprrp042() DEFINE p_costo DECIMAL(12,2) OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp016 FROM "vefmrp016" DISPLAY FORM vefmrp016 CALL pantalla() DISPLAY "ccprrp042" AT 4,3 DISPLAY "Comisiones Cobros " AT 6,31 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final BEFORE FIELD fecha_final LET fecha_final = today AFTER FIELD fecha_final IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT # Busca las ventas locales para el rango de fechas especificado DECLARE facturas CURSOR FOR SELECT b.cod_emp_sec,a.cod_cia, a.factura, a.fecha_factura, a.tipo_cliente, a.sec_cliente,a.sub_total,a.monto_desc,a.neto,a.status_t,a.cond_pago, b.num_doc,b.fecha_orig,b.valor + b.monto_desc,a.porc_itbi FROM vetb00002 a ,cctb00001 b WHERE b.aplica_a = a.factura AND b.tipo_doc IN ("PG","ND") AND b.fecha_orig BETWEEN fecha_inicial AND fecha_final AND b.status_t is null ORDER BY 1,12 DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY " " AT 20,14 START REPORT comision_p TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH facturas INTO ventas.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF ventas.itbi IS NOT NULL THEN LET ventas.monto_desc = 0 LET ventas.monto_bruto = ventas.monto_neto END IF IF ventas.status_t = "E" THEN LET ventas.monto_bruto = 0 LET ventas.monto_desc = 0 LET ventas.monto_neto = 0 END IF # VALORA LA FACTURA AL COSTO STD. LET p_costo = 0 SELECT SUM(a.cantidad*b.precio) INTO p_costo FROM vetb00003 a, vetb00025 b WHERE a.factura = ventas.factura 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 b.ventas = 1 AND b.sec_cliente IS NULL AND a.status_t IS NULL IF p_costo IS NULL THEN LET p_costo = 0 END IF IF ventas.valor_rec > 0 THEN LET ventas.monto_dev = ventas.valor_rec END IF OUTPUT TO REPORT comision_p(ventas.*,p_costo) LET ventas.monto_dev = 0 END FOREACH FINISH REPORT comision_p CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT comision_p(x,costo) DEFINE x RECORD sec_vend SMALLINT, compania SMALLINT, factura INTEGER, fecha_factura DATE, tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_bruto DECIMAL(10,2), monto_desc DECIMAL(10,2), monto_neto DECIMAL(10,2), status_t CHAR(1) , cond_pago LIKE vetb00002.cond_pago, num_doc LIKE cctb00001.num_doc, fecha_orig LIKE cctb00001.fecha_orig, valor_rec LIKE cctb00001.valor, itbi LIKE vetb00002.porc_itbi, comision DECIMAL(12,2), monto_dev DECIMAL(12,2) END RECORD, nombre,apellido CHAR(30) DEFINE acobrar,cobrado,beneficio,porc,costo,descuento DECIMAL(10,2) DEFINE tneto,tbeneficio,tt_comision,t_comision,valor_factura DECIMAL(10,2) DEFINE doble_on CHAR(2) DEFINE doble_off 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 normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 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 normall = ASCII 030 LET hora = time LET lj = (85 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "ccprrp042", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 78, "Pag. ",pageno using "###" PRINT COLUMN 25, " Comisiones Cobros ", COLUMN 78, today using "dd/mm/yy" PRINT COLUMN 25, " Comisiones Vendedores Por Cobro", COLUMN 78, hora PRINT COLUMN 1, "Del ", fecha_inicial USING "dd/mm/yy"," Al ", fecha_final using "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------" PRINT COLUMN 1, "Fecha", COLUMN 12, "Recibo", COLUMN 22, "Factura", COLUMN 41, "Neto ", COLUMN 49, "Beneficio", COLUMN 61, "Ck. Dev.", COLUMN 70, "Comision " PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------" BEFORE GROUP OF x.sec_vend LET tneto = 0 LET tbeneficio = 0 LET t_comision = 0 IF tt_comision IS NULL THEN LET tt_comision = 0 END IF SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a WHERE a.num_emp = x.sec_vend PRINT COLUMN 1, negrillas_on,nombre CLIPPED," ",apellido,negrillas_off SKIP 1 LINE BEFORE GROUP OF x.num_doc LET beneficio = 0 LET acobrar = 0 LET cobrado = 0 PRINT COLUMN 1, x.fecha_orig USING "dd/mm/yy", COLUMN 12, x.num_doc USING "&&&&&&"; ON EVERY ROW LET beneficio = x.monto_bruto - x.monto_desc - costo IF tneto IS NULL THEN LET tneto = 0 END IF IF tbeneficio IS NULL THEN LET tbeneficio = 0 END IF LET acobrar = x.monto_neto LET cobrado = x.valor_rec * -1 IF acobrar = cobrado THEN LET x.comision = beneficio * .02 ELSE IF acobrar > 0 THEN LET porc = (cobrado / acobrar) END IF LET beneficio = porc * beneficio LET x.comision = beneficio * .02 END IF LET t_comision = t_comision + x.comision IF x.valor_rec > 0 THEN LET x.valor_rec = 0 END IF PRINT COLUMN 22, x.factura USING "&&&&&&", COLUMN 35, x.valor_rec USING "###,###.##", COLUMN 48, beneficio USING "###,###.##", COLUMN 60, x.monto_dev USING "###,###.##", COLUMN 70, x.comision USING "((,(((.##)" LET tneto = tneto + x.valor_rec LET tbeneficio = tbeneficio + beneficio AFTER GROUP OF x.sec_vend PRINT COLUMN 35, "------------", COLUMN 48, "------------", COLUMN 60, "------------", COLUMN 70, "------------" PRINT COLUMN 20, "Total Vendedor", COLUMN 35, tneto USING "#,###,###.##", COLUMN 46, tbeneficio USING "#,###,###.##", COLUMN 60, GROUP SUM(x.monto_dev) USING "###,###.##", COLUMN 70, t_comision USING "(((,(((.##)" SKIP 1 LINE LET tt_comision = tt_comision + t_comision LET tneto = 0 LET tbeneficio = 0 LET t_comision = 0 ON LAST ROW PRINT COLUMN 70, "------------" PRINT COLUMN 20, "Total General", COLUMN 70, tt_comision USING "(,(((,(((.##)" LET t_comision = 0 PRINT normall END REPORT