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