866 lines
28 KiB
Plaintext
866 lines
28 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : CCPRRP018
|
|
OBJETIVO : Listar los Estados De Cuentas de los clientes
|
|
(Partidas pendientes de cobros)
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA REALIZACION : Julio 28, 1993
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ccprgb000.4gl"
|
|
|
|
DEFINE prima DECIMAL(10,2) ### Varible que equivale a la prima de otra moneda
|
|
DEFINE destino,mov CHAR(1)
|
|
DEFINE idx_1, idx_2, idx_3 SMALLINT ## Variables usadas para formar arreglos
|
|
DEFINE fecha_final DATE ## Varible usada para busqueda por fecha de corte
|
|
DEFINE salir, salir1, salir3, tipo_venta CHAR(1) ## Bandera para control loop
|
|
DEFINE selec5, selec6 CHAR(1500) ## Variables para almacenar busquedas
|
|
DEFINE valor_de DECIMAL(12,2)
|
|
DEFINE dias2 INTEGER,
|
|
command CHAR(120),
|
|
tipo CHAR(2)
|
|
DEFINE dias SMALLINT ## Variable que almacena la diferencia de dias
|
|
DEFINE p_tel LIKE vetb00004.telefono
|
|
DEFINE archivo,filename,sysos CHAR(120),
|
|
cels CHAR(20),
|
|
cnt SMALLINT,
|
|
nombre_zona,nombre_p CHAR(30)
|
|
DEFINE credito, debito, tcredito, tdebito, tbalance,
|
|
limite, b_balance, no_v,v1_30, v31_45, v46_60, vm_60,p_valor DECIMAL(12,2)
|
|
|
|
DEFINE p_prov LIKE vetb00020.cod_provincia,
|
|
nom_prov LIKE vetb00020.nombre_provincia
|
|
|
|
DEFINE p_calle,p_descrip,pbarrio CHAR(30)
|
|
DEFINE p_casa,p_zona,p_numero CHAR(10),
|
|
balance DECIMAL(12,2),
|
|
ptelefono LIKE vetb00004.telefono,
|
|
pzona LIKE vetb00004.cod_zona,
|
|
pprovincia LIKE vetb00004.cod_provincia
|
|
|
|
#DEFINE no_v LIKE cctb00001.aplica_a
|
|
|
|
DEFINE fecha1,fecha2 DATE,
|
|
p_nombre CHAR(30),
|
|
p_limite_credito DECIMAL(10,2)
|
|
####### Variables para desplegar resultados por pantalla ante de la impresion
|
|
|
|
DEFINE tot_gen1 RECORD
|
|
totald DECIMAL(10,2),
|
|
totalc DECIMAL(10,2),
|
|
totalg DECIMAL(10,2)
|
|
END RECORD,
|
|
|
|
##### Registro que almacena la infoprmacion a imprimir ####
|
|
m_tipo_doc LIKE cctb00001.tipo_doc
|
|
|
|
DEFINE movtos RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
DEFINE fecha3 DATE
|
|
|
|
FUNCTION ccprrp018()
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
####### Abriendo y desplegando formulario de captura de datos
|
|
|
|
OPEN FORM ccfmrp018 FROM "ccfmrp018"
|
|
DISPLAY FORM ccfmrp018
|
|
CALL pantalla()
|
|
DISPLAY "ccprrp018" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Estado Cuentas Pendiente De Cobros" AT 6,21 ATTRIBUTE(BLACK)
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
##### Creando el criterio de busqueda
|
|
|
|
CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM
|
|
tipo_cliente, sec_cliente
|
|
##### Aceptando la fecha de corte para busqueda de informacion
|
|
|
|
INITIALIZE fecha_final to null
|
|
INPUT BY NAME prima,fecha_final,dias2
|
|
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 FIELD dias2
|
|
IF dias2 is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD dias2
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
###### Creando facilidad para cancelar operacion mediante la tecla DELETE
|
|
###### o SUPR
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
# Busca los documentos que esten en el rango de fechas especificado
|
|
LET selec5 =
|
|
"SELECT a.tipo_cliente,a.sec_cliente,a.aplica_a,sum(a.valor+a.monto_desc) ",
|
|
"FROM cctb00001 a,vetb00004 c ",
|
|
"WHERE a.status_t IS NULL AND a.fecha_orig <= ? AND ",
|
|
" a.num_doc IS NOT NULL AND a.tipo_doc != ('PC') AND ",
|
|
" a.tipo_cliente = c.tipo_cliente AND ",
|
|
" a.sec_cliente = c.sec_cliente AND ",
|
|
#" a.sec_cliente = b.sec_cliente AND a.tipo_doc in ('FE','FT','NC') AND ",
|
|
criterio CLIPPED," GROUP BY 1,2,3 HAVING SUM(a.valor+a.monto_desc) <> 0 ",
|
|
"ORDER BY 3 "
|
|
|
|
DISPLAY "<< Buscando los Movimientos del Rango >>" AT 20,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE movi FROM selec5
|
|
DECLARE movtos_cli CURSOR FOR movi
|
|
OPEN movtos_cli USING fecha_final
|
|
LET destino = "E"
|
|
IF destino = "E" THEN
|
|
CALL e_ccrp18()
|
|
RETURN
|
|
END IF
|
|
#START REPORT report18 TO "ccrp18"
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
|
|
###### Comienza el loop para enviar informacion al reporte
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH movtos_cli INTO movtos.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
IF prima IS NOT NULL THEN
|
|
LET movtos.valor = movtos.valor * prima
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tipo_doc
|
|
INTO m_tipo_doc
|
|
FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND
|
|
a.num_doc = a.aplica_a AND
|
|
a.num_doc=movtos.aplica_a AND
|
|
a.tipo_doc not in ("PG","NC","PC","ND") and
|
|
a.tipo_cliente=movtos.tipo_cliente AND
|
|
a.sec_cliente=movtos.sec_cliente
|
|
GROUP BY 1
|
|
|
|
IF STATUS < 0 THEN
|
|
LET m_tipo_doc = "KK"
|
|
END IF
|
|
|
|
IF m_tipo_doc = "DE" THEN
|
|
#LET doccli16.fecha_venc = NULL
|
|
SELECT SUM(a.valor+a.monto_desc)*-1
|
|
INTO movtos.valor
|
|
FROM cctb00001 a
|
|
WHERE a.fecha_orig<=fecha_final AND a.tipo_cliente=movtos.tipo_cliente
|
|
AND a.sec_cliente=movtos.sec_cliente AND a.status_t IS NULL AND
|
|
a.tipo_doc = "DE" AND a.num_doc = movtos.aplica_a
|
|
END IF
|
|
# OUTPUT TO REPORT report18(movtos.*)
|
|
END WHILE
|
|
|
|
# FINISH REPORT report18
|
|
RUN "type c:\ccrp18 > %USPRINT%"
|
|
#CALL fdestino(destino,archivo,imprime)
|
|
CLEAR SCREEN
|
|
END FUNCTION
|
|
|
|
####### Funcion para dar salida a la informacion
|
|
{
|
|
REPORT report18(x)
|
|
DEFINE x RECORD
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
aplica_a LIKE cctb00001.aplica_a,
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE hora CHAR(5)
|
|
DEFINE imp_cli CHAR(1)
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
ORDER BY x.sec_cliente,x.aplica_a
|
|
|
|
#### Proceso para sortear la informacion
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
|
|
PRINT COLUMN 1, letras.comp_on
|
|
PRINT COLUMN 1, "ccprrp018",
|
|
COLUMN 31, "R A Y - O - V A C D O M I N I C A N A, S. A.",
|
|
COLUMN 101, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 40,"Estado de Cuenta Al ",fecha_final USING "dd/mm/yyyy",
|
|
COLUMN 106, hora
|
|
|
|
IF x.sec_cliente > 9000 AND prima IS NULL THEN
|
|
PRINT COLUMN 53, "US$"
|
|
ELSE
|
|
PRINT COLUMN 53, "RD$"
|
|
END IF
|
|
|
|
##### Si el cliente es local el valor de la prima de la moneda es nulo
|
|
IF x.sec_cliente < 9000 THEN
|
|
LET prima = null
|
|
END IF
|
|
|
|
SKIP 1 LINE
|
|
BEFORE GROUP OF x.sec_cliente
|
|
|
|
LET idx = 0
|
|
LET no_v = 0
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
|
|
IF tdebito IS NULL THEN
|
|
LET tdebito = 0
|
|
END IF
|
|
|
|
IF tcredito IS NULL THEN
|
|
LET tcredito = 0
|
|
END IF
|
|
|
|
IF tbalance IS NULL THEN
|
|
LET tbalance = 0
|
|
END IF
|
|
|
|
#### Seleciona los datos generales de identificacion del cliente
|
|
|
|
SELECT UNIQUE b.nombre,b.limite_credito,b.zona_postal,b.num_rnc,c.calle,
|
|
c.casa_num,c.barrio,b.telefono,b.cod_provincia
|
|
INTO p_nombre,p_limite_credito,p_zona,p_numero,p_calle,p_casa,pbarrio,p_tel,p_prov
|
|
FROM vetb00004 b ,vetb00005 c
|
|
WHERE x.tipo_cliente = b.tipo_cliente and x.sec_cliente = b.sec_cliente and
|
|
b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and
|
|
b.status_t is null
|
|
|
|
|
|
SELECT a.nombre_provincia INTO nom_prov
|
|
FROM vetb00020 a
|
|
WHERE a.cod_provincia = p_prov
|
|
AND a.status_t IS NULL
|
|
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
LET b_balance = balance
|
|
|
|
IF limite IS NULL THEN
|
|
LET limite = 0
|
|
END IF
|
|
|
|
LET debito = 0
|
|
LET credito = 0
|
|
|
|
IF prima is not null THEN
|
|
PRINT COLUMN 1,"Prima: ", prima using "###.##"
|
|
END IF
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------"
|
|
, letras.negrillas_on
|
|
|
|
PRINT COLUMN 1, "Cliente:",
|
|
COLUMN 10, x.tipo_cliente using "&&","-",
|
|
x.sec_cliente using "&&&&",
|
|
COLUMN 18, p_nombre clipped,
|
|
COLUMN 64, "RNC : ",p_numero
|
|
|
|
PRINT COLUMN 10, p_calle clipped," ",p_casa CLIPPED,pbarrio CLIPPED,", ",
|
|
nom_prov CLIPPED,
|
|
COLUMN 90, "Tel : ",p_tel CLIPPED
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"-----------"
|
|
|
|
PRINT COLUMN 4, "D O C U M E N T O"
|
|
|
|
PRINT COLUMN 1, "|----------------------|"
|
|
|
|
PRINT COLUMN 3, "Numero",
|
|
COLUMN 11, "Tipo",
|
|
COLUMN 17, "Fecha",
|
|
COLUMN 30, "Vencimiento",
|
|
COLUMN 63, " Valor ",
|
|
COLUMN 99, "B A L A N C E"
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------" ,
|
|
"-----------"
|
|
# END IF
|
|
|
|
ON EVERY ROW
|
|
|
|
display "aplica ",x.aplica_a
|
|
|
|
SELECT UNIQUE a.tipo_doc,MAX(a.fecha_orig),MAX(a.fecha_ven)
|
|
INTO tipo,fecha2,fecha3
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = x.aplica_a AND
|
|
a.status_t IS NULL AND
|
|
a.aplica_a = a.num_doc
|
|
GROUP BY 1
|
|
|
|
IF fecha2 IS NULL THEN
|
|
LET fecha2 = fecha_final
|
|
END IF
|
|
IF fecha3 IS NULL THEN
|
|
LET fecha3 = fecha_final
|
|
END IF
|
|
|
|
###### Balanceando la informacion
|
|
|
|
|
|
####### Calculando los dias de vencimiento del documento
|
|
|
|
|
|
# IF (fecha_final - fecha3) >= dias2 THEN
|
|
LET dias = (fecha_final - fecha3) - dias2
|
|
|
|
LET p_valor = x.valor
|
|
IF p_valor <> 0 THEN
|
|
|
|
LET Idx = idx + 1
|
|
display "idx ",idx
|
|
#IF idx > 0 THEN
|
|
|
|
IF tipo != "FT" THEN
|
|
INITIALIZE fecha3 TO NULL
|
|
END IF
|
|
|
|
LET b_balance = b_balance + x.valor
|
|
|
|
IF dias <= 0 THEN
|
|
LET no_v = p_valor + no_v
|
|
END IF
|
|
IF dias > 0 and dias < 31 THEN
|
|
LET v1_30 = p_valor + v1_30
|
|
END IF
|
|
IF dias > 30 and dias < 46 THEN
|
|
LET v31_45 = p_valor + v31_45
|
|
END IF
|
|
IF dias > 45 and dias < 61 THEN
|
|
LET v46_60 = p_valor + v46_60
|
|
END IF
|
|
IF dias > 60 THEN
|
|
LET vm_60 = vm_60 + p_valor
|
|
END IF
|
|
|
|
#display "dos aplica_a ",x.aplica_a
|
|
PRINT COLUMN 3, x.aplica_a using "######",
|
|
COLUMN 12, tipo,
|
|
COLUMN 16, fecha2 using "dd/mm/yyyy",
|
|
COLUMN 29, fecha3 using "dd/mm/yyyy",
|
|
COLUMN 59, x.valor using "(((,(((,(((.&&)",
|
|
COLUMN 97, b_balance using "(((,(((,(((.&&)"
|
|
#END IF
|
|
END IF
|
|
|
|
AFTER GROUP OF x.sec_cliente
|
|
IF no_v <> 0 OR v1_30 <> 0 OR v31_45 <> 0 OR v46_60 <> 0 OR vm_60 <> 0 THEN
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 52," RESUMEN POR VENCIMIENTO "
|
|
PRINT #COLUMN 1, "ANALISIS POR ANTIGUEDAD",letras.negrillas_on,
|
|
COLUMN 32, "No Vencido",
|
|
COLUMN 50, "1 a 30",
|
|
COLUMN 60, "31 a 45",
|
|
COLUMN 74, "46 a 60",
|
|
COLUMN 86, "Mas de 60",letras.negrillas_off
|
|
|
|
PRINT #COLUMN 1, "DE SU APRECIADA CUENTA: ",
|
|
COLUMN 25, no_v using "((,(((,(((.&&)",
|
|
COLUMN 41, v1_30 using "((,(((,(((.&&)",
|
|
COLUMN 54, v31_45 using "((,(((,(((.&&)",
|
|
COLUMN 70, v46_60 using "((,(((,(((.&&)",
|
|
COLUMN 82, vm_60 using "((,(((,(((.&&)"
|
|
|
|
SKIP 1 LINE
|
|
|
|
IF v1_30 = 0 AND v31_45 = 0 AND v46_60 = 0 AND
|
|
vm_60 = 0 THEN
|
|
PRINT COLUMN 1,
|
|
" NOTA : "
|
|
PRINT COLUMN 1,
|
|
" CON LA REMISION DE ESTE ESTADO DE CUENTAS SOLO ESTAMOS CONFIRMANDO EL "
|
|
PRINT COLUMN 1,
|
|
" BALANCE COMPUESTO POR LA(S) FACTURA(S) DETALLADA(S) EN EL MISMO."
|
|
PRINT COLUMN 1,
|
|
" SI EXISTE ALGUNA DIFERENCIA FAVOR COMUNICARSE CON NUESTRO GERENTE DE TESORERIA "
|
|
PRINT COLUMN 1,
|
|
" EL LIC. PEDRO ACOSTA AL TEL. 530-5409, O ENVIARNOS SU RESPUESTA, YA SEA POR "
|
|
PRINT COLUMN 1,
|
|
" LA VIA A NUESTRO FAX No. 530-7966, O POR VIA A NUESTRA DIRECCION ELECTRONICA"
|
|
PRINT COLUMN 1,
|
|
" pacosta@dom.rov.com "
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1,
|
|
" SALUDOS CORDIALES. "
|
|
END IF
|
|
|
|
IF v1_30 != 0 OR v31_45 != 0 OR v46_60 != 0 OR
|
|
vm_60 != 0 THEN
|
|
PRINT COLUMN 1,
|
|
"NOTA : "
|
|
PRINT COLUMN 1,
|
|
"FAVOR OBSERVAR QUE ESTE ESTADO DE CUENTAS PRESENTA UN BALANCE VENCIDO COMPUESTO "
|
|
PRINT COLUMN 1,
|
|
"POR LA(S) FACTURA(S) QUE LE ESTAMOS SENALANDO."
|
|
PRINT COLUMN 1,
|
|
"EN CASO DE QUE DESEE LE ENVIAMOS A NUESTRO REPRESENTANTE PARA LOS FINES DE "
|
|
PRINT COLUMN 1,
|
|
"RIGOR, FAVOR COMUNICARSE CON NUESTRO GERENTE DE TESORERIA EL LIC. PEDRO ACOSTA "
|
|
PRINT COLUMN 1,
|
|
"AL TELEFONO 530-5409, O ENVIARNOS SU RESPUESTA, YA SEA POR VIA A NUESTRO FAX "
|
|
PRINT COLUMN 1,
|
|
"EL No. 530-7966, O POR VIA A NUESTRA DIRECCION ELECTRONICA pacosta@dom.rov.com "
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1,
|
|
"SALUDOS CORDIALES. "
|
|
END IF
|
|
|
|
SKIP 1 LINES
|
|
|
|
|
|
PRINT COLUMN 51,
|
|
" LIC. PEDRO ACOSTA "
|
|
|
|
|
|
PRINT COLUMN 51,
|
|
"GERENTE DE TESORERIA"
|
|
|
|
LET b_balance = 0
|
|
SKIP TO TOP OF PAGE
|
|
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, letras.negrillas_on,
|
|
"PG-Pago FT-Factura Local FE-Factura Exterior ",
|
|
"ND-Nota Debito NC-Nota Credito DE-Devolucion",
|
|
letras.negrillas_off
|
|
|
|
LET no_v = 0
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
|
|
END REPORT
|
|
}
|
|
|
|
FUNCTION e_ccrp18()
|
|
DEFINE primera,imprime_ana,imprime_cliente CHAR(1),
|
|
cliente CHAR(70),
|
|
codigo_g,codigo_ant,codigo_act CHAR(6),
|
|
ret CHAR(30),
|
|
ejecuta,localiza CHAR(80),
|
|
documento CHAR(9)
|
|
|
|
--# CALL fgl_init4js()
|
|
|
|
--# LET archivo = NULL
|
|
--# LET filename = NULL
|
|
--# LET filename = FGL_GETENV("USPROGRAM")
|
|
|
|
--# LET archivo = "G:\\\\ESTADO.XLS"
|
|
--# LET sysos = FGL_GETENV("OS")
|
|
|
|
--# IF sysos = "Windows_NT" THEN
|
|
--# LET filename = filename CLIPPED," G:\\\\ESTADO.XLS"
|
|
--# LET localiza = "G:\\ESTADOS\\"
|
|
|
|
--# LET ejecuta = "DEL /S /Q ",localiza CLIPPED,"*.*"
|
|
RUN ejecuta
|
|
LET ejecuta = NULL
|
|
--# ELSE
|
|
--# LET filename = "C:\\\\ARCHIV~1\\\\MICROS~1\\\\OFFICE\\\\EXCEL.EXE G:\\\\ESTADO.XLS"
|
|
--# LET localiza = "G:\\ESTADOS\\"
|
|
--# LET archivo = "G:\\\\ESTADO.XLS"
|
|
|
|
--# LET ejecuta = "DEL ",localiza CLIPPED,"*.xls"
|
|
RUN ejecuta
|
|
LET ejecuta = NULL
|
|
--# END IF
|
|
|
|
|
|
# CREACION TABLA TEMPORAL
|
|
CREATE TABLE estado
|
|
(
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente SMALLINT,
|
|
aplica_a INTEGER,
|
|
fecha_venc DATE,
|
|
valor DECIMAL(12,2)
|
|
)
|
|
|
|
|
|
LET primera = "S"
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH movtos_cli INTO movtos.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
IF prima IS NOT NULL THEN
|
|
LET movtos.valor = movtos.valor * prima
|
|
END IF
|
|
|
|
SELECT MAX(a.fecha_orig)
|
|
INTO fecha3
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = movtos.aplica_a AND
|
|
a.status_t IS NULL AND
|
|
a.aplica_a = a.num_doc
|
|
|
|
INSERT INTO estado VALUES (movtos.tipo_cliente,movtos.sec_cliente,
|
|
movtos.aplica_a,fecha3,movtos.valor)
|
|
END WHILE
|
|
|
|
--# IF winexec(filename) THEN
|
|
|
|
--# IF DDEconnect("EXCEL",archivo) THEN
|
|
|
|
--# LET cels = "R",6 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,fecha_final) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
DECLARE buscate CURSOR FOR
|
|
SELECT a.tipo_cliente,a.sec_cliente,a.aplica_a,SUM(a.valor) FROM estado a
|
|
GROUP BY 1,2,3
|
|
ORDER BY 1,2
|
|
|
|
LET primera = "S"
|
|
LET cnt = 16
|
|
LET balance = 0
|
|
LET codigo_ant = "1"
|
|
LET codigo_Act = NULL
|
|
FOREACH buscate INTO movtos.*
|
|
|
|
LET codigo_Act = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&"
|
|
LET imprime_ana = "N"
|
|
IF primera = "S" THEN
|
|
LET codigo_ant = codigo_Act
|
|
END IF
|
|
IF codigo_ant != codigo_act THEN
|
|
LET codigo_ant = codigo_Act
|
|
LET primera = "S"
|
|
LET imprime_ana = "S"
|
|
--# LET cels = "R",38 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C4"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C5"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C7"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET command = "Run(\\\"ESTADO.XLS!SALVAR\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
|
|
--# IF sysos = "Windows_NT" THEN
|
|
LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
|
|
codigo_g,".xls"
|
|
--# ELSE
|
|
LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
|
|
codigo_g,".xls"
|
|
--# END IF
|
|
RUN ejecuta
|
|
|
|
--# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
|
|
LET cnt = 16
|
|
--# END IF
|
|
|
|
--# IF primera = "S" THEN
|
|
LET primera = "N"
|
|
LET imprime_cliente = "S"
|
|
|
|
LET no_v = 0
|
|
LET v1_30 = 0
|
|
LET v31_45 = 0
|
|
LET v46_60 = 0
|
|
LET vm_60 = 0
|
|
|
|
#### Seleciona los datos generales de identificacion del cliente
|
|
|
|
LET codigo_g = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&"
|
|
|
|
SELECT UNIQUE b.nombre,b.limite_credito,b.zona_postal,b.num_rnc,c.calle,
|
|
c.casa_num,b.telefono,b.cod_zona,b.cod_provincia,c.barrio
|
|
INTO p_nombre,p_limite_credito,p_zona,p_numero,p_calle,p_casa,
|
|
ptelefono,pzona,pprovincia,pbarrio
|
|
FROM vetb00004 b ,vetb00005 c
|
|
WHERE b.tipo_cliente = movtos.tipo_cliente and b.sec_cliente = movtos.sec_cliente and
|
|
b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and
|
|
b.status_t is null
|
|
|
|
SELECT a.descrip INTO nombre_zona FROM vetb00008 a
|
|
WHERE a.cod_zona = pzona
|
|
|
|
SELECT b.nombre_provincia
|
|
INTO nombre_p FROM vetb00009 a, vetb00020 b
|
|
WHERE a.cod_zona = pzona AND
|
|
a.cod_provincia = pprovincia AND
|
|
b.cod_provincia = a.cod_provincia
|
|
|
|
|
|
--# LET cliente = p_nombre CLIPPED," ","(",movtos.tipo_cliente USING "##","-",
|
|
movtos.sec_cliente USING "&&&&",")"
|
|
--# LET cliente = cliente CLIPPED
|
|
--# LET cels = "R",8 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
LET balance = 0
|
|
--# LET cliente = null
|
|
--# LET cliente = p_calle CLIPPED," #",p_casa CLIPPED,", ",pbarrio CLIPPED," Tel. ",ptelefono CLIPPED
|
|
--# LET cels = "R",9 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cliente = null
|
|
--# LET cliente = "LIMITE: ",p_limite_credito USING "##,###,###.##"," ",
|
|
"RNC: ",p_numero
|
|
--# LET cels = "R",10 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cliente = null
|
|
--# LET cliente = nombre_zona CLIPPED,", ",nombre_p CLIPPED
|
|
--# LET cels = "R",11 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# END IF
|
|
|
|
|
|
SELECT UNIQUE a.tipo_doc,MIN(a.fecha_orig) INTO tipo,fecha2
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = movtos.aplica_a AND a.status_t IS NULL AND
|
|
a.aplica_a = a.num_doc
|
|
GROUP BY 1
|
|
--# LET documento = movtos.aplica_a USING "<<<<<<","-",tipo
|
|
--# LET cels = "R",cnt USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,documento) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
|
|
--# LET cels = "R",cnt USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,fecha2) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET balance = balance + movtos.valor
|
|
|
|
--# LET cels = "R",cnt USING "<<","C5"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,movtos.valor) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
--# LET balance = balance + movtos.valor
|
|
|
|
--# LET cels = "R",cnt USING "<<","C7"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,balance) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",35 USING "<<","C7"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,balance) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
#LET dias = (fecha_final - fecha2) - dias2
|
|
LET dias = (fecha_final - fecha3) - dias2
|
|
|
|
|
|
IF dias > 0 AND dias < 31 THEN
|
|
LET v1_30 = movtos.valor + v1_30
|
|
END IF
|
|
IF dias > 30 and dias < 46 THEN
|
|
LET v31_45 = movtos.valor + v31_45
|
|
END IF
|
|
IF dias > 45 and dias < 61 THEN
|
|
LET v46_60 = movtos.valor + v46_60
|
|
END IF
|
|
IF dias > 60 THEN
|
|
LET vm_60 = vm_60 + movtos.valor
|
|
END IF
|
|
|
|
--# LET cnt = cnt + 1
|
|
--# END FOREACH
|
|
IF imprime_ana = "N" THEN
|
|
--# LET cels = "R",38 USING "<<","C2"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C3"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C4"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C5"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
--# LET cels = "R",38 USING "<<","C7"
|
|
--# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN
|
|
--# ELSE
|
|
--# LET numero_msg =391
|
|
--# CALL msg(numero_msg)
|
|
--# END IF
|
|
|
|
{--# LET command = "Run(\\\"ESTADO.XLS!PROTEJE\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
}
|
|
--# LET command = "Run(\\\"ESTADO.XLS!SALVAR\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
|
|
{--# LET command = "Run(\\\"ESTADO.XLS!DESPROTEJER\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
}
|
|
|
|
--# IF sysos = "Windows_NT" THEN
|
|
LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
|
|
codigo_g,".xls"
|
|
--# ELSE
|
|
LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
|
|
codigo_g,".xls"
|
|
--# END IF
|
|
|
|
RUN ejecuta
|
|
|
|
--# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)"
|
|
--# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
|
|
|
|
END IF
|
|
end if
|
|
end if
|
|
DROP TABLE estado
|
|
--# END FUNCTION
|
|
|