Pessoal, boa tarde!

Gostaria de compartilhar um procedimento de autorização para pedidos de vendas cujo o cliente tenha algum título vencido a mais de 7 dias.

1.Criar a consulta formatada

Abaixo a SQL utilizada para a consulta que foi intitulada  “Titulos em aberto => 7 dias

SELECT CASE WHEN COUNT(CLIENTE) > 0 THEN ‘True’ else ‘False’ END FROM (

/*   

——————————————————————————–     

  Notas Fiscais Saida     

——————————————————————————–     

*/     

SELECT     

‘TipoDoc’      = ‘NF’,   

‘Casa DC Imp. Boleto’ = d.QryGroup64, 

‘Nota’         = cast(a.serial as char(10)),     

‘NroDoc’       = a.DocEntry,    

‘NroBoleto’    = ”,   

‘Parcela’      = cast(b.InstlmntID as varchar(2)),     

‘NroParcela’   = a.Installmnt,   

‘Emissao’      = a.DocDate,     

‘Vencto’       = b.DueDate,            

‘DataPagto’    = ”,   

‘DiasAVencer’   = datediff(dd,b.DueDate,getdate()),   

‘DiasPagto’    = 0,   

‘Cliente’      = a.CardCode,     

‘ClienteNome’  = a.CardName,   

‘CNPJ’         = Convert(Varchar,c.TaxId0),       

‘ValorDoc’     = b.InsTotal,   

‘ValorPago’    = 0,   

‘Desconto’     = 0,   

‘Saldo’        = case when b.PaidToDate <> 0 then (b.InsTotal) – b.PaidToDate else b.InsTotal end,     

‘Portador’     = case isnull(a.PeyMethod, ”)   

                       when ” then ‘Carteira’   

                       else a.PeyMethod   

                  end,     

‘NroBancario’  = ”,   

‘Situacao’     = case b.Status    

                       when ‘O’ then ‘Aberto’   

                       else ‘Cancelado/Devolvido’

                  end,   

‘Status’       = b.status,   

‘Fone’         = d.phone1,   

‘Fone2’        = d.phone2,   

‘Classif.Cli’  = d.paymBlock,   

‘LimiteCred’   = d.creditline,   

‘Obs’          = ”,   

‘Vendedor’     = e.slpname   

FROM oinv a     

  join inv6 b on b.DocEntry = a.DocEntry /* Parcelas */     

                   and b.Status   = ‘O’     

  join ocrd d on d.CardCode = a.CardCode /* Informações do cliente (para pegar o país) */   

  JOIN CRD7 C ON C.CardCode = D.CardCode AND C.Address = D.ShipToDef     

  join oslp e on e.SlpCode  = a.SlpCode  /* Vendedor */ 

          

WHERE a.PeyMethod not in (‘Carteira_Vendor’,’Carteira_Export’)

and b.DueDate <= DATEADD(day,-7,getdate())   

   

   

UNION     

   

/*   

——————————————————————————–     

  Devoluções     

——————————————————————————–     

*/     

SELECT     

‘TipoDoc’      = ‘NFDev’, 

‘Casa DC Imp. Boleto’ = d.QryGroup64,   

‘Nota’         = cast(a.serial as char(10)),     

‘NroDoc’       = a.DocEntry,    

‘NroBoleto’    = ”,   

‘Parcela’      = cast(b.InstlmntID as varchar(2)),     

‘NroParcela’   = a.Installmnt,   

‘Emissao’      = a.DocDate,     

‘Vencto’       = b.DueDate,

‘DataPagto’    = ”,   

‘DiasAVencer’   = datediff(dd,b.DueDate,getdate()),   

‘DiasPagto’    = 0,   

‘Cliente’      = a.CardCode,     

‘ClienteNome’  = a.CardName,   

‘CNPJ’         = Convert(Varchar,c.TaxId0),      

‘ValorDoc’     = (b.InsTotal*-1),     

‘ValorPago’    = 0,   

‘Desconto’     = 0,   

‘Saldo’        = case when b.PaidToDate <> 0 then (b.InsTotal-b.PaidToDate)*-1 else (b.InsTotal)*-1 end,     

‘Portador’     = case isnull(a.PeyMethod, ”)   

                       when ” then ‘Carteira’   

                       else a.PeyMethod   

                  end,     

‘NroBancario’  = ”,   

‘Situacao’     = ‘Aberto’,   

‘Status’       = ”,   

‘Fone’         = d.phone1,   

‘Fone2’        = d.phone2,   

‘Classif.Cli’  = d.paymBlock,   

‘LimiteCred’   = d.creditline,   

‘Obs’          = ”,   

‘Vendedor’     = e.slpname   

FROM orin a     

  JOIN rin6 b on b.DocEntry = a.DocEntry /* Parcelas */     

                   and b.Status   = ‘O’     

  JOIN ocrd d on d.CardCode = a.CardCode /* Informações do cliente (para pegar o país) */   

  JOIN CRD7 C ON C.CardCode = D.CardCode AND C.Address = D.ShipToDef       

  JOIN oslp e on e.SlpCode  = a.SlpCode  /* Vendedor */       

and b.DueDate <= DATEADD(day,-7,getdate())     

   

UNION     

     

/*     

——————————————————————————–     

  Boletos     

——————————————————————————–     

*/     

SELECT     

‘TipoDoc’      = ‘Boleto’,   

‘Casa DC Imp. Boleto’ = c.QryGroup64, 

‘Nota’         = cast(e.Serial as char(10)),     

‘NroDoc’       = a.DocEntry,    

‘NroBoleto’    = b.BoeNum,   

‘Parcela’      = d.InstID,       

‘NroParcela’   = d.InstID,   

‘Emissao’      = e.docdate,    

‘Vencto’       = b.DueDate,           

‘DataPagto’    = ”,   

‘DiasAVencer’   = datediff(dd,b.DueDate,getdate()),   

‘DiasPagto’    = ”,   

‘Cliente’      = b.CardCode,     

‘ClienteNome’  = b.CardName,   

‘CNPJ’         = Convert(Varchar,h.TaxId0),       

‘ValorDoc’     = b.BoeSum,     

‘ValorPago’    = 0,   

‘Desconto’     = 0,   

‘Saldo’        = b.BoeSum,     

‘Portador’     = isnull(b.PayMethCod, ”),    

‘NroBancario’  = ”,   

‘Situacao’     = b.BoeStatus,–‘Aberto’,   

‘Status’       = ”,   

‘Fone’         = c.phone1,   

‘Fone2’        = c.phone2,   

‘Classif.Cli’  = c.paymBlock,   

‘LimiteCred’   = c.creditline,   

‘Obs’          = b.Comments,   

‘Vendedor’     = f.slpname    

FROM oboe b     

      JOIN orct a on a.DocEntry = b.PmntNum   /* Contas a receber */     

      JOIN ocrd c on c.CardCode = b.CardCode  /* Informações do cliente (para pegar o país) */   

      JOIN CRD7 H ON H.CardCode = C.CardCode AND H.Address = C.ShipToDef       

LEFT JOIN rct2 d on d.DocNum   = b.PmntNum     

                 and d.InvType  = 13         /* Somente contas a receber originadas de notas fiscais */     

                 and d.InvoiceID = 0   

LEFT JOIN oinv e on e.DocEntry = d.DocEntry /* Nota Fiscal */     

LEFT JOIN oslp f on f.SlpCode  = e.SlpCode  /* Vendedor */     

LEFT JOIN inv1 g on g.DocEntry = e.DocEntry /* Apenas a primeira linha da nota para pegar a comissão do vendedor */     

                    and g.LineNum  = 0     

WHERE b.BoeStatus in ( ‘D’,’G’ )   

  and b.BoeType = ‘I’ 

  and b.DueDate <= DATEADD(day,-7,getdate())   

   

UNION   

/*     

——————————————————————————–     

  LCM   

——————————————————————————–     

*/     

   

SELECT     

‘TipoDoc’      = ‘LCM’,  

‘Casa DC Imp. Boleto’ = t2.QryGroup64,  

‘Nota’         = substring(replace(t1.ref2,’/’,”),1,8),   

‘NroDoc’       = t1.number,   

‘NroBoleto’    = ”,   

‘Parcela’      = 1,     

‘NroParcela’   = 1,   

‘Emissao’      = t1.refdate,   

‘Vencto’       = t1.DueDate,

‘DataPagto’    = null,   

‘DiasAVencer’   = datediff(dd,t1.DueDate,getdate()),   

‘DiasPagto’    = 0,   

‘Cliente’      = t2.CardCode,     

‘ClienteNome’  = t2.CardName,   

‘CNPJ’         = Convert(Varchar,T3.TaxId0),     

‘ValorDoc’     = (T0.Debit-T0.Credit),     

‘ValorPago’    = 0,   

‘Desconto’     = 0,   

‘Saldo’        = (T0.Debit-T0.Credit),     

‘Portador’     = ‘Carteira’,   

‘NroBancario’  = ”,   

‘Situacao’     = ‘A’,   

‘Status’       = ”,   

‘Fone’         = t2.phone1,   

‘Fone2’        = t2.phone2,   

‘Classif.Cli’  = t2.paymBlock,   

‘LimiteCred’   = t2.creditline,   

‘Obs’          = isnull(t0.linememo,”),   

‘Vendedor’     = f.slpname   

FROM [dbo].[JDT1] T0     

       JOIN ojdt t1 on t0.transid = t1.transid   

       JOIN ocrd t2 on t0.ShortName = t2.cardcode and T2.CARDtype = ‘C’   

       JOIN CRD7 T3 ON T3.CardCode = T2.CardCode AND T3.Address = t2.ShipToDef      

  LEFT JOIN oslp f on f.SlpCode  = t2.SlpCode  /* Vendedor */     

WHERE ((T0.[TransType] <> ’13’ AND T0.[TransType] <> ‘203’ AND  T0.[TransType] <> ‘132’  AND  T0.[TransType] <> ‘-2’  AND     

      T0.[TransType] <> ’24’   AND  T0.[TransType] <> ’46’ AND  T0.[TransType] <> ’14’  AND  T0.[TransType] <> ‘182’ ) OR  T0.[BatchNum] > 0 ) AND  T0.[ShortName] like ‘%’     

      AND  T0.[Closed] = ‘N’   AND  T0.[IntrnMatch] = 0 AND  (T0.[Debit] <> 0  OR  T0.[Credit] <> 0 ) AND  (T0.[SourceLine] <> -14  OR  T0.[SourceLine] IS NULL  ) AND  (T0.[BalDueCred] <> (0)  OR  T0.[BalDueDeb] <> (0) )    

and t1.DueDate <= DATEADD(day,-7,getdate())     

   

UNION   

/*   

———————————————————-   

Pagamento por conta   

———————————————————-   

*/   

   

SELECT    

‘TipoDoc’      = ‘Adiant’,  

‘Nota’         = ”,     

‘Casa DC Imp. Boleto’ = t7.QryGroup64, 

‘NroDoc’       = T0.[DocEntry],    

‘NroBoleto’    = ”,   

‘Parcela’      = 1,   

‘NroParcela’   = 1,       

‘Emissao’      = T0.TaxDate,     

‘Vencto’       = T0.DocDueDate,     

‘DataPagto’    = T0.DocDate,   

‘DiasPagto’    = 0,   

‘DiasAVencer’  = 0,   

‘Cliente’      = T0.[CardCode],     

‘ClienteNome’  = T0.[CardName],    

‘CNPJ’         = Convert(Varchar,T3.TaxId0),      

‘ValorDoc’     = T0.NoDocSum,     

‘ValorPago’    = T0.NoDocSum-T0.OpenBal,   

‘Desconto’     = 0,   

‘Saldo’        = T0.OpenBal*-1,     

‘Portador’     = case    

       when (T0.boeSum)> 0 then T0.PayMth   

       when (T0.trsfrsum)> 0 then ‘Transferencia-‘+T0.trsfrAcct   

       when (T0.cashSum)>0 then ‘Dinheiro’   

       when (T0.CheckSum)>0 then ‘Cheque’   

       end,    

    

‘NroBancario’  = ”,   

‘Situacao’     = ‘P’,   

‘Status’       = ”,   

‘Fone’         = t7.phone1,   

‘Fone2’        = t7.phone2,   

‘Classif.Cli’  = t7.paymBlock,   

‘LimiteCred’   = t7.creditline,   

‘Obs’          = isnull(T0.Comments ,”),   

‘Vendedor’     = f.slpname   

FROM  [dbo].[ORCT] T0     

      JOIN ocrd t7 on t7.CardCode = t0.CardCode /* Informações do cliente (para pegar o país) */   

      JOIN CRD7 T3 ON T3.CardCode = T7.CardCode AND T3.Address = t7.ShipToDef      

      JOIN jdt1 t8 on t8.transid = t0.transid   

                  and t8.IntrnMatch = 0 and t8.closed = ‘N’ and t8.SourceLine IS NULL    

LEFT JOIN oslp f on f.SlpCode  = t7.SlpCode  /* Vendedor */     

WHERE T0.[Canceled] = ‘N’   

  and T0.[BoeStatus] is null   

  and T0.PayNoDoc = ‘Y’   

  and T0.OpenBal > 0

  and T0.DocDueDate <= DATEADD(day,-7,getdate())  ) A WHERE CLIENTE = N’1′

