Files
MBS/PROYECTO/ccdir/ccprrp035.4gl
T

930 lines
34 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CCPRRP035
OBJETIVO : Comisiones por Ventas Totalizado
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Oct. 06, 1994
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
# Variables para controlar que el nombre del articulo y del vendedor
# se busque una sola vez
DEFINE resumen RECORD LIKE cctb00006.*
DEFINE fact_ant INTEGER
DEFINE p_datos RECORD
fecha_in DATE,
fecha_fin DATE
END RECORD
DEFINE porc_rep,porciento,p_itbi DECIMAL(8,2)
DEFINE p_neto,t_valor,valor_desc DECIMAL(12,2)
DEFINE fecha1,fecha2 DATE
DEFINE selec18,selec19 CHAR(1000)
DEFINE p_mes SMALLINT
DEFINE codigo,codigo_ant CHAR(7)
DEFINE vende,vende_ant CHAR(7)
DEFINE p_ano CHAR(4)
DEFINE porc_vv,porc_v,porc_c,comision_c,t_comision,tt_comision_d,
t_comision_d,t_neto,neto,tt_comision_c,t_comision_c,tt_neto,
ttt_comision_d, tt_cobrado,t_cobrado,cobrado,comision_d
DECIMAL(14,4)
# Variables para la captura de la informacion del reporte
DEFINE mes SMALLINT
DEFINE cod_cia SMALLINT
DEFINE salir,salir18,salir19,ventas CHAR(1)
DEFINE idx1,idx18,idx19 INTEGER
FUNCTION ccprrp035()
# Variables que toman los valores del query y a la vez estas mismas variables
# Asignan estos valores a otra que se imprimira posteriormente
DEFINE vendedor RECORD
cod_cia SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cond_pago SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
porciento LIKE vetb00002.porc_desc,
codigo CHAR(7)
END RECORD
DEFINE porciento RECORD
sec_vend SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
porc_ventas DECIMAL(10,4)
END RECORD
# Atrapa el error de run-time
# WHENEVER ERROR CONTINUE
# Especificaciones para el desplegue de errores y formulario.
# Reserva lineas para tales fines.
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
# Desplegue del formulario de entrada de informacion
OPEN FORM ccfmrp035 FROM "ccfmrp035"
DISPLAY FORM ccfmrp035
#----------------------------------------------------------
CALL pantalla()
DISPLAY "ccprrp035" AT 4,3
DISPLAY "Comision Por Vendedor Totalizado" AT 6,24
## Tipo de papel necesari para imprimir el reporte
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
# Entrada de datos para el reporte
INPUT BY NAME p_ano,p_mes
AFTER FIELD p_ano
IF p_ano IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
AFTER FIELD p_mes
IF p_mes IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2
FROM prdtable a
WHERE a.ano = p_ano AND a.mes = p_mes
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT BY NAME criterio ON a.cod_cia,a.sec_vend
#-------------------------------------------------------------------
# Chequo de la cancelacion del programa con la variable global int_flag
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
#--------------------------------------------------------------------
# Borra la tabla temporal para el resumen de los empleados
DELETE FROM cctb00006
# Prepara al sistema operativo para recibir el reporte
START REPORT reporte35 TO "C:\\archivo"
# Buscando las informaciones del reporte
DISPLAY " " AT 19,14
LET selec19 =
"SELECT a.cod_cia,a.sec_vend,a.fecha_factura,a.factura,a.cond_pago, ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
" a.porc_desc ",
"FROM vetb00002 a,vetb00003 c ",
"WHERE a.fecha_factura between ? and ? and ",
" a.ventas=1 and a.factura=c.factura AND a.status_t is null AND ",
criterio clipped," ORDER BY 1,2,6,7,8,9"
DISPLAY "Buscando Facturas... Espere Por Favor" AT 19,14
PREPARE b_vende FROM selec19
DECLARE c_vende CURSOR FOR b_vende
OPEN c_vende USING fecha1,fecha2
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
# Loop para darle salida al Query hasta que la variable global status = 100
LET codigo_ant = " "
LET salir = "N"
WHILE salir != "S"
FETCH c_vende INTO vendedor.*
IF status = notfound THEN
LET salir = "N"
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF vendedor.precio IS NULL THEN
LET vendedor.precio = 0
END IF
IF vendedor.cantidad IS NULL THEN
LET vendedor.cantidad = 0
END IF
# Busco la descripcion del articulo
LET vendedor.codigo = vendedor.cod_n using "&",vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",vendedor.cod_sec using "&&&"
IF vendedor.sec_vend != 8888 THEN
OUTPUT TO REPORT reporte35 (vendedor.*)
END IF
END WHILE
# Aqui se le especifica al sistema operativo que el reporte ha terminado
# el sistema operativo hace el resto
FINISH REPORT reporte35
#---------------------------------------------------------------------
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
# Rutina de reporte
REPORT reporte35(x)
# Variable que toma el valor de la funcion que llamo a esta rutina
DEFINE x RECORD
cod_cia SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cond_pago SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
porciento LIKE vetb00002.porc_desc,
codigo CHAR(7)
END RECORD
# Esta variable toma el valor del nombre del mes para imprimirse
DEFINE nombre_vend CHAR(30),
apellido_vend CHAR(30)
DEFINE nombre_mes CHAR(10)
DEFINE porc_ventas DECIMAL(10,4)
#------------------------------------------------------------------
# Estas variables son constantes en todos los reportes de RAYOVAC
# para no estar definiendolas en cada momento.
# Estas variables son los caracteres ASCII para ser interpretados por
# el printer.
DEFINE valor_devuelto DECIMAL(12,2)
DEFINE j,k INTEGER
DEFINE doble_on CHAR(3)
DEFINE doble_off CHAR(3)
DEFINE negrillas_on CHAR(3)
DEFINE negrillas_off CHAR(3)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(3)
DEFINE normal CHAR(3)
#----------------------------------------------------------------------
# Esta variable es para asignarle la hora del dia e imprimir en HH:MM
DEFINE hora CHAR(5)
#-----------------------------------------------------------------------
# Con esta variable se hace un calculo porcentual
DEFINE porc DECIMAL(10,4)
#-----------------------------------------------------------------------
# Variables totales del reporte
DEFINE tt_unidades,t_unidades,vt_vend,total_vend,valor_pagar DECIMAL(12,2)
DEFINE t_total_vend,j_valor,j_unidades,valor_pagar1,v_valor,vv_valor,
t_cant_dev,cant_dev,tt_cant_dev,tt_total_vend,otro_desc,
descuentos,und_descuento,und_netas,ventas_netas,ttt_cant_dev ,
t_Desc,t_und_netas,tt_valor,tt_valor1,tt_und_netas,ttt_und_netas
DECIMAL(12,2),
precio_neto,precio_bruto,porciento,porc_dev DECIMAL(8,4),
f_ventas,f_adicional,f_cobros,f_ck,f_dev,f_neto DECIMAL (12,2)
# Definicion de salida del reporte, margenes.
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
#------------------------------------------------------------------------
#ORDER BY x.cod_cia,x.sec_vend,x.codigo
FORMAT
PAGE HEADER
# Asignaciones de los valores ASCII para la impresion
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 69
LET comp_on = ASCII 031
#LET comp_on = ASCII 27,ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 15
LET hora = time
# Funcion que busca los meses del ano
SELECT descrip INTO nombre_mes FROM mestable WHERE mes = p_mes
#--------------------------------------------------------------------------
LET lj = (197 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "ccprrp035",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 190, "Pag. ",pageno using "###"
PRINT COLUMN 76, " Sistema de Cuentas por Cobrar",
COLUMN 190, today using "dd/mm/yy"
PRINT COLUMN 76, " Comision por Vendedor Totalizado",
COLUMN 193, hora
PRINT COLUMN 40, " "
PRINT COLUMN 1, "DESDE: ",fecha1 using "dd/mm/yy",
" HASTA: ",fecha2 using "dd/mm/yy"
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------"
PRINT COLUMN 56, " VENTAS ",
COLUMN 98, "COBROS",
COLUMN 145, "DEVOLUCIONES"
PRINT COLUMN 2, "VENDEDOR",
COLUMN 46, "VALOR",
COLUMN 56, "UNIDADES",
COLUMN 68, "COM./VENTA",
COLUMN 81, "COMISION",
COLUMN 97, "COBRADO",
COLUMN 106, "COM./COBROS",
COLUMN 125, "ITBIS",
COLUMN 133, "COMISION",
COLUMN 144, "CKS DVTOS",
COLUMN 162, "CANTIDAD",
COLUMN 176, "COMISION",
COLUMN 194, "NETO"
PRINT COLUMN 1,
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------"
SKIP 1 LINE
BEFORE GROUP OF x.cod_cia
IF x.cod_cia = 1 THEN
PRINT COLUMN 2, p_companias.nombre CLIPPED
END IF
IF x.cod_cia = 2 THEN
PRINT COLUMN 2, p_companias.nombre CLIPPED
END IF
LET j = x.cod_cia
LET k = 0
LET tt_valor = 0
LET tt_und_netas = 0
LET tt_unidades = 0
LET t_neto = 0
LET t_total_vend = 0
LET t_comision_c = 0
LET tt_comision_d = 0
LET tt_cant_dev = 0
LET t_cobrado = 0
BEFORE GROUP OF x.sec_vend
LET k = k + 1
LET t_desc = 0
LET t_unidades = 0
LET total_vend = 0
LET t_cant_dev = 0
LET t_comision_d = 0
LET t_und_netas = 0
{
# busca el promedio de descuento por vendedor para las pilas de carbon
IF x.cod_cia = "1" THEN
LET porciento = 1
SELECT avg(a.porc_desc) INTO porciento
FROM vetb00002 a,vetb00003 b
WHERE (a.sec_vend = x.sec_vend) AND
(a.factura = b.factura) AND
(a.fecha_factura BETWEEN fecha1 AND fecha2) AND
a.status_t IS NULL
IF porciento IS NULL THEN
LET porciento = 1
END IF
END IF
#-----------------------------------------------------------------------------
}
# Impresion del nombre del vendedor
SELECT nom1_emp,apell1_emp INTO nombre_vend,apellido_vend
FROM adtb00003 WHERE num_emp = x.sec_vend
LET porc_vv = 0
SELECT MAX(a.porc_ventas) INTO porc_vv FROM vetb00011 a
WHERE a.sec_vend = x.sec_vend
IF porc_vv IS NULL THEN
LET porc_vv = 0
END IF
PRINT COLUMN 2,x.sec_vend," ",nombre_vend clipped," ",
apellido_vend clipped;
BEFORE GROUP OF x.codigo
#SKIP 1 LINE
IF t_total_vend is null THEN
LET t_total_vend = 0
END IF
LET porc_ventas = 0
SELECT UNIQUE a.porc_ventas INTO porc_ventas FROM vetb00011 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.sec_vend = x.sec_vend AND a.status_t IS NULL
IF porc_ventas IS NULL THEN
LET porc_ventas = 0
END IF
ON EVERY ROW
LET porc = porc_ventas
LET valor_pagar = 0
LET porciento = x.porciento /100
LET descuentos = (x.cantidad*x.precio) *
porciento
LET t_desc = t_desc + descuentos
IF x.cod_cia = 1 THEN
IF x.cantidad != 0 THEN
LET precio_bruto = x.cantidad*x.precio /
x.cantidad
END IF
LET precio_neto = precio_bruto - porciento
IF precio_neto != 0 THEN
LET und_descuento = descuentos / precio_neto
END IF
LET ventas_netas = (x.cantidad * x.precio) -
descuentos
LET und_netas = x.cantidad - und_descuento
LET valor_pagar = und_netas * porc_ventas
{ Este Vendedor Cobrara comision por monto vendido
Modificado Por: Juan F. Soto
Fecha : Febrero 14, 1996
IF x.sec_vend = 144 THEN
LET valor_pagar = ((x.cantidad * x.precio) - descuentos) *
porc_ventas
END IF
}
END IF
# Para el vendedor que factura en la compania que usualmente es al contado
# se le paga el porciento por valores brutos vendidos
#-----------------------------------------------------------------------------
# Esta es la acumulacion de lo que se le va ha pagar al vendedor
LET total_vend = valor_pagar + total_vend
LET t_und_netas = und_netas + t_und_netas
AFTER GROUP OF x.sec_vend
LET porc_c = 0
LET cant_dev = 0
LET comision_d = 0
IF x.cod_cia = 1 THEN
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*c.porc_ventas)
INTO t_cant_dev,t_comision_d
FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c
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
a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n = 3 AND
a.cod_sp_sec = b.sec_cliente AND a.fecha BETWEEN fecha1 and fecha2 AND
b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend
SELECT MAX(a.porc_cobros) INTO porc_c FROM vetb00011 a
WHERE a.sec_vend = x.sec_vend AND a.cod_n = 3
ELSE
SELECT SUM(a.cantidad_2),SUM((a.cantidad_2*d.precio)*c.porc_ventas)
INTO t_cant_dev,t_comision_d
FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c,vetb00025 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
a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND
a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec AND
a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n > 3 AND
a.cod_sp_sec = b.sec_cliente AND d.sec_cliente IS NULL AND
b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend AND
a.fecha BETWEEN fecha1 and fecha2
SELECT MAX(a.porc_ventas),MAX(a.porc_cobros) INTO porc_v,porc_c
FROM vetb00011 a WHERE a.sec_vend = x.sec_vend AND a.cod_n = 6
END IF
IF t_cant_dev IS NULL THEN
LET t_cant_dev = 0
END IF
IF t_comision_d IS NULL THEN
LET t_comision_d = 0
END IF
IF t_comision_d < 0 THEN
LET t_comision_d = t_comision_d * -1
END IF
IF porc_c IS NULL THEN
LET porc_c = 0
END IF
LET cobrado = 0
SELECT sum(a.valor*-1) INTO cobrado FROM CCTB00001 A,VETB00002 B
WHERE A.APLICA_A = B.FACTURA AND
A.FECHA_ORIG BETWEEN fecha1 AND fecha2 AND
A.TIPO_DOC = "PG" AND
A.COD_EMP_SEC = x.sec_vend AND b.fecha_factura > "010194" AND
A.STATUS_T IS NULL and b.cod_cia = x.cod_cia
IF t_cobrado IS NULL THEN
LET t_cobrado = 0
END IF
IF tt_cobrado IS NULL THEN
LET tt_cobrado = 0
END IF
IF t_comision_c IS NULL THEN
LET t_comision_c = 0
END IF
IF tt_comision_c IS NULL THEN
LET tt_comision_c = 0
END IF
IF tt_cant_dev IS NULL THEN
LET tt_cant_dev = 0
END IF
IF ttt_cant_dev IS NULL THEN
LET ttt_cant_dev = 0
END IF
IF tt_comision_d IS NULL THEN
LET tt_comision_d = 0
END IF
IF ttt_comision_d IS NULL THEN
LET ttt_comision_d = 0
END IF
IF tt_total_vend IS NULL THEN
LET tt_total_vend = 0
END IF
IF cobrado IS NULL THEN
LET cobrado = 0
END IF
IF porc_c IS NULL THEN
LET porc_c = 0
END IF
IF tt_neto IS NULL THEN
LET tt_neto = 0
END IF
LET comision_c = 0
LET comision_c = (cobrado/1.08) * porc_c
LET neto = total_vend + comision_c - t_comision_d
LET tt_valor = tt_valor + GROUP SUM(x.precio*x.cantidad) - t_Desc
LET tt_und_netas = tt_und_netas + t_und_netas
PRINT COLUMN 39, GROUP SUM(x.precio*x.cantidad)- t_desc
using "##,###,###.##",
COLUMN 55, t_und_netas using "##,###,###";
#COLUMN 55, GROUP SUM(x.cantidad)-t_cant_dev using "##,###,###";
IF x.cod_cia = 1 THEN
PRINT COLUMN 68, " ";
ELSE
LET total_vend = (GROUP SUM(x.precio*x.cantidad)- t_desc)*porc_v
PRINT COLUMN 68, porc_v using "#,###.####";
END IF
PRINT COLUMN 79, total_vend using "###,###.##",
COLUMN 93, cobrado using "##,###,###.##",
COLUMN 104, porc_c using "#,###.####",
COLUMN 121, cobrado - (cobrado/1.08) using "###,###.##",
COLUMN 132, comision_c using "###,###.##",
COLUMN 144, "__________",
COLUMN 157, t_cant_dev using "##,###,###.##",
COLUMN 174, t_comision_d using "###,###.##",
COLUMN 185, total_vend+comision_c-t_comision_d
using "###,###,###.##"
IF x.sec_vend = 338 or
x.sec_vend = 367 THEN
LET t_valor = 0
IF x.cod_cia = 1 THEN
CALL teprrp005(x.sec_vend)
END IF
ELSE
LET t_valor = 0
END IF
# Busca los cheques devueltos de cuentas por cobrar
SELECT SUM(a.valor) INTO valor_devuelto
FROM cctb00001 a,vetb00002 b
WHERE b.cod_cia = x.cod_cia and
(a.cod_emp_Sec = x.sec_vend and
a.fecha_orig between fecha1 and fecha2 and
a.tipo_doc = "ND" and
a.valor_cheque is not null) and
(a.aplica_a = b.factura) and
a.status_t is null
IF x.cod_cia = 1 THEN
SELECT unique a.porc_cobros INTO porc_dev
FROM vetb00011 a
WHERE a.sec_vend = x.sec_vend and
a.cod_n = 3 and status_t is null
ELSE
SELECT unique a.porc_cobros INTO porc_dev
FROM vetb00011 a
WHERE a.sec_vend = x.sec_vend and
a.cod_n in (6,9) and status_t is null
END IF
IF valor_devuelto is null THEN
LET valor_devuelto = 0
END IF
IF valor_devuelto != 0 THEN
LET valor_devuelto = valor_devuelto / 1.08
LET valor_devuelto = valor_devuelto * porc_dev
END IF
#----------------------------------------------------------------------------
{
INSERTA EN LA TABLA TEMPORAL CCTB00006 LOS REGISTROS PARA IMPRIMIR UN
RESUMEN POR VENDEDOR AL FINAL DEL REPORTE
}
INSERT INTO cctb00006 VALUES (x.sec_vend,nombre_vend,apellido_vend,total_vend,
t_valor,comision_c,valor_devuelto,t_comision_d,neto,
user,current)
{
LET arreglo[j,k].ck_devuelto = valor_devuelto
LET arreglo[j,k].comision_v = total_vend
LET arreglo[j,k].comision_c = comision_c
LET arreglo[j,k].comision_d = t_comision_d
}
# Acumulacion de los totales por compania
LET t_neto = t_neto + neto
LET t_cobrado = t_cobrado + cobrado
LET t_comision_c = t_comision_c + comision_c
LET t_total_vend = t_total_vend + total_vend
LET tt_cant_dev = tt_cant_dev + t_cant_dev
LET tt_comision_d = tt_comision_d + t_comision_d
LET tt_neto = tt_neto + neto
LET ttt_cant_dev = ttt_cant_dev + t_cant_dev
LET ttt_comision_d= ttt_comision_d + t_comision_d
LET tt_cobrado = tt_cobrado + cobrado
LET tt_comision_c= tt_comision_c + comision_c
LET tt_total_vend= tt_total_vend + total_vend
LET total_vend = 0
SKIP 1 LINE
AFTER GROUP OF x.cod_cia
PRINT COLUMN 1,
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------"
PRINT COLUMN 2, "Total Cia. ",
COLUMN 39, tt_valor using "##,###,###.##",
COLUMN 55, tt_und_netas using "##,###,###",
COLUMN 79, t_total_vend using "###,###.##",
COLUMN 93, t_cobrado using "##,###,###.##",
COLUMN 121, t_cobrado - (t_cobrado/1.08) using "###,###.##",
COLUMN 132, t_comision_c using "###,###.##",
COLUMN 144, "__________",
COLUMN 157, tt_cant_dev using "##,###,###.##",
COLUMN 174, tt_comision_d using "###,###.##",
COLUMN 185, t_neto using "###,###,###.##"
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------"
IF tt_valor1 IS NULL THEN
LET tt_valor1 = 0
END IF
IF ttt_und_netas IS NULL THEN
LET ttt_und_netas = 0
END IF
LET tt_valor1 = tt_valor1 + tt_valor
LET ttt_und_netas = ttt_und_netas + tt_und_netas
LET tt_valor = 0
SKIP 1 LINE
ON LAST ROW
PRINT COLUMN 2, "Total General ",
COLUMN 39, tt_valor1 using "##,###,###.##",
COLUMN 55, ttt_und_netas using "##,###,###",
COLUMN 79, tt_total_vend using "###,###.##",
COLUMN 93, tt_cobrado using "##,###,###.##",
COLUMN 119, tt_cobrado - (tt_cobrado/1.08) using "#,###,###.##",
COLUMN 132, tt_comision_c using "###,###.##",
COLUMN 144, "__________",
COLUMN 157, ttt_cant_dev using "##,###,###.##",
COLUMN 174, ttt_comision_d using "###,###.##",
COLUMN 185, tt_neto using "###,###,###.##"
PRINT COLUMN 1, "===================================================",
"===================================================",
"===================================================",
"============================================="
PRINT COLUMN 98, "Comision",
COLUMN 161, "Comision"
PRINT COLUMN 2, "Total Por Vendedor",
COLUMN 98, "Adicional",
COLUMN 155, "Cks. Devueltos"
PRINT COLUMN 2, "------------------",
COLUMN 98, "---------",
COLUMN 155, "---------------"
LET f_ventas = 0
LET f_adicional = 0
LET f_cobros = 0
LET f_ck = 0
LET f_dev = 0
LET f_neto = 0
DECLARE busca_r CURSOR FOR
SELECT a.sec_vend,a.nombre,a.apellido,SUM(a.comision_venta),
SUM(a.comision_adicional),SUM(a.comision_cobros),
SUM(a.comision_ck),SUM(a.comision_dev)
FROM cctb00006 a
GROUP BY 1,2,3
ORDER BY 1
FOREACH busca_r INTO resumen.*
PRINT COLUMN 1, resumen.sec_vend USING "&&&&"," ",
resumen.nombre,resumen.apellido CLIPPED,
COLUMN 79, resumen.comision_venta USING "##,###,###.##",
COLUMN 93, resumen.comision_adicional USING "##,###,###.##",
COLUMN 132, resumen.comision_cobros USING "###,###.##",
COLUMN 144, "__________",
COLUMN 157, resumen.comision_ck USING "##,###,###.##",
COLUMN 174, resumen.comision_dev USING "###,###.##",
COLUMN 185, resumen.comision_venta + resumen.comision_adicional +
resumen.comision_cobros - resumen.comision_dev -
resumen.comision_ck USING "((((,(((,(((.##)"
LET f_ventas = f_ventas + resumen.comision_venta
LET f_adicional = f_adicional + resumen.comision_adicional
LET f_cobros = f_cobros + resumen.comision_cobros
LET f_ck = f_ck + resumen.comision_ck
LET f_dev = f_dev + resumen.comision_dev
LET f_neto = f_neto + resumen.comision_venta +
resumen.comision_adicional + resumen.comision_cobros -
resumen.comision_dev - resumen.comision_ck
END FOREACH
PRINT COLUMN 79, "-------------",
COLUMN 93, "-------------",
COLUMN 132, "----------",
COLUMN 157, "-------------",
COLUMN 174, "----------",
COLUMN 185, "----------"
PRINT COLUMN 79, f_ventas USING "##,###,###.##",
COLUMN 93, f_adicional USING "##,###,###.##",
COLUMN 132, f_cobros USING "###,###.##",
COLUMN 157, f_ck USING "##,###,###.##",
COLUMN 174, f_dev USING "###,###.##",
COLUMN 185, f_neto USING "###,###.##"
PRINT comp_off
END REPORT
FUNCTION teprrp005(sec_vend)
DEFINE imprime CHAR(1)
DEFINE sec_vend,cod_cia SMALLINT
DEFINE vendedor RECORD
cod_vend SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
recibo INTEGER,
fecha DATE,
valor_c DECIMAL(12,2),
porc_venta DECIMAL(10,4),
descrip_esp CHAR(30),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vende CHAR(6),
codigo CHAR(7)
END RECORD
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
START REPORT reporte_5 TO "jh1"
DISPLAY "Buscando Liq. Comision... Espere Por Favor" AT 19,14
DECLARE c_vende1 CURSOR FOR
SELECT UNIQUE d.cod_emp,d.cod_emp_sec,a.fecha_factura,a.factura,
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.cantidad,
b.cantidad * b.precio ,d.num_doc,d.fecha_orig,d.valor,
a.porc_desc,' ',' ',' ',' ',' ',a.porc_desc,a.porc_itbi,a.neto
FROM vetb00002 a,vetb00003 b ,cctb00005 c,cctb00001 d
WHERE d.fecha_orig between fecha1 and fecha2
and (a.fecha_factura > "010194") and (a.factura = b.factura) and
(a.cod_cia = 1) and a.status_t is null 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
d.cod_emp_sec in (sec_vend) and d.tipo_doc = "PG" and
d.aplica_a = a.factura and d.status_t is null
FOREACH c_vende1 INTO vendedor.*,porciento,p_itbi,p_neto
DISPLAY "Vendedor: ",vendedor.sec_vend using "&&&&"," ",
vendedor.cod_n using "&","-",vendedor.cod_grupo using "&","-",
vendedor.cod_tipo using "&&","-",vendedor.cod_sec using "&&&"
AT 13,1
SELECT nom1_emp,apell1_emp
INTO vendedor.nombre_vend,vendedor.apellido_vend
FROM adtb00003 WHERE
num_emp = vendedor.sec_vend
LET vendedor.vende =
vendedor.sec_vend using "&&&&"
LET vendedor.codigo = vendedor.cod_n using "&",
vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",
vendedor.cod_sec using "&&&"
LET valor_desc = vendedor.precio * (porciento/100)
LET vendedor.precio = vendedor.precio - valor_desc
LET vendedor.precio =
vendedor.precio + vendedor.precio * (p_itbi / 100)
LET porc_rep = (vendedor.precio / p_neto) * 100
OUTPUT TO REPORT reporte_5 (vendedor.*,porc_rep,p_neto)
END FOREACH
DISPLAY " " AT 19,14
FINISH REPORT reporte_5
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_5(x,porc,p_neto1)
DEFINE x RECORD
cod_vend SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
recibo INTEGER,
fecha DATE,
valor_c DECIMAL(12,2),
porc_venta DECIMAL(10,4),
descrip_esp CHAR(30),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vendedor CHAR(6) ,
codigo CHAR(7)
END RECORD
DEFINE nombre_mes CHAR(10)
DEFINE ii,total_clientes INTEGER
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 hora CHAR(5)
DEFINE i SMALLINT
DEFINE porc DECIMAL(10,4)
DEFINE t_valor1,p_neto1,valor DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.vendedor,x.factura,x.codigo,x.recibo
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
BEFORE GROUP OF x.vendedor
LET t_valor = 0
LET t_valor1 = 0
ON EVERY ROW
IF x.recibo is not null THEN
IF x.valor_c < 0 THEN
LET x.valor_c = x.valor_c * -1
END IF
IF x.precio < x.valor_c THEN
LET valor = x.valor_c * (porc / 100)
ELSE
LET valor = x.valor_c
END IF
LET t_valor = (valor * .01275) + t_valor
LET t_valor1 = valor + t_valor1
END IF
END REPORT