651 lines
22 KiB
Plaintext
651 lines
22 KiB
Plaintext
GLOBALS "ccprgb000.4gl"
|
|
DEFINE prima DECIMAL(10,2) ## Variable que equivale a la prima de otra moneda
|
|
,
|
|
imprimeencabezado VARCHAR(2)
|
|
|
|
DEFINE fecha_inicial,fecha_final DATE ## Varible busqueda por fecha de corte
|
|
|
|
DEFINE selec5,selec6,selec7 STRING ## Variables para almacenar busquedas
|
|
DEFINE tipo1 CHAR(2)
|
|
|
|
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
|
r_output STRING, -- output format option
|
|
preview INTEGER -- TRUE/FALSE, to set preview option
|
|
|
|
##### Registro que almacena la infoprmacion a imprimir ####
|
|
|
|
DEFINE mvtos1 RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
nombre CHAR(30),
|
|
limite DECIMAL(12,2),
|
|
num_rnc CHAR(10),
|
|
zona SMALLINT,
|
|
num_doc INTEGER,
|
|
aplica_a INTEGER,
|
|
tipo CHAR(2),
|
|
fecha DATE,
|
|
valor DECIMAL(10,2),
|
|
cotizacion_no INT,
|
|
cliente CHAR(20),
|
|
orden INT,
|
|
conduce INT
|
|
END RECORD,
|
|
valor2,balance DEC(12,2),
|
|
borden INT,
|
|
psimbolo CHAR(3),
|
|
xcotizacion,xorden INT,
|
|
tipoinfo CHAR(2)
|
|
|
|
FUNCTION visualiza_estado(tcliente,scliente,sqlconnect)
|
|
DEFINE ordenado,sqlconnect STRING,
|
|
tcliente,scliente INT
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
####### Abriendo y desplegando formulario de captura de datos
|
|
|
|
OPEN FORM ccfmrp014 FROM "ccfmrp014"
|
|
DISPLAY FORM ccfmrp014
|
|
#CALL pantalla()
|
|
DISPLAY "ccprrp014" AT 4,3
|
|
DISPLAY "Estado de Cuentas" AT 6,31
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
##### Creando el criterio de busqueda
|
|
DIALOG ATTRIBUTE (FIELD ORDER FORM, UNBUFFERED)
|
|
|
|
##### Aceptando la fecha de corte para busqueda de informacion
|
|
|
|
INPUT BY NAME prima,fecha_inicial,fecha_final,borden,salida,tipoinfo,ordenado
|
|
BEFORE INPUT
|
|
LET prima =1
|
|
DISPLAY BY NAME prima
|
|
DISPLAY tcliente TO tipo_cliente
|
|
DISPLAY scliente TO sec_cliente
|
|
BEFORE FIELD tipoinfo
|
|
LET tipoinfo='AC'
|
|
IF sqlconnect = 'marmotech' THEN
|
|
NEXT FIELD ordenado
|
|
END IF
|
|
AFTER FIELD fecha_inicial
|
|
IF fecha_inicial is null OR fecha_inicial > fecha_final THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_inicial
|
|
END IF
|
|
AFTER FIELD borden
|
|
IF borden IS NOT NULL THEN
|
|
SELECT a.num_oc FROM prtb00012 a WHERE a.num_oc = borden AND
|
|
a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ORDEN NO EXISTE","INFO")
|
|
NEXT FIELD borden
|
|
END IF
|
|
END IF
|
|
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
|
|
|
|
|
|
|
|
ON ACTION busca_informacion
|
|
# Busca los documentos que esten en el rango de fechas especificado
|
|
|
|
LET progreso = 20
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
LET idx = 1
|
|
IF ordenado = "orden" THEN
|
|
LET r_filename = 'ccprrp014.4rp'
|
|
ELSE
|
|
LET r_filename = 'ccprrp014a.4rp'
|
|
END IF
|
|
IF prima IS NULL THEN
|
|
LET prima = 1
|
|
END IF
|
|
LET imprime = "NO"
|
|
|
|
LET selec3=
|
|
"SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103),
|
|
(a.valor+a.monto_desc),a.documento_ref
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente=? AND a.sec_cliente=? AND
|
|
a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND
|
|
a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC','BI','RC')
|
|
UNION
|
|
SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103),
|
|
(a.valor+a.monto_desc)*-1,a.documento_ref
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente=? AND a.sec_cliente= ? AND
|
|
a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND
|
|
a.tipo_doc = 'AV' AND a.aplica_a = a.num_doc "
|
|
|
|
LET selec = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a
|
|
WHERE a.tipo_cliente = ? AND a.sec_cliente =? AND
|
|
a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC','BI') AND
|
|
a.fecha_orig < ? AND
|
|
a.status_t IS NULL"
|
|
LET selec1 = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a
|
|
WHERE a.tipo_cliente = ? AND a.sec_cliente = ? AND
|
|
a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND
|
|
a.fecha_orig < ? AND
|
|
a.status_t IS NULL"
|
|
|
|
IF sqlconnect ='smarmotech' THEN
|
|
LET selec4 =
|
|
"SELECT MAX(a.orden),MAX(a.cotizacion_no) FROM vetb00002 a
|
|
WHERE (a.factura = ?) AND
|
|
(a.tipo_cliente = ? AND a.sec_cliente=?)"
|
|
ELSE
|
|
LET selec4 =
|
|
"SELECT MAX(a.orden),MAX(a.conduce) FROM vetb00002 a
|
|
WHERE (a.factura = ?) AND
|
|
(a.tipo_cliente = ? AND a.sec_cliente=?)"
|
|
|
|
END IF
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
LET selec6=
|
|
"SELECT MAX(a.documento_ref) FROM cctb00001 a
|
|
WHERE a.num_doc = ? AND a.num_doc = a.aplica_a AND a.tipo_doc ='AV' AND
|
|
a.tipo_cliente = ? AND a.sec_cliente = ?"
|
|
LET selec7 =
|
|
"SELECT MAX(a.num_oc) FROM prtb00012 a WHERE a.cotizacion_no=? AND
|
|
a.tipo_cliente = ? AND a.sec_cliente = ? AND
|
|
a.status_t IS NULL"
|
|
LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,a.limite_credito,a.num_rnc,a.cod_zona ",
|
|
" FROM vetb00004 a WHERE a.tipo_cliente = ? and a.sec_cliente = ? "
|
|
|
|
|
|
LET selec1 = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a
|
|
WHERE a.tipo_cliente = ? AND a.sec_cliente = ? AND
|
|
a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND
|
|
a.fecha_orig < ? AND
|
|
a.status_t IS NULL"
|
|
|
|
# QUERYS PARA LA BUSQUEDA DE LA INFORMACION EN EL HISTORICO
|
|
IF tipoinfo='HT' THEN
|
|
LET selec3=
|
|
"SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103),
|
|
(a.valor+a.monto_desc),a.documento_ref
|
|
FROM historicomtech.dbo.cctb00001 a
|
|
WHERE a.tipo_cliente=? AND a.sec_cliente=? AND
|
|
a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND
|
|
a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC','BI','RC')
|
|
UNION
|
|
SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103),
|
|
(a.valor+a.monto_desc)*-1,a.documento_ref
|
|
FROM historicomtech.dbo.cctb00001 a
|
|
WHERE a.tipo_cliente=? AND a.sec_cliente= ? AND
|
|
a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND
|
|
a.tipo_doc = 'AV' AND a.aplica_a = a.num_doc "
|
|
|
|
LET selec = "SELECT SUM(a.valor+a.monto_desc) FROM historicomtech.dbo.cctb00001 a
|
|
WHERE a.tipo_cliente = ? AND a.sec_cliente =? AND
|
|
a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC') AND
|
|
a.fecha_orig < ? AND
|
|
a.status_t IS NULL"
|
|
|
|
LET selec1 = "SELECT SUM(a.valor+a.monto_desc) FROM historicomtech.dbo.cctb00001 a
|
|
WHERE a.tipo_cliente = ? AND a.sec_cliente = ? AND
|
|
a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND
|
|
a.fecha_orig < ? AND
|
|
a.status_t IS NULL"
|
|
|
|
LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,a.limite_credito,a.num_rnc,a.cod_zona ",
|
|
" FROM historicomtech.dbo.vetb00004 a WHERE a.tipo_cliente = ? and a.sec_cliente = ? "
|
|
|
|
END IF
|
|
|
|
#--------------------------------------------------------------------------------------------------------
|
|
|
|
PREPARE bcotizacion2 FROM selec4
|
|
|
|
PREPARE bdclientes FROM selec3
|
|
|
|
PREPARE balance1 FROM selec
|
|
|
|
PREPARE balance2 FROM selec1
|
|
|
|
PREPARE cotizacion1 FROM selec6
|
|
PREPARE orden1 FROM selec7
|
|
|
|
PREPARE clientes FROM selec5
|
|
DECLARE bclientes CURSOR FOR clientes
|
|
OPEN bclientes USING tcliente,scliente
|
|
|
|
FOREACH bclientes INTO mvtos1.tipo_cliente,mvtos1.sec_cliente,mvtos1.nombre,mvtos1.limite,mvtos1.num_rnc,
|
|
mvtos1.zona
|
|
|
|
IF idx = 1 THEN
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN
|
|
|
|
LET preview=1
|
|
CALL fgl_report_selectDevice(salida) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
END IF
|
|
IF ordenado = "orden" THEN
|
|
START REPORT report14 TO XML HANDLER HANDLER
|
|
ELSE
|
|
START REPORT report14b TO XML HANDLER HANDLER
|
|
END IF
|
|
END IF
|
|
LET mvtos1.cliente = mvtos1.tipo_cliente using "&&","-",
|
|
mvtos1.sec_cliente using "&&&&&&"
|
|
|
|
# BALANCE INICIAL
|
|
LET valor1 = 0
|
|
LET valor2 = 0
|
|
# busca balance1
|
|
EXECUTE balance1 INTO valor1 USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0
|
|
END IF
|
|
# busca balance 2
|
|
EXECUTE balance2 INTO valor2 USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial
|
|
|
|
IF valor2 IS NULL THEN
|
|
LET valor2 = 0
|
|
END IF
|
|
|
|
PREPARE comando1 FROM SELEC5
|
|
|
|
LET balance = valor1 - valor2
|
|
LET balance = balance*prima
|
|
LET mvtos1.valor = 0
|
|
LET mvtos1.fecha = fecha_inicial
|
|
#### Seleciona los datos generales de identificacion del cliente
|
|
IF ordenado = "orden" THEN
|
|
OUTPUT TO REPORT report14(mvtos1.*)
|
|
ELSE
|
|
OUTPUT TO REPORT report14b(mvtos1.*)
|
|
END IF
|
|
LET idx = idx +1
|
|
# ENVIO DETALLE
|
|
|
|
DECLARE dclientes CURSOR FOR bdclientes
|
|
OPEN dclientes USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial,fecha_final, mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial,fecha_final
|
|
|
|
|
|
FOREACH dclientes INTO mvtos1.num_doc,mvtos1.aplica_a,mvtos1.tipo,mvtos1.fecha,
|
|
mvtos1.valor
|
|
|
|
LET mvtos1.valor = mvtos1.valor * prima
|
|
LET tipo1 = mvtos1.tipo
|
|
LET mvtos1.orden = NULL
|
|
LET xcotizacion = NULL
|
|
IF sqlconnect='marmotech' THEN
|
|
SELECT a.simbolo INTO psimbolo
|
|
FROM vetb00060 a,vetb00061 b
|
|
WHERE b.tipo_cliente = mvtos1.tipo_cliente AND
|
|
a.ventas = b.ventas
|
|
|
|
EXECUTE bcotizacion2 INTO mvtos1.orden,mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
IF tipo1='AV' THEN
|
|
|
|
# busqueda de la cotizacion en cxc
|
|
EXECUTE cotizacion1 INTO mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
EXECUTE orden1 INTO mvtos1.orden USING mvtos1.cotizacion_no,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
END IF
|
|
ELSE
|
|
SELECT a.simbolo INTO psimbolo
|
|
FROM vetb00061 a,vetb00060 b
|
|
WHERE b.tipo_cliente = mvtos1.tipo_cliente AND
|
|
a.ventas = b.ventas
|
|
|
|
# busca orden y cotizacion
|
|
EXECUTE bcotizacion2 INTO mvtos1.orden,mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
IF tipo1='AV' THEN
|
|
# busqueda de la cotizacion en cxc
|
|
|
|
EXECUTE cotizacion1 INTO mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
EXECUTE orden1 INTO mvtos1.orden USING mvtos1.cotizacion_no,mvtos1.tipo_cliente,mvtos1.sec_cliente
|
|
|
|
ELSE
|
|
#CONDUCE ALMACEN
|
|
SELECT MAX(a.conduce),MAX(a.cotizacion_no),MAX(a.orden)
|
|
INTO mvtos1.conduce,mvtos1.cotizacion_no,mvtos1.orden FROM vetb00002 a
|
|
WHERE a.factura = mvtos1.aplica_a AND
|
|
a.tipo_cliente = mvtos1.tipo_cliente and
|
|
a.sec_cliente = mvtos1.sec_cliente and
|
|
a.status_t IS NULL
|
|
END IF
|
|
END IF
|
|
IF borden IS NOT NULL THEN
|
|
|
|
IF borden = mvtos1.orden THEN
|
|
IF ordenado = "orden" THEN
|
|
OUTPUT TO REPORT report14(mvtos1.*)
|
|
ELSE
|
|
OUTPUT TO REPORT report14b(mvtos1.*)
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
IF ordenado = "orden" THEN
|
|
OUTPUT TO REPORT report14(mvtos1.*)
|
|
ELSE
|
|
OUTPUT TO REPORT report14b(mvtos1.*)
|
|
END IF
|
|
END IF
|
|
LET progreso = progreso + 10
|
|
IF progreso > 50 THEN
|
|
LET progreso = 50
|
|
END IF
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
END FOREACH
|
|
END FOREACH
|
|
IF idx > 1 THEN
|
|
IF ordenado = "orden" THEN
|
|
FINISH REPORT report14
|
|
ELSE
|
|
FINISH REPORT report14b
|
|
END IF
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESE CRITERIO DE BUSQUEDA","INFO")
|
|
END IF
|
|
|
|
|
|
EXIT DIALOG
|
|
END INPUT
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
####### Funcion para dar salida a la informacion
|
|
|
|
REPORT report14(j)
|
|
DEFINE j RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
nombre CHAR(30),
|
|
limite DECIMAL(12,2),
|
|
num_rnc CHAR(10),
|
|
zona SMALLINT,
|
|
num_doc INTEGER,
|
|
aplica_a INTEGER,
|
|
tipo CHAR(2),
|
|
fecha DATE,
|
|
valor DECIMAL(10,2),
|
|
cotizacion_no INT,
|
|
cliente CHAR(20),
|
|
orden INT,
|
|
conduce INT
|
|
END RECORD
|
|
|
|
|
|
|
|
DEFINE p_calle,p_descrip CHAR(30), c_direccion VARCHAR(100)
|
|
DEFINE p_casa CHAR(10)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE d_debito,d_credito,d_balance, credito,debito,tcredito,tdebito,tbalance,limite,b_balance,
|
|
cte,v1_30,v31_45,v46_60,vm_60,balance_orden,bvalor1,bvalor2 DECIMAL(12,2),
|
|
chfecha CHAR(20)
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
|
|
#### Proceso para sortear la informacion
|
|
|
|
ORDER BY j.cliente,j.orden,j.fecha
|
|
|
|
###### Diseno de la salida de la informacion
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
|
|
IF j.tipo_cliente =19 OR j.tipo_cliente=18 THEN
|
|
LET imprimeencabezado="NO"
|
|
ELSE
|
|
LET imprimeencabezado = 'SI'
|
|
END IF
|
|
LET chfecha = today using "dd/mm/yyyy"," ",hora
|
|
|
|
|
|
##### Si el cliente es local el valor de la prima de la moneda es nulo
|
|
|
|
SKIP 1 LINES
|
|
|
|
BEFORE GROUP OF j.cliente
|
|
|
|
LET b_balance = 0
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
LET cte = 0
|
|
|
|
SELECT c.calle,c.casa_num INTO p_calle,p_casa FROM vetb00005 c
|
|
WHERE c.tipo_cliente=j.tipo_cliente and c.sec_cliente = j.sec_cliente and
|
|
c.status_t is null
|
|
|
|
SELECT d.descrip INTO p_descrip FROM vetb00008 d
|
|
WHERE d.cod_zona = j.zona AND d.status_t IS NULL
|
|
|
|
LET c_direccion = p_calle CLIPPED,' ',p_casa CLIPPED,' ',p_descrip
|
|
|
|
IF limite IS NULL THEN
|
|
LET limite = 0
|
|
END IF
|
|
PRINTX j.cliente, j.nombre,j.limite,prima,p_companias.nombre,
|
|
fecha_final,chfecha,p_calle,p_casa,j.num_rnc,c_direccion,fecha_inicial,balance,imprime,
|
|
imprimeencabezado
|
|
|
|
LET debito = 0
|
|
LET credito = 0
|
|
LET b_balance = balance
|
|
BEFORE GROUP OF j.orden
|
|
LET balance_orden = 0
|
|
LET bvalor1 = 0
|
|
LET bvalor2 = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO bvalor1 FROM cctb00001 a
|
|
WHERE a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND
|
|
a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','BI') AND
|
|
a.documento_ref = j.cotizacion_no AND
|
|
a.fecha_orig < fecha_inicial AND
|
|
a.status_t IS NULL
|
|
|
|
IF bvalor1 IS NULL THEN
|
|
LET bvalor1 = 0
|
|
END IF
|
|
SELECT SUM(a.valor+a.monto_desc) INTO bvalor2 FROM cctb00001 a
|
|
WHERE a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND
|
|
a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND
|
|
a.fecha_orig < fecha_inicial AND a.documento_ref = j.cotizacion_no AND
|
|
a.status_t IS NULL
|
|
|
|
IF bvalor2 IS NULL THEN
|
|
LET bvalor2 = 0
|
|
END IF
|
|
LET balance_orden = bvalor1 - bvalor2
|
|
ON EVERY ROW
|
|
IF b_balance IS NULL THEN
|
|
LET b_balance = 0
|
|
END IF
|
|
# IF j.fecha >= fecha_inicial THEN
|
|
LET b_balance = b_balance + j.valor
|
|
|
|
LET d_credito = 0
|
|
LET d_debito = 0
|
|
|
|
IF j.valor < 0 THEN
|
|
LET d_credito = j.valor
|
|
LET credito = credito + j.valor
|
|
ELSE
|
|
LET d_debito = j.valor
|
|
LET debito = debito + j.valor
|
|
END IF
|
|
LET balance_orden = balance_orden + j.valor
|
|
#END IF
|
|
PRINTX j.num_doc, j.tipo, j.fecha, j.aplica_a,j.orden,j.cotizacion_no,d_debito,d_credito,d_balance,
|
|
psimbolo,b_balance,balance_orden,j.conduce
|
|
{
|
|
LET dias = 0
|
|
LET dias = fecha_final - j.fecha
|
|
IF dias <= 0 THEN
|
|
LET cte = j.valor + cte
|
|
END IF
|
|
IF dias > 0 AND dias < 30 THEN
|
|
LET v1_30 = v1_30 + j.valor
|
|
END IF
|
|
IF dias > 30 and dias < 60 THEN
|
|
LET v31_45 = v31_45 + j.valor
|
|
END IF
|
|
IF dias > 61 and dias < 90 THEN
|
|
LET v46_60 = v46_60 + j.valor
|
|
END IF
|
|
IF dias > 90 THEN
|
|
LET vm_60 = vm_60 + j.valor
|
|
END IF}
|
|
AFTER GROUP OF j.cliente
|
|
|
|
PRINTX cte,v1_30,v31_45,v46_60, vm_60
|
|
|
|
END REPORT
|
|
|
|
REPORT report14b(j)
|
|
DEFINE j RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
nombre CHAR(30),
|
|
limite DECIMAL(12,2),
|
|
num_rnc CHAR(10),
|
|
zona SMALLINT,
|
|
num_doc INTEGER,
|
|
aplica_a INTEGER,
|
|
tipo CHAR(2),
|
|
fecha DATE,
|
|
valor DECIMAL(10,2),
|
|
cotizacion_no INT,
|
|
cliente CHAR(20),
|
|
orden INT,
|
|
conduce INT
|
|
END RECORD
|
|
|
|
|
|
|
|
DEFINE p_calle,p_descrip CHAR(30), c_direccion VARCHAR(100)
|
|
DEFINE p_casa CHAR(10)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE d_debito,d_credito,d_balance, credito,debito,tcredito,tdebito,tbalance,limite,b_balance,
|
|
cte,v1_30,v31_45,v46_60,vm_60 DECIMAL(12,2),
|
|
chfecha CHAR(20)
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
|
|
#### Proceso para sortear la informacion
|
|
|
|
ORDER BY j.cliente,j.fecha
|
|
|
|
###### Diseno de la salida de la informacion
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
IF j.tipo_cliente =19 OR j.tipo_cliente=18 THEN
|
|
LET imprimeencabezado="NO"
|
|
ELSE
|
|
LET imprimeencabezado = 'SI'
|
|
END IF
|
|
LET chfecha = today using "dd/mm/yyyy"," ",hora
|
|
|
|
|
|
##### Si el cliente es local el valor de la prima de la moneda es nulo
|
|
|
|
SKIP 1 LINES
|
|
|
|
BEFORE GROUP OF j.cliente
|
|
|
|
LET b_balance = 0
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
LET cte = 0
|
|
|
|
SELECT c.calle,c.casa_num INTO p_calle,p_casa FROM vetb00005 c
|
|
WHERE c.tipo_cliente=j.tipo_cliente and c.sec_cliente = j.sec_cliente and
|
|
c.status_t is null
|
|
|
|
SELECT d.descrip INTO p_descrip FROM vetb00008 d
|
|
WHERE d.cod_zona = j.zona AND d.status_t IS NULL
|
|
|
|
LET c_direccion = p_calle CLIPPED,' ',p_casa CLIPPED,' ',p_descrip
|
|
|
|
IF limite IS NULL THEN
|
|
LET limite = 0
|
|
END IF
|
|
PRINTX j.cliente, j.nombre,j.limite,prima,p_companias.nombre,
|
|
fecha_final,chfecha,p_calle,p_casa,j.num_rnc,c_direccion,fecha_inicial,balance,imprime,
|
|
j.tipo_cliente,imprimeencabezado
|
|
|
|
LET debito = 0
|
|
LET credito = 0
|
|
LET b_balance = balance
|
|
|
|
ON EVERY ROW
|
|
IF b_balance IS NULL THEN
|
|
LET b_balance = 0
|
|
END IF
|
|
# IF j.fecha >= fecha_inicial THEN
|
|
LET b_balance = b_balance + j.valor
|
|
|
|
LET d_credito = 0
|
|
LET d_debito = 0
|
|
|
|
IF j.valor < 0 THEN
|
|
LET d_credito = j.valor
|
|
LET credito = credito + j.valor
|
|
ELSE
|
|
LET d_debito = j.valor
|
|
LET debito = debito + j.valor
|
|
END IF
|
|
|
|
#END IF
|
|
PRINTX j.num_doc, j.tipo, j.fecha, j.aplica_a,j.orden,j.cotizacion_no,d_debito,d_credito,d_balance,
|
|
psimbolo,b_balance,j.conduce
|
|
{
|
|
LET dias = 0
|
|
LET dias = fecha_final - j.fecha
|
|
IF dias <= 0 THEN
|
|
LET cte = j.valor + cte
|
|
END IF
|
|
IF dias > 0 AND dias < 30 THEN
|
|
LET v1_30 = v1_30 + j.valor
|
|
END IF
|
|
IF dias > 30 and dias < 60 THEN
|
|
LET v31_45 = v31_45 + j.valor
|
|
END IF
|
|
IF dias > 61 and dias < 90 THEN
|
|
LET v46_60 = v46_60 + j.valor
|
|
END IF
|
|
IF dias > 90 THEN
|
|
LET vm_60 = vm_60 + j.valor
|
|
END IF}
|
|
AFTER GROUP OF j.cliente
|
|
|
|
PRINTX cte,v1_30,v31_45,v46_60, vm_60
|
|
|
|
END REPORT |