Page 1 sur 1

Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Lun 10 Avr 2017 17:00
de zoocoral
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

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Lun 10 Avr 2017 17:18
de romulus001
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.

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Lun 10 Avr 2017 17:37
de zoocoral
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 :(

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Lun 10 Avr 2017 17:42
de romulus001
En mettant la propriété TTC de l'objet de IBODocumentVenteLigne3 à True juste avant de faire appel à setDefault, ça donne quoi?

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mar 11 Avr 2017 08:24
de zoocoral
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 :(

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mar 11 Avr 2017 16:09
de ricil78
Avez-vous regarder si votre ligne n'a pas une remise d'activé automatiquement car vous utiliser
la commande mLig.SetDefaultRemise()

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mar 11 Avr 2017 16:45
de zoocoral
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 :(

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mar 11 Avr 2017 19:26
de ricil78
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

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mer 12 Avr 2017 11:44
de romulus001
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?

Re: Changer le Prix Unitaire d'un IBODocumentVenteLigne3

MessagePosté: Mar 25 Juil 2017 07:49
de thn
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