ALTER TABLE TBEMPRESA
ALTER COLUMN BAIRRO TYPE VARCHAR(60); 

SET TERM ^ ;

CREATE OR ALTER procedure SPC_FORM_EMPRESA10 (
    STATUS_1 char(1),
    CLIENTE char(1),
    FORNECEDOR char(1),
    REPRESENTANTE char(1),
    TRANSPORTADORA char(1),
    EMPRESA_1 varchar(50),
    UF_1 varchar(2))
returns (
    CODIGO integer,
    RAZAOSOCIAL varchar(50),
    UF char(2),
    CNPJ varchar(14),
    IE varchar(20),
    ENDERECO varchar(200),
    NUMERO varchar(20),
    BAIRRO varchar(60),
    CIDADE varchar(40),
    CEP varchar(8),
    REPRESENTANTE_CODIGO integer,
    REPRESENTANTE_COMISSAO numeric(10,2),
    BLOQUEIA_NOTAFISCAL varchar(1),
    BLOQUEIA_PEDIDO varchar(1),
    TRANSPORTADORA_CODIGO integer,
    COMISSAO numeric(10,2),
    SUFRAMA varchar(9),
    EMAIL varchar(200),
    EMAIL_XML varchar(200),
    FONE varchar(15),
    NOMEFANTASIA varchar(20),
    OBSERVACAO blob sub_type 0 segment size 80,
    PAGAMENTO_CONDICAO integer,
    PRIORIDADE integer,
    SUPERVISOR_ID integer,
    SUPERVISOR_DESCRICAO varchar(50),
    TAG varchar(3),
    LATITUDE varchar(20),
    LONGITUDE varchar(20),
    STATUS char(1))
as
BEGIN
FOR SELECT A.CODIGO, A.RAZAOSOCIAL, A.UF, A.CNPJ, A.IE, A.ENDERECO, A.NUMERO,
    A.BAIRRO, A.CIDADE, A.CEP, B.REPRESENTANTE_CODIGO, B.REPRESENTANTE_COMISSAO,
    B.BLOQUEIA_NOTAFISCAL,B.BLOQUEIA_PEDIDO, B.TRANSPORTADORA_CODIGO,C.COMISSAO,
    B.SUFRAMA,A.EMAIL, A.EMAIL_XML, A.FONE, A.NOMEFANTASIA, B.OBSERVACAO,
    B.PAGAMENTO_CONDICAO, B.PRIORIDADE, C.SUPERVISOR_ID,
   (SELECT FIRST 1 S.DESCRICAO FROM TBSUPERVISOR S WHERE C.SUPERVISOR_ID = S.ID),
   (CASE WHEN B.TAG = '1' THEN 'TAG' ELSE '' END) TAG, A.LATITUDE, A.LONGITUDE,
    A.STATUS

FROM TBEMPRESA A
LEFT JOIN TBCLIENTE B ON A.CODIGO = B.CODIGO
LEFT JOIN TBREPRESENTANTE C ON (CASE WHEN A.HABILITA_REPRESENTANTE='1' THEN A.CODIGO ELSE B.REPRESENTANTE_CODIGO END) = C.CODIGO
WHERE (A.STATUS LIKE :STATUS_1)
  AND (A.HABILITA_CLIENTE        LIKE :CLIENTE       AND
       A.HABILITA_FORNECEDOR     LIKE :FORNECEDOR    AND
       A.HABILITA_REPRESENTANTE  LIKE :REPRESENTANTE AND
       A.HABILITA_TRANSPORTADORA LIKE :TRANSPORTADORA)
  AND (A.RAZAOSOCIAL LIKE :EMPRESA_1 OR
       A.NOMEFANTASIA LIKE :EMPRESA_1)
  AND (A.UF LIKE :UF_1)

