123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622 |
- //--------------------------------------------------------------------------------------
- // Ponto de Entrada: A415TDOK - Valida o Orçamento antes de Gravar.
- // Solicitante: Rodrigo / Comercial.
- // Autor: Aytel M. Fonseca.
- // Data: 06-08-2014
- // Data Alteração: PILATTI - Incluída pergunta sobre o valor do frete, pois para SEDEX é
- // necessário permitir a inclusão do valor, nesses caso pergunto e caso a resposta seja
- // positiva, desconsidero o cálculo de frete mínimo.
- //--------------------------------------------------------------------------------------
- #include "protheus.ch"
- #include "rwmake.ch"
- #include "TOTVS.CH"
- #include "topconn.ch"
- User Function A415TDOK()
- Local aArea := GetArea()
- Local lRet := .T.
- Local cTotOrcTab := 0
- Local cDscVista := 0
- Local cMsLumEspL := ""
- Local cMsLumEspT := ""
- Private cTotOrc := 0
- Private Gravou := .F.
- Private cCusto := 0
- Private cAliqIPI := 0
- Private cICMS := 0
- Private cSubsTrb := 0
- Private cSubsCus := 0
- Private cPIS := 0
- Private cCofins := 0
- Private cComissao := 0
- Private cComis1, cComis2
- Private cFrete := 0
- Private cRT := 0
- Private cIPI := 0
- Private cST := 0
- Private cPerST := 0
- Private cGrupoTri := 0
- Private cINSSP := 0
- Private cRecLiq := 0
- Private cMC := 0
- Private cMensagem := ""
- /* TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- If Trim(POSICIONE("SB1",1,xFilial("SB1")+Trim(TMP1->CK_PRODUTO),"B1_GRUPO")) == 'PAN'
- IF Int(TMP1->CK_QTDVEN / 6) - (TMP1->CK_QTDVEN / 6) <> 0 .AND. TMP1->CK_DESCACM > 0 // Alterado em 15.03.22 p/ permitir desconto negativo (Acrescimo) - Gabrielle e Rodrigo.
- // .AND. M->CJ_CONDPAG <> 'A49'
- MsgStop("Desconto permitido apenas para quantdades multiplos de 6.", "Produto Grupo PAN - Ajsutes Necessarios.")
- lRet := .F.
- ENDIF
- ENDIF
- TMP1->(dbSkip())
- EndDo
- If !lRet
- Return(.F.)
- EndIf
- TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- If Trim(POSICIONE("SB1",1,xFilial("SB1")+Trim(TMP1->CK_PRODUTO),"B1_GRUPO")) == 'PAN'
- /* If M->CJ_CONDPAG = 'A49'
- IF Int(TMP1->CK_QTDVEN / 6) - (TMP1->CK_QTDVEN / 6) = 0 .AND. TMP1->CK_DESCACM > 6.5
- MsgStop("Produto Grupo PAN com Pagto. A Vista - Desconto máximo permitido de 6.5 % ", "Ajsutes Necessarios.")
- lRet := .F.
- ENDIF
- Else
- IF Int(TMP1->CK_QTDVEN / 6) - (TMP1->CK_QTDVEN / 6) = 0 .AND. TMP1->CK_DESCACM > 5
- MsgStop("Produto Grupo PAN - Desconto máximo permitido de 5 % ", "Ajsutes Necessarios.")
- lRet := .F.
- ENDIF
- // ENDIF
- ENDIF
- TMP1->(dbSkip())
- EndDo
- If !lRet
- Return(.F.)
- EndIf */
- // CHAMADO RODRIGO
- //E4_FILIAL+E4_CODIGO
- If Posicione("SE4",1,xFilial('SE4')+ M->CJ_CONDPAG, "E4_MSBLQL")=='1' .and. !isblind()
- MsgStop("A codição de pagamento " + M->CJ_CONDPAG + " esta bloqueada, por favor verifique. ","ATENÇÃO")
- Return()
- EndIf
- //----------------------------------
- // Validações Comerciais Engenharia.
- //----------------------------------
- // If cFilAnt = '01'
- If Vazio(M->CJ_NROPOR) .and. !isblind()
- MsgStop("Não foi informado o código da oportunidade. Aba cadastrais.","Erro.")
- RestArea(aArea)
- Return(.F.)
- EndIf
- // Chamado 000051
- If !Vazio(M->CJ_CODPERD).AND.Vazio(M->CJ_CDCONCO) .and. !isblind()
- MsgStop("O cód. da perda está preenchido portanto, o campo concorrente deve ser preenchido.","Atenção")
- RestArea(aArea)
- Return(.F.)
- EndIf
- If M->CJ_LUMINOT = '1' .AND. Vazio(M->CJ_REGLUMI) .and. !isblind()
- MsgStop("Foi informado que houve Estudo Luminotécnico, mas não foi"+Chr(13)+"informado o numero do Registro.","Erro !!!")
- RestArea(aArea)
- Return(.F.)
- EndIf
- If M->CJ_LUMINOT <> '1' .AND. !Vazio(M->CJ_REGLUMI) .and. !isblind()
- MsgStop("Foi informado o Registro do Estudo Luminotécnico, mas não houve o Estudo.","Erro !!!")
- RestArea(aArea)
- Return(.F.)
- EndIf
- If ALTERA .AND. aRotina[3][2] <> 'A415Copia'
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT * FROM SZW010 WHERE D_E_L_E_T_ = ' ' AND ZW_FILIAL = '" + xFilial("SCJ") + "' AND ZW_ORCAMEN = '" + M->CJ_NUM + "' AND ZW_DATA = '" + DToS(DDATABASE) + "' "
- TcQuery cQuery New Alias "QRY"
- If QRY->(EOF()) .and. !isblind()
- MsgStop("Não foi encontrado nenhum registro no cadastro da Etapa de Negociação.","Erro.")
- RestArea(aArea)
- Return(.F.)
- EndIf
- If Vazio(M->CJ_CLIINTE) .and. !isblind()
- MsgStop("Não foi informado o Cliente de Intermediação. Aba Etapas da Negociação.","Erro.")
- RestArea(aArea)
- Return(.F.)
- EndIf
- EndIf
- // Política de Descontos.
- TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- cTotOrc := cTotOrc + TMP1->CK_VALOR
- cTotOrcTab := cTotOrcTab + (TMP1->CK_PRTAB * TMP1->CK_QTDVEN)
- TMP1->(dbSkip())
- EndDo
- cDscConc := Round(((((Round(cTotOrc,2)/NoRound(cTotOrcTab,2))*100)-100)*-1),2)
- If ABS(Round(cDscConc,2)) <= 0.02
- cDscConc := 0
- EndIf
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT ZA_PERCDES, ZA_PEDESAV FROM " + RetSQLName("SZA") + " WHERE "
- cQuery += "ZA_FILIAL = '" + xFilial("SZA") + "' AND ZA_DE <= " + Str(cTotOrcTab) + " AND ZA_ATE >= " + Str(cTotOrcTab) + " AND D_E_L_E_T_ = ' ' "
- TcQuery cQuery New Alias "QRY"
- If CJ_CONDPAG == '001' .OR. CJ_CONDPAG == '500'
- cDscVista := QRY->ZA_PEDESAV
- EndIf
- If Round(cDscConc,2) > (QRY->ZA_PERCDES + CJ_DSDIRET + cDscVista) .and. !isblind()
- lRet := .F.
- MsgStop("Orçamento excedeu a Política de Descontos." + Chr(13) + "Entre em contato com a Supervisão ou Diretoria." + Chr(13) + Chr(13)+;
- "Dsc.Concedido: " + Transform(cDscConc,"@R 999.99") + " %" + Chr(13) + "Dsc.Máximo Permitido:" +;
- Transform((QRY->ZA_PERCDES + CJ_DSDIRET + cDscVista),"@R 999.99") + " %" + Chr(13) + Chr(13)+;
- "Orçamento Pr.Tabela: R$ " + Transform(Round(cTotOrcTab,2),"@R 9,999,999.99") ,"Política de Descontos")
- EndIf
- // Frete.
- // CJ_FRETE := 0 Pilatti - 26/03/2015 -
- // If cTotOrcTab <= GETMV("MV_FRETMIN",,.F.) .AND. (CJ_TPFRETE == "C" .OR. CJ_TPFRETE == " ") // Alterado em 17.03.2015 - Katiane.
- If (CJ_TPFRETE = 'F' .OR. CJ_TPFRETE = 'T' .OR. CJ_TPFRETE = 'S')
- CJ_FRETE := 0
- Else
- If CJ_FRETE > 0
- If MsgYesNo("*** ATENÇÃO *** " + Chr(13) + Chr(13) + "Foi informado um valor de FRETE diferente do frete mínimo calculado pelo sistema, CONFIRMA ?")
- CJ_FRETE := CJ_FRETE
- Else
- If cTotOrc <= GETMV("MV_FRETMIN",,.F.) .AND. (CJ_TPFRETE == "C" .OR. CJ_TPFRETE == " ")
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT * FROM " + RetSQLName("SZ3") + " WHERE "
- // cQuery += "Z3_FILIAL = '" + xFilial("SZ3") + "' AND D_E_L_E_T_ = ' ' AND "
- cQuery += "D_E_L_E_T_ = ' ' AND "
- cQuery += "Z3_UF = '" + Substr(CJ_UFEnt,1,2) + "' ORDER BY Z3_MUNICIP"
- TcQuery cQuery New Alias "QRY"
- CJ_FRETE := QRY->Z3_VLFRMIN
- While QRY->(!EOF())
- If Trim(QRY->Z3_MUNICIP) == Substr(CJ_UFEnt,3,5)
- CJ_FRETE := QRY->Z3_VLFRMIN
- EndIf
- QRY->(DbSkip())
- EndDo
- Else
- CJ_FRETE := 0
- EndIf
- EndIf
- Else
- If cTotOrc <= GETMV("MV_FRETMIN",,.F.) .AND. (CJ_TPFRETE == "C" .OR. CJ_TPFRETE == " ")
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT * FROM " + RetSQLName("SZ3") + " WHERE "
- // cQuery += "Z3_FILIAL = '" + xFilial("SZ3") + "' AND D_E_L_E_T_ = ' ' AND "
- cQuery += "D_E_L_E_T_ = ' ' AND "
- cQuery += "Z3_UF = '" + Substr(CJ_UFEnt,1,2) + "' ORDER BY Z3_MUNICIP"
- TcQuery cQuery New Alias "QRY"
- CJ_FRETE := QRY->Z3_VLFRMIN
- While QRY->(!EOF())
- If Trim(QRY->Z3_MUNICIP) == Substr(CJ_UFEnt,3,5)
- CJ_FRETE := QRY->Z3_VLFRMIN
- EndIf
- QRY->(DbSkip())
- EndDo
- Else
- CJ_FRETE := 0
- EndIf
- EndIf
- EndIf
- // EndIf
- // Pergunta se o cliente é contribuinte do ICMS - Sim ou Não.
- // Atualiza SA1 - Solicitante: Rodrigo Wilges em 30-11-2015.
- // Autor: Aytel M. Fonseca.
- // Retirado em 09.10.2020 Solicitação Marcelo.
- /* If lRet .AND. INCLUI
- MontaTela()
- If Gravou = .F.
- MontaTela()
- EndIf
- EndIf */
- // If cFilAnt == '01' .AND. INCLUI
- // Envia e-Mail para supervisoras dos clientes que ficaram ativos.
- If (DToS(SA1->A1_ULTORCA) = ' ' .OR. (DDATABASE-SA1->A1_ULTORCA) > 365)
- EmailAtiv()
- EndIf
- // Grava data do último orçamento.
- RecLock("SA1",.F.)
- SA1->A1_ULTORCA:= DDATABASE
- MsUnlock()
- // EndIf
- /* If cFilAnt = '05'
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT * FROM SUC010 WHERE D_E_L_E_T_ = ' ' AND UC_CODIGO = '" + M->CJ_ATENDIM + "' AND UC_ENTIDAD = 'SA1' AND UC_CHAVE = '" + M->CJ_CLIENTE + M->CJ_LOJA + "'"
- TcQuery cQuery New Alias "QRY"
- If QRY->(EOF())
- MsgStop("O atendimento selecionado não é para o mesmo cliente do orçamento.","Validação do Atendimento.")
- RestArea(aArea)
- Return(.F.)
- EndIf
- EndIf */
- // Testa a Validade do Custo das Luminarias Especiais. 08/10/2018.
- TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- If Trim(POSICIONE("SB1",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B1_GRUPO")) == "PE" .OR.;
- Trim(POSICIONE("SB1",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B1_GRUPO")) == "PEL" .OR.;
- Trim(POSICIONE("SB1",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B1_GRUPO")) == "PED" .OR.;
- Trim(POSICIONE("SB1",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B1_GRUPO")) == "PI"
- If (POSICIONE("SB5",1,"01"+TMP1->CK_PRODUTO,"B5_DTVLESP")+30) < dDataBase
- cMsLumEspL += "<tr><td>" + TMP1->CK_ITEM + "</td>"
- cMsLumEspL += "<td>" + TMP1->CK_PRODUTO + "</td>"
- cMsLumEspL += "<td>" + TMP1->CK_DESCRI + "</td>"
- cMsLumEspL += "<td>" + DToC(POSICIONE("SB5",1,"01"+TMP1->CK_PRODUTO,"B5_DTVLESP"))+" "+;
- Str(dDatabase - POSICIONE("SB5",1,"01"+TMP1->CK_PRODUTO,"B5_DTVLESP"))+" dias"+"</td>"
- cMsLumEspL += "<td>" + Transform(TMP1->CK_QTDVEN,"@E 99999.99") + "</td></tr>"
- EndIf
- EndIf
- TMP1->(dbSkip())
- EndDo
- If cMsLumEspL <> ""
- cMsLumEspT += IIf(cFilAnt = '01',"Engenharia - "+Trim(cUserName),"Abalux - "+Trim(cUserName))+Chr(13)+Chr(14)
- cMsLumEspT += "Cliente: "+Trim(M->CJ_CLIENTE)+" - "+Trim(M->CJ_YNOMCLI)+Chr(13)+Chr(14)
- cMsLumEspT += "Obra: "+Trim(M->CJ_OBRA)+Chr(13)+Chr(14)
- cMsLumEspT += "<table border='1' cellpadding='5' width='100%'><strong><tr><td>Item</td><td>Produto</td><td>Descrição</td></td><td>Atualização do custo em</td><td>Qtde.</td></tr></strong>"
- If MsgYesNo("Existem códigos especiais com preços desatualizados."+Chr(13)+Chr(13)+"Deseja enviar e-Mail solicitando atualização ?","** Atenção **")
- U_EnvMail("jucelene-sjp@lumicenter.com;victor.pires@lumicenter.com;gustavo-sjp@lumicenter.com",UsrRetMail(__cUserId),"","e-Mail Automático. Atualização de preço - Luminárias especiais. Orçamento: "+M->CJ_NUM+"",cMsLumEspT+cMsLumEspL,"")
- EndIf
- cMsLumEspL := ""
- cMsLumEspT := ""
- EndIf
- Calc_MC()
- RestArea(aArea)
- // Desabilita Funções
- SetKey(K_ALT_K, Nil)
- SetKey(K_ALT_L, Nil)
- Return(lRet)
- /*Static Function MontaTela()
- Local aOptions :={"Sim","Não"}
- Local oRadio := 1
- Private nRadio := IIf(SA1->A1_CONTRIB = '1' .OR. SA1->A1_CONTRIB = ' ',1,2) // 1=Sim 2=Nao
- Private oFont1 := TFont():New("Calibri",,020,,.T.,,,,,.F.,.F.)
- Private oButton1
- Private oSay1
- Private oDlg
- DEFINE MSDIALOG oDlg TITLE "Cliente Contribuinte do ICMS" FROM 000,000 TO 140,330 COLORS 0,16777215 PIXEL
- oRadio:= tRadMenu():New(25,08,aOptions,{|u|if(PCount()>0,nRadio:=u,nRadio)},oDlg,,,,,,,,100,20,,,,.T.)
- @ 010,005 SAY oSay1 PROMPT "O cliente é contribuinte do ICMS ?" SIZE 150,012 OF oDlg COLORS 0,16777215 FONT oFont1 PIXEL
- @ 050,115 BUTTON oButton1 PROMPT "Confirmar" SIZE 040,012 ACTION GravaA1() OF oDlg PIXEL
- ACTIVATE MSDIALOG oDlg CENTERED
- Return()
- Static Function GravaA1()
- RecLock("SA1",.F.)
- SA1->A1_CONTRIB := IIf(nRadio = 1,'1','2')
- MsUnlock()
- Gravou := .T.
- oDlg:END()
- Return()*/
- Static Function Calc_MC()
- TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- // Buscar o Custo Medio ou Custo Standart, Aliquota do IPI
- If Select("QRY1") > 0
- dbSelectArea("QRY1")
- dbCloseArea("QRY1")
- Endif
- cQuery1 := "SELECT B1_CUSTD,B1_IPI,B1_GRTRIB, B1_TIPO, B1_GRUPO FROM " + RetSQLName("SB1") + " WHERE B1_FILIAL = '" + xFilial("SB1") + "' AND "
- cQuery1 += "B1_COD = '" + TMP1->CK_PRODUTO + "' AND "
- cQuery1 += RetSQLName("SB1") + ".D_E_L_E_T_ = ' ' "
- TcQuery cQuery1 New Alias "QRY1"
- If QRY1->B1_TIPO = 'PS' .AND. QRY1->B1_GRUPO = 'SERV'
- cCusto := TMP1->CK_CUSTO // * TMP1->CK_QTDVEN)
- Else
- cCusto := (QRY1->B1_CUSTD * TMP1->CK_QTDVEN)
- EndIf
- cAliqIPI := IIF(POSICIONE("SF4",1,xFilial("SF4")+TMP1->CK_TES,"F4_IPI") == "S",QRY1->B1_IPI,0)
- cGrupoTri := Trim(QRY1->B1_GRTRIB)
- // Buscar a Aliquota Externa e do Destino
- If Select("QRY2") > 0
- dbSelectArea("QRY2")
- dbCloseArea("QRY2")
- Endif
- cQuery2 := "SELECT * FROM "
- cQuery2 += RetSQLName("SF7")
- cQuery2 += " WHERE F7_FILIAL = '" + xFilial("SF7") + "' "
- cQuery2 += " AND F7_GRTRIB = '" + Trim(cGrupoTri) + "' "
- cQuery2 += " AND F7_EST = '" + SA1->A1_EST + "' "
- cQuery2 += " AND F7_TIPOCLI = '" + SA1->A1_TIPO + "' "
- cQuery2 += " AND F7_GRPCLI = '" + SA1->A1_GRPTRIB + "' "
- cQuery2 += " AND D_E_L_E_T_ = ' '"
- TcQuery cQuery2 New Alias "QRY2"
- // Carrega as Variaveis
- If CJ_TIPOCLI $ 'F/S'
- cICMS := IIF(POSICIONE("SF4",1,xFilial("SF4")+TMP1->CK_TES,"F4_ICM") == "S",(TMP1->CK_VALOR*(1+(cALIQIPI/100))*QRY2->F7_CARGICM/100),0)
- If POSICIONE("SB1",1,xFilial("SB1")+TMP1->CK_PRODUTO,"B1_TIPO") == "PS" .AND.;
- POSICIONE("SB1",1,xFilial("SB1")+TMP1->CK_PRODUTO,"B1_GRUPO") == "SERV"
- cICMS := ((TMP1->CK_VALOR * POSICIONE("SB1",1,xFilial("SB1")+TMP1->CK_PRODUTO,"B1_ALIQISS"))/100)
- EndIf
- Else
- cICMS := IIF(POSICIONE("SF4",1,xFilial("SF4")+TMP1->CK_TES,"F4_ICM") == "S",((TMP1->CK_VALOR * QRY2->F7_CARGICM)/100),0)
- EndIf
- cPIS := ((TMP1->CK_VALOR * 1.65)/100)
- cCofins := ((TMP1->CK_VALOR * 7.60)/100)
- // Testa se tem Subsido Tributario.
- cSubsTrb := 0
- If POSICIONE("SB5",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B5_SUBSTRB") > 0
- cSubsTrb := ((cICMS * 0.80) * POSICIONE("SB5",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B5_SUBSTRB"))
- Endif
- // Testa se tem Subsido no Custo.
- cSubsCus := 0
- If POSICIONE("SB5",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B5_SUBSCUS") > 0
- cSubsCus := (cCusto * POSICIONE("SB5",1,xFilial("SCJ")+TMP1->CK_PRODUTO,"B5_SUBSCUS"))
- Endif
- cComis2 := 0
- cComis3 := 0
- If !Vazio(CJ_VEND)
- cComis2 := TMP1->CK_COMIS1
- EndIf
- If !Vazio(CJ_VEND3)
- cComis3 := TMP1->CK_COMIS3
- EndIf
- If cFilAnt = '05' .AND. CJ_VEND = '00143'
- cComissao := (TMP1->CK_VALOR * 0.05) // Alterado para 5 em 21-02-2018 - Dr. Chen
- Else
- cComissao := ((TMP1->CK_VALOR * (cComis2 + cComis3))/100)
- EndIf
- cRT := (((TMP1->CK_VALOR * CJ_COMISTR)/100)*0.60)
- cIPI := IIF(Posicione("SF4",1,xFilial('SF4')+TMP1->CK_TES,"F4_IPI")=='S',((TMP1->CK_VALOR * cALIQIPI)/100),0)
- // If Posicione("SF4",1,xFilial('SF4')+TMP1->CK_TES,"F4_MKPCMP") == "2" // Comentado para que as usuarios do comercial possam usar o campo %ST para informa o valor ao cliente.
- If Select("QRY5") > 0
- dbSelectArea("QRY5")
- dbCloseArea("QRY5")
- Endif
- cQuery5 := "SELECT CFC_ALQFCP FROM CFC010 WHERE CFC_FILIAL = '" + xFilial("SCK") + "' AND CFC_UFDEST = '" + QRY2->F7_EST + "' AND D_E_L_E_T_ = ' ' "
- TcQuery cQuery5 New Alias "QRY5"
- cFCP := QRY5->CFC_ALQFCP
- If (CJ_TPFRETE = 'F' .OR. CJ_TPFRETE = 'T' .OR. CJ_TPFRETE = 'S')
- CJ_FRETE := 0
- Else
- cFrete := ((((TMP1->CK_VALOR + cIPI) * (3 + CJ_PERCFRT))/100)*0.60)
- EndIf
- // Calculo da ST
- /* If M->CJ_FRETE > 0
- If Select("QRY_FRT") > 0
- dbSelectArea("QRY_FRT")
- dbCloseArea("QRY_FRT")
- Endif
- cQuery := "SELECT SUM(CK_VALOR) TotMer FROM SCK010 WHERE D_E_L_E_T_ = ' ' AND CK_FILIAL = '" + xFilial("SCJ") + "' AND CK_NUM = '" + CJ_NUM + "' "
- TcQuery cQuery New Alias "QRY_FRT"
- EndIf*/
- CalcST()
- /* If QRY2->F7_MARGEM > 0
- If QRY2->F7_EST = 'PR'
- cST := (((((TMP1->CK_VALOR + cIPI)*QRY2->F7_MARGEM)/100) + (TMP1->CK_VALOR + cIPI)) * ((QRY2->F7_ALIQDST)/100) - (TMP1->CK_VALOR * (QRY2->F7_ALIQINT/100)))
- cPerST := ((cST / (TMP1->CK_VALOR + cIPI))*100)
- Else
- cST := (((((TMP1->CK_VALOR + cIPI)*QRY2->F7_MARGEM)/100) + (TMP1->CK_VALOR + cIPI)) * (((QRY2->F7_ALIQDST+cFCP))/100) - (TMP1->CK_VALOR * (QRY2->F7_ALIQEXT/100)))
- cPerST := ((cST / (TMP1->CK_VALOR + cIPI))*100)
- EndIf
- Else
- If Posicione("SF4",1,xFilial('SF4')+TMP1->CK_TES,"F4_MKPCMP") == '2' .AND. Posicione("SF4",1,xFilial('SF4')+TMP1->CK_TES,"F4_MKPSOL") == '1'
- CalcST()
- EndIf
- EndIf
- // EndIf */
- cINSSP := 0
- cRecLiq := (TMP1->CK_VALOR - cICMS - cPIS - cCofins - cINSSP)
- cMC := ((TMP1->CK_VALOR - cCusto - cICMS - cPIS - cCofins - cFrete - cComissao - cINSSP - cRT) + cSubsTrb + cSubsCus)
- TMP1->CK_CUSTO = cCusto
- TMP1->CK_ICMS = cICMS
- TMP1->CK_SUBSTRB = cSubsTrb
- TMP1->CK_SUBSCUS = cSubsCus
- TMP1->CK_PIS = cPIS
- TMP1->CK_COFINS = cCofins
- TMP1->CK_COMISSA = cComissao
- TMP1->CK_FRETE = cFrete
- TMP1->CK_RT = cRT
- TMP1->CK_IPI = cIPI
- TMP1->CK_ST = cST
- TMP1->CK_MCPERST = cPerST
- TMP1->CK_INSSP = cINSSP
- TMP1->CK_CARICMS = QRY2->F7_CARGICM
- TMP1->CK_MC = cMC
- TMP1->CK_MCPERC = ((cMC / TMP1->CK_VALOR) * 100)
- TMP1->CK_RECLIQ = cRecLiq
- TMP1->(dbSkip())
- EndDo
- Return()
- Static Function CalcST()
- Local cFreteVal := 0
- // Em Produção 09.12.2020
- If M->CJ_FRETE > 0
- // cFreteVal := ((TMP1->CK_VALOR * M->CJ_FRETE) / QRY_FRT->TotMer)
- cFreteVal := ((TMP1->CK_VALOR * M->CJ_FRETE) / cTotOrc)
- EndIf
- MaFisSave()
- MaFisEnd()
-
- //Dados do Cliente Para Calculo do Imposto.
- MaFisIni(M->CJ_CLIENTE,; // 1-Codigo Cliente/Fornecedor
- M->CJ_LOJA,; // 2-Loja do Cliente/Fornecedor
- "C",; // 3-C:Cliente , F:Fornecedor
- M->CJ_TIPOORC,; // 4-Tipo da NF
- M->CJ_TIPOCLI,; // 5-Tipo do Cliente/Fornecedor
- Nil,; // 6-Relacao de Impostos que suportados no arquivo
- Nil,; // 7-Tipo de complemento
- Nil,; // 8-Permite Incluir Impostos no Rodape .T./.F.
- Nil,; // 9-Alias do Cadastro de Produtos - ("SBI" P/ Front Loja)
- "MATA415",; // 10-Nome da rotina que esta utilizando a funcao
- Nil,; // 11-Tipo de documento
- Nil,; // 12-Especie do documento
- Nil) // 13- Codigo e Loja do Prospect
- //Calculo Substituição Tributaria
- MaFisAdd(Trim(TMP1->CK_PRODUTO),; // 1-Codigo do Produto
- TMP1->CK_TES,; // 2-Codigo do TES
- TMP1->CK_QTDVEN,; // 3-Quantidade
- Round(TMP1->CK_PRCVEN,2),; // 4-Preco Unitario
- 0,; // 5-Valor do Desconto
- "",; // 6-Numero da NF Original
- "",; // 7-Serie da NF Original
- 0,; // 8-RecNo da NF Original
- Round(cFreteVal,2),; // Valor do frete do item
- 0,; // Valor da despesa do item
- 0,; // Valor do seguro do item
- 0,; // 12-Valor do Frete Autonomo
- Round(TMP1->CK_VALOR,2),; // 13-Valor da Mercadoria
- 0) // 14-Valor da Embalagem
-
- cST := MaFisRet(1,"IT_VALSOL")
- cPerST := ((cST / (TMP1->CK_VALOR + cIPI + cFreteVal))*100)
-
- MaFisEnd()
- MaFisRestore()
- Return()
- /* Local A:= 0
- Local B:= 0
- Local C:= 0
- Local D:= 0
- Local cFreteVal := 0
-
- // Calculo criado em 16.10.2020 - Marcelo.
- If CJ_FRETE > 0
- If Select("QRY_FRT") > 0
- dbSelectArea("QRY_FRT")
- dbCloseArea("QRY_FRT")
- Endif
- cQuery := "SELECT SUM(CK_VALOR) TotMer FROM SCK010 WHERE D_E_L_E_T_ = ' ' AND CK_FILIAL = '" + xFilial("SCJ") + "' AND CK_NUM = '" + CJ_NUM + "' "
- TcQuery cQuery New Alias "QRY_FRT"
- cFreteVal := ((TMP1->CK_VALOR * CJ_FRETE) / QRY_FRT->TotMer)
- EndIf
- If Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'MG' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'MGS'
- A := ((TMP1->CK_VALOR + cIPI + cFreteVal) - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100)))
- B := (A / (1 - (QRY2->F7_ALIQDST / 100)))
- C := (B * (QRY2->F7_ALIQDST / 100))
- D := ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100))
- cST := (C - D)
- ElseIf Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'RS' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'RSS'
- A := ((TMP1->CK_VALOR + cIPI + cFreteVal) - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100)))
- B := (A / (1 - (QRY2->F7_ALIQDST / 100)))
- C := (B * (QRY2->F7_ALIQDST / 100))
- D := ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100))
- cST := (C - D)
- ElseIf Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'GO' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'GOS'
- A := ((TMP1->CK_VALOR + cIPI + cFreteVal) / (1 - (QRY2->F7_ALIQDST / 100)))
- B := ((QRY2->F7_ALIQDST - QRY2->F7_ALIQEXT) / 100)
- cST := (A * B)
- ElseIf Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'BA' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'BAS'
- A := (TMP1->CK_VALOR + cIPI + cFreteVal) - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100))
- B := (A / (1 - (QRY2->F7_ALIQDST / 100)))
- C := (B * (QRY2->F7_ALIQDST / 100))
- cST := (C - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100)))
- ElseIf Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'RJ' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'RJS'
- A := ((TMP1->CK_VALOR + cIPI + cFreteVal) - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100)))
- B := (A / (1 - ((cFCP + QRY2->F7_ALIQDST) / 100)))
- C := (B * ((cFCP + QRY2->F7_ALIQDST) / 100))
- D := ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100))
- cST := (C - D)
- ElseIf Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_EST") = 'MT' .AND. Posicione("SA1",1,xFilial("SA1")+M->CJ_CLIENTE+M->CJ_LOJA,"A1_GRPTRIB") = 'MTS'
- A := ((TMP1->CK_VALOR + cIPI + cFreteVal) - ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100)))
- B := (A / (1 - (QRY2->F7_ALIQDST / 100)))
- C := (B * (QRY2->F7_ALIQDST / 100))
- D := ((TMP1->CK_VALOR + cIPI + cFreteVal) * (QRY2->F7_ALIQEXT / 100))
- cST := (C - D)
- Else
- cST := ((TMP1->CK_VALOR + cIPI + cFreteVal) * ((QRY2->F7_ALIQDST - QRY2->F7_ALIQEXT) / 100))
- EndIf
- Return() */
- Static Function EMailAtiv()
- Local cMensagem := ""
- cMensagem += "Cliente Ativado pelo Orçamento: " + Trim(CJ_NUM) + CHR(13)+CHR(14)+CHR(13)+CHR(14)
- cMensagem += "Cliente: " + Trim(SA1->A1_COD)+"-"+Trim(SA1->A1_NOME) + CHR(13)+CHR(14)
- cMensagem += "Representante: " + Trim(CJ_VEND)+'-'+Trim(Posicione("SA3",1,xFilial('SCJ')+CJ_VEND,"A3_NOME")) + CHR(13)+CHR(14)
- cMensagem += "Regional: " + Trim(CJ_REGIAO)+'-'+Trim(Posicione("SA3",1,xFilial('SCJ')+CJ_REGIAO,"A3_NOME")) + CHR(13)+CHR(14)
- cMensagem += "Pré-Resgate: " + IIF(!Vazio(Trim(SA1->A1_USUPRER)),Trim(SA1->A1_USUPRER)+ " em: "+DToC(SA1->A1_DTPRERE),'-*-*-*-*-') + CHR(13)+CHR(14)
- U_EnvMail("gabrielle-sjp@lumicenter.com","tabata-sjp@lumicenter.com;regiane-sp@lumicenter.com","","e-Mail Automático. Cliente Ativado - Engenharia.",cMensagem,"") //(Destino, Com Copia, Com Copia Oculta, Titulo , Mensagem Corpo, Anexos)
- Return()
|