LC_FATA1001.PRW 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. //-------------------------------------------------------------
  2. // Função FATA1001 - Não Bloqueia a gravação do ORÇAMENTO.
  3. // Validação no orçamento de venda para verificar se o cliente
  4. // tem títulos vencidos. Disparado por gatilho - CJ_CLIENTE.
  5. // Envia e-mail para o Financeiro com as pendencias do cliente.
  6. // Solicitante: Gilson - Financeiro.
  7. // Autor: Aytel Marcello Fonseca.
  8. // Data: 27-01-2014
  9. //-------------------------------------------------------------
  10. #include "protheus.ch"
  11. #include "rwmake.ch"
  12. #include "topconn.ch"
  13. #include "totvs.ch"
  14. User Function FATA1001()
  15. Local aArea := GetArea()
  16. Public cIn := ""
  17. Public cCliente := SA1->A1_COD
  18. If Funname() = "RPC" //Portal SMS
  19. Return
  20. Endif
  21. If Select("QRY") > 0
  22. dbSelectArea("QRY")
  23. QRY->(dbCloseArea())
  24. Endif
  25. cQuery := "SELECT Trim(CC2_MSGCOM) MSGCOM FROM CC2010 WHERE D_E_L_E_T_ = ' ' AND CC2_CODMUN = '" + SA1->A1_COD_MUN + "' AND CC2_EST = '" + SA1->A1_EST + "'"
  26. TcQuery cQuery New Alias "QRY"
  27. If QRY->(!EOF()) .AND. QRY->MSGCOM <> ' '
  28. MsgAlert(QRY->MSGCOM,"Atenção")
  29. EndIf
  30. // Em 30-05-2017 - Msg Cliente VIP. - Fonseca.
  31. If SA1->A1_VIPENG = "SIM" .AND. xFilial("SCJ") = '01'
  32. MsgInfo("Cliente VIP. Aplicar desconto de 20%.","Atenção !!!")
  33. EndIf
  34. If SA1->A1_RISCO = "E"
  35. MsgStop("Cliente com risco (E). Solicite ao Financeiro liberação de crédito.","Atenção")
  36. Return("")
  37. EndIf
  38. If SA1->A1_PV_FIN==.T. // Testa se o cliente foi liberado pelo Financeiro.
  39. If (Substr(SA1->A1_CGC,1,8) <> '60701190' .AND. Substr(SA1->A1_CGC,1,8) <> '47508411') // Banco Itau e GPA não desmarca - Solicitação Rogerio em 10.01.2023
  40. If RecLock("SA1",.F.) // Após realizar o PV a liberação manual é cancelada.
  41. SA1->A1_PV_FIN := .F.
  42. MsUnLock()
  43. EndIf
  44. ENDIF
  45. RestArea(aArea)
  46. Return(cCliente)
  47. EndIf
  48. FATA1000A() // Verifica se o cliente tem mais de um codigo no cadastro de clientes - Raiz do CNPJ ou CPF.
  49. FATA1000B() // Verifica se existe titulos vencidos para o cliente.
  50. RestArea(aArea)
  51. Return(cCliente)
  52. Static Function FATA1000A()
  53. Local cQuery := ""
  54. Local cString := ""
  55. Local vCont := 0
  56. If Select("QRY") > 0
  57. dbSelectArea("QRY")
  58. QRY->(dbCloseArea())
  59. Endif
  60. // Valida o Raiz do CNPJ - Clientes com codigos diferentes mas com a mesma raiz.
  61. cString := IIF(Len(Trim(SA1->A1_CGC))==14," AND SUBSTR(A1_CGC,1,8) = '" + Substr(SA1->A1_CGC,1,8) + "' "," AND A1_CGC = '" + Trim(SA1->A1_CGC) + "' ")
  62. cQuery := "SELECT A1_COD FROM "
  63. cQuery += RetSQLName("SA1")
  64. cQuery += " WHERE A1_FILIAL = '" + xFilial("SA1") + "' "
  65. cQuery += cString + " "
  66. cQuery += " AND D_E_L_E_T_ = ' ' "
  67. TcQuery cQuery New Alias "QRY"
  68. QRY->(dbGoTop())
  69. While QRY->(!EOF()) .AND. vCont <= 998
  70. cIn := cIn + "'"+QRY->A1_COD+"',"
  71. QRY->(dbSkip())
  72. vCont++
  73. EndDo
  74. // Valida a amarração pelo campo A1->MATRIZ - Clientes do mesmo grupo com CNPJ diferentes.
  75. If !Vazio(SA1->A1_MATRIZ)
  76. If Select("QRY") > 0
  77. dbSelectArea("QRY")
  78. QRY->(dbCloseArea())
  79. Endif
  80. cQuery := "SELECT A1_COD FROM "
  81. cQuery += RetSQLName("SA1")
  82. cQuery += " WHERE A1_FILIAL = '" + xFilial("SA1") + "' "
  83. cQuery += " AND A1_MATRIZ = '" + SA1->A1_MATRIZ + "' "
  84. cQuery += " AND D_E_L_E_T_ = ' ' "
  85. TcQuery cQuery New Alias "QRY"
  86. QRY->(dbGoTop())
  87. vCont := 0
  88. While QRY->(!EOF()) .AND. vCont <= 998
  89. cIn := cIn + "'"+QRY->A1_COD+"',"
  90. QRY->(dbSkip())
  91. vCont++
  92. EndDo
  93. EndIf
  94. Return
  95. Static Function FATA1000B()
  96. Local cQuery1 := ""
  97. Local cMensagem := ""
  98. Local cDestino := GETMV("MV_DESTFIN",,.F.) // e-Mail dos destinatarios do Financeiro.
  99. Local cCopia := IIF(CFILANT=="01","","")
  100. Local cFiltro := "('01','05')"
  101. cIn := cIn + "'')"
  102. If Select("QRY1") > 0
  103. dbSelectArea("QRY1")
  104. QRY1->(dbCloseArea())
  105. Endif
  106. cQuery1 := "SELECT * FROM "
  107. cQuery1 += RetSQLName("SE1")
  108. cQuery1 += " WHERE E1_FILIAL in " + cFiltro
  109. cQuery1 += " AND E1_CLIENTE IN (" + cIn + " "
  110. cQuery1 += " AND E1_VENCREA < '" + DToS(DDATABASE) + "' "
  111. cQuery1 += " AND E1_SALDO > 0 " + " "
  112. cQuery1 += " AND E1_TIPO IN ('NF','DP')" + " "
  113. cQuery1 += " AND D_E_L_E_T_ = ' ' " + " "
  114. cQuery1 += " ORDER BY E1_CLIENTE, E1_VENCREA DESC"
  115. TcQuery cQuery1 New Alias "QRY1"
  116. While QRY1->(!EOF())
  117. cMensagem += "Usuário: " + Trim(cUserName) + CHR(13)+CHR(14)
  118. cMensagem += "Código - Loja: " + QRY1->E1_CLIENTE + " - " + QRY1->E1_LOJA + CHR(13)+CHR(14)
  119. cMensagem += "Nome: " + QRY1->E1_NOMCLI + CHR(13)+CHR(14)
  120. cMensagem += "CNPJ: " + Transform(Posicione("SA1",1,xFilial("SA1")+QRY1->E1_CLIENTE+QRY1->E1_LOJA,"A1_CGC"),"@R 99.999.999/9999-99") + CHR(13)+CHR(14)
  121. cMensagem += "Título - Tipo: " + QRY1->E1_NUM + " - " + QRY1->E1_TIPO + CHR(13)+CHR(14)
  122. cMensagem += "Vencimento - Saldo: " + Transform(StoD(QRY1->E1_VENCREA),"DD/MM/YYYY") + " - R$ " + Transform(QRY1->E1_SALDO,"@R 999,999,999.99") + CHR(13)+CHR(14)
  123. cMensagem += Replicate("- . ",30) + CHR(13)+CHR(14) + CHR(13)+CHR(14)
  124. QRY1->(dbSkip())
  125. EndDo
  126. If !Empty(cMensagem)
  127. ShowHelpDlg("** ATENÇÃO **", {"O Cliente possui pendências financeiras.",""},5,{"O Orçamento será gravado e analisado pelo Depto. Financeiro."},5)
  128. U_EnvMail(cDestino,cCopia,"","e-Mail Automático - Cliente com Pendência Financeira - ORÇAMENTO.",cMensagem,"") //(Destino, Com Copia, Com Copia Oculta, Titulo , Mensagem Corpo, Anexos)
  129. ShowHelpDlg("Aviso", {"",""},5,{"Foi enviado e-Mail ao Departamento Financeiro.",""},5)
  130. EndIf
  131. Return