{ ---------------------------------------------------------------------------- PROGRAMA : CGPRRP029 OBJETIVO : PANORAMICO ANALISIS DE BENEFICIOS POR VENDEDOR PROGRAMADOR: JUAN F. SOTO FECHA : NOVIEMBRE 28, 1996. --------------------------------------------------------------------------- } GLOBALS "cgprgb000.4gl" DEFINE m_mes,p_ano,p_mes SMALLINT, fecha1,fecha2,fech1,fech2,fecha_c DATE DEFINE cost_vta RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER END RECORD, fecha_ingreso DATE, descripcion_cta VARCHAR(30) 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 cgprrp029() END MAIN FUNCTION cgprrp029() DEFINE vendedor RECORD sec_vend SMALLINT, nombre CHAR(20), apellido CHAR(20), tipo_Emp CHAR(2), bruto DECIMAL(12,2), neto DECIMAL(12,2), costo_venta DECIMAL(12,2), salario DECIMAL(12,2), comision DECIMAL(12,2), descuento DECIMAL(12,2) END RECORD OPTIONS FORM LINE 9, ERROR LINE 24 OPEN FORM cgfmrp029 FROM "cgfmrp029" DISPLAY FORM cgfmrp029 CALL pantalla() DISPLAY "cgprrp029" AT 4,3 ATTRIBUTE(RED) DISPLAY "Panoramico Analisis De Beneficos Por Vendedor" AT 6,15 ATTRIBUTE(BLACK) DIALOG ATTRIBUTE (UNBUFFERED) INPUT BY NAME p_ano ,p_mes BEFORE INPUT LET p_ano = YEAR(TODAY) LET p_mes = MONTH(TODAY) USING "&&" DISPLAY BY NAME p_ano,p_mes DISPLAY "MES ",p_mes AFTER FIELD p_mes SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha_c FROM prdtable a WHERE a.ano = p_ano and a.mes = p_mes AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF END INPUT CONSTRUCT criterio ON b.num_emp FROM kvendedor BEFORE CONSTRUCT CALL cvendedor() ON ACTION genera_reporte LET selec= "SELECT DISTINCT b.num_emp , ", " b.nom1_emp,b.apell1_emp,b.nomina ", "FROM vetb00002 a,adtb00003 b ", "WHERE a.sec_vend = b.num_emp AND ",criterio clipped, " AND (b.status_t IS NULL OR b.status_t IN ('I')) ", " and CONVERT(CHAR(10),a.fecha_factura,103) between '",fecha1,"' and '",fecha_c ,"' ", "ORDER BY b.num_emp " PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca LET r_output='XLS' CALL configureoutput(r_output) RETURNING handler START REPORT analisis TO XML HANDLER handler DISPLAY "<< Reporte Generandose... Espere Por Favor >>" AT 19,14 WHILE STATUS != NOTFOUND FETCH busca INTO vendedor.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF OUTPUT TO REPORT analisis(vendedor.*) END WHILE FINISH REPORT analisis EXIT PROGRAM END CONSTRUCT ON ACTION CANCEL EXIT PROGRAM END DIALOG END FUNCTION REPORT analisis(x) DEFINE x RECORD sec_vend SMALLINT, nombre CHAR(20), apellido CHAR(20), tipo_emp CHAR(2), bruto DECIMAL(12,2), neto DECIMAL(12,2), costo_venta DECIMAL(12,2), salario DECIMAL(12,2), comision DECIMAL(12,2), descuento DECIMAL(12,2) END RECORD, nombre_mes CHAR(12) DEFINE bruto,descuento,costo_v,salario,comision,total_g,neto,beneficio_b DYNAMIC ARRAY OF DECIMAL(12,2), t_bruto,t_descuento,t_costo_v,t_salario,t_comision,t_total_g,t_neto, t_beneficio_b,t_beneficio_n,t_regalia DECIMAL(12,2), porc_v,regalia,bonificacion,tt_bruto,tt_descuento,tt_costo_v, tt_salario,tt_comision,tt_total_g,tt_neto,tt_beneficio_b, t_costo,tt_beneficio_n,tt_regalia,tt_incentivo,incentivo,gastos,t_gastos, t_incentivo DECIMAL(12,2), l SMALLINT OUTPUT LEFT MARGIN 0 RIGHT MARGIN 0 PAGE LENGTH 100 FORMAT PAGE HEADER SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = p_mes PRINT COLUMN 1, "cgprrp029", COLUMN 90, p_compania.nombre, COLUMN 200, "PAGINA: ",PAGENO USING "###" PRINT COLUMN 1, "JFS", COLUMN 90, " ANALISIS BENEFICIO POR VENDEDOR", COLUMN 197,TODAY USING "DD/MM/YY" PRINT COLUMN 90, "CORRESPONDIENTE AL PERIODO OCTUBRE - ",nombre_mes clipped, "/",p_ano using "####", COLUMN 197, TIME PRINT "----------------------------------------------------------------------------", "----------------------------------------------------------------------------------------------------------------------------------------------------------" LET l = 40 DECLARE busca10 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca10 INTO fech1, fech2 --FOR idx =1 TO p_mes LET l = l + 14 --END FOR END FOREACH PRINT COLUMN l," TOTAL", COLUMN l+14, " TOTAL" LET l = 40 DECLARE busca11 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca11 INTO fech1,fech2,m_mes --FOR idx =1 TO p_mes SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = m_mes PRINT COLUMN l, nombre_mes clipped; LET l = l + 14 --END FOR END FOREACH PRINT COLUMN l," ACTUAL", COLUMN l+14, "ANTERIOR" PRINT "----------------------------------------------------------------------------", "----------------------------------------------------------------------------------------------------------------------------------------------------------" BEFORE GROUP OF x.sec_vend PRINT COLUMN 1,"VENDEDOR: ","(",x.sec_vend using "<<<<",")", x.nombre clipped," ",x.apellido SKIP 1 LINE LET t_costo = 0 LET t_bruto = 0 LET t_descuento = 0 LET t_neto = 0 LET t_comision = 0 LET t_salario = 0 LET t_beneficio_b = 0 LET t_beneficio_n = 0 LET t_regalia = 0 LET t_costo_v = 0 LET tt_total_g = 0 LET t_total_g = 0 LET tt_costo_v = 0 FOR idx = 1 TO 12 LET total_g[idx] = 0 LET bruto[idx] = 0 LET neto[idx] = 0 LET comision[idx] = 0 LET costo_v[idx] = 0 LET beneficio_b[idx] = 0 LET salario[idx] = 0 END FOR DECLARE busca12 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca12 INTO fech1,fech2 END FOREACH # BUSCA E IMPRIME LAS VENTAS BRUTAS DISPLAY "BUSCANDO VENTAS BRUTAS" AT 17,19 PRINT COLUMN 9, "Ventas Brutas"; LET l = 40 DECLARE busca13 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca13 INTO fech1,fech2,m_mes SELECT SUM(a.sub_total*b.tasa) INTO x.bruto FROM vetb00002 a,cgtb00084 b WHERE (a.factura=a.factura AND a.cod_cia=a.cod_cia AND a.ventas = b.ventas AND a.sec_vend = x.sec_vend AND a.fecha_factura between fech1 AND fech2 AND a.status_t IS NULL AND a.sec_cliente = a.sec_cliente) AND a.tipo_cliente = b.tipo_cliente AND b.mes = m_mes AND b.ano = YEAR(a.fecha_factura) IF x.bruto IS NULL THEN LET x.bruto = 0 END IF LET bruto[m_mes] = x.bruto LET t_bruto = t_bruto + bruto[m_mes] PRINT COLUMN l,x.bruto USING "##,###,###"; LET l = l + 14 END FOREACH PRINT COLUMN l, t_bruto USING "##,###,###"; DISPLAY " " AT 17,19 DISPLAY "BUSCANDO VENTAS BRUTAS DEL ANO ANTERIOR" AT 17,19 # Busca Ventas Brutas Del Ano Anterior SELECT MIN(fecha_inicio) INTO fecha1 FROM prdtable WHERE ano = p_ano -1 SELECT fecha_corte INTO fecha2 FROM prdtable WHERE ano = p_ano -1 and mes = p_mes SELECT SUM(a.sub_total*b.tasa) INTO tt_bruto FROM vetb00002 a,cgtb00084 b WHERE (a.factura=a.factura AND a.cod_cia=a.cod_cia AND a.ventas = b.ventas AND a.sec_vend = x.sec_vend AND a.fecha_factura between fecha1 AND fecha2 AND a.status_t IS NULL AND a.sec_cliente = a.sec_cliente) AND a.tipo_cliente = a.tipo_cliente AND b.mes = m_mes AND b.ano = YEAR(a.fecha_factura) PRINT COLUMN l+14, tt_bruto USING "##,###,###" #----------------------------------------------------------------------- # BUSCA E IMPRIME EL DESCUENTO DISPLAY " " AT 17,19 DISPLAY "BUSCANDO DESCUENTO" AT 17,19 PRINT COLUMN 9, "MENOS:Descuentos S/Ventas"; LET l = 40 DECLARE busca14 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca14 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes SELECT SUM(a.monto_desc*b.tasa) INTO x.descuento FROM vetb00002 a,cgtb00084 b WHERE (a.factura=a.factura AND a.cod_cia=a.cod_cia AND a.ventas = b.ventas AND a.sec_vend = x.sec_vend AND a.fecha_factura between fech1 AND fech2 AND a.status_t IS NULL AND a.sec_cliente = a.sec_cliente) AND a.tipo_cliente = b.tipo_cliente AND b.mes = m_mes AND b.ano = YEAR(a.fecha_factura) IF x.descuento IS NULL THEN LET x.descuento = 0 END IF LET descuento[m_mes] = x.descuento LET t_descuento = t_descuento + descuento[m_mes] PRINT COLUMN l,x.descuento USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH PRINT COLUMN l, t_descuento USING "##,###,###"; SELECT SUM(a.monto_desc*b.tasa) INTO tt_descuento FROM vetb00002 a,cgtb00084 b WHERE (a.factura=a.factura AND a.cod_cia=a.cod_cia AND a.ventas = b.ventas AND a.sec_vend = x.sec_vend AND a.fecha_factura between fecha1 AND fecha2 AND a.status_t IS NULL AND a.sec_cliente = a.sec_cliente) AND a.tipo_cliente = b.tipo_cliente AND b.mes = m_mes AND b.ano = YEAR(a.fecha_factura) PRINT COLUMN l+14, tt_descuento USING "##,###,###" #--------------------------------------------------------------------------- # BUSCA E IMPRIME LAS VENTAS NETAS SKIP 1 LINE PRINT COLUMN 9, "Ventas Netas"; LET l = 40 DECLARE busca15 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca15 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes LET x.neto = bruto[m_mes] - descuento[m_mes] LET neto[m_mes] = x.neto LET t_neto = t_neto + neto[m_mes] PRINT COLUMN l,x.neto USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH LET tt_neto = tt_bruto - tt_descuento PRINT COLUMN l, t_neto USING "##,###,###", COLUMN l+14, tt_neto USING "##,###,###" #--------------------------------------------------------------------------- # BUSCA EL COSTO DE VENTA DISPLAY "BUSCANDO COSTO DE VENTA" AT 17,19 PRINT COLUMN 9, "MENOS:Costo De Venta"; LET l = 40 DECLARE busca16 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca16 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes LET t_costo = 0 DECLARE busca_cos CURSOR FOR SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, SUM(b.cantidad) FROM vetb00002 a,vetb00003 b WHERE (a.factura = b.factura AND a.cod_cia = a.cod_cia AND a.sec_vend = x.sec_vend AND a.fecha_factura BETWEEN fech1 AND fech2 AND a.status_t IS NULL and a.sec_cliente = a.sec_cliente) GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec FOREACH busca_cos INTO cost_vta.* LET x.costo_venta = 0 IF cost_vta.cod_n = 3 THEN SELECT a.costo_lq INTO x.costo_venta FROM cttb00036 a,prdtable b WHERE (a.fecha_lq BETWEEN b.fecha_inicio AND b.fecha_corte AND a.ventas = "1" AND a.cod_n = cost_vta.cod_n AND a.cod_grupo = cost_vta.cod_grupo AND a.cod_tipo = cost_vta.cod_tipo AND a.cod_sec = cost_vta.cod_sec) AND b.mes = m_mes AND b.ano = p_ano ELSE SELECT a.labor+a.material+a.gastos INTO x.costo_venta FROM iptb00004 a WHERE (a.mes_fin = '12') AND a.ano = p_ano AND a.ventas = "1" AND a.cod_n = cost_vta.cod_n AND a.cod_grupo = cost_vta.cod_grupo AND a.cod_tipo = cost_vta.cod_tipo AND a.cod_sec = cost_vta.cod_sec AND a.status_t IS NULL END IF IF x.costo_venta IS NULL THEN LET x.costo_venta = 0 END IF { PRINT cost_vta.cod_n using "&"," ",cost_vta.cod_grupo using "&"," ", cost_vta.cod_tipo using "&&"," ",cost_vta.cod_sec using "&&&"," ", cost_vta.cantidad using "##,###,###"," ",x.costo_venta using "###.###" } LET t_costo = t_costo + (cost_vta.cantidad*x.costo_venta) END FOREACH LET costo_v[m_mes]= t_costo LET t_costo_v = t_costo_v + costo_v[m_mes] PRINT COLUMN l, t_costo USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH PRINT COLUMN l, t_costo_v USING "##,###,###"; DISPLAY " " AT 17,19 DISPLAY "BUSCANDO EL COSTO DE VENTAS DEL ANO ANTERIOR " AT 17,19 # BUSCA EL COSTO DE VENTAS DEL ANO ANTERIOR DECLARE busca17 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano and fecha_corte <= fecha_c GROUP BY mes ORDER BY 1 FOREACH busca17 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes DECLARE busca_acos CURSOR FOR SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, SUM(b.cantidad) FROM vetb00002 a,vetb00003 b,prdtable c WHERE (a.factura = b.factura AND a.cod_cia = a.cod_cia AND a.ventas = "1" AND a.sec_vend = x.sec_vend AND a.fecha_factura BETWEEN c.fecha_inicio AND c.fecha_corte AND a.status_t IS NULL and a.sec_cliente = a.sec_cliente) and c.mes = m_mes and c.ano = p_ano - 1 GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec LET t_costo = 0 FOREACH busca_acos INTO cost_vta.* LET x.costo_venta = 0 IF cost_vta.cod_n = 3 THEN SELECT a.costo_lq INTO x.costo_venta FROM cttb00036 a,prdtable b WHERE (a.fecha_lq BETWEEN b.fecha_inicio AND b.fecha_corte AND a.ventas = "1" AND a.cod_n = cost_vta.cod_n AND a.cod_grupo = cost_vta.cod_grupo AND a.cod_tipo = cost_vta.cod_tipo AND a.cod_sec = cost_vta.cod_sec) AND b.mes = m_mes AND b.ano = p_ano - 1 ELSE SELECT AVG(a.labor+a.material+a.gastos) INTO x.costo_venta FROM iptb00004 a WHERE a.mes_fin = '12' AND a.ano = p_ano -1 AND a.ventas = "1" AND a.cod_n = cost_vta.cod_n AND a.cod_grupo = cost_vta.cod_grupo AND a.cod_tipo = cost_vta.cod_tipo AND a.cod_sec = cost_vta.cod_sec AND a.status_t IS NULL END IF IF x.costo_venta IS NULL THEN LET x.costo_venta = 0 END IF LET t_costo = t_costo + (cost_vta.cantidad*x.costo_venta) END FOREACH LET tt_costo_v = tt_costo_v + t_costo --END FOR END FOREACH PRINT COLUMN l+13, tt_costo_v USING "###,###,###" DISPLAY " " AT 17,19 #---------------------------------------------------------------------- # BENEFICIO BRUTO SKIP 1 LINE PRINT COLUMN 9, "Beneficio Bruto"; LET l = 40 DECLARE busca18 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY 1 FOREACH busca18 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes LET beneficio_b[m_mes] = neto[m_mes] - costo_v[m_mes] LET t_beneficio_b = t_beneficio_b + beneficio_b[m_mes] PRINT COLUMN l, beneficio_b[m_mes] USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH LET tt_beneficio_b = tt_neto - tt_costo_v PRINT COLUMN l, t_beneficio_b USING "##,###,###", COLUMN l+14, tt_beneficio_b USING "##,###,###" #---------------------------------------------------------------------- # IMPRIME EL PORCENTAJE VENTAS NETAS PRINT COLUMN 9, "% S/Ventas Netas"; LET l = 40 DECLARE busca19 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY 1 FOREACH busca19 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes LET porc_v = 0 IF neto[m_mes] != 0 THEN LET porc_v = (beneficio_b[m_mes]/neto[m_mes]) * 100 END IF PRINT COLUMN l, porc_v USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH IF tt_neto != 0 THEN PRINT COLUMN l+14, (tt_beneficio_b/tt_neto) * 100 USING "##,###,###" END IF #---------------------------------------------------------------------- # GASTOS DIRECTOS # BUSQUEDA DEL SALARIO DEL VENDEDOR DISPLAY "BUSCANDO SALARIO NORMAL" AT 17,19 SKIP 1 LINE PRINT COLUMN 5, "GASTOS DIRECTOS" SKIP 1 LINE PRINT COLUMN 9, "Salario Normal"; LET l = 40 DECLARE busca20 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca20 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes SELECT SUM(a.valor) INTO x.salario FROM notb00008 a WHERE a.num_emp = x.sec_vend AND a.cod_mov in(1,5) AND a.fecha between fech1 AND fech2 IF x.salario IS NULL THEN LET x.salario = 0 END IF LET total_g[m_mes] = total_g[m_mes] + x.salario LET t_total_g = t_total_g + total_g[m_mes] LET salario[m_mes] = x.salario LET t_salario = t_salario + x.salario PRINT COLUMN l, x.salario USING "##,###,###"; LET l = l + 14 --END FOR IF STATUS = NOTFOUND THEN EXIT FOREACH END IF END FOREACH # Busca el Salario del Ano Anterior SELECT SUM(a.valor) INTO tt_salario FROM notb00008 a ,prdtable b WHERE b.mes <= m_mes AND b.ano = p_ano -1 AND (a.num_emp = x.sec_vend AND a.cod_mov in(1,5) AND a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte) IF tt_salario IS NULL THEN LET tt_salario = 0 END IF LET tt_total_g = tt_total_g + tt_salario PRINT COLUMN l,t_salario USING "##,###,###", COLUMN l+14, tt_salario USING "##,###,###" #----------------------------------------------------------------------- # BUSCA LA COMISION PAGADA EN EL MES PARA EL VENDEDOR DISPLAY "BUSCANDO COMISIONES S/VENTAS" AT 17,19 PRINT COLUMN 9, "Comisiones S/Ventas"; LET l = 40 DECLARE busca21 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca21 INTO fech1,fech2,m_mes SELECT SUM(a.valor) INTO x.comision FROM notb00008 a WHERE a.num_emp = x.sec_vend AND a.cod_mov = 40 AND a.fecha BETWEEN fech1 AND fech2 IF x.comision IS NULL THEN LET x.comision = 0 END IF LET total_g[m_mes] = total_g[m_mes] + x.comision LET t_total_g = t_total_g + total_g[m_mes] LET comision[m_mes] = x.comision LET t_comision = t_comision + x.comision PRINT COLUMN l, x.comision USING "##,###,###"; LET l = l + 14 END FOREACH SELECT SUM(a.valor) INTO tt_comision FROM notb00016 a ,prdtable b WHERE b.mes <= p_mes AND b.ano = p_ano - 1 AND (a.num_emp = x.sec_vend AND a.cod_mov = 40 AND a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte) IF tt_comision IS NULL THEN LET tt_comision = 0 END IF LET tt_total_g = tt_total_g + tt_comision PRINT COLUMN l,t_comision USING "##,###,###", COLUMN l+14, tt_comision USING "##,###,###" #----------------------------------------------------------------------- # BUSCA EL INCENTIVO SOBRE VENTAS PAGADA EN EL MES PARA EL VENDEDOR DISPLAY "BUSCANDO INCENTIVO S/VENTAS" AT 17,19 PRINT COLUMN 9, "Incentivos Varios"; LET l = 40 DECLARE busca22 CURSOR FOR SELECT MIN(fecha_inicio), MAX(fecha_corte), mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c GROUP BY mes ORDER BY mes FOREACH busca22 INTO fech1,fech2,m_mes SELECT SUM(a.valor) INTO incentivo FROM notb00008 a WHERE a.num_emp = x.sec_vend AND a.cod_mov = 37 AND a.fecha between fech1 AND fech2 IF incentivo IS NULL THEN LET incentivo = 0 END IF LET total_g[m_mes] = total_g[m_mes] + incentivo LET t_total_g = t_total_g + total_g[m_mes] LET t_incentivo = t_incentivo + incentivo PRINT COLUMN l, incentivo USING "##,###,###"; LET l = l + 14 END FOREACH # Busca la fecha de ingreso del empleado SELECT a.fech_efec INTO fecha_ingreso FROM adtb00003 a WHERE a.num_emp = x.sec_vend SELECT SUM(a.valor) INTO tt_incentivo FROM notb00016 a ,prdtable b WHERE b.mes <= p_mes AND b.ano = p_ano - 1 AND (a.num_emp = x.sec_vend AND a.cod_mov = 37 AND a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte) IF tt_incentivo IS NULL THEN LET tt_incentivo = 0 END IF LET tt_total_g = tt_total_g + tt_incentivo PRINT COLUMN l,t_incentivo USING "##,###,###", COLUMN l+14, tt_incentivo USING "##,###,###" #----------------------------------------------------------------------- # REGALIA, BONIFICACION PRINT COLUMN 9, "Regalia, Bonifi."; LET l = 40 DECLARE busca23 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca23 INTO fech1,fech2,m_mes LET regalia = (salario[m_mes] + comision[m_mes]) / 12 IF (fecha2 - fecha_ingreso)/365 > 3 THEN LET bonificacion = (((salario[m_mes] + comision[m_mes]) / 23.83) * 60)/12 ELSE LET bonificacion = (((salario[m_mes] + comision[m_mes]) / 23.83) * 48)/12 END IF IF bonificacion IS NULL THEN LET bonificacion = 0 END IF IF regalia IS NULL THEN LET regalia = 0 END IF LET total_g[m_mes] = total_g[m_mes] + bonificacion + regalia LET t_total_g = t_total_g + total_g[m_mes] LET t_regalia = t_regalia + regalia + bonificacion PRINT COLUMN l, regalia+bonificacion USING "##,###,###"; LET l = l + 14 END FOREACH # BUSCA BONIFICACION DEL ANO ANTERIOR SELECT a.valor INTO bonificacion FROM notb00008 a WHERE a.num_emp = x.sec_vend AND a.cod_mov = 33 AND YEAR(a.fecha) = YEAR(TODAY) - 1 IF bonificacion IS NULL THEN LET bonificacion = 0 END IF # BUSCA REGALIA DEL ANO ANTERIOR SELECT a.valor INTO tt_regalia FROM notb00008 a,notb00010 b WHERE b.mes = 12 AND b.ano = p_ano - 1 AND (a.num_emp = x.sec_vend AND a.cod_mov = 32 AND a.num_nomi = b.num_nomi) AND b.tipo_emp = x.tipo_emp IF tt_regalia IS NULL THEN LET tt_regalia = 0 END IF LET tt_total_g = tt_total_g + tt_regalia + bonificacion PRINT COLUMN l, t_regalia USING "##,###,###", COLUMN l+14, bonificacion + tt_regalia USING "##,###,###" #----------------------------------------------------------------------- # ASIGNACION DE VEHICULOS, DEPRECIACION, MANTENIMIENTO, VIAJES Y DIETAS #PRINT COLUMN 9, "Asignacion Vehiculo" #PRINT COLUMN 9, "Depreciacion Vehiculo" #PRINT COLUMN 9, "Mantenimiento Vehiculo" #PRINT COLUMN 9, "Viajes y Dietas" LET t_gastos = 0 LET l=40 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7112' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7112') AND a.cod_sec = x.sec_vend AND a.cod_aux = '01' and a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS NULL IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" LET t_gastos = 0 LET l = 40 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7117' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos1 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos1 INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7117') AND a.cod_sec = x.sec_vend AND a.cod_aux ='01' and a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS null IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos LET t_gastos=t_gastos+gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" LET l = 40 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7204' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos2 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos2 INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7204') AND a.cod_sec = x.sec_vend AND a.cod_aux = '01' AND a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS null IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" LET l = 40 LET t_gastos=0 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7205' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos3 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos3 INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7205') AND a.cod_sec = x.sec_vend AND a.cod_aux = '01' AND a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS null IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" LET l = 40 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7206' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos4 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos2 INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7206') AND a.cod_sec = x.sec_vend AND a.cod_aux = '01' AND a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS null IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" LET l = 40 LET t_gastos=0 SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7336' PRINT COLUMN 9, descripcion_cta; DECLARE busca_gastos5 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY fecha_inicio FOREACH busca_gastos5 INTO fech1,fech2,m_mes SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a WHERE (a.cuenta_no = '7336') AND a.cod_sec = x.sec_vend AND a.cod_aux = '01' AND a.fecha BETWEEN fech1 AND fech2 AND a.status_t IS null IF gastos IS NULL THEN LET gastos = 0 END IF LET tt_total_g = tt_total_g + gastos LET t_gastos = t_gastos + gastos PRINT COLUMN l,gastos USING "##,###,###"; LET total_g[m_mes]=total_g[m_mes]+ gastos END FOREACH PRINT COLUMN l+14, t_gastos USING "##,###,###" #----------------------------------------------------------------------- SKIP 1 LINE PRINT COLUMN 9, "TOTAL GASTOS" ; LET l = 40 DECLARE busca24 CURSOR FOR SELECT fecha_inicio,fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca24 INTO fech1,fech2,m_mes PRINT COLUMN l, total_g[m_mes] USING "##,###,###"; LET l = l + 14 END FOREACH PRINT COLUMN l,t_total_g USING "##,###,###", COLUMN l+14, tt_total_g USING "##,###,###" PRINT COLUMN 9,"% S/VENTAS NETAS"; LET l = 40 DECLARE busca25 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca25 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes IF neto[m_mes] != 0 THEN PRINT COLUMN l, (total_g[m_mes]/neto[m_mes]) * 100 USING "##,###,###"; END IF LET l = l + 14 --END FOR END FOREACH IF t_neto != 0 THEN PRINT COLUMN l, (t_total_g/t_neto) * 100 USING "##,###,###", COLUMN l+14, (tt_total_g/tt_neto) * 100 USING "##,###,###" END IF LET l = 40 PRINT COLUMN 9,"% S/VENTAS BRUTAS"; DECLARE busca26 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca26 INTO fech1,fech2,m_mes -- FOR idx = 1 TO p_mes IF bruto[m_mes] != 0 THEN PRINT COLUMN l, (total_g[m_mes]/bruto[m_mes]) * 100 USING "##,###,###"; END IF LET l = l + 14 --END FOR END FOREACH IF t_bruto != 0 THEN PRINT COLUMN l,(t_total_g/t_bruto) * 100 USING "##,###,###", COLUMN l+14, (tt_total_g/tt_bruto) * 100 USING "##,###,###" END IF PRINT "----------------------------------------------------------------------------", "---------------------------------------------------------------------------------------------------------------------------------------------" PRINT COLUMN 9, "BENEFICIO NETO"; LET l = 40 DECLARE busca27 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca27 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes LET t_beneficio_n = t_beneficio_n + (beneficio_b[m_mes]-total_g[m_mes]) PRINT COLUMN l, beneficio_b[m_mes] - total_g[m_mes] USING "##,###,###"; LET l = l + 14 --END FOR END FOREACH PRINT COLUMN l, t_beneficio_n USING "##,###,###", COLUMN l+14, tt_beneficio_b - tt_total_g USING "##,###,###" PRINT COLUMN 9,"% S/VENTAS NETAS"; LET l = 40 DECLARE busca28 CURSOR FOR SELECT fecha_inicio, fecha_corte, mes FROM prdtable WHERE ano = p_ano AND fecha_corte <= fecha_c ORDER BY 1 FOREACH busca28 INTO fech1,fech2,m_mes --FOR idx = 1 TO p_mes IF neto[m_mes] != 0 THEN PRINT COLUMN l, ((beneficio_b[m_mes]-total_g[m_mes]) / neto[m_mes]) * 100 USING "##,###,###"; END IF LET l = l + 14 --END FOR END FOREACH LET tt_beneficio_n = tt_beneficio_b - tt_total_g IF t_neto != 0 THEN PRINT COLUMN l, (t_beneficio_n / t_neto) * 100 USING "##,###,###", COLUMN l+14, (tt_beneficio_n / t_neto) *100 USING "##,###,###" END IF PRINT "----------------------------------------------------------------------------", "---------------------------------------------------------------------------------------------------------------------------------------------" AFTER GROUP OF x.sec_vend SKIP TO TOP OF PAGE END REPORT