123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- //-------------------------------------------------------------
- // Função FATA1001 - Não Bloqueia a gravação do ORÇAMENTO.
- // Validação no orçamento de venda para verificar se o cliente
- // tem títulos vencidos. Disparado por gatilho - CJ_CLIENTE.
- // Envia e-mail para o Financeiro com as pendencias do cliente.
- // Solicitante: Gilson - Financeiro.
- // Autor: Aytel Marcello Fonseca.
- // Data: 27-01-2014
- //-------------------------------------------------------------
- #include "protheus.ch"
- #include "rwmake.ch"
- #include "topconn.ch"
- #include "totvs.ch"
- User Function FATA1001()
- Local aArea := GetArea()
- Public cIn := ""
- Public cCliente := SA1->A1_COD
-
- If Funname() = "RPC" //Portal SMS
- Return
- Endif
- If Select("QRY") > 0
- dbSelectArea("QRY")
- QRY->(dbCloseArea())
- Endif
-
- 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 + "'"
- TcQuery cQuery New Alias "QRY"
- If QRY->(!EOF()) .AND. QRY->MSGCOM <> ' '
- MsgAlert(QRY->MSGCOM,"Atenção")
- EndIf
- // Em 30-05-2017 - Msg Cliente VIP. - Fonseca.
- If SA1->A1_VIPENG = "SIM" .AND. xFilial("SCJ") = '01'
- MsgInfo("Cliente VIP. Aplicar desconto de 20%.","Atenção !!!")
- EndIf
- If SA1->A1_RISCO = "E"
- MsgStop("Cliente com risco (E). Solicite ao Financeiro liberação de crédito.","Atenção")
- Return("")
- EndIf
-
- If SA1->A1_PV_FIN==.T. // Testa se o cliente foi liberado pelo Financeiro.
-
- 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
- If RecLock("SA1",.F.) // Após realizar o PV a liberação manual é cancelada.
- SA1->A1_PV_FIN := .F.
- MsUnLock()
- EndIf
- ENDIF
- RestArea(aArea)
- Return(cCliente)
- EndIf
- FATA1000A() // Verifica se o cliente tem mais de um codigo no cadastro de clientes - Raiz do CNPJ ou CPF.
- FATA1000B() // Verifica se existe titulos vencidos para o cliente.
-
- RestArea(aArea)
- Return(cCliente)
- Static Function FATA1000A()
- Local cQuery := ""
- Local cString := ""
- Local vCont := 0
- If Select("QRY") > 0
- dbSelectArea("QRY")
- QRY->(dbCloseArea())
- Endif
-
- // Valida o Raiz do CNPJ - Clientes com codigos diferentes mas com a mesma raiz.
-
- 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) + "' ")
- cQuery := "SELECT A1_COD FROM "
- cQuery += RetSQLName("SA1")
- cQuery += " WHERE A1_FILIAL = '" + xFilial("SA1") + "' "
- cQuery += cString + " "
- cQuery += " AND D_E_L_E_T_ = ' ' "
- TcQuery cQuery New Alias "QRY"
- QRY->(dbGoTop())
-
- While QRY->(!EOF()) .AND. vCont <= 998
- cIn := cIn + "'"+QRY->A1_COD+"',"
- QRY->(dbSkip())
- vCont++
- EndDo
-
- // Valida a amarração pelo campo A1->MATRIZ - Clientes do mesmo grupo com CNPJ diferentes.
-
- If !Vazio(SA1->A1_MATRIZ)
- If Select("QRY") > 0
- dbSelectArea("QRY")
- QRY->(dbCloseArea())
- Endif
-
- cQuery := "SELECT A1_COD FROM "
- cQuery += RetSQLName("SA1")
- cQuery += " WHERE A1_FILIAL = '" + xFilial("SA1") + "' "
- cQuery += " AND A1_MATRIZ = '" + SA1->A1_MATRIZ + "' "
- cQuery += " AND D_E_L_E_T_ = ' ' "
- TcQuery cQuery New Alias "QRY"
- QRY->(dbGoTop())
- vCont := 0
- While QRY->(!EOF()) .AND. vCont <= 998
- cIn := cIn + "'"+QRY->A1_COD+"',"
- QRY->(dbSkip())
- vCont++
- EndDo
- EndIf
- Return
- Static Function FATA1000B()
- Local cQuery1 := ""
- Local cMensagem := ""
- Local cDestino := GETMV("MV_DESTFIN",,.F.) // e-Mail dos destinatarios do Financeiro.
- Local cCopia := IIF(CFILANT=="01","","")
- Local cFiltro := "('01','05')"
-
- cIn := cIn + "'')"
- If Select("QRY1") > 0
- dbSelectArea("QRY1")
- QRY1->(dbCloseArea())
- Endif
- cQuery1 := "SELECT * FROM "
- cQuery1 += RetSQLName("SE1")
- cQuery1 += " WHERE E1_FILIAL in " + cFiltro
- cQuery1 += " AND E1_CLIENTE IN (" + cIn + " "
- cQuery1 += " AND E1_VENCREA < '" + DToS(DDATABASE) + "' "
- cQuery1 += " AND E1_SALDO > 0 " + " "
- cQuery1 += " AND E1_TIPO IN ('NF','DP')" + " "
- cQuery1 += " AND D_E_L_E_T_ = ' ' " + " "
- cQuery1 += " ORDER BY E1_CLIENTE, E1_VENCREA DESC"
- TcQuery cQuery1 New Alias "QRY1"
-
- While QRY1->(!EOF())
- cMensagem += "Usuário: " + Trim(cUserName) + CHR(13)+CHR(14)
- cMensagem += "Código - Loja: " + QRY1->E1_CLIENTE + " - " + QRY1->E1_LOJA + CHR(13)+CHR(14)
- cMensagem += "Nome: " + QRY1->E1_NOMCLI + CHR(13)+CHR(14)
- 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)
- cMensagem += "Título - Tipo: " + QRY1->E1_NUM + " - " + QRY1->E1_TIPO + CHR(13)+CHR(14)
- 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)
- cMensagem += Replicate("- . ",30) + CHR(13)+CHR(14) + CHR(13)+CHR(14)
- QRY1->(dbSkip())
- EndDo
-
- If !Empty(cMensagem)
- ShowHelpDlg("** ATENÇÃO **", {"O Cliente possui pendências financeiras.",""},5,{"O Orçamento será gravado e analisado pelo Depto. Financeiro."},5)
- 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)
- ShowHelpDlg("Aviso", {"",""},5,{"Foi enviado e-Mail ao Departamento Financeiro.",""},5)
- EndIf
- Return
|