*EDITION DES MOUVEMENTS DE STOCK
TITRE =" JOURNAL DES MOUVEMENTS DE STOCK"
DO TITRE
@ 6,0 CLEAR
SET fixed ON
DATE1=CTOD("  /  /  ")
DATE2=DATE1
VCODE ="    "                                     
@ 10,10 SAY "DATE DE DEBUT" GET date1
READ
@ 12,10 SAY "DATE DE FIN" GET date2 VALID(DATE2 > DATE1) 
@ 15,10 SAY "DONNEZ UN CODE PRODUIT OU RIEN POUR TOUS" GET VCODE PICTURE "@!"
READ
IF date1=CTOD("  /  /  ")
RETU
ENDI
REP="N"                           
SELECT 1
USE BGMV INDEX BGMVD
@ 6,0 CLEAR            
@ 10,5 SAY "REEDITION O/N" GET REP PICTURE "!"            
READ            
IF REP="N"
SET SAFE OFF
ZAP
APPEND FROM SDLIGNES for date>date1
apPEND FROM BGMVSTO
INDEX ON codearti+SUBSTR(DTOC(date),7,2)+SUBSTR(DTOC(date),4,2)+SUBSTR(DTOC(date),1,2)+STR(numfact,5,0) TO bgmvd
*INDEX ON CODEARTI+STR(100000-STOCK,5,0) TO BGMV
CLOSE DATA
@ 18,2 SAY"AVEC RECALCUL O/N" GET REP picture "@!"
READ
SELE 1
USE bgmv INDEX bgmvd
IF REP="O"
**RECONSTITUTION DES STOCKS
SELE 2
USE SDARTI INDEX SDARTI ALIAS AR
DO WHILE .NOT.EOF()
VSTOCK=00000000.00
SELE 2
CPD=CODEART
IF CODEART="   "                 
SKIP                 
LOOP                 
ENDI
@ 6,0 CLEAR
@ 14,5 SAY "CODE PRODUIT"
@ 14,20 SAY CPD
VSTOCK=ART1
@ 15,2 SAY "STOCK AU DEPART "
@ 15,20 SAY VSTOCK
SELE 1
SET EXAC OFF         
FIND &CPD
@ 6,0 clear
@ 10,10 say "Produit"
@ 10,20 say cpd
DO WHILE .NOT. EOF()
IF CODEARTI=CPD
IF TRIM(STR(NUMFACT,5,0)) # "99999"
VSTOCK=VSTOCK-Q2
*REPLACE STOCK WITH VAL(STR(VSTOCK,5,0)
ELSE
VSTOCK=VSTOCK+Q2
*REPLACE STOCK WITH VSTOCK
ENDI
REPLACE STOCK WITH VAL(STR(VSTOCK,10,2))
@ 12,10 say ""
? cpd ,numfact,vstock
ENDI
IF .NOT.EOF()
SKIP
ENDI
ENDDO
SELE 2
REPLACE AR->QUANTITE WITH VSTOCK
IF .NOT. EOF()
SKIP
ENDI
ENDDO
ENDI
ENDI      
SELE 1
SET TALK OFF
IF VCODE #"    "
SET FILTER TO CODEARTI =VCODE.AND.(DATE<=DATE2 .AND. DATE>=DATE1)
GO TOP
ELSE
SET FILTER TO (DATE<=DATE2 .AND. DATE>=DATE1)
go top    
ENDI
@ 6,0 CLEAR
set fixed on                      
TOTBT=0
TOTLT=0.00
TOTBTP=0
TOTLTP=0
TOTHLP=0.0000
totmag=0    
TOTMAGP=0    
TOTPBTP=0    
TOTPBT=0    
PP=1
GO TOP    
LL=1
REP="N"
@ 8,10 SAY "IMPRIMANTE O/N" GET REP picture "@!"
READ
IF REP="O"
SET PRINT ON
EJECT
ELSE     
DO BGAFFSTO.PRG    
RETU    
ENDI
SET EXACT ON
PRD=CODEARTI
DO WHILE .NOT. EOF()
IF PRD#CODEARTI
?
? "  TOTAL DES VENTES SUR LA PERIODE  BOUTEILLES :", TOTBTP,"soit;",STR(tothlp,6,2),"hl"
? "  TOTAL DES VENTES SUR LA PERIODE  DEMI BTLES :", TOTPBTP,"soit;"
? "  TOTAL DES VENTES SUR LA PERIODE  MAGNUMS    :", TOTMAGP,"soit;"
? "  TOTAL DES VENTES SUR LA PERIODE  EN LITRES  :", TOTLTP
IF REP="O"
EJECT
ppt=ppt+1
PP=1
ELSE
WAIT
ENDI
TOTBTP=0
TOTLTP=0.00
tothlp=0.00
totmagp=0
totpbtp=0
PRD=CODEARTI
ENDI
IF PROW() < 4
?? CHR(18)
?"JOURNAL DES MOUVEMENTS DE STOCK du ",DTOC(DATE1)," au ",DTOC(DATE2),"PAGE",STR(PP,3,0)
?
? "PRODUIT",PRD
?
? "DATE      NATURE OU NOM                   QUANTITE  STOCK          BTLES   FACT "
? CHR(27)+CHR(77)
? CHR(27)+CHR(120)+CHR(48)
?
ENDI
*PRD=CODEARTI
? DATE,NATURE,Q2,STOCK,COLISAGE
DO CASE
CASE COLISAGE=0.75
TOTBT=TOTBT+QUANTITE
TOTBTP=TOTBTP+QUANTITE
TOTHLP=TOTHLP+Q2                           
CASE COLISAGE=0.375
TOTPBT=TOTPBT+QUANTITE
TOTPBTP=TOTPBTP+QUANTITE
TOTHLP=TOTHLP+Q2
CASE COLISAGE=1.5
TOTMAG=TOTMAG+QUANTITE
TOTMAGP=TOTMAGP+QUANTITE
TOTHLP=TOTHLP+Q2
OTHER
IF NUMFACT #99999
IF COLISAGE #0
TOTLT=TOTLT+QUANTITE*COLISAGE
TOTLTP=TOTLTP+QUANTITE*COLISAGE
ENDI
ENDI
ENDC

*IF COLISAGE=0.75
*TOTBT=TOTBT+QUANTITE
*TOTBTP=TOTBTP+QUANTITE
*TOTHLP=TOTHLP+Q2
*ELSE
*IF NUMFACT #99999
*IF COLISAGE#0
*TOTLT=TOTLT+QUANTITE
*TOTLTP=TOTLTP+QUANTITE
*ENDI
*ENDI
*ENDI
??"",QUANTITE,"   ",NUMFACT
? "---------------------------------------------------------------------------------------------"
IF REP #"O"
wait
endi
IF PROW()<58
SKIP
LOOP
ELSE
PP=PP+1
IF REP="O"
EJECT
ELSE    
WAIT    
ENDI
SKIP
CLEAR TYPEAHEAD
LOOP
ENDI
ENDDO
?
? "  TOTAL DES VENTES SUR LA PERIODE  BOUTEILLES :", TOTBTP,"soit;",STR(tothlp,6,2),"l"
? "  TOTAL DES VENTES SUR LA PERIODE  DEMI BTLES :", TOTPBT,"soit;",STR(totPBT*0.375,6,2),"l"
? "  TOTAL DES VENTES SUR LA PERIODE  MAGNUMS    :", TOTMAG,"soit;",STR(totMAG*1.5,6,2),"l"
? "  TOTAL DES VENTES SUR LA PERIODE  EN LITRES  :", TOTLTP
?              
IF PROW() > 55
IF REP="O"
EJECT
ENDI
ENDI 
?
? "  CUMUL DES VENTES SUR LA PERIODE  BOUTEILLES :", TOTBT
? "  CUMUL DES VENTES SUR LA PERIODE  EN LITRES  :", TOTLT
?
SET FILTER TO             
*SUM QUANTITE FOR COLISAGE=0.75 TO TOTBT
*? " CUMUL DES BOUTEILLES ",TOTBT
IF REP="O"
? CHR(27)+CHR(64)
SET PRINT OFF
ENDI
set fixed off
CLEAR TYPEAHEAD    
wait
CLOSE DATA
RETU