ORDER BY A.RAZAOSOCIAL
INTO
   :CODIGO,
   :RAZAOSOCIAL,
   :UF,
   :CNPJ,
   :IE,
   :ENDERECO,
   :NUMERO,
   :BAIRRO,
   :CIDADE,
   :CEP,
   :REPRESENTANTE_CODIGO,
   :REPRESENTANTE_COMISSAO,
   :BLOQUEIA_NOTAFISCAL,
   :BLOQUEIA_PEDIDO,
   :TRANSPORTADORA_CODIGO,
   :COMISSAO,
   :SUFRAMA,
   :EMAIL,
   :EMAIL_XML,
   :FONE,
   :NOMEFANTASIA,
   :OBSERVACAO,
   :PAGAMENTO_CONDICAO,
   :PRIORIDADE,
   :SUPERVISOR_ID,
   :SUPERVISOR_DESCRICAO,
   :TAG,
   :LATITUDE,
   :LONGITUDE,
   :STATUS
DO SUSPEND;
END
^

SET TERM ; ^


SET TERM ^ ;

CREATE OR ALTER procedure SPU_CLIENTE_PDV
as
declare variable PDV_CFE_ID integer;
declare variable CLIENTE_NOME varchar(200);
declare variable CLIENTE_CPF varchar(14);
declare variable CLIENTE_FONE varchar(15);
declare variable CLIENTE_CEP varchar(8);
declare variable CLIENTE_ENDERECO varchar(200);
declare variable CLIENTE_NUMERO varchar(20);
declare variable CLIENTE_BAIRRO varchar(60);
declare variable CLIENTE_UF varchar(2);
declare variable CLIENTE_IE varchar(20);
declare variable CLIENTE_CIDADE integer;
BEGIN
    FOR SELECT
            T.ID,
            E.RAZAOSOCIAL,
            E.CNPJ,
            E.FONE,
            E.CEP,
            E.ENDERECO,
            E.NUMERO,
            E.BAIRRO,
            E.UF,
            E.IE,
            CID.ID AS CIDADE_ID
        FROM TBPDV_CFE T
        INNER JOIN TBEMPRESA E ON E.CODIGO = T.CLIENTE_ID
        INNER JOIN TBCIDADE CID ON CID.DESCRICAO = E.CIDADE AND CID.UF = E.UF
        WHERE E.CNPJ <> T.CLIENTE_CPF
        AND T.CLIENTE_CPF <> ''
        AND E.CNPJ NOT IN ('99999999999999', '00000000000000')
        INTO :PDV_CFE_ID, :CLIENTE_NOME, :CLIENTE_CPF, :CLIENTE_FONE,
            :CLIENTE_CEP, :CLIENTE_ENDERECO, :CLIENTE_NUMERO, :CLIENTE_BAIRRO, :CLIENTE_UF, :CLIENTE_IE, :CLIENTE_CIDADE
    
    DO BEGIN
        
        IF(COALESCE(:PDV_CFE_ID, 0) > 0) THEN
        BEGIN
            UPDATE TBPDV_CFE C SET
                C.CLIENTE_CPF           = :CLIENTE_CPF,
                C.CLIENTE_NOME          = :CLIENTE_NOME,
                C.CLIENTE_FONE          = :CLIENTE_FONE,
                C.CLIENTE_CEP           = :CLIENTE_CEP,
                C.CLIENTE_ENDERECO      = :CLIENTE_ENDERECO,
                C.CLIENTE_NUMERO        = :CLIENTE_NUMERO,
                C.CLIENTE_BAIRRO        = :CLIENTE_BAIRRO,
                C.CLIENTE_CIDADE        = :CLIENTE_CIDADE,
                C.CLIENTE_UF            = :CLIENTE_UF,
                C.CLIENTE_IE            = :CLIENTE_IE
            WHERE C.ID = :PDV_CFE_ID;

        END


    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger tbnfe_transportadora_b01iu for tbnfe_transportadora