2.Criar o procedimento de autorização

Defina um nome e descrição para o seu modelo de autorização

Print_ Mar. 29 13.04_ML.jpg

Especifique para quais usuários o bloqueio ocorrerá

Print_ Mar. 29 13.06_ML.jpg

Marque o documento de marketing “Pedido de Vendas”

Print_ Mar. 29 13.07_ML.jpg

Defina o grupo de aprovadores

Print_ Mar. 29 13.09_ML.jpg

Especifique a condição para o bloqueio, em nosso caso iremos utilizar a consulta formatada inclusa no item 1

Escolha a opção “Quando se aplica o seguinte”

Print_ Mar. 29 13.11_ML.jpg

Selecione a consulta formatada “Condições baseadas em consultas do usuário

Print_ Mar. 29 13.16_ML.jpg

Selecione a consulta,e a tela deverá ficar conforme a imagem abaixo.

Print_ Mar. 29 13.14_ML.jpg

3.Validando o procedimento

Checando se o cliente possui títulos vencidos a mais de 7 dias para realização do teste

Print_ Mar. 29 13.17_ML.jpg

Print_ Mar. 29 13.18_ML.jpg

Neste exemplo o cliente possui títulos com 10 dias em atraso.(Imagem acima)

Emitindo o pedido

Print_ Mar. 29 13.20_ML.jpg

Print_90 Mar. 29 13.20_ML.jpg

Ao gravar o pedido de vendas o SAP emite o alerta que este documento passará por liberação, no exemplo o modelo de autorização “Vendas_001” que criamos no passos acima.

Print_ Mar. 29 13.21_ML.jpg

Espero ter contribuído com este documento, caso tenham dúvidas estou a disposição.

To report this post you need to login first.

1 Comment

You must be Logged on to comment or reply to a post.

  1. Marta Loiola

    Bom dia Marcos Leite!

    Para este caso, no momento da geração do boleto, você tem alguma variante que informe que após 7 dias de vencido, este será protestado?

    Você teria alguma documentação nesse sentido?

    Obrigada!

    Marta Loiola

    (0) 

Leave a Reply