532 lines
21 KiB
Plaintext
532 lines
21 KiB
Plaintext
{------------------------------------------------------------------------------
|
|
PROGRAMA : CCPRMT050
|
|
OBJETIVO : Programa para cobros compulsivos CxC
|
|
PROGRAMADOR : Valentin Rodriguez
|
|
FECHA REALIZACION :
|
|
------------------------------------------------------------------------------}
|
|
IMPORT JAVA javax.mail.Session
|
|
|
|
GLOBALS "ccprgb000.4gl"
|
|
|
|
#VARIABLES PARA INTERACTUAR CON CAMPO DEL FORMULARIO
|
|
#DEFINE sec_cliente SMALLINT
|
|
|
|
DEFINE campos RECORD
|
|
tipo_cliente SMALLINT,
|
|
f_vencimiento DATE,
|
|
rangoFecha CHAR(10),
|
|
f_final DATE,
|
|
f_inicio DATE
|
|
END RECORD,
|
|
att dynamic array of record
|
|
col1 ,
|
|
col2 ,
|
|
col3 ,
|
|
col4 ,
|
|
col5 ,
|
|
col6 ,
|
|
col7 ,
|
|
col8 ,
|
|
col9 ,
|
|
col10,col11 STRING
|
|
end RECORD,
|
|
xcliente,enviainfo,sqlconnect STRING,
|
|
retorne BOOLEAN,
|
|
montopendiente DECIMAL(12,2)
|
|
|
|
DEFINE xusername,xsmtphost,xsmtpport,xpassword,respuesta,mensajes STRING
|
|
# VARIABLES PARA GUARDAR LOS DATOS DEVUELTOS POR EL METODO 'busca_balance'
|
|
# DEFINE xcorriente,x1a30,x31a60,x61a90,xmas90,xtotalSaldo DECIMAL(12,2)
|
|
|
|
#RECORD DONDE GUARDAREMOS LAS COTIZACIONES, ORDENES Y FACTURAS ENVIADOS
|
|
#POR EL METODO 'busca_balance'
|
|
|
|
DEFINE tb_acuerdo DYNAMIC ARRAY OF RECORD
|
|
ACfechaPago DATE,
|
|
ACobservacion VARCHAR(100),
|
|
ACmontoPago DEC(12,2),
|
|
fechCompromiso ,
|
|
fecha_registro CHAR(40),
|
|
usuario VARCHAR(100),
|
|
ACidCliente INT
|
|
END RECORD,
|
|
arrContactos DYNAMIC ARRAY OF RECORD
|
|
seleccionar,
|
|
contacto,puesto,email,celular,telefonoOficina STRING
|
|
END RECORD,
|
|
arrConsolidado DYNAMIC ARRAY OF RECORD
|
|
cCliente,cDocumento,cfechaVen,cTipoDoc,cOrden,cCotizacion STRING,
|
|
cCorriente,cDe1a30,cDe31a60,cD61a90,cMasde90,cTotal DECIMAL(12,2),
|
|
cmoneda STRING
|
|
END RECORD
|
|
DEFINE notaCliente, cliente VARCHAR(200),
|
|
fecha_compromiso DATE,
|
|
monto_pago DECIMAL(12,2),
|
|
xtipocliente,xseccliente INT
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" AS 'MSSQL' USER usuarios USING clave
|
|
|
|
CONNECT TO "marmotech" AS 'IFMX' USER usuarios USING clave
|
|
|
|
CALL buscaInformacion()
|
|
END MAIN
|
|
|
|
|
|
|
|
FUNCTION buscaInformacion()
|
|
|
|
DEFINE selec STRING,
|
|
datatree DYNAMIC ARRAY OF RECORD
|
|
cliente,factura,orden,cotizacion,telefono STRING,
|
|
limCredito,corriente,de1a30,de31a60,de61a90,masde90,totalSaldo DEC(12,2),
|
|
moneda STRING,
|
|
nodo,hijo,imagen STRING,
|
|
|
|
idregistro,tcliente,scliente,sec_vend INT,tipo_doc VARCHAR(10)
|
|
END RECORD,
|
|
idx INT,
|
|
|
|
compromiso RECORD
|
|
tipo_cliente,sec_cliente INT,
|
|
fechaActualizaacion DATE,
|
|
observacion VARCHAR(200),
|
|
montoPago DEC(12,2),
|
|
documento VARCHAR(25),
|
|
tipo_doc VARCHAR(10),
|
|
fechaCompromiso DATE,
|
|
envioemail VARCHAR(10)
|
|
END RECORD
|
|
|
|
# SET CONNECTION 'IFMX'
|
|
|
|
LET sqlconnect = 'marmotech'
|
|
LET selec =
|
|
"SELECT a.clientes, a.factura,a.orden,a.cotizacion,a.telefono,a.limcredito,a.corriente,a.d1a30,
|
|
a.d31a60,a.d31a60,a.mas90,a.totalSaldo,a.moneda,
|
|
a.nodo,a.hijos,imagen,idregistro,a.tipo_cliente,a.sec_cliente,sec_vend,a.tipo_doc
|
|
FROM cctb00042 a
|
|
WHERE a.totalSaldo > 0
|
|
ORDER BY a.idregistro,a.nodo,a.hijos
|
|
"
|
|
|
|
LET idx = 1
|
|
PREPARE comando FROM selec
|
|
DECLARE buscacxc CURSOR FOR comando
|
|
|
|
FOREACH buscacxc INTO datatree[idx].*
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
call ui.Interface.loadStyles("formularios")
|
|
OPEN WINDOW w1 WITH FORM "ccfmmt050"
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
DISPLAY ARRAY datatree TO s_record.*
|
|
BEFORE DISPLAY
|
|
LET Xtipocliente = datatree[arr_curr()].tcliente
|
|
LET xseccliente = datatree[arr_curr()].scliente
|
|
|
|
call dialog.setCellAttributes(att)
|
|
|
|
FOR idx = 1 TO datatree.getLength()
|
|
LET att[idx].col1 = NULL
|
|
LET att[idx].col2 = NULL
|
|
LET att[idx].col3 = NULL
|
|
LET att[idx].col4 = NULL
|
|
LET att[idx].col5 = NULL
|
|
LET att[idx].col6 = NULL
|
|
LET att[idx].col7 = NULL
|
|
LET att[idx].col8 = NULL
|
|
LET att[idx].col9 = NULL
|
|
LET att[idx].col10 = NULL
|
|
LET att[idx].col11 = NULL
|
|
IF datatree[idx].masde90 > 0 THEN
|
|
LET ATT[idx].col11 = 'red reverse'
|
|
END IF
|
|
IF datatree[idx].de61a90 > 0 THEN
|
|
LET ATT[idx].col10 = 'red reverse'
|
|
END IF
|
|
IF datatree[idx].de31a60 > 0 THEN
|
|
LET att[idx].coL9 = "yellow reverse"
|
|
END IF
|
|
IF datatree[idx].de1a30 > 0 THEN
|
|
LET att[idx].coL8 = "yellow reverse"
|
|
END IF
|
|
IF datatree[idx].corriente > 0 THEN
|
|
LET att[idx].coL7 = "green reverse"
|
|
END IF
|
|
END FOR
|
|
ON SELECTION CHANGE
|
|
LET montopendiente =datatree[arr_curr()].totalSaldo
|
|
|
|
DISPLAY datatree[arr_curr()].factura TO nfactura
|
|
DISPLAY montopendiente TO montopendiente
|
|
|
|
CALL compromiso(datatree[arr_curr()].tcliente,datatree[arr_curr()].scliente,datatree[arr_curr()].factura,
|
|
datatree[arr_curr()].tipo_doc)
|
|
RETURNING cliente
|
|
DISPLAY cliente TO ncliente
|
|
CALL contactos(datatree[arr_curr()].tcliente,datatree[arr_curr()].scliente)
|
|
AFTER DISPLAY
|
|
END DISPLAY
|
|
DISPLAY ARRAY arrContactos TO scontactos.*
|
|
END DISPLAY
|
|
INPUT BY NAME fecha_compromiso,monto_pago,notaCliente,enviainfo
|
|
BEFORE INPUT
|
|
LET notaCliente = 'Por medio de la presente le estamos notificando los acuerdos que conversamos:'
|
|
AFTER FIELD monto_pago
|
|
IF monto_pago IS NOT NULL THEN
|
|
IF monto_pago > montopendiente THEN
|
|
CALL msg(168)
|
|
NEXT FIELD monto_pago
|
|
END IF
|
|
END IF
|
|
AFTER FIELD fecha_compromiso
|
|
IF fecha_compromiso IS NOT NULL THEN
|
|
IF fecha_compromiso < TODAY THEN
|
|
CALL msg(1011)
|
|
NEXT FIELD fecha_compromiso
|
|
END IF
|
|
END IF
|
|
ON ACTION guardar ATTRIBUTE(TEXT='Salvar', IMAGE="save")
|
|
LET compromiso.tipo_cliente = datatree[arr_curr()].tcliente
|
|
LET compromiso.sec_cliente = datatree[arr_curr()].scliente
|
|
LET compromiso.fechaCompromiso = fecha_compromiso
|
|
LET compromiso.observacion = notaCliente
|
|
LET compromiso.montoPago = monto_pago
|
|
LET compromiso.documento =datatree[arr_curr()].factura
|
|
LET compromiso.tipo_doc = datatree[arr_curr()].tipo_doc
|
|
CALL salvacompromiso(compromiso.*)
|
|
|
|
DISPLAY datatree[arr_curr()].factura TO nfactura
|
|
DISPLAY datatree[arr_curr()].totalSaldo TO montopendiente
|
|
|
|
CALL compromiso(datatree[arr_curr()].tcliente,datatree[arr_curr()].scliente,datatree[arr_curr()].factura,
|
|
datatree[arr_curr()].tipo_doc)
|
|
RETURNING cliente
|
|
DISPLAY cliente TO ncliente
|
|
IF enviainfo = 'SI' THEN
|
|
CALL notificar()
|
|
END IF
|
|
END INPUT
|
|
DISPLAY ARRAY tb_acuerdo TO src_acuerdo.*
|
|
END DISPLAY
|
|
DISPLAY ARRAY arrConsolidado TO sconsolidado.*
|
|
END DISPLAY
|
|
ON ACTION estado ATTRIBUTE(TEXT="Estado",IMAGE="fa-dollar")
|
|
DISPLAY "sqlconnect ",sqlconnect
|
|
IF sqlconnect = 'smarmotech' THEN
|
|
SET CONNECTION "MSSQL"
|
|
END IF
|
|
CALL visualiza_estado(datatree[arr_curr()].tcliente,datatree[arr_curr()].scliente,sqlconnect)
|
|
LET sqlconnect = 'marmotech'
|
|
SET CONNECTION "IFMX"
|
|
ON ACTION consolidado ATTRIBUTE(IMAGE='fa-sellsy')
|
|
LET sqlconnect = 'smarmotech'
|
|
|
|
CALL buscaBalance(xtipocliente,xseccliente,1)
|
|
ON ACTION CANCEL
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
CLOSE WINDOW w1
|
|
|
|
END FUNCTION
|
|
FUNCTION compromiso(xtipocliente,xseccliente,xfactura,xtipo)
|
|
DEFINE xtipocliente,xseccliente,i,xfactura INT,
|
|
xtipo STRING
|
|
|
|
# SELECT a.fechaPago,a.observacion,a.montoPago,a.idCliente,a.fechacompromiso,a.fech_crea,
|
|
# ISNULL(c.nom1_emp,'NO TIENE')+' '+ISNULL(c.apell1_emp,'NO TIENE')
|
|
|
|
SELECT a.nombre INTO xcliente FROM vetb00004 a WHERE a.tipo_cliente = xtipocliente AND a.sec_cliente = xseccliente
|
|
DISPLAY "CLIENTE: ",xtipocliente," ",xseccliente," documento ",xfactura," ",xtipo
|
|
DECLARE busca_acuerdos CURSOR FOR
|
|
SELECT a.fechaPago,a.observacion,a.montoPago ,a.fechacompromiso ,a.fech_crea
|
|
# ,ISNULL(c.nom1_emp,'NO TIENE')+' '+ISNULL(c.apell1_emp,'NO TIENE'),a.idCliente
|
|
FROM cctb00043 a LEFT OUTER JOIN seg0001 b ON a.us_crea = b.usuario
|
|
# LEFT OUTER JOIN adtb00003 c ON b.num_emp = c.num_emp
|
|
WHERE a.tipo_cliente = xtipocliente AND a.sec_cliente = xseccliente AND
|
|
(a.estado = 'ACTIVO' OR a.estado IS NULL) AND
|
|
a.documento=xfactura AND a.tipo_doc = xtipo
|
|
ORDER BY a.fechapago
|
|
|
|
LET i =1
|
|
FOREACH busca_acuerdos INTO tb_acuerdo[i].*
|
|
LET i = i +1
|
|
END FOREACH
|
|
|
|
RETURN xcliente
|
|
|
|
END FUNCTION
|
|
FUNCTION salvacompromiso(xcompromiso)
|
|
DEFINE xcompromiso RECORD
|
|
tipo_cliente,sec_cliente INT,
|
|
fechaActualizaacion DATE,
|
|
observacion VARCHAR(200),
|
|
montoPago DEC(12,2),
|
|
documento VARCHAR(25),
|
|
tipo_doc VARCHAR(10),
|
|
fechaCompromiso DATE,
|
|
envioemail VARCHAR(10)
|
|
END RECORD
|
|
|
|
INSERT INTO cctb00043 (tipo_cliente,sec_cliente,fechaActualizacion,observacion,montoPago,documento,
|
|
tipo_doc,fechaCompromiso,envioemail,us_crea,fech_crea,estado)
|
|
VALUES (xcompromiso.*, suser_sname(),getdate(),'ACTIVO')
|
|
CALL msg(13)
|
|
|
|
|
|
END FUNCTION
|
|
FUNCTION notificar()
|
|
|
|
DEFINE sesion Session,
|
|
password,s_protocol,respuesta,mensajes STRING
|
|
|
|
|
|
LET subject = "NOTIFICACION COMPROMISO PAGOS"
|
|
|
|
LET cuerpo_correo ="
|
|
<!DOCTYPE html>
|
|
<html lang='en'>
|
|
<head>
|
|
<title>Estimado Senores: ",xcliente CLIPPED,"</title>
|
|
</head>
|
|
<body>
|
|
<img src='https://ws.marmotech.com.do/imagenes/principal/logo.png' alt=''>
|
|
<div>
|
|
<p>Estimados Señores: <b><em>",xcliente CLIPPED, "</em></b>
|
|
<p>",notaCliente CLIPPED,
|
|
"</div>",
|
|
"<div>",
|
|
" <p>Acordamos el pago por un monto de ",monto_pago USING"###,###,###.##"," en fecha ",fecha_compromiso USING "dd/mm/yyyy",
|
|
|
|
"</p></div>
|
|
<div><p>Nos reiteramos a sus ordenes</p></div>
|
|
<diiv><b>Departamento de cobros MARMOTECH, S. A.</b></div>
|
|
",
|
|
"
|
|
</body>
|
|
</html>"
|
|
LET xusername ='notificacion@marmotech.com.do'
|
|
LET xsmtphost ='smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
|
|
LET vendedorEmail = 'jsoto@marmotech.com.do'
|
|
CALL enviaemail(vendedorEmail,subject,cuerpo_correo,NULL,xusername,xsmtphost,xsmtpport,xpassword)
|
|
|
|
|
|
END FUNCTION
|
|
FUNCTION contactos(ptipocliente,pseccliente)
|
|
DEFINE ptipocliente,pseccliente,i INT
|
|
|
|
DECLARE buscaContactos CURSOR FOR
|
|
SELECT 'NO',a.contacto,a.puesto,a.email,a.celular,a.telefono_of FROM vetb00087 a
|
|
WHERE a.tipo_cliente = ptipocliente AND a.sec_cliente = pseccliente AND a.contacto IS NOT NULL
|
|
|
|
LET i = 1
|
|
FOREACH buscaContactos INTO arrContactos[i].*
|
|
LET i = i + 1
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
FUNCTION buscaBalance(ktipo,ksec,j)
|
|
DEFINE ktipo,ksec,dias, j INT,
|
|
zcorriente,z1a30,z31a60,z61a90,zmas90,ztotalSaldo,t_ztotalSaldo,
|
|
t_zcorriente,t_z1a30,t_z31a60,t_z61a90,t_zmas90,t_t_totalSaldo DEC(12,2),
|
|
selec1 STRING,
|
|
zmoneda VARCHAR(50),
|
|
fechaAV,hoy DATE,
|
|
factura CHAR(10)
|
|
|
|
DEFINE datos RECORD
|
|
factura INT,
|
|
pendiente DECIMAL(12,2),
|
|
nombre VARCHAR(50),
|
|
fecha_ven DATE,
|
|
num_doc INT,
|
|
cotizacion_no,
|
|
num_oc INT,
|
|
tipo_doc CHAR(7),
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
sec_vend INT
|
|
END RECORD
|
|
SET CONNECTION "MSSQL"
|
|
LET hoy = TODAY
|
|
LET selec1= " SELECT a.tipo_cliente,a.sec_cliente,b.nombre,a.aplica_a,",
|
|
" SUM(a.valor+a.monto_desc),d.simbolo ",
|
|
" FROM cctb00001 a,vetb00004 b,vetb00060 e,vetb00061 d ",
|
|
" WHERE ",
|
|
" (a.fecha_orig <= '", TODAY USING "mm/dd/yyyy" , "') AND ",
|
|
" (a.tipo_cliente = ",ktipo," AND ",
|
|
" a.sec_cliente = ",ksec,") AND ",
|
|
" (a.tipo_cliente=b.tipo_cliente AND ",
|
|
" a.sec_cliente=b.sec_cliente) AND ",
|
|
"a.tipo_cliente = e.tipo_cliente AND d.ventas=e.ventas AND ",
|
|
# " a.tipo_doc NOT IN ('AV') AND ",
|
|
" a.status_t IS NULL ",
|
|
" GROUP BY a.tipo_cliente,a.sec_cliente,b.nombre,a.aplica_a,d.simbolo ",
|
|
" HAVING SUM(a.valor + a.monto_desc) > 0 ORDER BY a.tipo_cliente,a.sec_cliente,a.aplica_a "
|
|
|
|
PREPARE c_docs FROM selec1
|
|
DECLARE b_docs CURSOR FOR c_docs
|
|
|
|
LET t_zcorriente=0
|
|
LET t_z1a30=0
|
|
LET t_z31a60=0
|
|
LET t_z61a90=0
|
|
LET t_zmas90=0
|
|
LET t_ztotalSaldo=0
|
|
LET t_t_totalSaldo = 0
|
|
LET j = 1
|
|
|
|
FOREACH b_docs INTO datos.tipo_cliente, datos.sec_cliente, datos.nombre,
|
|
datos.factura, datos.pendiente,zmoneda
|
|
LET zcorriente=0
|
|
LET z1a30=0
|
|
LET z31a60=0
|
|
LET z61a90=0
|
|
LET zmas90=0
|
|
LET ztotalSaldo=0
|
|
|
|
#BUSCAMOS EL VENDEDOR
|
|
LET datos.sec_vend = NULL
|
|
SELECT UNIQUE a.sec_vend INTO datos.sec_vend
|
|
FROM vetb00028 a
|
|
WHERE a.tipo_cliente = datos.tipo_cliente AND
|
|
a.sec_cliente = datos.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF datos.sec_vend IS NULL THEN
|
|
LET datos.sec_vend = 0
|
|
END IF
|
|
|
|
#BUSCAMOS LA FECHA DE VENCIMIENTO Y TIPO DE DOCUMENTO
|
|
SELECT MAX( a.tipo_doc),MAX(a.fecha_ven)
|
|
INTO datos.tipo_doc,datos.fecha_ven
|
|
FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND (a.tipo_doc NOT in ("PG","NC","PC","OC","DV","RC")AND
|
|
a.num_doc = a.num_doc AND
|
|
a.num_doc=datos.factura ) and
|
|
(a.tipo_cliente=datos.tipo_cliente AND
|
|
a.sec_cliente=datos.sec_cliente)
|
|
|
|
IF datos.tipo_doc = 'AV' THEN
|
|
CONTINUE FOREACH
|
|
END IF
|
|
|
|
#BUSCAMOS LA COTIZACION
|
|
IF datos.tipo_doc = 'FT' OR datos.tipo_doc='FE' THEN
|
|
LET datos.cotizacion_no=NULL
|
|
SELECT MAX(a.conduce)
|
|
INTO datos.cotizacion_no
|
|
FROM vetb00002 a
|
|
WHERE (a.factura = datos.factura) AND
|
|
(a.tipo_cliente = datos.tipo_cliente AND
|
|
a.sec_cliente=datos.sec_cliente)
|
|
END IF
|
|
|
|
#DAMOS VALOR A LA FECHA DE FACTURA SI ES NULA
|
|
IF datos.fecha_ven IS NULL THEN
|
|
|
|
SELECT CONVERT(CHAR(10),MAX(a.fecha_ven),103)
|
|
INTO datos.fecha_ven
|
|
FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND
|
|
a.aplica_a=datos.factura AND
|
|
a.tipo_doc IN ("NC","OC","DV","ND") and
|
|
(a.tipo_cliente=datos.tipo_cliente AND
|
|
a.sec_cliente=datos.sec_cliente)
|
|
END IF
|
|
|
|
|
|
#BUSCAMOS EL NUMERO DE ORDEN Y COTIZACION
|
|
SELECT MAX(a.orden),MAX(a.conduce)
|
|
INTO datos.num_oc, datos.cotizacion_no
|
|
FROM vetb00002 a
|
|
WHERE (a.factura = datos.factura) AND
|
|
(a.tipo_cliente = datos.tipo_cliente AND a.sec_cliente = datos.sec_cliente)
|
|
|
|
IF datos.fecha_ven IS NULL THEN
|
|
|
|
SELECT CONVERT(CHAR(10),MAX(a.fecha_ven),103)
|
|
INTO datos.fecha_ven
|
|
FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND
|
|
a.aplica_a=datos.factura AND
|
|
a.tipo_doc in ("NC","OC","DV","ND") AND
|
|
(a.tipo_cliente=datos.tipo_cliente AND
|
|
a.sec_cliente=datos.sec_cliente)
|
|
END IF
|
|
|
|
IF datos.pendiente > 0 THEN
|
|
#### Calcula la diferencia de dias de pago a determinada factura para acu-
|
|
#### mularlo en la variable correspondiente por tipo de dia.
|
|
LET dias = hoy - datos.fecha_ven
|
|
LET factura = datos.tipo_doc,"-",datos.factura
|
|
|
|
DISPLAY "dias ",dias
|
|
|
|
#### Imprime y acumula los valores correspondientes a pago realizados en
|
|
#### menos de 31 dias.
|
|
IF dias <= 0 THEN
|
|
LET zcorriente = datos.pendiente
|
|
LET t_zcorriente = t_zcorriente + datos.pendiente
|
|
|
|
END IF
|
|
|
|
IF dias > 0 AND dias < 31 THEN
|
|
LET z1a30 = datos.pendiente
|
|
LET t_z1a30 = t_z1a30 + datos.pendiente
|
|
END IF
|
|
|
|
IF dias >=31 AND dias < 61 THEN
|
|
LET z31a60 = datos.pendiente
|
|
LET t_z31a60 = t_z31a60+ datos.pendiente
|
|
END IF
|
|
|
|
IF dias >= 61 AND dias <= 90 THEN
|
|
LET z61a90 = datos.pendiente
|
|
LET t_z61a90 = t_z61a90+ datos.pendiente
|
|
END IF
|
|
|
|
IF dias > 90 THEN
|
|
LET zmas90 = datos.pendiente
|
|
LET t_zmas90 = t_zmas90 + datos.pendiente
|
|
END IF
|
|
LET ztotalSaldo = zcorriente+ z1a30 + z31a60 + z61a90 + zmas90
|
|
LET t_ztotalSaldo = t_ztotalSaldo + ztotalSaldo
|
|
|
|
DISPLAY "datos4 ", zcorriente, z1a30, z31a60, z61a90, zmas90, datos.tipo_doc, datos.factura, fechaAV
|
|
|
|
# LET arrConsolidado[j].tipo_cliente = datos.tipo_cliente
|
|
# LET nodos_sub_hijos[j].sec_cliente = datos.sec_cliente
|
|
LET arrConsolidado[j].cCliente = xcliente
|
|
LET arrConsolidado[j].cDocumento = datos.factura
|
|
LET arrConsolidado[j].cOrden = datos.num_oc
|
|
LET arrConsolidado[j].ccotizacion = datos.cotizacion_no
|
|
LET arrConsolidado[j].cmoneda = zmoneda
|
|
|
|
LET arrConsolidado[j].ccorriente =zcorriente
|
|
LET arrConsolidado[j].cde1a30= z1a30
|
|
LET arrConsolidado[j].cde31a60 = z31a60
|
|
LET arrConsolidado[j].cd61a90= z61a90
|
|
LET arrConsolidado[j].cMasde90=zmas90
|
|
LET arrConsolidado[j].cTotal=ztotalSaldo
|
|
|
|
LET arrConsolidado[j].ctipodoc = datos.tipo_doc
|
|
LET arrConsolidado[j].cfechaVen = datos.fecha_ven
|
|
|
|
--DISPLAY "data6 ",datos.factura," ",nodos_sub_hijos[j].corriente ,' ',j,' ', zcorriente
|
|
LET j = j+1
|
|
|
|
END IF
|
|
END FOREACH
|
|
SET CONNECTION "IFMX"
|
|
# RETURN t_zcorriente, t_z1a30, t_z31a60, t_z61a90, t_zmas90, t_ztotalSaldo, datos.sec_vend
|
|
|
|
END FUNCTION |