981 lines
28 KiB
Plaintext
981 lines
28 KiB
Plaintext
SCHEMA smarmotech
|
|
GLOBALS
|
|
DEFINE cuenta,xnum_oc,xcotizacion,idx INT,
|
|
selec,selec1 STRING
|
|
END GLOBALS
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CONNECT to "marmotech" USER 'jusoto' USING 'lmmjvsd2014'
|
|
|
|
# Esta funcion busca las facturas de los clientes y aplica los avances en las cuentas por cobrar
|
|
# En exterior
|
|
CALL busca_facturas_exterior()
|
|
# CONSOLIDADO
|
|
#CALL busca_facturas_consolidado()
|
|
# CALL actualiza_Empleados() # ESTO ES PARA ACTUALIZR LOS EMPLEADOS CON UNA LISTA
|
|
# Funcion analiza las facturas con balances en negativo o positivo de los clientes que su balance
|
|
#esta en cero.
|
|
# CALL busca_balance_cero()
|
|
# APLICACION AVANCES POR AGOTAMIENTO DE VALOR
|
|
# CALL aplica_avance_balances()
|
|
#CALL prueba_combo()
|
|
#CALL reporte_cancelados()
|
|
# CALL act_ordenescrm()
|
|
# Actualizacion vendedor en la base de datos CRMINDATA
|
|
#CALL actualiza_vendedor()
|
|
#CALL actualiza_cliente_ex()
|
|
|
|
#CALL actualiza_secuencia()
|
|
#CALL actualiza_cotizacion()
|
|
END MAIN
|
|
FUNCTION actualiza_secuencia()
|
|
DEFINE idx,idx1,xcotiza_ant,xcotizacion_no,xarea,xcodn,xcodgrupo,xcodtipo,xcodsec,idcotizacion1,idcotizacion INT,
|
|
update_ch,selec STRING,
|
|
xprecio,xcantidad FLOAT
|
|
{
|
|
LET update_ch = "UPDATE CRMINDATA.DBO.cotizacion_detalle SET secuencia = ?,us_mod = 'JSOTO',fech_mod = getdate() ",
|
|
" WHERE cotizacion_no = ? AND area = ? AND cod_n = ? AND cod_grupo = ? AND cod_tipo = ? AND ",
|
|
" cod_sec = ? and secuencia is null and precio = ? and cantidad = ? "
|
|
PREPARE actualiza FROM update_ch
|
|
|
|
|
|
LET update_ch = "UPDATE vetb00051 SET secuencia = ?,us_mod = 'JSOTO',fech_mod = getdate() ",
|
|
" WHERE cotizacion_no = ? AND area = ? AND cod_n = ? AND cod_grupo = ? AND cod_tipo = ? AND ",
|
|
" cod_sec = ? and secuencia is null and precio = ? and cantidad = ?"
|
|
|
|
PREPARE actualiza2 FROM update_ch
|
|
}
|
|
LET update_ch = "UPDATE CRMINDATA.DBO.cotizacion_detalle SET secuencia = ?,us_mod = 'JSOTO',fech_mod = getdate() ",
|
|
" WHERE id_cotizacion = ? "
|
|
PREPARE actualiza FROM update_ch
|
|
|
|
|
|
LET update_ch = "UPDATE vetb00051 SET secuencia = ?,us_mod = 'JSOTO',fech_mod = getdate() ",
|
|
" WHERE id_cotizacion = ? "
|
|
|
|
PREPARE actualiza2 FROM update_ch
|
|
LET selec = "
|
|
SELECT a.cotizacion_no,a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.precio,a.cantidad,a.id_cotizacion,
|
|
c.id_cotizacion
|
|
FROM vetb00051 a,vetb00050 b,crmindata.dbo.cotizacion_detalle c WHERE a.cotizacion_no = b.cotizacion_no AND
|
|
b.fecha > '12/31/2017' AND
|
|
a.cotizacion_no = c.cotizacion_no AND 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.area = c.area
|
|
and a.cotizacion_no IN(155849,
|
|
162592,
|
|
168468,
|
|
169806,
|
|
171829,
|
|
174208,
|
|
174925,
|
|
176016,
|
|
176370,
|
|
176407,
|
|
178135,
|
|
180263,
|
|
180312,
|
|
180682,
|
|
180706,
|
|
180938,
|
|
181070,
|
|
181234,
|
|
181277,
|
|
181285,
|
|
181347,
|
|
181478,
|
|
181544,
|
|
181547,
|
|
181549,
|
|
181561,
|
|
181581,
|
|
181603,
|
|
181628,
|
|
181631,
|
|
181686,
|
|
181699,
|
|
181708,
|
|
181709,
|
|
181710,
|
|
181717,
|
|
181732,
|
|
181777,
|
|
181808,
|
|
181865,
|
|
181904,
|
|
181922,
|
|
181932,
|
|
181950,
|
|
181964,
|
|
181976,
|
|
182001,
|
|
182086,
|
|
182097,
|
|
182140,
|
|
182144,
|
|
182198,
|
|
182233,
|
|
182243,
|
|
182245,
|
|
182266,
|
|
182275,
|
|
182304,
|
|
182306,
|
|
182310,
|
|
182314,
|
|
182315,
|
|
182336,
|
|
182351,
|
|
182413,
|
|
182436,
|
|
182454,
|
|
182478,
|
|
182496,
|
|
182522,
|
|
182571,
|
|
182574
|
|
)
|
|
|
|
ORDER BY a.cotizacion_no
|
|
"
|
|
PREPARE comando1 FROM selec
|
|
DECLARE busca_cotizacion CURSOR FOR comando1
|
|
|
|
LET xcotiza_ant = 0
|
|
LET idx1 = 1
|
|
FOREACH busca_cotizacion INTO xcotizacion_no,idx,xarea,xcodn,xcodgrupo,xcodtipo,xcodsec,xprecio,xcantidad,idcotizacion,
|
|
idcotizacion1
|
|
IF xcotiza_ant <> xcotizacion_no THEN
|
|
LET xcotiza_ant = xcotizacion_no
|
|
LET idx1 = 1
|
|
END IF
|
|
EXECUTE actualiza USING idx1,idcotizacion1
|
|
EXECUTE actualiza2 USING idx1,idcotizacion
|
|
|
|
DISPLAY " data ",xcotizacion_no," ",idx1," ",idcotizacion," ",idcotizacion1
|
|
LET idx1 = idx1 + 1
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
FUNCTION actualiza_cotizacion()
|
|
DEFINE idx,idx1,xcotiza_ant,xcotizacion_no,xarea,xcodn,xcodgrupo,xcodtipo,xcodsec,idcotizacion1,idcotizacion INT,
|
|
xfecha_mod,update_ch,selec,xus_mod STRING,
|
|
xprecio,xcantidad,xporc_desc,xvalorBruto,xvalorDesc,xvalorItbis,xvalorNeto,xsubTotal FLOAT
|
|
|
|
LET update_ch = "UPDATE CRMINDATA.DBO.cotizacion_detalle SET porc_desc=?,
|
|
valor_bruto = ?, monto_desc = ?, valor_itbis = ?, valor_neto = ?,
|
|
fech_mod = ?,us_mod=? ",
|
|
" WHERE id_cotizacion = ? "
|
|
|
|
PREPARE actualiza1 FROM update_ch
|
|
|
|
LET update_ch = "UPDATE CRMINDATA.DBO.cotizacion_master SET total_bruto=?,sub_total=?,
|
|
monto_desc = ?, monto_itbi = ?, total_neto = ?
|
|
",
|
|
" WHERE cotizacion_no = ? "
|
|
|
|
PREPARE actualiza12 FROM update_ch
|
|
|
|
LET update_ch = "SELECT SUM(valor_bruto),SUM(monto_desc),SUM(valor_itbis),SUM(valor_neto) FROM CRMindata.dbo.cotizacion_detalle WHERE cotizacion_no =?"
|
|
PREPARE actualiza3 FROM update_ch
|
|
|
|
LET selec = "
|
|
SELECT a.cotizacion_no,a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.precio,a.cantidad,a.id_cotizacion,
|
|
c.id_cotizacion,a.porc_desc,a.fech_mod,a.us_mod
|
|
FROM vetb00051 a,vetb00050 b,crmindata.dbo.cotizacion_detalle c WHERE a.cotizacion_no = b.cotizacion_no AND
|
|
b.fecha > '12/31/2019' AND
|
|
a.cotizacion_no in(183927,
|
|
183942,
|
|
183102,
|
|
183129,
|
|
183161,
|
|
183581,
|
|
183679,
|
|
183924,
|
|
183300,
|
|
184052,
|
|
183141,
|
|
183627,
|
|
183111,
|
|
183774,
|
|
169332,
|
|
183940,
|
|
184056,
|
|
183723,
|
|
184023,
|
|
183678,
|
|
183369,
|
|
184020,
|
|
183281,
|
|
183114,
|
|
183680,
|
|
183996,
|
|
183639,
|
|
183402) AND
|
|
a.cotizacion_no = c.cotizacion_no AND 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.area = c.area
|
|
ORDER BY a.cotizacion_no
|
|
"
|
|
PREPARE comando2 FROM selec
|
|
DECLARE busca_cotizacion1 CURSOR FOR comando2
|
|
|
|
LET xcotiza_ant = 0
|
|
LET idx1 = 1
|
|
FOREACH busca_cotizacion1 INTO xcotizacion_no,idx,xarea,xcodn,xcodgrupo,xcodtipo,xcodsec,xprecio,xcantidad,idcotizacion,
|
|
idcotizacion1,xporc_desc,xfecha_mod,xus_mod
|
|
IF xcotiza_ant <> xcotizacion_no THEN
|
|
EXECUTE actualiza3 INTO xvalorBruto,xvalorDesc,xvalorItbis,xvalorNeto USING xcotizacion_no
|
|
LET xsubTotal = xvalorBruto - xvalorDesc
|
|
EXECUTE actualiza12 USING xvalorBruto,xsubTotal,xvalorDesc,xvalorItbis,xvalorNeto,xcotizacion_no
|
|
LET xcotiza_ant = xcotizacion_no
|
|
END IF
|
|
LET xvalorBruto = xcantidad * xprecio
|
|
LET xvalorDesc = xvalorBruto * (xporc_desc/100)
|
|
LET xvalorItbis = (xvalorBruto - XvalorDesc) * .18
|
|
LET xvalorNeto = xvalorBruto - XvalorDesc + xvalorItbis
|
|
|
|
EXECUTE actualiza1 USING xporc_Desc,xvalorBruto,xvalorDesc,xvalorItbis,xvalorNeto,
|
|
xfecha_mod,xus_mod, idcotizacion1
|
|
|
|
DISPLAY " data ",xcotizacion_no," ",xporc_desc," ",xfecha_mod
|
|
LET idx1 = idx1 + 1
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION actualiza_cliente_ex()
|
|
DEFINE pcliente RECORD LIKE vetb00004.*
|
|
DEFINE pdireccion RECORD LIKE vetb00005.*
|
|
DEFINE pvendedor RECORD LIKE vetb00028.*,
|
|
SELEC,UPD STRING
|
|
|
|
LET upd =" UPDATE exterior.dbo.vetb00004 SET vetb00004.* = ",pcliente.*,
|
|
" WHERE tipo_cliente =", pcliente.tipo_cliente," AND sec_cliente = ",pcliente.sec_cliente
|
|
|
|
PREPARE xcliente FROM upd
|
|
|
|
LET upd =" UPDATE exterior.dbo.vetb00005 SET vetb00005.* = ",pdireccion.*,
|
|
" WHERE tipo_cliente =", pcliente.tipo_cliente," AND sec_cliente = ",pcliente.sec_cliente
|
|
|
|
PREPARE xdireccion FROM upd
|
|
|
|
LET upd =" UPDATE exterior.dbo.vetb00028 SET vetb00028.* = ",pvendedor.*,
|
|
" WHERE tipo_cliente =", pcliente.tipo_cliente," AND sec_cliente = ",pcliente.sec_cliente
|
|
|
|
PREPARE xvendedor FROM upd
|
|
|
|
|
|
DECLARE clientes CURSOR FOR SELECT a.* FROM vetb00004 a
|
|
WHERE a.tipo_cliente IN (15,16,17,21,22,24)
|
|
|
|
FOREACH clientes INTO pcliente.*
|
|
|
|
SELECT * INTO pdireccion.* FROM vetb00005
|
|
WHERE tipo_cliente = pcliente.tipo_cliente AND sec_cliente = pcliente.sec_cliente
|
|
|
|
EXECUTE xdireccion
|
|
SELECT * INTO pvendedor.* FROM vetb00028
|
|
WHERE tipo_cliente = pcliente.tipo_cliente AND sec_cliente = pcliente.sec_cliente
|
|
|
|
|
|
|
|
|
|
|
|
|
|
END FOREACH
|
|
END FUNCTION
|
|
FUNCTION actualiza_vendedor()
|
|
DEFINE xtipoCliente,xsecCliente,xsec_vend INT,
|
|
xemail VARCHAR(100)
|
|
|
|
LET selec = "UPDATE CRMindata.dbo.clientes set sec_Vend = ?,email_vendedor = ? ",
|
|
" WHERE tipo_cliente = ? AND sec_cliente = ? "
|
|
PREPARE comando FROM selec
|
|
|
|
DECLARE busca_vendedor CURSOR FOR
|
|
SELECT a.tipo_cliente,a.sec_cliente,a.sec_vend,b.email FROM vetb00028 a,seg0000 b
|
|
WHERE a.tipo_cliente NOT IN (18,19,12,13,14) AND a.status_T IS NULL AND
|
|
a.sec_vend = b.sec_vend
|
|
|
|
FOREACH busca_Vendedor INTO xtipoCliente,xsecCliente,xsec_vend,xemail
|
|
DISPLAY "actualizando ",xtipoCliente," ",xsecCliente
|
|
EXECUTE comando USING xsec_vend,xemail,xtipoCliente,xsecCliente
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
FUNCTION act_ordenescrm()
|
|
LET idx = 0
|
|
START REPORT ordenes TO "ordenes.txt"
|
|
|
|
LET selec = "SELECT a.num_oc,a.cotizacion FROM CRMinDATA.[dbo].[ordnescrm] a WHERE a.num_oc > 0"
|
|
|
|
PREPARE ocomando FROM selec
|
|
|
|
|
|
LET selec1 = "SELECT a.num_oc FROM CRMinDATA.dbo.ordenes_master a WHERE a.num_oc =? AND a.status_t IS NULL "
|
|
|
|
PREPARE ocomando1 FROM selec1
|
|
|
|
DECLARE busca_orden CURSOR FOR ocomando
|
|
|
|
|
|
FOREACH busca_orden INTO xnum_oc,xcotizacion
|
|
LET idx = idx + 1
|
|
DISPLAY "cuenta: ",idx
|
|
EXECUTE ocomando1 USING xnum_oc
|
|
IF status <> NOTFOUND THEN
|
|
CONTINUE FOREACH
|
|
END IF
|
|
DISPLAY "DATOS: ",xnum_oc
|
|
OUTPUT TO REPORT ordenes()
|
|
END FOREACH
|
|
FINISH REPORT ordenes
|
|
END FUNCTION
|
|
REPORT ordenes()
|
|
OUTPUT
|
|
PAGE LENGTH 100
|
|
FORMAT
|
|
PAGE HEADER
|
|
PRINT "ORDEN", 3 SPACES, "COTIZACION"
|
|
ON EVERY ROW
|
|
PRINT xnum_oc USING "&&&&&&&&", 2 SPACE,xcotizacion USING "&&&&&&&&"
|
|
END REPORT
|
|
|
|
FUNCTION actualiza_empleados()
|
|
DEFINE nxnum_emp INT
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT a.num_emp FROM adtb00003 a WHERE a.num_Emp IN (482,
|
|
610,
|
|
634,
|
|
2043,
|
|
2053,
|
|
3046,
|
|
3088,
|
|
3128,
|
|
3158,
|
|
3178,
|
|
3267,
|
|
3395,
|
|
3423,
|
|
3432,
|
|
3435,
|
|
3450,
|
|
3451,
|
|
3486,
|
|
3506,
|
|
3535,
|
|
3552,
|
|
3571,
|
|
3608,
|
|
3623,
|
|
3638,
|
|
3707,
|
|
3739,
|
|
3743,
|
|
3844,
|
|
3864,
|
|
3887,
|
|
3889,
|
|
3894,
|
|
3914,
|
|
3926,
|
|
3947,
|
|
3972,
|
|
3977,
|
|
3982,
|
|
3983,
|
|
3990,
|
|
3996,
|
|
4006,
|
|
4021,
|
|
4024,
|
|
4038,
|
|
4043,
|
|
4054,
|
|
4064,
|
|
4110,
|
|
4115,
|
|
4128,
|
|
4129,
|
|
4130,
|
|
4131,
|
|
4152,
|
|
4154,
|
|
4162,
|
|
4164,
|
|
4171,
|
|
4186,
|
|
4199,
|
|
4218,
|
|
4225,
|
|
4239,
|
|
4244,
|
|
4245,
|
|
4248,
|
|
4251,
|
|
4268,
|
|
4277,
|
|
4299,
|
|
4302,
|
|
4303,
|
|
4305,
|
|
4308,
|
|
4312,
|
|
4317,
|
|
4327,
|
|
4337,
|
|
4340,
|
|
4344,
|
|
4346,
|
|
4347,
|
|
4350,
|
|
4352,
|
|
4361,
|
|
4380,
|
|
4393,
|
|
4399,
|
|
4408,
|
|
4412,
|
|
4415,
|
|
4420,
|
|
4425,
|
|
4426,
|
|
4430,
|
|
4437,
|
|
4438,
|
|
4444,
|
|
4449,
|
|
4450,
|
|
4462,
|
|
4468,
|
|
4469,
|
|
4480,
|
|
4482,
|
|
4486,
|
|
4490,
|
|
4493,
|
|
4494,
|
|
4495,
|
|
4501,
|
|
4505,
|
|
4507,
|
|
4510,
|
|
4514,
|
|
4515,
|
|
4516,
|
|
4518,
|
|
4519,
|
|
4520,
|
|
4525,
|
|
4526,
|
|
4528,
|
|
4530,
|
|
4533,
|
|
4537,
|
|
4540,
|
|
4541,
|
|
4545,
|
|
4546,
|
|
4548,
|
|
4552,
|
|
4553,
|
|
4554,
|
|
4558,
|
|
4566,
|
|
4567,
|
|
4572,
|
|
4574,
|
|
4577,
|
|
4581,
|
|
4586,
|
|
4588,
|
|
4590,
|
|
4593,
|
|
4600,
|
|
4601,
|
|
4604,
|
|
4612,
|
|
4613,
|
|
4623,
|
|
4626,
|
|
4627,
|
|
4629,
|
|
4631,
|
|
4634,
|
|
4635,
|
|
4640,
|
|
4641,
|
|
4650,
|
|
4652,
|
|
4659,
|
|
4660,
|
|
4662,
|
|
4664,
|
|
4667,
|
|
4668,
|
|
4670,
|
|
4671,
|
|
4674,
|
|
4675,
|
|
4678,
|
|
4681,
|
|
4689,
|
|
4697,
|
|
4700,
|
|
4701,
|
|
4704,
|
|
4705,
|
|
4711,
|
|
4712,
|
|
4714,
|
|
4716,
|
|
4717,
|
|
4718,
|
|
4719,
|
|
4724,
|
|
4730,
|
|
4731,
|
|
4733,
|
|
4734,
|
|
4735,
|
|
4737,
|
|
4738,
|
|
4740,
|
|
4742,
|
|
4743,
|
|
4745,
|
|
4749,
|
|
4753,
|
|
4754,
|
|
4757,
|
|
4758,
|
|
4759,
|
|
4760,
|
|
4761,
|
|
4762,
|
|
4763,
|
|
4764,
|
|
4765,
|
|
4766,
|
|
4768,
|
|
4771,
|
|
4773,
|
|
4774,
|
|
4778,
|
|
4783,
|
|
4784,
|
|
4786,
|
|
4787,
|
|
4793,
|
|
4794,
|
|
4795,
|
|
4797,
|
|
4800,
|
|
4801,
|
|
4803,
|
|
4804,
|
|
4807,
|
|
4808,
|
|
4809,
|
|
4811,
|
|
4813,
|
|
4817,
|
|
4818,
|
|
4820,
|
|
4822,
|
|
4824,
|
|
4828,
|
|
4829,
|
|
4830,
|
|
4831,
|
|
4833,
|
|
4836,
|
|
4837,
|
|
4846,
|
|
4850,
|
|
4852,
|
|
4863,
|
|
4865,
|
|
4866,
|
|
4869,
|
|
4871,
|
|
4874,
|
|
4880,
|
|
4881,
|
|
4882,
|
|
4891,
|
|
4892,
|
|
4898,
|
|
4899,
|
|
4900,
|
|
4902,
|
|
4903,
|
|
4906,
|
|
4908,
|
|
4911,
|
|
4913,
|
|
4919,
|
|
4928,
|
|
4931,
|
|
4932,
|
|
4933,
|
|
4936,
|
|
4937,
|
|
4938,
|
|
4951,
|
|
4952
|
|
|
|
|
|
)
|
|
|
|
AND status_t IS null
|
|
FOREACH buscar INTO nxnum_emp
|
|
UPDATE adtb00003 SET status_t = 'D' WHERE num_emp = nxnum_emp
|
|
DISPLAY "PROCESO ",nxnum_emp
|
|
END FOREACH
|
|
END FUNCTION
|
|
FUNCTION reporte_cancelados()
|
|
DEFINE DATA_REP RECORD
|
|
cedula BIGINT,
|
|
nombre ,
|
|
apellido1,apellido2 CHAR(30),
|
|
sexo char(1),
|
|
fecha date
|
|
END RECORD
|
|
DECLARE cancelados CURSOR FOR
|
|
select b.cedula,b.nom1_emp,b.apell1_emp,ISNULL(b.apell2_emp,' '),c.sexo, b.fech_nac,a.monto from tmpliquidados a,adtb00003 b,adtb00021 c where a.num_emp = b.num_emp AND
|
|
b.num_emp = c.num_emp
|
|
START REPORT cancelar TO "cancelados.txt"
|
|
FOREACH cancelados INTO data_rep.*
|
|
OUTPUT TO REPORT cancelar(data_rep.*)
|
|
END FOREACH
|
|
FINISH REPORT cancelar
|
|
END FUNCTION
|
|
REPORT cancelar(x)
|
|
DEFINE X RECORD
|
|
cedula BIGINT,
|
|
nombre ,
|
|
apellido1,apellido2 CHAR(30),
|
|
sexo char(1),
|
|
fecha date
|
|
END RECORD,
|
|
pcedula CHAR(11)
|
|
OUTPUT
|
|
PAGE LENGTH 200
|
|
FORMAT
|
|
ON EVERY ROW
|
|
LET pcedula = x.cedula USING "&&&&&&&&&&&"
|
|
PRINT pcedula,"|",x.nombre,"|",x.apellido1,"|",x.apellido2,"|",x.sexo,"|", x.fecha USING "ddmmyyyy"
|
|
END REPORT
|
|
|
|
FUNCTION busca_facturas_consolidado()
|
|
DEFINE ktipo_cliente,ksec_cliente,kcotizacion,knumero_f INT,
|
|
balance,valor1,valor2,kvalor_f DEC(12,2),
|
|
fecha_inicial,kfecha DATE,
|
|
selec STRING
|
|
LET fecha_inicial = '01/01/2001'
|
|
DISPLAY "EN PROCESO...."
|
|
LET selec = " SELECT MAX(a.cotizacion_no),CONVERT(CHAR(10),MAX(a.fecha_factura),103)
|
|
FROM vetb00002 a WHERE a.status_t IS NULL AND
|
|
a.factura = ?"
|
|
PREPARE comando FROM selec
|
|
|
|
DECLARE busca_f CURSOR FOR
|
|
|
|
SELECT DISTINCT a.tipo_cliente,a.sec_cliente,a.valor,a.num_doc FROM cctb00001 a
|
|
WHERE a.tipo_Doc IN ('FT','FE') AND a.status_t IS NULL AND a.sec_cliente = 71 AND a.tipo_cliente = 15 and
|
|
a.fecha_orig <= '01/31/2018' AND a.tipo_cliente in (15,16,17,18,19,20,21,22,23,24)
|
|
|
|
ORDER BY a.tipo_cliente,a.sec_cliente
|
|
|
|
LET cuenta = 1
|
|
FOREACH busca_f INTO ktipo_cliente,ksec_cliente,kvalor_f,knumero_f
|
|
|
|
# BUSCA COTIZACION
|
|
DISPLAY "CLLIENTE ",ktipo_cliente, " ksec ",ksec_cliente," knumero ",knumero_F
|
|
SELECT a.conduce,CONVERT(CHAR(10),a.fecha_factura,103) INTO kcotizacion,kfecha FROM vetb00002 a WHERE a.status_t IS NULL AND
|
|
a.factura = knumero_f
|
|
IF kcotizacion IS NULL THEN
|
|
SELECT MAX(a.cotizacion_no),CONVERT(CHAR(10),MAX(a.fecha_factura),103) INTO kcotizacion,kfecha
|
|
FROM vetb00002 a WHERE a.status_t IS NULL AND
|
|
a.factura = knumero_f
|
|
IF kcotizacion IS NULL THEN
|
|
EXECUTE comando INTO kcotizacion,kfecha USING knumero_f
|
|
|
|
END IF
|
|
END IF
|
|
CALL busca_avance_co(ktipo_cliente,ksec_cliente,kcotizacion,kvalor_f,knumero_f,kfecha)
|
|
LET cuenta = cuenta +1
|
|
END FOREACH
|
|
DISPLAY "NUMERO CLIENTE ",cuenta
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_avance_co(ptipo_cliente,psec_cliente,pcotizacion_no,valor_f,pfactura,pfecha)
|
|
DEFINE ptipo_cliente,psec_cliente,pcotizacion_no,pnum_doc,psec_vend,psucid,pfactura INT,pfecha DATE,
|
|
valor_f,pvalor,monto_avance DEC(12,2),
|
|
pusuario VARCHAR(50)
|
|
|
|
LET pusuario ='JSOTO'
|
|
DECLARE busca_av_co CURSOR FOR
|
|
SELECT a.num_doc, a.valor+monto_desc INTO pnum_doc,pvalor FROM cctb00001 a
|
|
WHERE a.tipo_cliente = ptipo_cliente AND a.sec_cliente = psec_cliente AND
|
|
a.documento_ref = pcotizacion_no AND a.tipo_Doc = 'AV'
|
|
|
|
FOREACH busca_av_co
|
|
|
|
IF pvalor !=0 THEN
|
|
LET monto_avance = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO monto_avance FROM cctb00001 a
|
|
WHERE a.num_doc = pnum_doc AND a.tipo_Doc IN ('AV','AP') AND a.status_t IS NULL
|
|
# Cuando el avance tiene valor pendiente por aplicar
|
|
IF monto_avance > 0 THEN
|
|
IF valor_f >= monto_avance THEN
|
|
LET pvalor = monto_avance
|
|
ELSE
|
|
LET pvalor = valor_f
|
|
END IF
|
|
DISPLAY "INSERTE ",pfactura," valor ",pvalor
|
|
INSERT INTO cctb00001 (tipo_doc,num_doc,fecha_orig,tipo_cliente,sec_cliente,aplica_a,num_cheque,cod_emp,cod_emp_sec,
|
|
valor,monto_desc,us_crea,fech_crea,banco) VALUES
|
|
('AP',pnum_doc,pfecha,ptipo_cliente,psec_cliente,pfactura,pnum_doc,psucid,psec_vend,pvalor*-1,'0',
|
|
pusuario,getdate(),pcotizacion_no)
|
|
END IF
|
|
END IF
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_facturas_exterior()
|
|
DEFINE ktipo_cliente,ksec_cliente,kcotizacion,knumero_f,ksucid INT,
|
|
balance,valor1,valor2,kvalor_f DEC(12,2),
|
|
fecha_inicial,kfecha DATE
|
|
LET fecha_inicial = '01/31/2018'
|
|
DISPLAY "EN PROCESO...."
|
|
DECLARE busca_f_ex CURSOR FOR
|
|
|
|
SELECT a.tipo_cliente,a.sec_cliente,a.valor,a.num_doc,a.sucid FROM cctb00001 a,vetb00002 b
|
|
WHERE a.tipo_Doc IN ('FT','FE') AND a.num_doc = b.factura AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.status_t IS NULL AND
|
|
a.fecha_orig <= '01/31/2023' AND a.tipo_cliente =15 AND a.sec_cliente = 100
|
|
ORDER BY a.tipo_cliente,a.sec_cliente
|
|
|
|
FOREACH busca_f_ex INTO ktipo_cliente,ksec_cliente,kvalor_f,knumero_f,ksucid
|
|
|
|
# BUSCA COTIZACION
|
|
DISPLAY "CLLIENTE ",ktipo_cliente, " ksec ",ksec_cliente," knumero ",knumero_F
|
|
SELECT a.conduce,CONVERT(CHAR(10),a.fecha_factura,103) INTO kcotizacion,kfecha FROM vetb00002 a WHERE a.status_t IS NULL AND
|
|
a.factura = knumero_f AND a.sucid = ksucid
|
|
IF kcotizacion IS NULL THEN
|
|
SELECT MAX(a.orden),CONVERT(CHAR(10),MAX(a.fecha_factura),103) INTO kcotizacion,kfecha FROM vetb00002 a WHERE a.status_t IS NULL AND
|
|
a.factura = knumero_f AND a.sucid = ksucid
|
|
|
|
END IF
|
|
CALL busca_avance_ex(ktipo_cliente,ksec_cliente,kcotizacion,kvalor_f,knumero_f,kfecha,ksucid)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
FUNCTION busca_avance_ex(ptipo_cliente,psec_cliente,pcotizacion_no,valor_f,pfactura,pfecha,psucid)
|
|
DEFINE ptipo_cliente,psec_cliente,pcotizacion_no,pnum_doc,psec_vend,psucid,pfactura INT,pfecha DATE,
|
|
valor_f,pvalor,monto_avance DEC(12,2),
|
|
pusuario VARCHAR(50)
|
|
|
|
LET pusuario ='jusoto'
|
|
DISPLAY " buscando avance: ",pcotizacion_no
|
|
DECLARE busca_av_ex CURSOR FOR
|
|
SELECT a.num_doc, a.valor+monto_desc INTO pnum_doc,pvalor FROM cctb00001 a
|
|
WHERE a.tipo_cliente = ptipo_cliente AND a.sec_cliente = psec_cliente AND
|
|
a.banco = pcotizacion_no AND a.tipo_Doc = 'AV'
|
|
|
|
FOREACH busca_av_ex
|
|
DISPLAY "avance: ",pnum_doc," valor:",pvalor
|
|
IF pvalor !=0 THEN
|
|
LET monto_avance = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO monto_avance FROM cctb00001 a
|
|
WHERE a.num_doc = pnum_doc AND a.tipo_Doc IN ('AV','AP') AND
|
|
a.tipo_cliente = ptipo_cliente AND
|
|
a.sec_cliente = psec_cliente
|
|
AND a.status_t IS NULL
|
|
# Cuando el avance tiene valor pendiente por aplicar
|
|
IF monto_avance > 0 THEN
|
|
IF valor_f >= monto_avance THEN
|
|
LET pvalor = monto_avance
|
|
ELSE
|
|
LET pvalor = valor_f
|
|
END IF
|
|
DISPLAY "INSERTE ",pfactura," valor ",pvalor
|
|
INSERT INTO cctb00001 (tipo_doc,num_doc,fecha_orig,tipo_cliente,sec_cliente,aplica_a,num_cheque,cod_emp,cod_emp_sec,
|
|
valor,monto_desc,us_crea,fech_crea,banco,sucid) VALUES
|
|
('AP',pnum_doc,pfecha,ptipo_cliente,psec_cliente,pfactura,pnum_doc,psucid,psec_vend,pvalor*-1,'0',
|
|
pusuario,getdate(),pcotizacion_no,psucid)
|
|
END IF
|
|
END IF
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
|
|
{
|
|
|
|
SELECT a.tipo_cliente,a.sec_cliente,SUM(a.valor+a.monto_desc),'0' FROM cctb00001 a,vetb00060 b
|
|
WHERE a.fecha_orig <= '01/31/2018' AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
b.ventas = '1' AND a.tipo_cliente IN (15) and
|
|
a.status_t is null and a.tipo_doc NOT IN ("AV","PC")
|
|
GROUP BY a.tipo_cliente,a.sec_cliente
|
|
|
|
UNION
|
|
SELECT a.tipo_cliente,a.sec_cliente,'0',SUM(a.valor+a.monto_desc) FROM cctb00001 a,vetb00060 b
|
|
WHERE a.fecha_orig <= '01/31/2018' and
|
|
a.tipo_cliente = b.tipo_cliente AND b.ventas = '1' and
|
|
a.status_t is null and a.tipo_doc = "AV" and a.num_doc = a.aplica_a
|
|
AND a.tipo_cliente IN (15)
|
|
GROUP BY a.tipo_cliente,a.sec_cliente
|
|
ORDER BY a.tipo_cliente,a.sec_cliente }
|
|
FUNCTION busca_balance_cero()
|
|
DEFINE xtipo_cliente,xsec_cliente INT,
|
|
balance,valor1,valor2 dec(12,2)
|
|
|
|
DECLARE busca_balance CURSOR FOR
|
|
SELECT a.tipo_cliente,a.sec_cliente FROM vetb00004 a
|
|
WHERE a.status_t IS NULL AND a.tipo_cliente > 14 # AND a.tipo_cliente = 21 AND a.sec_cliente =3185
|
|
DISPLAY "BUSCAN CLIENTES..."
|
|
BEGIN WORK
|
|
FOREACH busca_balance INTO xtipo_cliente,xsec_cliente
|
|
|
|
#busca balance cliente
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor1 FROM cctb00001 a
|
|
WHERE #@fecha_orig < fecha_inicial and
|
|
a.tipo_cliente = xtipo_cliente and
|
|
a.sec_cliente = xsec_cliente and
|
|
a.status_t is null and a.tipo_doc NOT IN ("AV","PC","AP")
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0
|
|
END IF
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor2 FROM cctb00001 a
|
|
WHERE #@fecha_orig < fecha_inicial and
|
|
a.tipo_cliente = xtipo_cliente and
|
|
a.sec_cliente = xsec_cliente and
|
|
a.status_t is null and a.tipo_doc = "AV" and num_doc = aplica_a
|
|
|
|
IF valor2 IS NULL THEN
|
|
LET valor2 = 0
|
|
END IF
|
|
LET balance = valor1 - valor2
|
|
IF balance = 0 THEN
|
|
DISPLAY "BUSCA INFO APLICACION...",xtipo_cliente," ",xsec_cliente," balance ",balance
|
|
CALL ejecuta_aplicacion(xtipo_cliente,xsec_cliente)
|
|
END IF
|
|
|
|
END FOREACH
|
|
COMMIT WORK
|
|
END FUNCTION
|
|
FUNCTION ejecuta_aplicacion(ztipo_cliente,zsec_cliente)
|
|
DEFINE ztipo_cliente,zsec_cliente,xsucid,vendedor INT,
|
|
zaplica_a,secuencia_db,secuencia_nc INT,
|
|
pendiente,positivo,negativo,valor_factura DEC(12,2)
|
|
|
|
SELECT a.ult_recibo INTO secuencia_db FROM cctb00003 a WHERE a.tipo_doc = "OD"
|
|
SELECT a.ult_recibo INTO secuencia_nc FROM cctb00003 a WHERE a.tipo_doc = "OC"
|
|
|
|
DECLARE busca_pendiente CURSOR FOR
|
|
SELECT a.sucid,a.aplica_a,b.neto,c.sec_vend,SUM(a.valor+a.monto_desc) FROM cctb00001 a,vetb00002 b,vetb00028 c
|
|
WHERE a.tipo_cliente = ztipo_cliente AND a.sec_cliente = zsec_cliente AND
|
|
a.tipo_cliente = c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND
|
|
a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
|
|
a.aplica_a = b.factura AND a.sucid = b.sucid AND
|
|
a.tipo_doc NOT IN ("AV","AP","PC") AND a.status_t IS NULL
|
|
GROUP BY a.aplica_a,b.neto,c.sec_vend,a.sucid
|
|
HAVING SUM(a.valor+a.monto_desc) <> 0
|
|
|
|
LET negativo = 0
|
|
LET positivo = 0
|
|
LET secuencia_db = secuencia_db + 1
|
|
LET secuencia_nc = secuencia_nc + 1
|
|
|
|
FOREACH busca_pendiente INTO xsucid,zaplica_a,valor_factura,vendedor,pendiente
|
|
IF pendiente < 0 THEN
|
|
LET negativo = negativo + pendiente
|
|
END IF
|
|
IF pendiente > 0 THEN
|
|
LET positivo = positivo + pendiente
|
|
END IF
|
|
|
|
# NOTAS CREDITOS
|
|
IF pendiente > 0 THEN
|
|
LET pendiente = pendiente *-1
|
|
|
|
INSERT INTO cctb00001 (cod_cia,sucid,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,aplica_a,
|
|
valor,monto_desc,us_crea,fech_crea,num_cheque)
|
|
VALUES
|
|
(1,1,'OC',secuencia_db,ztipo_cliente,zsec_cliente,vendedor,GETDATE(),zaplica_a,pendiente,0,'jsoto',getdate(),'APLICADA')
|
|
|
|
LET pendiente = pendiente *-1
|
|
DISPLAY "NOTA NC",zaplica_a," pendiente ",pendiente
|
|
LET secuencia_nc = secuencia_nc + 1
|
|
END IF
|
|
|
|
|
|
IF pendiente < 0 THEN
|
|
LET pendiente = pendiente *-1
|
|
INSERT INTO cctb00001 (cod_cia,sucid,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,aplica_a,
|
|
valor,monto_desc,us_crea,fech_crea,num_cheque)
|
|
VALUES
|
|
(1,1,'OD',secuencia_db,ztipo_cliente,zsec_cliente,vendedor,GETDATE(),zaplica_a,pendiente,0,'jsoto',getdate(),'APLICADA')
|
|
|
|
LET pendiente = pendiente *-1
|
|
LET secuencia_db = secuencia_db + 1
|
|
DISPLAY "NOTA DB",zaplica_a," pendiente ",pendiente
|
|
END IF
|
|
|
|
END FOREACH
|
|
# INSERTA LOS CREDITOS Y DEBITOS SUMARIZADOS PARA QUE LA CUENTA CONTINUE CUADRADA
|
|
# DBITOS
|
|
IF positivo > 0 THEN
|
|
INSERT INTO cctb00001 (cod_cia,sucid,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,aplica_a,
|
|
valor,monto_desc,us_crea,fech_crea,num_cheque)
|
|
VALUES
|
|
(1,1,'OD',secuencia_db,ztipo_cliente,zsec_cliente,vendedor,GETDATE(),secuencia_db,positivo,0,'jsoto',getdate(),'APLICADA')
|
|
|
|
END IF
|
|
# CREDITOS
|
|
IF negativo <> 0 THEN
|
|
INSERT INTO cctb00001 (cod_cia,sucid,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,aplica_a,
|
|
valor,monto_desc,us_crea,fech_crea,num_cheque)
|
|
VALUES
|
|
(1,1,'OC',secuencia_nc,ztipo_cliente,zsec_cliente,vendedor,GETDATE(),secuencia_nc,negativo,0,'jsoto',getdate(),'APLICADA')
|
|
END IF
|
|
CLOSE busca_pendiente
|
|
|
|
END FUNCTION
|
|
FUNCTION prueba_combo()
|
|
DEFINE zcodigodgii CHAR(14)
|
|
OPEN WINDOW w1 WITH FORM "vefmmt101"
|
|
# CALL tipo_comprobante()
|
|
SELECT a.codigodgii INTO zcodigodgii FROM vetb00004 a WHERE
|
|
a.num_rnc = '130337391'
|
|
|
|
INPUT BY NAME zcodigodgii WITHOUT DEFAULTS
|
|
BEFORE INPUT
|
|
|
|
DISPLAY BY NAME zcodigodgii
|
|
AFTER INPUT
|
|
EXIT INPUT
|
|
END INPUT
|
|
END FUNCTION
|
|
FUNCTION tipo_comprobante()
|
|
DEFINE kcodigo char(14), kdescripcion VARCHAR(100),
|
|
kcodigodgii ui.ComboBox
|
|
|
|
LET kcodigodgii = ui.ComboBox.forName("formonly.zcodigodgii")
|
|
CALL kcodigodgii.clear()
|
|
DECLARE busca_dgii CURSOR FOR
|
|
SELECT CAST(a.codigo_dgii AS CHAR(3)),a.tipo_ncf FROM vetb00071 a
|
|
WHERE a.disponible = "S" AND
|
|
a.sucid = 1 AND a.tipo_doc = 'FT'
|
|
ORDER BY a.codigo_dgii
|
|
FOREACH busca_dgii INTO kcodigo,kdescripcion
|
|
LET kcodigo = kcodigo CLIPPED
|
|
|
|
CALL kcodigodgii.addItem(kcodigo,kdescripcion)
|
|
END FOREACH
|
|
END FUNCTION |