active before insert or update position 0
AS
DECLARE VARIABLE TRANSPORTE_RAZAOSOCIAL      VARCHAR(50);
DECLARE VARIABLE TRANSPORTE_CNPJ             VARCHAR(14);
DECLARE VARIABLE TRANSPORTE_ENDERECO         VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_BAIRRO           VARCHAR(60);
DECLARE VARIABLE TRANSPORTE_CEP              VARCHAR(8);
DECLARE VARIABLE TRANSPORTE_CIDADE           VARCHAR(40);
DECLARE VARIABLE TRANSPORTE_COMPLEMENTO      VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_IE               VARCHAR(20);
DECLARE VARIABLE TRANSPORTE_UF               VARCHAR(2);
DECLARE VARIABLE TRANSPORTE_NOMEFANTASIA     VARCHAR(20);
BEGIN
     
    NEW.TRANSPORTE_RAZAOSOCIAL         =  '';
    NEW.TRANSPORTE_CNPJ                =  '';
    NEW.TRANSPORTE_ENDERECO            =  '';
    NEW.TRANSPORTE_BAIRRO              =  '';
    NEW.TRANSPORTE_CEP                 =  '';
    NEW.TRANSPORTE_CIDADE              =  '';
    NEW.TRANSPORTE_COMPLEMENTO         =  '';
    NEW.TRANSPORTE_IE                  =  '';
    NEW.TRANSPORTE_UF                  =  '';
    NEW.TRANSPORTE_NOMEFANTASIA        =  '';

     IF(NEW.FRETE = 3)THEN
     BEGIN
        FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBESTABELECIMENTO A, TBNFe B
                WHERE A.CODIGO = B.ESTABELECIMENTO_CODIGO
                AND B.CONTROLE = NEW.nfe_controle
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END

       IF(NEW.FRETE = 4)THEN
       BEGIN
          FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBEMPRESA A, TBNFE B
                WHERE A.CODIGO = B.empresa_codigo
                AND B.CONTROLE = NEW.NFE_CONTROLE
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END

       IF(NEW.FRETE <> 4 AND NEW.FRETE <> 3 AND NEW.FRETE <> 9)THEN
       BEGIN
          FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBEMPRESA A
                WHERE A.CODIGO = new.transportadora_codigo
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger tbnfs_transportadora_b01iu for tbnfs_transportadora
active before insert or update position 0
AS
DECLARE VARIABLE TRANSPORTE_RAZAOSOCIAL      VARCHAR(50);
DECLARE VARIABLE TRANSPORTE_CNPJ             VARCHAR(14);
DECLARE VARIABLE TRANSPORTE_ENDERECO         VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_BAIRRO           VARCHAR(60);
DECLARE VARIABLE TRANSPORTE_CEP              VARCHAR(8);
DECLARE VARIABLE TRANSPORTE_CIDADE           VARCHAR(40);
DECLARE VARIABLE TRANSPORTE_COMPLEMENTO      VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_IE               VARCHAR(20);
DECLARE VARIABLE TRANSPORTE_UF               VARCHAR(2);
DECLARE VARIABLE TRANSPORTE_NOMEFANTASIA     VARCHAR(20);
BEGIN
     
    NEW.TRANSPORTE_RAZAOSOCIAL         =  '';
    NEW.TRANSPORTE_CNPJ                =  '';
    NEW.TRANSPORTE_ENDERECO            =  '';
    NEW.TRANSPORTE_BAIRRO              =  '';
    NEW.TRANSPORTE_CEP                 =  '';
    NEW.TRANSPORTE_CIDADE              =  '';
    NEW.TRANSPORTE_COMPLEMENTO         =  '';
    NEW.TRANSPORTE_IE                  =  '';
    NEW.TRANSPORTE_UF                  =  '';
    NEW.TRANSPORTE_NOMEFANTASIA        =  '';

     IF(NEW.FRETE = 3)THEN
     BEGIN
        FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBESTABELECIMENTO A, TBNFS B
                WHERE A.CODIGO = B.ESTABELECIMENTO_CODIGO
                AND B.CONTROLE = NEW.nfs_controle
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END

       IF(NEW.FRETE = 4)THEN
       BEGIN
          FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBEMPRESA A, TBNFS B
                WHERE A.CODIGO = B.empresa_codigo
                AND B.CONTROLE = NEW.NFS_CONTROLE
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END

       IF(NEW.FRETE <> 4 AND NEW.FRETE <> 3 AND NEW.FRETE <> 9)THEN
       BEGIN
          FOR SELECT FIRST 1
                A.razaosocial  AS TRANSPORTE_RAZAOSOCIAL,
                A.cnpj         AS TRANSPORTE_CNPJ,
                A.endereco     AS TRANSPORTE_ENDERECO,
                A.BAIRRO       AS TRANSPORTE_BAIRRO,
                A.cep          AS TRANSPORTE_CEP,
                A.cidade       AS TRANSPORTE_CIDADE,
                A.complemento  AS TRANSPORTE_COMPLEMENTO,
                A.ie           AS TRANSPORTE_IE,
                A.uf           AS TRANSPORTE_UF,
                A.nomefantasia AS TRANSPORTE_NOMEFANTASIA
    
                FROM TBEMPRESA A
                WHERE A.CODIGO = new.transportadora_codigo
                INTO :TRANSPORTE_RAZAOSOCIAL, :TRANSPORTE_CNPJ, :TRANSPORTE_ENDERECO, :TRANSPORTE_BAIRRO,
                    :TRANSPORTE_CEP, :TRANSPORTE_CIDADE, :TRANSPORTE_COMPLEMENTO, :TRANSPORTE_IE, :TRANSPORTE_UF,
                    :TRANSPORTE_NOMEFANTASIA
                DO BEGIN
                    NEW.TRANSPORTE_RAZAOSOCIAL         =  :TRANSPORTE_RAZAOSOCIAL;
                    NEW.TRANSPORTE_CNPJ                =  :TRANSPORTE_CNPJ;
                    NEW.TRANSPORTE_ENDERECO            =  :TRANSPORTE_ENDERECO;
                    NEW.TRANSPORTE_BAIRRO              =  :TRANSPORTE_BAIRRO;
                    NEW.TRANSPORTE_CEP                 =  :TRANSPORTE_CEP;
                    NEW.TRANSPORTE_CIDADE              =  :TRANSPORTE_CIDADE;
                    NEW.TRANSPORTE_COMPLEMENTO         =  :TRANSPORTE_COMPLEMENTO;
                    NEW.TRANSPORTE_IE                  =  :TRANSPORTE_IE;
                    NEW.TRANSPORTE_UF                  =  :TRANSPORTE_UF;
                    NEW.TRANSPORTE_NOMEFANTASIA        =  :TRANSPORTE_NOMEFANTASIA;
                END
       END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbpdv_cfe_b07i for tbpdv_cfe
