Files
2026-09-22 20:38:51 -04:00

1424 lines
55 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : VEPRMT101
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Datos Generales o Basicos de Clientes
PROGRAMADOR : Lic. Abner Montalvo Z.
FECHA REALIZACION : Diciembre 7, 1992.
------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE valor,valor1,balance DECIMAL(12,2),
pid,cuenta_contacto,num_emp SMALLINT,
n1,n2,pcrea CHAR(15),
chitbis CHAR(1),
nombre_v CHAR(31),
role_puesto VARCHAR(50),
arrContactos DYNAMIC ARRAY OF RECORD
tipo_negocio_contacto SMALLINT,
pcontacto VARCHAR(60),
ppuesto VARCHAR(60),
ppuesto1 VARCHAR(60),
email_contacto VARCHAR(60),
telefono_of CHAR(20),
celular CHAR(20),
ptelefono_casa CHAR(20)
END RECORD
DEFINE pinfo DYNAMIC ARRAY OF RECORD
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
valor DEC(12,2),
status_ord CHAR(30)
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 "marmotech" AS "IFMX"
CONNECT TO "decomarmol" AS "MSSQL" USER usuarios USING clave
CALL veprmt101()
END MAIN
FUNCTION veprmt101()
#CLEAR SCREEN
OPTIONS
#FORM LINE 9,
ERROR LINE 23,
HELP FILE "vepray000.exe",
HELP KEY CONTROL-W,
MESSAGE LINE 24,
COMMENT LINE 21
#OPEN FORM vefmmt101 FROM "vefmmt101"
#DISPLAY FORM vefmmt101
OPEN WINDOW vefmmt101 AT 2,2 WITH FORM "vefmmt101" ATTRIBUTE
(BORDER,FORM LINE FIRST+4,COMMENT LINE LAST)
#CALL pantalla()
#CALL ayuda()
#DISPLAY "veprmt101" AT 4,3
#DISPLAY "Datos Generales" AT 6,32
INITIALIZE cliente_bas.* TO NULL
INITIALIZE cliente_dir.* TO NULL
MENU
ON ACTION nuevo
LET int_flag = FALSE
SET CONNECTION "MSSQL"
CLEAR FORM
CALL vepcad101()
ON ACTION buscar
LET int_flag = FALSE
SET CONNECTION "MSSQL"
CALL vepcmf101()
ON ACTION salir
LET INT_FLAG = FALSE
EXIT PROGRAM
END MENU
LET INT_FLAG = FALSE
CLOSE WINDOW vefmmt101
END FUNCTION
FUNCTION vepcad101()
## Captura los datos que va a contener el registro
# WHENEVER ERROR CONTINUE
DIALOG ATTRIBUTES(UNBUFFERED)
INPUT BY NAME cliente_bas.tipo_cliente,
cliente_bas.zona_postal,cliente_bas.num_rnc,
cliente_bas.nombre,cliente_bas.limite_credito,cliente_bas.cond_pago,
cliente_bas.tipo_negocio,
cliente_dir.calle,cliente_dir.casa_num,
cliente_dir.urbanizacion,cliente_dir.barrio,
cliente_bas.cod_zona,
cliente_bas.cod_provincia,
cliente_bas.id_ciudad,
cliente_bas.telefono_casa,
cliente_bas.telefono,
cliente_bas.fax,cliente_bas.telex,
cliente_bas.nombre_patente,
cliente_bas.patente,
cliente_bas.url,
cliente_bas.us_crea,cliente_bas.fech_crea,
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp
BEFORE FIELD limite_credito
SELECT a.nom_puesto INTO role_puesto
FROM seg0003 a
WHERE a.usuario = usuarios
IF role_puesto <> 'ADMINISTRATOR' AND
role_puesto <> 'CXC' THEN
NEXT FIELD tipo_negocio
END IF
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio")
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
CALL ccondicion()
CALL arrContactos.clear()
ON ACTION buscaZona
CALL consulta_zonas()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
IF NOT int_flag THEN
LET cliente_bas.cod_zona = zona.cod_zona
DISPLAY descrip1 TO descripcion_zona
NEXT FIELD cod_provincia
END IF
LET int_flag = FALSE
ON ACTION buscaProvincia
LET transportista.cod_zona = cliente_bas.cod_zona
CALL consulta_provincias()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
IF NOT int_flag THEN
LET cliente_bas.cod_provincia = zonap.cod_provincia
DISPLAY descrip1 TO descripcion_provincia
NEXT FIELD telefono
END IF
ON ACTION buscaEmpleado
CALL vend_cli()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
IF NOT int_flag THEN
LET num_emp = cli_vend1[curr].num_emp
DISPLAY num_emp,nombre_v
END IF
LET int_flag = FALSE
AFTER FIELD zona_postal
SELECT DISTINCT a.tipo_cliente FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.paga_itbis = 'S'
IF STATUS <> NOTFOUND THEN
IF cliente_bas.zona_postal IS NULL THEN
CALL msg(16)
NEXT FIELD zona_postal
END IF
END IF
## Verifica que el codigo no exista en la tabla de datos basicos de clientes.
## Si existe, entonces despliega los datos del registro existente.
AFTER FIELD num_rnc
SELECT a.paga_itbis INTO chitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
IF chitbis = 'S' THEN
IF cliente_bas.num_rnc IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
LET cliente_bas.num_rnc=cliente_bas.num_rnc CLIPPED
IF cliente_bas.zona_postal = '1' THEN
IF LENGTH(cliente_bas.num_rnc) <> 9 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
ELSE
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
END IF
LET VECES = 0
SELECT UNIQUE a.tipo_cliente FROM vetb00004 a
WHERE a.num_rnc = cliente_bas.num_rnc AND
a.tipo_cliente = cliente_bas.tipo_cliente and
a.status_t is null
IF STATUS <> NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT field num_rnc
END IF
LET VECES = 0
SELECT COUNT(*) INTO veces FROM vetb00004 a
WHERE a.num_rnc = cliente_bas.num_rnc AND
a.tipo_cliente = cliente_bas.tipo_cliente and
a.status_t is null
IF veces >= 1 THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT field num_rnc
END IF
#BUSCA EL RNC EN LA TABLA DE LA DGII
IF kitbis = 'S' AND cliente_bas.zona_postal ='1' THEN
LET selec =
"SELECT a.razon_social,RTRIM(a.calle),' NO.'+RTRIM(a.no_local),a.sector ",
"FROM DGII.dbo.empresas a ",
"WHERE a.rnc = ? "
PREPARE query2 FROM selec
EXECUTE query2 USING cliente_bas. num_rnc INTO cliente_bas.nombre,cliente_dir.calle,
cliente_dir.casa_num,cliente_dir.urbanizacion
IF STATUS = NOTFOUND THEN
CALL msg(3)
# NEXT FIELD num_rnc
END IF
DISPLAY BY NAME cliente_bas.nombre
END IF
END IF
AFTER FIELD tipo_cliente
IF cliente_bas.tipo_cliente is NULL or
cliente_bas.tipo_cliente = 0 then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
# BUSCA SI EL CLIENTE PAGA ITBIS
LET kitbis = 'N'
SELECT a.ncf,a.control_creacion_usuario
INTO kitbis,pcrea FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","TIPO CLIENTE NO EXISTE","INFO")
NEXT FIELD tipo_cliente
END IF
IF pcrea = 'SI' THEN
SELECT a.usuario FROM seg0001 a,seg0005 b
WHERE a.usuario =usuarios AND
a.cod_perfil = b.cod_perfil AND
b.programa = 'veprmt101.crear'
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO PUEDE CREAR ESTE TIPO DE CLIENTES","INFO")
NEXT FIELD tipo_cliente
END IF
END IF
AFTER FIELD nombre
IF cliente_bas.nombre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nombre
END IF
AFTER FIELD cod_zona
IF cliente_bas.cod_zona is NULL then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
SELECT descrip INTO descrip1 FROM vetb00008
WHERE cod_zona = cliente_bas.cod_zona AND status_t IS NULL
IF status = NOTFOUND THEN
LET numero_msg = 43
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
DISPLAY descrip1 TO descripcion_zona
NEXT FIELD cod_provincia
AFTER FIELD cod_provincia
IF cliente_bas.cod_provincia is NULL then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
SELECT b.nombre_provincia, b.status_t
INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b
WHERE a.cod_zona = cliente_bas.cod_zona AND
a.cod_provincia = cliente_bas.cod_provincia AND
b.cod_provincia = a.cod_provincia
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF status_reg = "E" THEN
LET numero_msg = 66
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
DISPLAY descrip1 TO descripcion_provincia
ELSE
LET numero_msg = 65
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
END IF
CALL ciudad_pais(cliente_bas.cod_provincia)
#CALL veprmt102(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
#CALL veprmt106(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
BEFORE FIELD num_emp
# CONTROL VENDEDOR
SELECT a.sec_vend INTO num_emp
FROM seg0000 a
WHERE a.usuario = usuarios
DISPLAY BY NAME num_emp
AFTER FIELD num_emp
IF num_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
FROM adtb00003 a
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
DISPLAY BY NAME nombre_v
AFTER INPUT
IF num_emp IS NULL OR num_emp = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
IF cliente_bas.cod_provincia IS NULL OR cliente_bas.cod_provincia = 0 THEN
CALL msg(16)
NEXT FIELD cod_provincia
END IF
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
FROM adtb00003 a
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
DISPLAY BY NAME nombre_v
END INPUT
INPUT ARRAY arrContactos FROM scontactos.*
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
END INPUT
ON ACTION CANCEL
CALL MSG(2)
LET INT_FLAG = FALSE
RETURN
ON ACTION actualiza
# BUSCA EL MAXIMO NUMERO DEL TIPO DE CLIENTE
SELECT MAX(a.sec_cliente) INTO cliente_bas.sec_cliente
FROM vetb00004 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
IF cliente_bas.sec_cliente IS NULL THEN
LET cliente_bas.sec_cliente = 1
END IF
LET cliente_bas.sec_cliente = cliente_bas.sec_cliente + 1
DISPLAY BY NAME cliente_bas.sec_cliente
## WHENEVER ERROR CONTINUE
BEGIN WORK
INSERT INTO vetb00005 VALUES (cliente_bas.tipo_cliente,
cliente_bas.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, usuarios, GETDATE(),
null, null)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
INSERT INTO vetb00028
VALUES (NULL,num_emp,cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
NULL,usuarios,GETDATE(),NULL,NULL)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
LET pid = 0
FOR idx = 1 TO arrcontactos.getLength()
IF arrcontactos[idx].pcontacto IS NOT NULL THEN
LET pid = pid + 1
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
telefono_of,telefono_casa,id,us_crea,fech_crea,puesto1,tipo_negocio_contacto)
VALUES
(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,
arrContactos[idx].pcontacto,arrContactos[idx].ppuesto,
arrContactos[idx].email_contacto,arrContactos[idx].celular,
arrContactos[idx].telefono_of,arrContactos[idx].ptelefono_casa,pid,
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
END IF
END FOR
INSERT INTO vetb00004
(tipo_cliente,sec_cliente,nombre,cod_zona,cod_provincia,
telefono,fax,telex,limite_credito,zona_postal,num_rnc,
status_t,us_crea,fech_crea,telefono_casa,tipo_negocio,cond_pago,id_ciudad,url,nombre_patente,patente)
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.nombre,cliente_bas.cod_zona,cliente_bas.cod_provincia,
cliente_bas.telefono,cliente_bas.fax,cliente_bas.telex,
cliente_bas.limite_credito,
cliente_bas.zona_postal,cliente_bas.num_rnc,
NULL,usuarios,GETDATE(),cliente_bas.telefono_casa,
cliente_bas.tipo_negocio,cliente_bas.cond_pago,cliente_bas.id_ciudad,cliente_bas.url,
cliente_bas.nombre_patente,cliente_bas.patente)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
COMMIT WORK
CALL arrcontactos.clear()
# ACTUALIZACION DE EXTERIOR
IF kitbis = 'S' THEN
SET CONNECTION "IFMX"
INSERT INTO vetb00004
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.nombre,cliente_bas.cod_zona,cliente_bas.cod_provincia,
cliente_bas.telefono,cliente_bas.fax,cliente_bas.telex,
cliente_bas.patente,cliente_bas.limite_credito,
cliente_bas.zona_postal,cliente_bas.num_rnc,
cliente_bas.nombre_patente,NULL,user,getdate(),NULL,NULL)
INSERT INTO vetb00005 VALUES (cliente_bas.tipo_cliente,
cliente_bas.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, usuarios, getdate(),
null, null)
INSERT INTO vetb00028
VALUES (NULL,num_emp,cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
NULL,usuarios,getdate(),NULL,NULL)
END IF
SET CONNECTION "MSSQL"
LET numero_msg = 1
CALL msg(numero_msg)
EXIT DIALOG
END DIALOG
END FUNCTION
FUNCTION vepcmf101()
# WHENEVER ERROR CONTINUE
LET int_flag = false
## Aqui se prepara para la captura del criterio de seleccion
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
CONSTRUCT criterio ON a.num_rnc,b.sec_vend,a.tipo_cliente,a.sec_cliente,
a.nombre,a.telefono,a.telefono_casa,a.tipo_negocio
FROM num_rnc1,kvendedor,tipo_cliente2,sec_cliente2,nombre2,telefono2,
telefono3,tipoNegocio
BEFORE CONSTRUCT
CALL lista_clientes.clear()
CALL cvendedor()
CALL ctipoNegocio1()
AFTER CONSTRUCT
END CONSTRUCT
ON ACTION busca_cliente
SET CONNECTION "MSSQL"
CALL lista_clientes.clear()
LET SELEC = " SELECT a.num_rnc, a.tipo_negocio,RTRIM(CAST(ISNULL(c.nom1_emp,' ') AS CHAR(30)))+' ' +
CAST(ISNULL(c.apell1_emp,' ') AS CHAR(30)),a.tipo_cliente,a.sec_cliente, ",
" a.nombre, CASE a.status_t WHEN 'E' THEN 'DESACTIVADO' ELSE 'ACTIVO' END,a.telefono,a.telefono_casa ",
"FROM vetb00004 a,vetb00028 b,adtb00003 c ",
" WHERE a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and ",
" b.sec_vend = c.num_emp and ",
criterio clipped," ORDER BY a.tipo_cliente,a.sec_cliente"
PREPARE busca FROM selec
DECLARE datos CURSOR FOR busca
CALL lista_clientes.clear()
LET idx = 1
FOREACH datos INTO lista_clientes[idx].*
# busca ultima factura realizada
SELECT CONVERT(CHAR(10),MAX(a.fecha_factura),103)
INTO lista_clientes[idx].fecha_venta
FROM vetb00002 a
WHERE a.tipo_cliente = lista_clientes[idx].tipo_cliente2 AND
a.sec_cliente = lista_clientes[idx].sec_cliente2 AND
a.status_t IS NULL
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
CALL fgl_winmessage("ERROR","NO EXISTEN CLIENTES CON ESTA CONDICION","INFO")
EXIT DIALOG
END IF
DISPLAY ARRAY lista_clientes TO sclientes.*
ON ACTION desactivar
SELECT a.usuario FROM seg0001 a,seg0005 b
WHERE a.usuario =usuarios AND
a.cod_perfil = b.cod_perfil AND
b.programa = 'veprmt101.activar'
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR OPCION","INFO")
CONTINUE DIALOG
END IF
# BUSCA SI EL CLIENTE PAGA ITBIS
LET kitbis = 'N'
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00006 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE())
WHERE tipo_cliente_s = cliente_bas.tipo_cliente AND
sec_cliente_s = cliente_bas.sec_cliente
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = ("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
IF kitbis = 'S' THEN
SET CONNECTION "IFMX"
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = ("E",user,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
END IF
LET numero_msg = 188
CALL msg(numero_msg)
ON ACTION activar
SELECT a.usuario FROM seg0001 a,seg0005 b
WHERE a.usuario =usuarios AND
a.cod_perfil = b.cod_perfil AND
b.programa = 'veprmt101.activar'
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE PERMISOS PARA UTILIZAR OPCION","INFO")
CONTINUE DIALOG
END IF
# BUSCA SI EL CLIENTE PAGA ITBIS
LET kitbis = 'N'
SELECT a.ncf INTO kitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00006 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,GETDATE())
WHERE tipo_cliente_s = cliente_bas.tipo_cliente AND
sec_cliente_s = cliente_bas.sec_cliente
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
# ACTUALIZACION BASE DE DATOS EXTERIOR
IF kitbis = 'S' THEN
SET CONNECTION "IFMX"
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) = (NULL,usuarios,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
END IF
SET CONNECTION "MSSQL"
LET numero_msg = 188
CALL msg(numero_msg)
BEFORE DISPLAY
LET lj= lista_clientes.getLength()
DISPLAY BY NAME lj
LET curr = arr_curr()
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
a.sec_cliente = lista_clientes[curr].sec_cliente2
LET cliente_bas.tipo_cliente = lista_clientes[curr].tipo_cliente2
LET cliente_bas.sec_cliente = lista_clientes[curr].sec_cliente2
CALL arrcontactos.clear()
CALL busca_info(DIALOG,arr_curr())
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal,cliente_bas.patente
BEFORE ROW
LET curr = arr_curr()
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
a.sec_cliente = lista_clientes[curr].sec_cliente2
SET CONNECTION "MSSQL"
LET cliente_bas.tipo_cliente = lista_clientes[curr].tipo_cliente2
LET cliente_bas.sec_cliente = lista_clientes[curr].sec_cliente2
CALL arrcontactos.clear()
CALL busca_info(DIALOG, arr_curr())
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal,cliente_bas.patente,
cliente_bas.url
AFTER ROW
LET curr = arr_curr()
SELECT a.* INTO cliente_bas.* FROM vetb00004 a
WHERE a.tipo_cliente = lista_clientes[curr].tipo_cliente2 AND
a.sec_cliente = lista_clientes[curr].sec_cliente2
SET CONNECTION "MSSQL"
CALL busca_info(DIALOG,arr_curr())
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal,
cliente_bas.url
AFTER DISPLAY
END DISPLAY
DISPLAY ARRAY pinfo TO sinformacion.*
END DISPLAY
ON ACTION cancel
LET int_flag = FALSE
INITIALIZE cliente_Bas.* TO NULL
INITIALIZE cliente_dir.* TO NULL
CALL lista_clientes.clear()
CLEAR FORM
EXIT DIALOG
ON ACTION eliminar
SELECT a.sec_vend FROM vetb00028 a,seg0007 b
WHERE b.usuario = usuarios AND
b.sec_vend = a.sec_vend AND
a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO LE VENDE A ESTE CLIENTE, DEBE CONSULTAR EL EJECUTIVO ASIGNADO","STOP")
RETURN
END IF
SELECT SUM(a.valor+a.monto_desc) INTO valor
FROM cctb00001 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente AND a.status_t is NULL AND
a.tipo_doc NOT in ("DE","PC")
IF valor IS NULL THEN
LET valor = 0.00
END IF
SELECT SUM(a.valor+a.monto_desc) INTO valor1
FROM cctb00001 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
a.sec_cliente = cliente_bas.sec_cliente and
a.status_t is NULL AND a.tipo_doc = "DE" AND a.num_doc = a.aplica_a
IF valor1 IS NULL THEN
LET valor1 = 0.00
END IF
LET balance = valor - valor1
IF balance != 0 THEN
LET numero_msg = 184
CALL msg(numero_msg)
CONTINUE DIALOG
RETURN
ELSE
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) =
("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00006 SET (status_t,us_mod,fech_mod) =
("E",usuarios,GETDATE())
WHERE tipo_cliente_s = cliente_bas.tipo_cliente AND
sec_cliente_s = cliente_bas.sec_cliente
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) =
("E",usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
# ACTUALIZA LA BASE DE DATOS EXTERIOR
IF kitbis = 'S' THEN
SET CONNECTION "IFMX"
UPDATE vetb00004 SET (status_t,us_mod,fech_mod) =
("E",usuarios,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00005 SET (status_t,us_mod,fech_mod) =
("E",usuarios,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
UPDATE vetb00028 SET (status_t,us_mod,fech_mod) =
("E",usuarios,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
END IF
END IF
LET numero_msg = 39
CALL msg(numero_msg)
ON ACTION actualiza
CALL actualiza()
CALL lista_clientes.clear()
END DIALOG
END FUNCTION
FUNCTION vend_cli()
#WHENEVER ERROR CONTINUE
OPEN WINDOW relacion AT 8,5 WITH FORM "vefmwd101" ATTRIBUTE (BORDER,
COMMENT LINE LAST,FORM LINE FIRST + 1)
CONSTRUCT criterio ON b.nom1_emp,b.apell1_emp FROM nom1_emp,apell1_emp
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
GOTO salir1
END IF
LET selec = "SELECT UNIQUE b.num_emp,b.nom1_emp,b.apell1_emp ",
"FROM adtb00003 b,vetb00028 a ",
"WHERE b.num_emp = a.sec_vend AND a.status_t IS NULL AND ",
criterio CLIPPED," ORDER BY 1 "
PREPARE comando1 FROM selec
DECLARE vendedor CURSOR FOR comando1
LET idx = 1
FOREACH vendedor INTO cli_vend1[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY cli_vend1 TO s_empleados.*
LET curr = ARR_CURR()
LET num_emp = cli_vend1[curr].num_emp
LET nombre_v= cli_vend1[curr].nom1_emp CLIPPED," ",
cli_vend1[curr].apell1_emp CLIPPED
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
GOTO salir1
END IF
LABEL salir1:
CLOSE WINDOW relacion
END FUNCTION
FUNCTION busca_info(d,i1)
DEFINE d ui.Dialog,
i1 INT
LET transportista.cod_zona = cliente_bas.cod_zona
LET nombre = cliente_bas.nombre
CALL busca_nombre_zona()
DISPLAY descrip1 TO descripcion_zona
LET transportista.cod_zona = cliente_bas.cod_zona
LET transportista.cod_provincia = cliente_bas.cod_provincia
CALL busca_provincia()
DISPLAY descrip1 TO descripcion_provincia
SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp INTO num_emp,n1,n2
FROM adtb00003 a, vetb00028 b
WHERE a.num_emp = b.sec_vend AND b.tipo_cliente = cliente_bas.tipo_cliente
AND b.sec_cliente = cliente_bas.sec_cliente
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
# BUSCA SI EL CLIENTE PAGA ITBIS
LET kitbis = 'N'
SELECT a.ncf INTO kitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
CALL ciudad_pais(cliente_bas.cod_provincia)
CALL ctipoNegocio("formonly.tipo_negocio")
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
CALL ccondicion()
CALL busca_direcciones(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente) RETURNING cliente_dir.*
CALL arrcontactos.clear()
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
FOR idx = 1 TO 5
DISPLAY arrcontactos[idx].pcontacto TO scontactos[idx].pcontacto
DISPLAY arrcontactos[idx].ppuesto TO scontactos[idx].ppuesto
DISPLAY arrcontactos[idx].email_contacto TO scontactos[idx].email_contacto
DISPLAY arrcontactos[idx].ptelefono_casa TO scontactos[idx].ptelefono_casa
DISPLAY arrcontactos[idx].telefono_of TO scontactos[idx].telefono_of
END FOR
DECLARE busca_contactos CURSOR FOR
SELECT a.tipo_negocio_contacto,a.contacto,a.puesto,a.puesto1,a.email,a.celular,a.telefono_of,a.telefono_casa,
a.id
FROM vetb00087 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente
ORDER BY a.id
LET idx = 1
FOREACH busca_contactos INTO arrContactos[idx].*
IF idx < 5 THEN
DISPLAY arrcontactos[idx].pcontacto TO scontactos[idx].pcontacto
DISPLAY arrcontactos[idx].ppuesto TO scontactos[idx].ppuesto
DISPLAY arrcontactos[idx].email_contacto TO scontactos[idx].email_contacto
DISPLAY arrcontactos[idx].ptelefono_casa TO scontactos[idx].ptelefono_casa
DISPLAY arrcontactos[idx].telefono_of TO scontactos[idx].telefono_of
END IF
LET idx = idx + 1
END FOREACH
DISPLAY BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.cod_provincia,cliente_bas.cod_zona,cliente_bas.cond_pago,
cliente_bas.fax,cliente_bas.fech_crea,cliente_bas.fech_mod,cliente_bas.limite_credito,
cliente_bas.nombre,cliente_bas.num_rnc,cliente_bas.status_t,cliente_bas.telefono,
cliente_bas.telefono_casa,cliente_bas.telex,cliente_bas.tipo_negocio,
cliente_bas.us_crea,cliente_bas.us_mod,cliente_bas.zona_postal,
num_emp,nombre_v,cliente_dir.barrio,cliente_dir.calle,cliente_dir.casa_num,
cliente_dir.urbanizacion,cliente_bas.id_ciudad,
cliente_bas.url
# BUSCA INFORMACION
CALL pinfo.clear()
DECLARE busca_informacion CURSOR FOR
SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),a.cotizacion_no,b.sub_total,a.cerrada
FROM prtb00012 a, vetb00050 b
WHERE b.cotizacion_no = a.cotizacion_no AND
a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente AND a.status_t IS NULL
LET idx = 1
FOREACH busca_informacion INTO pinfo[idx].*
CALL pinfo.appendElement()
IF pinfo[idx].status_ord = 'S' THEN
LET pinfo[idx].status_ord = 'CERRADA'
END IF
IF pinfo[idx].status_ord = ' N' THEN
LET pinfo[idx].status_ord = 'ABIERTA'
END IF
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION actualiza()
SET CONNECTION "MSSQL"
LET INT_FLAG = FALSE
IF cliente_bas.status_t= "E" THEN
LET numero_msg= 36
CALL msg(numero_msg)
RETURN
END IF
# CONTROL VENDEDOR
{ SELECT a.sec_vend FROM vetb00028 a,seg0007 b
WHERE b.usuario = usuarios AND
b.sec_vend = a.sec_vend AND
a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO LE VENDE A ESTE CLIENTE, DEBE CONSULTAR EL EJECUTIVO ASIGNADO","STOP")
RETURN
END IF}
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
INPUT BY NAME cliente_bas.zona_postal,cliente_bas.num_rnc,
cliente_bas.nombre,cliente_bas.limite_credito,cliente_bas.cond_pago,
cliente_bas.tipo_negocio,
cliente_dir.calle,cliente_dir.casa_num,
cliente_dir.urbanizacion,cliente_dir.barrio,
cliente_bas.cod_zona,
cliente_bas.cod_provincia,
cliente_bas.id_ciudad,cliente_Bas.telefono,
cliente_bas.fax,cliente_bas.telex,cliente_bas.nombre_patente,cliente_bas.patente,
cliente_bas.telefono_casa,
cliente_bas.us_crea,cliente_bas.fech_crea,
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp,
cliente_bas.url
ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE FIELD limite_credito
SELECT a.nom_puesto INTO role_puesto
FROM seg0003 a
WHERE a.usuario = usuarios
IF role_puesto <> 'ADMINISTRATOR' AND
role_puesto <> 'CXC' THEN
NEXT FIELD tipo_negocio
END IF
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio")
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
CALL ccondicion()
ON ACTION buscaZona
CALL consulta_zonas()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
IF NOT int_flag THEN
LET cliente_bas.cod_zona = zona.cod_zona
DISPLAY descrip1 TO descripcion_zona
NEXT FIELD cod_provincia
END IF
LET int_flag = FALSE
ON ACTION buscaProvincia
LET transportista.cod_zona = cliente_bas.cod_zona
CALL consulta_provincias()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
IF NOT int_flag THEN
LET cliente_bas.cod_provincia = zonap.cod_provincia
DISPLAY descrip1 TO descripcion_provincia
NEXT FIELD telefono
END IF
ON ACTION buscaEmpleado
CALL vend_cli()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
IF NOT int_flag THEN
LET num_emp = cli_vend1[curr].num_emp
DISPLAY num_emp,nombre_v
END IF
LET int_flag = FALSE
AFTER FIELD zona_postal
SELECT DISTINCT a.tipo_cliente FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.paga_itbis = 'S'
IF STATUS <> NOTFOUND THEN
IF cliente_bas.zona_postal IS NULL THEN
CALL msg(16)
NEXT FIELD zona_postal
END IF
END IF
AFTER FIELD num_rnc
IF cliente_bas.tipo_cliente < 17 THEN
IF cliente_bas.num_rnc IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
IF cliente_bas.zona_postal = '1' THEN
IF LENGTH(cliente_bas.num_rnc) <> 9 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
ELSE
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
END IF
LET VECES = 0
SELECT COUNT(*) INTO veces FROM vetb00004 a
WHERE a.num_rnc = cliente_bas.num_rnc AND
a.tipo_cliente = cliente_bas.tipo_cliente and
a.status_t is null
IF veces > 2 THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT field num_rnc
END IF
#BUSCA EL RNC EN LA TABLA DE LA DGII
IF kitbis = 'S' AND cliente_bas.zona_postal ='1'THEN
LET selec =
"SELECT a.razon_social,RTRIM(a.calle),' NO.'+RTRIM(a.no_local),a.sector ",
"FROM DGII.dbo.empresas a ",
"WHERE a.rnc = ? "
PREPARE query1 FROM selec
EXECUTE query1 USING cliente_bas. num_rnc INTO cliente_bas.nombre,cliente_dir.calle,
cliente_dir.casa_num,cliente_dir.urbanizacion
IF STATUS = NOTFOUND THEN
CALL msg(3)
#NEXT FIELD num_rnc
END IF
DISPLAY BY NAME cliente_bas.nombre
END IF
END IF
AFTER FIELD cod_zona
IF cliente_bas.cod_zona is NULL then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
SELECT descrip INTO descrip1 FROM vetb00008
WHERE cod_zona = cliente_bas.cod_zona AND status_t IS NULL
IF status = NOTFOUND THEN
LET numero_msg = 43
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
DISPLAY descrip1 TO descripcion_zona
NEXT FIELD cod_provincia
AFTER FIELD cod_provincia
IF cliente_bas.cod_provincia is NULL then
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
SELECT b.nombre_provincia, b.status_t
INTO descrip1, status_reg FROM vetb00009 a, vetb00020 b
WHERE a.cod_zona = cliente_bas.cod_zona AND
a.cod_provincia = cliente_bas.cod_provincia AND
b.cod_provincia = a.cod_provincia
IF status >= 0 THEN
IF status != NOTFOUND THEN
IF status_reg = "E" THEN
LET numero_msg = 66
CALL msg(numero_msg)
NEXT FIELD cod_provincia
END IF
DISPLAY descrip1 TO descripcion_provincia
ELSE
LET numero_msg = 65
CALL msg(numero_msg)
NEXT FIELD cod_zona
END IF
END IF
CALL ciudad_pais(cliente_bas.cod_provincia)
# CALL veprmt102(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
# CALL veprmt106(cliente_bas.tipo_cliente,cliente_bas.sec_cliente)
AFTER FIELD num_emp
IF num_emp IS NULL OR num_emp = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
FROM adtb00003 a
WHERE (a.status_t IS NULL OR a.status_t = "I") AND
(a.num_emp = num_emp)
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
DISPLAY BY NAME nombre_v
AFTER INPUT
IF cliente_bas.cod_provincia IS NULL OR cliente_bas.cod_provincia = 0 THEN
CALL msg(16)
NEXT FIELD cod_provincia
END IF
# BUSCA SI EL CLIENTE PAGA ITBIS
LET kitbis = 'N'
SELECT a.paga_itbis INTO kitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
IF num_emp IS NULL OR num_emp = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT UNIQUE a.nom1_emp,a.apell1_emp INTO n1,n2
FROM adtb00003 a
WHERE (a.status_t IS NULL OR a.status_t = "I") AND a.num_emp = num_emp
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
LET nombre_v = n1 CLIPPED," ",n2 CLIPPED
DISPLAY BY NAME nombre_v
END INPUT
INPUT ARRAY arrContactos FROM scontactos.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
END INPUT
ON ACTION CANCEL
LET INT_FLAG = FALSE
CALL msg(2)
RETURN
ON ACTION guardar
# WHENEVER ERROR CONTINUE
BEGIN WORK
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
cod_zona = cliente_bas.cod_zona,
cod_provincia = cliente_bas.cod_provincia,
id_ciudad = cliente_bas.id_ciudad,
telefono = cliente_bas.telefono,
fax = cliente_bas.fax,
telex = cliente_bas.telex,
patente = cliente_bas.patente,
limite_credito = cliente_bas.limite_credito,
zona_postal = cliente_bas.zona_postal,
num_rnc = cliente_bas.num_rnc,
nombre_patente = cliente_bas.nombre_patente,
us_mod = usuarios,
fech_mod = GETDATE() ,
telefono_casa = cliente_Bas.telefono_casa,
puesto_laboral = cliente_bas.puesto_laboral,
tipo_negocio = cliente_bas.tipo_negocio,
cond_pago = cliente_Bas.cond_pago,
url = cliente_bas.url
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
SELECT a.tipo_cliente FROM vetb00005 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
IF STATUS <> NOTFOUND THEN
UPDATE vetb00005 SET vetb00005.calle = cliente_dir.calle,
vetb00005.urbanizacion = cliente_dir.urbanizacion,
vetb00005.barrio = cliente_dir.barrio,
vetb00005.casa_num = cliente_dir.casa_num,
us_mod = usuarios,
fech_mod = getdate()
WHERE vetb00005.tipo_cliente = cliente_bas.tipo_cliente AND
vetb00005.sec_cliente = cliente_bas.sec_cliente
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
ELSE
INSERT INTO vetb00005 VALUES (cliente_bas.tipo_cliente,
cliente_bas.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, usuarios, GETDATE(),
null, null)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
END IF
SELECT a.sec_cliente FROM vetb00028 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
a.sec_cliente = cliente_bas.sec_cliente
IF STATUS != NOTFOUND THEN
UPDATE vetb00028 SET (sec_vend,us_mod,fech_mod) =
(num_emp,usuarios,GETDATE())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
ELSE
INSERT INTO vetb00028 (tipo_cliente,sec_cliente,sec_vend,us_crea,fech_crea)
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,num_emp,usuarios,GETDATE())
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
END IF
# CONTACTOS
LET cuenta_contacto = arr_count()
DELETE FROM vetb00087 WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
FOR idx = 1 TO arrcontactos.getLength()
IF arrContactos[idx].pcontacto IS NOT NULL THEN
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
telefono_of,telefono_casa,id,us_crea,fech_crea,puesto1,tipo_negocio_contacto)
VALUES
(cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,
arrContactos[idx].pcontacto,arrContactos[idx].ppuesto,
arrContactos[idx].email_contacto,arrContactos[idx].celular,
arrContactos[idx].telefono_of,arrContactos[idx].ptelefono_casa,pid,
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
END IF
END FOR
COMMIT WORK
{ SET CONNECTION "IFMX"
SELECT a.tipo_cliente FROM vetb00004 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
IF STATUS <> NOTFOUND THEN
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
cod_zona = cliente_bas.cod_zona,
cod_provincia = cliente_bas.cod_provincia,
telefono = cliente_bas.telefono,
fax = cliente_bas.fax,
telex = cliente_bas.telex,
patente = cliente_bas.patente,
limite_credito = cliente_bas.limite_credito,
zona_postal = cliente_bas.zona_postal,
num_rnc = cliente_bas.num_rnc,
nombre_patente = cliente_bas.nombre_patente,
us_mod = usuarios,
fech_mod = getdate()
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
ELSE
INSERT INTO vetb00004
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
cliente_bas.nombre,cliente_bas.cod_zona,cliente_bas.cod_provincia,
cliente_bas.telefono,cliente_bas.fax,cliente_bas.telex,
cliente_bas.patente,cliente_bas.limite_credito,
cliente_bas.zona_postal,cliente_bas.num_rnc,
cliente_bas.nombre_patente,NULL,usuarios,getdate(),NULL,NULL)
END IF
SELECT a.sec_cliente FROM vetb00028 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
a.sec_cliente = cliente_bas.sec_cliente
IF STATUS != NOTFOUND THEN
UPDATE vetb00028 SET (sec_vend,us_mod,fech_mod) =
(num_emp,usuarios,getdate())
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
ELSE
INSERT INTO vetb00028 (tipo_cliente,sec_cliente,sec_vend,us_crea,fech_crea)
VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,num_emp,usuarios,getdate())
END IF
SELECT a.sec_cliente FROM vetb00005 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente and
a.sec_cliente = cliente_bas.sec_cliente
IF STATUS != NOTFOUND THEN
UPDATE vetb00005 SET calle = cliente_dir.calle,
urbanizacion = cliente_dir.urbanizacion,
barrio = cliente_dir.barrio,
casa_num = cliente_dir.casa_num,
us_mod = usuarios,
fech_mod = getdate()
WHERE tipo_cliente = cliente_bas.tipo_cliente AND
sec_cliente = cliente_bas.sec_cliente
ELSE
INSERT INTO vetb00005 VALUES (cliente_bas.tipo_cliente,
cliente_bas.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, 'veprmt101', getdate(),
null, null)
END IF
}
CLEAR FORM
LET numero_msg = 13
CALL msg(numero_msg)
RETURN
END DIALOG
END FUNCTION