Código: Selecionar todos
//INGRID LOHMANN
FUNCTION OS()
CLEAR
SET DATE TO British
SET CENTURY ON
SET MESSAGE TO 17 Center
// Set Delimiters On
// Set Delimiters to "[]"
//VARIAVEIS SENHA
cLogin := space( 5 )
cSenha := space( 8 )
@ 10, 30 TO 15, 49 Double
@ 12, 32 SAY "Login:"
@ 13, 32 SAY "Senha:"
@ 12, 40 GET cLogin PICTURE "@!" VALID !Empty( cLogin )
@ 13, 40 GET cSenha VALID !Empty( cSenha )
READ
nOrdemServico := 1 //contador autom tico
nOpcao := 0
DO WHILE ( cLogin = "SUPER" ) .AND. ( cSenha = "123mudar" )
CLEAR
@ 10, 25 TO 16, 53 Double
@ 12, 30 SAY "O que deseja fazer?"
@ 13, 30 PROMPT "1 Efetuar Vendas." MESSAGE "Essa opcao ira abrir o programa"
@ 14, 30 PROMPT "2 Sair." MESSAGE "Essa opcao ira sair do programa"
MENU TO nOpcao
// @ 14,46 Get nOpcao Picture "9" Valid !Empty(nOpcao)
// Read
//Do While nOpcao = 1
IF nOpcao == 1
//VARIAVEIS GERAIS
cNomeCliente := space( 50 )
cNomeTecnico := space( 40 )
cDescricaoEquipamento := space( 50 )
dDataOrdemServico := Date()
dDataCompra := Ctod( "" )
nLinhaFixa := 10
nLinhaPergunta := 09
nLinha := 12
cTipoOrdem := space( 1 )
nProdutoFinalG := 0
nServicoFinalG := 0
nLimite := 0
//VARIAVEIS ENDEREÇO
cEndereco := space( 30 )
cBairro := space( 15 )
cReferencia := space( 15 )
cTelefone := space( 12 )
cDomicilio := space( 1 )
CLEAR
cChamado := "Digite P para produto ou S para servico:"
//VARIAVEIS VALOR TOTAL
nProdutoFinal := 0
nServicoFinal := 0
nComissaoTotal := 0
@ 01, 01 SAY "ORDEM DE SERVICO N:"
@ 01, 22 SAY nOrdemServico
@ 03, 01 SAY "Cliente:"
@ 04, 01 SAY "Tecnico:"
@ 05, 01 SAY "Descricao do Equipamento:"
@ 06, 01 SAY "Data da Compra:"
@ 06, 30 SAY "Data do Serviço:"
@ 07, 01 SAY "Deseja entrega a domicilio?"
@ 03, 10 GET cNomeCliente PICTURE "@!" ;
VALID !Empty( cNomeCliente )
@ 04, 10 GET cNomeTecnico PICTURE "@!" ;
VALID !Empty( cNomeTecnico )
@ 05, 27 GET cDescricaoEquipamento PICTURE "@!" ;
VALID !Empty( cDescricaoEquipamento )
@ 06, 17 GET dDataCompra PICTURE "@D 99/99/9999" ;
VALID !Empty( dDataCompra ) .AND. ( dDataCompra <= dDataOrdemServico )
@ 06, 47 SAY dDataOrdemServico
@ 07, 31 GET cDomicilio PICTURE "@!" ;
VALID !Empty( cDomicilio ) .AND. ( cDomicilio = "S" .OR. cDomicilio = "N" )
READ
IF cDomicilio = "S"
@ 08, 01 SAY "Endereco:"
@ 09, 01 SAY "Bairro:"
@ 10, 01 SAY "Referencia:"
@ 11, 01 SAY "Telefone:"
@ 08, 11 GET cEndereco PICTURE "@!" VALID !Empty( cEndereco )
@ 09, 09 GET cBairro PICTURE "@!" VALID !Empty( cBairro )
@ 10, 13 GET cReferencia PICTURE "@!" VALID !Empty( cReferencia )
@ 11, 11 GET cTelefone PICTURE "@!" VALID !Empty( cTelefone )
READ
nLinhaPergunta := 14
nLinhaFixa := 17
nLinha := 19
ENDIF
IF LastKey() == 27
nAlerta := Alert( "Deseja Continuar", { "Sim", "Nao" } )
IF nAlerta = 2
nOrdemServico--
EXIT
ELSE
LOOP
ENDIF
ENDIF
nOrdemServico += 1
DO WHILE .T.
@ nLinhaPergunta - 1, 01 SAY "Limite:"
@ nLinhaPergunta, 01 SAY "Digite P para produto ou S para servico:"
@ nLinhaPergunta - 1, 10 GET nLimite PICTURE "@E 9,999.99" ;
VALID !Empty( nLimite )
@ nLinhaPergunta, 41 GET cTipoOrdem PICTURE "@!" ;
Valid ( ( cTipoOrdem = "P" ) .OR. ( cTipoOrdem = "S" ) )
READ
IF LastKey() == 27
nAviso := Alert( "Deseja mesmo cancelar?", { "Sim", "Nao" } )
IF nAviso = 1
EXIT
ENDIF
ENDIF
cTotal := "Total a pagar:"
DO WHILE cTipoOrdem = "P"
//VARIAVEL NOME PRODUTO
cDescricaoProduto := space( 30 )
nTotalServico := 0
//VARIAVEIS PRODUTO
nQuantidade := 0
nPrecoUnitario := 0
nDescontoProduto := 0
// Total com Desconto :Total - (Total*Desconto/100)
@ nLinhaFixa, 01 SAY "Descricao do Produto:"
@ nLinhaFixa, 23 GET cDescricaoProduto PICTURE "@!" ;
VALID !Empty( cDescricaoProduto )
@ nLinhaFixa + 1, 01 SAY "Quantidade"
@ nLinhaFixa + 1, 14 SAY "Preco Unit."
@ nLinhaFixa + 1, 35 SAY "Desconto"
@ nLinhaFixa + 1, 50 SAY "Total"
@ nLinhaFixa + 6, 01 SAY "Total Final:"
@ nLinha, 01 GET nQuantidade PICTURE "99999" ;
VALID nQuantidade >= 1
@ nLinha, 14 GET nPrecoUnitario PICTURE "@E 9,999,999,999.99" ;
VALID nPrecoUnitario >= 1
@ nLinha, 35 GET nDescontoProduto PICTURE "99999.99" ;
VALID nDescontoProduto >= 0
READ
//COMISSAO PRODUTO
nComissaoProduto := ( ( nPrecoUnitario * nQuantidade ) * ( 0.02 ) )
//TOTAL UNITARIO
nTotalProduto := ( nPrecoUnitario * nQuantidade ) - ( ( nPrecoUnitario * nQuantidade ) * ( nDescontoProduto/100 ) ) + ( nComissaoProduto )
@ nLinha, 50 say + AllTrim( Transform( nTotalProduto, "@E 999,999,999,999.99" ) )
//TOTAL FINAL
nProdutoFinal := nProdutoFinal + nTotalProduto
IF nLinha > 23 .AND. cEndereco != "S"
@ nLinha, 01 CLEAR TO 15, 70
nLinha := 11
ELSEIF nLinha > 23 .AND. cEndereco = "S"
@ nLinha, 01 CLEAR TO 15, 70
nLinha := 18
ENDIF
nGarantiaProduto := dDataOrdemServico - dDataCompra // 2 anos (730 ou 731 dias)
IF nGarantiaProduto <= 731
@ nLinhaFixa + 7, 01 SAY cTotal
@ nLinhaFixa + 7, 16 SAY nProdutoFinalG PICTURE "@E 9,999.99"
ELSE
@ nLinhaFixa + 7, 01 SAY cTotal
@ nLinhaFixa + 7, 16 SAY nProdutoFinal PICTURE "@E 999,999,999.99"
ENDIF
IF LastKey() == 27
nAviso1 := Alert( "O que deseja fazer?", { "Finalizar e inicar outro chamado", "Apenas Finalizar", "Cancelar" } )
IF nAviso1 = 1
@ nLinhaFixa + 8, 13 SAY nProdutoFinal PICTURE "@E 999,999,999.99"
@ nLinhaPergunta, 01 SAY cChamado
@ nLinhaPergunta, 41 GET cTipoOrdem PICTURE "@!" ;
Valid ( ( cTipoOrdem = "P" ) .OR. ( cTipoOrdem = "S" ) )
READ
CLEAR
ELSEIF nAviso1 = 2
@ nLinha + 4, 13 SAY nProdutoFinal PICTURE "@E 999,999,999.99"
EXIT
ELSE
EXIT
ENDIF
ENDIF
nLinha++
ENDDO
DO WHILE cTipoOrdem = "S"
nTotalProduto := 0
//VARIAVEL NOME SERVICO
cDescricaoServico := space( 30 )
//VARIAVEIS SERVIÇO
nDescontoServico := 0
nComissaoTecnico := 0
nValorServico := 0
@ nLinhaFixa, 01 SAY "Descricao do Servico:"
@ nLinhaFixa, 23 GET cDescricaoServico PICTURE "@!" ;
VALID !Empty( cDescricaoServico )
READ
@ nLinhaFixa + 1, 01 SAY "Valor"
@ nLinhaFixa + 1, 25 SAY "Desconto"
@ nLinhaFixa + 1, 35 SAY "Comissao"
@ nLinhaFixa + 1, 55 SAY "Total"
@ nLinhaFixa + 4, 01 SAY "Total Final:"
@ nLinha, 01 GET nValorServico PICTURE "@E 999,999,999.99" ;
VALID nValorServico >= 1
@ nLinha, 25 GET nDescontoServico PICTURE "99999.99" ;
VALID nDescontoServico >= 1
@ nLinha, 35 GET nComissaoTecnico PICTURE "99999.99" ;
VALID nComissaoTecnico >= 0
READ
nTotalServico := nValorServico + ( nValorServico * ( nComissaoTecnico/100 ) ) - ( nValorServico * ( nDescontoServico/100 ) )
@ nLinha, 55 say + AllTrim( Transform( nTotalServico, "@E 999,999,999,999.99" ) )
nComissaoTotal := nComissaoTotal + ( nValorServico * ( nComissaoTecnico/100 ) )
nServicoFinal := nServicoFinal + nTotalServico
@ nLinha + 8, 01 SAY "Total Comissao:"
@ nLinha + 8, 18 SAY Transform ( nComissaoTotal, "@E 999,999.99" )
IF nLinha > 23 .AND. cEndereco != "S"
@ nLinha, 01 CLEAR TO 15, 70
nLinha := 11
ELSEIF nLinha > 23 .AND. cEndereco = "S"
@ nLinha, 01 CLEAR TO 15, 70
nLinha := 18
ENDIF
IF LastKey() == 27
nAviso2 := Alert( "O que deseja fazer?", { "Finalizar e inicar outro chamado", "Apenas Finalizar", "Cancelar" } )
IF nAviso2 = 1
@ nLinha + 6, 13 SAY nServicoFinal PICTURE "@E 999,999,999.99"
@ nLinhaPergunta, 01 SAY "Digite P para produto ou S para servico:"
@ nLinhaPergunta, 41 GET cTipoOrdem PICTURE "@!" Valid ( ( cTipoOrdem = "P" ) .OR. ( cTipoOrdem = "S" ) )
READ
CLEAR
ELSEIF nAviso2 = 2
@ nLinha + 6, 13 SAY nServicoFinal PICTURE "@E 999,999,999.99"
ELSE
EXIT
ENDIF
ENDIF
nGarantiaServico := dDataOrdemServico - dDataCompra // 1 ano (365 ou 366 dias)
IF nGarantiaServico <= 366
@ nLinhaFixa + 7, 01 SAY cTotal
nProdutoFinalG := 0
@ nLinhaFixa + 7, 16 SAY nServicoFinalG PICTURE "@E 9,999.99"
ELSE
@ nLinhaFixa + 7, 01 SAY cTotal
@ nLinhaFixa + 7, 16 SAY nServicoFinal PICTURE "@E 999,999,999.99"
ENDIF
nLinha++
ENDDO
nTaxaDomicilio := ( ( nProdutoFinal + nServicoFinal ) * ( 0.03 ) )
//VARIAVEIS SUPERVISOR
cSupervisor := space( 10 )
cSenhaSupervisor := space( 10 )
DO WHILE ( nProdutoFinal + nServicoFinal ) > nLimite
CLEAR
SET COLOR TO "R/N,R/N"
@ 10, 30 TO 15, 55 Double
@ 12, 32 SAY "Login:"
@ 13, 32 SAY "Senha:"
@ 12, 40 GET cSupervisor PICTURE "@!" ;
VALID !Empty( cSupervisor )
@ 13, 40 GET cSenhaSupervisor PICTURE "@!" ;
VALID !Empty( cSenhaSupervisor )
READ
SET COLOR TO "BG/N"
IF cSupervisor = "SUPERVISOR" .AND. cSenhaSupervisor = "LIBERAR123"
@ 24, 01 SAY "Total da OS:"
@ 24, 14 SAY Transform ( ( nProdutoFinal + nServicoFinal + nTaxaDomicilio ), "@E 999,999.99" )
ELSE
EXIT
ENDIF
//nTotalOrdem := nTotalServico + nTotalProduto
ENDDO
ENDDO
ELSE
EXIT
ENDIF
ENDDO
RETURN NIL