Files
MBS/PROYECTO/vedir/veprmt101.4gl
T

1953 lines
79 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.
------------------------------------------------------------------
}
IMPORT os
IMPORT util
GLOBALS "veprgb000.4gl"
DEFINE tmpfile STRING
DEFINE file_bytes BYTE
DEFINE tmpdir_file,tipos_foto,dir_file,dir_foto CHAR(60),
d_tipos,mensaje,f_tipos,l_file,filepath,extension,extension_foto,tmp_dirfoto,imagefac,tmp_destino STRING,ffoto,pimagen BYTE
, nombre_file_foto,foto VARCHAR(100)
DEFINE Toemail,subject,cuerpo_correo,xusername,xsmtphost,xsmtpport,xpassword,emailadd,retorne STRING,
telefono_vend VARCHAR(25),
email_vend VARCHAR(255),
codigo_err,p_res INT
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(100),
email_estado VARCHAR(3),
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,
arr_vend_aux DYNAMIC ARRAY OF RECORD
idrow INT,
sec_vend_aux INT,
nombre_vend_aux VARCHAR(100)
END RECORD,
filedestino VARCHAR(200)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
# BUSCA INFORMACION GENERAL PARA EL EMAIL
SELECT from_address,puerto,nombre_servidor,clave
INTO xusername,xsmtpport,xsmtphost,xpassword
FROM tbperfil_mail WHERE cod_perfil = 2
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_bas.generica,cliente_bas.codigodgii,
cliente_dir.calle,cliente_dir.casa_num,
cliente_dir.urbanizacion,cliente_dir.barrio,
cliente_bas.codigo,
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.puesto_laboral,
cliente_bas.url,
cliente_bas.us_crea,cliente_bas.fech_crea,
cliente_bas.us_mod,cliente_bas.fech_mod,num_emp
BEFORE FIELD nombre
IF cliente_bas.zona_postal = '1' THEN
IF cliente_bas.cond_pago IS NULL THEN
NEXT FIELD cond_pago
END IF
END IF
AFTER FIELD patente
IF cliente_bas.patente IS NULL THEN
CALL msg(16)
NEXT FIELD patente
END IF
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =url_verification CLIPPED,cliente_bas.patente CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
DISPLAY "ESTADO 1 ",estado
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD patente
END IF
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
LET cliente_bas.codigo='DO'
CALL ctipoNegocio("formonly.tipo_negocio")
LET pcondicion = ui.combobox.forname("formonly.cond_pago")
CALL ccondicion()
CALL paises()
CALL arrContactos.clear()
SELECT a.sec_vend,a.celular,a.email INTO num_emp,telefono_vend,email_vend
FROM seg0000 a
WHERE a.usuario = usuarios
DISPLAY BY NAME num_emp
# CALL tipo_comprobante()
ON ACTION buscaZona
CALL consulta_zonas(cliente_bas.codigo)
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(cliente_bas.cod_zona)
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
BEFORE FIELD generica
SELECT DISTINCT a.generica FROM vetb00004 a WHERE a.generica = "SI"
IF STATUS <> NOTFOUND THEN
NEXT FIELD codigodgii
END IF
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
IF cliente_bas.codigodgii IS NOT NULL AND cliente_bas.generica='NO' THEN
SELECT a.paga_itbis INTO chitbis FROM vetb00060 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente
IF chitbis = 'S' OR kitbis = '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 cliente_bas.zona_postal = '2' THEN
IF LENGTH(cliente_bas.num_rnc) <> 11 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD num_rnc
END IF
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,a.estado1 ",
"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,estado_rnc
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_rnc
END IF
DISPLAY BY NAME cliente_bas.nombre
NEXT FIELD cond_pago
END IF
IF estado_rnc = 'ANULADO' OR estado_rnc = 'CESE TEMPORAL' OR estado_rnc = 'DADO DE BAJA' OR
estado_rnc = 'RECHAZADO' OR estado_rnc= 'RECHAZADO' OR estado_rnc = 'SUSPENDIDO' THEN
CALL msg(1022)
NEXT FIELD sec_cliente
END IF
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,a.codigo_dgii
INTO kitbis,pcrea,cliente_bas.codigodgii 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)
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
# CONTROL RELACION ZONAS - PROVINCIAS
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
a.cod_provincia = cliente_bas.cod_provincia
IF STATUS = NOTFOUND THEN
CALL msg(66)
NEXT FIELD codigo
END IF
END INPUT
# vendedores auxiliares
# vendedores auxiliares
INPUT ARRAY arr_vend_aux FROM s_aux.*
BEFORE ROW
LET curr = arr_curr()
AFTER FIELD sec_vend_aux
IF arr_vend_aux[curr].sec_vend_aux IS NOT NULL THEN
SELECT RTRIM(a.nom1_emp)||' '||a.apell1_emp INTO arr_vend_aux[curr].nombre_vend_aux
FROM adtb00003 a
WHERE a.num_emp = arr_vend_aux[curr].sec_vend_aux AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD sec_vend_aux
END IF
IF arr_vend_aux[curr].sec_vend_aux = num_emp THEN
CALL fgl_winmessage("ERROR","NO PUEDE ASIGNAR EJECUTIVO DE ESTE CLIENTE COMO VENDEDOR ADICIONAL","INFO")
NEXT FIELD sec_vend_aux
END IF
END IF
ON ACTION busca_auxiliar
CALL busca_empleado1() RETURNING p_adtb03.num_emp,p_adtb03.nom1_emp,
p_adtb03.nom2_emp,
p_adtb03.apell1_emp,
p_adtb03.apell2_emp
LET arr_vend_aux[curr].sec_vend_aux = p_adtb03.num_emp
LET arr_vend_aux[curr].nombre_vend_aux= p_adtb03.nom1_emp clipped,' ',
p_adtb03.nom2_emp clipped,' ',
p_adtb03.apell1_emp clipped,' ',
p_adtb03.apell2_emp clipped
END INPUT
# contactos
INPUT ARRAY arrContactos FROM scontactos.*
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
AFTER FIELD email_contacto
IF arrcontactos[arr_curr()].email_contacto IS NOT NULL THEN
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =arrcontactos[arr_curr()].email_contacto CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD email_contacto
END IF
END IF
END INPUT
ON ACTION CANCEL
CALL MSG(2)
LET INT_FLAG = FALSE
RETURN
ON ACTION actualiza ATTRIBUTE(TEXT="Actualiza",IMAGE="refresh")
IF cliente_dir.calle IS NULL THEN
CALL msg(16)
NEXT FIELD calle
END IF
IF cliente_bas.nombre IS NULL THEN
CALL msg(16)
NEXT FIELD nombre
END IF
IF cliente_bas.patente = 'jsoto@marmotech.com.do' THEN
CALL fgl_winmessage("ERROR","EMAIL INVALIDO","INFO")
NEXT FIELD pantente
END IF
# IF LENGTH(cliente_bas.patente) <11 THEN
# CALL fgl_Winmessage("INFO","EMAIL DEBE DE CONTENER MAS CARACTERES","INFO")
# NEXT FIELD patente
# END IF
IF cliente_bas.patente NOT MATCHES "*@*" THEN
CALL fgl_Winmessage("INFO","EMAIL NO ES VALIDO","INFO")
NEXT FIELD patente
END IF
# IF cliente_bas.patente = 'jsoto@marmotech.com.do' THEN
# CALL fgl_Winmessage("INFO","EMAIL ERRONEO","INFO")
# NEXT FIELD patente
# END IF
IF LENGTH(cliente_dir.calle) < 5 THEN
CALL fgl_winmessage("INFO","DEBES COLOCAR UNA DIRECCION CON MAS INFORMACION","INFO")
NEXT FIELD calle
END IF
IF cliente_bas.patente IS NULL THEN
CALL msg(16)
NEXT FIELD patente
END IF
# VENDEDOR
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
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =cliente_bas.patente CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD patente
END IF
# 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
FOR idx = 1 TO arrcontactos.getLength()
IF arrcontactos[idx].pcontacto IS NOT NULL THEN
IF arrcontactos[idx].email_contacto IS NOT NULL THEN
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =arrcontactos[idx].email_contacto CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
IF codigo_Err =400 THEN
ROLLBACK WORK
CALL msg(1016)
NEXT FIELD email_contacto
END IF
END IF
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
telefono_of,telefono_casa,us_crea,fech_crea,puesto1,tipo_negocio_contacto,email_estado)
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,
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto,
arrContactos[idx].email_estado)
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,generica,codigodgii,codigo)
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,cliente_bas.generica,cliente_bas.codigodgii,cliente_bas.codigo)
IF STATUS < 0 THEN
ROLLBACK WORK
EXIT PROGRAM
END IF
# Venedor auxiliar
FOR idx = 1 TO arr_vend_aux.getLength()
IF arr_Vend_aux[idx].sec_vend_aux IS NOT NULL THEN
INSERT INTO vetb00059 (tipo_cliente,sec_cliente,sec_Vend_aux,us_crea,fech_crea)
VALUES (cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,arr_vend_aux[idx].sec_vend_aux,usuarios,getdate())
END IF
END FOR
CALL contenido() RETURNING cuerpo_correo
LET Toemail = cliente_bas.patente CLIPPED
LET subject = 'MARMOTECH BIENBENIDA'
SELECT a.from_address,a.puerto,a.nombre_servidor,a.clave
INTO xusername,xsmtpport,xsmtphost,xpassword
FROM tbperfil_mail a WHERE a.cod_perfil = 2
COMMIT WORK
SET CONNECTION "MSSQL"
LET numero_msg = 1
CALL msg(numero_msg)
{ CALL enviaemail(Toemail,subject,cuerpo_correo,NULL,xusername,xsmtphost,xsmtpport,xpassword)
RETURNING retorne
INSERT INTO envia_email_log (email,display_name,estado,fecha,programa_envio,us_crea)
VALUES
(toemail
,cliente_bas.nombre
,retorne
,getdate()
,'MAESTRA CLIENTES'
,usuarios)
IF retorne = 'CORRECTO' THEN
COMMIT WORK
CALL arrcontactos.clear()
SET CONNECTION "MSSQL"
LET numero_msg = 1
CALL msg(numero_msg)
ELSE
ROLLBACK WORK
CALL msg(1016)
END IF
}
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()
# CALL tipo_comprobante()
AFTER CONSTRUCT
END CONSTRUCT
ON ACTION busca_cliente ATTRIBUTE(TEXT="Buscar Cliente",IMAGE="find")
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 LEFT OUTER JOIN vetb00028 b ON a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente
LEFT OUTER JOIN adtb00003 c ON b.sec_vend = c.num_emp ",
" WHERE ",
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 ATTRIBUTE(TEXT="Desactivar",IMAGE="fa-close")
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())
# CALL tipo_comprobante()
CALL paises()
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.codigodgii,cliente_bas.codigo
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 paises()
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,cliente_bas.codigodgii,cliente_bas.codigo
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 ATTRIBUTE(TEXT='Borrar',IMAGE="garbage2")
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 ATTRIBUTE(TEXT="Actualiza",IMAGE="refresh")
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,
corporativo VARCHAR(100),
plimite_cr_grupo DEC(12,2)
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 tipo_comprobante()
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.email_estado,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
# INFORMACION CORPORATIVO
SELECT CAST(a.codigo_grupo AS VARCHAR(10))||'-'||a.descripcion,b.limite_cr_grupo
INTO corporativo,plimite_cr_grupo
FROM vetb00052 a,vetb00054 b
WHERE a.codigo_grupo = b.codigo_grupo AND a.tipo_cliente = cliente_bas.tipo_cliente
AND a.sec_cliente = cliente_bas.sec_cliente
CALL paises()
SELECT a.codigo INTO cliente_bas.codigo FROM vetb00004 a
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente
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,cliente_bas.codigodgii,corporativo,plimite_cr_grupo,
cliente_bas.codigo
CALL arr_vend_aux.clear()
#BUSCA VENDEDOR AUXILIAR
DECLARE busca_vendedor CURSOR FOR
SELECT a.idrow,a.sec_vend_aux,RTRIM(b.nom1_emp) ||' '|| b.apell1_emp FROM vetb00059 a,adtb00003 b
WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND
a.sec_cliente = cliente_bas.sec_cliente AND a.sec_vend_aux = b.num_emp
LET idx = 1
FOREACH busca_vendedor INTO arr_vend_aux[idx].*
LET idx = idx+1
END FOREACH
# 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
DISPLAY "usuario ",usuarios
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_bas.generica,cliente_bas.codigodgii,
cliente_dir.calle,cliente_dir.casa_num,
cliente_dir.urbanizacion,cliente_dir.barrio,
cliente_bas.codigo,
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 nombre
IF cliente_bas.zona_postal = '1' THEN
NEXT FIELD cond_pago
END IF
AFTER FIELD patente
IF cliente_bas.patente IS NULL THEN
CALL msg(16)
NEXT FIELD patente
END IF
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =url_verification CLIPPED,cliente_bas.patente CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
DISPLAY "ESTADO ",estado," ",url_verification
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD patente
END IF
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 paises()
# CALL tipo_comprobante()
BEFORE FIELD generica
SELECT DISTINCT a.generica FROM vetb00004 a WHERE a.generica = "SI"
IF STATUS <> NOTFOUND THEN
NEXT FIELD codigodgii
END IF
ON ACTION buscaZona
CALL consulta_zonas(cliente_bas.codigo)
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(cliente_bas.cod_zona)
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.codigodgii IS NOT NULL AND cliente_bas.generica='NO' 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
# CONTROL RELACION ZONAS - PROVINCIAS
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
a.cod_provincia = cliente_bas.cod_provincia
END INPUT
# vendedores auxiliares
INPUT ARRAY arr_vend_aux FROM s_aux.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE ROW
LET curr = arr_curr()
AFTER FIELD sec_vend_aux
IF arr_vend_aux[curr].sec_vend_aux IS NOT NULL THEN
SELECT RTRIM(a.nom1_emp)||' '||a.apell1_emp INTO arr_vend_aux[curr].nombre_vend_aux
FROM adtb00003 a
WHERE a.num_emp = arr_vend_aux[curr].sec_vend_aux AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD sec_vend_aux
END IF
IF arr_vend_aux[curr].sec_vend_aux = num_emp THEN
CALL fgl_winmessage("ERROR","NO PUEDE ASIGNAR EJECUTIVO DE ESTE CLIENTE COMO VENDEDOR ADICIONAL","INFO")
NEXT FIELD sec_vend_aux
END IF
END IF
ON ACTION busca_auxiliar
CALL busca_empleado1() RETURNING p_adtb03.num_emp,p_adtb03.nom1_emp,
p_adtb03.nom2_emp,
p_adtb03.apell1_emp,
p_adtb03.apell2_emp
LET arr_vend_aux[curr].sec_vend_aux = p_adtb03.num_emp
LET arr_vend_aux[curr].nombre_vend_aux= p_adtb03.nom1_emp clipped,' ',
p_adtb03.nom2_emp clipped,' ',
p_adtb03.apell1_emp clipped,' ',
p_adtb03.apell2_emp clipped
END INPUT
INPUT ARRAY arrContactos FROM scontactos.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
CALL ctipoNegocio("formonly.tipo_negocio_contacto")
AFTER FIELD email_contacto
IF arrcontactos[arr_curr()].email_contacto IS NOT NULL THEN
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =arrcontactos[arr_curr()].email_contacto CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD email_contacto
END IF
END IF
END INPUT
{ INPUT ARRAY documentos FROM docu.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
DECLARE buscat CURSOR FOR
SELECT a.nombre_file, a.ruta, a.arch_tipo, a.tipo
FROM vetb00062 a
WHERE a.tipo_Cliente=cliente_bas.tipo_cliente AND a.sec_cliente =cliente_bas.sec_cliente
LET idx=1
FOREACH buscat INTO documentos[idx].nombre_file,documentos[idx].filedestino,
documentos[idx].arch_tipo,documentos[idx].tipo_file
LET idx=idx+1
END FOREACH
BEFORE ROW
# LET documentos[arr_curr()].filedestino =NULL
DISPLAY documentos[arr_curr()].filedestino TO foto
ON ACTION busca_foto ATTRIBUTE(TEXT="Foto",IMAGE="upload")
CALL agregar_archivo(arr_curr()) RETURNING tmp_dirfoto
DISPLAY "destino ",tmp_dirfoto
LET documentos[arr_curr()].nombre_file = os.Path.basename(tmp_dirfoto)
LET documentos[arr_curr()].tipo_file = os.Path.extension(tmp_dirfoto)
LET documentos[arr_curr()].filedestino=tmp_dirfoto
LOCATE documentos[arr_curr()].data IN MEMORY
CALL documentos[arr_curr()].data.readfile(tmp_dirfoto)
END INPUT }
ON ACTION CANCEL
LET INT_FLAG = FALSE
CALL msg(2)
RETURN
ON ACTION guardar ATTRIBUTE(TEXT="Salvar", IMAGE="fa-life-saver")
IF cliente_bas.nombre IS NULL THEN
CALL msg(16)
NEXT FIELD nombre
END IF
IF num_emp IS NULL OR num_emp = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
# VERIFICA EL EMAIL
CALL inicializar()
LET url_verification =cliente_bas.patente CLIPPED
DISPLAY "url ",url_verification
CALL apiclient(url_verification) RETURNING estado,codigo_err
DISPLAY "CODIGO ",codigo_Err
IF codigo_Err =400 THEN
CALL msg(1016)
NEXT FIELD patente
END IF
# CONTROL RELACION ZONAS - PROVINCIAS
SELECT a.cod_provincia FROM vetb00020 a WHERE a.codigo = cliente_bas.codigo AND
a.cod_provincia = cliente_bas.cod_provincia
IF STATUS = NOTFOUND THEN
CALL msg(66)
NEXT FIELD codigo
END IF
# WHENEVER ERROR CONTINUE
BEGIN WORK
UPDATE vetb00004 SET vetb00004.nombre = cliente_bas.nombre,
vetb00004.codigo = cliente_bas.codigo,
vetb00004.cod_zona = cliente_bas.cod_zona,
vetb00004.cod_provincia = cliente_bas.cod_provincia,
vetb00004.id_ciudad = cliente_bas.id_ciudad,
vetb00004.telefono = cliente_bas.telefono,
vetb00004.fax = cliente_bas.fax,
vetb00004.telex = cliente_bas.telex,
vetb00004.patente = cliente_bas.patente,
# limite_credito = cliente_bas.limite_credito,
vetb00004.zona_postal = cliente_bas.zona_postal,
vetb00004.num_rnc = cliente_bas.num_rnc,
vetb00004.nombre_patente = cliente_bas.nombre_patente,
vetb00004.codigodgii = cliente_bas.codigodgii,
vetb00004.us_mod = usuarios,
vetb00004.fech_mod = GETDATE() ,
vetb00004.telefono_casa = cliente_Bas.telefono_casa,
vetb00004.puesto_laboral = cliente_bas.puesto_laboral,
vetb00004.tipo_negocio = cliente_bas.tipo_negocio,
vetb00004.cond_pago = cliente_Bas.cond_pago,
vetb00004.url = cliente_bas.url,
vetb00004.generica = cliente_bas.generica
WHERE vetb00004.tipo_cliente = cliente_bas.tipo_cliente AND
vetb00004.sec_cliente = cliente_bas.sec_cliente
{ DELETE FROM vetb00062
WHERE tipo_cliente=cliente_bas.tipo_cliente AND sec_cliente=cliente_bas.sec_cliente
FOR idx=1 TO documentos.getLength()
INSERT INTO vetb00062
(tipo_cliente, sec_cliente, nombre_file, ruta, arch_tipo, tipo)
VALUES(cliente_bas.tipo_cliente,cliente_bas.sec_cliente,documentos[idx].nombre_file,documentos[idx].filedestino,
documentos[idx].arch_tipo,documentos[idx].tipo_file)
END FOR }
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
SELECT a.nom_puesto INTO role_puesto
FROM seg0003 a
WHERE a.usuario = usuarios
IF role_puesto = 'ADMINISTRATOR' OR
role_puesto = 'CXC' THEN
UPDATE vetb00004 SET limite_credito = cliente_bas.limite_credito
WHERE vetb00004.tipo_cliente = cliente_bas.tipo_cliente AND
vetb00004.sec_cliente = cliente_bas.sec_cliente
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
END IF
DISPLAY "PASE ACT CLIENTE "
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
DISPLAY "LLEGUE AL VETB28"
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
DISPLAY "empleado upda ",num_emp
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
DISPLAY "empleado inst ",num_emp
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
IF arrcontactos[idx].email_contacto IS NOT NULL THEN
# VERIFICA EMAIL
CALL inicializar()
LET url_verification =arrcontactos[idx].email_contacto CLIPPED
CALL apiclient(url_verification) RETURNING estado,codigo_err
IF codigo_Err =400 THEN
ROLLBACK WORK
CALL msg(1016)
NEXT FIELD email_contacto
END IF
END IF
INSERT INTO vetb00087 (tipo_cliente,sec_cliente,contacto,puesto,email,celular,
telefono_of,telefono_casa,us_crea,fech_crea,puesto1,tipo_negocio_contacto,
email_estado)
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,
usuarios,getdate(),arrcontactos[idx].ppuesto1,arrcontactos[idx].tipo_negocio_contacto,
arrContactos[idx].email_estado)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR","NO PUDE ACTUALIZAR CLIENTE","STOP")
END IF
END IF
END FOR
# Venedor auxiliar
DELETE FROM vetb00059 WHERE tipo_cliente = cliente_bas.tipo_cliente AND sec_cliente = cliente_bas.sec_cliente
FOR idx = 1 TO arr_vend_aux.getLength()
IF arr_Vend_aux[idx].sec_vend_aux IS NOT NULL THEN
INSERT INTO vetb00059 (tipo_cliente,sec_cliente,sec_Vend_aux,us_crea,fech_crea)
VALUES (cliente_bas.tipo_cliente,cliente_Bas.sec_cliente,arr_vend_aux[idx].sec_vend_aux,usuarios,getdate())
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() ,
codigodgii = cliente_bas.codigodgii
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,cliente_bas.codigodgii)
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
FUNCTION tipo_comprobante()
DEFINE kcodigo char(14), kdescripcion VARCHAR(100),
codigodgii ui.ComboBox
LET codigodgii = ui.ComboBox.forName("formonly.codigodgii")
CALL codigodgii.clear()
DECLARE busca_dgii CURSOR FOR
SELECT a.codigo_dgii,a.tipo_ncf FROM vetb00071 a
WHERE a.disponible = "S" AND
a.sucid = 1 AND a.tipo_doc = 'FT'
ORDER BY a.codigo_dgii
FOREACH busca_dgii INTO kcodigo,kdescripcion
LET kcodigo = kcodigo CLIPPED
CALL codigodgii.addItem(kcodigo,kdescripcion)
END FOREACH
END FUNCTION
FUNCTION contenido()
DEFINE xcuerpo1 STRING
LET xcuerpo1 = "<!DOCTYPE html><body>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
</style>
</head>
<img src='.\\imagenes\\logo.png' width='400' height='200' >
"
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h1>BIENBENIDO ",cliente_bas.nombre CLIPPED,"</h1>"
LET xcuerpo1 = xcuerpo1 CLIPPED,
"<h2>Es un placer para nosotros poder contar con la confianza que usted deposita en nuestra empresa</h2>"
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h2>El ejecutivo que lo atiende es ",nombre_v CLIPPED,"</h2>"
LET xcuerpo1 = xcuerpo1 CLIPPED,"<h2>Puede contactarlo a los telefonos: (809)-227-1322 En Santo Domingo o a su numero celular: ",
telefono_Vend CLIPPED," Asi como tambien a su correo electronico ",email_vend CLIPPED,
"<table><tr><th>Productos</th><th>Unidades</th> <th>cantidad</th><th>"
LET xcuerpo1 = xcuerpo1 CLIPPED,"</table></body>"
RETURN xcuerpo1
END FUNCTION
FUNCTION inicializar()
LET url_verification =NULL #'https://api.apilayer.com/email_verification/'
END FUNCTION
FUNCTION agregar_archivo(i)
DEFINE filepath STRING
DEFINE tmpfile STRING
DEFINE i INTEGER
DEFINE tmp_destino,nombre_foto string
LET filepath= NULL
CALL ui.Interface.frontCall(
"standard","openfile",
[NULL,"Images","*.jpg *.png *.gif *.pdf","Seleccione archivo"],
[filepath]
)
{IF filepath IS NULL THEN
RETURN
END IF}
LET nombre_foto =cliente_bas.tipo_cliente USING "<<<<<<<<","-",cliente_bas.sec_cliente USING "<<<<<<<<","-",i USING "<<<<"
LET tmpfile = FGL_GETENV("TEMP"),"\\",nombre_foto CLIPPED,".jpg"
LET tmp_destino=fgl_getenv("IMAGENES"),"\\clientes\\",nombre_foto CLIPPED,".",os.Path.extension(filepath)
DISPLAY "tmp file",tmpfile
DISPLAY "nombre ",nombre_foto
-- Copia local FE ? FE
CALL fgl_getfile(filepath, tmp_destino)
RETURN tmp_destino
END FUNCTION