123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- #include "totvs.ch"
- #include "topconn.ch"
- /*/{Protheus.doc} VldPortalSMS
- Validações customizadas para campos específicos
- @type function
- @version
- @author Lucilene SMSTI
- @since 15/10/2024
- @param cCampo, character, nome do campo chamado na validação
- @param nRecCpo, numeric, recno do registro selecionado
- @return variant, variável lógica de validação
- /*/
- User Function VldPortalSMS(cCampo,nRecCpo)
- Local lRet:= .T.
- Local cMensagem:= ""
- Local cDest:= GetNewPar("PR_DESTFIS","contabilidade@lumicenter.com")
- //cMsg -- >variável private
- If cCampo = "CJ_CLIENTE"
- If SA1->A1_RISCO == 'E'
- cMsgCust+="Cliente com risco (E). Solicite ao Financeiro liberação de crédito."
- Return .F.
- Endif
- If SA1->A1_COND == "001"
- cMsgCust+= "Este cliente somente pode comprar à vista.<br>"
- Endif
- If SA1->A1_VIPENG = "SIM" .AND. xFilial("SCJ") = "01"
- cMsgCust+= "Cliente VIP. Aplicar desconto de 20%.<br>"
- EndIf
- If !Empty(SA1->A1_OBSERV)
- cMsgCust+=SA1->A1_OBSERV+"<br>"
- ENDIF
-
- cMsgCust+= FATA1000A()
- 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
- EndIf
- Endif
- If cCampo = "C5_CLIENTE"
- If SA1->A1_RISCO == 'E'
- cMsgCust+="Cliente com risco (E). Solicite ao Financeiro liberação de crédito."
- Return .F.
- Endif
- If SA1->A1_COND == "001"
- cMsgCust+= "Este cliente somente pode comprar à vista.<br>"
- Endif
- If SA1->A1_VIPENG = "SIM" .AND. xFilial("SCJ") = "01"
- cMsgCust+= "Cliente VIP. Aplicar desconto de 20%.<br>"
- EndIf
- If !Empty(SA1->A1_OBSERV)
- cMsgCust+=SA1->A1_OBSERV+"<br>"
- ENDIF
-
- cMsgCust+= FATA1000A()
- 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
- EndIf
- Endif
- If cCampo == "CK_PRODUTO"
- // se a observação está preenchida
- If !Empty(AllTrim(SB1->B1_OBSCOM))
- // Mostra mensagem de alerta
- cMsgCust+= "<b>Aviso da Área de Suprimentos</b>"
- cMsgCust+= "<br>"+AllTrim(SB1->B1_OBSCOM)
- Endif
- // se a observação está preenchida
- If !Empty(AllTrim(SB1->B1_OBSPRO))
- // Mostra mensagem de alerta
- cMsgCust+= "<b>Aviso da Área de Projetos</b>"
- cMsgCust+= "<br>"+AllTrim(SB1->B1_OBSPRO)
- Endif
- // Verifica se o pedido é normal
- If !Empty(AllTrim(SB1->B1_OBSPCP))
- // Mostra mensagem de alerta
- cMsgCust+= "<b>Aviso da Área do PCP</b>"
- cMsgCust+= "<br>"+AllTrim(SB1->B1_OBSPCP)
- Endif
- //Validação do prazo de embarque
- If SB1->B1_TIPO == 'PA' .AND. Substr(SB1->B1_COD,1,6) <> 'RELUMI'
- cQuery:= "SELECT G1_COD FROM "+RetSQLName("SG1")+" SG1 "
- cQuery+= "WHERE G1_FILIAL = '"+xFilial("SG1")+"' "
- cQuery+= "AND G1_COD = '"+SB1->B1_COD+"' "
- cQuery+= "AND SG1.D_E_L_E_T_ = ' ' "
- TcQuery cQuery New Alias "QRYPROD1"
-
- If QRYPROD1->(EOF())
- If cFilAnt = '01'
- cPrzEmb:= "2"
- Elseif cFilAnt = '05'
- cPrzEmb:= "5"
- EndIf
- Endif
- QRYPROD1->(dbCloseArea())
- Endif
- //Verifica excessão fiscal
- cQuery := "SELECT * FROM "
- cQuery += RetSQLName("SF7")+" SF7 "
- cQuery += " WHERE F7_FILIAL = '" + xFilial("SF7") + "' "
- cQuery += " AND F7_GRTRIB = '" + Trim(SB1->B1_GRTRIB) + "' "
- cQuery += " AND F7_EST = '" + SA1->A1_EST + "' "
- cQuery += " AND F7_TIPOCLI = '" + SA1->A1_TIPO + "' "
- cQuery += " AND F7_GRPCLI = '" + SA1->A1_GRPTRIB + "' "
- cQuery += " AND SF7.D_E_L_E_T_ = ' '" + " "
- TcQuery cQuery New Alias "QRX"
- If QRX->(EOF())
- //Texto para email
- cMensagem := "Enviado por: PORTAL SMS" + Chr(13)+Chr(14) + Chr(13)+Chr(14)
- cMensagem += "Filial / Produto: " + Trim(xFilial("SF7")) + " - " + Trim(SB1->B1_COD) + " - " + Trim(SB1->B1_DESC) + Chr(13)+Chr(14)
- cMensagem += "Grupo Trib.Produto: " + Trim(SB1->B1_GRTRIB) + Chr(13)+Chr(14)
- cMensagem += "NCM: " + Trim(SB1->B1_POSIPI) + Chr(13)+Chr(14)
- cMensagem += "Tipo Operação: " + Trim(SA1->A1_TIPO) + Chr(13)+Chr(14) + Chr(13)+Chr(14)
- cMensagem += "Cliente: " + Trim(SA1->A1_COD) + "-" + Trim(SA1->A1_LOJA) + " - " + Trim(SA1->A1_NOME) + Chr(13)+Chr(14)
- cMensagem += "UF Cliente: " + Trim(SA1->A1_EST) + Chr(13)+Chr(14)
- cMensagem += "Grupo Trib.Cliente: " + Trim(SA1->A1_GRPTRIB) + Chr(13)+Chr(14)
- cMensagem += "Contribuinte: " + Trim(SA1->A1_CONTRIB) + Chr(13)+Chr(14)
- U_EnvMail(cDest,"","","e-Mail Automático. Não encontrada a regra para exceo fiscal - Orçamento.",cMensagem,"") //(Destino, Com Copia, Com Copia Oculta, Titulo , Mensagem Corpo, Anexos)
-
- cMsgCust:="Este produto não fará parte do Orçamento.<br>"
- cMsgCust+="Foi enviado e-Mail ao Depto.Fiscal para correção do problema."
- QRX->(dbCloseArea())
-
- Return .F.
- Else
- nCargIcm := QRX->F7_CARGICM
- nFatCorr := QRX->F7_FATCORR
- Endif
- QRX->(dbCloseArea())
-
- Endif
- Return lRet
- Static Function FATA1000A()
- Local cQuery := ""
- Local cString := ""
- Local vCont := 0
- 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')"
- Local cMsg := ""
- Local cIn := ""
- 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
- If Select("QRY1") > 0
- dbSelectArea("QRY1")
- QRY1->(dbCloseArea())
- Endif
-
- cIn := cIn + "'')"
- 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)
- 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)
- cMg:="O Cliente possui pendências financeiras. O Orçamento será gravado e analisado pelo Depto. Financeiro."
- EndIf
- Return cMsg
|