vindo de std.ch
#command CLEAR => CLEAR SCREEN ; CLEAR GETS
#command CLEAR SCREEN => CLS
#command CLS => Scroll() ; SetPos( 0, 0 )
#command CLEAR GETS => ReadKill( .T. ) ; GetList := {} ; ( GetList )
Moderador: Moderadores
#command CLEAR => CLEAR SCREEN ; CLEAR GETS
#command CLEAR SCREEN => CLS
#command CLS => Scroll() ; SetPos( 0, 0 )
#command CLEAR GETS => ReadKill( .T. ) ; GetList := {} ; ( GetList )
#include "inkey.ch"
PROCEDURE Main
LOCAL nNumero := 1, nOpc
SetMode( 35, 100 )
CLS
SET DATE BRITISH
SET CENTURY ON
SetColor( "W/N,N/W,,,W/N" )
DO WHILE .T.
DigitaOS( nNumero )
nOpc := Alert( "Digita mais OS", { "Sim", "Nao" } )
IF LastKey() == K_ESC .OR. nOpc = 2
EXIT
ENDIF
nNumero += 1
ENDDO
RETURN
STATIC FUNCTION DigitaOS( nNumero )
LOCAL GetList := {}
LOCAL nTotServico := 0, nTotProduto := 0, nTotComissao := 0, nTotDesconto := 0
LOCAL cCliente := Space(30), cTecnico := Space(30)
LOCAL cEquipamento := Space(30), dDataCompra := Ctod("")
LOCAL dDataOrdem := Ctod(""), nOpc, nIdade
@ 01,01 SAY "ORDEM DE SERVICO:" GET nNumero PICTURE "999999" WHEN .F.
@ 03,01 SAY "Cliente:" GET cCliente PICTURE "@!" Valid ! Empty( cCliente )
@ 04,01 SAY "Tecnico:" GET cTecnico PICTURE "@!" Valid ! Empty( cTecnico )
@ 05,01 SAY "Equipamento:" GET cEquipamento PICTURE "@!" Valid ! Empty( cEquipamento )
@ 06,01 SAY "Data da Compra:" GET dDataCompra Valid ! Empty( dDataCompra )
@ 06,30 SAY "Data do Servico:" GET dDataOrdem valid ! Empty( dDataOrdem )
READ
nIdade := dDataOrdem - dDataCompra
DO WHILE .T.
nOpc := Alert( "Opção", { "Digita Produto", "Digita Servico", "Encerra" } )
IF LastKey() == K_ESC .OR. nOpc = 3
EXIT
ENDIF
IF nOpc != 1 .AND. nOpc != 2
LOOP
ENDIF
IF nOpc == 2
DigitaProduto( @nTotProduto, @nTotServico, @nTotComissao, @nTotDesconto, nIdade )
ELSE
DigitaServico( @nTotServico, @nTotServico, @nTotComissao, @nTotDesconto, nIdade )
ENDIF
ENDDO
RETURN NIL
STATIC FUNCTION DigitaProduto( nTotProduto, nTotServico, nTotComissao, nTotDesconto, nIdade )
LOCAL GetList := {}
LOCAL nLinha := 11
LOCAL cDescricao := Space(30)
LOCAL nQtde, nValor, nDesconto, nTotal, nComissao := 0
DO WHILE .T.
nQtde := nValor := nDesconto := nTotal := 0
@ nLinha, 01 SAY "Descricao do Produto:" GET cDescricao PICTURE "@!" Valid ! Empty( cDescricao )
@ nLinha + 1, 01 SAY "Quantidade" GET nQtde PICTURE "99999" Valid nQtde >= 1 .AND. Calcula( nQtde, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 14 SAY "Preco Unit." GET nValor PICTURE "999,999.99" Valid nValor >= 1 .AND. Calcula( nQtde, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 35 SAY "Desconto" GET nDesconto PICTURE "999.99" Valid nDesconto >= 0 .AND. Calcula( nQtde, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 50 SAY "Total" GET nTotal PICTURE "999,999.99" WHEN .F.
READ
IF LastKey() == K_ESC
EXIT
ENDIF
nTotProduto += nTotal
nTotDesconto += ( nQtde * nValor * nDesconto / 100 )
MostraTotais( nTotProduto, nTotServico, nTotComissao, nTotDesconto, nIdade )
nLinha += 2
IF nLinha > 16
@ 11, 1 CLEAR TO 15,70
nLinha := 11
ENDIF
ENDDO
RETURN NIL
STATIC FUNCTION DigitaServico( nTotProduto, nTotServico, nTotComissao, nTotDesconto, nIdade )
LOCAL GetList := {}, nLinha := 11, cDescricao := Space(30)
LOCAL nDesconto, nComissao, nValor, nTotal
DO WHILE .T.
nDesconto := nComissao := nValor := nTotal := 0
@ nLinha, 01 SAY "Descricao do Servico:" GET cDescricao PICTURE "@!" Valid ! Empty( cDescricao )
@ nLinha + 1, 01 SAY "Valor" GET nValor PICTURE "999,999.99" Valid nValor >=1 .AND. Calcula( 1, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 25 SAY "Desconto" GET nDesconto PICTURE "999.99" Valid nDesconto >= 1 .AND. Calcula( 1, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 35 SAY "Comissao" GET nComissao PICTURE "999.99" Valid nComissao >= 0 .AND. Calcula( 1, nValor, nDesconto, nComissao, @nTotal )
@ nLinha + 1, 55 SAY "Total" GET nTotal WHEN .F.
READ
IF LastKey() == K_ESC
EXIT
ENDIF
nTotServico += nTotal
nTotComissao += ( nValor * nComissao / 100 )
nTotDesconto += ( nValor * nDesconto / 100 )
MostraTotais( nTotProduto, nTotServico, nTotComissao, nTotDesconto, nIdade )
nLinha += 1
IF nLinha > 16
@ 11, 1 CLEAR TO 15,70
nLinha := 11
ENDIF
ENDDO
RETURN NIL
STATIC FUNCTION MostraTotais( nTotProduto, nTotServico, nTotComissao, nTotDesconto, nIdade )
IF nIdade <= 365
nTotServico := 0
ENDIF
IF nIdade <= 731
nTotProduto := 0
ENDIF
@ 16, 0 SAY "Totais:"
@ Row(), Col() + 2 SAY "Prod:"
@ Row(), Col() + 2 SAY nTotProduto PICTURE "999,999.99"
@ Row(), Col() + 2 SAY "Serv:"
@ Row(), Col() + 2 SAY nTotServico PICTURE "999,999.99"
@ Row(), Col() + 2 SAY "Com:"
@ Row(), Col() + 2 SAY nTotComissao PICTURE "999,999.99"
@ Row(), Col() + 2 SAY "Des:"
@ Row(), Col() + 2 SAY nTotDesconto PICTURE "999.999.99"
@ Row(), Col() + 2 SAY "Tot:"
@ Row(), Col() + 2 SAY nTotProduto + nTotServico + nTotComissao PICTURE "999,999.99"
RETURN NIL
STATIC FUNCTION Calcula( nQtde, nValor, nComissao, nDesconto, nTotal )
nTotal := ( nValor * nQtde * ( nComissao / 100 ) ) - ( nValor * nQtde * ( nDesconto / 100 ) )
RETURN .T.
Retornar para Contribuições, Dicas e Tutoriais
Usuários vendo este fórum: Nenhum usuário registrado online e 18 visitantes