22 Jul 2019 19:28
DO WHILE ! RLock()
ENDDO
22 Jul 2019 19:54
nKey := Inkey(0)
nKey := 0
DO WHILE nKey == 0
OL_AutoYield()
ENDDO
22 Jul 2019 20:13
22 Jul 2019 20:32
22 Jul 2019 20:49
22 Jul 2019 21:06
22 Jul 2019 23:38
#include "directry.ch"
PROCEDURE Main
LOCAL aList, aDetails, cNomePrg, cNomeProc, cTxt
aList := Directory( "*.prg" )
FOR EACH aDetails IN aList
cNomePrg := aDetails[ F_NAME ]
cNomeProc := Substr( cNomePrg, 1, At( ".", cNomePrg ) - 1 )
cTxt := "PROCEDURE " + cNomePrg + hb_Eol()
cTxt += hb_Eol()
cTxt += MemoRead( cNomePrg )
hb_MemoWrit( cNomePrg, cTxt )
NEXT
RETURN
23 Jul 2019 12:05
27 Jul 2019 11:38
27 Jul 2019 12:25
Do While .t.
Clear
Set Date to British
Set Century On
// Set Delimiters On
// Set Delimiters to "[]"
//VARIAVEIS GERAIS
nOrdemServico := 1 //contador autom tico
cNomeCliente := space(50)
cNomeTecnico := space(40)
cDescricaoEquipamento := space(50)
dDataOrdemServico := Date()
dDataCompra := Ctod("")
nLinha := 11
cTipoOrdem := space(1)
nProdutoFinalG := 0
nServicoFinalG := 0
cTotal := "Total a pagar:"
//VARIAVEIS GARANTIA
//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 "Digite P para produto ou S para servico:"
@ 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 Valid !Empty(dDataCompra)
@ 06,47 say dDataOrdemServico
@ 07,41 Get cTipoOrdem Picture "@!" Valid ((cTipoOrdem = "P") .or. (cTipoOrdem = "S"))
Read
//VARIAVEL NOME PRODUTO
cDescricaoProduto := space(30)
Do While cTipoOrdem = "P"
//VARIAVEIS PRODUTO
nQuantidade := 0
nPrecoUnitario := 0
nDescontoProduto := 0
// Total com Desconto :Total - (Total*Desconto/100)
@ 09,01 say "Descricao do Produto:"
@ 09,23 Get cDescricaoProduto Picture "@!" Valid !Empty(cDescricaoProduto)
@ 10,01 say "Quantidade"
@ 10,14 say "Preco Unit."
@ 10,35 say "Desconto"
@ 10,50 say "Total"
@ 16,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
//TOTAL UNITARIO
nTotalProduto := (nPrecoUnitario * nQuantidade)-((nPrecoUnitario * nQuantidade)*(nDescontoProduto/100))
@ nLinha,50 say +AllTrim(Transform(nTotalProduto, "@E 999,999,999,999.99"))
//TOTAL FINAL
nProdutoFinal := nProdutoFinal + nTotalProduto
If nLinha > 16
@ nLinha,01 Clear to 15,70
nLinha := 11
Endif
nGarantiaProduto := dDataOrdemServico - dDataCompra // 2 anos (730 ou 731 dias)
If nGarantiaProduto <= 731
@ 17,01 say cTotal
@ 17,16 say nProdutoFinalG Picture "@E 9,999.99"
else
@ 17,01 say cTotal
@ 17,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
@ 16,13 say nProdutoFinal Picture "@E 999,999,999.99"
@ 07,01 say "Digite P para produto ou S para servico:"
@ 07,41 Get cTipoOrdem Picture "@!" Valid ((cTipoOrdem = "P") .or. (cTipoOrdem = "S"))
Read
elseif nAviso1 = 2
@ 16,13 say nProdutoFinal Picture "@E 999,999,999.99"
else
exit
Endif
Endif
nLinha++
Enddo
//VARIAVEL NOME SERVICO
cDescricaoServico := space(30)
Do While cTipoOrdem = "S"
//VARIAVEIS SERVI€O
nDescontoServico := 0
nComissaoTecnico := 0
nValorServico := 0
@ 09,01 say "Descricao do Servico:"
@ 09,23 Get cDescricaoServico Picture "@!" Valid !Empty(cDescricaoServico)
Read
@ 10,01 say "Valor"
@ 10,25 say "Desconto"
@ 10,35 say "Comissao"
@ 10,55 say "Total"
@ 16,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
@ 18,01 say "Total Comissao:"
@ 18,18 say Transform (nComissaoTotal, "@E 999,999.99")
If nLinha > 16
@ nLinha,01 Clear to 15,70
nLinha := 11
Endif
If LastKey() == 27
nAviso2 := Alert("Deseja finalizar a ordem de servico?",{"Sim","Nao"})
If nAviso2 = 1
@ 16,13 say nServicoFinal Picture "@E 999,999,999.99"
else
loop
Endif
Endif
nGarantiaServico := dDataOrdemServico - dDataCompra // 1 ano (365 ou 366 dias)
If nGarantiaServico <= 366
@ 17,01 say cTotal
nProdutoFinalG := 0
@ 17,16 say nServicoFinalG Picture "@E 9,999.99"
else
@ 17,01 say cTotal
@ 17,16 say nServicoFinal Picture "@E 999,999,999.99"
Endif
nLinha++
Enddo
If LastKey() == 27
nAviso := Alert("Deseja mesmo cancelar?", {"Sim","Nao"})
If nAviso = 1
Exit
Endif
EndIf
nOrdemServico += 1
nOrdemServico++
Enddo
d:\temp>hbmk2 codos -w3 -es2
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (8289a47fd1) (2019-06-07 14:14)
Copyright (c) 1999-2019, https://github.com/JoseQuintas/harbour34/
Compiling 'codos.prg'...
codos.prg(4) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(4) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(12) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
codos.prg(13) Warning W0001 Ambiguous reference 'CNOMECLIENTE'
codos.prg(14) Warning W0001 Ambiguous reference 'CNOMETECNICO'
codos.prg(15) Warning W0001 Ambiguous reference 'CDESCRICAOEQUIPAMENTO'
codos.prg(16) Warning W0001 Ambiguous reference 'DDATAORDEMSERVICO'
codos.prg(17) Warning W0001 Ambiguous reference 'DDATACOMPRA'
codos.prg(18) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(19) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(20) Warning W0001 Ambiguous reference 'NPRODUTOFINALG'
codos.prg(21) Warning W0001 Ambiguous reference 'NSERVICOFINALG'
codos.prg(22) Warning W0001 Ambiguous reference 'CTOTAL'
codos.prg(30) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(31) Warning W0001 Ambiguous reference 'NSERVICOFINAL'
codos.prg(32) Warning W0001 Ambiguous reference 'NCOMISSAOTOTAL'
codos.prg(35) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
codos.prg(43) Warning W0001 Ambiguous reference 'CNOMECLIENTE'
codos.prg(43) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(43) Warning W0001 Ambiguous reference 'CNOMECLIENTE'
codos.prg(43) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(44) Warning W0001 Ambiguous reference 'CNOMETECNICO'
codos.prg(44) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(44) Warning W0001 Ambiguous reference 'CNOMETECNICO'
codos.prg(44) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(45) Warning W0001 Ambiguous reference 'CDESCRICAOEQUIPAMENTO'
codos.prg(45) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(45) Warning W0001 Ambiguous reference 'CDESCRICAOEQUIPAMENTO'
codos.prg(45) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(46) Warning W0001 Ambiguous reference 'DDATACOMPRA'
codos.prg(46) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(46) Warning W0001 Ambiguous reference 'DDATACOMPRA'
codos.prg(46) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(47) Warning W0001 Ambiguous reference 'DDATAORDEMSERVICO'
codos.prg(48) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(48) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(48) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(48) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(48) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(49) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(49) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(49) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(53) Warning W0001 Ambiguous reference 'CDESCRICAOPRODUTO'
codos.prg(54) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(57) Warning W0001 Ambiguous reference 'NQUANTIDADE'
codos.prg(58) Warning W0001 Ambiguous reference 'NPRECOUNITARIO'
codos.prg(59) Warning W0001 Ambiguous reference 'NDESCONTOPRODUTO'
codos.prg(65) Warning W0001 Ambiguous reference 'CDESCRICAOPRODUTO'
codos.prg(65) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(65) Warning W0001 Ambiguous reference 'CDESCRICAOPRODUTO'
codos.prg(65) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(73) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(73) Warning W0001 Ambiguous reference 'NQUANTIDADE'
codos.prg(73) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(73) Warning W0001 Ambiguous reference 'NQUANTIDADE'
codos.prg(73) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(74) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(74) Warning W0001 Ambiguous reference 'NPRECOUNITARIO'
codos.prg(74) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(74) Warning W0001 Ambiguous reference 'NPRECOUNITARIO'
codos.prg(74) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(75) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(75) Warning W0001 Ambiguous reference 'NDESCONTOPRODUTO'
codos.prg(75) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(75) Warning W0001 Ambiguous reference 'NDESCONTOPRODUTO'
codos.prg(75) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(76) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(76) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(76) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(79) Warning W0001 Ambiguous reference 'NPRECOUNITARIO'
codos.prg(79) Warning W0001 Ambiguous reference 'NQUANTIDADE'
codos.prg(79) Warning W0001 Ambiguous reference 'NPRECOUNITARIO'
codos.prg(79) Warning W0001 Ambiguous reference 'NQUANTIDADE'
codos.prg(79) Warning W0001 Ambiguous reference 'NDESCONTOPRODUTO'
codos.prg(79) Warning W0001 Ambiguous reference 'NTOTALPRODUTO'
codos.prg(80) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(80) Warning W0001 Ambiguous reference 'NTOTALPRODUTO'
codos.prg(83) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(83) Warning W0001 Ambiguous reference 'NTOTALPRODUTO'
codos.prg(83) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(85) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(86) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(86) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(87) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(90) Warning W0001 Ambiguous reference 'DDATAORDEMSERVICO'
codos.prg(90) Warning W0001 Ambiguous reference 'DDATACOMPRA'
codos.prg(90) Warning W0001 Ambiguous reference 'NGARANTIAPRODUTO'
codos.prg(92) Warning W0001 Ambiguous reference 'NGARANTIAPRODUTO'
codos.prg(93) Warning W0001 Ambiguous reference 'CTOTAL'
codos.prg(94) Warning W0001 Ambiguous reference 'NPRODUTOFINALG'
codos.prg(96) Warning W0001 Ambiguous reference 'CTOTAL'
codos.prg(97) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(101) Warning W0001 Ambiguous reference 'NAVISO1'
codos.prg(102) Warning W0001 Ambiguous reference 'NAVISO1'
codos.prg(103) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(105) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(105) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(105) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(105) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(105) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(106) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(106) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(106) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(107) Warning W0001 Ambiguous reference 'NAVISO1'
codos.prg(108) Warning W0001 Ambiguous reference 'NPRODUTOFINAL'
codos.prg(115) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(115) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(119) Warning W0001 Ambiguous reference 'CDESCRICAOSERVICO'
codos.prg(120) Warning W0001 Ambiguous reference 'CTIPOORDEM'
codos.prg(123) Warning W0001 Ambiguous reference 'NDESCONTOSERVICO'
codos.prg(124) Warning W0001 Ambiguous reference 'NCOMISSAOTECNICO'
codos.prg(125) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(129) Warning W0001 Ambiguous reference 'CDESCRICAOSERVICO'
codos.prg(129) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(129) Warning W0001 Ambiguous reference 'CDESCRICAOSERVICO'
codos.prg(129) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(130) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(130) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(130) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(138) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(138) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(138) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(138) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(138) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(139) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(139) Warning W0001 Ambiguous reference 'NDESCONTOSERVICO'
codos.prg(139) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(139) Warning W0001 Ambiguous reference 'NDESCONTOSERVICO'
codos.prg(139) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(140) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(140) Warning W0001 Ambiguous reference 'NCOMISSAOTECNICO'
codos.prg(140) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(140) Warning W0001 Ambiguous reference 'NCOMISSAOTECNICO'
codos.prg(140) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(141) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(141) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(141) Warning W0001 Ambiguous reference 'GETLIST'
codos.prg(143) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(143) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(143) Warning W0001 Ambiguous reference 'NCOMISSAOTECNICO'
codos.prg(143) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(143) Warning W0001 Ambiguous reference 'NDESCONTOSERVICO'
codos.prg(143) Warning W0001 Ambiguous reference 'NTOTALSERVICO'
codos.prg(144) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(144) Warning W0001 Ambiguous reference 'NTOTALSERVICO'
codos.prg(146) Warning W0001 Ambiguous reference 'NCOMISSAOTOTAL'
codos.prg(146) Warning W0001 Ambiguous reference 'NVALORSERVICO'
codos.prg(146) Warning W0001 Ambiguous reference 'NCOMISSAOTECNICO'
codos.prg(146) Warning W0001 Ambiguous reference 'NCOMISSAOTOTAL'
codos.prg(147) Warning W0001 Ambiguous reference 'NSERVICOFINAL'
codos.prg(147) Warning W0001 Ambiguous reference 'NTOTALSERVICO'
codos.prg(147) Warning W0001 Ambiguous reference 'NSERVICOFINAL'
codos.prg(151) Warning W0001 Ambiguous reference 'NCOMISSAOTOTAL'
codos.prg(153) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(154) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(154) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(155) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(159) Warning W0001 Ambiguous reference 'NAVISO2'
codos.prg(160) Warning W0001 Ambiguous reference 'NAVISO2'
codos.prg(161) Warning W0001 Ambiguous reference 'NSERVICOFINAL'
codos.prg(167) Warning W0001 Ambiguous reference 'DDATAORDEMSERVICO'
codos.prg(167) Warning W0001 Ambiguous reference 'DDATACOMPRA'
codos.prg(167) Warning W0001 Ambiguous reference 'NGARANTIASERVICO'
codos.prg(169) Warning W0001 Ambiguous reference 'NGARANTIASERVICO'
codos.prg(170) Warning W0001 Ambiguous reference 'CTOTAL'
codos.prg(171) Warning W0001 Ambiguous reference 'NPRODUTOFINALG'
codos.prg(172) Warning W0001 Ambiguous reference 'NSERVICOFINALG'
codos.prg(174) Warning W0001 Ambiguous reference 'CTOTAL'
codos.prg(175) Warning W0001 Ambiguous reference 'NSERVICOFINAL'
codos.prg(177) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(177) Warning W0001 Ambiguous reference 'NLINHA'
codos.prg(180) Warning W0001 Ambiguous reference 'NAVISO'
codos.prg(181) Warning W0001 Ambiguous reference 'NAVISO'
codos.prg(186) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
codos.prg(186) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
codos.prg(187) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
codos.prg(187) Warning W0001 Ambiguous reference 'NORDEMSERVICO'
27 Jul 2019 12:28
PROCEDURE Main
LOCAL nOrdemServico, cNomeCliente, cNomeTecnico, cDescricaoEquipamento
LOCAL dDataOrdemServico, dDataCompra, nLinha, cTipoOrdem
LOCAL nProdutoFinalG, nServicoFinalG, cTotal, nComissaoTecnico
LOCAL nValorServico, nDescontoServico, nServicoFinal, nComissaoTotal
LOCAL nTotalServico, nAviso2, nGarantiaServico, nAviso, cDescricaoServico
LOCAL nDescontoProduto, nPrecoUnitario, nQuantidade, nGarantiaProduto
LOCAL nAviso1, nProdutoFinal, cDescricaoProduto, nTotalProduto
LOCAL GetList := {}
Compiling 'codos.prg'...
codos.prg(200) Warning W0032 Variable 'GETLIST' is assigned but not used in function 'MAIN(10)'
codos.prg(200) Warning W0032 Variable 'NPRODUTOFINALG' is assigned but not used in function 'MAIN(180)'
codos.prg(200) Warning W0032 Variable 'NORDEMSERVICO' is assigned but not used in function 'MAIN(196)'
27 Jul 2019 12:35
Do While .t.
nOrdemServico := 1
...
nOrdemServico += 1
nOrdemServico++
Enddo
27 Jul 2019 16:59
MEMVAR nOrdemServico
MEMVAR cNomeCliente, cNomeTecnico, cDescricaoEquipamento
MEMVAR dDataOrdemServico, dDataCompra, nLinha, cTipoOrdem
MEMVAR nProdutoFinalG, nServicoFinalG, cTotal, nComissaoTecnico
MEMVAR nValorServico, nDescontoServico, nServicoFinal, nComissaoTotal
MEMVAR nTotalServico, nAviso2, nGarantiaServico, nAviso, cDescricaoServico
MEMVAR nDescontoProduto, nPrecoUnitario, nQuantidade, nGarantiaProduto
MEMVAR nAviso1, nProdutoFinal, cDescricaoProduto, nTotalProduto, nDigita
MEMVAR nAlert
PROCEDURE Main
PRIVATE nOrdemServico := 1
PRIVATE cNomeCliente := Space(50)
PRIVATE cNomeTecnico := Space(40)
PRIVATE cDescricaoEquipamento := Space(50)
PRIVATE dDataOrdemServico := Date()
PRIVATE dDataCompra := Ctod("")
PRIVATE nLinha := 11
PRIVATE cTipoOrdem := Space(1)
PRIVATE nProdutoFinalG := 0
PRIVATE nServicoFinalG := 0
PRIVATE cTotal := "Total a pagar:"
CLS
SET DATE to British
SET CENTURY ON
// Set Delimiters On
// Set Delimiters to "[]"
DO WHILE .T.
DigitaOS()
nAlert := Alert( "Digita mais OS", { "Sim", "Nao" } )
IF nAlert = 2
EXIT
ENDIF
nOrdemServico += 1
ENDDO
RETURN
STATIC FUNCTION DigitaOS()
LOCAL GetList := {}
//VARIAVEIS GERAIS
//VARIAVEIS GARANTIA
//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 "Digite P para produto ou S para servico:"
@ 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 Valid !Empty(dDataCompra)
@ 06,47 SAY dDataOrdemServico
@ 07,41 GET cTipoOrdem PICTURE "@!" Valid ((cTipoOrdem = "P") .OR. (cTipoOrdem = "S"))
READ
DO WHILE .T.
nAlert := Alert( "Digita Produto", "Digita Servico", "Encerra" )
IF nDigita = 3
EXIT
ENDIF
IF nDigita != 1 .AND. nDigita != 2
LOOP
ENDIF
IF nDigita == 2
DigitaProduto()
ELSE
DigitaServico()
ENDIF
ENDDO
RETURN NIL
STATIC FUNCTION DigitaProduto()
LOCAL GetList := {}
//VARIAVEL NOME PRODUTO
cDescricaoProduto := Space(30)
DO WHILE cTipoOrdem = "P"
//VARIAVEIS PRODUTO
nQuantidade := 0
nPrecoUnitario := 0
nDescontoProduto := 0
// Total com Desconto :Total - (Total*Desconto/100)
@ 09,01 SAY "Descricao do Produto:"
@ 09,23 GET cDescricaoProduto PICTURE "@!" Valid !Empty(cDescricaoProduto)
@ 10,01 SAY "Quantidade"
@ 10,14 SAY "Preco Unit."
@ 10,35 SAY "Desconto"
@ 10,50 SAY "Total"
@ 16,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
//TOTAL UNITARIO
nTotalProduto := (nPrecoUnitario * nQuantidade)-((nPrecoUnitario * nQuantidade)*(nDescontoProduto/100))
@ nLinha,50 SAY +AllTrim(Transform(nTotalProduto, "@E 999,999,999,999.99"))
//TOTAL FINAL
nProdutoFinal := nProdutoFinal + nTotalProduto
IF nLinha > 16
@ nLinha,01 CLEAR TO 15,70
nLinha := 11
ENDIF
nGarantiaProduto := dDataOrdemServico - dDataCompra // 2 anos (730 ou 731 dias)
IF nGarantiaProduto <= 731
@ 17,01 SAY cTotal
@ 17,16 SAY nProdutoFinalG PICTURE "@E 9,999.99"
ELSE
@ 17,01 SAY cTotal
@ 17,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
@ 16,13 SAY nProdutoFinal PICTURE "@E 999,999,999.99"
@ 07,01 SAY "Digite P para produto ou S para servico:"
@ 07,41 GET cTipoOrdem PICTURE "@!" Valid ((cTipoOrdem = "P") .OR. (cTipoOrdem = "S"))
READ
ELSEIF nAviso1 = 2
@ 16,13 SAY nProdutoFinal PICTURE "@E 999,999,999.99"
ELSE
EXIT
ENDIF
ENDIF
nLinha++
ENDDO
RETURN NIL
STATIC FUNCTION DigitaServico()
LOCAL GetList := {}
//VARIAVEL NOME SERVICO
cDescricaoServico := Space(30)
DO WHILE cTipoOrdem = "S"
//VARIAVEIS SERVI€O
nDescontoServico := 0
nComissaoTecnico := 0
nValorServico := 0
@ 09,01 SAY "Descricao do Servico:"
@ 09,23 GET cDescricaoServico PICTURE "@!" Valid !Empty(cDescricaoServico)
READ
@ 10,01 SAY "Valor"
@ 10,25 SAY "Desconto"
@ 10,35 SAY "Comissao"
@ 10,55 SAY "Total"
@ 16,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
@ 18,01 SAY "Total Comissao:"
@ 18,18 SAY Transform (nComissaoTotal, "@E 999,999.99")
IF nLinha > 16
@ nLinha,01 CLEAR TO 15,70
nLinha := 11
ENDIF
IF LastKey() == 27
nAviso2 := Alert("Deseja finalizar a ordem de servico?",{"Sim","Nao"})
IF nAviso2 = 1
@ 16,13 SAY nServicoFinal PICTURE "@E 999,999,999.99"
ELSE
LOOP
ENDIF
ENDIF
nGarantiaServico := dDataOrdemServico - dDataCompra // 1 ano (365 ou 366 dias)
IF nGarantiaServico <= 366
@ 17,01 SAY cTotal
//nProdutoFinalG := 0
@ 17,16 SAY nServicoFinalG PICTURE "@E 9,999.99"
ELSE
@ 17,01 SAY cTotal
@ 17,16 SAY nServicoFinal PICTURE "@E 999,999,999.99"
ENDIF
nLinha++
ENDDO
RETURN NIL
27 Jul 2019 17:02
27 Jul 2019 17:07
LOCAL GetList := {}
CLEAR