PgiBat, le logiciel compagnon de Batigest
Vous n'êtes pas identifié(e).
Auriez-vous une solution afin d'obtenir l'impression de l'unité de stockage de l'élément sur l'impression des états d'inventaire ? (La rubrique est bien disponible dans la liste des éléments mais apparemment la liaison dans le script ne fonctionne pas).
Merci pour votre aide.
Hors ligne
Bonne question !
Comme je n'avais pas la réponse, j'ai pris le temps de faire quelques tests avec le dossier Exemple.
J'ai modifié la fiche de l'élément BB1002, et renommé UA, US et UV les unités d'achat, de stock, et de vente.
J'ai ensuite modifié le premier paramétrage du dossier "1. Valeur du stock" en y ajoutant les rubriques disponibles dans la liste selon la méthode classique du "glisser-lâcher" à la souris, et j'ai enfin lancé l'édition.
Dans la copie d'écran ci-dessous, on peut voir que tout marche bien pour le stock principal (les unités sont bien affichées), mais pas pour les stocks chantier.
Quand on analyse le script, on peut constater qu'il y a plusieurs traitements selon qu'il s'agit du stock principal ou du stock des chantiers,
Pour chaque Chantier
CodeChantier = Chantier.code
CodeElement = ""
Si SqlElt <> "" Alors
'On recherche directement les éléments qui font parti de ce stock chantier.
SqlCht = "SELECT ElementStock.* FROM ElementStock INNER JOIN ElementDef ON ElementStock.CodeElem = ElementDef.Code WHERE ElementStock.CodeChantier = '" & CodeChantier & "'"
SqlCht = SqlCht & " AND " & SqlElt
ListeChantier = Liste SqlCht
Sinon
'On recherche directement les éléments qui font parti de ce stock chantier.
ListeChantier = Liste "SELECT ElementStock.* FROM ElementStock WHERE ElementStock.CodeChantier = '" & CodeChantier & "'"
FinSi
Pour Chaque ListeChantier
CodeElement = ListeChantier.CodeElem
Lit Stock, CodeElement, CodeChantier
Lit Element, CodeElement
Si Stock.CodeElem = CodeElement ET Stock.CodeChantier = CodeChantier Alors
Imprimer Ligne
Total = Total + (Stock.PAMP× (Stock.QttAppro - Stock.QttConso))
FinSi
Boucler
Boucler
voir ci-dessous la syntaxe complète de la requête spécifique pour les chantiers :
Tout le problème vient de cette situation :
Les rubriques insérées dans le paramétrage ne réagissent pas pour cette requête.
En observant plus attentivement le paramétrage, on peut d'ailleurs voir que l'éditeur a été confronté au même problème, et c'est pour cela que les rubriques "Code élément" et "Libellé commercial" ne sont pas utilisées directement, mais sont placées dans des champs calculés !
La solution est donc de faire de même pour toute rubrique en provenance de la table ElementDef, et pour votre question liée aux unités :
placer les valeurs Element.UnitAchat, Element.UnitStock et Element.UnitVente dans des champs calculés.
On peut retenir de cet exemple qu'il n'est pas toujours facile de faire cohabiter dans les scripts la syntaxe propre aux paramétrages, principalement le pointage vers les tables, et les requêtes Sql. Un script entièrement écrit en Sql n'aurait pas posé ce problème, mais c'est une autre histoire !
Hors ligne