1862 lines
57 KiB
Plaintext
1862 lines
57 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CPPRMT001
|
|
OBJETIVO : Mantenimiento de Factura Proveedor
|
|
REALIZADO POR : Tadeo A. Ferreras
|
|
FECHA : Junio 17, 1993
|
|
MODIFICADO POR : Juan F. Soto
|
|
FECHA : Enero 16, 1996
|
|
DESCRIPCION : Buscar conjuntamente con los pre-pagos las NOTAS DE DEBITO
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
IMPORT os
|
|
GLOBALS "cpprgb000.4gl"
|
|
DEFINE debito1,credito1,credito2 decimal(12,2),ent_num CHAR(150)
|
|
DEFINE valor_pr DECIMAL(12,2)
|
|
DEFINE term_sp SMALLINT
|
|
DEFINE fecha_control date
|
|
DEFINE dias SMALLINT
|
|
DEFINE puser char(80)
|
|
DEFINE itbis DECIMAL(16,2)
|
|
DEFINE hoy,fecha1,fecha2 DATE
|
|
DEFINE debe_ir CHAR(1)
|
|
DEFINE cuenta,cuenta_sp CHAR(8)
|
|
DEFINE total1,valor_cxp,valor,valor_f DECIMAL(12,2)
|
|
DEFINE cat,dpto,refe,tiene_cta,chequea,ctrl_cxp CHAR(1)
|
|
DEFINE ctrl_reg,orden_ant,aplicar INTEGER
|
|
DEFINE p,l,niv,cod1_sp,cod1_sp_sec SMALLINT
|
|
DEFINE idx2,p_orden INTEGER
|
|
DEFINE pbase,flete,gasto,pvalor,tvalor DECIMAL(16,2)
|
|
DEFINE val_pen,valor_fac1,valor2 DECIMAL(13,2)
|
|
DEFINE nom_tipo CHAR(15)
|
|
DEFINE idx1,ultimo SMALLINT
|
|
DEFINE nombre,apellido CHAR(14)
|
|
DEFINE tipo_emp CHAR(1)
|
|
DEFINE cuadradatrx BOOLEAN
|
|
DEFINE tiempo,pano CHAR(4),entrada_no CHAR(14), numero_ent CHAR(2),
|
|
foto CHAR(200),nombre_file_foto CHAR(100),imagefac,d_tipos, f_tipos, mensaje,filepath,filedestino STRING
|
|
,pimagen BYTE
|
|
|
|
DEFINE cuenta_itibis,cuenta_mayor CHAR(8),
|
|
cod_mon INTEGER,
|
|
credito decimal(12,2)
|
|
|
|
DEFINE buscar_oc RECORD
|
|
orden_no INTEGER,
|
|
fecha_orig DATE,
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sup CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE cod_sp1,cod_sp2 SMALLINT
|
|
DEFINE valor3 DECIMAL(12,2)
|
|
|
|
DEFINE datos_usu RECORD
|
|
status_t CHAR(1),
|
|
us_crea CHAR(9),
|
|
fech_crea CHAR(16),
|
|
us_mod CHAR(9),
|
|
fech_mod CHAR(16)
|
|
END RECORD
|
|
|
|
DEFINE supl DYNAMIC ARRAY OF RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sp CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE cuentas ARRAY[200] OF RECORD
|
|
cuenta_no CHAR(8),
|
|
departamento SMALLINT,
|
|
cod_aux SMALLINT,
|
|
sec_aux SMALLINT,
|
|
num_doc CHAR(13),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2)
|
|
END RECORD
|
|
DEFINE descripcion CHAR(30)
|
|
|
|
DEFINE arrfac DYNAMIC ARRAY OF RECORD
|
|
tipo CHAR(1),
|
|
aplica_a CHAR(11),
|
|
tipo_doc CHAR(2),
|
|
valor_prep DECIMAL(12,2),
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE arr_fac1 DYNAMIC ARRAY OF RECORD
|
|
tipo CHAR(1),
|
|
aplica_a CHAR(11),
|
|
tipo_doc CHAR(2),
|
|
valor_prep DECIMAL(12,2),
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE j RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sup CHAR(30),
|
|
num_doc CHAR(13),
|
|
valor_fac DECIMAL(12,2),
|
|
detalle CHAR(30),
|
|
tipo CHAR(1),
|
|
aplica_a CHAR(11),
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE ordenes DYNAMIC ARRAY OF RECORD
|
|
orden_no LIKE cptb00001.orden_no,
|
|
tipo LIKE cptb00001.tipo
|
|
END RECORD
|
|
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
#LET usuarios ="lsoto"
|
|
#LET clave ="1234"
|
|
|
|
CONNECT to "decomarmol" user usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
CALL cpprmt001()
|
|
END MAIN
|
|
|
|
FUNCTION cpprmt001()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
OPEN FORM cpfmmt001 FROM "cpfmmt001"
|
|
DISPLAY FORM cpfmmt001
|
|
DISPLAY "cpprmt001" AT 4,3
|
|
DISPLAY "Registro de Facturas" AT 6,29
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
# LET filedestino='tmpfoto.jpg'
|
|
LOCATE pimagen IN MEMORY
|
|
CLEAR FORM
|
|
CALL cppcad000()
|
|
ON ACTION buscar
|
|
CALL cppcmd000()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
##funcion par los gastos
|
|
{
|
|
FUNCTION cgastos()
|
|
|
|
DEFINE codigo_gasto SMALLINT, des_gasto CHAR(30)
|
|
|
|
|
|
DECLARE bgastos CURSOR FOR
|
|
SELECT a.codigo_fiscal, a.descripcion FROM cgtb00074 a
|
|
|
|
CALL cgastos.clear()
|
|
|
|
FOREACH bgastos INTO codigo_gasto,des_gasto
|
|
CALL cgastos.additem(kventas,dventas)
|
|
END FOREACH
|
|
|
|
|
|
}
|
|
|
|
|
|
####### Proceso para Insertar Una Factura ###########
|
|
|
|
FUNCTION cppcad000()
|
|
DEFINE porc_p DECIMAL(10,2)
|
|
DEFINE emp SMALLINT
|
|
|
|
LET hoy = null
|
|
LET fecha1 = TODAY
|
|
|
|
LABEL volver:
|
|
INITIALIZE factura TO NULL
|
|
|
|
LET factura.cod_sp = cod_sp1
|
|
LET factura.cod_sp_sec = cod_sp2
|
|
LET factura.fecha_orig = fecha1
|
|
LET factura.fecha_proc = fecha2
|
|
|
|
LET tipo_ncf=NULL
|
|
LET descripcion_ncf=NULL
|
|
LET itbis =NULL
|
|
LET ncf = NULL
|
|
|
|
|
|
|
|
INPUT BY NAME factura.*,ITBIS,TIPO_NCF,cod_mon,NCF WITHOUT DEFAULTS
|
|
|
|
ON ACTION busca_foto ATTRIBUTE(TEXT="Foto",IMAGE="upload")
|
|
|
|
LET d_tipos="Images"
|
|
LET f_tipos="*.jpg *.png *.gif"
|
|
LET mensaje=%"Elige Imagen"
|
|
LET imagefac = "*.jpg"
|
|
|
|
CALL ui.interface.frontcall("standard","openfile",[imagefac,d_tipos,f_tipos,mensaje],filepath)
|
|
DISPLAY filepath
|
|
IF nombre_file_foto IS NULL THEN
|
|
LET nombre_file_foto =factura.num_doc USING "<<<<<<",".jpg"
|
|
END IF
|
|
|
|
IF filepath IS NOT NULL THEN
|
|
IF fgl_getenv("WINDIR") IS NULL THEN
|
|
LET filedestino = FGL_GETENV("IMAGENfactura"),"/IMAGENFACTURA/",nombre_file_foto CLIPPED
|
|
DISPLAY "1",filedestino
|
|
ELSE
|
|
LET filedestino = FGL_GETENV("IMAGENfactura"),"\\IMAGENFACTURA\\",nombre_file_foto CLIPPED
|
|
# LET filedestino = "D:\\genero fuentes\\DECOMARMOL320\\decomarmol\\IMAGENFACTURA\\",nombre_file_foto CLIPPED
|
|
DISPLAY "2",filedestino
|
|
END IF
|
|
LOCATE pimagen IN MEMORY
|
|
# CALL FGL_WINMESSAGE("W",filedestino,"stop")
|
|
CALL fgl_getfile(filepath,filedestino)
|
|
CALL pimagen.readFile(filedestino)
|
|
DISPLAY filedestino TO foto
|
|
LET foto = filedestino
|
|
|
|
END IF
|
|
|
|
AFTER FIELD itbis
|
|
IF itbis IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD itbis
|
|
END IF
|
|
ON KEY (control-p)
|
|
NEXT FIELD cod_sp
|
|
|
|
BEFORE FIELD cod_mon
|
|
CALL busca_monedas()
|
|
|
|
|
|
|
|
|
|
|
|
ON KEY (control-w)
|
|
|
|
CASE
|
|
WHEN INFIELD(cod_sp)
|
|
CALL busca_suplidor()
|
|
LET int_flag = FALSE
|
|
IF factura.cod_sp_sec IS NULL OR factura.cod_sp_sec = 0 THEN
|
|
NEXT FIELD cod_sp
|
|
ELSE
|
|
DISPLAY BY NAME factura.cod_sp,factura.cod_sp_sec,nom_sup
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
EXIT CASE
|
|
|
|
WHEN INFIELD(cod_sp_sec)
|
|
CALL busca_suplidor()
|
|
LET int_flag = FALSE
|
|
IF factura.cod_sp_sec IS NULL OR factura.cod_sp_sec = 0 THEN
|
|
NEXT FIELD cod_sp
|
|
ELSE
|
|
DISPLAY BY NAME factura.cod_sp,factura.cod_sp_sec,nom_sup ATTRIBUTE(BLUE)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
EXIT CASE
|
|
END CASE
|
|
|
|
|
|
|
|
|
|
AFTER FIELD tipo_ncf
|
|
IF tipo_ncf IS NOT NULL THEN
|
|
SELECT a.descripcion INTO descripcion_ncf FROM cgtb00074 a
|
|
WHERE a.codigo_fiscal=tipo_ncf
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_ncf
|
|
END IF
|
|
|
|
display BY NAME descripcion_ncf
|
|
END IF
|
|
|
|
{AFTER FIELD cod_mon
|
|
IF cod_mon IS NOT NULL THEN
|
|
SELECT a.ncf INTO chncf FROM cotb00031 a
|
|
WHERE a.cod_mon = cod_mon
|
|
|
|
IF chncf = 'NO' THEN
|
|
EXIT INPUT
|
|
END IF
|
|
END IF}
|
|
AFTER FIELD ncf
|
|
|
|
IF NCF IS NOT NULL THEN
|
|
if Length(ncf CLIPPED ) <> 19 THEN
|
|
call fgl_winmessage('mensaje','La longitud no es valida debe tener 19 posiciones',1)
|
|
NEXT FIELD ncf
|
|
|
|
ELSE
|
|
|
|
LET conteo=0
|
|
SELECT count(*) INTO conteo FROM cptb00004 a
|
|
WHERE cod_sp=factura.cod_sp and cod_sp_sec=factura.cod_sp_sec and a.ncf=ncf
|
|
|
|
IF conteo > 0 THEN
|
|
call fgl_winmessage('mensaje','Este NCF ya esta registrado',1)
|
|
|
|
NEXT FIELD ncf
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
AFTER FIELD cod_sp ### Codigo Suplidor
|
|
|
|
If factura.cod_sp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
|
|
AFTER FIELD cod_sp_sec ### Secuencia Suplidor
|
|
IF factura.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
SELECT a.nom_sp INTO nom_sup FROM cotb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
LET cod_sp1 = factura.cod_sp
|
|
LET cod_sp2 = factura.cod_sp_sec
|
|
DISPLAY BY NAME nom_sup ATTRIBUTE (BLUE)#### Nombre del suplidor
|
|
|
|
SELECT cuenta_no INTO cuenta FROM cotb00001
|
|
WHERE cod_sp=factura.cod_sp AND cod_sp_sec=factura.cod_sp_sec
|
|
|
|
If cuenta IS NULL THEN
|
|
LET numero_msg = 393
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
|
|
BEFORE FIELD num_doc
|
|
LET factura.num_doc = NULL
|
|
DISPLAY BY NAME factura.num_doc
|
|
|
|
AFTER FIELD num_doc #### Numero del documento o factura
|
|
|
|
IF factura.num_doc IS NULL OR factura.num_doc[1] = " " THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
SELECT UNIQUE a.num_doc,a.status_t
|
|
INTO factura.num_doc,datos_usu.status_t
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND
|
|
a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.num_doc = factura.num_doc AND
|
|
a.tipo_doc = "FT"
|
|
|
|
##### Proceso para evitar se digite el mismo numero de factura
|
|
##### Para el mismo suplidor
|
|
|
|
IF datos_usu.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_orig
|
|
IF fecha1 IS NULL OR fecha1 > TODAY THEN
|
|
LET fecha1 = today
|
|
END IF
|
|
LET factura.fecha_orig = fecha1
|
|
DISPLAY BY NAME factura.fecha_orig
|
|
|
|
AFTER FIELD fecha_orig
|
|
IF factura.fecha_orig IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
IF factura.fecha_orig > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
LET fecha1 = factura.fecha_orig
|
|
LET p_fechas = factura.fecha_orig
|
|
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_proc
|
|
SELECT b.term_sp INTO term_sp FROM cotb00001 b
|
|
WHERE b.cod_sp=factura.cod_sp AND
|
|
b.cod_sp_sec=factura.cod_sp_sec
|
|
|
|
SELECT a.dias INTO dias FROM cotb00024 a
|
|
WHERE a.term_sp=term_sp
|
|
LET fecha_control = factura.fecha_orig
|
|
|
|
LET factura.fecha_proc = fecha_control + dias
|
|
|
|
|
|
|
|
|
|
IF factura.cod_sp = 23 THEN
|
|
LET factura.fecha_proc = factura.fecha_orig
|
|
DISPLAY BY NAME factura.fecha_proc ATTRIBUTE(BLUE)
|
|
NEXT FIELD valor_fac
|
|
END IF
|
|
DISPLAY BY NAME factura.fecha_proc ATTRIBUTE(BLUE)
|
|
|
|
{AFTER FIELD fecha_proc
|
|
IF factura.cod_sp = 23 THEN
|
|
LET factura.fecha_proc = factura.fecha_orig
|
|
DISPLAY BY NAME factura.fecha_proc ATTRIBUTE(BLUE)
|
|
END IF
|
|
|
|
IF factura.fecha_proc IS NULL OR factura.fecha_proc > TODAY THEN
|
|
LET factura.fecha_proc = today
|
|
END IF
|
|
DISPLAY BY NAME factura.fecha_proc ATTRIBUTE(BLUE)
|
|
|
|
LET fecha2 = factura.fecha_proc
|
|
}
|
|
AFTER FIELD valor_fac
|
|
IF factura.valor_fac IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_fac
|
|
END IF
|
|
IF factura.valor_fac < 0 THEN
|
|
LET valor = 0
|
|
NEXT FIELD valor_fac
|
|
END IF
|
|
AFTER FIELD tipo_oc
|
|
IF factura.tipo_oc is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD tipo_oc
|
|
END IF
|
|
|
|
AFTER FIELD orden_no
|
|
IF factura.orden_no IS NOT null THEN
|
|
SELECT UNIQUE a.cod_sp,a.cod_sp_sec INTo factura.cod_sp,factura.cod_sp_sec FROM cotb00014 a
|
|
WHERE a.tipo = factura.tipo_oc AND
|
|
a.num_oc = factura.orden_no AND
|
|
# a.cod_sp = factura.cod_sp AND
|
|
# a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 358
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_oc
|
|
END IF
|
|
|
|
DISPLAY BY NAME factura.cod_sp,factura.cod_sp_sec
|
|
#LET numero_msg = 16
|
|
#CALL msg(numero_msg)
|
|
# NEXT FIELD orden_no
|
|
END IF
|
|
|
|
|
|
AFTER INPUT
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
##### Proceso Para abortar OPERACION ######
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
CALL contab()
|
|
IF int_flag THEN
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET debito1 = debito1 + cuentas[curr1].debito
|
|
|
|
LET credito1 = cuentas[curr1].credito + credito1
|
|
DECLARE buscar4 CURSOR FOR
|
|
SELECT UNIQUE "N",a.num_doc,a.tipo_doc,a.valor *-1 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a =a.num_doc
|
|
AND a.tipo_doc IN ("ND") AND a.tipo = "ND" AND
|
|
a.status_t IS NULL
|
|
ORDER BY 2
|
|
|
|
LET idx = 1
|
|
FOREACH buscar4 INTO arrfac[idx].*
|
|
LET arr_fac1[idx].tipo = "N"
|
|
LET arr_fac1[idx].aplica_a = arrfac[idx].aplica_a
|
|
LET arr_fac1[idx].tipo_doc = arrfac[idx].tipo_doc
|
|
LET arr_fac1[idx].valor_prep = arrfac[idx].valor_prep
|
|
LET arr_fac1[idx].valor = arrfac[idx].valor_prep
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT UNIQUE "N",a.num_doc,a.tipo_doc,SUM(a.valor*-1) FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a is null
|
|
AND a.tipo_doc IN ("CP") AND
|
|
a.status_t IS NULL
|
|
GROUP BY a.num_doc,a.tipo_doc
|
|
ORDER BY a.num_doc
|
|
|
|
LET idx1 = idx
|
|
FOREACH buscar INTO arrfac[idx].*
|
|
SELECT SUM(a.valor) INTO valor1 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a IS NOT NULL AND a.num_doc = arrfac[idx].aplica_a AND
|
|
a.tipo_doc = "CP" AND a.status_t IS NULL
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0
|
|
END IF
|
|
LET arrfac[idx].valor_prep = arrfac[idx].valor_prep + valor1
|
|
LET arrfac[idx].valor = arrfac[idx].valor_prep
|
|
|
|
IF arrfac[idx].valor > 0 THEN
|
|
LET arr_fac1[idx1].tipo = "N"
|
|
LET arr_fac1[idx1].aplica_a = arrfac[idx].aplica_a
|
|
LET arr_fac1[idx1].tipo_doc = arrfac[idx].tipo_doc
|
|
LET arr_fac1[idx1].valor_prep = arrfac[idx].valor_prep
|
|
LET arr_fac1[idx1].valor = arrfac[idx].valor
|
|
LET idx1 = idx1 + 1
|
|
END IF
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
|
|
LET l = 1
|
|
FOR p = 1 TO idx
|
|
IF arr_fac1[p].aplica_a is not null THEN
|
|
IF arr_fac1[l].valor_prep > 0 THEN
|
|
LET arr_fac1[l].tipo = "N"
|
|
LET arr_fac1[l].aplica_a = arrfac[p].aplica_a
|
|
LET arr_fac1[l].tipo_doc = arrfac[p].tipo_doc
|
|
LET arr_fac1[l].valor_prep = arrfac[p].valor_prep
|
|
LET arr_fac1[l].valor = arrfac[p].valor_prep
|
|
LET l = l + 1
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
CALL SET_COUNT(l - 1)
|
|
LABEL volver1:
|
|
CALL arr_fac1.clear()
|
|
INPUT ARRAY arr_fac1 WITHOUT DEFAULTS FROM factura1.*
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET fila = scr_line()
|
|
|
|
AFTER FIELD valor ##### Valor del documento o factura
|
|
|
|
IF arr_fac1[curr].valor IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor
|
|
END IF
|
|
|
|
IF arr_fac1[curr].valor > arr_fac1[curr].valor_prep THEN
|
|
LET numero_msg = 162
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
LET total1 = 0
|
|
FOR k = 1 TO arr_curr()
|
|
IF arr_fac1[k].tipo = "S" THEN
|
|
LET total1 = total1 + arr_fac1[k].valor
|
|
END IF
|
|
END FOR
|
|
|
|
IF total1 > factura.valor_fac THEN
|
|
LET numero_msg = 162
|
|
CALL msg(numero_msg)
|
|
GOTO volver1
|
|
END IF
|
|
|
|
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
|
|
GOTO volver
|
|
|
|
END FUNCTION
|
|
|
|
###### Proceso de Modificacion de registros
|
|
|
|
FUNCTION cppcmd000()
|
|
|
|
##### Criterio de Busqueda de informacion a consultar y/o modificar
|
|
|
|
CONSTRUCT CRITERIO ON b.cod_sp,b.cod_sp_sec,b.num_doc,b.fecha_orig,
|
|
b.fecha_proc,b.valor,b.detalle,a.codigo_fiscal,a.ncf
|
|
FROM cod_sp,cod_sp_sec,num_doc,fecha_orig,fecha_proc,
|
|
valor,detalle,tipo_ncf,ncf
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
##### Busquedas de los datos generales
|
|
|
|
LET selec =
|
|
"SELECT b.cod_sp,b.cod_sp_sec,b.num_doc,CONVERT(CHAR(10),b.fecha_orig,103), ",
|
|
"CONVERT(CHAR(10),b.fecha_proc,103),b.valor,b.tipo,b.orden_no,b.detalle,b.status_t,b.us_crea, ",
|
|
"CAST(b.fech_crea AS CHAR(16)),b.us_mod,CAST(b.fech_mod AS CHAR(16)),a.codigo_fiscal, ",
|
|
" a.ncf,(a.monto_itbi),foto_producto,nombre_file_foto",
|
|
" FROM cptb00001 b LEFT OUTER join cptb00004 a ON b.num_doc = a.num_doc and ",
|
|
" b.cod_sp = a.cod_sp AND b.cod_sp_sec = a.cod_sp_sec ",
|
|
" WHERE ",
|
|
" b.status_t is null AND b.tipo_doc = 'FT' And ",
|
|
criterio clipped," ORDER BY b.fecha_orig,b.num_doc "
|
|
|
|
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
#### Buscando el primer registro
|
|
|
|
FETCH FIRST datos INTO factura.*,datos_usu.*,tipo_ncf,ncf,itbis,foto,nombre_file_foto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL suplidor(factura.cod_sp,factura.cod_sp_sec,tipo_ncf) RETURNING nom_sup,descripcion_ncf,cuenta_mayor
|
|
|
|
DISPLAY BY NAME factura.*,nom_sup,descripcion_ncf,tipo_ncf,ncf,itbis,foto,nombre_file_foto ATTRIBUTE(BLUE)
|
|
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO factura.*,datos_usu.*,tipo_ncf,ncf,itbis,foto,nombre_file_foto
|
|
DISPLAY foto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
|
|
CALL suplidor(factura.cod_sp,factura.cod_sp_sec,tipo_ncf) RETURNING nom_sup,descripcion_ncf,cuenta_mayor
|
|
|
|
DISPLAY BY NAME factura.*,nom_sup,descripcion_ncf,tipo_ncf,ncf,itbis ATTRIBUTE(BLUE)
|
|
|
|
COMMAND "Anterior"
|
|
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO factura.*,datos_usu.*,tipo_ncf,ncf,itbis,foto,nombre_file_foto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL suplidor(factura.cod_sp,factura.cod_sp_sec,tipo_ncf) RETURNING nom_sup,descripcion_ncf,cuenta_mayor
|
|
|
|
DISPLAY BY NAME factura.*,nom_sup,descripcion_ncf,tipo_ncf,ncf,itbis ATTRIBUTE(BLUE)
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO factura.*,datos_usu.*,tipo_ncf,ncf,itbis,foto,nombre_file_foto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL suplidor(factura.cod_sp,factura.cod_sp_sec,tipo_ncf) RETURNING nom_sup,descripcion_ncf,cuenta_mayor
|
|
|
|
DISPLAY BY NAME factura.*,nom_sup,descripcion_ncf,tipo_ncf,ncf,itbis ATTRIBUTE(BLUE)
|
|
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO factura.*,datos_usu.*,tipo_ncf,ncf,itbis,foto,nombre_file_foto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL suplidor(factura.cod_sp,factura.cod_sp_sec,tipo_ncf) RETURNING nom_sup,descripcion_ncf,cuenta_mayor
|
|
|
|
DISPLAY BY NAME factura.*,nom_sup,descripcion_ncf,tipo_ncf,ncf,itbis ATTRIBUTE(BLUE)
|
|
|
|
###### Escoger registro para modificar
|
|
|
|
COMMAND "Escoger"
|
|
"<Esc>Actualiza Registro <Delete>Cancela Operacion <Ctrl-P> Codigo Suplidor"
|
|
|
|
LET p_fechas = factura.fecha_orig
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
LET debe_ir = "N"
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
LET debe_ir = "S"
|
|
RETURN
|
|
END IF
|
|
SELECT a.descripcion INTO descripcion_ncf FROM cgtb00074 a
|
|
WHERE a.codigo_fiscal=tipo_ncf
|
|
|
|
SELECT a.codigo_fiscal,a.ncf,a.monto_itbi
|
|
INTO tipo_ncf, ncf,itbis FROM cptb00004 a
|
|
WHERE a.cod_sp=factura.cod_sp AND a.cod_sp_sec=factura.cod_sp_sec
|
|
AND a.num_doc=factura.num_doc
|
|
|
|
DISPLAY BY NAME tipo_ncf, ncf,itbis,descripcion_ncf
|
|
|
|
IF debe_ir = "N" THEN
|
|
INPUT BY NAME factura.fecha_orig,factura.fecha_proc,factura.valor_fac,itbis,
|
|
factura.tipo_oc,factura.orden_no,tipo_ncf,cod_mon,ncf,
|
|
factura.detalle WITHOUT DEFAULTS
|
|
AFTER FIELD itbis
|
|
IF itbis IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD itbis
|
|
END IF
|
|
{
|
|
AFTER FIELD tipo_oc
|
|
IF factura.tipo_oc is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_oc
|
|
END IF
|
|
AFTER FIELD orden_no
|
|
IF factura.orden_no is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_oc
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tipo,a.num_oc FROM cotb00014 a
|
|
WHERE a.tipo = factura.tipo_oc AND
|
|
a.num_oc = factura.orden_no AND
|
|
a.cod_sp = factura.cod_sp AND
|
|
a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 358
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_oc
|
|
END IF
|
|
}
|
|
BEFORE FIELD cod_mon
|
|
CALL busca_monedas()
|
|
|
|
AFTER FIELD fecha_orig
|
|
IF factura.fecha_orig IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
LET p_fechas = factura.fecha_orig
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
AFTER FIELD fecha_proc
|
|
IF factura.fecha_proc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_proc
|
|
END IF
|
|
|
|
DISPLAY BY NAME factura.fecha_proc ATTRIBUTE(BLUE)
|
|
|
|
AFTER FIELD valor_fac
|
|
IF factura.valor_fac IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_fac
|
|
END IF
|
|
{
|
|
IF factura.cod_sp = 21 OR
|
|
factura.cod_sp = 22 THEN
|
|
NEXT FIELD tipo_oc
|
|
ELSE
|
|
NEXT FIELD detalle
|
|
END IF
|
|
}
|
|
AFTER INPUT
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
##### Proceso Para abortar OPERACION ######
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
LET debe_ir = "N"
|
|
CALL contab()
|
|
DECLARE busca2 CURSOR FOR
|
|
SELECT "S",a.num_doc,a.tipo_doc,a.valor * -1,a.valor * -1
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a = factura.num_doc AND
|
|
a.tipo = "ND" AND
|
|
a.status_t IS NULL
|
|
ORDER BY 2
|
|
LET idx = 1
|
|
FOREACH busca2 INTO arrfac[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
DECLARE busca3 CURSOR FOR
|
|
SELECT "N",a.num_doc,a.tipo_doc,a.valor * -1,a.valor * -1
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a = a.num_doc AND
|
|
a.tipo = "ND" AND
|
|
a.status_t IS NULL
|
|
ORDER BY 2
|
|
|
|
FOREACH busca3 INTO arrfac[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
DECLARE buscar1 CURSOR FOR
|
|
SELECT "S",a.num_doc,a.tipo_doc,a.valor * -1,a.valor * -1
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a = factura.num_doc AND a.tipo_doc in ("CP") AND
|
|
a.status_t IS NULL
|
|
ORDER BY 2
|
|
|
|
FOREACH buscar1 INTO arrfac[idx].*
|
|
SELECT SUM(a.valor) INTO valor2 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a IS NULL AND a.num_doc = arrfac[idx].aplica_a AND
|
|
a.tipo_doc in ("CP") AND a.status_t IS NULL
|
|
|
|
SELECT SUM(a.valor) INTO valor1 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a IS NOT NULL AND a.num_doc = arrfac[idx].aplica_a AND
|
|
a.tipo_doc in ("CP") AND a.status_t IS NULL AND
|
|
a.aplica_a != arrfac[idx].aplica_a
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0
|
|
END IF
|
|
|
|
IF valor2 IS NULL THEN
|
|
LET valor2 = 0
|
|
END IF
|
|
LET arrfac[idx].valor = arrfac[idx].valor_prep
|
|
LET arrfac[idx].valor_prep = valor2 - valor1
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
DECLARE buscar20 CURSOR FOR
|
|
SELECT UNIQUE "N",a.num_doc,a.tipo_doc,SUM(a.valor*-1) FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a is null
|
|
AND a.tipo_doc IN ("CP") AND
|
|
a.status_t IS NULL
|
|
GROUP BY a.num_doc,a.tipo_doc
|
|
ORDER BY a.num_doc
|
|
|
|
LET idx1 = idx
|
|
FOREACH buscar20 INTO arrfac[idx].*
|
|
SELECT SUM(a.valor) INTO valor1 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.aplica_a IS NOT NULL AND a.num_doc = arrfac[idx].aplica_a AND
|
|
a.tipo_doc = "CP" AND a.status_t IS NULL
|
|
|
|
IF valor1 IS NULL THEN
|
|
LET valor1 = 0
|
|
END IF
|
|
LET arrfac[idx].valor_prep = arrfac[idx].valor_prep + valor1
|
|
LET arrfac[idx].valor = arrfac[idx].valor_prep
|
|
|
|
IF arrfac[idx].valor > 0 THEN
|
|
LET arr_fac1[idx1].tipo = "N"
|
|
LET arr_fac1[idx1].aplica_a = arrfac[idx].aplica_a
|
|
LET arr_fac1[idx1].tipo_doc = arrfac[idx].tipo_doc
|
|
LET arr_fac1[idx1].valor_prep = arrfac[idx].valor_prep
|
|
LET arr_fac1[idx1].valor = arrfac[idx].valor
|
|
LET idx1 = idx1 + 1
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL SET_COUNT(idx - 1)
|
|
LABEL volver2:
|
|
INPUT ARRAY arrfac WITHOUT DEFAULTS FROM factura1.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET fila = scr_line()
|
|
|
|
AFTER FIELD aplica_a
|
|
IF arrfac[curr].tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
IF arrfac[curr].aplica_a IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arrfac[curr].tipo_doc = "CP" THEN
|
|
SELECT SUM(a.valor) INTO valor3 FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.tipo_doc = "CP" AND a.num_doc = arrfac[curr].aplica_a AND
|
|
a.aplica_a IS NOT NULL AND a.num_doc != arrfac[curr].aplica_a AND
|
|
a.status_t IS NULL
|
|
|
|
SELECT SUM(a.valor * -1) INTO valor2
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_sec = factura.cod_sp_sec
|
|
AND a.tipo_doc = "CP" AND a.num_doc = arrfac[curr].aplica_a AND
|
|
a.aplica_a IS NULL AND a.status_t IS NULL
|
|
|
|
IF valor2 IS NULL THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF valor2 IS NULL THEN
|
|
LET valor2 = 0
|
|
END IF
|
|
IF valor3 IS NULL THEN
|
|
LET valor3 = 0
|
|
END IF
|
|
LET arrfac[curr].valor_prep = valor2 + valor3
|
|
IF arrfac[curr].valor IS NULL THEN
|
|
LET arrfac[curr].valor = arrfac[curr].valor_prep
|
|
END IF
|
|
IF arrfac[curr].valor > arrfac[curr].valor_prep THEN
|
|
LET numero_msg = 162
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor
|
|
END IF
|
|
ELSE
|
|
SELECT unique valor*-1 INTO valor2 FROM cptb00001
|
|
WHERE num_doc = arrfac[curr].aplica_a and
|
|
tipo_doc = "ND" and
|
|
cod_sp = factura.cod_sp and
|
|
cod_sp_sec = factura.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY arrfac[curr].aplica_a,arrfac[curr].tipo_doc,arrfac[curr].valor_prep,
|
|
arrfac[curr].valor
|
|
TO factura1[fila].aplica_a,factura1[fila].tipo_doc,factura1[fila].valor_prep,
|
|
factura1[fila].valor
|
|
|
|
AFTER FIELD valor ##### Valor del documento o factura
|
|
|
|
IF arrfac[curr].valor IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor
|
|
END IF
|
|
|
|
IF arrfac[curr].valor > arrfac[curr].valor_prep THEN
|
|
LET numero_msg = 162
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor
|
|
END IF
|
|
|
|
END INPUT
|
|
############## TERMINA INPUT ARRAY#####################################
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
LET total1 = 0
|
|
FOR k = 1 TO arr_curr()
|
|
IF arrfac[k].tipo = "S" THEN
|
|
LET total1 = total1 + arrfac[k].valor
|
|
END IF
|
|
END FOR
|
|
|
|
IF total1 > factura.valor_fac THEN
|
|
LET numero_msg = 162
|
|
CALL msg(numero_msg)
|
|
GOTO volver2
|
|
END IF
|
|
|
|
###### Insertando registros en la Maestra de cuentas por Pagar ####
|
|
|
|
LET cod_sp1 = factura.cod_sp
|
|
|
|
DELETE FROM cptb00001
|
|
WHERE @aplica_a = factura.num_doc AND
|
|
@cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@tipo_doc = "CP" AND fecha_orig > "01/01/2008"
|
|
|
|
UPDATE cptb00001 set (fecha_orig,fecha_proc,orden_no,tipo,detalle,
|
|
us_mod,fech_mod,valor) =
|
|
(factura.fecha_orig,factura.fecha_proc,
|
|
factura.orden_no,factura.tipo_oc,
|
|
factura.detalle,
|
|
usuarios,GETDATE(),factura.valor_fac)
|
|
WHERE @num_doc = factura.num_doc
|
|
AND @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@tipo_doc = "FT"
|
|
|
|
|
|
|
|
BEGIN work
|
|
LET k = 0
|
|
FOR idx = 1 to ARR_COUNT()
|
|
LET k = k + 1
|
|
IF arrfac[idx].tipo = "S" AND arrfac[idx].valor > 0 THEN
|
|
LET arrfac[idx].valor = arrfac[idx].valor * -1
|
|
IF arrfac[idx].tipo_doc = "CP" THEN
|
|
|
|
INSERT INTO cptb00001 values (arrfac[idx].tipo_doc,
|
|
arrfac[idx].aplica_a,
|
|
factura.cod_sp,factura.cod_sp_sec,factura.fecha_orig,
|
|
factura.fecha_proc,ordenes[idx].*,factura.num_doc,
|
|
null,arrfac[idx].valor,null,null,SUSER_SNAME(),GETDATE(),SUSER_SNAME(),
|
|
GETDATE(),filedestino,pimagen,nombre_file_foto)
|
|
ELSE
|
|
UPDATE cptb00001 SET aplica_a = factura.num_doc
|
|
WHERE num_doc = arr_fac1[idx].aplica_a and
|
|
tipo_doc = "ND" AND
|
|
tipo = "ND"
|
|
END IF
|
|
END IF
|
|
IF arrfac[idx].tipo = "N" THEN
|
|
UPDATE cptb00001 SET aplica_a = num_doc
|
|
WHERE num_doc = arrfac[idx].aplica_a and
|
|
tipo_doc = "ND" AND
|
|
tipo = "ND"
|
|
END IF
|
|
END FOR
|
|
|
|
IF k IS NULL OR k = 0 THEN
|
|
LET k = 1
|
|
END IF
|
|
|
|
|
|
DELETE FROM cptb00003 WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc AND fecha > "01/01/2008"
|
|
|
|
|
|
|
|
|
|
##para buscar las cuentas contables
|
|
|
|
SELECT cuenta_no INTO cuenta FROM cotb00001
|
|
WHERE cod_sp=factura.cod_sp AND cod_sp_sec=factura.cod_sp_sec
|
|
LET credito=factura.valor_fac
|
|
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuenta,null,null,null,null,null,
|
|
0,factura.valor_fac,NULL,NULL,NUll,SUSER_SNAME(),GETDATE())
|
|
|
|
|
|
|
|
IF cuenta_itibis IS NOT NULL AND itbis > 0 THEN
|
|
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuenta_itibis,null,null,null,null,null,
|
|
0,itbis,NULL,SUSER_SNAME(),GETDATE(),NULL,NUll)
|
|
|
|
END IF
|
|
|
|
FOR idx = 1 TO cuentas.getLength()
|
|
IF cuentas[idx].cuenta_no IS NOT NULL THEN
|
|
|
|
|
|
IF cuentas[idx].debito <> 0 OR
|
|
cuentas[idx].credito <> 0 THEN
|
|
|
|
IF cuentas[idx].debito IS NULL THEN
|
|
LET cuentas[idx].debito = 0
|
|
END IF
|
|
|
|
IF cuentas[idx].credito IS NULL THEN
|
|
LET cuentas[idx].credito = 0
|
|
END IF
|
|
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuentas[idx].cuenta_no,
|
|
cuentas[idx].departamento,cuentas[idx].num_doc,cuentas[idx].cod_aux,
|
|
cuentas[idx].sec_aux,factura.detalle,cuentas[idx].debito,cuentas[idx].credito,
|
|
NULL,NULL,NUll,SUSER_SNAME(),GETDATE())
|
|
|
|
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
CALL cuadrada(factura.cod_sp,factura.cod_sp_sec,factura.num_doc) RETURNING cuadradatrx
|
|
IF cuadradatrx THEN
|
|
COMMIT WORK
|
|
ELSE
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("MENSAJE","HUBO UN ERROR EN EL CUADRE DE LAS CUENTAS","STOP")
|
|
END IF
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
IF debe_ir = "S" THEN
|
|
LET handler = configureOutput("SVG")
|
|
|
|
START REPORT apl_fact TO XML HANDLER handler
|
|
|
|
FOR idx = 1 TO k
|
|
|
|
IF arrfac[idx].tipo IS NOT NULL THEN
|
|
LET j.cod_sp = factura.cod_sp
|
|
LET j.cod_sp_sec = factura.cod_sp_sec
|
|
LET j.nom_sup = nom_sup
|
|
LET j.num_doc = factura.num_doc
|
|
LET j.valor_fac = factura.valor_fac
|
|
LET j.detalle = factura.detalle
|
|
LET j.tipo = arrfac[idx].tipo
|
|
LET j.aplica_a = arrfac[idx].aplica_a
|
|
LET j.valor = arrfac[idx].valor
|
|
|
|
OUTPUT TO REPORT apl_fact(j.*)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT apl_fact
|
|
##### Proceso Para Anular una Factura
|
|
END IF
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
|
|
LET bandera = 0
|
|
LET p_fechas = factura.fecha_orig
|
|
{
|
|
CALL prd(p_fechas)
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
}
|
|
|
|
# Inserta en la tabla Historica Registros Eliminados
|
|
|
|
INSERT INTO cptb00006
|
|
(tipo_doc, num_doc, cod_sp, cod_sp_sec, fecha_orig, fecha_proc, orden_no, tipo,
|
|
aplica_a, cta_ctble, valor, detalle, status_t, us_crea, fech_crea, us_mod, fech_mod)
|
|
select z.tipo_doc, z.num_doc, z.cod_sp, z.cod_sp_sec, z.fecha_orig, z.fecha_proc, z.orden_no, z.tipo,
|
|
z.aplica_a, z.cta_ctble, z.valor, z.detalle, z.status_t, z.us_crea, z.fech_crea, z.us_mod, z.fech_mod
|
|
from cptb00001 z
|
|
WHERE z.tipo_doc = 'FT' AND
|
|
z.cod_sp = factura.cod_sp AND
|
|
z.cod_sp_sec = factura.cod_sp_sec AND
|
|
z.aplica_a = factura.num_doc
|
|
|
|
|
|
UPDATE cptb00006 set us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @tipo_doc = "FT" AND
|
|
@cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@aplica_a = factura.num_doc
|
|
#-------------------------------------------------------------------------
|
|
|
|
DELETE FROM cptb00001
|
|
WHERE @tipo_doc = "FT" AND
|
|
@cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@aplica_a = factura.num_doc and fecha_orig > "01/01/2008"
|
|
|
|
# Inserta en la tabla Historica Registros Eliminados
|
|
INSERT INTO cptb00005 select *from cptb00003
|
|
WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc
|
|
|
|
UPDATE cptb00005 set us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc
|
|
#--------------------------------------------------------------------------
|
|
SELECT UNIQUE a.ref INTO ent_num FROM cgtb00004 a
|
|
where a.cod_sp = factura.cod_sp AND
|
|
a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.factura = factura.num_doc
|
|
|
|
DELETE FROM cgtb00004 WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc
|
|
DELETE FROM cptb00003
|
|
WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc and fecha > "01/01/2008"
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
#### Busqueda de datos generales referente a un suplidor
|
|
FUNCTION busca_suplidor()
|
|
|
|
LET int_flag = FALSE
|
|
OPEN WINDOW busca_sp AT 10,3 WITH FORM "cpfmwd001"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST)
|
|
|
|
CONSTRUCT criterio ON a.nom_sp FROM nom_sp
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW busca_sp
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec = "SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp FROM cotb00001 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY 3 "
|
|
|
|
PREPARE comando1 FROM selec
|
|
DECLARE busc CURSOR FOR comando1
|
|
|
|
LET idx = 1
|
|
FOREACH busc INTO supl[idx].cod_sp,supl[idx].cod_sp_sec,supl[idx].nom_sp
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx -1)
|
|
|
|
DISPLAY ARRAY supl TO s_suplid.*
|
|
LET curr = ARR_CURR()
|
|
|
|
LET factura.cod_sp = supl[curr].cod_sp
|
|
LET factura.cod_sp_sec = supl[curr].cod_sp_sec
|
|
LET nom_sup = supl[curr].nom_sp
|
|
CLOSE WINDOW busca_sp
|
|
END FUNCTION
|
|
|
|
FUNCTION contab()
|
|
DEFINE tdebito,tcredito,diferencia DEC(12,2)
|
|
LET int_flag = FALSE
|
|
OPEN WINDOW cpfmwd007 AT 10,3 WITH FORM "cpfmwd007"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST)
|
|
|
|
DECLARE busca_ctas CURSOR FOR
|
|
SELECT a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc,
|
|
a.debito,a.credito
|
|
FROM cptb00003 a,cotb00001 b
|
|
WHERE a.cod_sp = factura.cod_sp AND
|
|
a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.cod_sp = b.cod_sp AND
|
|
a.cod_sp_Sec = b.cod_sp_Sec AND
|
|
a.factura = factura.num_doc AND
|
|
a.cuenta_no <> b.cuenta_no
|
|
|
|
|
|
LET idx2 = 1
|
|
LET tdebito = 0
|
|
LET tcredito = 0
|
|
FOREACH busca_ctas INTO cuentas[idx2].*
|
|
LET tdebito = tdebito + cuentas[idx2].debito
|
|
LET tcredito = tcredito + cuentas[idx2].credito
|
|
LET idx2 = idx2 + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx2 - 1)
|
|
DISPLAY BY NAME tdebito,tcredito
|
|
LABEL arreglo1:
|
|
LET int_flag = FALSE
|
|
INPUT ARRAY cuentas WITHOUT DEFAULTS FROM cuentas1.*
|
|
BEFORE ROW
|
|
LET curr = ARR_CURR()
|
|
LET curr1 = SCR_LINE()
|
|
|
|
ON KEY (control-W)
|
|
LET curr1 = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (cuenta_no)
|
|
CALL busca_cuenta()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 159
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
LET descripcion = cuentas1[curr1].descripcion
|
|
LET cuentas[curr].cuenta_no = cuentas1[curr1].cuenta_no
|
|
|
|
DISPLAY BY NAME cuentas[curr].cuenta_no,descripcion
|
|
END CASE
|
|
|
|
|
|
AFTER FIELD cuenta_no
|
|
|
|
IF cuentas[curr].cuenta_no IS NOT NULL THEN
|
|
SELECT a.descripcion,a.cata,a.depto,a.nivel,a.ref
|
|
INTO descripcion,cat,dpto,niv,refe
|
|
FROM cgtb00001 a
|
|
WHERE a.status_t IS NULL AND a.cuenta_no = cuentas[curr].cuenta_no
|
|
AND a.nivel = 3
|
|
|
|
IF STATUS = NOTFOUND OR descripcion IS NULL THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
DISPLAY BY NAME descripcion ATTRIBUTE(BLUE)
|
|
|
|
IF cuentas[curr].cuenta_no = cuenta_mayor THEN
|
|
CALL msg(192)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
IF cat = "S" THEN
|
|
IF cuentas[curr].cod_aux IS NULL THEN
|
|
LET cuentas[curr].cod_aux = factura.cod_sp
|
|
END IF
|
|
IF cuentas[curr].sec_aux IS NULL THEN
|
|
LET cuentas[curr].sec_aux = factura.cod_sp_sec
|
|
END IF
|
|
END IF
|
|
|
|
IF refe = "S" THEN
|
|
IF cuentas[curr].num_doc IS NULL THEN
|
|
LET cuentas[curr].num_doc = factura.orden_no
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY cuentas[curr].cod_aux,cuentas[curr].sec_aux,cuentas[curr].num_doc
|
|
TO cuentas1[curr1].cod_aux,cuentas1[curr1].sec_aux,cuentas1[curr1].num_doc
|
|
|
|
END IF
|
|
BEFORE FIELD departamento
|
|
IF dpto = "N" OR dpto IS NULL THEN
|
|
LET cuentas[curr].departamento = NULL
|
|
NEXT FIELD cod_aux
|
|
END IF
|
|
|
|
AFTER FIELD departamento
|
|
IF cuentas[curr].departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
SELECT UNIQUE a.departamento FROM adtb00001 a
|
|
WHERE a.status_t IS NULL AND a.departamento = cuentas[curr].departamento
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
BEFORE FIELD cod_aux
|
|
IF cat = "N" OR cat IS NULL THEN
|
|
|
|
LET cuentas[curr].cod_aux = NULL
|
|
LET cuentas[curr].sec_aux = NULL
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
AFTER FIELD cod_aux
|
|
IF cat = "N" OR cat IS NULL THEN
|
|
|
|
LET cuentas[curr].cod_aux = NULL
|
|
LET cuentas[curr].sec_aux = NULL
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
BEFORE FIELD num_doc
|
|
IF refe = "N" OR refe IS NULL THEN
|
|
|
|
LET cuentas[curr].num_doc = NULL
|
|
NEXT FIELD debito
|
|
END IF
|
|
|
|
AFTER FIELD num_doc
|
|
IF refe = "N" OR refe IS NULL THEN
|
|
|
|
LET cuentas[curr].num_doc = NULL
|
|
NEXT FIELD debito
|
|
END IF
|
|
|
|
|
|
AFTER ROW
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
IF cuentas[curr].cuenta_no is not null THEN
|
|
IF cuentas[curr].debito = 0 and
|
|
cuentas[curr].credito = 0 THEN
|
|
LET numero_msg = 207
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
AFTER INPUT
|
|
LET tdebito =0
|
|
LET tcredito=0
|
|
FOR idx = 1 TO cuentas.getLength()
|
|
IF cuentas[idx].cuenta_no IS NOT NULL THEN
|
|
LET tdebito = tdebito + cuentas[idx].debito
|
|
LET tcredito = tcredito + cuentas[idx].credito
|
|
END IF
|
|
END FOR
|
|
DISPLAY BY NAME tdebito,tcredito
|
|
|
|
|
|
LET tdebito = 0
|
|
LET tcredito = 0
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF cuentas[idx].debito is null THEN
|
|
LET cuentas[idx].debito = 0
|
|
END IF
|
|
|
|
IF cuentas[idx].credito is null THEN
|
|
LET cuentas[idx].credito = 0
|
|
END IF
|
|
|
|
LET tdebito = tdebito + cuentas[idx].debito
|
|
LET tcredito = cuentas[idx].credito + tcredito
|
|
END FOR
|
|
|
|
LET tcredito = tcredito + factura.valor_fac
|
|
LET diferencia = tdebito-tcredito
|
|
|
|
DISPLAY BY NAME diferencia,tdebito,tcredito
|
|
IF diferencia <> 0 THEN
|
|
CALL msg(174)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
BEGIN WORK
|
|
###### Insertando registros en la Maestra de cuentas por Pagar ####
|
|
|
|
LET cod_sp1 = factura.cod_sp
|
|
SELECT * FROM cptb00001
|
|
WHERE num_doc=factura.num_doc AND cod_sp=factura.cod_sp AND cod_sp_sec=factura.cod_sp_sec AND tipo_doc="FT"
|
|
IF status = NOTFOUND THEN
|
|
INSERT INTO cptb00001 values ("FT",factura.num_doc,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.fecha_orig,factura.fecha_proc,
|
|
factura.orden_no,factura.tipo_oc,
|
|
factura.num_doc,null,factura.valor_fac,factura.detalle,null,usuarios,
|
|
GETDATE(),null,NULL,filedestino,pimagen,nombre_file_foto)
|
|
END IF
|
|
|
|
IF ncf IS NOT NULL THEN
|
|
SELECT a.cod_sp FROM cptb00004 a WHERE a.cod_sp = factura.cod_sp AND a.cod_sp_Sec = factura.cod_sp_sec AND
|
|
a.num_doc = factura.num_doc
|
|
DISPLAY "update "
|
|
IF STATUS = NOTFOUND THEN
|
|
DISPLAY "update 2"
|
|
INSERT INTO cptb00004 (cod_sp, cod_sp_sec, num_doc,codigo_fiscal, ncf,
|
|
monto_itbi, US_CREA, FECH_CREA,cod_moneda)
|
|
values(factura.cod_sp,factura.cod_sp_sec,factura.num_doc, tipo_ncf,ncf,itbis,suser_sname(),getdate(),
|
|
cod_mon)
|
|
ELSE
|
|
UPDATE cptb00004 SET codigo_fiscal = tipo_ncf,
|
|
ncf = ncf,
|
|
monto_itbi = itbis,
|
|
us_crea =suser_sname(),
|
|
fech_crea =getdate()
|
|
WHERE cod_sp = factura.cod_sp AND cod_sp_sec = factura.cod_sp_sec AND
|
|
num_doc = factura.num_doc
|
|
END IF
|
|
END IF
|
|
|
|
{ IF ncf IS NOT NULL THEN
|
|
|
|
INSERT INTO cptb00004 (cod_sp, cod_sp_sec, num_doc,codigo_fiscal, ncf,
|
|
monto_itbi, US_CREA, FECH_CREA,cod_moneda)
|
|
values(factura.cod_sp,factura.cod_sp_sec,factura.num_doc, tipo_ncf,ncf,itbis,suser_sname(),getdate(),
|
|
cod_mon)
|
|
END IF
|
|
}
|
|
FOR idx = 1 TO arr_fac1.getLength()
|
|
IF arr_fac1[idx].tipo = "S" AND arr_fac1[idx].valor > 0 THEN
|
|
IF arr_fac1[idx].tipo_doc = "CP" THEN
|
|
LET arrfac[idx].valor = arrfac[idx].valor * -1
|
|
|
|
INSERT INTO cptb00001 values (arr_fac1[idx].tipo_doc,
|
|
arr_fac1[idx].aplica_a,
|
|
factura.cod_sp,factura.cod_sp_sec,factura.fecha_orig,
|
|
factura.fecha_proc,ordenes[idx].*,factura.num_doc,
|
|
null,arr_fac1[idx].valor,null,null,SUSER_SNAME(),GETDATE(),null,NULL,filedestino,pimagen,nombre_file_foto)
|
|
ELSE
|
|
UPDATE cptb00001 set aplica_a = factura.num_doc
|
|
WHERE num_doc = arr_fac1[idx].aplica_a and
|
|
tipo_doc = "ND" AND
|
|
tipo = "ND"
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
LET ent_num=null
|
|
SELECT UNIQUE a.ref INTO ent_num FROM cgtb00004 a
|
|
where a.cod_sp = factura.cod_sp AND
|
|
a.cod_sp_sec = factura.cod_sp_sec AND
|
|
a.factura = factura.num_doc
|
|
|
|
DELETE FROM cptb00003 WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc AND fecha > "01/01/2008"
|
|
DELETE FROM cgtb00004 WHERE @cod_sp = factura.cod_sp AND
|
|
@cod_sp_sec = factura.cod_sp_sec AND
|
|
@factura = factura.num_doc
|
|
{
|
|
IF factura.cod_sp = 22 THEN
|
|
LET cuenta = "2114"
|
|
END IF
|
|
|
|
IF factura.cod_sp = 23 THEN
|
|
LET cuenta = "2113"
|
|
END IF
|
|
|
|
IF factura.cod_sp = 24 THEN
|
|
LET cuenta = "2116"
|
|
END IF
|
|
}
|
|
##para buscar las cuentas contables
|
|
|
|
SELECT cuenta_no INTO cuenta FROM cotb00001
|
|
WHERE cod_sp=factura.cod_sp AND cod_sp_sec=factura.cod_sp_sec
|
|
LET credito=factura.valor_fac
|
|
|
|
FOR idx = 1 TO cuentas.getLength()
|
|
IF cuentas[idx].cuenta_no IS NOT NULL THEN
|
|
IF idx = 1 THEN
|
|
|
|
IF cuenta IS NOT NULL then
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuenta,null,null,null,null,null,
|
|
0,credito,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL)
|
|
IF ent_num IS NULL THEN
|
|
LET numero_ent = 18
|
|
LET pano = YEAR(factura.fecha_orig)
|
|
|
|
LET tiempo = MONTH(factura.fecha_orig) using "&&",pano[3,4]
|
|
|
|
SELECT MAX(a.ref[7,9]) INTO ultimo FROM cgtb00004 a
|
|
WHERE a.ref[4,5] = numero_ent and a.ref[11,14] = tiempo
|
|
|
|
IF ultimo is null THEN
|
|
LET ultimo = 0
|
|
END IF
|
|
LET ultimo = ultimo + 1
|
|
LET entrada_no = "ED.18-",ultimo USING "&&&","/",tiempo
|
|
ELSE
|
|
LET entrada_no=ent_num
|
|
END IF
|
|
INSERT INTO cgtb00004
|
|
VALUES(factura.fecha_orig,1,entrada_no,cuenta,null,null,null,null,NULL,NULL,NULL,0,factura.valor_fac,NULL,suser_sname(),getdate(),NULL,NULL,
|
|
factura.cod_sp,factura.cod_sp_sec,factura.num_doc)
|
|
|
|
END IF
|
|
|
|
IF cuenta_itibis IS NOT NULL THEN
|
|
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuenta_itibis,null,null,null,null,null,
|
|
0,itbis,NULL,SUSER_SNAME(),GETDATE(),NULL,NUll)
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
IF cuentas[idx].debito <> 0 OR
|
|
cuentas[idx].credito <> 0 THEN
|
|
|
|
IF cuentas[idx].debito IS NULL THEN
|
|
LET cuentas[idx].debito = 0
|
|
END IF
|
|
|
|
IF cuentas[idx].credito IS NULL THEN
|
|
LET cuentas[idx].credito = 0
|
|
END IF
|
|
|
|
INSERT INTO cptb00003 VALUES (factura.fecha_orig,factura.cod_sp,
|
|
factura.cod_sp_sec,factura.num_doc,cuentas[idx].cuenta_no,
|
|
cuentas[idx].departamento,cuentas[idx].num_doc,cuentas[idx].cod_aux,
|
|
cuentas[idx].sec_aux,factura.detalle,cuentas[idx].debito,cuentas[idx].credito,
|
|
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL)
|
|
|
|
INSERT INTO cgtb00004
|
|
VALUES(factura.fecha_orig,1,entrada_no,cuentas[idx].cuenta_no,null,null,null,null,NULL,NULL,NULL,cuentas[idx].debito,cuentas[idx].credito,NULL,suser_sname(),getdate(),NULL,NULL,
|
|
factura.cod_sp,factura.cod_sp_sec,factura.num_doc)
|
|
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
CALL cuadrada(factura.cod_sp,factura.cod_sp_sec,factura.num_doc) RETURNING cuadradatrx
|
|
IF cuadradatrx THEN
|
|
COMMIT WORK
|
|
|
|
ELSE
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("MENSAJE","HUBO UN ERROR EN EL CUADRE DE LAS CUENTAS","STOP")
|
|
NEXT FIELD CUENTA_NO
|
|
END IF
|
|
END INPUT
|
|
CLOSE WINDOW cpfmwd007
|
|
END FUNCTION
|
|
|
|
REPORT apl_fact(x)
|
|
|
|
DEFINE x RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sup CHAR(30),
|
|
num_doc CHAR(13),
|
|
valor_fac DECIMAL(12,2),
|
|
detalle CHAR(30),
|
|
tipo CHAR(1),
|
|
aplica_a CHAR(10),
|
|
valor DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE cod1,dias SMALLINT
|
|
DEFINE direccion,p_descrip CHAR(30)
|
|
DEFINE p_casa,p_zona,p_numero CHAR(10)
|
|
DEFINE doble_on CHAR(2)
|
|
DEFINE doble_off CHAR(2)
|
|
DEFINE negrillas_on CHAR(6)
|
|
DEFINE negrillas_off CHAR(6)
|
|
DEFINE comp_on CHAR(2)
|
|
DEFINE comp_off CHAR(2)
|
|
DEFINE doce CHAR(2)
|
|
DEFINE normal CHAR(2)
|
|
DEFINE normall CHAR(3)
|
|
DEFINE comprimido CHAR(3)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE tipo CHAR(2)
|
|
DEFINE imp_cli CHAR(1)
|
|
DEFINE credito, debito, tcredito, tdebito, tbalance,t_valor1,t_valor2,
|
|
limite,b_balance,v1_30,v31_45,v46_60,vm_60,p_valor,t_valor3
|
|
DECIMAL(12,2)
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
PAGE LENGTH 66
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 027, ASCII 098
|
|
LET negrillas_off = ASCII 027, ASCII 099
|
|
LET comp_on = ASCII 31
|
|
LET comp_off = ASCII 30
|
|
LET comprimido = ASCII 031
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET normall = ASCII 030
|
|
LET hora = time
|
|
LET lj = (86 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
PRINT COLUMN 1, comp_off,negrillas_on
|
|
PRINT COLUMN 1, "cpprmt001",
|
|
COLUMN lj, p_companias.nombre CLIPPED,
|
|
COLUMN 79, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 16, " Sistema de Cuentas por Pagar",
|
|
COLUMN 79, today using "dd/mm/yyyy"
|
|
PRINT COLUMN 16, " Modificacion de Factura",
|
|
COLUMN 82, hora
|
|
|
|
SKIP 1 LINE
|
|
LET b_balance = 0
|
|
|
|
PRINT COLUMN 1, "Factura No. : ",x.num_doc
|
|
PRINT COLUMN 1, "Suplidor : ",x.cod_sp using "&&","-",
|
|
x.cod_sp_sec using "&&&&",
|
|
" ", x.nom_sup clipped
|
|
PRINT COLUMN 1, "Fecha Aplic.: ", today USING "dd/mm/yyyy"
|
|
PRINT COLUMN 1, "Valor Fact. : ", x.valor_fac
|
|
USING "###,###,###.##"
|
|
PRINT COLUMN 1, "Observacion : ", x.detalle CLIPPED
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------"
|
|
|
|
PRINT COLUMN 1, "Tipo",
|
|
COLUMN 20, "Aplica",
|
|
COLUMN 65, "Monto "
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------"
|
|
PRINT COLUMN 1, negrillas_off
|
|
|
|
LET debito = 0
|
|
|
|
ON EVERY ROW
|
|
|
|
LET debito = debito + x.valor
|
|
|
|
PRINT COLUMN 1, x.tipo,
|
|
COLUMN 20, x.aplica_a,
|
|
COLUMN 60, x.valor USING "###,###,###.##"
|
|
|
|
ON LAST ROW
|
|
PRINT comp_off
|
|
END REPORT
|
|
|
|
FUNCTION busca_monedas()
|
|
DEFINE pmoneda ui.combobox,
|
|
kmoneda SMALLINT,kdescripcion CHAR(30)
|
|
|
|
DECLARE moneda CURSOR FOR
|
|
SELECT a.cod_mon,a.simbolo FROM cotb00031 a
|
|
WHERE a.status_t is null
|
|
ORDER BY a.descrip_mon
|
|
LET pmoneda = ui.combobox.forname("formonly.cod_mon")
|
|
CALL pmoneda.clear()
|
|
FOREACH moneda INTO kmoneda,kdescripcion
|
|
CALL pmoneda.additem(kmoneda,kdescripcion)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION busca_cuenta()
|
|
OPEN WINDOW cons_cuenta AT 10,5 WITH FORM "cgfmwd004" ATTRIBUTE
|
|
(BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
|
|
CONSTRUCT BY NAME criterio ON cuenta_no,descripcion
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
LET selec =
|
|
"SELECT cuenta_no,descripcion,nivel FROM cgtb00001 ",
|
|
"WHERE ",criterio clipped," and nivel=3 AND status_t is null ORDER BY 1"
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busca5 CURSOR FOR comando
|
|
OPEN busca5
|
|
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH busca5 INTO cuentas1[idx].*
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL set_count (idx - 1)
|
|
DISPLAY ARRAY cuentas1 TO s_cuentas.*
|
|
LET curr1 = arr_curr()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CLOSE WINDOW cons_cuenta
|
|
END FUNCTION
|
|
|
|
FUNCTION cuadrada(pcodsp,pcodspsec,pfactura)
|
|
DEFINE pcodsp,pcodspsec INT,
|
|
pfactura VARCHAR(25),
|
|
pvalor DEC(12,2)
|
|
|
|
|
|
SELECT ISNULL(SUM(a.DEBITO-a.CREDITO),0) INTO pvalor FROM cptb00003 a
|
|
WHERE a.cod_sp = pcodsp AND a.cod_sp_Sec = pcodspsec AND a.factura =pfactura
|
|
|
|
IF pvalor = 0 THEN
|
|
RETURN TRUE
|
|
ELSE
|
|
RETURN FALSE
|
|
END IF
|
|
|
|
END FUNCTION |