Changer le Prix Unitaire d'un IBODocumentVenteLigne3

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de zoocoral » Lun 10 Avr 2017 17:00

Bonjour,

je fais un document de retour à partir d'une facture, cela fonctionne bien.

Par contre, dans le bon de retour, je n'arrive pas à modifier le prix unitaire. Pas de pb pour la quantité, mais impossible pour le PU. Il me prend le prix de vente de l'article (9.99€), mais moi je veux changer ce prix, car dans ma facture j'ai un prix de vente différent (15.99€), pourquoi il ne change pas ?

Merci de votre aide

Code: Tout sélectionner
  Dim mLig As IBODocumentVenteLigne3 = CType(mProcessDoc.AddArticleDoubleGamme(enum1, enum2, 1), IBODocumentVenteLigne3)

                            For Each mLig In mDoc.FactoryDocumentLigne.List
                                mLig.SetDefaultRemise()
                                mLig.DL_Design = pLig.DL_Design

                                MsgBox("Before write" & montant_TTC) ' OK : AFFICHE 15.99€

                                mLig.DL_PrixUnitaire = montant_TTC
                                mLig.DL_Qte = 2
                                mLig.Write()

                                MsgBox("After write" & mLig.DL_PrixUnitaire) ' KO : AFFICHE 9.99€ !!!!
                            Next
Posteur actif
Posteur actif
 
Messages: 42
Inscription: Jeu 17 Déc 2015 18:04

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de romulus001 » Lun 10 Avr 2017 17:18

Bonjour,
Faire appel à la méthode write sans faire appel à setdefault est chose dangereuse car les champs non renseignés vont avoir la valeur null, de plus, il n'y a aucun recalcul qui est fait.
Soit vous remplacez write par writedefault, soit vous gardez l'appel de la méthode write mais vous ajoutez juste avant setdefault.
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de zoocoral » Lun 10 Avr 2017 17:37

romulus001 a écrit:Bonjour,
Faire appel à la méthode write sans faire appel à setdefault est chose dangereuse car les champs non renseignés vont avoir la valeur null, de plus, il n'y a aucun recalcul qui est fait.
Soit vous remplacez write par writedefault, soit vous gardez l'appel de la méthode write mais vous ajoutez juste avant setdefault.


merci pour le conseil, c'est corrigé, mais cela ne résout pas le problème initial :(
Posteur actif
Posteur actif
 
Messages: 42
Inscription: Jeu 17 Déc 2015 18:04

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de romulus001 » Lun 10 Avr 2017 17:42

En mettant la propriété TTC de l'objet de IBODocumentVenteLigne3 à True juste avant de faire appel à setDefault, ça donne quoi?
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de zoocoral » Mar 11 Avr 2017 08:24

romulus001 a écrit:En mettant la propriété TTC de l'objet de IBODocumentVenteLigne3 à True juste avant de faire appel à setDefault, ça donne quoi?


C'est pareil :(
Posteur actif
Posteur actif
 
Messages: 42
Inscription: Jeu 17 Déc 2015 18:04

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de ricil78 » Mar 11 Avr 2017 16:09

Avez-vous regarder si votre ligne n'a pas une remise d'activé automatiquement car vous utiliser
la commande mLig.SetDefaultRemise()
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de zoocoral » Mar 11 Avr 2017 16:45

ricil78 a écrit:Avez-vous regarder si votre ligne n'a pas une remise d'activé automatiquement car vous utiliser
la commande mLig.SetDefaultRemise()


Pas de remise :(
Posteur actif
Posteur actif
 
Messages: 42
Inscription: Jeu 17 Déc 2015 18:04

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de ricil78 » Mar 11 Avr 2017 19:26

ma méthode dans ce cas là

c'est de faire une saisie manuelle dans le doc et voir le résultat, pour voir si déjà au niveau appli sage ça donne le même résultat.

Après il y a aussi, une requête SQL avant et après et de comparer champ après champ pour voir les différences
Super Contributeur
Super Contributeur
 
Messages: 113
Inscription: Lun 20 Nov 2006 14:16

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de romulus001 » Mer 12 Avr 2017 11:44

je regarde ce que j'avais fais de mon côté, si vous remplacez

Code: Tout sélectionner
 Dim mLig As IBODocumentVenteLigne3 = CType(mProcessDoc.AddArticleDoubleGamme(enum1, enum2, 1), IBODocumentVenteLigne3)
                            For Each mLig In mDoc.FactoryDocumentLigne.List


par

Code: Tout sélectionner
For Each mLig as IBODocumentVenteLigne3 In mDoc.FactoryDocumentLigne.List


ça donne quoi?

Par contre, je crois que vous faites une erreur quand vous faites :
Code: Tout sélectionner
mLig.DL_PrixUnitaire = montant_TTC


Le champ DL_PrixUnitaire représente le prix unitaire du produit mais en HT, et non en TTC, peut être que vous avez mal nommé votre variable montant_TTC...
Sinon, il faudrait voir ce que ça donne dans l'ERP gestion commerciale, voir si le même soucis se reproduit ou pas.

EDIT : votre article est-il un produit à gamme?
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

de thn » Mar 25 Juil 2017 07:49

J'ai déjà eu ce problème avant et j'ai contourné le problème comme suit:
1- je récupère le prix unitaire de l'article
2- j’écris sur mon prix sur l'article
3- ajouter la ligne avec le prix introduit
4- écrire de nouveau l’Ancien prix sur l'article
Je sais c'est pas très catholique mais c'est la seule solution que j'ai trouvé pour contourné le problème
voici le code
Code: Tout sélectionner
Dim Test as Boolean = false
Dim Ptemp As Double = om_com.FactoryArticle.ReadReference(Article).AR_PrixVen
Dim ttcTemp as boolean = om_com.FactoryArticle.ReadReference(Article).AR_PrixTTC
                                            If (Ptemp <> Pvente) Then
                                                Test = True
                                                Dim art As IBOArticle3 = om_com.FactoryArticle.ReadReference(Art)
                                                art.AR_PrixVen = Pvente
                                                art.AR_PrixTTC = True
                                                art.Write()
                                            End If
vligne = OM_DocVenteEntete.FactoryDocumentLigne.Create()
vligne.SetDefaultArticle(om_com.FactoryArticle.ReadReference(article), Qte)
vligne.Write()
                                            If (Test) Then
                                                Dim art As IBOArticle3 = om_com.FactoryArticle.ReadReference(Article)
                                                art.AR_PrixVen = Ptemp
                                                art.AR_PrixTTC = ttcTemp
                                                art.Write()
                                            End If


Posteur néophyte
Posteur néophyte
 
Messages: 10
Inscription: Lun 24 Juil 2017 14:50


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité