Calcular preço de venda
Enviado: 19 Set 2004 16:04
Olá pessoal, já postei isto antes e não me lembro de quem me ajudou. Mas tinha resolvido até que surgiu um imprevisto.
Me passaram a seguinte formula:
pvenda = ( custo ) / ( 100 - (despesas+margem) ) * 100
Bate perfeitamente desde que (despes+margem) nao passem de 100.
Se passar de 100 vai dar um valor negativo, vou postar o codigo para verem e se possível me auxiliar no que preciso...
PI12:= "@KE 99,999,999.99"
PIPO := "999.99"
FLAG := .F.
WHILE (.T.)
DESCRICAO := SPACE(30)
nCUSTO := 0.00
nVENDA := 0.00
// VARIAVEIS DE PORCENTAGEM
nICMSCREDP := 0.00
nFRETEP := 0.00
nIPIP := 0.00
nSIMPLESP := 0.00
nCUSTOOPERP := 0.00
nICMSDEBP := 0.00
nCOMISSAOP := 0.00
nMARGEMP := 0.00
// VARIAVEIS DE VALOR
nICMSCRED := 0.00
nFRETE := 0.00
nIPI := 0.00
nSIMPLES := 0.00
nCUSTOOPER := 0.00
nICMSDEB := 0.00
nCOMISSAO := 0.00
nMARGEM := 0.00
@ 05,10 SAY "DESCRICAO .: " GET DESCRICAO PICT "@!"
@ 06,10 SAY "PRECO DE CUSTO.: " GET nCUSTO PICT PI12
@ 07,10 SAY "PRECO DE VENDA.: " GET nVENDA PICT PI12 WHEN FLAG
@ 09,10 SAY "ICMS DE CRED(+): " GET nICMSCREDP PICT PIPO
@ 10,10 SAY "FRETE.......(-): " GET nFRETEP PICT PIPO
@ 11,10 SAY "IPI.........(-): " GET nIPIP PICT PIPO
@ 12,10 SAY "SIMPLES.....(-): " GET nSIMPLESP PICT PIPO
@ 13,10 SAY "CUSTO OPERAC(-): " GET nCUSTOOPERP PICT PIPO
@ 14,10 SAY "ICMS DEBITO.(-): " GET nICMSDEBP PICT PIPO
@ 15,10 SAY "COMISSAO....(-): " GET nCOMISSAOP PICT PIPO
@ 16,10 SAY "MARGEM LUCRO...: " GET nMARGEMP PICT PIPO VALID CPVENDA( @nVENDA, @nICMSCRED, @nFRETE, @nIPI, @nSIMPLES, @nCUSTOOPER, @nICMSDEB, @nCOMISSAO, @nMARGEM )
READ
@ 07,10 SAY "PRECO DE VENDA.: " GET nVENDA PICT PI12
CLEAR GETS
INKEY(0)
ENDDO
// FUNCAO QUE CALCULA O PRECO DE VENDA
FUNCTION CPVENDA( nVENDA, nICMSCRED, nFRETE, nIPI, nSIMPLES, nCUSTOOPER, nICMSDEB, nCOMISSAO, nMARGEM )
nICMSCRED := nCUSTO * nICMSCREDP / 100
nFRETE := nCUSTO * nFRETEP / 100
nIPI := nCUSTO * nIPIP / 100
nVENDA := (nCUSTO-nICMSCRED+nIPI+nFRETE) / ( ( 100 - ( SIMPLESP+nCUSTOOPERP+nICMSDEBP+nCOMISSAOP+nMARGEMP ) ) ) * 100
nSIMPLES := nVENDA * nSIMPLESP / 100
nCUSTOOPER := nVENDA * nCUSTOOPER / 100
nICMSDEB := nVENDA * nICMSDEBP / 100
nCOMISSAO := nVENDA * nCOMISSAOP / 100
nMARGEM := nVENDA * nMARGEMP / 100
@ 09,40 SAY TRAN( nICMSCRED , PI12 )
@ ROW()+1,40 SAY TRAN( nFRETE , PI12 )
@ ROW()+1,40 SAY TRAN( nIPI , PI12 )
@ ROW()+1,40 SAY TRAN( nSIMPLES , PI12 )
@ ROW()+1,40 SAY TRAN( nCUSTOOPER,PI12 )
@ ROW()+1,40 SAY TRAN( nICMSDEB , PI12 )
@ ROW()+1,40 SAY TRAN( nCOMISSAO, PI12 )
@ ROW()+1,40 SAY TRAN( nMARGEM , PI12 )
RETURN( .T. )
Se a soma que vai ser subtraida de 100, for maior que 100 e ficar negativo aí bagunça tudo
Precisa ser feito uma correçao nesta linha, mas não consegui encontrar já tentei e nao da em nada...
nVENDA := (nCUSTO-nICMSCRED+nIPI+nFRETE) / ( ( 100 - ( SIMPLESP+nCUSTOOPERP+nICMSDEBP+nCOMISSAOP+nMARGEMP ) ) ) * 100
Se alguem puder dar uma luz, agradeco, obrigado...
Rubens
Me passaram a seguinte formula:
pvenda = ( custo ) / ( 100 - (despesas+margem) ) * 100
Bate perfeitamente desde que (despes+margem) nao passem de 100.
Se passar de 100 vai dar um valor negativo, vou postar o codigo para verem e se possível me auxiliar no que preciso...
PI12:= "@KE 99,999,999.99"
PIPO := "999.99"
FLAG := .F.
WHILE (.T.)
DESCRICAO := SPACE(30)
nCUSTO := 0.00
nVENDA := 0.00
// VARIAVEIS DE PORCENTAGEM
nICMSCREDP := 0.00
nFRETEP := 0.00
nIPIP := 0.00
nSIMPLESP := 0.00
nCUSTOOPERP := 0.00
nICMSDEBP := 0.00
nCOMISSAOP := 0.00
nMARGEMP := 0.00
// VARIAVEIS DE VALOR
nICMSCRED := 0.00
nFRETE := 0.00
nIPI := 0.00
nSIMPLES := 0.00
nCUSTOOPER := 0.00
nICMSDEB := 0.00
nCOMISSAO := 0.00
nMARGEM := 0.00
@ 05,10 SAY "DESCRICAO .: " GET DESCRICAO PICT "@!"
@ 06,10 SAY "PRECO DE CUSTO.: " GET nCUSTO PICT PI12
@ 07,10 SAY "PRECO DE VENDA.: " GET nVENDA PICT PI12 WHEN FLAG
@ 09,10 SAY "ICMS DE CRED(+): " GET nICMSCREDP PICT PIPO
@ 10,10 SAY "FRETE.......(-): " GET nFRETEP PICT PIPO
@ 11,10 SAY "IPI.........(-): " GET nIPIP PICT PIPO
@ 12,10 SAY "SIMPLES.....(-): " GET nSIMPLESP PICT PIPO
@ 13,10 SAY "CUSTO OPERAC(-): " GET nCUSTOOPERP PICT PIPO
@ 14,10 SAY "ICMS DEBITO.(-): " GET nICMSDEBP PICT PIPO
@ 15,10 SAY "COMISSAO....(-): " GET nCOMISSAOP PICT PIPO
@ 16,10 SAY "MARGEM LUCRO...: " GET nMARGEMP PICT PIPO VALID CPVENDA( @nVENDA, @nICMSCRED, @nFRETE, @nIPI, @nSIMPLES, @nCUSTOOPER, @nICMSDEB, @nCOMISSAO, @nMARGEM )
READ
@ 07,10 SAY "PRECO DE VENDA.: " GET nVENDA PICT PI12
CLEAR GETS
INKEY(0)
ENDDO
// FUNCAO QUE CALCULA O PRECO DE VENDA
FUNCTION CPVENDA( nVENDA, nICMSCRED, nFRETE, nIPI, nSIMPLES, nCUSTOOPER, nICMSDEB, nCOMISSAO, nMARGEM )
nICMSCRED := nCUSTO * nICMSCREDP / 100
nFRETE := nCUSTO * nFRETEP / 100
nIPI := nCUSTO * nIPIP / 100
nVENDA := (nCUSTO-nICMSCRED+nIPI+nFRETE) / ( ( 100 - ( SIMPLESP+nCUSTOOPERP+nICMSDEBP+nCOMISSAOP+nMARGEMP ) ) ) * 100
nSIMPLES := nVENDA * nSIMPLESP / 100
nCUSTOOPER := nVENDA * nCUSTOOPER / 100
nICMSDEB := nVENDA * nICMSDEBP / 100
nCOMISSAO := nVENDA * nCOMISSAOP / 100
nMARGEM := nVENDA * nMARGEMP / 100
@ 09,40 SAY TRAN( nICMSCRED , PI12 )
@ ROW()+1,40 SAY TRAN( nFRETE , PI12 )
@ ROW()+1,40 SAY TRAN( nIPI , PI12 )
@ ROW()+1,40 SAY TRAN( nSIMPLES , PI12 )
@ ROW()+1,40 SAY TRAN( nCUSTOOPER,PI12 )
@ ROW()+1,40 SAY TRAN( nICMSDEB , PI12 )
@ ROW()+1,40 SAY TRAN( nCOMISSAO, PI12 )
@ ROW()+1,40 SAY TRAN( nMARGEM , PI12 )
RETURN( .T. )
Se a soma que vai ser subtraida de 100, for maior que 100 e ficar negativo aí bagunça tudo
Precisa ser feito uma correçao nesta linha, mas não consegui encontrar já tentei e nao da em nada...
nVENDA := (nCUSTO-nICMSCRED+nIPI+nFRETE) / ( ( 100 - ( SIMPLESP+nCUSTOOPERP+nICMSDEBP+nCOMISSAOP+nMARGEMP ) ) ) * 100
Se alguem puder dar uma luz, agradeco, obrigado...
Rubens