SET TERM ^ ;

CREATE OR ALTER trigger ttbnfs_parcelamento_b2i for tbnfs_parcelamento
active before insert position 2
AS
declare variable Representante_Id Integer;
declare variable Representante_Comissao Numeric(15,2);
declare variable Vendedor_Id Integer;
declare variable Vendedor_Comissao Numeric(15,2);
declare variable Forma_Comissao Char(1);
declare variable DescricaoOperacao varchar(100);
Begin

  if (New.Avulso = '0') then
      Begin
        For Select First 1 N.Representante_Codigo, N.Representante_Comissao,
                       N.Vendedor_Id, N.Vendedor_Comissao, R.Forma_Comissao
          From TbNfs N, TbRepresentante R
         Where N.Controle = New.Nfs_Controle
           and N.Representante_Codigo = R.Codigo
          Into :Representante_Id, :Representante_Comissao, :Vendedor_Id, :Vendedor_Comissao, :Forma_Comissao
            Do Begin
               New.Representante_Id = Coalesce(:Representante_Id,0);
               New.Representante_Comissao = Coalesce(:Representante_Comissao,0.00);
               New.Vendedor_Id = Coalesce(:Vendedor_Id,0);
               New.Vendedor_Comissao = Coalesce(:Vendedor_Comissao,0.00);
               New.Forma_Comissao = Coalesce(:Forma_Comissao,'F');
               End
      End else
  if (New.Avulso = '1') then
      Begin
        For Select First 1 C.Representante_Codigo,
                       IIF(Coalesce(C.Representante_Comissao,0.00)>0.00,C.Representante_Comissao,R.Comissao),
                       C.Vendedor_Codigo, C.Vendedor_Comissao,
                       R.Forma_Comissao
          From TbCliente C, TbRepresentante R
         Where C.Codigo = New.Empresa_Codigo
           and C.Representante_Codigo = R.Codigo
          Into :Representante_Id, :Representante_Comissao, :Vendedor_Id, :Vendedor_Comissao, :Forma_Comissao
            Do Begin
               if(coalesce(New.Representante_Id,0) = 0)then
               begin
                 New.Representante_Id = Coalesce(:Representante_Id,0);
                 New.Representante_Comissao = Coalesce(:Representante_Comissao,0.00);
                 New.Forma_Comissao = Coalesce(:Forma_Comissao,'F');
               end

               New.Vendedor_Id = Coalesce(:Vendedor_Id,0);
               New.Vendedor_Comissao = Coalesce(:Vendedor_Comissao,0.00);

               End
      End

   if (coalesce(New.Representante_Id, 0) = 0) then
       Begin
       Exception "..." 'Representante invalido ou nao informado, inclusao cancelada!';
       End

   if (Coalesce(New.Forma_Comissao,  '') = '') then
       Begin
       Exception "..." 'Forma de Comissao (Liquidez ou Faturamento) invalida ou nao informada, inclusao cancelada!';
       End

   if (coalesce(new.CONTA_RECEBER_OPERACAO, 0) = 0) then
       Begin
           DescricaoOperacao = coalesce((SELECT FIRST 1 FN_ELIPSES(A.DESCRICAO,100) FROM TBCONTA_RECEBER_OPERACAO A WHERE A.CODIGO = new.CONTA_RECEBER_OPERACAO AND A.STATUS = '1'),'');
           IF(DescricaoOperacao = '')THEN
           BEGIN
              Exception "..." 'Operacao do contas a receber invalida ou nao informada na forma de pagamento, inclusao cancelada!';
           END
       
       End

End^

^ SET TERM ; ^