Generer et Imprimer(Imprimer) Factures par lot
Anonyme
Bonjour
Nous voulons solliciter votre aide à propos de la production de factures par lot.
Nous disposons d'une table periodique qui nous donne la liste des commandes mensuelles qui ont été placées durant le courant du mois .On dispose d'une validation pour transformer une commande en Facture. Maintenant, on aimerait parcourir cette table et transformer automatiquement chaque commande en facture et une fois terminée, on imprime toutes les factures.
Votre aide sera bien appréciée.
Cordialement

Contribution le : 30/05/2005 15:49
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour

Je vous invite à documenter la notion de filtre sur les fichiers HyperFile. En effet, pourquoi ne pas utiliser un filtre sur les dates de vos entêtes de commandes et parcourir alors tout simplement le fichier pour produire vos factures :
DateDebut et DateFin sont des champs de saisie au format Date (voir les superchamps pour la sélection des periodes).

cCleLignes est une chaine
cClé est une chaine = hFiltre(COMMANDE,CD_DATE,DateDebut,DateFin)
SI cCle="" ALORS RETOUR
HLitPremier(COMMANDE,cClé)
TANTQUE PAS HEnDehors(COMMANDE)
   // Filtre les lignes pour la commande en cours
   // on peut créer l'entête de la facture
   // ou le faire après l'envoie des lignes
   cCleLignes = hFiltre(COMMANDES_LIGNES,CL_NUM,COMMANDE.CD_NUM,COMMANDE.CD_NUM)
   HLitPremier(COMMANDE_LIGNE,cCléLigne)
   TANTQUE PAS HEnDehors(COMMANDE_LIGNE)
      // ...Traitement
      LigneDeCOmmande_Vers_Factures()
      // ...Fin Traitement
      HLitSuivant(COMMANDE_LIGNE,cCléLigne)
   FIN
   hDesActiveFiltre(COMMANDE_LIGNE)
   // Commande suivante
   HLitSuivant(COMMANDE,cClé)
FIN
HDésactiveFiltre(COMMANDE)


La forge est avec vous

Contribution le : 30/05/2005 17:51
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Anonyme
Salut R&B
On aimerait ajouter un indicateur qui nous renseignera si la commande a été facturée ou non .Si elle n'est pas facturée , on crée une requete avec datedebut ,datefin qui puisse nous renseigner sur l'ensemble des commandes non facturées.A partir de là ce qu'on veut faire c'est de transformer ces commandes automatiquement en factures.On pensait mettre une boucle qui va parcourir chaque ligne de la table et transformer cette commande en facture.Une fois que toutes commandes sont transformées en factures, on va demander à l'usager de s'il aimerait imprimer toutes les factures produites. on a pensé se servir d'une seconde boucle pour imprimer ces factures.
Rmq:on n'a pas une bonne maîtrise des filtres.
Amicalement

Contribution le : 31/05/2005 00:35
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour.
Pour ce faire, à condition que votre indicateur soit aussi une clé (avec doublon), il et possible d'ajouter une condition au filtre sur les dates :

cNumFacture est une chaine
cCleLignes est une chaine
cClé est une chaine = hFiltre(COMMANDE,CD_DATE,DateDebut,DateFin,"CD_FACTURE=''")
SI cCle="" ALORS RETOUR
HLitPremier(COMMANDE,cClé)
TANTQUE PAS HEnDehors(COMMANDE)
   // Filtre les lignes pour la commande en cours
   // on peut créer l'entête de la facture
   cNumFacture est une chaine = CréeEntêteFacture()
   // ou le faire après l'envoie des lignes
   cCleLignes = hFiltre(COMMANDES_LIGNES,CL_NUM,COMMANDE.CD_NUM,COMMANDE.CD_NUM)
   HLitPremier(COMMANDE_LIGNE,cCléLigne)
   TANTQUE PAS HEnDehors(COMMANDE_LIGNE)
      // ...Traitement
      LigneDeCOmmande_Vers_Factures()
      // ...Fin Traitement
      HLitSuivant(COMMANDE_LIGNE,cCléLigne)
   FIN
   hDesActiveFiltre(COMMANDE_LIGNE)
   // Récupère l'information comme quoi la commande est facturée
   ListeAjoute(LFacturees,COMMANDE.CD_NUM+TAB+cNumFacture)
   // Commande suivante
   HLitSuivant(COMMANDE,cClé)