active before insert position 7
AS

DECLARE VARIABLE TRANSPORTADORA_DESCRICAO VARCHAR(50);
DECLARE VARIABLE TRANSPORTE_CNPJ VARCHAR(14);
DECLARE VARIABLE TRANSPORTE_ENDERECO VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_BAIRRO VARCHAR(60);
DECLARE VARIABLE TRANSPORTE_CEP VARCHAR(8);
DECLARE VARIABLE TRANSPORTE_CIDADE VARCHAR(40);
DECLARE VARIABLE TRANSPORTE_COMPLEMENTO VARCHAR(200);
DECLARE VARIABLE TRANSPORTE_IE VARCHAR(20);
DECLARE VARIABLE TRANSPORTE_UF VARCHAR(2);
DECLARE VARIABLE TRANSPORTE_NOMEFANTASIA VARCHAR(20);

BEGIN

    :TRANSPORTADORA_DESCRICAO   = '';
    :TRANSPORTE_CNPJ            = '';
    :TRANSPORTE_ENDERECO        = '';
    :TRANSPORTE_BAIRRO          = '';
    :TRANSPORTE_CEP             = '';
    :TRANSPORTE_CIDADE          = '';
    :TRANSPORTE_COMPLEMENTO     = '';
    :TRANSPORTE_IE              = '';
    :TRANSPORTE_UF              = '';
    :TRANSPORTE_NOMEFANTASIA    = '';

    IF(NEW.TRANSPORTE_FRETE = 3 OR NEW.TRANSPORTE_FRETE = 4) THEN
    BEGIN

        IF(NEW.TRANSPORTE_FRETE = 3) THEN
        BEGIN
            SELECT FIRST 1
                E.RAZAOSOCIAL,
                E.CNPJ,
                E.ENDERECO,
                E.BAIRRO,
                E.CEP,
                E.CIDADE,
                E.COMPLEMENTO,
                E.IE,
                E.UF,
                E.NOMEFANTASIA
            FROM TBESTABELECIMENTO E
            INNER JOIN TBCIDADE C ON C.DESCRICAO = E.CIDADE AND C.UF = E.UF
            WHERE E.CODIGO = NEW.ESTABELECIMENTO_ID
            INTO
                :TRANSPORTADORA_DESCRICAO,
                :TRANSPORTE_CNPJ,
                :TRANSPORTE_ENDERECO,
                :TRANSPORTE_BAIRRO,
                :TRANSPORTE_CEP,
                :TRANSPORTE_CIDADE,
                :TRANSPORTE_COMPLEMENTO,
                :TRANSPORTE_IE,
                :TRANSPORTE_UF,
                :TRANSPORTE_NOMEFANTASIA;

        END ELSE
        BEGIN
            :TRANSPORTADORA_DESCRICAO   = SUBSTRING(NEW.CLIENTE_NOME FROM 1 FOR 50);
            :TRANSPORTE_CNPJ            = NEW.CLIENTE_CPF;
            :TRANSPORTE_ENDERECO        = NEW.CLIENTE_ENDERECO;
            :TRANSPORTE_BAIRRO          = NEW.CLIENTE_BAIRRO;
            :TRANSPORTE_CEP             = NEW.CLIENTE_CEP;
            :TRANSPORTE_CIDADE          = COALESCE((SELECT FIRST 1 T.DESCRICAO FROM TBCIDADE T WHERE T.ID = NEW.CLIENTE_CIDADE), '');
            :TRANSPORTE_COMPLEMENTO     = NEW.CLIENTE_COMPLEMENTO;
            :TRANSPORTE_IE              = NEW.CLIENTE_IE;
            :TRANSPORTE_UF              = NEW.CLIENTE_UF;
            :TRANSPORTE_NOMEFANTASIA    = SUBSTRING(NEW.CLIENTE_NOME FROM 1 FOR 20);

        END

    END ELSE IF(NEW.TRANSPORTE_FRETE <> 9) THEN
    BEGIN
        SELECT FIRST 1
                E.RAZAOSOCIAL,
                E.CNPJ,
                E.ENDERECO,
                E.BAIRRO,
                E.CEP,
                E.CIDADE,
                E.COMPLEMENTO,
                E.IE,
                E.UF,
                E.NOMEFANTASIA
        FROM TBEMPRESA E
        INNER JOIN TBCIDADE C ON C.DESCRICAO = E.CIDADE AND C.UF = E.UF
        WHERE E.CODIGO = NEW.TRANSPORTADORA_ID
        INTO
            :TRANSPORTADORA_DESCRICAO,
            :TRANSPORTE_CNPJ,
            :TRANSPORTE_ENDERECO,
            :TRANSPORTE_BAIRRO,
            :TRANSPORTE_CEP,
            :TRANSPORTE_CIDADE,
            :TRANSPORTE_COMPLEMENTO,
            :TRANSPORTE_IE,
            :TRANSPORTE_UF,
            :TRANSPORTE_NOMEFANTASIA;
    END

    NEW.TRANSPORTADORA_DESCRICAO        = :TRANSPORTADORA_DESCRICAO;
    NEW.TRANSPORTE_CNPJ                 = :TRANSPORTE_CNPJ;
    NEW.TRANSPORTE_ENDERECO             = :TRANSPORTE_ENDERECO;
    NEW.TRANSPORTE_BAIRRO               = :TRANSPORTE_BAIRRO;
    NEW.TRANSPORTE_CEP                  = :TRANSPORTE_CEP;
    NEW.TRANSPORTE_CIDADE               = :TRANSPORTE_CIDADE;
    NEW.TRANSPORTE_COMPLEMENTO          = :TRANSPORTE_COMPLEMENTO;
    NEW.TRANSPORTE_IE                   = :TRANSPORTE_IE;
    NEW.TRANSPORTE_UF                   = :TRANSPORTE_UF;
    NEW.TRANSPORTE_NOMEFANTASIA         = :TRANSPORTE_NOMEFANTASIA;

END
^

SET TERM ; ^

