*SAISIE DE LA FACTURE ENTETE
set century on
set delete on
NLFAC=40
NLPG=66
NLET=5
SET ESCAP OFF
SELECT 1
USE &cldb INDEX &clndx1,&clndx2 ALIAS CL
SELE 2
USE SDFACTUR INDEX SDFACTUR,FACTURN ALIAS FC
SELE 3
USE SDARTI INDEX SDARTI ALIAS AR
SELE 4
USE SDLIGNES INDEX SDLIGNES,SDLIGNE2 ALIAS LG
TITRE = "SAISIE DES FACTURES"
rep="N"            
DO WHILE .T.
set century on
sele 6
use tva 
go bott
tva[1]=tva->taux1/100
tva[2]=tva->taux2/100
use
Vnom = SPACE(34)
SELE 1
GO TOP        
do titre
@ 7,12 SAY "CLIENT " GET Vnom  picture "@!"
READ
IF Vnom =SPACE(34)
exit
endi
SET EXACT OFF
vrech =trim(Vnom)
VNUMTMP=VNUM           
seek Vrech
sET EXACT ON
IF EOF()
rep="N"
@ 10,12 SAY "Ce CLIENT est inexistant "
@ 12,12 SAY "VOULEZ VOUS LE CREER O/N " GET REP
READ
IF UPPER(REP)="O"
set order to 2
go bott
vcode=codecli
set order to 1
appen blank                
set format to bgfscli
read           
close format                           
REPLACE CODECLI WITH  VCODE+1 ,nomcli with vnom
WAIT
@ 6,0 CLEAR
ELSE
LOOP
ENDI
ENDI             
if Vnom #"*"
PRG="bgPRcli.PRG"
DO BGSELECT.PRG
@ 23,0 SAY " "    
IF CAR =KEYINS
*CLEAR AUTOMEM
set order to 2
go bott
append blank
vcode=codecli
set order to 1
SET FORMAT TO bgfscli
READ
replace cl->datefic with date(),cl->codecli with vcode+1,nomcli with vnom
ENDI
ENDI
VRECH=CL->NOMCLI       
SELE FC
SET ORDER TO 1
GO TOP
DO TITRE           
FIND &VRECH
*IF .NOT. EOF()
REP= "Q"
@ 10,12 SAY "CREATION OU MODIFICATION C/M " GET REP PICTURE "!"
READ
IF REP ="Q"
EXIT
ENDI
IF REP = "M"
@ 10,16 SAY "NUMERO FACTURE" GET VNUMTMP PICTURE "99999"
READ
SET ORDER TO 2
SEEK VNUMTMP
IF EOF()
? "NON TROUVE "
SET ORDER TO 1
LOOP
ELSE
SET ORDER TO 2
REPLACE fc->entete with cl->entete,FC->NOMCLI WITH CL->NOMCLI ,fc->prenomcli with cl->prenomcli
replace FC->AD1CLI WITH CL->AD1,FC->AD2CLI WITH CL->AD2,fc->ad3cli with cl->ad3
REPLACE FC->CPCLI WITH CL->CP,FC->VILLECLI WITH CL->VILLE,FC->PAYSCLI WITH CL->CLI1
REPLACE FC->codecli WITH CL->codecli,fc->cdrep with cl->coderep
DO BGDEBFAC               
DO SDMODFAC.PRG
SELE 4
DO BGVALIMP.PRG
SET ORDER TO 1
LOOP
ENDIF
ENDIF
*endif
GO BOTTOM          
VNUMprop=FC->NUMERO+1
APPE BLANK
numrec=recno()
do while .t.
set order to 2
@ 6,0 clear
@ 10,15 SAY "NUMERO FACTURE" GET VNUMTMP PICTURE "99999"
READ
if vnumtmp<vnumprop
loop
else
seek vnumtmp    
if .not. eof()    
@ 8,15 say"numero existant"
wait    
loop    
endi    
exit
endi
enddo
*VNUMTMP=FC->NUMERO
go numrec                               
replace fc->numero with vnumtmp,fc->datefact with date()
REPLACE fc->entete with cl->entete,FC->NOMCLI WITH CL->NOMCLI ,fc->prenomcli with cl->prenomcli
replace FC->AD1CLI WITH CL->AD1,FC->AD2CLI WITH CL->AD2,fc->ad3cli with cl->ad3
REPLACE FC->CPCLI WITH CL->CP,FC->VILLECLI WITH CL->VILLE,FC->PAYSCLI WITH CL->CLI1
REPLACE FC->codecli WITH CL->codecli,fc->cdrep with cl->coderep
flush             
REPLACE CODEBQ WITH "CAIS",MODEPAIE WITH "ES",TYPE WITH "N",caps with "O"
DO BGDEBFAC.PRG
SELE LG
* REM PASSAGE A LA SAISIE LIGNE
*
seek vnumtmp
if .not. eof()               
do sdmodfac               
else               
DO SDSLIGN0.PRG
endi               
DO BGVALIMP.PRG
*o sdvalid.prg
VNUMTMP=VNUMTMP+1
VNUM=VNUMTMP
ENDD
CLOSE DATA
SET SAFE OFF
SAVE ALL LIKE VNUM* TO NUMFAC
SET SAFE ON
RETU
