IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

problemes d'enregistrement des lignes de la facture et mise à jour du stock


Sujet :

WinDev

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut problemes d'enregistrement des lignes de la facture et mise à jour du stock
    Bonjour
    Voici le code de mon bouton valider
    En effet lorsque j’enregistre une commande, les informations sont bien enregistrées dans la commande et de la table ligne commande. Et si la commande est payé alors
    Les informations sont aussi enregistrés dans la table facture.
    Mais par contre les informations de ma table ligne facture ne sont enregistrées et la mise à jour du stock n’est pas faite. Cette partie du code ne s’exécute pas.
    Je suis perdu si une personne peut m’aider.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    SI TABLE_LigneCde..Occurrence = 0 ALORS
    	Erreur("Vous devez renseigner au moins une ligne de commande")
    	RETOUR
    FIN
     
    SI COMBO_IDModeLivraison <= 0 ALORS
    	Erreur("Vous devez indiquer un mode de livraison")
    	RepriseSaisie(COMBO_IDModeLivraison)
    FIN
    SI COMBO_IDModeReglement <= 0 ALORS
    	Erreur("Vous devez indiquer un mode de règlement")
    	RepriseSaisie(COMBO_IDModeReglement)
    FIN
    SI COMBO_EtatCommande <= 0 ALORS
    	Erreur("Vous devez indiquer l'état de la commande")
    	RepriseSaisie(COMBO_EtatCommande)
    FIN
     
    // Lecture des informations saisies
    EcranVersFichier()
     
    // Lecture du client
    // Mémorise les informations annexes :
    // - Adresse de livraison du client
    HLitRecherchePremier(Adr_Livraison, NumClient, Client.NumClient)
    SI HTrouve(Adr_Livraison) ALORS 
    	Commande.IDAdresseLivraison = Adr_Livraison.IDAdresseLivraison
    FIN
    // - Adresse de facturation du client
    HLitRecherchePremier(Adr_Facturation, NumClient, Client.NumClient)
    SI HTrouve(Adr_Facturation) ALORS 
    	Commande.IDAdresseFacturation = Adr_Facturation.IDAdresseFacturation
    FIN
     
    // Ajoute / modifie l'enregistrement
    HEnregistre(Commande)
     
    nOrdre est un entier = 1
    // Enregistrement des lignes de commandes
    POUR TOUTE LIGNE DE TABLE_LigneCde
    	// On affecte l'identifiant de Commande dans les colonnes de la table des LigneCde
    	TABLE_LigneCde.COL_NumCommande = Commande.NumCommande
    	// On modifie l'ordre des lignes de commande pour mémoriser l'ordre souhaité par l'utilisateur
    	TABLE_LigneCde.COL_OrdreAffichage = nOrdre
    	// Enregistrement de la table
    	TableEnregistre(TABLE_LigneCde)	
    	nOrdre++
    FIN
     
    // Commande réglée ?
    SI INT_CommandeReglee ALORS
    	// Recherche la facture correspondante
    	HLitRecherchePremier(Facture, NumCommande, Commande.NumCommande)
    	// Pas de facture correspondante
    	SI HTrouve(Facture) = Faux ALORS
    		// Création de la facture correspondante
    		HRAZ(Facture)
    		Facture.DateFacture = DateDuJour()
    		Facture.IDAdresseFacturation = Commande.IDAdresseFacturation
    		Facture.IDModeReglement = Commande.IDModeReglement
    		Facture.NumClient = Commande.NumClient
    		Facture.NumCommande = Commande.NumCommande
    		Facture.Observations = Commande.Observations
    		Facture.TotalHT = Commande.TotalHT
    		Facture.TotalTVA = Commande.TotalTVA
    		Facture.TotalTTC = Commande.TotalTTC
    		HAjoute(Facture)
    		// Ligne de facture correspondante
    		POUR TOUTE LigneCde AVEC NumCommande = Commande.NumCommande
    			HRAZ(LigneFac)
    			LigneFac.IDLigneCde = LigneCde.IDLigneCde
    			LigneFac.LibProd = LigneCde.LibProd
    			LigneFac.NumFacture = Facture.NumFacture
    			LigneFac.PrixVente = LigneCde.PrixVente
    			LigneFac.Quantite = LigneCde.Quantite
    			LigneFac.Reference = LigneCde.Reference
    			LigneFac.Remise = LigneCde.Remise
    			LigneFac.TauxTVA = LigneCde.TauxTVA
    			LigneFac.OrdreAffichage = LigneCde.OrdreAffichage
    			HAjoute(LigneFac)
    		FIN
    		// Ajout du règlement
    		HRAZ(Règlement)
    		Règlement.DateReglement = DateDuJour()
    		Règlement.IDModeReglement = Facture.IDModeReglement
    		Règlement.NumFacture = Facture.NumFacture
    		HAjoute(Règlement)
    	FIN
     
    FIN
     
    // Valeur de retour de la fenêtre
    MaFenêtre..ValeurRenvoyée = Vrai

  2. #2
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Donc dans votre société :
    - Une commande réglée devient systématiquement une facture.
    - Il n'y a pas de facture non réglées
    - Une commande reste en commande une fois mise en facture
    - Pas de notion de livraison chez vous
    - Une commande est toujours réglée en totalité ou pas du tout.

    J'avoue que tout celà me semble bien original.
    (quel type d'entreprise et dans quel pays ?)

    Quand à la mise à jour du stock, je n'en vois nulle trace dans votre code.
    Ce qui explique peut-être qu'elle ne se fasse pas.

    Il y aurait bien d'autres points critiques :
    - Si pas d'adresse de livraison ni adresse de facturation, c'est pas grave, on continue tout de même.
    - Après chaque HAjoute, pas de test pour vérifier que tout se passe bien, il est vrai que c'est du code pour rien.
    - pas de test non plus sur HEnregistre, à quoi bon ?

    Bref, pour moi, y'a du boulot...

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut
    Bonsoir
    merci d'avoir ris votre temps pour répondre à message,
    ce que vous dites si vous regarde le code vous avez voir que cela est pris en compte, il a une adresse de livraison et de facturation, il ya fait des testes que j'ai enlevé, car la partie qui s'excute pas est la partie concernant l'enregistre dans la table ligneCde ( ligne de commande). j'ai beau tester malheureusement j'ai pas l'erreur ou l'omission qui fait que cela ne passe pas.
    c'est cette partie du code qui ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                   // Ligne de facture correspondante
    		POUR TOUTE LigneCde AVEC NumCommande = Commande.NumCommande
    			HRAZ(LigneFac)
    			LigneFac.IDLigneCde = LigneCde.IDLigneCde
    			LigneFac.LibProd = LigneCde.LibProd
    			LigneFac.NumFacture = Facture.NumFacture
    			LigneFac.PrixVente = LigneCde.PrixVente
    			LigneFac.Quantite = LigneCde.Quantite
    			LigneFac.Reference = LigneCde.Reference
    			LigneFac.Remise = LigneCde.Remise
    			LigneFac.TauxTVA = LigneCde.TauxTVA
    			LigneFac.OrdreAffichage = LigneCde.OrdreAffichage
    			HAjoute(LigneFac)
    		FIN

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux commencer par poser un point d'arrêt sur la ligne POUR TOUT, puis vérifier le contenu des variables (par exemple Commande.NumCommande).
    Tu auras peut-être un début de piste.

    Tatayo.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 219
    Points : 76
    Points
    76
    Par défaut
    Bonjour
    je pense que je vais resoudre le problme autrement
    en enregistrant uniquement les commandes et puis de la liste des commande, facturer les bon de commande validés et qui doivent être facturé

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Points : 64
    Points
    64
    Par défaut
    Juste une question...
    La facture n'est-elle pas juste l'état d'une commande à un instant T ?
    Dans notre ERP c'est le cas... Je serait surpris que tu ne rencontres pas de soucis dans ton process par la suite (Stats de vente par exemple)

    Devis -> Commande - Facture (= cycle de vie)

    bon courage tout de même

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Essayez avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
      // Ligne de facture correspondante
    		POUR TOUTE LigneCde AVEC NumCommande = Commande.NumCommande
    			HRAZ(LigneFac)
    			LigneFac.IDLigneCde = LigneCde.IDLigneCde
    			LigneFac.LibProd = LigneCde.LibProd
    			LigneFac.NumFacture = Facture.NumFacture
    			LigneFac.PrixVente = LigneCde.PrixVente
    			LigneFac.Quantite = LigneCde.Quantite
    			LigneFac.Reference = LigneCde.Reference
    			LigneFac.Remise = LigneCde.Remise
    			LigneFac.TauxTVA = LigneCde.TauxTVA
    			LigneFac.OrdreAffichage = LigneCde.OrdreAffichage
                            Info (   LigneFac.OrdreAffichage )
    			si pas HAjoute(LigneFac) alors 
                                erreur ( herreur( ) ) 
                            fin
    		FIN
    La ligne info () permettra de vérifier que le programme passe bien par cette boucle ; vous devrez l'enlever plus tard
    La ligne erreur() vous permettra de vérifier si pour une raison ou une autre, le Hajoute() plante. Cette ligne, il faudra absolument la laisser dans la version finale du programme.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. [accent] probleme d'enregistrement des accents
    Par CPI_en_mousse dans le forum Hibernate
    Réponses: 21
    Dernier message: 16/02/2009, 15h02
  2. Réponses: 6
    Dernier message: 18/03/2008, 11h09
  3. Réponses: 10
    Dernier message: 07/03/2007, 18h46
  4. probleme d'enregistrement des accents dans la BDD
    Par Gloup dans le forum Installation
    Réponses: 1
    Dernier message: 09/07/2006, 21h07
  5. Probleme pour effacer des lignes
    Par Thargor dans le forum Oracle
    Réponses: 7
    Dernier message: 12/10/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo