VETORES ou MATRIZES em Clipper
Enviado: 09 Nov 2011 10:21
Caros amigos do Fórum.
Eis a rotina de inclusão. Meu agradecimento antecipado.
Abraço a todos!
Netavin
Eis a rotina de inclusão. Meu agradecimento antecipado.
Abraço a todos!
Netavin
Código: Selecionar todos
/**************************************/
/* Inclusao de Toras no Estoque */
/*************************************/
Function Incl_est ()
Local SavOrd, Flag, grvmsg, colchet
Public ro_fre,ro_imp,ro_ven,ro_plac1,ro_plac2,final
Private Sinal
Set Key -4 to Con_esse /* Pesquisa nome de essências */
Set Key -5 to
Setblink(.f.)
SET SCOREBOARD OFF
Sele 1
Use Cadtora Alias Cadtora
IF !NETERR()
If !File("Placa.ntx")
Index on Plac to Placa
ELSE
SET INDEX TO placa
Endif
If !File("esse.ntx")
Index on esse to esse
ELSE
SET INDEX TO esse
Endif
If !File("roma.ntx")
Index on roma to roma
ELSE
SET INDEX TO roma
Endif
If !File("i_roma.ntx")
Index on esse + Strzero(plac,5) to i_roma
ELSE
SET INDEX TO i_roma
ENDIF
ELSE
NETMSG()
RETURN .F.
CLOSE DATABASE
ENDIF
Set Index to placa,esse,roma,i_roma
/* 1 2 3 4 */
Set Order to 3
DbGoTop()
Do While .t.
Public toreiro
SetBlink(.t.)
SET DELE OFF
/* Cria vari veis */
Vend :=Space(15)
Tm3 :=0
Tpg :=0
MARC :=0
VDTEN :=DATE() /* Data de cadastro do Romaneio */
VROMA :=0 /* N§ do romaneio */
ro_imp :=0
ro_fre :=Space(15)
ro_ven :=Space(15)
VQTD :=0 /* Quantidade de toras do Romaneio */
VVEND :=Space(15) /* Nome do vendedor/Toreiro */
VFRET :=Space(20) /* Nome do freteiro se houver */
Linha :=15
Flag :=0
Sinal :=0
colchet :="[ ]"
grvmsg :=SAVESCREEN(00,00,45,79)
vplaca1 :=SPACE(11)
vplaca2 :=SPACE(11)
vobse :=SPACE(15)
Final:=0 /* Indica o destino da tora (0-> serrada; 1-> vendida; 2-> inservível)*/
LIN46()
@ 06,25 CLEAR TO 06,60
@ 46,53 Say "<F5>"
Setcolor("W/N")
@ 46,58 Say "Lista das Essencias"
Setcolor("B/W,W/B")
/* Desenha o quadro */
DONEBEEP()
DispBox(08,00,43,79,1,"w/bg,gb+/b")
DispBox(43,00,45,79,1,"w/bg,gb+/b")
@ 09,01 Clear to 42,78
@ 44,01 Clear to 44,78
@ 48,03 Say PADC(" Entrada de toras no estoque ",75)
Setcolor("N/w,B/w")
@ 08,02 SAY colchet
@ 08,04 SAY "Cadastro de romaneio"
@ 10,03 Say "Data:" Get vdten
@ 10,21 Say "Nr romaneio:" Get vroma Pict "@ez 99999" Valid n_roma(vroma)
@ 10,41 Say "Qtde :" Get vqtd Pict "99" Valid C_QDE(vqtd)
@ 10,53 Say "Toreiro:" Get vvend Pict "@!" When sinal=0 Valid !Empty(vvend)
@ 11,03 Say "Freteiro:" Get vfret Pict "@!" When sinal=0
@ 11,35 Say "Placa:" Get vplaca1 Pict "!!!-9999-!!" When sinal=0
@ 11,55 Say "Placa:" Get vplaca2 Pict "!!!-9999-!!" When sinal=0
READ
If lastkey()=27
Setcursor(0)
tone(1500,1)
A_lerta("Operação cancelada!")
SET DELE ON
use
Exit
Endif
Setcolor("B/W")
@ 12,01 Say Repl("Ä",78)
If Sinal = 1
vvend:=cadtora->vend
vfret:=cadtora->fret
vplaca1:=cadtora->placa1
vplaca2:=cadtora->placa2
endif
Use Cadtora Index placa
For X = 1 to VQTD /* Laço para cadastro */
VPLAC=0 /* Nr da plaqueta */
VESSE=Space(16) /* Nome da essência */
VDIAM=0 /* Diâmetro da tora */
VCOMP=0 /* Comprimento da tora */
VDESC=0 /* Desconto em Cm */
VTDES=0 /* Total do desconto em M3 */
VTTM3=0 /* Total da tora em M3 */
VVLM3=0 /* Valor por M3 em R$ */
VVLPG=0 /* Valor pago na tora */
Set color to n
@ 13,01 clear to 13,78
SetColor("w/n")
@ 13,02 Say "PLACA"
@ 13,10 Say "ESPCIE"
@ 13,29 Say "DIÂM"
@ 13,36 Say "COMP"
@ 13,44 Say "DESC"
@ 13,51 Say "VLR/M3"
@ 13,60 Say "TTL M3"
@ 13,70 Say "VLR PAGO"
Setcolor("B/W")
@ 14,01 Say Repl(" ",78)
SetColor("n/w,b/w")
@ Linha,02 Get VPLAC Pict "99999" Valid Plaqueta(vplac)
Read
Setcursor(0)
If Lastkey() = 27
ERRORBEEP()
SETCURSOR(0)
A_lerta("Romaneio cancelado!")
Exit
Endif
DbSeek(vplac)
If Found()
Tone(1700,1)
If Opc:=A_lerta("Esta plaqueta já existe!",{"$Retorna","$Cancela"}) = 1
X = X - 1
Loop
Else
Exit
Endif
Else
Setcolor("b/w")
If X = VQTD
@ 48,02 Clear to 48,78
@ 48,18 Say " Cadastrando último item do romaneio nr "+Alltrim(STR(VROMA))
Else
@ 48,18 Say " Cadastrando item nr "+Alltrim(str(x))+"/"+Alltrim(STR(VQTD))+" do Romaneio nr "+Alltrim(str(vroma))+" "
Endif
Setcolor("B/W,B/W")
@ Linha,10 Get VESSE Pict "@!" Valid Tem(vesse) When buscaesse()
@ Linha,29 Get VDIAM Pict "9.99" Valid Diametro(vdiam)
@ Linha,36 Get VCOMP Pict "99.99" Valid Valida(vcomp)
@ Linha,44 Get VDESC Pict "9.99" Valid Desconto(vdesc)
@ Linha,51 Get VVLM3 Pict "@E 999.99" Valid Verif_vlr(vvlm3)
Read
Setcursor(0)
If Lastkey() = 27
Tone(500,1)
A_lerta("Romaneio cancelado!")
Exit
Endif
/*******************8***************/
/* >>>> Aqui é feito o cálculo da tora <<<< */
/***********************************/
VTDES:=(vdesc^2)*vcomp*0.7854
VTTM3:=(((vdiam^2)*vcomp*0.7854)-(vdesc^2)*vcomp*0.7854) - 0.0001
VVLPG:=VTTM3*VVLM3
SetColor("B/W")
@ Linha,60 Say Transform(vttm3, "@e 99.999")
@ Linha,70 Say Transform(vvlpg, "@e 9,999.99")
Setcolor("N/W,W/B")
If vfret=Space(10)
vfret:="O MESMO"
Endif
ro_imp=vroma /* Informação para a função Impr_dig */
ro_fre=vfret /* Idem */
ro_ven=vvend /* Idem */
ro_plac1=vplaca1
ro_plac2=vplaca2
do while .t.
If travarquivo(5)
DbAppend()
Repl PLAC WITH VPLAC,DTEN WITH VDTEN,ROMA WITH VROMA,;
ESSE WITH VESSE,DIAM WITH VDIAM,COMP WITH VCOMP,;
DESC WITH VDESC,TDES WITH VTDES,TTM3 WITH VTTM3,;
VEND WITH VVEND,FRET WITH VFRET,VLM3 WITH VVLM3,;
VLPG WITH VVLPG,PLACA1 WITH VPLACA1,;
PLACA2 WITH VPLACA2,FINALIDADE WITH FINAL
Flag++ /* Sinaliza se foi cadastrado pelo menos uma plaqueta */
Else
Flag--
loop
Endif
exit
enddo
Tone(400,1)
Dbunlock()
DbCommit()
Endif
Linha++
Tm3:=Tm3+vttm3
Tpg:=Tpg+vvlpg
Setcolor("b/w")
@ 44,46 Say "Totais:" + Transform(Tm3,"@e 9,999.999") + " M3"
@ 44,67 Say "R$ " + Transform(Tpg,"@e 9,999.99")
Next
@ 48,02 Clear to 48,78
If Flag >= 1
Setcursor(0)
Tone(1600,1);Tone(1600,2);Tone(1600,3)
A_lerta("Fim do Romaneio "+Alltrim(STR(VROMA)),,"w/g")
Tone(1700,1)
If Opc:=A_lerta("Deseja Imprimir?",{"Sim","Nao"},"w/bg")=1
Setcursor(0)
Impr_ro2()
Tone(1700,1)
Setcursor(0)
If A_lerta("Mais Romaneios?",{"Sim","Nao"}) = 1
Set Index TO roma
REINDEX
Loop
Else
USE
RESTSCREEN(00,00,45,79,grvmsg)
Exit
Endif
Else
Tone(1700,1)
Setcursor(0)
If A_lerta("Mais Romaneios?",{"Sim","Nao"}, "w/bg") = 1
USE cadtora INDEX roma
REINDEX
Loop
Else
USE
RESTSCREEN(00,00,45,79,grvmsg)
Exit
Endif
Endif
Endif
Enddo
SET DELE ON
DbCloseAll()
Return NIL
/*****************************************/
/* Imprime o Romaneio depois de digitado */
Function Impr_ro2()
LOCAL L, PG, VARI, QTD, ROMAN, VEND, t_med
LOCAL VTOTAL :=000000.00
LOCAL VSUBTOTAL :=000000.00
LOCAL TOTALR :=000000.00
LOCAL SUBTTLR :=000000.00
Public toreiro
Set Index to esse, placa, roma
Reindex
OrdSetFocus(1)
roman=ro_imp
vend=ro_ven
Toreiro=ro_ven
vfret=ro_fre
Qtd:=0
VLP:=0
L := 0
PG :=1
vari:=esse
Set Filter to roman=roma
abre_imp()
Do While !eof()
If L = 0
? PADC("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ",80)
? PADC("ROMANEIO DE ENTRADA DE TORAS",80)
? Padc("Em "+ dtoc(DATE())+" …s "+ Left(time(),5),80)
? PADC("ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ",80)
? " P g.: " + Strzero(PG,3)
?
? " N§ romaneio :"+STRZERO(vroma,5)+Space(05)+"Toreiro: "+Alltrim(RO_ven)+Space(10)+"Freteiro: "+Alltrim(ro_fre)
IF !EMPTY(ro_plac1).OR.!EMPTY(ro_plac2)
? " Ve¡culo placa(s): "+ro_plac1+" / "+ro_plac2
ENDIF
?
? " ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
? " Placa Essˆncia Comp Diƒm T.desc Ttl M3 Vlr M3 Ttl R$"
? " ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
L:=10
Endif
If roma # roman
Skip
Endif
IF ALLTRIM(VARI) # ALLTRIM(ESSE)
If vsubtotal > 0
? " Subtotal: " + TRANSFORM(VSUBTOTAL,"@e 9,999.999")+" M3 Subtotal em R$ ...." + Transform(Subttlr, "@e 9,999.99")
VTOTAL+=VSUBTOTAL
VSUBTOTAL:=000000.00
VARI:=ESSE
TOTALR+=SUBTTLR
SUBTTLR:=000000.00
Else
vtotal+=vsubtotal
vsubtotal:=000000.00
vari:=esse
totalr+=subttlr
subttlr:=000000.00
Endif
Endif
IF ALLTRIM(VARI)=ALLTRIM(ESSE)
? Space(01),PLAC,Space(1),ESSE,TRANSFORM(COMP,"@e 9.99"),;
Space(1),TRANSFORM(DIAM,"@e 9.99"),Space(1),;
TRANSFORM(TDES,"@e 9.999"),Space(2),TRANSFORM(TTM3,"@e 9.999"),;
SPACE(03),TRANSFORM(VLM3,"@e 999.99"),SPACE(02),TRANSFORM(VLPG,"@e 999.99")
VSUBTOTAL+=TTM3
subttlr+=vlpg
Endif
DbSkip()
L++
Qtd++
IF EOF()
? " Subtotal: " + TRANSFORM(VSUBTOTAL,"@e 9,999.999")+" M3 Subtotal em R$ ...." + Transform(Subttlr, "@e 9,999.99")
VTOTAL+=VSUBTOTAL
Totalr+=Subttlr
VARI:=ESSE
Endif
If L >= 40
L = 0
Pg++
Eject
Endif
Enddo
? " ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
? " Total: "+Alltrim(transform(vtotal,"@E 9,999.999")) + " M3 / " + Alltrim(STR(QTD))+" tora(s) / " + " Valor pago: R$ " + Alltrim(Transform(Totalr, "@e 9,999.99"))
? " ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
// Cálculo da média . . .
t_med = vtotal/qtd
? " Média p/tora ..: " + Alltrim(transform(t_med,"@E 99.999")) + " M3"
? "[COMPRIME]"
? Space(3)+"System Wood v3.7 - by LM"
? "[NORMAL]"
fech_imp()
RUN USBPRINT C:\TEMP\RELA.TXT /SEL /DEL
Return NIL