123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711 |
- //---------------------------------------------------------------------
- // Ponto de Entrada: A415LIOK - Valida a linha (SCK) Orçamento
- // Não permite que o preço Unitario seja diferente do preço de tabela.
- // Valida a Margem de Contribuição dos itens do Orçamento.
- // Solicitante: Comercial.
- // Autor: Aytel M. Fonseca.
- // Data: 07/03/2014
- //---------------------------------------------------------------------
- #include "protheus.ch"
- #include "rwmake.ch"
- #include "TOTVS.CH"
- #include "topconn.ch"
- User Function A415LIOK()
- Local aArea := GetArea()
- Local cRet := .T.
- If Vazio(CJ_NROPOR) .and. !isblind()
- MsgStop("Não foi informada a oportunidade."+Chr(13)+"Para continuar use a função <Alt+L> e selecione uma oportunidade.","Erro !!!")
- Return(.F.)
- EndIf
- If TMP1->CK_PRCVEN <> TMP1->CK_PRUNIT .and. !isblind()
- ShowHelpDlg("Erro", {"Orçamento com desconto.",""},5,{"Verifique se o Preço Unitário é igual ao Preço de Lista." ,""},5)
- cRet := .F.
- Endif
-
- If (TMP1->CK_COMIS1+TMP1->CK_COMIS3) > POSICIONE("SB1",1,XFILIAL("SCJ")+TMP1->CK_PRODUTO,"B1_COMIS") .AND.;
- TMP1->CK_FLAG = .F. .and. !isblind() // Flag que testa se linha esta deletada. (.T. = Deletado)
-
- MsgStop("Somatório da comissão é superior a comissão cadastrada no produto."+Chr(13)+;
- "Orçamento: "+Transform((TMP1->CK_COMIS1+TMP1->CK_COMIS3),"@R 999.99")+"%"+Chr(13)+;
- "Produto: "+Transform(POSICIONE("SB1",1,XFILIAL("SCJ")+TMP1->CK_PRODUTO,"B1_COMIS"),"@R 999.99")+"%","Erro !!!")
- Return(.F.)
- EndIf
-
- //-------------------------------------------------------------
- // Politica de descontos Abalux - Fidelidade.
- // Solicitante: Comercial - Rosangela.
- // Autor: Fonseca.
- // Data : 27-04-2015.
- //-------------------------------------------------------------
-
- /* If cFilAnt = '05'
- TMP1->CK_PRCVEN := (TMP1->CK_PRTAB * ((100 - TMP1->CK_DESCONT) / 100))
- If (CJ_CONDPAG =='001' .OR. CJ_CONDPAG == '002')
- TMP1->CK_PRCVEN := (TMP1->CK_PRCVEN * 0.985)
- EndIf
- TMP1->CK_VALOR := (TMP1->CK_PRCVEN * TMP1->CK_QTDVEN)
- TMP1->CK_PRUNIT := (TMP1->CK_PRCVEN)
- TMP1->CK_DESCACM := (TMP1->CK_DESCONT)
- TMP1->CK_VLDSCAC := (TMP1->CK_PRTAB - TMP1->CK_PRCVEN)
-
- Calc_MC()
-
- If (__cUserID <> '000221' .AND. __cUserID <> '000342' .AND. __cUserID <> '000511' .AND. __cUserID <> '000000') // Fabiana; Rosangela; Thayla
- If Posicione("SB1",1,xFilial('SCK')+TMP1->CK_PRODUTO,"B1_GRUPO") <> 'REIL'
- If TMP1->CK_MCPERC < 20.000
- cRet := .F.
- MsgStop("Desconto Superior ao Permitido.","Erro !!!")
- EndIf
- EndIf
- EndIf
-
- RestArea(aArea)
- EndIf*/
- Calc_MC()
- RestArea(aArea)
- Return(cRet)
- /* RETIRADO EM 18.12.2019
- Static Function CalcFidel()
- Local cDescFxa := 0
- Local cDescMais := 1
- Local cValTri := 0
- Local cTotPed := 0
- Local cTrocaFx := '2'
- Local cVoltaIt := 0
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT ZU_CLASFID,ZU_VALOR FROM " + RetSQLName("SZU") + " WHERE D_E_L_E_T_ = ' ' AND "
- cQuery += "ZU_CODIGO = '" + Trim(M->CJ_CLIENTE) + "' ORDER BY ZU_ANO DESC, ZU_TRIMEST DESC"
- TcQuery cQuery New Alias "QRY"
- cValTri := QRY->ZU_VALOR
- If QRY->ZU_CLASFID = 'VIP'
- cDescMais := ((100 - 1) / 100)
- ElseIf QRY->ZU_CLASFID = 'PLUS'
- cDescMais := ((100 - 2) / 100)
- ElseIf QRY->ZU_CLASFID = 'PREMIUM'
- cDescMais := ((100 - 3) / 100)
- ElseIf QRY->ZU_CLASFID = 'TOP'
- cDescMais := ((100 - 4) / 100)
- ElseIf QRY->ZU_CLASFID = 'OURO'
- cDescMais := ((100 - 5) / 100)
- EndIf
- If Select("QRY") > 0
- dbSelectArea("QRY")
- dbCloseArea("QRY")
- Endif
- cQuery := "SELECT ZS_PERDESL, ZS_TETOPED FROM " + RetSQLName("SZS") + ", " + RetSQLName("SZT") + " WHERE "
- cQuery += "ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND ZS_FXINI <= " + Str(cValTri) + " AND "
- cQuery += "ZS_FXFIM >= " + Str(cValTri) + " AND ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_FILIAL = '" + Trim(cFilAnt) + "' AND "
- cQuery += RetSQLName("SZS") + ".D_E_L_E_T_ = ' ' AND " + RetSQLName("SZT") + ".D_E_L_E_T_ = ' ' "
- TcQuery cQuery New Alias "QRY"
- cDescFxa := ((100 - QRY->ZS_PERDESL) / 100)
-
- // Calcula o Total do Orçamento.
- cVoltaIT := TMP1->CK_ITEM
- TMP1->(dbGoTop())
- While TMP1->(!EOF())
- If TMP1->CK_FLAG = .T. // Flag que testa se linha esta deletada. (.T. = Deletado)
- TMP1->(dbSkip())
- Loop
- EndIf
- // cTotPed := cTotPed + TMP1->CK_VALOR
- cTotPed := cTotPed + (TMP1->CK_PRTAB * TMP1->CK_QTDVEN)
- TMP1->(dbSkip())
- EndDo
-
- TMP1->(dbGoTop())
- While TMP1->CK_ITEM <> cVoltaIT
- TMP1->(dbSkip())
- EndDo
- If cTotPed >= 1200 .AND. cTotPed < 2500
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 1200 AND ZS_TETOPED < 2500 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- ElseIf cTotPed >= 2500 .AND. cTotPed < 4000
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 2500 AND ZS_TETOPED < 4000 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- ElseIf cTotPed >= 4000 .AND. cTotPed < 6000
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 4000 AND ZS_TETOPED < 6000 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- ElseIf cTotPed >= 6000 .AND. cTotPed < 7000
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 6000 AND ZS_TETOPED < 7000 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- ElseIf cTotPed >= 7000 .AND. cTotPed < 11000
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 7000 AND ZS_TETOPED < 11000 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- ElseIf cTotPed >= 11000
- If Select("QRY3") > 0
- dbSelectArea("QRY3")
- dbCloseArea("QRY3")
- Endif
- cQuery := "SELECT ZS_TETOPED, ZS_PERDESL FROM SZS010, SZT010 WHERE ZT_CODIGO = ZS_CODIGO AND ZT_FILIAL = ZS_FILIAL AND "
- cQuery += "ZT_DTFIM >= '" + DToS(DDataBase) + "' AND ZS_TETOPED >= 11000 AND ZS_FILIAL = '05' AND "
- cQuery += " SZS010.D_E_L_E_T_ = ' ' AND SZT010.D_E_L_E_T_ = ' ' ORDER BY ZS_TETOPED"
- TcQuery cQuery New Alias "QRY3"
- If QRY3->ZS_PERDESL > QRY->ZS_PERDESL
- cDescFxa := ((100 - QRY3->ZS_PERDESL) / 100)
- cTrocaFx := '1'
- EndIf
- EndIf
- // -----------------------------------------------
- // Se Condição Pagamento for A Vista - Reduz 1,5%
- // -----------------------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985),2)
- // ---------------------------------------------------------------------------------------------
- // Se PV não for HomeCenter e Produto for Linha BR e Comissão for de 3% - Gera desconto de 2.5%
- // ---------------------------------------------------------------------------------------------
- If M->CJ_HOMECEN = 'N'
- If M->CJ_VEND4 = ' '
- If Substr(TMP1->CK_PRODUTO,1,2) == "BR" .AND. TMP1->CK_COMIS1 = 3.00
- TMP1->CK_PRCVEN := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.975),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.975),2)
- EndIf
- // ---------------------------------------------------------------------------------------------------------
- // Se Produto NAO for Relamp, Rereat, Releds ou da Linha BR - Se Comissão for de 4% - Gera desconto de 2.5%
- // - Se Comissão for de 3% - Gera desconto de 5.0%
- // ---------------------------------------------------------------------------------------------------------
- If (Substr(TMP1->CK_PRODUTO,1,6) <> "REREAT" .AND.;
- Substr(TMP1->CK_PRODUTO,1,6) <> "RELAMP" .AND.;
- Substr(TMP1->CK_PRODUTO,1,6) <> "RELEDS")
- If Substr(TMP1->CK_PRODUTO,1,2) <> "BR"
- If TMP1->CK_COMIS1 = 4.00
- TMP1->CK_PRCVEN := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.975),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.975),2)
- ElseIf TMP1->CK_COMIS1 = 3.00
- TMP1->CK_PRCVEN := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.950),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985) * 0.950),2)
- EndIf
- EndIf
- EndIf
- EndIf
- EndIf
- Else // Nao é A Vista
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * cDescFxa) * cDescMais),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * cDescFxa) * cDescMais),2)
- // --------------------------------------------------------------------------------------------
- // Se PV não for HomeCenter e Produto for Linha BR e Comissão for de 3% - Gera desconto de 2.5%
- // --------------------------------------------------------------------------------------------
- If M->CJ_HOMECEN = 'N'
- If M->CJ_VEND4 = ' '
- If Substr(TMP1->CK_PRODUTO,1,2) == "BR" .AND. TMP1->CK_COMIS1 = 3.00
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.975),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.975),2)
- EndIf
- // ---------------------------------------------------------------------------------------------------------
- // Se Produto NAO for Relamp, Rereat, Releds ou da Linha BR - Se Comissão for de 4% - Gera desconto de 2.5%
- // - Se Comissão for de 3% - Gera desconto de 5.0%
- // ---------------------------------------------------------------------------------------------------------
- If (Substr(TMP1->CK_PRODUTO,1,6) <> "REREAT" .AND.;
- Substr(TMP1->CK_PRODUTO,1,6) <> "RELAMP" .AND.;
- Substr(TMP1->CK_PRODUTO,1,6) <> "RELEDS")
- If Substr(TMP1->CK_PRODUTO,1,2) <> "BR"
- If TMP1->CK_COMIS1 = 4.00
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.975),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.975),2)
- ElseIf TMP1->CK_COMIS1 = 3.00
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.950),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.950),2)
- EndIf
- EndIf
- EndIf
- EndIf
- EndIf
- EndIf
-
- If Posicione("SB1",1,xFilial('SCJ')+TMP1->CK_PRODUTO,"B1_GRUPO") == 'REIL'
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * cDescFxa) * cDescMais) * 0.985),2)
- TMP1->CK_COMIS1 := 5.00
- Else
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * cDescFxa) * cDescMais),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * cDescFxa) * cDescMais),2)
- TMP1->CK_COMIS1 := 5.00
- EndIf
- EndIf
-
- If cTrocaFx = '1' .AND. M->CJ_TROCAFX = '2'
- If MsgYesNo("Mudou a Faixa do Desconto Progressivo." +Chr(13)+;
- "Navegue por todas as linhas do pedido " +Chr(13)+;
- "para efetuar o novo cálculo do desconto." +Chr(13)+Chr(13)+;
- "Deseja manter o alerta ?","*** ATENÇÃO ***") = .F.
- M->CJ_TROCAFX := '1'
- EndIf
- EndIf
- Return
- */
- //-------------------------------------
- // Calculo do Show Room.
- // Solicitante: Comercial - Rosangela.
- // Autor: Fonseca.
- // Data : 03-02-2015
- //-------------------------------------
- /* RETIRADO EM 18.12.2019
- Static Function CalcSRoom()
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB/2),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB/2),2)
- Return
- Static Function CalcLD_04()
- //-----------------------------------
- // Loja Design - Desconto de 17,065%
- //-----------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.82935) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.82935) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.82935),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.82935),2)
- EndIf
- Return()
- Static Function CalcLD_38()
- //-----------------------------------
- // Loja Design - Desconto de 12,70%
- //-----------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.87300) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.87300) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.87300),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.87300),2)
- EndIf
- Return()
- Static Function CalcLD_39()
- //-----------------------------------
- // Loja Design - Desconto de 7,00%
- //-----------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.93000) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.93000) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.93000),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.93000),2)
- EndIf
- Return()
- Static Function CalcLD_40()
- //-----------------------------------
- // Loja Design - Desconto de 5,00%
- //-----------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.95000) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.95000) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.95000),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.95000),2)
- EndIf
- Return()
- Static Function CalcLD_43()
- //-----------------------------------
- // Projeto MC - Desconto de 17,065%
- //-----------------------------------
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.82935) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.82935) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.82935),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.82935),2)
- EndIf
- Return()*/
- /* RETIRADO EM 18.12.2019
- Static Function CalDistr()
- // -----------------------------------------
- // Testa Linha A, C e E - Desconto de 21,43%
- // -----------------------------------------
- If Select("QRY4") > 0
- dbSelectArea("QRY4")
- dbCloseArea("QRY4")
- Endif
- cQuery := "SELECT B1_COD FROM SB1010 WHERE D_E_L_E_T_ = ' ' AND B1_FILIAL = '05' AND B1_MSBLQL <> '1' AND "
- cQuery += "B1_GRUPO IN ('C','F') AND SUBSTR(B1_COD,1,1) IN ('A','C','E') AND B1_COD = '" + TMP1->CK_PRODUTO + "'"
- TcQuery cQuery New Alias "QRY4"
- If QRY4->(!EOF()) // Pertence a Linha A,C e E - Desconto de 21,43%
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.7857) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.7857) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.7857),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.7857),2)
- EndIf
- TMP1->CK_COMIS1 := 3.00
- Return()
- EndIf
- // -----------------------------------------------------------------------
- // Testa Linha AR-PF-PJ-EX-BZ-LEX-WW-PD-JD-EF-SR-ES - Desconto de 12,70%
- // -----------------------------------------------------------------------
- If Select("QRY4") > 0
- dbSelectArea("QRY4")
- dbCloseArea("QRY4")
- Endif
- cQuery := "SELECT B1_COD FROM SB1010 WHERE D_E_L_E_T_ = ' ' AND B1_FILIAL = '05' AND B1_MSBLQL <> '1' AND "
- cQuery += "B1_GRUPO IN ('DEC','LEDD','LEDT','TEC') AND B1_TIPO <> 'PI' AND B1_COD = '" + TMP1->CK_PRODUTO + "'"
- TcQuery cQuery New Alias "QRY4"
- If QRY4->(!EOF()) // Pertence a Linha AR-PF-PJ-EX-BZ-LEX-WW-PD-JD-EF-SR-ES - Desconto de 12,70%
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.8730),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.8730),2)
- EndIf
- TMP1->CK_COMIS1 := 5.00
- Return()
- EndIf
- // Distribuidor - Linha BR - Com comissao de 3%
- If Substr(TMP1->CK_PRODUTO,1,2) = "BR"
- If TMP1->CK_COMIS1 = 3.00 // + 2,5%
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9750) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9750) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9750),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9750),2)
- EndIf
- Else
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.8730),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.8730),2)
- EndIf
- EndIf
- Return()
- EndIf
-
- // Outros Produtos. Desconto de 12.70%
- If (M->CJ_CONDPAG == '001' .OR. M->CJ_CONDPAG == '002') // A Vista + 1,5%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9850),2)
- If TMP1->CK_COMIS1 = 4.00 // + 2,50%
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9750) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9750) * 0.9850),2)
- ElseIf TMP1->CK_COMIS1 = 3.00 // + 5,00%
- TMP1->CK_PRCVEN := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9500) * 0.9850),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((((TMP1->CK_PRTAB * 0.8730) * 0.9500) * 0.9850),2)
- EndIf
- Else
- TMP1->CK_PRCVEN := Round((TMP1->CK_PRTAB * 0.8730),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round((TMP1->CK_PRTAB * 0.8730),2)
-
- If TMP1->CK_COMIS1 = 4.00 // + 2,50%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9750),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_PRUNIT := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9750),2)
- ElseIf TMP1->CK_COMIS1 = 3.00 // + 5,00%
- TMP1->CK_PRCVEN := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9500),2)
- TMP1->CK_VALOR := Round((TMP1->CK_PRCVEN * TMP1->CK_QTDVEN),2)
- TMP1->CK_VALOR := Round(((TMP1->CK_PRTAB * 0.8730) * 0.9500),2)
- EndIf
- EndIf
- Return()*/
- /*
- Static Function LedT()
- If Substr(TMP1->CK_PRODUTO,1,4) = 'LEDT' // Ajuste Temporario para lançãmento da Linha de Produto - Solicitado por Rosangela e Fabi em 02-03-2016.
- TMP1->CK_COMIS1 := 6.00
- EndIf
- Return()
- */
- /*
- Static Function CalComisDif()
- // Ajuste Temporario - Solicitado por Fabi em 25-07-2017.
- If Select("QRY_10") > 0
- dbSelectArea("QRY_10")
- dbCloseArea("QRY_10")
- Endif
- cQuery := "SELECT B1_COD FROM SB1010 WHERE D_E_L_E_T_ = ' ' AND B1_FILIAL = '05' AND B1_COD "
- cQuery += "IN ('LEDT13-3K','LEDT13-6K','LEDT14-3K','LEDT14-6K','LEDT15-3K','LEDT15-6K','LEDT16-3K','LEDT16-6K','LEDT17-3K','LEDT17-6K','LEDT18-3K','LEDT18-6K',"
- cQuery += "'LEDT19-3K','LEDT19-6K','LEDT20-3K','LEDT20-6K','LEDT21-3K','LEDT21-6K','LEDT22-3K','LEDT22-6K','LEDT23-3K','LEDT23-6K','LEDT24-3K','LEDT24-6K',"
- cQuery += "'LEDT25-6K','LEDT26-6K','LEDT27-6K','LEDC66-4K','LEDC66-6K')"
- TcQuery cQuery New Alias "QRY_10"
-
- While QRY_10->(!EOF())
- If QRY_10->B1_COD = TMP1->CK_PRODUTO
- TMP1->CK_COMIS1 := 6.50
- EndIf
- QRY_10->(DbSkip())
- EndDo
- Return()*/
- Static Function Calc_MC()
- Local cCusto := 0
- Local cAliqIPI := 0
- Local cICMS := 0
- Local cPIS := 0
- Local cCofins := 0
- Local cComissao := 0
- Local cComis2 := 0
- Local cComis3 := 0
- Local cFrete := 0
- Local cRT := 0
- Local cIPI := 0
- Local cFCP := 0
- Local cGrupoTri := 0
- Local cINSSP := 0
- Local cRecLiq := 0
- Local cSubsTrb := 0
- Local cSubsCus := 0
- Local cMC := 0
- Local __cPerST := 0
- Local __cST := 0
- // Projeto ELEV.
- /* If TMP1->CK_TIPOPRO = 'CO' .AND. POSICIONE("SB1",1,xFilial("SB1")+TMP1->CK_PRODUTO,"B1_GRUPO") == "ELEV"
- TMP1->CK_CUSTO = TMP1->CK_VALOR
- TMP1->CK_ICMS = 0
- TMP1->CK_PIS = 0
- TMP1->CK_COFINS = 0
- TMP1->CK_COMISSA = 0
- TMP1->CK_FRETE = 0
- TMP1->CK_RT = 0
- TMP1->CK_IPI = 0
- TMP1->CK_ST = 0
- TMP1->CK_MCPERST = 0
- TMP1->CK_INSSP = 0
- TMP1->CK_CARICMS = 0
- TMP1->CK_MC = (TMP1->CK_VALOR * -1)
- TMP1->CK_MCPERC = (((TMP1->CK_VALOR * -1) / TMP1->CK_VALOR) * 100)
- TMP1->CK_COMIS1 = 0
- TMP1->CK_COMIS3 = 0
- TMP1->CK_RECLIQ = 0
- Return()
- 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. 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.
- 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.
- 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 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
- EndIf
- // EndIf
- If CJ_TPFRETE = 'C'
- cFrete := ((((TMP1->CK_VALOR + cIPI) * (3 + CJ_PERCFRT))/100)*0.60)
- Else
- cFrete := 0
- 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_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->CK_MCPERST := __cPerST
- Return()
|