FIN
HDésactiveFiltre(COMMANDE)

// Traite la liste des commandes facturées
i est un entier
POUR i = 1 A ListeOccurrence(LFacturees)
   SI HLitRecherchePremier(COMMANDE,CD_NUM,Extraitchaine(LFacturees[i],1),BlocageEcriture) ALORS
      COMMANDE.CD_FACTUREE=Extraitchaine(LFacturees[i],2)
      HModifie(COMMANDE)
   FIN
   // Etat de la facture (borné sur le numéro de facture)
   IImprimeEtat(EtatFacture,Extraitchaine(LFacturees[i],2),Extraitchaine(LFacturees[i],2))
FIN


Noter l'utilisation d'une liste remplie par programmation pour conserver les n° de commandes et factures. En effet, Si la modification des commandes est possible dans la boucle du filtre, c'est à éviter pour ne pas interférer avec ce contexte de parcours (qui tient compte du contenu de CD_FACTUREE).

Code saisi à titre indicatif et non testé.

Evidement il y a toujours la solution SQL. Mais dans le parcours de votre requete, soit vous devez l'exécuter en la rendant modifiable soit vous devrez alors vous positionner dans le fichier pour modfier les enregistrements de COMMANDE. En effet, le résultat de la requête de parcours est un contexte HyperFile branché sur la base et non un point d'accès au fichiers :
HExécuteRequête(NomRequete,hModifieFichier...)
Avec cet appel, la clause HModifie est alors dsponible sur le résultat de la requête.

Enfin la requete de sélection des commandes pourrait ressembler à :
"SELECT * FROM Commande
WHERE COMMANDE.CD_DATE BETWEEN {Param1} AND {Param2}
AND CD_FACTUREE=''"

La Forge est avec vous

Contribution le : 31/05/2005 08:16
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Anonyme
Salut R&B
Le code que tu nous propose est tres interessant cependant vu notre connaissance tres modeste en windev,on ne comprend pas par ou commencer:
1)Faudrait il avoir la table Commande et mettre deux champs: DateDebut,DateFin et aussi un bouton pour filtrer ces enregistrements dans un premier temps.Ensuite avoir un seconde bouton pour transformer les bons de commandes en factures.
quelle sera la structure du code pour :
CréeEntêteFacture()
LigneDeCOmmande_Vers_Factures()
Car j'ai déja un algorithme qui me transforme un bon de commande en facture.Je dois etre a mesure de le subdiviser en deux procedures:
-une pour CreeEnteteFacture()
-l'autre pour lignedecommande_Vers_Factures()
J'ai vu que la varaible "LFacturees" n'est déclarée nulle part.
Amicalement

Contribution le : 31/05/2005 14:06
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Oui effectivement.

Dans le bouton de création de vos factures, vous pouvrez parfaitement ré-exploiter votre algorythme existant (ce que j'ai mis précédement sert uniquement d'indication).

Juste une chose : il serait utile que cet algorythme ne soit en charge du parcours du fichier COMMANDE. En effet, le contexte HyperFile de ce dernier est soumis au filtre sur les date et l'affichage dans le cham table.
Je vous invite à assurer un parcours du fichier filtré des commande dans votre bouton d'envoie en facture et à faire en sorte que votre algorytme utilise l'enregistrement courant du fichier commande. Vous serez alors dispensé de gérer des contexte HyperFile sur un même fichier.

LFacturees était un champ liste (ListeAjoute) remplis par programmation pour conserver la liste des commandes et des numéros de factures correspondant à la création des entête pour le cas ou ces deux étapes (entête et lignes) sont crées séparément.

Contribution le : 31/05/2005 14:36
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Generer et Imprimer(Imprimer) Factures par lot
Anonyme
Merci beaucoup de ces indications, on ne manquera pas de vous tenir informer de nos resultats
Encore une fois un gros merci

Contribution le : 31/05/2005 16:02
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2