4767 lines
171 KiB
Plaintext
4767 lines
171 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CCPRMT001
|
|
OBJETIVO : Mantenimiento de Recibo de Pago y otros Movimientos
|
|
REALIZADO POR : JUAN SOTO
|
|
FECHA : Enero 1997
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
IMPORT UTIL
|
|
GLOBALS "ccprgb000.4gl"
|
|
|
|
DEFINE documento_encabezado RECORD
|
|
tipoEcf,eNcf,indicadorMontoGravado,tipoPago,fechaLimitePago,FormadePAgo,montoPago,FechaVencimientoSecuencia,
|
|
rncEmisor,razonSocialEmisor,direccionEmisor,Municipio,Provincia,telefonoEmisor,
|
|
correoEmisor,webSite,codigoVendedor,numeroFacturaInterna,numeroPedidoInterno,
|
|
fechaEmision,rncComprador,razonSocialComprador,montoGravadoTotal,montoGravadoI1,
|
|
montoGravadoI2,montoGravadoI3,montoExento,itbis1,itbis2,itbis3,totalItbis,totalItbis1,
|
|
totalItbis2,totalItbis3,montoTotal,tipoIngreso,terminoPago,TipoCuentaPago,NumeroCuentaPago,IdentificadorExtranjero,
|
|
contactoComprador,CorreoComprador,DireccionComprador,MunicipioComprador,ProvinciaComprador,FechaEntrega,FechaOrdenCompra,
|
|
NumeroOrdenCompra,CodigoInternoComprador,
|
|
nombreFile,IndicadorNotaCredito,NCFmodificado,codigoModificacion,fechaNCFmodificado
|
|
STRING
|
|
END RECORD,
|
|
tipodocumento CHAR(2),tipo_ncf,descripcion_ncf CHAR(50),genera_itbis CHAR(1),condicionpago CHAR(30)
|
|
|
|
DEFINE documento_Detalle DYNAMIC ARRAY OF RECORD
|
|
indicadorFacturacion,nombreItem,indicadorBienoServicio,cantidadItem,precioUnitarioItem,
|
|
montoItem STRING,
|
|
DescripcionItem VARCHAR(1000),
|
|
NumeroLinea int
|
|
END RECORD,
|
|
xhash CHAR(6),
|
|
xfechaFirmaDigital DATETIME YEAR TO SECOND
|
|
|
|
DEFINE decenas DYNAMIC ARRAY OF CHAR(20)
|
|
DEFINE centenas DYNAMIC ARRAY OF CHAR(20)
|
|
DEFINE unidades1 DYNAMIC ARRAY OF CHAR(20),
|
|
reimprime,hecha_aqui VARCHAR(2),
|
|
rnc VARCHAR(11),
|
|
direccion_Sucursal,descripcion,desc_modificacion VARCHAR(100),
|
|
arr_articulos DYNAMIC ARRAY OF RECORD
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad_1,
|
|
cantidad_2 DEC(12,4),
|
|
descrip_Esp VARCHAR(70),
|
|
unidad_med VARCHAR(4),
|
|
precio,por_desc,valor_desc,valor_itbis,valor DEC(12,2),
|
|
id_tipo SMALLINT
|
|
END RECORD
|
|
DEFINE xorden,numero_recibo,valor_cheque1,p_num_doc,num_doc_ref,hsucid,xfactura INTEGER
|
|
DEFINE valor_ctrl1,valor_nc,nc_pend,valor_ctrl,p_total,
|
|
tasa,pitbis,ditbis,valor_orig,valor_aplicado,remanente,val_pen,valor2,xvalor_bruto,xdescuento,
|
|
xsub_total,xitbis,xneto
|
|
DECIMAL(12,2),
|
|
psimbolo,pmoneda,valor_letras, phash,xrespuesta,codigo,message_err STRING,
|
|
dias SMALLINT,
|
|
ffecha DATE,
|
|
imagen BYTE
|
|
DEFINE fecha1 DATE
|
|
DEFINE nombre_cta,qncf CHAR(30)
|
|
DEFINE tipo_ant,tipo_doc2,tipo_doc1,ptipo_nc,chr_impresion,vacio CHAR(2)
|
|
DEFINE opc,ncr,tienencf CHAR(1),
|
|
p_nombre_tipo,pdescrip_mov CHAR(40),
|
|
dir1,dir2,dir3,dir4 CHAR(30),
|
|
pdireccion CHAR(200),
|
|
cod_mov_ref,no_reg SMALLINT,
|
|
pdocumento_ref DYNAMIC ARRAY OF INT,
|
|
simbolo,id_provincia_dgii,id_municipio_dgii VARCHAR(6),
|
|
idtipo SMALLINT,
|
|
xventas CHAR(1),
|
|
ncffechaVencimiento BOOLEAN
|
|
|
|
DEFINE pok RECORD
|
|
trackId,ERROR,mensaje STRING
|
|
END RECORD
|
|
|
|
|
|
|
|
DEFINE p RECORD
|
|
|
|
trackid STRING,
|
|
codigo,estado,rnc,encf,secuenciaUtilizada,fechaRecepcion STRING,
|
|
|
|
mensajes DYNAMIC ARRAY of RECORD
|
|
valor,codigo string
|
|
END RECORD
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("ccprmt01.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(4) RETURNING impresor
|
|
|
|
CONNECT to "decomarmol" USER usuarios USING clave
|
|
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
SELECT a.sucid,b.sucnombre,b.direccion,b.telefono,b.fax,b.rnc,a.cod_perfil,
|
|
c.id_municipio_dgii,c.id_dgii
|
|
INTO codigo_sucursal,nombre_sucursal,direccion_sucursal,
|
|
p_companias.telefono,p_companias.fax,p_companias.rnc,pperfil,
|
|
id_municipio_dgii,id_provincia_dgii
|
|
FROM seg0001 a,sucursales b,vetb00020 c
|
|
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS","STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
|
|
CALL ccprmt001()
|
|
END MAIN
|
|
####### Funcion para agregar un recibo de pago
|
|
|
|
FUNCTION ccprmt001()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
OPEN FORM ccfmmt001 FROM "ccfmmt001"
|
|
DISPLAY FORM ccfmmt001
|
|
DISPLAY "ccprmt001" AT 4,3
|
|
DISPLAY "Movimientos de CXC" AT 6,31
|
|
|
|
LET fecha1 = TODAY
|
|
LET hecha_Aqui= "NO"
|
|
MENU "OPCION"
|
|
ON ACTION Adicionar
|
|
LET hecha_aqui = "SI"
|
|
CALL arr_recibo.clear()
|
|
CLEAR FORM
|
|
CALL ccpcad001()
|
|
ON ACTION consultar_modifica
|
|
CALL ccpcmf001()
|
|
ON ACTION Salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION ccpcad001()
|
|
DEFINE emp SMALLINT
|
|
DEFINE hoy DATE
|
|
LET hoy = null
|
|
|
|
SELECT a.sucid,a.sucnombre INTO codigo_sucursal,nombre_sucursal
|
|
FROM sucursales a,seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ERROR "USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS"
|
|
RETURN
|
|
END IF
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED)
|
|
INPUT BY NAME recibo.*,aplicacion_antiguas,valor_ctrl,monto_efectivo,monto_ck,
|
|
monto_cr,ptipo_nc,cod_mov_ref,num_doc_ref,xfactura,idtipo ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
LET idtipo = NULL
|
|
CALL tiposModificacion()
|
|
LET recibo.fecha_orig = fecha1
|
|
LET valor_ctrl = NULL
|
|
LET tipo_ant = "RC"
|
|
LET aplicacion_antiguas ="NO"
|
|
LET xfactura = null
|
|
LET chr_impresion="NO"
|
|
## VENTANAS PARA BUSCAR LOS CLIENTES Y LOS EMPLEADOS
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (codigodgii)
|
|
IF recibo.tipo_doc = "NC" OR
|
|
recibo.tipo_doc = "ND" THEN
|
|
CALL btipo_fact("1",recibo.tipo_doc) RETURNING codigodgii,descripcion_ncf,fecha_vencimiento,genera_itbis
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
END IF
|
|
DISPLAY BY NAME fecha_Vencimiento
|
|
END IF
|
|
WHEN INFIELD(tipo_cliente)
|
|
CALL consulta_clientes()
|
|
|
|
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
|
|
LET recibo.sec_cliente = cliente_dir.sec_cliente
|
|
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD)
|
|
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
|
|
|
|
NEXT FIELD cod_emp_sec
|
|
|
|
WHEN INFIELD(sec_cliente)
|
|
CALL consulta_clientes()
|
|
|
|
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
|
|
LET recibo.sec_cliente = cliente_dir.sec_cliente
|
|
|
|
SELECT nombre INTO nom_cli FROM vetb00004
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
|
|
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD)
|
|
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
|
|
|
|
NEXT FIELD cod_emp_sec
|
|
|
|
WHEN INFIELD(cod_emp_sec)
|
|
CALL consulta_empleados()
|
|
|
|
LET recibo.cod_emp_sec = transportista.sec_transp
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
DISPLAY BY NAME recibo.cod_emp_sec ATTRIBUTE (BOLD)
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD)
|
|
|
|
NEXT FIELD fecha_orig
|
|
END CASE
|
|
{
|
|
AFTER FIELD deposito
|
|
IF recibo.cuenta_no is not null THEN
|
|
IF recibo.deposito is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD deposito
|
|
END IF
|
|
|
|
SELECT unique num_doc FROM tetb00001
|
|
WHERE cuenta_no = recibo.cuenta_no and num_doc = recibo.deposito
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD deposito
|
|
END IF
|
|
END IF
|
|
}
|
|
## AQUI SE PREPARA PARA LA CAPTURA DE INFORMACION
|
|
BEFORE FIELD tipo_doc
|
|
LET recibo.tipo_doc = tipo_ant
|
|
AFTER FIELD tipo_doc
|
|
IF recibo.tipo_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
LET tipo_ant = recibo.tipo_doc
|
|
LET tienencf = "N"
|
|
{
|
|
IF recibo.tipo_doc = "PG" AND recibo.deposito IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD deposito
|
|
ELSE
|
|
IF recibo.tipo_doc != "PG" AND recibo.deposito IS NOT NULL THEN
|
|
LET numero_msg = 192
|
|
CALL msg(numero_msg)
|
|
LET recibo.deposito = null
|
|
DISPLAY BY NAME recibo.deposito
|
|
END IF
|
|
END IF
|
|
|
|
}
|
|
CASE
|
|
WHEN recibo.tipo_doc = "PG"
|
|
LET nombre_tipo = "PAGOS"
|
|
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "RC"
|
|
LET nombre_tipo = "PAGOS"
|
|
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "OC"
|
|
LET nombre_tipo = "OTROS CREDITOS"
|
|
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "OD"
|
|
LET nombre_tipo = "OTROS DEBITOS"
|
|
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "ED"
|
|
LET nombre_tipo = "ENTRADAS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "NC"
|
|
LET nombre_tipo = "NOTA CREDITO"
|
|
LET tienencf = "S"
|
|
NEXT FIELD cod_mov_ref
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ND"
|
|
LET nombre_tipo = "NOTA DEBITO"
|
|
LET tienencf = "S"
|
|
NEXT FIELD xfactura
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "PI"
|
|
LET nombre_tipo = "PAGO INTER."
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "RM"
|
|
LET nombre_tipo = "RECIBOS MICELANEOS"
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "RC"
|
|
LET nombre_tipo = "INGRESOS CXC"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "DV"
|
|
LET nombre_tipo = "DEVOLUCION DINERO"
|
|
EXIT CASE
|
|
|
|
END CASE
|
|
|
|
IF recibo.tipo_doc = 'AV' THEN
|
|
CALL fgl_winmessage("INFO","TIPO DOCUMENTO INCORRECTO","INFO")
|
|
NEXT FIELD tipo_Doc
|
|
END IF
|
|
# DISPLAY BY NAME nombre_tipo ATTRIBUTE (BOLD)
|
|
|
|
LET p_nombre_tipo= nombre_tipo
|
|
|
|
{
|
|
AFTER FIELD cuenta_no
|
|
|
|
IF recibo.cuenta_no is not null THEN
|
|
SELECT descripcion INTO nombre_cta FROM cgtb00001
|
|
WHERE cuenta_no = recibo.cuenta_no and status_t is null
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
DISPLAY BY NAME nombre_cta ATTRIBUTE (blue)
|
|
END IF
|
|
}
|
|
## CHEQUEA QUE EL REGISTRO NO SE REPITA
|
|
BEFORE FIELD num_doc
|
|
IF recibo.tipo_Doc = 'RC' or recibo.tipo_Doc = 'RM' THEN
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
{AFTER FIELD num_doc
|
|
IF recibo.num_doc IS NULL or
|
|
recibo.num_doc = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
SELECT UNIQUE a.num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_doc = recibo.num_doc
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
}
|
|
## CHEQUEA QUE EL CLIENTE EXISTA, SI EXISTE DESPLEGA SU NOMBRE
|
|
AFTER FIELD tipo_cliente
|
|
IF recibo.tipo_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
DISPLAY "NOMBRE ",nom_cli
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
# BUSCA LA TASA
|
|
{ LET tasa =0
|
|
SELECT a.tasa INTO tasa FROM vetb00060 a,vetb00061 b
|
|
WHERE b.tipo_cliente = recibo.tipo_cliente AND
|
|
b.ventas = a.ventas
|
|
|
|
IF tasa IS NULL OR tasa = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
DISPLAY BY NAME tasa}
|
|
|
|
AFTER FIELD sec_cliente
|
|
IF recibo.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio,b.zona_postal
|
|
INTO nom_cli,dir1,dir2,dir3,dir4,tipodocumento
|
|
FROM vetb00004 b,OUTER vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
|
|
# BUSCA EL VENDEDOR PARA ESTE CLIENTE
|
|
SELECT a.sec_vend INTO recibo.cod_emp_sec
|
|
FROM vetb00028 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
DISPLAY BY NAME recibo.cod_emp_sec
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
NEXT FIELD fecha_orig
|
|
AFTER FIELD cod_mov_ref
|
|
IF recibo.tipo_doc='NC' THEN
|
|
IF cod_mov_ref IS NOT NULL AND cod_mov_ref <> 0 THEN
|
|
SELECT a.descrip_mov INTO pdescrip_mov FROM iptb00005 a
|
|
WHERE a.cod_mov = cod_mov_ref AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_mov_ref
|
|
END IF
|
|
DISPLAY BY NAME pdescrip_mov
|
|
END IF
|
|
END IF
|
|
AFTER FIELD xfactura
|
|
IF xfactura IS NOT NULL AND xfactura <> 0 THEN
|
|
SELECT a.tipo_cliente,a.sec_cliente,b.nombre,a.sucid,a.fecha_factura,
|
|
a.sec_vend,c.nom1_emp,c.apell1_emp,a.prima_us,a.orden,a.ventas
|
|
INTO recibo.tipo_cliente,recibo.sec_cliente,nom_cli,
|
|
arr_recibo[1].sucid,ffecha,recibo.cod_emp_sec,
|
|
descrip2,descrip3,tasa,xorden,xventas
|
|
FROM vetb00002 a LEFT OUTER JOIN adtb00003 c ON c.num_emp = a.sec_vend ,
|
|
vetb00004 b
|
|
WHERE a.factura = xfactura AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD xfactura
|
|
END IF
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
|
|
DISPLAY BY NAME recibo.cod_emp_sec,nombre_emp,tasa,
|
|
recibo.tipo_cliente,recibo.sec_cliente,nom_cli,ffecha
|
|
|
|
IF ffecha > recibo.fecha_orig THEN
|
|
CALL msg(1011)
|
|
NEXT FIELD ffactura
|
|
END IF
|
|
IF tienencf = "S" THEN
|
|
IF recibo.fecha_orig > "12312006" THEN
|
|
IF codigodgii IS NULL THEN
|
|
|
|
CALL btipo_fact("1",recibo.tipo_doc) RETURNING codigodgii,descripcion_ncf,fecha_vencimiento,genera_itbis
|
|
DISPLAY BY NAME fecha_vencimiento,codigodgii
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
IF idtipo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD idtipo
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
IF ptipo_nc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD ptipo_nc
|
|
END IF
|
|
END IF
|
|
CALL calculo_nc(num_doc_ref,cod_mov_ref,tasa,idtipo) RETURNING xvalor_bruto,xdescuento,xsub_total,xitbis,xneto
|
|
IF xvalor_bruto = 0 THEN
|
|
CALL msg(16)
|
|
LET valor_ctrl = xvalor_bruto
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
LET valor_ctrl = xneto
|
|
|
|
LET arr_recibo[1].valor_pag = valor_ctrl
|
|
LET arr_recibo[1].desc_p =0
|
|
|
|
DISPLAY BY NAME valor_ctrl
|
|
IF codigodgii <> 'B04' THEN
|
|
NEXT FIELD num_doc_ref
|
|
ELSE
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
IF valor_ctrl IS NULL THEN
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
END IF
|
|
AFTER FIELD num_doc_ref
|
|
IF recibo.tipo_doc="NC" THEN
|
|
|
|
IF num_doc_ref <> 0 THEN
|
|
SELECT DISTINCT CAST(a.fact_no AS INT),a.cod_sp,a.cod_sp_sec,b.nombre
|
|
INTO xfactura,recibo.tipo_cliente,recibo.sec_cliente,nom_cli
|
|
FROM iptb00006 a,vetb00004 b
|
|
WHERE a.num_doc = num_doc_ref AND
|
|
a.cod_mov = cod_mov_ref AND
|
|
a.cod_sp = b.tipo_cliente AND
|
|
a.cod_sp_sec = b.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS=NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
|
|
|
|
DISPLAY BY NAME recibo.tipo_cliente,recibo.sec_cliente,nom_cli
|
|
SELECT COUNT(*) INTO no_reg FROM cctb00001 a
|
|
WHERE a.banco = cod_mov_ref AND
|
|
a.num_cheque = num_doc_ref AND
|
|
a.status_t IS NULL
|
|
IF no_reg > 0 THEN
|
|
CALL msg(364)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
|
|
|
|
LET arr_recibo[1].aplica_a = xfactura
|
|
SELECT a.sucid,a.fecha_factura,a.sec_vend,c.nom1_emp,c.apell1_emp,a.prima_us,a.orden
|
|
INTO arr_recibo[1].sucid,ffecha,recibo.cod_emp_sec,
|
|
descrip2,descrip3,tasa,xorden
|
|
FROM vetb00002 a LEFT OUTER JOIN adtb00003 c ON c.num_emp = a.sec_vend
|
|
WHERE a.factura = xfactura AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND a.sec_cliente = recibo.sec_cliente
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
|
|
DISPLAY BY NAME recibo.cod_emp_sec,nombre_emp,tasa
|
|
END IF
|
|
END IF
|
|
NEXT FIELD sucid
|
|
AFTER FIELD cod_emp_sec
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD)
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT sec_vend FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 357
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD fecha_orig
|
|
IF recibo.fecha_orig IS NULL OR recibo.fecha_orig > TODAY THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
LET p_fechas = recibo.fecha_orig
|
|
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
LET fecha1 = recibo.fecha_orig
|
|
|
|
BEFORE FIELD valor_ctrl
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo =0
|
|
END IF
|
|
IF monto_cr IS NULL THEN
|
|
LET monto_cr =0
|
|
END IF
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck=0
|
|
END IF
|
|
IF recibo.tipo_Doc <> 'NC' THEN
|
|
LET valor_ctrl = monto_efectivo+monto_cr+monto_ck
|
|
END IF
|
|
DISPLAY BY NAME valor_ctrl
|
|
|
|
AFTER FIELD valor_ctrl
|
|
IF valor_ctrl IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
NEXT FIELD ptipo_nc
|
|
ELSE
|
|
LET ptipo_nc = NULL
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
RETURN
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = 'RC' THEN
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo =0
|
|
END IF
|
|
IF monto_cr IS NULL THEN
|
|
LET monto_cr =0
|
|
END IF
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck=0
|
|
END IF
|
|
|
|
LET valor_ctrl = monto_efectivo+monto_cr+monto_ck
|
|
DISPLAY BY NAME valor_ctrl
|
|
|
|
END IF
|
|
|
|
|
|
IF aplicacion_antiguas = "SI" THEN
|
|
CALL aplica_mas_antiguas()
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc='ND' THEN
|
|
IF xfactura IS NULL OR xfactura = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD xfactura
|
|
END IF
|
|
IF recibo.tipo_doc<>'RC' AND recibo.tipo_doc<>'RM' THEN
|
|
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc AND a.sucid =codigo_sucursal
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
END IF
|
|
|
|
IF tienencf = "S" THEN
|
|
IF recibo.fecha_orig > "12312006" THEN
|
|
IF codigodgii IS NULL THEN
|
|
|
|
CALL btipo_fact("1",recibo.tipo_doc) RETURNING codigodgii,descripcion_ncf,fecha_vencimiento,genera_itbis
|
|
DISPLAY BY NAME fecha_Vencimiento,codigodgii
|
|
END IF
|
|
|
|
SELECT MAX(a.ncf) INTO kncf FROM vetb00072 a
|
|
WHERE a.tipo_doc = recibo.tipo_Doc and
|
|
a.codigo_dgii = codigodgii
|
|
|
|
IF kncf IS NULL THEN
|
|
LET kncf = 0
|
|
END IF
|
|
LET kncf = kncf + 1
|
|
DISPLAY BY NAME kncf,codigodgii
|
|
SELECT a.tipo_ncf INTO descripcion FROM vetb00071 a
|
|
WHERE kncf BETWEEN a.ncf_inicial AND a.ncf_final and
|
|
a.tipo_doc = recibo.tipo_doc and a.codigo_dgii = codigodgii AND
|
|
a.disponible = "S"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg =391
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF idtipo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD idtipo
|
|
END IF
|
|
IF ptipo_nc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD ptipo_nc
|
|
END IF
|
|
CALL calculo_nc(num_doc_ref,cod_mov_ref,tasa,idtipo) RETURNING xvalor_bruto,xdescuento,xsub_total,xitbis,xneto
|
|
DISPLAY xneto
|
|
DISPLAY xvalor_bruto
|
|
IF xvalor_bruto = 0 THEN
|
|
CALL msg(16)
|
|
LET valor_ctrl = xvalor_bruto
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
DISPLAY "ctrl ",valor_ctrl
|
|
LET valor_ctrl = xneto
|
|
LET arr_recibo[1].valor_pag = valor_ctrl
|
|
LET arr_recibo[1].desc_p =0
|
|
DISPLAY "ctrl ",valor_ctrl
|
|
DISPLAY BY NAME valor_ctrl
|
|
IF codigodgii <> 'B04' THEN
|
|
NEXT FIELD num_doc_ref
|
|
ELSE
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
END IF
|
|
IF valor_ctrl IS NULL THEN
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
END INPUT
|
|
|
|
## AQUI SE INTRODUCEN LOS DATOS DEL ARREGLO
|
|
INPUT ARRAY arr_recibo FROM s_recibo.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
|
|
CALL localidades("1")
|
|
|
|
## VENTANA PARA BUSCAR LOS DOCUMENTOS
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (aplica_a)
|
|
CALL busca_aplicacion()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET existe = "S"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].aplica_a to s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
NEXT FIELD aplica_a
|
|
END CASE
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
BEFORE FIELD aplica_A
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
|
|
SELECT DISTINCT b.num_doc,b.sucid INTO arr_recibo[curr].aplica_a,arr_recibo[curr].sucid
|
|
FROM iptb00006 a,cctb00001 b
|
|
WHERE (a.cod_mov = cod_mov_ref AND
|
|
a.num_doc = num_doc_ref) AND
|
|
(a.cod_sp = recibo.tipo_cliente AND
|
|
a.cod_sp_sec = recibo.sec_cliente) AND
|
|
b.tipo_cliente = recibo.tipo_cliente AND
|
|
b.sec_cliente = recibo.sec_cliente AND
|
|
a.fact_no = b.num_doc AND
|
|
b.tipo_Doc IN ('FT','FE') AND
|
|
a.status_t IS NULL
|
|
DISPLAY arr_recibo[curr].aplica_a to s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].sucid to s_recibo[scr_l].sucid
|
|
|
|
END IF
|
|
AFTER FIELD num_nc
|
|
LET nc_pend = 0
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
LET arr_recibo[curr].num_nc = NULL
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
END IF
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
SELECT UNIQUE num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_nc
|
|
END IF
|
|
|
|
LET valor_nc = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor_nc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF valor_nc IS NULL THEN
|
|
LET valor_nc = 0
|
|
END IF
|
|
|
|
LET nc_pend = valor_nc
|
|
LET arr_recibo[curr].valor_pen = nc_pend
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
|
|
DISPLAY BY NAME nc_pend
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
LET curr = arr_curr()
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF recibo.num_doc != arr_recibo[curr].aplica_a THEN
|
|
CALL msg(131)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
# Controla que la factura pertenezca al cliente
|
|
# IF recibo.tipo_doc = "PG" OR recibo.tipo_doc="NC" OR recibo.tipo_doc="ND" THEN
|
|
|
|
SELECT MAX(a.documento_ref),MAX(a.tipo_doc)
|
|
INTO pdocumento_ref[curr],arr_Recibo[curr].tipo_doc_aplica
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente and
|
|
a.sec_cliente = recibo.sec_cliente) AND
|
|
a.sucid = arr_recibo[curr].sucid AND
|
|
(a.num_doc = arr_recibo[curr].aplica_a and
|
|
a.tipo_doc = arr_recibo[curr].tipo_doc_aplica) and
|
|
a.status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = 'NC' AND (ptipo_nc='01' OR ptipo_nc = '03') THEN
|
|
SELECT DISTINCT a.fact_no FROM iptb00006 a
|
|
WHERE a.cod_mov = cod_mov_ref AND
|
|
a.num_doc = num_doc_ref AND
|
|
a.fact_no = arr_recibo[curr].aplica_a AND
|
|
a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ESTA FACTURA NO EXISTE PARA EL DOCUMENTO DE ALMACEN ESPECIFICADO","INFO")
|
|
NEXT FIELD aplica_A
|
|
END IF
|
|
SELECT ISNULL(SUM(a.cantidad_2*b.precio),0) INTO arr_recibo[curr].valor_pag
|
|
FROM iptb00006 a,vetb00003 b
|
|
WHERE a.cod_mov = cod_mov_ref AND
|
|
a.num_doc = num_doc_ref AND
|
|
a.fact_no = arr_recibo[curr].aplica_a AND
|
|
b.factura = arr_recibo[curr].aplica_a AND
|
|
a.cod_n = b.cod_n AND
|
|
a.cod_grupo = b.cod_grupo AND
|
|
a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec
|
|
LET arr_recibo[curr].valor_pen = arr_recibo[curr].valor_pag
|
|
DISPLAY arr_recibo[curr].valor_pag to s_recibo[scr_l].valor_pag
|
|
|
|
END IF
|
|
# END IF
|
|
|
|
# Busca el valor pendiente de la factura
|
|
IF recibo.tipo_doc <> 'NC' THEN
|
|
IF arr_recibo[curr].num_nc IS NULL THEN
|
|
SELECT sum(a.valor+a.monto_desc) INTO valor_fac FROM cctb00001 a
|
|
WHERE a.aplica_a = arr_recibo[curr].aplica_a and
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc NOT IN ('AV','AP') AND
|
|
a.status_t is NULL
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET arr_recibo[curr].valor_pag=valor_fac
|
|
END IF
|
|
IF aplicacion_antiguas = "NO" THEN
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
END IF
|
|
|
|
ELSE
|
|
LET arr_recibo[curr].valor_pen = 0
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].tipo_doc_aplica to s_recibo[scr_l].tipo_doc_aplica
|
|
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD desc_p
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
NEXT FIELD valor_pag
|
|
ELSE
|
|
LET arr_recibo[curr].desc_p = 0
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p
|
|
END IF
|
|
|
|
AFTER FIELD desc_p
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
ELSE
|
|
|
|
IF arr_recibo[curr].desc_p is null THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pag -
|
|
arr_recibo[curr].desc_p
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pag to s_recibo[scr_l].valor_pag
|
|
|
|
AFTER FIELD valor_pag
|
|
|
|
IF arr_recibo[curr].aplica_a IS NULL AND
|
|
arr_recibo[curr].num_nc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
LET p_total = 0
|
|
LET remanente = valor_ctrl
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].valor_pag is not null THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total = p_total + arr_recibo[idx].valor_pag
|
|
LET remanente = remanente - arr_recibo[idx].valor_pag
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
if arr_recibo[arr_curr()].num_nc is not null THEN
|
|
IF p_total > valor_ctrl THEN
|
|
LET numero_msg = 502
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
end IF
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME remanente ATTRIBUTE(BLUE)
|
|
END INPUT
|
|
|
|
ON ACTION guardar
|
|
LET reimprime = 'NO'
|
|
LET p_total = 0
|
|
LET remanente = valor_ctrl
|
|
IF recibo.tipo_doc = 'ND' THEN
|
|
IF xfactura IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD xfactura
|
|
END IF
|
|
LET arr_recibo[1].aplica_a = xfactura
|
|
LET arr_Recibo[1].valor_pag = valor_ctrl
|
|
|
|
IF xventas = '2' OR xventas='3' THEN
|
|
LET arr_recibo[1].tipo_doc_aplica ="FE"
|
|
END IF
|
|
IF xventas='1' THEN
|
|
LET arr_recibo[1].tipo_doc_aplica ="FT"
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
IF ptipo_nc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD ptipo_nc
|
|
END IF
|
|
IF xfactura IS NULL THEN
|
|
IF num_doc_ref IS NULL OR num_doc_ref = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
IF xfactura IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
IF idtipo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD idtipo
|
|
END IF
|
|
IF arr_articulos.getLength() = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo =0
|
|
END IF
|
|
ELSE
|
|
LET arr_recibo[1].aplica_a = xfactura
|
|
LET arr_Recibo[1].valor_pag = valor_ctrl
|
|
|
|
IF xventas = '2' OR xventas='3' THEN
|
|
LET arr_recibo[1].tipo_doc_aplica ="FE"
|
|
END IF
|
|
IF xventas='1' THEN
|
|
LET arr_recibo[1].tipo_doc_aplica ="FT"
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].valor_pag is not null THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total = p_total + arr_recibo[idx].valor_pag
|
|
LET remanente = remanente - arr_recibo[idx].valor_pag
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
if arr_recibo[arr_curr()].num_nc is not null then
|
|
IF p_total > valor_ctrl THEN
|
|
LET numero_msg = 502
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
end if
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME remanente ATTRIBUTE(blue)
|
|
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
|
|
|
|
|
|
|
|
IF recibo.tipo_doc = "NC" OR recibo.tipo_doc = 'ND' THEN
|
|
|
|
IF idtipo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD idtipo
|
|
END IF
|
|
|
|
LET ncr = NULL
|
|
# PROMPT "TIENE ITBIS(S/N)? " FOR CHAR ncr
|
|
# LET ncr = UPSHIFT(ncr)
|
|
END IF
|
|
|
|
LET opc = NULL
|
|
LET valor_cheque1 = NULL
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
PROMPT "NOTA DE DEBITO ES DEBIDO A CHEQUE DEVUELTO...[S/N]? " FOR CHAR opc
|
|
LET opc = UPSHIFT(opc)
|
|
|
|
IF opc = "S" THEN
|
|
SELECT sec_vend INTO recibo.cod_emp_sec
|
|
FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
DISPLAY BY NAME recibo.cod_emp_sec
|
|
LET valor_cheque1 = recibo.num_doc
|
|
ELSE
|
|
LET valor_cheque1 = NULL
|
|
END IF
|
|
END IF
|
|
|
|
|
|
#START REPORT cctb01 TO archivo
|
|
# busca el ultimo numero de los recibos RC, con los AV
|
|
IF recibo.tipo_doc<>'RC' AND recibo.tipo_doc<>'RM' THEN
|
|
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc #AND a.sucid =codigo_sucursal
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
END IF
|
|
BEGIN WORK
|
|
# busca el ultimo numero de los recibos RC, con los AV
|
|
IF recibo.tipo_Doc = 'RC' or recibo.tipo_Doc = 'RM' THEN
|
|
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a WHERE a.tipo_doc = 'AV'
|
|
IF p_num_doc IS NULL THEN
|
|
LET p_num_doc = 0
|
|
INSERT INTO cctb00003 (ult_recibo,tipo_Doc.us_crea) values (0,'AV',user,"1")
|
|
END IF
|
|
LET recibo.num_doc = p_num_doc + 1
|
|
update cctb00003 set ult_recibo=recibo.num_doc where tipo_doc = 'AV'
|
|
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo.num_doc
|
|
|
|
{ DE ESTA FORMA ERA QUE ESTABA AL 23/02/2016
|
|
IF recibo.tipo_doc != "PG" THEN
|
|
IF recibo.tipo_doc <> 'RC' THEN
|
|
if recibo.tipo_doc <> 'RM' THEN
|
|
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_Doc = 'RC' or recibo.tipo_Doc = 'RM' THEN
|
|
SELECT a.ult_recibo INTO p_num_doc FROM cctb00003 a WHERE a.tipo_doc = 'AV'
|
|
IF p_num_doc IS NULL THEN
|
|
LET p_num_doc = 0
|
|
INSERT INTO cctb00003 (ult_recibo,tipo_Doc.us_crea) values (0,'AV',usuarios,"1")
|
|
END IF
|
|
LET recibo.num_doc = p_num_doc + 1
|
|
update cctb00003 set ult_recibo=recibo.num_doc where tipo_doc = 'AV'
|
|
END IF
|
|
|
|
}
|
|
|
|
#NCF
|
|
|
|
IF recibo.tipo_Doc = "NC" OR recibo.tipo_Doc = "ND" THEN
|
|
|
|
SELECT a.ncf INTO kncf FROM vetb00073 a
|
|
WHERE a.codigo_dgii = codigodgii AND a.tipo_doc = recibo.tipo_doc
|
|
|
|
IF kncf IS NULL THEN
|
|
LET kncf = 0
|
|
END IF
|
|
LET kncf = kncf + 1
|
|
UPDATE vetb00073 SET ncf = kncf WHERE codigo_dgii = codigodgii AND tipo_doc = recibo.tipo_doc
|
|
|
|
DISPLAY BY NAME kncf,codigodgii
|
|
SELECT DISTINCT a.ncf FROM vetb00072 a
|
|
WHERE a.codigo_dgii=codigodgii AND
|
|
a.ncf = kncf
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL msg(390)
|
|
CONTINUE DIALOG
|
|
END IF
|
|
SELECT a.tipo_ncf INTO tipo_ncf FROM vetb00071 a
|
|
WHERE a.codigo_dgii=codigodgii
|
|
INSERT INTO vetb00072 VALUES (recibo.num_doc,recibo.tipo_doc,codigodgii,kncf,usuarios,GETDATE(),"1",fecha_vencimiento,tipo_ncf)
|
|
|
|
END IF
|
|
|
|
INSERT INTO cctb00011
|
|
(cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,us_crea,fech_crea,sucid,tipo_nc,
|
|
valor_efectivo,valor_tarjeta,valor_cheque,chitbis,emitida)
|
|
VALUES (1,recibo.num_doc,recibo.tipo_Doc,recibo.tipo_cliente,recibo.sec_cliente,
|
|
recibo.comentario,usuarios,GETDATE(),codigo_sucursal,ptipo_nc,monto_efectivo,
|
|
monto_cr,monto_ck,ncr,hecha_aqui)
|
|
|
|
## SI NO OCURRE NINGUN ERROR SE PROCEDE A INSERTAR EL REGISTRO
|
|
DISPLAY "DATA APLICA?A ",arr_recibo[1].aplica_a," IT ",xitbis," LENGTH: ",arr_recibo.getLength()
|
|
# ADICION PRODUCTOS NC O ND
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc = 'ND' THEN
|
|
FOR k = 1 TO arr_articulos.getLength()
|
|
IF arr_articulos[k].cod_sec IS NOT NULL THEN
|
|
INSERT INTO cctb00010 (tipo_doc,num_doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,
|
|
descuento,porc_desc,itbis,num_doc_almacen,cod_mov,bodega,us_crea,fech_crea,
|
|
descripcion)
|
|
VALUES (recibo.tipo_doc,recibo.num_doc,arr_articulos[k].cod_n,arr_articulos[k].cod_grupo,
|
|
arr_articulos[k].cod_tipo,arr_articulos[k].cod_sec,arr_articulos[k].cantidad_2,
|
|
arr_articulos[k].precio,arr_articulos[k].valor_desc,arr_articulos[k].por_desc,
|
|
arr_articulos[k].valor_itbis,pdocumento_ref[idx],cod_mov_ref,"1",usuarios,getdate(),
|
|
arr_articulos[k].descrip_Esp)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
FOR idx = 1 to arr_recibo.getLength()
|
|
IF arr_recibo[idx].aplica_a is not null THEN
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
IF recibo.cod_emp_sec IS NULL OR recibo.cod_emp_sec = 0 THEN
|
|
LET numero_msg = 68
|
|
CALL msg(numero_msg)
|
|
CONTINUE DIALOG
|
|
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
IF recibo.tipo_doc != "FI" THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = "OC" THEN
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = "OD" THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
|
|
|
|
IF recibo.tipo_doc = "DV" OR recibo.tipo_Doc = 'OD' THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'AV' THEN
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag*-1
|
|
END IF
|
|
LET xorden = null
|
|
SELECT a.num_oc INTO xorden FROM prtb00012 a
|
|
WHERE a.cotizacion_no = pdocumento_ref[idx] AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND a.sec_cliente = recibo.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
|
|
|
|
# PARA REAPLICAR LOS AVANCES CUANDO ES POR DEVOLUCION DE DINERO DEL AVANCE ORIGINAL
|
|
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp,cod_emp_sec,fecha_orig,
|
|
fecha_ven,aplica_a,num_cheque,valor,valor_cheque,costo,monto_desc,us_crea,fech_crea,
|
|
banco,tipo_doc_aplica,documento_ref,num_oc,sucid)
|
|
values (p_companias.cod_comp,'AP',
|
|
arr_recibo[idx].aplica_a,recibo.tipo_cliente,recibo.sec_cliente,codigo_sucursal,
|
|
recibo.cod_emp_sec,recibo.fecha_orig,"010101",arr_recibo[idx].aplica_a,
|
|
recibo.num_doc,valor_aplicado,
|
|
valor_cheque1,recibo.num_doc,arr_recibo[idx].desc_p,SUSER_SNAME(),GETDATE(),
|
|
pdocumento_ref[idx],arr_recibo[idx].tipo_doc_aplica,pdocumento_ref[idx],xorden,codigo_sucursal)
|
|
END IF
|
|
END IF
|
|
|
|
# ESTAS INSTRUCCIONES ES PARA ENTRAR LOS AV-AVANCES POR ESTE PROGRAMA
|
|
# SUPONGO QUE ESTAS LINEAS SERAN TEMPORALES HASTA QUE LOS AVANCES SE
|
|
# INTRODUZCAN POR OTRO MANTENIMIENTO
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
ERROR "El Campo de Numero de Avancve Debe Estar En Nulo"
|
|
|
|
CONTINUE DIALOG
|
|
END IF
|
|
IF arr_recibo[idx].aplica_a != recibo.num_doc THEN
|
|
ERROR "Documento Debe Aplicarse a Si Mismo"
|
|
|
|
CONTINUE DIALOG
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
#--------------------------------------------------------------------------
|
|
LET tipo_doc1 = NULL
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
LET tipo_doc1 = "AV"
|
|
ELSE
|
|
|
|
LET arr_recibo[idx].num_nc = recibo.num_doc
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
|
|
END IF
|
|
IF arr_recibo[idx].desc_p IS NULL THEN
|
|
LET arr_recibo[idx].desc_p =0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc='NC' OR recibo.tipo_doc='ND' THEN
|
|
IF recibo.tipo_cliente <> 17 THEN
|
|
LET arr_recibo[1].tipo_doc_aplica = 'FT'
|
|
ELSE
|
|
LET arr_recibo[1].tipo_doc_aplica = 'FE'
|
|
END IF
|
|
|
|
IF xitbis < 0 THEN
|
|
LET xitbis = xitbis * - 1
|
|
END IF
|
|
|
|
|
|
LET arr_recibo[idx].valor_pag = xneto *-1
|
|
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
IF xitbis >0 THEN
|
|
LET xitbis = xitbis * -1
|
|
END IF
|
|
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 AND recibo.tipo_doc = 'ND' THEN
|
|
LET arr_recibo[idx].valor_pag =arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
IF codigodgii NOT MATCHES 'B*' THEN
|
|
LET qncf = "E", codigodgii CLIPPED, kncf USING "&&&&&&&&&&"
|
|
ELSE
|
|
LET qncf = codigodgii CLIPPED, kncf USING "&&&&&&&&&&"
|
|
END IF
|
|
DISPLAY qncf TO codigodgii
|
|
INSERT INTO cctb00001 (tipo_Doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,fecha_ven,
|
|
aplica_a,localidad_aplica_a,valor,num_cheque,valor_cheque,monto_desc,
|
|
us_crea,fech_crea,bodega,sucid,documento_ref,valor_efectivo,
|
|
valor_tarjeta,banco,efectivo,tipo_doc_aplica,idtipo,ncf)
|
|
values (tipo_doc1,
|
|
arr_recibo[idx].num_nc,recibo.tipo_cliente,recibo.sec_cliente,
|
|
recibo.cod_emp_sec,recibo.fecha_orig,"010101",arr_recibo[idx].aplica_a,
|
|
arr_recibo[idx].sucid,
|
|
arr_recibo[idx].valor_pag,recibo.num_doc,
|
|
valor_cheque1,arr_recibo[idx].desc_p,usuarios,getdate(),"1",codigo_sucursal,
|
|
pdocumento_ref[idx],monto_efectivo,monto_cr,cod_mov_ref,ncr,arr_recibo[idx].tipo_doc_aplica,idtipo,
|
|
qncf)
|
|
|
|
IF tipo_doc1 = "ND" THEN
|
|
UPDATE cctb00001 set valor_cheque = numero_recibo
|
|
WHERE num_doc = recibo.num_doc AND
|
|
tipo_doc = "ND"
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
IF recibo.tipo_doc != "PG" THEN
|
|
SELECT a.tipo_doc from cctb00003 a where a.tipo_Doc = recibo.tipo_doc
|
|
IF STATUS != NOTFOUND THEN
|
|
UPDATE cctb00003 set ult_recibo = recibo.num_doc,
|
|
us_crea = usuarios,
|
|
fech_crea = getdate(),
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE tipo_doc = recibo.tipo_doc
|
|
ELSE
|
|
INSERT INTO cctb00003 (tipo_doc,ult_recibo,sucid) values (recibo.tipo_doc,recibo.num_doc,"1")
|
|
END IF
|
|
END IF
|
|
COMMIT WORK
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
LET emp = recibo.cod_emp_sec
|
|
CLEAR FORM
|
|
|
|
IF recibo.tipo_doc <> 'NC' AND recibo.tipo_doc <> 'ND' THEN
|
|
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
|
|
# IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,kncf,ditbis)
|
|
END IF
|
|
# END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc ='ND' THEN
|
|
|
|
LET r_filename = "ccprmt001encf.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b_encf TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
# IF arr_recibo[idx].num_nc IS NULL THEN
|
|
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b_encf(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,ditbis)
|
|
END IF
|
|
# END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b_encf
|
|
|
|
UPDATE cctb00001 set num_cheque = num_doc_ref,
|
|
itbis = xitbis
|
|
WHERE num_doc = recibo.num_doc AND
|
|
tipo_cliente = recibo.tipo_cliente AND
|
|
sec_cliente = recibo.sec_cliente AND
|
|
tipo_doc IN( "NC","ND")
|
|
|
|
|
|
|
|
END IF
|
|
END IF
|
|
{
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
UPDATE cctb00003 set ult_recibo = recibo.num_doc,
|
|
us_crea = usuarios,
|
|
fech_crea = getdate(),
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE sec_vend = recibo.cod_emp_sec
|
|
END IF
|
|
}
|
|
|
|
EXIT DIALOG
|
|
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
## Funcion para consultar/modificar un recibo de pago
|
|
FUNCTION ccpcmf001()
|
|
|
|
DEFINE usuario RECORD
|
|
us_crea CHAR(9),
|
|
fech_crea LIKE cctb00001.fech_crea
|
|
END RECORD
|
|
|
|
## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO
|
|
{
|
|
CONSTRUCT CRITERIO ON a.banco,a.tipo_doc,a.num_doc,a.tipo_cliente,
|
|
a.sec_cliente, a.cod_emp_sec,a.fecha_orig
|
|
FROM deposito,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,
|
|
fecha_orig
|
|
}
|
|
CONSTRUCT CRITERIO ON a.tipo_doc,a.num_doc,a.tipo_cliente,
|
|
a.sec_cliente, a.cod_emp_sec,a.fecha_orig
|
|
FROM tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,
|
|
fecha_orig
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT a.tipo_doc,a.num_doc,a.tipo_cliente, a.sec_cliente,a.cod_emp_sec,CONVERT(CHAR(10),",
|
|
"a.fecha_orig,103),ISNULL(b.comentario,' '),c.codigo_dgii,a.banco,a.num_cheque,b.tipo_nc,b.valor_efectivo,",
|
|
"b.valor_cheque,b.valor_tarjeta,b.chitbis,b.emitida,a.trackid,a.fechaFirmaDigital,a.hash,a.estado_dgii ",
|
|
" FROM cctb00001 a LEFT OUTER JOIN cctb00011 b ON a.num_doc = b.num_doc AND a.tipo_doc = b.tipo_doc
|
|
LEFT OUTER JOIN vetb00072 c ON c.documento = a.num_doc AND c.tipo_Doc = a.tipo_doc
|
|
WHERE ",criterio clipped,
|
|
" and a.tipo_doc NOT IN('FE','PC','FT') AND
|
|
a.status_t is null"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO recibo.*,codigodgii,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,ncr,
|
|
hecha_aqui,p.trackid,xfechaFirmaDigital,xhash,p.estado
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor-monto_desc)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
ELSE
|
|
IF recibo.tipo_Doc = "NC" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
ELSE
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" OR recibo.tipo_Doc = "OD" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
{
|
|
SELECT descripcion INTO nombre_cta FROM cgtb00001
|
|
WHERE cuenta_no = recibo.cuenta_no
|
|
}
|
|
IF valor_ctrl <0 THEN
|
|
LET valor_ctrl=valor_ctrl *-1
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,codigodgii,kncf,
|
|
cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,
|
|
p.trackid,p.estado
|
|
CALL detallecxc()
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO recibo.*,codigodgii,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,ncr,
|
|
hecha_aqui
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
ELSE
|
|
SELECT SUM((a.valor+a.monto_desc)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" OR recibo.tipo_Doc = "OD" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,codigodgii,kncf,ptipo_nc,
|
|
monto_efectivo,monto_ck,monto_cr
|
|
COMMAND "Imprimir"
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio,b.num_rnc
|
|
INTO nom_cli,dir1,dir2,dir3,dir4,rnc
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,codigodgii,ptipo_nc,
|
|
monto_efectivo,monto_ck,monto_cr
|
|
|
|
LET reimprime = "SI"
|
|
CASE
|
|
WHEN recibo.tipo_doc = "PG"
|
|
LET nombre_tipo = "PAGOS"
|
|
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "RC"
|
|
LET nombre_tipo = "PAGOS"
|
|
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "OC"
|
|
LET nombre_tipo = "OTROS CREDITOS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "OD"
|
|
LET nombre_tipo = "OTROS DEBITOS"
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "ED"
|
|
LET nombre_tipo = "ENTRADAS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "NC"
|
|
LET nombre_tipo = "NOTA CREDITO"
|
|
LET tienencf = "S"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ND"
|
|
LET nombre_tipo = "NOTA DEBITO"
|
|
LET tienencf = "S"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "PI"
|
|
LET nombre_tipo = "PAGO INTER."
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "RM"
|
|
LET nombre_tipo = "RECIBOS MICELANEOS"
|
|
EXIT CASE
|
|
|
|
WHEN recibo.tipo_doc = "RC"
|
|
LET nombre_tipo = "INGRESOS CXC"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "DV"
|
|
LET nombre_tipo = "DEVOLUCION DINERO"
|
|
EXIT CASE
|
|
|
|
END CASE
|
|
|
|
LET p_nombre_tipo = nombre_tipo CLIPPED
|
|
LET chr_impresion = "SI"
|
|
LET tipo_Doc1 = recibo.tipo_doc
|
|
CALL detallecxc()
|
|
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc ='ND' THEN
|
|
|
|
LET r_filename = "ccprmt001encf.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b_encf TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
|
|
# IF arr_recibo[idx].num_nc IS NULL THEN
|
|
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
# LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b_encf(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,ditbis)
|
|
END IF
|
|
# END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b_encf
|
|
END IF
|
|
|
|
END IF
|
|
IF recibo.tipo_doc = 'RC' OR recibo.tipo_doc ='OC' OR recibo.tipo_doc ='OD' THEN
|
|
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
|
|
# IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,kncf,ditbis)
|
|
END IF
|
|
# END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
|
|
END IF
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO recibo.*,codigodgii,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,ncr
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
ELSE
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" OR recibo.tipo_Doc = "OD" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,
|
|
codigodgii,kncf,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO recibo.*,codigodgii,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,ncr
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
ELSE
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,codigodgii,kncf,
|
|
cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,banco
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO recibo.*,codigodgii,cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr,ncr
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = "PG" AND
|
|
a.num_doc = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
|
|
ELSE
|
|
SELECT SUM((a.valor)*-1) INTO valor_ctrl FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_doc = recibo.tipo_doc AND
|
|
a.num_cheque = recibo.num_doc AND
|
|
a.cod_emp_sec = recibo.cod_emp_sec AND
|
|
a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,valor_ctrl,nombre_cta,codigodgii,ptipo_nc,
|
|
cod_mov_ref,num_doc_ref,ptipo_nc,monto_efectivo,monto_ck,monto_cr
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
|
|
|
|
## AQUI SE MODIFICAN/ACTUALIZAN LOS DATOS DEL REGISTRO
|
|
|
|
{ ESTA EN COMENTARIO PORQUE EL USUARIO EN CXC DE EXTERIOR ESTA REALIZANDO UNA LABOR
|
|
INMEDIATAMENTE TERMINE DEBE COMUNICARSE CON TI 31/10/2020
|
|
|
|
LET p_fechas = recibo.fecha_orig
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
}
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
CALL fgl_winmessage("INFO","NO PUEDES MODIFICAR NOTAS DE CREDITOS","INFO")
|
|
CONTINUE MENU
|
|
END IF
|
|
LET reimprime = "NO"
|
|
LET chr_impresion='NO'
|
|
INPUT BY NAME codigodgii,recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.cod_emp_sec,recibo.fecha_orig,valor_ctrl,monto_efectivo,monto_ck,
|
|
monto_cr,ptipo_nc,cod_mov_ref,num_doc_ref WITHOUT DEFAULTS
|
|
## CHEQUEA QUE EL CLIENTE EXISTA, SI EXISTE DESPLEGA SU NOMBRE
|
|
AFTER FIELD tipo_cliente
|
|
IF recibo.tipo_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
# Controla que el TIPO DE MOVIMIENTO FI solo sea a tipo clientes 13
|
|
IF recibo.tipo_doc = "FI" AND recibo.tipo_cliente = 12 THEN
|
|
LET numero_msg = 240
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
AFTER FIELD cod_mov_ref
|
|
IF recibo.tipo_doc='NC' THEN
|
|
SELECT a.descrip_mov INTO pdescrip_mov FROM iptb00005 a
|
|
WHERE a.cod_mov = cod_mov_ref AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_mov_ref
|
|
END IF
|
|
DISPLAY BY NAME pdescrip_mov
|
|
END IF
|
|
|
|
AFTER FIELD num_doc_ref
|
|
IF recibo.tipo_doc="NC" AND ptipo_nc = '01' THEN
|
|
IF num_doc_ref > 0 THEN
|
|
SELECT DISTINCT a.num_doc FROM iptb00006 a
|
|
WHERE a.num_doc = num_doc_ref AND
|
|
a.cod_mov = cod_mov_ref AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS=NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_doc_ref
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD sec_cliente
|
|
IF recibo.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
SELECT b.nombre,a.calle,a.casa_num,a.urbanizacion,a.barrio
|
|
INTO nom_cli,dir1,dir2,dir3,dir4
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
LET pdireccion = dir1 CLIPPED," ",dir2 CLIPPED," ",
|
|
dir3 CLIPPED," ",dir4
|
|
|
|
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
|
|
|
|
AFTER FIELD cod_emp_sec
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD)
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT sec_vend FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 357
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END IF
|
|
|
|
|
|
## VENTANAS PARA DESPLEGAR LOS CLIENTES Y LOS EMPLEADOS
|
|
AFTER FIELD fecha_orig
|
|
|
|
IF recibo.fecha_orig IS NULL OR recibo.fecha_orig > TODAY THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
LET p_fechas = recibo.fecha_orig
|
|
{ ESTA EN COMENTARIO PORQUE EL USUARIO EN CXC DE EXTERIOR ESTA REALIZANDO UNA LABOR
|
|
INMEDIATAMENTE TERMINE DEBE COMUNICARSE CON TI 31/10/2020
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
}
|
|
AFTER FIELD valor_ctrl
|
|
IF valor_ctrl IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
NEXT FIELD ptipo_nc
|
|
ELSE
|
|
LET ptipo_nc = NULL
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CONTINUE MENU
|
|
END IF
|
|
CASE
|
|
WHEN recibo.tipo_doc = "PG"
|
|
LET nombre_tipo = "PAGOS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "OC"
|
|
LET nombre_tipo = "OTROS CREDITOS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ED"
|
|
LET nombre_tipo = "ENTRADAS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "NC"
|
|
LET nombre_tipo = "NOTA CREDITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ND"
|
|
LET nombre_tipo = "NOTA DEBITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "PI"
|
|
LET nombre_tipo = "PAGO INTER."
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "DV"
|
|
LET nombre_tipo = "DEVOLUCION DINERO"
|
|
EXIT CASE
|
|
|
|
END CASE
|
|
# DISPLAY BY NAME nombre_tipo ATTRIBUTE (BOLD)
|
|
LET p_nombre_tipo = nombre_tipo
|
|
|
|
IF recibo.tipo_doc = 'RC' THEN
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo =0
|
|
END IF
|
|
IF monto_cr IS NULL THEN
|
|
LET monto_cr =0
|
|
END IF
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck=0
|
|
END IF
|
|
|
|
LET valor_ctrl = monto_efectivo+monto_cr+monto_ck
|
|
DISPLAY BY NAME valor_ctrl
|
|
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
CALL detallecxc()
|
|
CALL set_count(idx - 1)
|
|
|
|
LABEL arreglo2:
|
|
## AQUI SE MODIFICAN/ACTUALIZAN LOS CAMPOS DEL ARREGLO
|
|
INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.*
|
|
BEFORE INPUT
|
|
CALL localidades("1")
|
|
|
|
## VENTANA PARA BUSCAR LOS DOCUMENTOS
|
|
ON KEY (CONTROL-W)
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (aplica_a)
|
|
CALL busca_aplicacion()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET existe = "S"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].aplica_a to s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
NEXT FIELD aplica_a
|
|
END CASE
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER FIELD num_nc
|
|
LET nc_pend = 0
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
LET arr_recibo[curr].num_nc = NULL
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
END IF
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
SELECT UNIQUE num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_nc
|
|
END IF
|
|
|
|
LET valor_nc = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor_nc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF valor_nc IS NULL THEN
|
|
LET valor_nc = 0
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF recibo.num_doc != arr_recibo[curr].aplica_a THEN
|
|
ERROR "Si Es Un Avance Debe Aplicarse a Si Mismo"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc != "AV" AND
|
|
arr_recibo[curr].aplica_a = recibo.num_doc THEN
|
|
LET numero_msg = 131
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
# Controla que la factura pertenezca al cliente
|
|
IF recibo.tipo_doc = "PG" OR recibo.tipo_doc="NC" OR recibo.tipo_doc="ND" THEN
|
|
|
|
SELECT unique a.documento_ref,a.tipo_doc INTO pdocumento_ref[curr],arr_Recibo[curr].tipo_doc_aplica
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = arr_recibo[curr].aplica_a and
|
|
a.tipo_cliente = recibo.tipo_cliente and
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.sucid = arr_recibo[curr].sucid AND
|
|
(a.tipo_doc = arr_recibo[curr].tipo_doc_aplica) and
|
|
a.status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
# notas de creditos
|
|
IF recibo.tipo_doc = 'NC' AND ptipo_nc = '01' THEN
|
|
SELECT DISTINCT a.fact_no FROM iptb00006 a
|
|
WHERE a.cod_mov = cod_mov_ref AND
|
|
a.num_doc = num_doc_ref AND
|
|
a.fact_no = arr_recibo[curr].aplica_a AND
|
|
a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ESTA FACTURA NO EXISTE PARA EL DOCUMENTO DE ALMACEN ESPECIFICADO","INFO")
|
|
NEXT FIELD aplica_A
|
|
END IF
|
|
END IF
|
|
|
|
# Busca el valor pendiente de la factura
|
|
|
|
IF arr_recibo[curr].num_nc IS NULL THEN
|
|
SELECT sum(a.valor+a.monto_desc) INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE a.aplica_a=arr_recibo[curr].aplica_a and
|
|
a.status_t is null AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
ELSE
|
|
LET arr_recibo[curr].valor_pen = 0
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].tipo_Doc_aplica to s_recibo[scr_l].tipo_Doc_aplica
|
|
END IF
|
|
|
|
BEFORE FIELD desc_p
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
|
|
IF arr_recibo[curr].desc_p IS NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p
|
|
|
|
AFTER FIELD desc_p
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
ELSE
|
|
|
|
IF arr_recibo[curr].desc_p is null THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD valor_pag
|
|
|
|
IF arr_recibo[curr].aplica_a IS NULL AND
|
|
arr_recibo[curr].num_nc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
|
|
LET remanente = valor_ctrl
|
|
LET p_total = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_recibo[idx].desc_p < 0 THEN
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p*-1
|
|
END IF
|
|
|
|
IF arr_recibo[idx].valor_pag is not null THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total = p_total - arr_recibo[idx].valor_pag
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
DISPLAY BY NAME remanente ATTRIBUTE(BLUE)
|
|
|
|
IF p_total != valor_ctrl THEN
|
|
LET numero_msg = 502
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_recibo[idx].aplica_a is not null THEN
|
|
IF arr_recibo[idx].valor_pag IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
IF recibo.tipo_doc <> 'NC' OR recibo.tipo_doc <> 'ND' THEN
|
|
IF p_total != valor_ctrl THEN
|
|
LET numero_msg = 502
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplia_a
|
|
END IF
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF recibo.tipo_doc = "NC" OR recibo.tipo_doc="ND" THEN
|
|
|
|
LET ncr = NULL
|
|
# PROMPT "TIENE ITBIS(S/N)? " FOR CHAR ncr
|
|
# LET ncr = UPSHIFT(ncr)
|
|
END IF
|
|
|
|
LET opc = NULL
|
|
LET valor_cheque1 = NULL
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
PROMPT "NOTA DE DEBITO ES DEBIDO A CHEQUE DEVUELTO...[S/N]? " FOR CHAR opc
|
|
LET opc = UPSHIFT(opc)
|
|
|
|
IF opc = "S" THEN
|
|
LET valor_cheque1 = recibo.num_doc
|
|
ELSE
|
|
LET valor_cheque1 = NULL
|
|
END IF
|
|
END IF
|
|
|
|
## AQUI SE REALIZA LA MODIFICACION DEL REGISTRO
|
|
BEGIN WORK
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
DELETE FROM cctb00001 WHERE num_cheque= recibo.num_doc and
|
|
tipo_doc IN ("PG","AV") AND valor < 0 AND fecha_orig = recibo.fecha_orig AND
|
|
sucid = codigo_sucursal
|
|
|
|
ELSE
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT unique a.valor_cheque INTO valor_cheque1
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = recibo.num_doc AND
|
|
a.tipo_doc = "ND"
|
|
END IF
|
|
DELETE FROM cctb00001 WHERE num_doc= recibo.num_doc and
|
|
@tipo_doc = recibo.tipo_doc AND fecha_orig = recibo.fecha_orig AND
|
|
sucid = codigo_sucursal
|
|
|
|
|
|
END IF
|
|
#CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
# doble_on,doble_off,comp_on,comp_off,
|
|
# doce,normal,archivo,copia
|
|
|
|
# START REPORT cctb01 TO archivo
|
|
UPDATE cctb00011 SET tipo_cliente = recibo.tipo_cliente,
|
|
sec_cliente = recibo.sec_cliente,
|
|
comentario = recibo.comentario,
|
|
|
|
valor_efectivo = monto_efectivo,
|
|
valor_cheque = monto_ck,
|
|
valor_tarjeta = monto_cr,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE tipo_doc = recibo.tipo_doc AND
|
|
num_doc = recibo.num_doc
|
|
|
|
FOR idx = 1 to arr_count()
|
|
IF arr_recibo[idx].aplica_a is not null OR
|
|
arr_recibo[idx].num_nc is not null THEN
|
|
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc <> "OD" THEN
|
|
IF recibo.tipo_doc != "FI" THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
|
|
LET tipo_doc1 = NULL
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
LET tipo_doc1 = "AV"
|
|
ELSE
|
|
LET arr_recibo[idx].num_nc = recibo.num_doc
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
IF recibo.tipo_doc ='NC' THEN
|
|
LET recibo.num_doc=num_doc_ref
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = "DV" then
|
|
IF ARR_RECIBO[IDX].VALOR_PAG < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag*-1
|
|
END IF
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'AV' THEN
|
|
LET xorden = null
|
|
SELECT a.num_oc INTO xorden FROM prtb00012 a WHERE a.cotizacion_no = pdocumento_ref[idx] AND a.status_t IS NULL
|
|
# PARA REAPLICAR LOS AVANCES CUANDO ES POR DEVOLUCION DE DINERO DEL AVANCE ORIGINAL
|
|
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp,cod_emp_sec,fecha_orig,
|
|
fecha_ven,aplica_a,num_cheque,valor,valor_cheque,costo,monto_desc,us_crea,fech_crea,
|
|
banco,tipo_doc_aplica,documento_ref,num_oc,sucid)
|
|
values (p_companias.cod_comp,'AP',
|
|
arr_recibo[idx].aplica_a,recibo.tipo_cliente,recibo.sec_cliente,codigo_sucursal,
|
|
recibo.cod_emp_sec,recibo.fecha_orig,"010101",arr_recibo[idx].aplica_a,
|
|
recibo.num_doc,valor_aplicado,
|
|
valor_cheque1,recibo.num_doc,arr_recibo[idx].desc_p,SUSER_SNAME(),GETDATE(),
|
|
pdocumento_ref[idx],arr_recibo[idx].tipo_doc_aplica,pdocumento_ref[idx],xorden,codigo_sucursal)
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "OC" then
|
|
IF ARR_RECIBO[IDX].VALOR_PAG > 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
|
|
IF arr_recibo[idx].desc_p IS NULL THEN
|
|
LET arr_recibo[idx].desc_p =0
|
|
END IF
|
|
IF arr_recibo[idx].desc_p <0 THEN
|
|
LET arr_recibo[idx].desc_p =arr_recibo[idx].desc_p*-1
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
LET arr_recibo[1].aplica_a = xfactura
|
|
# LET monto_efectivo = xitbis
|
|
END IF
|
|
|
|
INSERT INTO cctb00001 (tipo_Doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,fecha_ven,
|
|
aplica_a,localidad_aplica_a, banco,num_cheque,valor,valor_cheque,
|
|
monto_desc,
|
|
us_crea,fech_crea,bodega,sucid,documento_ref,valor_efectivo,
|
|
valor_tarjeta,efectivo,tipo_doc_aplica)
|
|
VALUES (tipo_doc1,arr_recibo[idx].num_nc,
|
|
recibo.tipo_cliente,recibo.sec_cliente,recibo.cod_emp_sec,
|
|
recibo.fecha_orig,"010101",arr_recibo[idx].aplica_a,arr_recibo[idx].sucid,cod_mov_ref,
|
|
recibo.num_doc,arr_recibo[idx].valor_pag,valor_cheque1,arr_recibo[idx].desc_p,
|
|
usuarios,getdate(),"1",codigo_sucursal,pdocumento_ref[idx],
|
|
monto_efectivo,monto_cr,ncr,arr_recibo[idx].tipo_doc_aplica)
|
|
|
|
IF recibo.tipo_doc ='NC' THEN
|
|
LET recibo.num_doc=arr_recibo[idx].num_nc
|
|
END IF
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
IF recibo.tipo_doc <> 'NC' AND recibo.tipo_doc <>'ND' THEN
|
|
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
|
|
# IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,kncf,ditbis)
|
|
END IF
|
|
# END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
|
|
END IF
|
|
|
|
# IMPRESION e-NCF
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc='ND' THEN
|
|
|
|
LET r_filename = "ccprmt001encf.4rp"
|
|
LET r_output = "PDF"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END if
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b_encf TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
|
|
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
LET hsucid = arr_recibo[idx].sucid
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
|
|
OUTPUT TO REPORT cctb01b_encf(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario,codigodgii,ditbis)
|
|
END IF
|
|
|
|
END FOR
|
|
FINISH REPORT cctb01b_encf
|
|
END IF
|
|
END IF
|
|
#-----------------------------------------------------------------------------------------------------
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND KEY ("N") "aNular"
|
|
## AQUI SE REALIZA LA ANULACION DE UN REGISTRO
|
|
|
|
LET p_fechas = recibo.fecha_orig
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
UPDATE cctb00001 set status_t = "E", us_mod = usuarios, fech_mod = getdate()
|
|
WHERE tipo_doc IN ("AV","PG") and num_cheque = recibo.num_doc
|
|
ELSE
|
|
UPDATE cctb00001 set status_t = "E", us_mod = usuarios, fech_mod = getdate()
|
|
WHERE tipo_doc = recibo.tipo_doc and num_doc = recibo.num_doc
|
|
END IF
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
|
|
FOR idx = 1 to 3
|
|
LET arr_recibo[idx].aplica_a = null
|
|
LET arr_recibo[idx].valor_pen = null
|
|
LET arr_recibo[idx].valor_pag = null
|
|
|
|
DISPLAY arr_recibo[idx].aplica_a to s_recibo[idx].aplica_a
|
|
DISPLAY arr_recibo[idx].valor_pen to s_recibo[idx].valor_pen
|
|
DISPLAY arr_recibo[idx].valor_pag to s_recibo[idx].valor_pag
|
|
END FOR
|
|
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_aplicacion()
|
|
OPEN WINDOW busqueda1 AT 10,10 WITH FORM "ccfmwd001"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last)
|
|
|
|
DECLARE aplicar CURSOR FOR
|
|
SELECT a.aplica_a,SUM(a.valor+a.monto_desc) FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND a.status_t is null {and
|
|
a.fech_crea > datetime (1994-01-01 08:00) year to minute}
|
|
GROUP BY a.aplica_a HAVING SUM(a.valor+a.monto_desc) > 0 ORDER BY a.aplica_A
|
|
|
|
LET existe = "N"
|
|
LET idx = 1
|
|
FOREACH aplicar INTO aplica_wd[idx].aplica_a,aplica_wd[idx].pendiente
|
|
IF status = NOTFOUND THEN
|
|
LET existe = "N"
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
|
|
|
|
{
|
|
# Busca el tipo de movimiento
|
|
SELECT unique a.tipo_doc INTO tipo_doc2
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente and
|
|
a.sec_cliente = recibo.sec_cliente and a.tipo_doc != "PG" and
|
|
a.num_doc = aplica_wd[idx].aplica_a) and a.status_t is null
|
|
|
|
IF status < 0 THEN
|
|
|
|
LET tipo_doc2 = "SQ"
|
|
END IF
|
|
}
|
|
LET tipo_doc2 = "FT"
|
|
LET aplica_wd[idx].tipo_doc = tipo_doc2
|
|
|
|
# Busca Nota de credito
|
|
LET valor_ctrl1 = 0
|
|
IF tipo_doc2 = "AV" THEN
|
|
SELECT SUM(a.valor*-1) INTO valor_ctrl1 FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.num_doc = aplica_wd[idx].aplica_a AND a.tipo_doc = "AV" AND
|
|
a.num_doc != a.aplica_a) AND a.status_t IS NULL
|
|
|
|
IF valor_ctrl1 is null THEN
|
|
LET valor_ctrl1 = 0
|
|
END IF
|
|
LET aplica_wd[idx].pendiente = aplica_wd[idx].pendiente - valor_ctrl1
|
|
END IF
|
|
|
|
LET existe = "S"
|
|
IF aplica_wd[idx].pendiente != 0 THEN
|
|
LET idx = idx + 1
|
|
END IF
|
|
|
|
END FOREACH
|
|
|
|
IF existe = "N" and idx = 1 THEN
|
|
LET numero_msg = 127
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY aplica_wd TO consart.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET arr_recibo[curr].aplica_a = aplica_wd[curr1].aplica_a
|
|
LET arr_recibo[curr].valor_pen = aplica_wd[curr1].pendiente
|
|
LABEL salir:
|
|
CLOSE WINDOW busqueda1
|
|
END FUNCTION
|
|
|
|
FUNCTION repetir()
|
|
|
|
DEFINE ant_art RECORD
|
|
num_nc INTEGER,
|
|
aplica_a INTEGER,
|
|
valor_pag DECIMAL(12,2)
|
|
END RECORD
|
|
LET ant_art.num_nc = arr_recibo[curr].num_nc
|
|
LET ant_art.aplica_a = arr_recibo[curr].aplica_a
|
|
LET ant_art.valor_pag = arr_recibo[curr].valor_pag
|
|
|
|
FOR idx = 1 to arr_count()
|
|
IF idx != curr THEN
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL AND
|
|
arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
|
|
IF arr_recibo[idx].num_nc = ant_art.num_nc AND
|
|
arr_recibo[idx].aplica_a = ant_art.aplica_a AND
|
|
arr_recibo[idx].valor_pag = ant_art.valor_pag THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
ELSE
|
|
IF bandera != 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
FUNCTION consulta_clientes()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.nombre FROM nombre
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_c
|
|
END IF
|
|
|
|
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
|
|
"FROM vetb00004 a ",
|
|
"WHERE a.status_t is null AND ",criterio clipped," ORDER BY 1,2 "
|
|
|
|
PREPARE busca_clientes FROM selec2
|
|
DECLARE buscar_clientes CURSOR FOR busca_clientes
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_clientes INTO arr_clientes[idx].*
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
|
|
DISPLAY ARRAY arr_clientes TO s_clientes.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente
|
|
LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente
|
|
LET descrip1 = arr_clientes[curr1].nombre
|
|
|
|
LABEL salir_consulta_c:
|
|
CLOSE WINDOW busqueda
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION consulta_empleados()
|
|
OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.nom1_emp FROM descrip6
|
|
|
|
LET selec2 = "SELECT num_emp,a.nom1_emp,a.apell1_emp ",
|
|
"FROM adtb00003 a",
|
|
"WHERE a.status_t is null AND ",criterio clipped," ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_empleados FROM selec2
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
END IF
|
|
|
|
DECLARE buscar_empleados CURSOR FOR busca_empleados
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_empleados INTO arr_empleados[idx].*
|
|
IF status = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET empleados[idx].num_emp = arr_empleados[idx].num_emp
|
|
LET empleados[idx].descrip6 =
|
|
arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY empleados TO s_empleados.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET transportista.sec_transp = empleados[curr1].num_emp
|
|
LET descrip6 = empleados[curr1].descrip6
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda2
|
|
|
|
END FUNCTION
|
|
|
|
{
|
|
FUNCTION anular()
|
|
OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER,
|
|
COMMENT LINE LAST - 1,PROMPT LINE LAST,FORM LINE FIRST + 1)
|
|
|
|
|
|
INPUT BY NAME p_fact_no
|
|
|
|
AFTER FIELD p_fact_no
|
|
SELECT UNIQUE fecha_factura,orden,tipo_cliente,sec_cliente,neto
|
|
INTO fact_gral.fecha_factura,fact_gral.orden,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,fact_gral.total_fact
|
|
FROM vetb00002
|
|
WHERE factura = p_fact_no AND status_t IS NULL AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
SELECT a.nombre
|
|
INTO fact_gral.nombre
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.total_fact,fact_gral.nombre ATTRIBUTE(blue)
|
|
|
|
IF fact_gral.fecha_factura < "310394" THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
IF fact_gral.fecha_factura != TODAY THEN
|
|
ERROR "NO PUEDE ANULAR FACTURA QUE NO SEAN DEL DIA DE HOY"
|
|
RETURN
|
|
END IF
|
|
CALL prd()
|
|
IF bandera =1 THEN
|
|
SLEEP 2
|
|
EXIT INPUT
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
GOTO salir
|
|
END IF
|
|
|
|
# Este Int_flag es porque tuve que salir del input con el int_flag verdadero
|
|
# y asi poder salir del window sin problemas
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
GOTO salir
|
|
END IF
|
|
|
|
LABEL atras:
|
|
PROMPT "Esta seguro de Anular Esta Factura? (S/N)" FOR CHAR opt3
|
|
LET opt3 = UPSHIFT(opt3)
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
GOTO salir
|
|
END IF
|
|
|
|
IF opt3 != "S" AND opt3 != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO atras
|
|
END IF
|
|
|
|
IF opt3 = "N" THEN
|
|
GOTO salir
|
|
END IF
|
|
|
|
IF opt3 = "S" THEN
|
|
UPDATE vetb00002 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE iptb00006 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32) AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE vetb00003 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE aplica_a = p_fact_no AND tipo_doc = "PC"
|
|
|
|
# ANULACION DE LAS SERIES
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
ELSE
|
|
LET p_codigo = 31
|
|
END IF
|
|
UPDATE vetb00042 set status_t = "E", us_mod = usuarios, fech_mod = getdate()
|
|
WHERE factura = p_fact_no AND cod_mov = p_codigo
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
LABEL salir:
|
|
LET fact_gral.fecha_factura = TODAY
|
|
#CLOSE FORM vefmwd006
|
|
CLOSE WINDOW anula
|
|
END FUNCTION
|
|
|
|
REPORT cctb01(p_tipo_cliente,p_sec_cliente,p_fecha_orig,
|
|
p_num_doc,p_cod_emp_sec,p_tipo_doc,
|
|
p_cuenta_no,p_banco,p_aplica_a,
|
|
p_sucid,
|
|
p_monto_desc,p_valor,p_nombre,
|
|
p_nomb_emp,p_nombre_cta,p_comentario)
|
|
|
|
DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
p_sec_cliente LIKE cctb00001.sec_cliente,
|
|
p_fecha_orig LIKE cctb00001.fecha_orig,
|
|
p_num_doc LIKE cctb00001.num_doc,
|
|
p_cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
p_tipo_doc LIKE cctb00001.tipo_doc,
|
|
p_cuenta_no LIKE cctb00001.cuenta_no,
|
|
p_banco LIKE cctb00001.banco,
|
|
p_aplica_a LIKE cctb00001.aplica_a,
|
|
p_sucid SMALLINT,
|
|
p_monto_desc LIKE cctb00001.monto_desc,
|
|
p_valor LIKE cctb00001.valor,
|
|
p_nomb_emp CHAR(40),
|
|
p_nombre_cta CHAR(30),
|
|
p_cod_cia LIKE cctb00001.cod_cia,
|
|
|
|
pcodigodgii VARCHAR(19),
|
|
pncf INT,
|
|
ncf_factura VARCHAR(19),
|
|
p_localidad VARCHAR(30),
|
|
articulos RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DEC(12,5),
|
|
descrip_Esp VARCHAR(70)
|
|
|
|
END RECORD
|
|
|
|
define
|
|
hora char(5),
|
|
l smallint,
|
|
p_nombre LIKE vetb00004.nombre,
|
|
p_comentario CHAR(120) #LIKE cctb00011.comentario
|
|
|
|
|
|
|
|
output
|
|
top margin 0
|
|
bottom margin 5
|
|
left margin 0
|
|
|
|
ORDER BY p_sec_cliente,p_num_doc
|
|
|
|
format
|
|
page header
|
|
LET hora = time
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
LET lj = (110 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
|
|
PRINT comp_on
|
|
print column 2, "ccprmt001",
|
|
column 15, negrilla_on,
|
|
column lj, p_companias.nombre,
|
|
column 65, negrillas_of,
|
|
column 90, "Pag. ", pageno using "###"
|
|
print column lj, "RNC: ",p_companias.rnc
|
|
LET lj = (110 - LENGTH(p_companias.direccion CLIPPED))/2
|
|
print column 1, negrilla_on,
|
|
column lj, p_companias.direccion,
|
|
column 65, negrillas_of #,
|
|
# column 90, today using "dd/mm/yyyy"
|
|
LET lj = (110 - LENGTH(p_nombre_tipo))/2
|
|
print column 1, negrilla_on,
|
|
column lj, p_nombre_tipo CLIPPED,
|
|
column 65, negrillas_of,
|
|
column 93, hora
|
|
|
|
SKIP 3 LINES
|
|
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S"
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
PRINT COLUMN 5, "LOCALIDAD :",nombre_sucursal
|
|
PRINT COLUMN 5, " NUMERO DOCUM. : ", p_num_doc using "########"
|
|
PRINT COLUMN 5, " CUENTA : ",p_cuenta_no CLIPPED," - ",p_nombre_cta CLIPPED,
|
|
COLUMN 70," DEPOSITO : ", p_banco
|
|
PRINT COLUMN 5, " CLIENTE : ",p_tipo_cliente,"-",p_sec_cliente USING "<<<<<"," - ",
|
|
p_nombre CLIPPED,
|
|
COLUMN 70," FECHA : ",p_fecha_orig USING "dd/mm/yyyy"
|
|
PRINT COLUMN 5, "DIRECCION : ",pdireccion CLIPPED
|
|
|
|
PRINT COLUMN 5, " VENDEDOR : ",p_cod_emp_sec," - ",p_nomb_emp CLIPPED
|
|
PRINT COLUMN 5, " TIPO PAGO : ",p_tipo_doc CLIPPED," - ",p_nombre_tipo CLIPPED
|
|
PRINT COLUMN 5, " NCF : ",codigodgii CLIPPED,kncf USING "&&&&&&&&"
|
|
IF fecha_vencimiento > '05/01/2018' THEN
|
|
PRINT COLUMN 5, " Valido hasta : ",fecha_vencimiento USING "dd/mm/yyyy"
|
|
END IF
|
|
|
|
#PRINT doce
|
|
|
|
IF p_tipo_Doc = 'NC' OR p_tipo_doc = 'ND' THEN
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S"
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
END IF
|
|
PRINT p_cod_cia USING "<<<<"
|
|
print column 1,
|
|
"===============================================================",
|
|
"======================================================"
|
|
print column 5, "Aplica Factura",
|
|
COLUMN 20, "Localidad ",
|
|
column 43, "Descuento",
|
|
column 64, "Valor",
|
|
8 spaces, "ITBIS",
|
|
column 90, "TOTAL",
|
|
11 spaces, "NCF APLICADO"
|
|
|
|
# print column 37, " S/ITBIS"
|
|
|
|
print column 1,
|
|
"===============================================================",
|
|
"======================================================"
|
|
|
|
SKIP 1 LINE
|
|
|
|
on every ROW
|
|
|
|
IF p_tipo_Doc = "NC" OR p_tipo_doc = "ND" THEN
|
|
|
|
IF ncr = "S" THEN
|
|
LET ditbis =p_valor * (pitbis/100)
|
|
ELSE
|
|
LET ditbis = 0
|
|
END IF
|
|
IF chr_impresion <> "SI" THEN
|
|
DISPLAY "esto ",chr_impresion," ",ditbis
|
|
UPDATE cctb00001 SET valor_cheque = p_valor,
|
|
valor_efectivo = ditbis,
|
|
valor = p_valor+ditbis,
|
|
banco = cod_mov_ref,
|
|
num_cheque = num_doc_ref,
|
|
efectivo = ncr
|
|
WHERE tipo_doc = p_tipo_Doc AND
|
|
num_doc = p_num_doc AND
|
|
aplica_a = p_aplica_a AND
|
|
tipo_cliente =p_tipo_cliente AND
|
|
sec_cliente = p_sec_cliente
|
|
END IF
|
|
SELECT a.codigo_dgii,a.ncf INTO pcodigodgii,pncf FROM vetb00072 a
|
|
WHERE a.tipo_Doc IN ('FE','FT') AND
|
|
a.documento = p_aplica_a AND
|
|
a.sucid = p_sucid
|
|
|
|
LET ncf_factura = pcodigodgii CLIPPED,pncf USING "&&&&&&&&"
|
|
END IF
|
|
IF p_tipo_doc = 'RC' THEN
|
|
LET ditbis = 0
|
|
END IF
|
|
SELECT a.sucnombre INTO p_localidad FROM sucursales a
|
|
WHERE a.sucid = p_sucid
|
|
print column 5, p_aplica_a USING "#######",
|
|
COLUMN 20, p_localidad,
|
|
column 43, p_monto_desc USING "#,###,###.##",
|
|
column 57, p_valor USING "##,###,###.##",
|
|
column 64, ditbis USING "##,###,###.##",
|
|
column 83, p_valor + ditbis USING "###,###,###.##",
|
|
2 SPACES, ncf_factura
|
|
let l = 12
|
|
|
|
|
|
AFTER GROUP OF p_sec_cliente
|
|
|
|
print column 1,
|
|
"===============================================================",
|
|
"======================================================"
|
|
IF p_tipo_doc = "NC" or p_tipo_doc = "ND" THEN
|
|
IF ncr = "S" THEN
|
|
LET ditbis =GROUP SUM(p_valor)* (pitbis/100)
|
|
ELSE
|
|
LET ditbis = 0
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN 5, "Total----> ",
|
|
COLUMN 43, GROUP SUM(p_monto_desc) USING "#,###,###.##",
|
|
COLUMN 57, GROUP SUM(p_valor) USING "##,###,###.##",
|
|
|
|
1 spaces, ditbis USING "##,###,###.##",
|
|
COLUMN 84, GROUP SUM(p_valor)+ ditbis USING "##,###,###.##"
|
|
|
|
|
|
SKIP 1 LINE
|
|
IF p_tipo_doc = "NC" THEN
|
|
|
|
print column 1,
|
|
"===============================================================",
|
|
"======================================================"
|
|
PRINT COLUMN 5, "PRODUCTO(S)",
|
|
COLUMN 109, "CANTIDAD"
|
|
|
|
print column 1,
|
|
"===============================================================",
|
|
"======================================================"
|
|
DECLARE busca_nc CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2,a.descrip_esp FROM iptb00002 a,iptb00006 b
|
|
WHERE b.num_doc = num_doc_ref AND b.cod_mov = cod_mov_ref AND
|
|
a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec
|
|
|
|
FOREACH busca_nc INTO articulos.*
|
|
PRINT 5, articulos.cod_n USING "&&&&","-",
|
|
articulos.cod_grupo USING "&&&&","-",
|
|
articulos.cod_tipo USING "&&&&","-",
|
|
articulos.cod_sec USING "&&&&"," ",
|
|
articulos.descrip_Esp,
|
|
articulos.cantidad USING "##,###,###.####"
|
|
END FOREACH
|
|
END IF
|
|
|
|
on last row
|
|
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 2, "COMENTARIOS : "
|
|
PRINT COLUMN 5, p_comentario[1,60] CLIPPED
|
|
PRINT COLUMN 5, p_comentario[61,120] CLIPPED
|
|
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 10, "_________________________________________",
|
|
COLUMN 60, "_________________________________________"
|
|
PRINT COLUMN 10, " Preparado Por ",
|
|
COLUMN 60, " Autorizado Por "
|
|
|
|
print comp_off,normal
|
|
END REPORT }
|
|
FUNCTION aplica_mas_antiguas()
|
|
DEFINE balance,valor_aplicando DEC(12,2),
|
|
j,psucid int,
|
|
pventas char(1)
|
|
DECLARE busca_antiguas CURSOR FOR
|
|
SELECT a.aplica_a,SUM(a.valor+a.monto_desc),b.ventas,b.sucid,CONVERT(CHAR(10),b.fecha_factura,103)
|
|
FROM cctb00001 a,vetb00002 b
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente) AND
|
|
(a.tipo_doc NOT IN ('AV','AP') AND a.aplica_a=b.factura) AND a.status_t is null
|
|
GROUP BY a.aplica_a,b.fecha_factura,b.ventas,b.sucid
|
|
HAVING SUM(a.valor+a.monto_desc) > 0
|
|
ORDER BY b.fecha_factura
|
|
LET idx = 1
|
|
LET j = 1
|
|
LET valor_aplicando=0
|
|
LET balance=valor_ctrl
|
|
FOREACH busca_antiguas INTO aplica_wd[idx].aplica_a,aplica_wd[idx].pendiente,pventas,psucid
|
|
LET balance = balance -aplica_wd[idx].pendiente
|
|
|
|
IF balance < 0 THEN
|
|
IF valor_aplicando < valor_ctrl THEN
|
|
|
|
IF pventas = '1' THEN
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FT'
|
|
LET arr_recibo[j].sucid=psucid
|
|
ELSE
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FE'
|
|
LET arr_recibo[j].sucid=psucid
|
|
END IF
|
|
|
|
LET arr_recibo[j].aplica_a = aplica_wd[idx].aplica_a
|
|
LET arr_recibo[j].valor_pen=aplica_wd[idx].pendiente
|
|
LET arr_recibo[j].valor_pag =valor_ctrl-valor_aplicando
|
|
DISPLAY "DATA2 ", arr_recibo[j].aplica_a," V ",arr_recibo[j].valor_pag
|
|
END IF
|
|
EXIT FOREACH
|
|
ELSE
|
|
IF pventas = '1' THEN
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FT'
|
|
LET arr_recibo[j].sucid=psucid
|
|
ELSE
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FE'
|
|
LET arr_recibo[j].sucid=psucid
|
|
END IF
|
|
LET arr_recibo[j].aplica_a = aplica_wd[idx].aplica_a
|
|
LET arr_recibo[j].valor_pen =aplica_wd[idx].pendiente
|
|
IF balance > aplica_wd[idx].pendiente THEN
|
|
LET valor_aplicando = valor_aplicando + aplica_wd[idx].pendiente
|
|
LET arr_recibo[j].valor_pag =aplica_wd[idx].pendiente
|
|
END IF
|
|
DISPLAY "DATA ", arr_recibo[j].aplica_a," V ",arr_recibo[j].valor_pag
|
|
LET j = j +1
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END FUNCTION
|
|
FUNCTION detallecxc()
|
|
DEFINE k INT
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.sucid,a.tipo_doc_aplica,a.aplica_a,a.valor,a.monto_desc,a.valor ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ((a.tipo_doc = ? OR a.tipo_doc = 'AV') AND ",
|
|
" a.num_cheque = ?) AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY 2,1 "
|
|
ELSE
|
|
IF recibo.tipo_doc = "NC" OR recibo.tipo_doc = "ND" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.sucid,a.tipo_doc_aplica,a.aplica_a,a.valor,isnull(a.monto_desc,0),
|
|
a.valor,isnull(a.valor_efectivo,0),b.prima_us,b.orden,a.localidad_aplica_a FROM cctb00001 a INNER JOIN vetb00002 b
|
|
ON b.factura = a.aplica_a AND b.sucid = a.localidad_aplica_a AND a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente ",
|
|
"WHERE (a.tipo_doc=? AND a.num_doc=?)AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY 2,1 "
|
|
|
|
ELSE
|
|
LET selec =
|
|
"SELECT num_doc,sucid,tipo_doc_aplica,aplica_a,valor,monto_desc,valor,isnull(valor_efectivo,0)
|
|
FROM cctb00001 ",
|
|
"WHERE (tipo_doc=? AND num_cheque=?)AND (tipo_cliente = ? AND ",
|
|
" sec_cliente = ?) ORDER BY 2,1 "
|
|
|
|
END IF
|
|
END IF
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE buscar1 CURSOR FOR comando
|
|
OPEN buscar1 USING recibo.tipo_doc,recibo.num_doc,recibo.tipo_cliente,
|
|
recibo.sec_cliente
|
|
LET k = 1
|
|
WHILE STATUS != NOTFOUND
|
|
|
|
FETCH buscar1 INTO arr_recibo[k].*,xitbis,tasa,xorden,hsucid
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
LET xfactura = arr_recibo[k].aplica_a
|
|
SELECT a.fecha_factura INTO ffecha FROM vetb00002 a
|
|
WHERE a.factura = xfactura AND a.sucid = hsucid
|
|
|
|
LET valor_ctrl = arr_recibo[k].valor_pag
|
|
CALL llenaarticulos()
|
|
|
|
IF arr_recibo[k].num_nc = recibo.num_doc THEN
|
|
LET arr_recibo[k].num_nc = null
|
|
END IF
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
|
|
LET arr_recibo[k].valor_pen = arr_recibo[k].valor_pen * -1
|
|
ELSE
|
|
IF arr_recibo[k].valor_pen < 0 THEN
|
|
LET arr_recibo[k].valor_pen = arr_recibo[k].valor_pen *-1
|
|
END IF
|
|
END IF
|
|
LET arr_recibo[k].valor_pag = arr_recibo[k].valor_pen
|
|
LET arr_recibo[k].valor_pen = 0
|
|
LET arr_recibo[k].desc_p = arr_recibo[k].desc_p * -1
|
|
|
|
SELECT sum(valor) INTO valor2 FROM cctb00001
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente and
|
|
aplica_a = arr_recibo[k].aplica_a and
|
|
status_t is null AND num_cheque = recibo.num_doc
|
|
|
|
LET arr_recibo[k].valor_pen = valor2
|
|
#ORIENTACION DOCUMENTO
|
|
IF recibo.tipo_doc = "OD" THEN
|
|
IF arr_recibo[k].valor_pag < 0 THEN
|
|
LET arr_recibo[k].valor_pag =arr_recibo[k].valor_pag *-1
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "OC" THEN
|
|
IF arr_recibo[k].valor_pag < 0 THEN
|
|
LET arr_recibo[k].valor_pag =arr_recibo[k].valor_pag *-1
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "DV" THEN
|
|
IF arr_recibo[k].valor_pag < 0 THEN
|
|
LET arr_recibo[k].valor_pag =arr_recibo[k].valor_pag *-1
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = "OD" then
|
|
IF ARR_RECIBO[k].VALOR_PAG < 0 THEN
|
|
LET arr_recibo[k].valor_pag = arr_recibo[k].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = 'NC' OR recibo.tipo_doc = 'ND' THEN
|
|
LET arr_recibo[k].valor_pag = valor_ctrl *-1
|
|
END IF
|
|
|
|
LET k = k + 1
|
|
END WHILE
|
|
|
|
|
|
END FUNCTION
|
|
FUNCTION llenaarticulos()
|
|
DEFINE i INT,
|
|
tvalor_bruto,tdescuento,tsub_total,titbis,tneto DEC(16,2)
|
|
DECLARE buscarticulos CURSOR FOR
|
|
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.precio,a.porc_desc,a.descuento,a.itbis,a.descripcion
|
|
FROM cctb00010 a
|
|
WHERE a.num_doc = recibo.num_doc AND a.tipo_doc = recibo.tipo_doc
|
|
|
|
LET i = 1
|
|
LET xvalor_bruto = 0
|
|
LET xsub_total =0
|
|
LET xdescuento =0
|
|
LET xitbis =0
|
|
LET xneto =0
|
|
|
|
FOREACH buscarticulos INTO arr_articulos[i].cod_n,arr_articulos[i].cod_grupo,arr_articulos[i].cod_tipo,
|
|
arr_articulos[i].cod_sec,arr_articulos[i].cantidad_2,arr_articulos[i].precio,
|
|
arr_articulos[i].por_desc,arr_articulos[i].valor_desc,arr_articulos[i].valor_itbis,
|
|
arr_articulos[i].descrip_Esp
|
|
|
|
IF arr_articulos[i].cod_sec IS NOT NULL THEN
|
|
IF reimprime = "SI" THEN
|
|
LET xvalor_bruto = xvalor_bruto + (arr_articulos[i].cantidad_2 * arr_articulos[i].precio)
|
|
LET xdescuento = xdescuento + arr_articulos[i].valor_desc
|
|
|
|
|
|
LET xitbis = xitbis + arr_articulos[i].valor_itbis
|
|
END IF
|
|
END IF
|
|
LET i = i +1
|
|
END FOREACH
|
|
IF reimprime <> "SI" THEN
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
|
|
LET xitbis = titbis
|
|
LET xsub_total = tsub_total
|
|
#DISPLAY "datos ",xvalor_bruto, " xdes ",xdescuento," xsub ",xsub_total," xitbis ",xitbis
|
|
LET xneto = xsub_total + xitbis
|
|
LET xvalor_bruto = tvalor_bruto
|
|
ELSE
|
|
LET xsub_total = xsub_total + (xvalor_bruto - xdescuento)
|
|
LET xneto = valor_ctrl * -1
|
|
END IF
|
|
DISPLAY "VALORES: ",xvalor_bruto," neto ",xsub_total
|
|
DISPLAY BY NAME xfactura
|
|
END FUNCTION
|
|
REPORT cctb01b(p_tipo_cliente,p_sec_cliente,p_fecha_orig,
|
|
p_num_doc,p_cod_emp_sec,p_tipo_doc,
|
|
p_cuenta_no,p_banco,p_aplica_a,
|
|
p_monto_desc,p_valor,p_nombre,
|
|
p_nomb_emp,p_nombre_cta,p_comentario,pcodigodgii,pncf,monto_itbis)
|
|
|
|
DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
p_sec_cliente LIKE cctb00001.sec_cliente,
|
|
p_fecha_orig LIKE cctb00001.fecha_orig,
|
|
p_num_doc LIKE cctb00001.num_doc,
|
|
p_cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
p_tipo_doc LIKE cctb00001.tipo_doc,
|
|
p_cuenta_no LIKE cctb00001.cuenta_no,
|
|
p_banco LIKE cctb00001.banco,
|
|
p_aplica_a LIKE cctb00001.aplica_a,
|
|
p_monto_desc LIKE cctb00001.monto_desc,
|
|
p_valor LIKE cctb00001.valor,
|
|
p_nomb_emp CHAR(40),
|
|
p_nombre_cta CHAR(30),
|
|
pitbis,monto_itbis DEC(12,2),
|
|
labelcliente,sfecha STRING,
|
|
ncf_factura VARCHAR(19),
|
|
pcodigodgii,fcodigodgii VARCHAR(19),
|
|
pncf,fncf INT,
|
|
encabezado VARCHAR(2),
|
|
articulos RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DEC(12,5),
|
|
descrip_Esp VARCHAR(70)
|
|
|
|
END RECORD,
|
|
arr_articulos DYNAMIC ARRAY OF RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DEC(12,5),
|
|
descrip_Esp VARCHAR(70)
|
|
END RECORD,
|
|
vimagen BOOLEAN,
|
|
imagen BYTE,
|
|
nombre_file,filedestino STRING
|
|
|
|
define
|
|
hora char(5),
|
|
|
|
p_nombre LIKE vetb00004.nombre,
|
|
p_comentario CHAR(120), #LIKE cctb00011.comentario,
|
|
descuento,dtotal_monto,total_monto,ditbis DEC(12,2),
|
|
tipodocumento1 VARCHAR(50)
|
|
|
|
|
|
ORDER BY p_sec_cliente,p_num_doc
|
|
|
|
format
|
|
FIRST page header
|
|
LET hora = TIME
|
|
LET total_monto =0
|
|
LET encabezado ='NO'
|
|
IF p_tipo_doc = 'PG' OR p_tipo_doc = 'RC' THEN
|
|
LET tipodocumento1 = 'RECIBO DE INGRESOS'
|
|
LET labelcliente = "HEMOS RECIBIDO DE "
|
|
ELSE
|
|
LET tipodocumento1 = 'DOCUMENTO CUENTAS POR COBRAR'
|
|
LET labelcliente = "CLIENTE: ",p_tipo_cliente USING "&&","-",p_sec_cliente USING "&&&&&&&"," "
|
|
END IF
|
|
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S"
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
IF fecha_vencimiento > '05/01/2018' THEN
|
|
LET sfecha = 'SI'
|
|
ELSE
|
|
LET sfecha = 'NO'
|
|
END IF
|
|
|
|
PRINTX nombre_sucursal,p_cuenta_no,p_nombre_cta, p_banco,p_nombre,p_tipo_cliente, p_sec_cliente,
|
|
p_cod_emp_sec,p_nomb_emp,p_tipo_doc, p_nombre_tipo,tipodocumento1,hora,p_companias.nombre,
|
|
p_num_doc,p_companias.rnc,p_companias.direccion,p_fecha_orig,p_companias.telefono,
|
|
p_companias.fax,fecha_proximo,labelcliente,pcodigodgii,pncf,
|
|
recibo.comentario,pdireccion,condicionpago
|
|
|
|
|
|
on every ROW
|
|
|
|
IF p_tipo_Doc = "NC" OR p_tipo_doc = "ND" THEN
|
|
|
|
# IF ncr = "S" THEN
|
|
# LET ditbis =p_valor * (pitbis/100)
|
|
# ELSE
|
|
# LET ditbis = 0
|
|
# END IF
|
|
|
|
SELECT a.codigo_dgii,a.ncf INTO fcodigodgii,fncf FROM vetb00072 a
|
|
WHERE a.tipo_Doc IN ('FE','FT') AND
|
|
a.documento = p_aplica_a AND
|
|
a.sucid = hsucid
|
|
|
|
LET ncf_factura = fcodigodgii CLIPPED,fncf USING "&&&&&&&&"
|
|
END IF
|
|
IF p_tipo_doc <> "NC" THEN
|
|
LET encabezado = 'NO'
|
|
END IF
|
|
|
|
IF p_tipo_doc = "NC" THEN
|
|
|
|
|
|
DECLARE busca_nc1 CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad_2,a.descrip_esp FROM iptb00002 a,iptb00006 b
|
|
WHERE b.num_doc = num_doc_ref AND b.cod_mov = cod_mov_ref AND
|
|
a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec
|
|
LET idx = 1
|
|
FOREACH busca_nc1 INTO arr_articulos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
IF monto_itbis IS NULL THEN
|
|
LET monto_itbis =0
|
|
END IF
|
|
IF monto_itbis < 0 THEN
|
|
LET monto_itbis =monto_itbis *-1
|
|
END IF
|
|
IF p_monto_Desc < 0 THEN
|
|
LET p_monto_Desc = p_monto_Desc*-1
|
|
END IF
|
|
DISPLAY "valores ",p_valor," ",monto_itbis," ",p_monto_desc
|
|
IF reimprime = "NO" THEN
|
|
LET p_valor = p_valor - monto_itbis
|
|
LET dtotal_monto = p_valor+monto_itbis-p_monto_desc
|
|
ELSE
|
|
LET p_valor = p_valor - monto_itbis
|
|
LET dtotal_monto = p_valor+monto_itbis
|
|
END IF
|
|
|
|
LET dtotal_monto = p_valor+monto_itbis-p_monto_desc
|
|
IF arr_articulos.getLength() > 1 THEN
|
|
LET encabezado='SI'
|
|
FOR idx = 1 TO arr_articulos.getLength()
|
|
IF arr_articulos[idx].descrip_Esp IS NOT NULL THEN
|
|
LET articulos.cod_n = arr_articulos[idx].cod_n
|
|
LET articulos.cod_grupo = arr_articulos[idx].cod_grupo
|
|
LET articulos.cod_tipo = arr_articulos[idx].cod_tipo
|
|
LET articulos.cod_sec = arr_articulos[idx].cod_sec
|
|
LET articulos.descrip_Esp = arr_articulos[idx].descrip_Esp
|
|
LET articulos.cantidad = arr_articulos[idx].cantidad
|
|
|
|
PRINTX articulos.cod_n,articulos.cod_grupo,articulos.cod_tipo, articulos.cod_sec,
|
|
articulos.descrip_Esp,articulos.cantidad
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
ELSE
|
|
LET encabezado = "NO"
|
|
LET articulos.cod_n = 0
|
|
LET articulos.cod_grupo = 0
|
|
LET articulos.cod_tipo = 0
|
|
LET articulos.cod_sec = 0
|
|
LET articulos.descrip_Esp = "NO TIENE"
|
|
LET articulos.cantidad = 0
|
|
|
|
END IF
|
|
|
|
printx p_aplica_a, p_monto_desc, p_valor, monto_itbis ,ncf_factura,encabezado,dtotal_monto
|
|
|
|
LET total_monto = total_monto + dtotal_monto
|
|
|
|
AFTER GROUP OF p_sec_cliente
|
|
#IMAGEN
|
|
IF p_tipo_doc = "NC" THEN
|
|
LET vimagen=TRUE
|
|
LOCATE imagen IN MEMORY
|
|
|
|
SELECT a.firmafactura,a.nombre_file_firma INTO imagen,nombre_file FROM seg0001 a WHERE a.usuario = usuarios
|
|
|
|
# LET filedestino = 'E:\\MARMOTECH\\test\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
|
|
LET filedestino = '.\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
|
|
IF imagen IS NULL THEN
|
|
LET vimagen=FALSE
|
|
LET filedestino = '.\\IMAGENES\\tmp\\tmpdefault.png'
|
|
ELSE
|
|
CALL imagen.writeFile(filedestino)
|
|
CALL comprimeImagen(filedestino,' -resize 200x200 ')
|
|
CALL imagen.readFile(filedestino)
|
|
END IF
|
|
ELSE
|
|
LET vimagen=FALSE
|
|
END IF
|
|
# BUSCA TIPO DE VENTAS
|
|
SELECT b.simbolo,b.descripcion_moneda INTO psimbolo,pmoneda FROM vetb00061 a,vetb00060 b
|
|
WHERE a.ventas = b.ventas AND
|
|
a.tipo_cliente = p_tipo_cliente
|
|
|
|
|
|
|
|
LET descuento = GROUP SUM(p_monto_desc)
|
|
IF p_tipo_doc = 'NC' THEN
|
|
LET valor_orig = total_monto
|
|
ELSE
|
|
LET total_monto = GROUP SUM(p_valor)
|
|
LET valor_orig = total_monto
|
|
END IF
|
|
LET valor_letras = NULL
|
|
CALL convierte()
|
|
|
|
PRINTX descuento,total_monto,valor_letras,psimbolo,vimagen,imagen
|
|
|
|
on last row
|
|
|
|
PRINTX p_comentario
|
|
CALL arr_articulos.clear()
|
|
|
|
END REPORT
|
|
|
|
|
|
REPORT cctb01b_encf(p_tipo_cliente,p_sec_cliente,p_fecha_orig,
|
|
p_num_doc,p_cod_emp_sec,p_tipo_doc,
|
|
p_cuenta_no,p_banco,p_aplica_a,
|
|
p_monto_desc,p_valor,p_nombre,
|
|
p_nomb_emp,p_nombre_cta,p_comentario,pcodigodgii,monto_itbis)
|
|
|
|
DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
p_sec_cliente LIKE cctb00001.sec_cliente,
|
|
p_fecha_orig LIKE cctb00001.fecha_orig,
|
|
p_num_doc LIKE cctb00001.num_doc,
|
|
p_cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
p_tipo_doc LIKE cctb00001.tipo_doc,
|
|
p_cuenta_no LIKE cctb00001.cuenta_no,
|
|
p_banco LIKE cctb00001.banco,
|
|
p_aplica_a LIKE cctb00001.aplica_a,
|
|
p_monto_desc LIKE cctb00001.monto_desc,
|
|
p_valor LIKE cctb00001.valor,
|
|
p_nomb_emp CHAR(40),
|
|
p_nombre_cta CHAR(30),
|
|
pitbis,monto_itbis DEC(12,2),
|
|
labelcliente,sfecha STRING,
|
|
ncf_factura VARCHAR(19),
|
|
pcodigodgii,fcodigodgii VARCHAR(19),
|
|
pncf INT,
|
|
encabezado VARCHAR(2),
|
|
articulos RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DEC(12,5),
|
|
descrip_Esp VARCHAR(70),
|
|
unidad_med VARCHAR(4),
|
|
precio,por_desc,valor_desc,valor_itbis,valor DEC(12,2)
|
|
|
|
END RECORD,
|
|
vimagen BOOLEAN,
|
|
|
|
nombre_file,filedestino,ch_fecha,dataqrcode,chfechafirmadigital,respuesta STRING,
|
|
|
|
buf base.StringBuffer,
|
|
rnccomprador VARCHAR(11)
|
|
|
|
define
|
|
hora char(5),
|
|
|
|
p_nombre LIKE vetb00004.nombre,
|
|
p_comentario CHAR(120), #LIKE cctb00011.comentario,
|
|
descuento,dtotal_monto,total_monto,ditbis DEC(12,2),
|
|
tipodocumento1 VARCHAR(50),
|
|
ch_ncf VARCHAR(50),
|
|
mostrarQR BOOLEAN,
|
|
rhash VARCHAR(50),
|
|
chbruto,chdescuento,chsubtotal,chitbis,chneto VARCHAR(100)
|
|
|
|
|
|
ORDER BY p_num_doc
|
|
|
|
format
|
|
FIRST page header
|
|
LET hora = TIME
|
|
|
|
LET total_monto =0
|
|
|
|
LET encabezado ='NO'
|
|
IF p_tipo_doc = 'PG' OR p_tipo_doc = 'RC' THEN
|
|
LET tipodocumento1 = 'RECIBO DE INGRESOS'
|
|
LET labelcliente = "HEMOS RECIBIDO DE "
|
|
ELSE
|
|
LET tipodocumento1 = 'DOCUMENTO CUENTAS POR COBRAR'
|
|
LET labelcliente = "CLIENTE: ",p_tipo_cliente USING "&&","-",p_sec_cliente USING "&&&&&&&"," "
|
|
END IF
|
|
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
DISPLAY "xfactura ",xfactura," SCID ",hsucid
|
|
SELECT a.ncf,a.prima_us,b.codigo_dgii,c.num_rnc,d.simbolo,a.ventas,c.zona_postal,b.descrip
|
|
INTO fcodigodgii,tasa,documento_encabezado.tipoPago,rnccomprador,simbolo,xventas,tipodocumento,condicionpago
|
|
FROM vetb00002 a,vetb00012 b,vetb00004 c,vetb00061 d
|
|
WHERE
|
|
a.factura = xfactura AND
|
|
a.sucid = hsucid AND
|
|
a.tipo_cliente = c.tipo_cliente AND
|
|
a.sec_cliente = c.sec_cliente AND
|
|
a.ventas = d.ventas AND
|
|
a.cond_pago = b.cond_pago
|
|
|
|
LET ncf_factura = fcodigodgii CLIPPED
|
|
LET documento_encabezado.tipoPago ='1'
|
|
DISPLAY "tipodoc ",tipodocumento
|
|
IF tipodocumento = '3' THEN
|
|
LET documento_encabezado.IdentificadorExtranjero=rnccomprador clipped
|
|
|
|
END IF
|
|
{ SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S"}
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
IF fecha_vencimiento > '05/01/2018' THEN
|
|
LET sfecha = 'SI'
|
|
ELSE
|
|
LET sfecha = 'NO'
|
|
END IF
|
|
|
|
SELECT DISTINCT a.ncf,a.fechafirmadigital,a.hash
|
|
INTO ch_ncf,xfechafirmadigital,xhash
|
|
FROM cctb00001 a WHERE a.num_doc = recibo.num_doc AND a.tipo_Doc =recibo.tipo_doc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND a.sec_cliente = recibo.sec_cliente
|
|
|
|
# DISPLAY "info: ",recibo.num_doc," tipo ",recibo.tipo_doc," ff ",xfechaFirmadigital
|
|
SELECT a.tipo_ncf INTO descripcion FROM vetb00071 a WHERE a.tipo_Doc = p_tipo_doc AND a.codigo_dgii = pcodigodgii
|
|
|
|
IF reimprime <> "SI" THEN
|
|
IF ch_ncf NOT MATCHES 'B*' OR ch_ncf IS NULL THEN
|
|
LET mostrarQR = TRUE
|
|
LET ch_ncf = "E", codigodgii CLIPPED, kncf USING "&&&&&&&&&&"
|
|
LET ch_ncf = 'e-NCF:',ch_ncf CLIPPED
|
|
ELSE
|
|
IF ch_ncf MATCHES 'B*' THEN
|
|
LET mostrarQR = FALSE
|
|
LET ch_ncf = 'NCF:',ch_ncf CLIPPED
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
LET mostrarQR = TRUE
|
|
LET qncf = ch_ncf CLIPPED
|
|
LET ch_ncf = 'e-NCF:',ch_ncf CLIPPED
|
|
|
|
SELECT a.fecha_vencimiento INTO fecha_vencimiento
|
|
FROM vetb00071 a WHERE a.tipo_Doc = p_tipo_doc AND a.codigo_dgii = pcodigodgii
|
|
|
|
CALL sus_caracter(xhash) RETURNING rhash
|
|
END IF
|
|
|
|
LET ch_fecha = fecha_vencimiento USING "dd-mm-yyyy"
|
|
IF ch_fecha IS NOT NULL THEN
|
|
LET ncffechaVencimiento = TRUE
|
|
LET documento_encabezado.FechaVencimientoSecuencia = ch_fecha
|
|
ELSE
|
|
LET ncffechaVencimiento = FALSE
|
|
END IF
|
|
# LET qncf = "E", codigodgii CLIPPED, kncf USING "&&&&&&&&&&"
|
|
------->Documento Encabezado OBLIGATORIO
|
|
LET documento_encabezado.tipoEcf = codigodgii CLIPPED
|
|
|
|
LET documento_encabezado.rncEmisor = p_companias.rnc CLIPPED
|
|
LET documento_encabezado.razonSocialEmisor = p_companias.nombre CLIPPED
|
|
LET documento_encabezado.direccionEmisor = p_companias.direccion CLIPPED
|
|
LET documento_encabezado.Municipio = id_municipio_dgii USING "&&&&&&"
|
|
LET documento_encabezado.Provincia =id_provincia_dgii USING "&&&&&&"
|
|
|
|
SELECT a.titulo INTO desc_modificacion FROM cctb00037 a WHERE a.idtipo = idtipo
|
|
|
|
# CALL sus_caracter(p_nombre) RETURNING p_nombre
|
|
SELECT a.sucid,a.sucnombre INTO codigo_sucursal,nombre_sucursal
|
|
FROM sucursales a,seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
DISPLAY "surcural ",nombre_sucursal
|
|
PRINTX nombre_sucursal,p_cuenta_no,p_nombre_cta, p_banco,p_nombre,p_tipo_cliente, p_sec_cliente,
|
|
p_cod_emp_sec,p_nomb_emp,p_tipo_doc, p_nombre_tipo,tipodocumento,hora,p_companias.nombre,
|
|
p_num_doc,p_companias.rnc,p_companias.direccion,p_fecha_orig,p_companias.telefono,
|
|
p_companias.fax,fecha_proximo,labelcliente,pcodigodgii,pncf,
|
|
recibo.comentario,pdireccion,direccion_sucursal,rnccomprador,descripcion,ch_fecha,ch_ncf,mostrarQR,
|
|
desc_modificacion,tasa,num_doc_ref,xorden,xfactura,ncffechaVencimiento,rnc
|
|
|
|
|
|
on every ROW
|
|
|
|
LET chbruto = simbolo CLIPPED, xvalor_bruto USING "<<<,<<<,<&&.##"
|
|
LET chdescuento = simbolo CLIPPED, xdescuento USING "<<<,<<<,<&&.##"
|
|
LET chsubtotal = simbolo CLIPPED, xvalor_bruto - xdescuento USING "<<<,<<<,<&&.##"
|
|
LET chitbis = simbolo CLIPPED, xitbis USING "<<<,<<<,<&&.##"
|
|
LET chneto = simbolo CLIPPED,xneto USING "<<<,<<<,<&&.##"
|
|
|
|
DISPLAY "antes ",xitbis
|
|
LET ditbis = xitbis *tasa
|
|
DISPLAY "despues ",ditbis," tasa ",tasa
|
|
# LET monto_itbis = xitbis estaba antes
|
|
LET monto_itbis = ditbis
|
|
|
|
LET dtotal_monto = xsub_total *tasa
|
|
|
|
LET p_monto_Desc = xdescuento
|
|
LET total_monto = xneto *tasa
|
|
LET p_valor = xsub_total
|
|
|
|
IF monto_itbis < 0 THEN
|
|
LET monto_itbis =monto_itbis *-1
|
|
END IF
|
|
IF p_monto_Desc < 0 THEN
|
|
LET p_monto_Desc = p_monto_Desc*-1
|
|
END IF
|
|
|
|
|
|
IF arr_articulos.getLength() > 1 THEN
|
|
LET encabezado='SI'
|
|
|
|
FOR idx = 1 TO arr_articulos.getLength()
|
|
IF arr_articulos[idx].descrip_Esp IS NOT NULL THEN
|
|
LET articulos.cod_n = arr_articulos[idx].cod_n
|
|
LET articulos.cod_grupo = arr_articulos[idx].cod_grupo
|
|
LET articulos.cod_tipo = arr_articulos[idx].cod_tipo
|
|
LET articulos.cod_sec = arr_articulos[idx].cod_sec
|
|
LET articulos.descrip_Esp = arr_articulos[idx].descrip_Esp
|
|
LET articulos.cantidad = arr_articulos[idx].cantidad_2
|
|
LET articulos.unidad_med = arr_articulos[idx].unidad_med
|
|
LET articulos.precio = arr_articulos[idx].precio*tasa
|
|
|
|
LET articulos.por_desc = arr_articulos[idx].por_desc
|
|
LET articulos.valor_desc = arr_Articulos[idx].valor_desc*tasa
|
|
LET articulos.valor_itbis = arr_articulos[idx].valor_itbis *tasa
|
|
LET articulos.valor = (arr_articulos[idx].cantidad_2 *
|
|
articulos.precio) -
|
|
articulos.valor_desc
|
|
DISPLAY "aqui se imprime ",ditbis
|
|
PRINTX articulos.cod_n,articulos.cod_grupo,articulos.cod_tipo, articulos.cod_sec,
|
|
articulos.descrip_Esp,articulos.cantidad,articulos.unidad_med,
|
|
articulos.precio,articulos.por_desc,articulos.valor_desc,articulos.valor_itbis,
|
|
articulos.valor,ditbis,
|
|
chbruto,chdescuento,chsubtotal,chitbis,chneto,total_monto
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
ELSE
|
|
LET encabezado = "NO"
|
|
LET articulos.cod_n = 0
|
|
LET articulos.cod_grupo = 0
|
|
LET articulos.cod_tipo = 0
|
|
LET articulos.cod_sec = 0
|
|
LET articulos.descrip_Esp = "NO TIENE"
|
|
LET articulos.cantidad = 0
|
|
|
|
END IF
|
|
IF ditbis <0 THEN
|
|
LET ditbis = ditbis *-1
|
|
END IF
|
|
LET documento_encabezado.montoTotal = total_monto USING "<<<<<<<<<<<<<.##"
|
|
LET documento_encabezado.montoGravadoTotal=p_valor*tasa USING "<<<<<<<<<<<<<<.##"
|
|
IF monto_itbis = 0 OR monto_itbis IS NULL THEN
|
|
LET documento_encabezado.montoGravadoI1 = 0 USING "<<<<<<<<<<<<<&.##"
|
|
ELSE
|
|
LET documento_encabezado.montoGravadoI1 = p_valor*tasa USING "<<<<<<<<<<<<<&.##"
|
|
END IF
|
|
|
|
DISPLAY " monto gravado ",documento_encabezado.montoGravadoI1 USING "<<<<<<<<<<<<<&.####"
|
|
|
|
LET documento_encabezado.totalItbis = monto_itbis USING "<<<<<<<<<<<<<&.##"
|
|
LET documento_encabezado.totalItbis1 = monto_itbis USING "<<<<<<<<<<<<<&.##"
|
|
DISPLAY " monto itbis ",documento_encabezado.totalItbis1 USING "<<<<<<<<<<<<<&.####"
|
|
DISPLAY " monto total ",documento_encabezado.montoTotal USING "<<<<<<<<<<<<<&.####"
|
|
|
|
LET documento_encabezado.tipoIngreso = '01'
|
|
DISPLAY "documento ",tipodocumento
|
|
IF tipodocumento <> '3' THEN
|
|
LET documento_encabezado.rncComprador =rnccomprador CLIPPED
|
|
END IF
|
|
IF tipodocumento = '3' THEN
|
|
LET documento_encabezado.IdentificadorExtranjero =rnccomprador CLIPPED
|
|
END IF
|
|
LET documento_encabezado.razonSocialComprador = p_nombre CLIPPED
|
|
LET documento_encabezado.codigoVendedor = p_cod_emp_sec
|
|
LET documento_encabezado.numeroFacturaInterna = p_aplica_a
|
|
|
|
LET documento_encabezado.fechaEmision = p_fecha_orig USING "dd-mm-yyyy" --Creo deberia usar getdate porque es una fecha diferente
|
|
{Si es un getdate entonces restar dias fecha emision de fecha_org, si es > 30 entonces llenar
|
|
IndicadorNotaCredito }
|
|
|
|
|
|
LET documento_encabezado.NCFmodificado = fcodigodgii CLIPPED
|
|
LET documento_encabezado.fechaNCFmodificado = ffecha USING "dd-mm-yyyy"
|
|
LET documento_encabezado.codigoModificacion = idtipo
|
|
LET documento_encabezado.eNcf = "E", codigodgii CLIPPED, kncf USING "&&&&&&&&&&"
|
|
LET documento_encabezado.nombreFile = p_companias.rnc CLIPPED,"E",
|
|
codigodgii CLIPPED, kncf USING "&&&&&&&&&&",".xml"
|
|
IF mostrarQR THEN
|
|
IF reimprime <> "SI" THEN
|
|
CALL generafile(documento_encabezado.*,documento_detalle,codigo_sucursal,codigo_sucursal,'adicionar')
|
|
RETURNING xhash,respuesta,xfechaFirmadigital,codigo
|
|
DISPLAY "retorna desde EL NC: ",respuesta
|
|
|
|
CALL sus_caracter(xhash) RETURNING rhash
|
|
IF codigo = '200' THEN
|
|
TRY
|
|
CALL util.JSON.parse(respuesta,pok)
|
|
|
|
CATCH
|
|
LET pok.trackId =NULL
|
|
LET pok.mensaje = 'ERROR EN PARSE'
|
|
END TRY
|
|
END IF
|
|
|
|
UPDATE cctb00001 SET ultima_respuesta = respuesta,hash = xhash,
|
|
fechaFirmadigital = xfechaFirmadigital,
|
|
cctb00001.trackid = pok.trackId
|
|
|
|
WHERE num_doc = p_num_doc AND tipo_doc = p_tipo_doc
|
|
END IF
|
|
LET chfechafirmadigital=util.Datetime.format(xfechafirmadigital, "%d-%m-%Y %H:%M:%S" )
|
|
LET buf = base.StringBuffer.create()
|
|
CALL buf.append(chfechafirmadigital)
|
|
CALL buf.replace(' ','%20',1)
|
|
LET chfechafirmadigital = buf.toString()
|
|
|
|
|
|
|
|
{ LET dataqrcode ='https://ecf.dgii.gov.do/ecf/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
|
|
"&rnccomprador=",rnccomprador CLIPPED,"&encf=",qncf CLIPPED,
|
|
"&fechaemision=",p_fecha_orig USING 'dd-mm-yyyy',
|
|
"&montototal=",total_monto USING "<<<<<<<<#.##",
|
|
"&fechafirma=",chfechafirmadigital,
|
|
"&codigoseguridad=",rhash}
|
|
|
|
LET dataqrcode ='https://ecf.dgii.gov.do/CerteCF/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
|
|
"&rnccomprador=",rnccomprador CLIPPED,"&encf=",qncf CLIPPED,
|
|
"&fechaemision=",p_fecha_orig USING 'dd-mm-yyyy',
|
|
"&montototal=",total_monto USING "<<<<<<<<#.##",
|
|
"&fechafirma=",chfechafirmadigital,
|
|
"&codigoseguridad=",rhash
|
|
END IF
|
|
printx p_aplica_a, p_monto_desc, p_valor, monto_itbis ,ncf_factura,encabezado,dtotal_monto,
|
|
dataqrcode,xhash,chfechafirmadigital
|
|
IF reimprime <> "SI" THEN
|
|
IF mostrarqr THEN
|
|
CALL procesoEncf(' ',"certificacion",' ',0,0,'consultatrackid',respuesta)
|
|
RETURNING phash,xrespuesta,codigo
|
|
|
|
DISPLAY "estado respuesta: ",CURRENT,xrespuesta," codigo: ",codigo
|
|
|
|
TRY
|
|
|
|
CALL util.JSON.parse(xrespuesta,p)
|
|
CATCH
|
|
LET message_err = "Error JSON: ",STATUS
|
|
DISPLAY message_Err
|
|
END TRY
|
|
END IF
|
|
LET p.trackid = pok.trackId
|
|
# LET p.estado = p.estado
|
|
# LET p.secuenciaUtilizada = p1.secuenciaUtilizada
|
|
# LET p.encf = p1.encf
|
|
# LET p.mensajes[1].valor = p1.mensajes
|
|
|
|
IF p.estado = ' ' OR p.estado IS NULL THEN
|
|
LET p.estado = 'Rechazado'
|
|
END IF
|
|
|
|
DISPLAY BY NAME p.trackid
|
|
IF p.estado = 'Rechazado' THEN
|
|
DISPLAY BY NAME p.estado ATTRIBUTE(RED,REVERSE)
|
|
ELSE
|
|
DISPLAY BY NAME p.estado ATTRIBUTE(GREEN,REVERSE)
|
|
END IF
|
|
|
|
UPDATE cctb00001 SET estado_dgii = p.estado
|
|
WHERE num_doc = p_num_doc AND tipo_doc = p_tipo_doc
|
|
END IF
|
|
AFTER GROUP OF p_sec_cliente
|
|
#IMAGEN
|
|
IF p_tipo_doc = "NC" THEN
|
|
LET vimagen=TRUE
|
|
LOCATE imagen IN MEMORY
|
|
|
|
#SELECT a.firmafactura,a.nombre_file_firma INTO imagen,nombre_file FROM seg0001 a WHERE a.usuario = usuarios
|
|
|
|
# LET filedestino = 'E:\\MARMOTECH\\test\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
|
|
LET filedestino = '.\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
|
|
IF imagen IS NULL THEN
|
|
LET vimagen=FALSE
|
|
LET filedestino = '.\\IMAGENES\\tmp\\tmpdefault.png'
|
|
ELSE
|
|
CALL imagen.writeFile(filedestino)
|
|
CALL comprimeImagen(filedestino,' -resize 200x200 ')
|
|
CALL imagen.readFile(filedestino)
|
|
END IF
|
|
ELSE
|
|
LET vimagen=FALSE
|
|
END IF
|
|
# BUSCA TIPO DE VENTAS
|
|
SELECT b.simbolo,b.descripcion_moneda INTO psimbolo,pmoneda FROM vetb00060 a,vetb00061 b
|
|
WHERE a.ventas = b.ventas AND
|
|
a.tipo_cliente = p_tipo_cliente
|
|
|
|
|
|
|
|
LET descuento = xdescuento
|
|
|
|
|
|
PRINTX descuento,valor_letras,psimbolo,vimagen,imagen
|
|
|
|
on last row
|
|
|
|
PRINTX p_comentario
|
|
CALL arr_articulos.clear()
|
|
|
|
|
|
END REPORT
|
|
|
|
FUNCTION convierte()
|
|
DEFINE consegui CHAR(1)
|
|
DEFINE p,miles,m,k,a,b,d,c,entero,unidades_mi,unidades_m,unidad,mil,millon,
|
|
unid_c,u INTEGER
|
|
DEFINE cheles DECIMAL (7,2)
|
|
|
|
CALL letras()
|
|
LET valor_letras = null
|
|
LET consegui = "N"
|
|
LET entero = valor_orig
|
|
LET cheles = (valor_orig - entero) * 100
|
|
LET unidad = entero / 100
|
|
LET unidad = entero - (unidad * 100)
|
|
LET a = entero / 1000
|
|
LET a = entero - (a * 1000)
|
|
LET d = entero - 19
|
|
|
|
IF d >= 82 THEN
|
|
|
|
LET c = entero / 100
|
|
|
|
# Para Controlar los miles y los cientos
|
|
|
|
IF c <= 9 THEN
|
|
LET valor_letras = valor_letras clipped," ",centenas[c] clipped
|
|
ELSE
|
|
LET c = entero / 1000
|
|
LET b = entero / 1000000
|
|
END IF
|
|
|
|
IF d > 19 THEN
|
|
LET d = unidad - 19
|
|
END IF
|
|
|
|
IF unidad > 0 and unidad < 20 THEN
|
|
LET d = unidad
|
|
LET valor_letras = valor_letras clipped," ",unidades1[d] clipped
|
|
LET consegui = "S"
|
|
END IF
|
|
|
|
ELSE
|
|
IF d > 0 AND d <= 81 THEN
|
|
LET valor_letras = valor_letras clipped," ",decenas[d] clipped
|
|
LET consegui = "S"
|
|
END IF
|
|
END IF
|
|
|
|
# Para controlar los miles
|
|
|
|
IF entero > 999 THEN
|
|
LET unidades_m = a / 100
|
|
LET unidades_m = a - (unidades_m * 100)
|
|
LET valor_letras = null
|
|
|
|
IF c = 1 THEN
|
|
LET valor_letras = "MIL"
|
|
END IF
|
|
|
|
IF c > 1 and c <= 19 THEN
|
|
LET valor_letras = valor_letras clipped," ",unidades1[c] clipped," ","MIL"
|
|
END IF
|
|
|
|
IF c >= 20 and c <= 999 THEN
|
|
|
|
IF c < 82 THEN
|
|
LET c = c - 19
|
|
LET valor_letras = valor_letras clipped," ",decenas[c] clipped
|
|
|
|
ELSE
|
|
LET k = c / 100
|
|
IF k > 0 AND k < 10 THEN
|
|
LET unid_c = c - (k * 100) # AQUI FUE
|
|
IF k > 1 THEN
|
|
LET valor_letras = valor_letras clipped," ",centenas[k] clipped
|
|
ELSE
|
|
IF k = 1 then
|
|
IF unid_c > 0 THEN
|
|
LET valor_letras = valor_letras clipped," ",centenas[k] clipped
|
|
ELSE
|
|
LET valor_letras = valor_letras clipped," ",decenas[81] clipped
|
|
END IF
|
|
|
|
end if
|
|
END IF
|
|
END IF
|
|
|
|
LET unid_c = c - (k * 100)
|
|
|
|
|
|
IF unid_c >0 and unid_c < 20 THEN
|
|
|
|
LET valor_letras = valor_letras clipped," ",unidades1[unid_c] clipped
|
|
|
|
ELSE
|
|
LET unid_c = unid_c -19
|
|
IF unid_c >0 and unid_c <=81 then
|
|
|
|
LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped
|
|
|
|
LET consegui = "S"
|
|
|
|
end if
|
|
|
|
END IF
|
|
|
|
IF c > 82 and c < 100 and consegui <> "S" THEN
|
|
LET c = c-19
|
|
LET valor_letras = valor_letras CLIPPED," ",decenas[c] CLIPPED
|
|
|
|
END IF
|
|
|
|
IF c > 100 AND consegui <> "S" THEN
|
|
LET c = c -119
|
|
IF c > 0 and c <= 81 THEN
|
|
LET valor_letras = valor_letras CLIPPED," ",decenas[c] CLIPPED
|
|
LET consegui = "N"
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LET valor_letras = valor_letras clipped," ","MIL"
|
|
END IF
|
|
|
|
LET c = a
|
|
IF c > 100 THEN
|
|
|
|
LET c = c / 100
|
|
|
|
LET valor_letras = valor_letras clipped," ",centenas[c] clipped
|
|
END IF
|
|
|
|
IF c = 100 THEN
|
|
LET valor_letras = valor_letras clipped," ",decenas[81] clipped
|
|
END IF
|
|
|
|
|
|
IF unidades_m > 0 and unidades_m-19 <= 81 THEN
|
|
|
|
LET a = unidades_m -19
|
|
IF a > 0 and a<= 81 THEN
|
|
LET valor_letras = valor_letras clipped, " ",decenas[a] clipped
|
|
LET consegui="S"
|
|
ELSE
|
|
LET valor_letras = valor_letras clipped, " ",unidades1[unidades_m] clipped
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
#========================================================================================
|
|
# Para Controlar cantidades en millones
|
|
|
|
IF entero > 999999 THEN
|
|
LET c = 0
|
|
LET miles = entero - 1000000
|
|
|
|
LET m = miles / 1000
|
|
|
|
LET p = miles - (m * 1000)
|
|
|
|
LET u = m / 100
|
|
|
|
LET u = m - (u * 100)
|
|
|
|
LET unidades_mi = p
|
|
LET unidades_mi = unidades_mi / 100
|
|
LET unidades_mi = p - (unidades_mi * 100)
|
|
LET valor_letras = null
|
|
|
|
IF b = 1 THEN
|
|
LET valor_letras = "UN MILLON"
|
|
END IF
|
|
|
|
IF b > 1 and b <= 19 THEN
|
|
LET valor_letras = valor_letras clipped," ",unidades1[b] clipped," ",
|
|
"MILLONES"
|
|
END IF
|
|
|
|
|
|
IF b >= 20 and b <= 999999 THEN
|
|
|
|
IF b < 82 THEN
|
|
|
|
LET b = b - 19
|
|
LET valor_letras = valor_letras clipped," ",decenas[b] clipped," ",
|
|
"MILLONES"
|
|
ELSE
|
|
LET k = b / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[k] clipped," ",
|
|
"MILLONES"
|
|
END IF
|
|
END IF
|
|
LET b = m /100
|
|
|
|
IF b >0 and b <=9 THEN
|
|
|
|
if b = 1 then
|
|
LET valor_letras = valor_letras clipped," CIEN "
|
|
else
|
|
LET valor_letras = valor_letras clipped," ",centenas[b] clipped
|
|
end if
|
|
IF u > 0 and u <= 19 THEN
|
|
|
|
IF u = 1 THEN
|
|
LET unidades1[1] = "UN"
|
|
END IF
|
|
LET valor_letras = valor_letras clipped," ",unidades1[u] clipped
|
|
|
|
END IF
|
|
let u = u - 19
|
|
# IF u > 0 and u <= 19 THEN
|
|
|
|
# IF u = 1 THEN
|
|
# LET unidades1[1] = "UN"
|
|
# END IF
|
|
# LET valor_letras = valor_letras clipped," ",unidades1[u] clipped
|
|
|
|
# END IF
|
|
|
|
IF u >=1 and u < 82 THEN
|
|
# LET u = u - 19 # adicione este 13/5/2011 La quite el 30/5/2011
|
|
LET valor_letras = valor_letras clipped," ",decenas[u] clipped
|
|
|
|
END IF
|
|
LET valor_letras = valor_letras clipped," ","MIL"
|
|
|
|
END IF
|
|
|
|
|
|
IF p > 100 THEN
|
|
LET p = p / 100
|
|
|
|
LET valor_letras = valor_letras clipped," ",centenas[p] clipped
|
|
END IF
|
|
LET unidades_mi = unidades_mi-19
|
|
|
|
IF unidades_mi > 0 and unidades_mi <= 81 THEN
|
|
LET m = unidades_mi
|
|
LET valor_letras = valor_letras clipped, " ",decenas[m] clipped
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF unidad > 0 and unidad < 20 AND consegui = "N" THEN
|
|
LET d = unidad
|
|
|
|
LET valor_letras = valor_letras clipped," ",unidades1[d] clipped
|
|
|
|
END IF
|
|
|
|
IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN
|
|
|
|
LET valor_letras = valor_letras clipped," ",decenas[d] clipped
|
|
END IF
|
|
|
|
LET valor_letras = valor_letras clipped," ",pmoneda CLIPPED," CON"," ",
|
|
cheles using "&&", "/100"
|
|
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION letras()
|
|
|
|
LET unidades1[1] = "UNO"
|
|
LET unidades1[2] = "DOS"
|
|
LET unidades1[3] = "TRES"
|
|
LET unidades1[4] = "CUATRO"
|
|
LET unidades1[5] = "CINCO"
|
|
LET unidades1[6] = "SEIS"
|
|
LET unidades1[7] = "SIETE"
|
|
LET unidades1[8] = "OCHO"
|
|
LET unidades1[9] = "NUEVE"
|
|
LET unidades1[10] = "DIEZ"
|
|
LET unidades1[11] = "ONCE"
|
|
LET unidades1[12] = "DOCE"
|
|
LET unidades1[13] = "TRECE"
|
|
LET unidades1[14] = "CATORCE"
|
|
LET unidades1[15] = "QUINCE"
|
|
LET unidades1[16] = "DIECISEIS"
|
|
LET unidades1[17] = "DIECISIETE"
|
|
LET unidades1[18] = "DIECIOCHO"
|
|
LET unidades1[19] = "DIECINUEVE"
|
|
|
|
|
|
LET decenas[1] = "VEINTE"
|
|
LET decenas[2] = "VEINTE Y UNO"
|
|
LET decenas[3] = "VEINTE Y DOS"
|
|
LET decenas[4] = "VEINTE Y TRES"
|
|
LET decenas[5] = "VEINTE Y CUATRO"
|
|
LET decenas[6] = "VEINTE Y CINCO"
|
|
LET decenas[7] = "VEINTE Y SEIS"
|
|
LET decenas[8] = "VEINTE Y SIETE"
|
|
LET decenas[9] = "VEINTE Y OCHO"
|
|
LET decenas[10] = "VEINTE Y NUEVE"
|
|
LET decenas[11] = "TREINTA"
|
|
LET decenas[12] = "TREINTA Y UNO"
|
|
LET decenas[13] = "TREINTA Y DOS"
|
|
LET decenas[14] = "TREINTA Y TRES"
|
|
LET decenas[15] = "TREINTA Y CUATRO"
|
|
LET decenas[16] = "TREINTA Y CINCO"
|
|
LET decenas[17] = "TREINTA Y SEIS"
|
|
LET decenas[18] = "TREINTA Y SIETE"
|
|
LET decenas[19] = "TREINTA Y OCHO"
|
|
LET decenas[20] = "TREINTA Y NUEVE"
|
|
LET decenas[21] = "CUARENTA"
|
|
LET decenas[22] = "CUARENTA Y UNO"
|
|
LET decenas[23] = "CUARENTA Y DOS"
|
|
LET decenas[24] = "CUARENTA Y TRES"
|
|
LET decenas[25] = "CUARENTA Y CUATRO"
|
|
LET decenas[26] = "CUARENTA Y CINCO"
|
|
LET decenas[27] = "CUARENTA Y SEIS"
|
|
LET decenas[28] = "CUARENTA Y SIETE"
|
|
LET decenas[29] = "CUARENTA Y OCHO"
|
|
LET decenas[30] = "CUARENTA Y NUEVE"
|
|
LET decenas[31] = "CINCUENTA"
|
|
LET decenas[32] = "CINCUENTA Y UNO"
|
|
LET decenas[33] = "CINCUENTA Y DOS"
|
|
LET decenas[34] = "CINCUENTA Y TRES"
|
|
LET decenas[35] = "CINCUENTA Y CUATRO"
|
|
LET decenas[36] = "CINCUENTA Y CINCO"
|
|
LET decenas[37] = "CINCUENTA Y SEIS"
|
|
LET decenas[38] = "CINCUENTA Y SIETE"
|
|
LET decenas[39] = "CINCUENTA Y OCHO"
|
|
LET decenas[40] = "CINCUENTA Y NUEVE"
|
|
LET decenas[41] = "SESENTA"
|
|
LET decenas[42] = "SESENTA Y UNO"
|
|
LET decenas[43] = "SESENTA Y DOS"
|
|
LET decenas[44] = "SESENTA Y TRES"
|
|
LET decenas[45] = "SESENTA Y CUATRO"
|
|
LET decenas[46] = "SESENTA Y CINCO"
|
|
LET decenas[47] = "SESENTA Y SEIS"
|
|
LET decenas[48] = "SESENTA Y SIETE"
|
|
LET decenas[49] = "SESENTA Y OCHO"
|
|
LET decenas[50] = "SESENTA Y NUEVE"
|
|
LET decenas[51] = "SETENTA"
|
|
LET decenas[52] = "SETENTA Y UNO"
|
|
LET decenas[53] = "SETENTA Y DOS"
|
|
LET decenas[54] = "SETENTA Y TRES"
|
|
LET decenas[55] = "SETENTA Y CUATRO"
|
|
LET decenas[56] = "SETENTA Y CINCO"
|
|
LET decenas[57] = "SETENTA Y SEIS"
|
|
LET decenas[58] = "SETENTA Y SIETE"
|
|
LET decenas[59] = "SETENTA Y OCHO"
|
|
LET decenas[60] = "SETENTA Y NUEVE"
|
|
LET decenas[61] = "OCHENTA"
|
|
LET decenas[62] = "OCHENTA Y UNO"
|
|
LET decenas[63] = "OCHENTA Y DOS"
|
|
LET decenas[64] = "OCHENTA Y TRES"
|
|
LET decenas[65] = "OCHENTA Y CUATRO"
|
|
LET decenas[66] = "OCHENTA Y CINCO"
|
|
LET decenas[67] = "OCHENTA Y SEIS"
|
|
LET decenas[68] = "OCHENTA Y SIETE"
|
|
LET decenas[69] = "OCHENTA Y OCHO"
|
|
LET decenas[70] = "OCHENTA Y NUEVE"
|
|
LET decenas[71] = "NOVENTA"
|
|
LET decenas[72] = "NOVENTA Y UNO"
|
|
LET decenas[73] = "NOVENTA Y DOS"
|
|
LET decenas[74] = "NOVENTA Y TRES"
|
|
LET decenas[75] = "NOVENTA Y CUATRO"
|
|
LET decenas[76] = "NOVENTA Y CINCO"
|
|
LET decenas[77] = "NOVENTA Y SEIS"
|
|
LET decenas[78] = "NOVENTA Y SIETE"
|
|
LET decenas[79] = "NOVENTA Y OCHO"
|
|
LET decenas[80] = "NOVENTA Y NUEVE"
|
|
LET decenas[81] = "CIEN"
|
|
|
|
LET centenas[1] = "CIENTO"
|
|
LET centenas[2] = "DOCIENTOS"
|
|
LET centenas[3] = "TRESCIENTOS"
|
|
LET centenas[4] = "CUATROCIENTOS"
|
|
LET centenas[5] = "QUINIENTOS"
|
|
LET centenas[6] = "SEISCIENTOS"
|
|
LET centenas[7] = "SETECIENTOS"
|
|
LET centenas[8] = "OCHOCIENTOS"
|
|
LET centenas[9] = "NOVECIENTOS"
|
|
|
|
END FUNCTION
|
|
FUNCTION calculo_nc(documento_alm,pcodigo_mov,tasa,ptipo)
|
|
DEFINE j,xaplica,documento_alm,pcodigo_mov,ptipo INT,
|
|
sub_total,tasa,pdescuento DEC(18,2),
|
|
dvalor_bruto,ddescuento,dsub_total,ditbis,dneto,tvalor_bruto,
|
|
tdescuento,tsub_total,titbis,tneto,dprecio DEC(18,2)
|
|
OPEN WINDOW w1 WITH FORM "ccfmwd019"
|
|
|
|
LET ditbis = 0
|
|
LET dsub_total =0
|
|
LET dvalor_bruto =0
|
|
LET pdescuento =0
|
|
LET sub_total =0
|
|
|
|
|
|
IF hecha_aqui = "NO" OR hecha_aqui IS NULL THEN
|
|
DECLARE busca_nc11 CURSOR FOR
|
|
SELECT '1',a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad,a.descrip_esp,a.unidad_med,b.precio,b.porc_desc,
|
|
b.descuento,ISNULL(b.itbis,0),a.tipoproducto
|
|
FROM iptb00002 a,cctb00010 b
|
|
WHERE b.num_doc_almacen = documento_alm AND b.cod_mov = p_tipo_doc AND
|
|
a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec
|
|
LET j = 1
|
|
|
|
|
|
FOREACH busca_nc11 INTO arr_articulos[j].*
|
|
IF arr_articulos[j].precio > 0 THEN
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
LET xitbis = titbis
|
|
LET xsub_total = tsub_total
|
|
LET j = j + 1
|
|
END IF
|
|
|
|
END FOREACH
|
|
ELSE
|
|
IF documento_alm > 0 THEN
|
|
DECLARE busca_nd11 CURSOR FOR
|
|
SELECT b.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.cantidad_1,b.cantidad,a.descrip_esp,
|
|
a.unidad_med,b.precio,
|
|
b.bonificacion,b.valor,b.itbis
|
|
FROM iptb00002 a,vetb00003 b,vetb00002 c,iptb00006 d
|
|
WHERE b.factura = xfactura AND b.factura = c.factura AND
|
|
b.cod_cia = c.cod_cia AND
|
|
a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec AND
|
|
b.area = d.area AND
|
|
d.num_Doc = documento_alm AND d.cod_mov = pcodigo_mov 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 b.factura = CAST(d.fact_no AS INT)
|
|
LET j = 1
|
|
DISPLAY "xfactura ",xfactura
|
|
DISPLAY "iptb0006 ",documento_alm
|
|
FOREACH busca_nd11 INTO arr_articulos[j].area,arr_articulos[j].cod_n,arr_articulos[j].cod_grupo,arr_articulos[j].cod_tipo,
|
|
arr_articulos[j].cod_sec,arr_articulos[j].cantidad_1,arr_articulos[j].cantidad_2,arr_articulos[j].descrip_Esp,arr_articulos[j].unidad_med,
|
|
arr_articulos[j].precio,arr_articulos[j].valor_desc,arr_articulos[j].valor,arr_articulos[j].valor_itbis
|
|
|
|
IF arr_articulos[j].precio > 0 THEN
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
LET j = j + 1
|
|
END IF
|
|
|
|
END FOREACH
|
|
DISPLAY BY NAME tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
|
|
DISPLAY ARRAY arr_articulos TO sproductos.*
|
|
|
|
BEFORE DISPLAY
|
|
|
|
DISPLAY BY NAME tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
AFTER DISPLAY
|
|
LET xitbis = titbis
|
|
LET xsub_total = tsub_total
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
ELSE
|
|
DISPLAY "estoy en este query "
|
|
LET selec =
|
|
"SELECT unique b.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.cantidad,b.cantidad,a.descrip_esp,
|
|
a.unidad_med,b.precio,b.cantidad_2,
|
|
b.bonificacion,b.itbis,b.valor,a.tipoproducto
|
|
FROM iptb00002 a,vetb00003 b,vetb00002 c
|
|
WHERE b.factura =", xfactura, " AND b.factura = c.factura AND
|
|
b.cod_cia = c.cod_cia AND
|
|
a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND
|
|
a.cod_sec = b.cod_sec
|
|
"
|
|
PREPARE bcomando FROM selec
|
|
DECLARE busca_nd111 CURSOR FOR bcomando
|
|
|
|
LET j = 1
|
|
|
|
FOREACH busca_nd111 INTO arr_articulos[j].*
|
|
IF arr_articulos[j].precio > 0 THEN
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
LET j = j + 1
|
|
END IF
|
|
|
|
END FOREACH
|
|
DISPLAY BY NAME tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
INPUT ARRAY arr_articulos FROM sproductos.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
|
|
AFTER ROW
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
LET xitbis = titbis
|
|
LET xsub_total = tsub_total
|
|
DISPLAY BY NAME tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
CALL msg(16)
|
|
|
|
LET tvalor_bruto = 0
|
|
LET tdescuento = 0
|
|
LET tsub_total = 0
|
|
LET titbis = 0
|
|
LET tneto = 0
|
|
EXIT INPUT
|
|
END IF
|
|
CALL calculos() RETURNING tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
LET xitbis = titbis
|
|
LET xsub_total = tsub_total
|
|
DISPLAY BY NAME tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
EXIT INPUT
|
|
END INPUT
|
|
END IF
|
|
END IF
|
|
|
|
CLOSE WINDOW w1
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
END IF
|
|
RETURN tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
END FUNCTION
|
|
FUNCTION calculos()
|
|
DEFINE dvalor_bruto,ddescuento,dprecio,dsub_total,ditbis,dneto,
|
|
tvalor_bruto, tdescuento, tsub_total,titbis, tneto,ldesc DEC(12,2)
|
|
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
LET documento_encabezado.IndicadorNotaCredito='0' USING "&"
|
|
ELSE
|
|
LET documento_encabezado.IndicadorNotaCredito=NULL
|
|
END IF
|
|
|
|
IF ptipo_nc = '01' THEN
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S"
|
|
|
|
LET documento_encabezado.indicadorMontoGravado='1'
|
|
ELSE
|
|
LET documento_encabezado.indicadorMontoGravado='0' USING "&"
|
|
END IF
|
|
IF recibo.tipo_doc = 'ND' THEN
|
|
LET documento_encabezado.indicadorMontoGravado='0' USING "&"
|
|
END IF
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
LET documento_encabezado.itbis1 = pitbis USING "&&"
|
|
|
|
LET ldesc =0
|
|
LET tvalor_bruto = 0
|
|
LET tdescuento = 0
|
|
LET tsub_total = 0
|
|
LET titbis = 0
|
|
LET tneto = 0
|
|
LET ditbis = 0
|
|
LET dsub_total =0
|
|
LET dvalor_bruto =0
|
|
LET ddescuento=0
|
|
LET dias = recibo.fecha_orig - ffecha
|
|
|
|
FOR idx = 1 TO arr_articulos.getLength()
|
|
|
|
IF arr_articulos[idx].precio > 0 THEN
|
|
IF arr_articulos[idx].valor_desc IS NULL THEN
|
|
LET arr_articulos[idx].valor_desc=0
|
|
END IF
|
|
|
|
LET dvalor_bruto = arr_articulos[idx].precio * arr_articulos[idx].cantidad_2
|
|
#LET ddescuento = dvalor_bruto * (arr_articulos[idx].por_desc /100)
|
|
LET ddescuento=arr_articulos[idx].valor_desc
|
|
LET dprecio = (arr_articulos[idx].precio * arr_articulos[idx].cantidad_2)
|
|
LET dsub_total = dvalor_bruto - ddescuento
|
|
|
|
|
|
|
|
IF dias > 30 THEN
|
|
|
|
LET ditbis = 0
|
|
LET arr_articulos[idx].valor_itbis=0
|
|
IF recibo.tipo_doc = 'ND' THEN
|
|
LET ditbis = dsub_total * (pitbis/100)
|
|
LET arr_articulos[idx].valor_itbis = ditbis
|
|
|
|
LET ditbis = arr_articulos[idx].valor_itbis
|
|
LET documento_encabezado.indicadorMontoGravado='1'
|
|
|
|
END IF
|
|
LET documento_encabezado.indicadorMontoGravado='0' USING "&"
|
|
IF recibo.tipo_doc = 'NC' THEN
|
|
LET documento_encabezado.IndicadorNotaCredito='1'
|
|
ELSE
|
|
LET documento_encabezado.IndicadorNotaCredito=NULL
|
|
END IF
|
|
LET documento_encabezado.itbis3 = '0' USING "&&"
|
|
LET documento_encabezado.montoGravadoI3 = '00' USING "&&"
|
|
LET documento_encabezado.totalItbis3 = '00' USING "&&"
|
|
ELSE
|
|
IF ptipo_nc = '01' THEN
|
|
|
|
LET ditbis = dsub_total * (pitbis/100)
|
|
|
|
LET arr_articulos[idx].valor_itbis = ditbis
|
|
|
|
LET ditbis = arr_articulos[idx].valor_itbis
|
|
|
|
LET documento_encabezado.indicadorMontoGravado='1'
|
|
ELSE
|
|
|
|
LET documento_encabezado.itbis3 = '0' USING "&&"
|
|
LET documento_encabezado.montoGravadoI3 = '00' USING "&&"
|
|
LET documento_encabezado.totalItbis3 = '00' USING "&&"
|
|
END IF
|
|
END IF
|
|
LET dneto=0
|
|
|
|
LET dneto = dsub_total
|
|
LET ldesc = arr_articulos[idx].precio *(arr_articulos[idx].por_desc/100)
|
|
|
|
LET arr_articulos[idx].valor_desc = ddescuento
|
|
LET arr_articulos[idx].valor_itbis = ditbis
|
|
LET arr_articulos[idx].valor = dneto
|
|
|
|
LET documento_detalle[idx].DescripcionItem = null
|
|
LET documento_detalle[idx].cantidadItem = arr_articulos[idx].cantidad_2 USING "<<<<<<<<<<<<<&.##"
|
|
LET documento_detalle[idx].indicadorFacturacion = '1' USING "&"
|
|
LET documento_detalle[idx].precioUnitarioItem = (arr_articulos[idx].valor/ arr_articulos[idx].cantidad_2
|
|
) * tasa USING "<<<<<<<<<<<&.####"
|
|
#(dneto* tasa)/ arr_articulos[idx].cantidad_2 USING "<<<<<<<<<<<&.##"
|
|
LET documento_detalle[idx].montoItem = dneto * tasa USING "<<<<<<<<<<<<<&.##"
|
|
|
|
LET documento_detalle[idx].nombreItem = arr_articulos[idx].descrip_Esp CLIPPED --Tengo la descripcion pero no el nombre del producto
|
|
LET documento_detalle[idx].indicadorBienoServicio = arr_articulos[idx].id_tipo --el generafile llena este campo, pero no estoy convencido
|
|
|
|
DISPLAY "DITBIS ",ditbis," s ",dsub_total," v ",idx
|
|
|
|
LET dneto = dsub_total + ditbis
|
|
LET ldesc=0
|
|
LET tvalor_bruto = tvalor_bruto + dvalor_bruto
|
|
LET tdescuento = tdescuento + ddescuento
|
|
LET tsub_total = tsub_total + dsub_total
|
|
LET titbis = titbis + ditbis
|
|
LET tneto = tneto + dneto
|
|
END IF
|
|
END FOR
|
|
LET monto_efectivo = tvalor_bruto
|
|
RETURN tvalor_bruto,tdescuento,tsub_total,titbis,tneto
|
|
END FUNCTION |