- coprmt001 (Suplidores): agregar campos faltantes (tipo_doc,rnc,cuenta_no) al RECORD interno de ApiMaintainC() en api_test.4gl, y unificar la aridad de RETURNING en las 3 llamadas (POST/PATCH/DELETE) - el enlazador exige el mismo numero de valores de retorno en todo el modulo. - coprmt009 (Ordenes de Compra): reemplazar fgl_report_loadCurrentSettings/ selectDevice/selectPreview/commitCurrentSettings (no disponibles en este FGL) por om.XmlWriter.createFileWriter en coprorden.4gl; agregar verificacion defensiva en lugarentrega.4gl (ui.combobox.forname puede devolver NULL si el formulario actual no tiene el combo "bodega"); quitar "ordenes.bodega" de los INPUT BY NAME (campo oculto, no se puede enlazar). Pendiente: probar el flujo completo de creacion de orden (se corto por una caida de conexion transitoria durante la prueba). - coprmt016 (Terminos de Pago): CRUD simple, sin cambios de codigo. - mbsERP.4pw: crear modulo COMPRAS (estaba vacio) con librerias FUNCIONES_CO y FORMULARIOS_CO, y registrar los 3 programas. - otrodir/smarmotech.sch: diccionario de esquema completo (antes faltaba en este directorio, causaba fallos de link en api_test.4gl). - .gitignore: excluir logs de STARTLOG() (bin/*.TXT) y archivos .err de compilacion. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
850 lines
28 KiB
Plaintext
850 lines
28 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : COPRMT001
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de suplidoreses.
|
|
PROGRAMADOR : JUAN SOTO .
|
|
FECHA REALIZACION : Agosto 1997.
|
|
------------------------------------------------------------------
|
|
}
|
|
|
|
SCHEMA smarmotech
|
|
|
|
DEFINE
|
|
suplidores RECORD
|
|
tipo_doc VARCHAR(10),
|
|
rnc VARCHAR(11),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sp VARCHAR(41),
|
|
dir_sp VARCHAR(60),
|
|
ciu_sp VARCHAR(30),
|
|
cod_pais VARCHAR(3),
|
|
tel_sp VARCHAR(25),
|
|
area_sp VARCHAR(10),
|
|
fax_sp VARCHAR(25),
|
|
cont_sp VARCHAR(30),
|
|
term_sp SMALLINT,
|
|
status_t CHAR(1),
|
|
cuenta_no VARCHAR(10),
|
|
us_crea VARCHAR(50),
|
|
fech_crea DATETIME YEAR TO FRACTION(3),
|
|
us_mod VARCHAR(50),
|
|
fech_mod DATETIME YEAR TO FRACTION(3),
|
|
id_maintainx INTEGER,
|
|
contactID INTEGER,
|
|
email VARCHAR(60)
|
|
END RECORD,
|
|
pdocumentoEntrada VARCHAR(2),
|
|
descripcion_cuenta VARCHAR(80),
|
|
cuenta_suplidor SMALLINT
|
|
|
|
DEFINE proveedores SMALLINT
|
|
|
|
GLOBALS "coprgb000.4gl"
|
|
DEFINE
|
|
balance DEC(12, 2),
|
|
q_opt CHAR(3)
|
|
DEFINE
|
|
apicheck BOOLEAN,
|
|
answer, answer2 INT
|
|
DEFINE email VARCHAR(60)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" AS "SQL_C" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
|
|
CALL coprmt001()
|
|
END MAIN
|
|
|
|
FUNCTION coprmt001()
|
|
OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21
|
|
|
|
OPEN FORM cofmmt001 FROM "cofmmt001"
|
|
DISPLAY FORM cofmmt001
|
|
|
|
LET selec =
|
|
"SELECT a.razon_social,RTRIM(a.calle) + ' #'+RTRIM(a.no_local) + ' '+a.sector,a.telefono
|
|
FROM DGII.dbo.empresas a
|
|
WHERE a.rnc = ?"
|
|
|
|
PREPARE dgii FROM selec
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
CLEAR FORM
|
|
CALL copcad001()
|
|
ON ACTION buscar
|
|
|
|
CALL copcmf001()
|
|
ON ACTION Salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION copcad001()
|
|
DEFINE ultimo_codigo INTEGER
|
|
# Captura los datos que va a contener el registro
|
|
|
|
INITIALIZE suplidores.* TO NULL
|
|
|
|
INPUT BY NAME suplidores.*, apicheck, pdocumentoEntrada
|
|
BEFORE INPUT
|
|
CALL proveedores()
|
|
|
|
ON KEY(CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(cod_pais)
|
|
|
|
CALL busca_pais()
|
|
DISPLAY BY NAME paises.nom_pais, suplidores.cod_pais
|
|
END CASE
|
|
AFTER FIELD rnc
|
|
IF suplidores.rnc IS NOT NULL THEN
|
|
IF suplidores.tipo_doc = 'RNC' THEN
|
|
SELECT a.rnc
|
|
FROM cotb00001 a
|
|
WHERE a.rnc = suplidores.rnc AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL msg(12)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
EXECUTE dgii
|
|
INTO suplidores.nom_sp, suplidores.dir_sp, suplidores.tel_sp USING suplidores
|
|
.rnc
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
DISPLAY BY NAME suplidores.nom_sp,
|
|
suplidores.dir_sp,
|
|
suplidores.tel_sp
|
|
END IF
|
|
END IF
|
|
|
|
# Verifica que el codigo del suplidores no exista. Si existe,
|
|
# entonces despliega los datos del registro existente.
|
|
AFTER FIELD cod_sp
|
|
IF suplidores.cod_sp IS NOT NULL THEN
|
|
SELECT a.cod_sp_sec
|
|
INTO ultimo_codigo
|
|
FROM cotb00021 a
|
|
WHERE a.cod_sp = suplidores.cod_sp
|
|
|
|
IF ultimo_codigo IS NULL THEN
|
|
LET ultimo_codigo = 0
|
|
END IF
|
|
LET suplidores.cod_sp_sec = ultimo_codigo + 1
|
|
DISPLAY BY NAME suplidores.cod_sp_sec
|
|
NEXT FIELD nom_sp
|
|
END IF
|
|
{ AFTER FIELD cod_sp_sec
|
|
SELECT a.* INTO suplidores.* FROM cotb00001 a
|
|
WHERE a.cod_sp = suplidores.cod_sp and
|
|
a.cod_sp_sec = suplidores.cod_sp_sec
|
|
IF status != NOTFOUND THEN
|
|
IF suplidores.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
# Llamado a la rutina que despliega el mensaje del error retornado despues del
|
|
# SELECT. Solamente despliega mensaje si hay error.
|
|
|
|
DISPLAY BY NAME suplidores.*
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
}
|
|
AFTER FIELD cod_pais
|
|
IF suplidores.cod_pais IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
SELECT a.nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018 a
|
|
WHERE a.cod_pais = suplidores.cod_pais
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
DISPLAY BY NAME paises.nom_pais
|
|
|
|
AFTER FIELD term_sp
|
|
SELECT a.descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024 a
|
|
WHERE a.term_sp = suplidores.term_sp
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD term_sp
|
|
END IF
|
|
DISPLAY BY NAME pagos.descrip_term
|
|
AFTER FIELD cuenta_no
|
|
|
|
SELECT a.descripcion
|
|
INTO descripcion_cuenta
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = suplidores.cuenta_no AND a.nivel = 3
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
DISPLAY BY NAME descripcion_cuenta
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF suplidores.cod_pais IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
IF suplidores.tipo_doc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
IF suplidores.tipo_doc = 'RNC' AND LENGTH(suplidores.rnc) <> 9 THEN
|
|
CALL msg(77)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
|
|
IF pdocumentoEntrada IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD pdocumentoEntrada
|
|
END IF
|
|
IF suplidores.cuenta_no IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cuenta_o
|
|
END IF
|
|
IF suplidores.rnc IS NOT NULL THEN
|
|
IF suplidores.tipo_doc = 'RNC' THEN
|
|
|
|
EXECUTE dgii
|
|
INTO suplidores.nom_sp, suplidores.dir_sp, suplidores.tel_sp USING suplidores
|
|
.rnc
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
DISPLAY BY NAME suplidores.nom_sp,
|
|
suplidores.dir_sp,
|
|
suplidores.tel_sp
|
|
END IF
|
|
END IF
|
|
|
|
BEGIN WORK
|
|
|
|
#BUSCA EL ULTIMO NUMERO CREADO POR TIPO DE PROVEEDOR
|
|
SELECT a.cod_sp_sec
|
|
INTO ultimo_codigo
|
|
FROM cotb00021 a
|
|
WHERE a.cod_sp = suplidores.cod_sp
|
|
|
|
IF ultimo_codigo IS NULL THEN
|
|
LET ultimo_codigo = 0
|
|
INSERT INTO cotb00021(
|
|
cod_sp, cod_sp_sec, us_mod, fech_mod)
|
|
VALUES(suplidores.cod_sp,
|
|
ultimo_codigo,
|
|
usuarios,
|
|
getdate())
|
|
END IF
|
|
LET suplidores.cod_sp_sec = ultimo_codigo + 1
|
|
DISPLAY BY NAME suplidores.cod_sp_sec
|
|
UPDATE cotb00021
|
|
SET cod_sp_sec = suplidores.cod_sp_sec,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE cod_sp = suplidores.cod_sp
|
|
|
|
IF apicheck THEN
|
|
|
|
CALL ApiMaintainC(
|
|
'POST', NULL, suplidores.*, usuarios)
|
|
RETURNING answer, answer2
|
|
|
|
IF answer IS NULL THEN
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
IF answer2 = 0 THEN
|
|
INITIALIZE answer2 TO NULL
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
INITIALIZE answer, answer2 TO NULL
|
|
|
|
END IF
|
|
|
|
INSERT INTO cotb00001(
|
|
tipo_doc,
|
|
rnc,
|
|
cod_sp,
|
|
cod_sp_sec,
|
|
nom_sp,
|
|
dir_sp,
|
|
ciu_sp,
|
|
cod_pais,
|
|
tel_sp,
|
|
area_sp,
|
|
fax_sp,
|
|
cont_sp,
|
|
term_sp,
|
|
us_crea,
|
|
fech_crea,
|
|
cuenta_no,
|
|
id_maintainx,
|
|
contactID,
|
|
email,
|
|
documentoEntrada)
|
|
VALUES(suplidores.tipo_doc,
|
|
suplidores.rnc,
|
|
suplidores.cod_sp,
|
|
suplidores.cod_sp_sec,
|
|
suplidores.nom_sp,
|
|
suplidores.dir_sp,
|
|
suplidores.ciu_sp,
|
|
suplidores.cod_pais,
|
|
suplidores.tel_sp,
|
|
suplidores.area_sp,
|
|
suplidores.fax_sp,
|
|
suplidores.cont_sp,
|
|
suplidores.term_sp,
|
|
usuarios,
|
|
GETDATE(),
|
|
suplidores.cuenta_no,
|
|
answer,
|
|
answer2,
|
|
suplidores.email,
|
|
pdocumentoEntrada)
|
|
|
|
COMMIT WORK
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
# Verifica el Status que retorna luego de insertar el registro en la tabla.
|
|
# Si hubo problemas en la insercion del registro, se despliega un mensaje.
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION copcmf001()
|
|
#WHENEVER ERROR CONTINUE
|
|
DEFINE
|
|
nombreF VARCHAR(100),
|
|
actualiza VARCHAR(3)
|
|
|
|
# Aqui se prepara para la captura del criterio de seleccion
|
|
CONSTRUCT BY NAME criterio ON a.cod_sp, a.cod_sp_sec, a.nom_sp, a.tipo_doc, a.rnc
|
|
BEFORE CONSTRUCT
|
|
CALL proveedores()
|
|
AFTER CONSTRUCT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
LET SELEC =
|
|
" SELECT a.tipo_Doc
|
|
,a.rnc
|
|
,a.cod_sp
|
|
,a.cod_sp_sec
|
|
,a.nom_sp
|
|
,a.dir_sp
|
|
,a.ciu_sp
|
|
,a.cod_pais
|
|
,a.tel_sp
|
|
,a.area_sp
|
|
,a.fax_sp
|
|
,a.cont_sp
|
|
,a.term_sp
|
|
,a.status_t
|
|
,a.cuenta_no
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
,a.us_mod
|
|
,a.fech_mod
|
|
,a.id_maintainx,a.contactId,a.email,a.documentoEntrada,b.nom_sp
|
|
FROM marmotech.dbo.cotb00001 a left outer join exterior.dbo.cotb00001 b on b.cod_sp = a.cod_sp and b.cod_sp_sec = a.cod_sp_Sec where ",
|
|
" a.status_t is null AND ",
|
|
criterio CLIPPED,
|
|
" ORDER BY 1,2,3,4"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO suplidores.*, pdocumentoEntrada, nombreF
|
|
IF status >= 0 THEN
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
DISPLAY BY NAME suplidores.*,
|
|
paises.nom_pais,
|
|
pagos.descrip_term,
|
|
pdocumentoEntrada,
|
|
nombreF
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO suplidores.*, pdocumentoEntrada, nombreF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
DISPLAY BY NAME suplidores.*,
|
|
paises.nom_pais,
|
|
pagos.descrip_term,
|
|
pdocumentoEntrada,
|
|
nombreF
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO suplidores.*, pdocumentoEntrada, nombreF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
DISPLAY BY NAME suplidores.*,
|
|
paises.nom_pais,
|
|
pagos.descrip_term,
|
|
pdocumentoEntrada,
|
|
nombreF
|
|
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO suplidores.*, pdocumentoEntrada, nombreF
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
DISPLAY BY NAME suplidores.*,
|
|
paises.nom_pais,
|
|
pagos.descrip_term,
|
|
pdocumentoEntrada,
|
|
nombreF
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO suplidores.*, pdocumentoEntrada, nombreF
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
DISPLAY BY NAME suplidores.*,
|
|
paises.nom_pais,
|
|
pagos.descrip_term,
|
|
pdocumentoEntrada,
|
|
nombreF
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
|
|
IF suplidores.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
INPUT BY NAME suplidores.tipo_doc,
|
|
suplidores.rnc,
|
|
suplidores.nom_sp,
|
|
suplidores.dir_sp,
|
|
suplidores.cod_pais,
|
|
suplidores.term_sp,
|
|
suplidores.ciu_sp,
|
|
suplidores.tel_sp,
|
|
suplidores.area_sp,
|
|
suplidores.fax_sp,
|
|
suplidores.cont_sp,
|
|
suplidores.email,
|
|
apicheck,
|
|
pdocumentoEntrada,
|
|
suplidores.cuenta_no
|
|
WITHOUT DEFAULTS
|
|
ON KEY(CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(cod_pais)
|
|
CALL busca_pais()
|
|
DISPLAY BY NAME paises.nom_pais, suplidores.cod_pais
|
|
END CASE
|
|
|
|
AFTER FIELD rnc
|
|
IF suplidores.rnc IS NOT NULL THEN
|
|
IF suplidores.tipo_doc = 'RNC' THEN
|
|
LET cuenta_suplidor = 0
|
|
SELECT COUNT(*)
|
|
INTO cuenta_suplidor
|
|
FROM cotb00001 a
|
|
WHERE a.rnc = suplidores.rnc
|
|
AND a.status_t IS NULL
|
|
IF cuenta_suplidor > 1 THEN
|
|
CALL msg(12)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
EXECUTE dgii
|
|
INTO suplidores.nom_sp, suplidores.dir_sp, suplidores.tel_sp USING suplidores
|
|
.rnc
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
DISPLAY BY NAME suplidores.nom_sp,
|
|
suplidores.dir_sp,
|
|
suplidores.tel_sp
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD cod_pais
|
|
IF suplidores.cod_pais IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
|
|
SELECT nom_pais
|
|
INTO paises.nom_pais
|
|
FROM cotb00018
|
|
WHERE cod_pais = suplidores.cod_pais
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
DISPLAY BY NAME paises.nom_pais
|
|
|
|
AFTER FIELD term_sp
|
|
SELECT descrip_term
|
|
INTO pagos.descrip_term
|
|
FROM cotb00024
|
|
WHERE term_sp = suplidores.term_sp
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD term_sp
|
|
END IF
|
|
DISPLAY BY NAME pagos.descrip_term
|
|
AFTER FIELD cuenta_no
|
|
|
|
SELECT a.descripcion
|
|
INTO descripcion_cuenta
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = suplidores.cuenta_no
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
DISPLAY BY NAME descripcion_cuenta
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF suplidores.cod_pais IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD cod_pais
|
|
END IF
|
|
IF suplidores.tipo_doc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
IF suplidores.rnc IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD rnc
|
|
END IF
|
|
IF suplidores.nom_sp <> nombreF THEN
|
|
LET actualiza =
|
|
fgl_winquestion(
|
|
"Actualiza",
|
|
"Nombres diferentes, si actualizas vas a actualizar Finanzas",
|
|
"No",
|
|
"Yes|No",
|
|
"Question",
|
|
0)
|
|
IF actualiza = "No" THEN
|
|
CONTINUE INPUT
|
|
END IF
|
|
END IF
|
|
BEGIN WORK
|
|
|
|
IF apicheck THEN
|
|
|
|
IF suplidores.id_maintainx IS NULL THEN
|
|
|
|
CALL ApiMaintainC(
|
|
'POST', NULL, suplidores.*, usuarios)
|
|
RETURNING answer, answer2
|
|
|
|
IF answer IS NULL OR answer2 IS NULL THEN
|
|
ROLLBACK WORK
|
|
ELSE
|
|
IF answer != 0 THEN
|
|
LET suplidores.id_maintainx = answer
|
|
|
|
IF answer2 != 0 THEN
|
|
LET suplidores.contactID = answer2
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL ApiMaintainC(
|
|
'PATCH',
|
|
suplidores.id_maintainx,
|
|
suplidores.*,
|
|
usuarios)
|
|
RETURNING answer, answer2
|
|
|
|
DISPLAY answer2
|
|
IF answer != 1 THEN
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
UPDATE cotb00001
|
|
SET tipo_Doc = suplidores.tipo_doc,
|
|
rnc = suplidores.rnc,
|
|
nom_sp = suplidores.nom_sp,
|
|
dir_sp = suplidores.dir_sp,
|
|
ciu_sp = suplidores.ciu_sp,
|
|
cod_pais = suplidores.cod_pais,
|
|
tel_sp = suplidores.tel_sp,
|
|
area_sp = suplidores.area_sp,
|
|
fax_sp = suplidores.fax_sp,
|
|
cont_sp = suplidores.cont_sp,
|
|
term_sp = suplidores.term_sp,
|
|
id_maintainx = suplidores.id_maintainx,
|
|
contactID = suplidores.contactID,
|
|
email = suplidores.email,
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE(),
|
|
cuenta_no = suplidores.cuenta_no,
|
|
documentoEntrada = pdocumentoEntrada
|
|
WHERE cod_sp = suplidores.cod_sp
|
|
AND cod_sp_sec = suplidores.cod_sp_sec
|
|
|
|
COMMIT WORK
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
END INPUT
|
|
|
|
COMMAND KEY("L") "eLiminar"
|
|
# BUSCA BALANCE
|
|
SELECT SUM(a.valor)
|
|
INTO balance
|
|
FROM cptb00001 a
|
|
WHERE a.cod_sp = suplidores.cod_sp
|
|
AND a.cod_sp_sec = suplidores.cod_sp_sec
|
|
AND a.status_t IS NULL
|
|
IF balance <> 0 THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"NO PUEDES ELIMINAR ESTE PROVEEDOR, TIENE BALANCE EN CXP",
|
|
"INFO")
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
LET q_opt =
|
|
fgl_winquestion(
|
|
"ELIMINAR",
|
|
"ESTA SEGURO DE ELIMINAR ESTE REGISTRO",
|
|
"NO",
|
|
"NO|YES",
|
|
"QUESTION",
|
|
0)
|
|
IF q_opt = "YES" THEN
|
|
|
|
BEGIN WORK
|
|
|
|
IF apicheck THEN
|
|
|
|
IF suplidores.id_maintainx IS NOT NULL THEN
|
|
|
|
CALL ApiMaintainC(
|
|
'DELETE',
|
|
suplidores.id_maintainx,
|
|
suplidores.*,
|
|
usuarios)
|
|
RETURNING answer, answer2
|
|
|
|
IF answer != 1 THEN
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
UPDATE cotb00001
|
|
SET status_t = "E", us_mod = usuarios, fech_mod = getdate()
|
|
WHERE cod_sp = suplidores.cod_sp
|
|
AND cod_sp_sec = suplidores.cod_sp_sec
|
|
|
|
COMMIT WORK
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
END IF
|
|
|
|
COMMAND "Retornar" "Retorna al menu anterior"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_pais()
|
|
OPEN WINDOW busqueda1
|
|
AT 10, 10
|
|
WITH FORM "cofmwd019"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, COMMENT LINE LAST)
|
|
|
|
CONSTRUCT criterio
|
|
ON cotb00018.cod_pais, cotb00018.nom_pais
|
|
FROM cotb00018.cod_pais, cotb00018.nom_pais
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT cod_pais,nom_pais FROM cotb00018 ",
|
|
"WHERE status_t is null AND ",
|
|
criterio CLIPPED,
|
|
"ORDER BY 1 "
|
|
|
|
PREPARE localiza1 FROM selec
|
|
DECLARE country CURSOR FOR localiza1
|
|
|
|
LET idx = 1
|
|
FOREACH country INTO pais_wd[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET existe = "N"
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx - 1)
|
|
DISPLAY ARRAY pais_wd TO consart.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET suplidores.cod_pais = pais_wd[curr1].cod_pais
|
|
LET paises.nom_pais = pais_wd[curr1].nom_pais
|
|
CLOSE WINDOW busqueda1
|
|
END FUNCTION
|
|
|
|
FUNCTION proveedores()
|
|
|
|
DEFINE
|
|
cod_sp SMALLINT,
|
|
descrip VARCHAR(200),
|
|
cproveedores ui.ComboBox,
|
|
query STRING
|
|
|
|
LET cproveedores = ui.combobox.forname("formonly.cod_sp")
|
|
|
|
LET query =
|
|
"SELECT a.cod_sp, CONCAT('(' ,a.cod_sp, ')',' ',a.titulo) FROM cotb00047 a "
|
|
DECLARE bproveedores CURSOR FROM query
|
|
CALL cproveedores.clear()
|
|
|
|
FOREACH bproveedores INTO cod_sp, descrip
|
|
CALL cproveedores.additem(cod_sp, descrip)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|