Forum PgiBat

PgiBat, le logiciel compagnon de Batigest

Vous n'êtes pas identifié(e).

#1 2013-07-13 09:56:08

briviere
Membre
Inscription : 2013-05-13
Messages : 3

Impression unité de stockage sur les états d'inventaire.

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

#2 2013-07-15 02:22:27

Jean-Pierre Leon
Administrateur
Inscription : 2013-03-12
Messages : 54

Re : Impression unité de stockage sur les états d'inventaire.

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.

Test d'édition de l'inventaire


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 :

Requête


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 !

Rubrique Code


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.

Rubrique Code


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

Pied de page des forums

Propulsé par FluxBB 1.5.3