//------------------------------------------------------------- // 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