/* si hay una sola sucursal seleccionela */
SET TERM ^ ;

CREATE OR ALTER procedure TRAE_CLIENTE_MOVIL (
    NIT varchar(20))
returns (
    DV varchar(2),
    TERC_NOM varchar(124),
    SALDO numeric(18,2),
    DISPONIBLE numeric(18,2),
    CART_VENCIDA varchar(10),
    CUPO_VENCIDO varchar(10),
    DIGV char(1),
    APELLIDO1 varchar(60),
    APELLIDO2 varchar(60),
    NOMBRE1 varchar(60),
    NOMBRE2 varchar(60),
    PAIS varchar(3),
    CIUDCOD varchar(5),
    CIUDNOM varchar(60),
    DIR varchar(60),
    ZONAP varchar(8),
    FAX varchar(25),
    TEL varchar(40),
    CEL varchar(25),
    EMAIL varchar(100),
    CONTACTO varchar(60),
    ZONACOD varchar(2),
    ZONANOM varchar(60),
    GRUPCOD integer,
    GRUPNOM varchar(60),
    VEND integer,
    OBSERV varchar(60),
    TIPOID char(1),
    TIPOID_NOM varchar(30),
    CUPO T_MONTO,
    DIAS integer,
    SUCURSAL varchar(10),
    NOMSUCURSAL varchar(125),
    LISTA INTEGER)
AS
declare variable nrosuc integer;
begin
EXECUTE PROCEDURE LEE_CONFIGURACION('CARTERA','SALDOS', 'ACCION A TOMAR SI EL CUPO DE CREDITO ES INSUFICIENTE') RETURNING_VALUES(:CUPO_VENCIDO);
EXECUTE PROCEDURE LEE_CONFIGURACION('FACTURACION','PEDIDOS','ACCION A TOMAR SI EL CLIENTE TIENE CARTERA VENCIDA') RETURNING_VALUES(:CART_VENCIDA);
select terc_dv, terc_nom, substring(terc_contacto FROM 1 FOR 60), terc_dv, terc_apellido1, terc_apellido2, terc_nombre1, terc_nombre2, pais_id, terc_ciu,
  ciud_cod, terc_dir, terc_zonapostal, terc_fax, terc_tel, terc_cel, terc_email, zona_cod, substring(terc_obs from 1 for 60), terc_tipoid, clie_cupo, clie_dias, grca_cod, vend_cod
  from terceros t, clientes c where t.terc_nit = c.terc_nit and t.terc_nit = :NIT
  INTO :DV, :TERC_NOM, :CONTACTO, :DIGV, :APELLIDO1, :APELLIDO2, :NOMBRE1, :NOMBRE2, :PAIS, :CIUDNOM, :CIUDCOD, :DIR, :ZONAP, :FAX, :TEL, :CEL,
  :EMAIL, :ZONACOD, :OBSERV, :TIPOID, :CUPO, :DIAS, :grupcod, :vend;
if (TERC_NOM IS NULL) then
    TERC_NOM = '';
if (CONTACTO IS NULL) then
    CONTACTO = '';
if (ZONAP IS NULL) then
    ZONAP = '';
if (FAX IS NULL) then
    FAX = '';
if (TEL IS NULL) then
    TEL = '';
if (CEL IS NULL) then
    CEL = '';
if (EMAIL IS NULL) then
    EMAIL = '';
if (:CUPO is null) then
    CUPO = 0;
if (:GRUPCOD is null) then
    GRUPCOD = 0;
if (:DIAS is null) then
    DIAS = 0;
SELECT ZONA_NOM FROM ZONAS WHERE ZONA_COD = :ZONACOD INTO :ZONANOM;
if (GRUPCOD <> 0) then
    SELECT GRCA_NOMBRE FROM GRUPO_CARTERA WHERE GRCA_COD = :grupcod INTO :GRUPNOM;
ELSE
    GRUPNOM = '';
SELECT TIID_NOM FROM TIPO_ID WHERE TIID_COD = :TIPOID INTO :TIPOID_NOM;
EXECUTE PROCEDURE NOMBRE_ASCII(TERC_NOM) returning_values (TERC_NOM);
EXECUTE PROCEDURE NOMBRE_ASCII(CONTACTO) returning_values (CONTACTO);
EXECUTE PROCEDURE NOMBRE_ASCII(ZONANOM) returning_values (ZONANOM);
EXECUTE PROCEDURE NOMBRE_ASCII(GRUPNOM) returning_values (GRUPNOM);
EXECUTE PROCEDURE NOMBRE_ASCII(CIUDNOM) returning_values (CIUDNOM);
EXECUTE PROCEDURE NOMBRE_ASCII(APELLIDO1) returning_values (APELLIDO1);
EXECUTE PROCEDURE NOMBRE_ASCII(APELLIDO2) returning_values (APELLIDO2);
EXECUTE PROCEDURE NOMBRE_ASCII(NOMBRE1) returning_values (NOMBRE1);
EXECUTE PROCEDURE NOMBRE_ASCII(NOMBRE2) returning_values (NOMBRE2);
EXECUTE PROCEDURE NOMBRE_ASCII(OBSERV) returning_values (OBSERV);
EXECUTE PROCEDURE NOMBRE_ASCII(DIR) returning_values (DIR);
EXECUTE PROCEDURE NOMBRE_ASCII(EMAIL) returning_values (EMAIL);
EXECUTE PROCEDURE NOMBRE_ASCII(TIPOID_NOM) returning_values (TIPOID_NOM);
select sum(SALDO) FROM vencido_cliente(:nit, CAST('NOW' AS DATE), '0', 'S') INTO :SALDO;
if (:saldo is null) then
    saldo = 0;
execute procedure cupo_disponible(:nit, CAST('NOW' AS DATE), '0') returning_values (:DISPONIBLE);
select count(clcu_cod), max(clcu_cod) from cliente_sucursales cs where cs.terc_nit = :nit into :nrosuc, :sucursal;
if (nrosuc <> 1) then
    sucursal = '';
ELSE
    BEGIN
    SELECT CS.clsu_nombre ||  ' - ' || cs.clsu_dir, CS.lipr_cod FROM cliente_sucursales CS WHERE CS.terc_nit = :NIT AND CLCU_COD = :SUCURSAL
        INTO :NOMSUCURSAL, :LISTA;
    END
if (TERC_NOM <> '' and TERC_NOM is not null) then
  suspend;
end^

SET TERM ; ^



