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);
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' AND COALESCE(NEW.REPRESENTANTE_ID,0) = 0) 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
               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

   IF (COALESCE(NEW.REPRESENTANTE_ID,0) = 0) THEN
       BEGIN
       EXCEPTION "..." 'REPRESENTANTE INVÁLIDO OU NÃO INFORMADO, INCLUSÃO CANCELADA!';
       END

   IF (COALESCE(NEW.FORMA_COMISSAO,'') = '') THEN
       BEGIN
       EXCEPTION "..." 'FORMA DE COMISSÃO (LIQUIDEZ OU FATURAMENTO) INVÁLIDA OU NÃO INFORMADA, INCLUSÃO CANCELADA!';
       END

END;