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

SAGE Discussion :

SPESCS - Champ calculé - somme de quantités d'un tableau alimenté par picking (SCS) [X3-V11]


Sujet :

SAGE

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2020
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 43
    Points : 37
    Points
    37
    Par défaut SPESCS - Champ calculé - somme de quantités d'un tableau alimenté par picking (SCS)
    Bonjour,

    J'ai ajouté un champ calculé ZTOTQTY dans un écran SCS1 - changement de stock, qui fait la somme des quantités QTYSTUDES des lignes de stock pickées pour le changement de stock.
    Principe : lorsque je picke une ligne dans le tiroir de gauche "Sélection de stock", la ligne s'ajoute dans le tableau de SCS1 (standard), et j'ajoute la quantité 1 QTYSTUDES de cette ligne de SCS1 dans ZTOTQTY. Je picke une 2eme ligne dans le tiroir de gauche "Sélection de stock", elle s'ajoute dans le tableau de SCS1, et j'additionne la quantité 2 QTYSTUDES de cette 2eme ligne de SCS1 avec la quantité 1 de la ligne 1 dans ZTOTQTY. Etc.

    Dans le SPESCS, j'ai donc ajouté :
    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
    #====================================================
    $ACTION
     
    Case ACTION
      When 'LIENS'        : Gosub LIENS
      When Default
    Endcase
    Return
    #====================================================
    $LIENS
          Local Decimal ZQTY
          ZQTY = 0
     
          If !clalev([F:ZSCS]) : Local File SCHGD [ZSCS] : Endif
     
          For [F:ZSCS] Where VCRNUM = [M:SCS1]VCRNUM
              ZQTY = ZQTY + [F:ZSCS]QTYSTUDES
          Next
     
          [M:SCS1]ZTOTQTY = ZQTY
          Affzo [M:SCS1]ZTOTQTY
    Return
    #====================================================
    Subprog AM_QTYSTUDES(VALEUR)
    Variable Decimal VALEUR
     
          Local Integer ZI
          Local Decimal ZQTY
     
          ZQTY = 0
          For [L]ZI =0 To ([M:SCS1]NBLIG)
              ZQTY = ZQTY + [M:SCS1]QTYSTUDES([L]ZI)
          Next ZI
          [M:SCS1]ZTOTQTY = ZQTY
          Affzo [M:SCS1]ZTOTQTY
     
    End
    #====================================================

    Logique donc, avec Subprog AM_QTYSTUDES (après-modif), cela ne calcule la somme ZTOTQTY qu'après modification du champ quantité QTYSTUDES du tableau, ou lors de l'enregistrement "final" du changement de stock.

    Ce que je souhaiterais, c'est que ce champ ZTOTQTY s'alimente au fur et à mesure que l'on alimente le tableau par le picking des lignes de stock :
    Je picke la ligne 1 de stock de 1000 UN, ZTOTQTY = 1000
    Puis je picke une 2eme ligne de 1500 UN, ZTOTQTY = 2500
    Puis une troisième de 2000 UN, ZTOTQTY = 4500
    Puis j'enlève la 2eme ligne de 1500 UN, ZTOTQTY = 3000
    etc...

    Savez vous si c'est compliqué et comment je pourrais le coder dans SPESCS ?

    Merci beaucoup,

    Cdt

  2. #2
    Membre actif
    Homme Profil pro
    Développeur, Analyste-programmeur ERP Sage X3, Crystal Report, Oracle, SQL, Formateur
    Inscrit en
    Mars 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur, Analyste-programmeur ERP Sage X3, Crystal Report, Oracle, SQL, Formateur

    Informations forums :
    Inscription : Mars 2007
    Messages : 154
    Points : 272
    Points
    272
    Par défaut
    Bonjour,

    Vous devriez mettre votre code dans les actions PICKE et DEPICK
    http://online-help.sageerpx3.com/erp...ct_picking.htm

    Cdlt,
    Piotr
    Analyste-Programmeur - Consultant technico-fonctionnel - Expert Crystal Report - Formateur - 14 ans d'expérience sur ERP Sage X3 - Nombreux modules, développements spécifiques et migrations réalisés - Contactez-moi par message privé pour vos projets X3 toute version

  3. #3
    Membre éclairé Avatar de PrinceCorwin
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mars 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 337
    Points : 692
    Points
    692
    Par défaut
    Bonjour,

    Je me permets juste une remarque.

    Comment gérer le cumul si les unités sont différentes ?

    Lors de la création d'un changement de stock, on peut désigner l'emplacement de départ, le statut et l’emplacement de destination, puis sélectionner les lignes de stock à mouvementer dans le tiroir "Sélection stocks".
    Si l'utilisateur sélectionne des pièces et des m², les quantités sont-elles cumulées ?

    Bonne réflexion
    Si ce message vous a aidé, appuyez sur le petit , ca fait toujours plaisir
    Merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2020
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Merci pour ces réponses.
    Je creuse la piste de PICKE et DEPICK.

    Excellente remarque pour les unités. Pour ce client, les unités sont uniquement en UN, et ce script est pour une transaction spécifique qui n'autorise le chgt de stock que pour un seul article dans un contexte très particulier, mais effectivement, pour "standardiser" il faudrait tenir compte de l'unité/conversion d'unité. Merci

    Cdt.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2020
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Bonjour,


    Pour faire suite à la discussion, j'ai ajouté le code dans PICK et DEPICK :

    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
    $PICKE
     
        If GFONCTION="GESSCS" and GFLAG="CHSST" 
         Local Integer ZI
         Local Decimal ZQTY
     
         ZQTY = 0
         For [L]ZI =0 To ([M:SCS1]NBLIG)
             ZQTY = ZQTY + [M:SCS1]QTYSTUDES([L]ZI)
         Next ZI
         [M:SCS1]ZTOTQTY = ZQTY
         Affzo [M:SCS1]ZTOTQTY
         Endif
     
    Return
     
    #=====================================================================================
     
    $DEPICK
     
        If GFONCTION="GESSCS" and GFLAG="CHSST" 
          Local Integer ZI
          Local Decimal ZQTY
     
          ZQTY = 0
          For [L]ZI =0 To ([M:SCS1]NBLIG)
               ZQTY = 0
          Next ZI
          [M:SCS1]ZTOTQTY = ZQTY
          Affzo [M:SCS1]ZTOTQTY
         Endif
     
    Return
    Dans PICK, le calcul ne se fait pas bien : la quantité de la 1ère ligne n'est jamais prise dans le total.
    Quand je sélectionne la 1ère ligne d'ailleurs, le champ total ne s'alimente pas.

    Dans DEPICK, cela ne régit pas du tout comme voulu en mettant le même code, donc je force la quantité à 0 pour obliger à resélectionner une ligne.

    Avez-vous une petite correction - piste à me proposer ?

    Merci beaucoup,

    Bonne fête de fin d'année à tous,

  6. #6
    Membre éclairé Avatar de PrinceCorwin
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mars 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 337
    Points : 692
    Points
    692
    Par défaut
    Bonjour,

    Il faut, dans le traitement spécifique, forcer l'application du standard avant.
    Comme le proposait Piotr, il faut passer par les actions $PICKE et $DEPICK, mais aussi l'action $AM_QTYSTUDES (après modif du champ, si jamais l'utilisateur change la valeur)
    Je vous propose ceci :
    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
     
    # Gestion du masque SCS1 (Spécifique)
     
    ######################################################################################
    ######################################################################################
    $ACTION
    Case ACTION
        When "PICKE"    : Gosub PICKE
        When "DEPICK"   : Gosub DEPICK
     When default
    Endcase
    Return
    ######################################################################################
    $PICKE
        Gosub ACTION From SUBSCS
        GPE=1
     
        Gosub CUMUL_QUANTITE
    Return
     
    $DEPICK
        Gosub ACTION From SUBSCS
        GPE=1
     
        Gosub CUMUL_QUANTITE
    Return
    ######################################################################################
    ######################################################################################
    Subprog AM_QTYSTUDES(VALEUR)
    Variable Decimal VALEUR
        Gosub CUMUL_QUANTITE
    End
     
    ######################################################################################
    $CUMUL_QUANTITE
    Local Integer II
     
        Raz [M:SCS1]ZTOTQTY
        For II = 0 To [M:SCS1]NBLIG
            [M:SCS1]ZTOTQTY += [M:SCS1]QTYSTUDES(II)
        Next 
        Affzo [M:SCS1]ZTOTQTY
    Return
    Bon dév'
    Si ce message vous a aidé, appuyez sur le petit , ca fait toujours plaisir
    Merci.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2020
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Bonsoir,

    Merci beaucoup, je teste ça dès demain et vous dis.

    Cdt.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2020
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2020
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    .

    Top.
    Mis en place ce weekend et fonctionne nickel.
    Le seul faite de "forcer l'application du standard avant" :

    (Gosub ACTION From SUBSCS
    GPE=1)

    a résolu le problème de la 1ère ligne sélectionnée jamais prise en compte.
    Je l'avais lu dans différents exemples, mais n'osais pas le faire (développeur c'est un métier )

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/03/2019, 22h36
  2. [2014] Création champ calculé (somme d'un champ d'une autre table avec clause where)
    Par Michel Trebor dans le forum Développement
    Réponses: 5
    Dernier message: 20/03/2017, 22h38
  3. Champ calculé somme de deux champs dans deux tables
    Par wulfram dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 19/10/2016, 22h38
  4. Champs calculé (somme)
    Par leportc dans le forum IHM
    Réponses: 2
    Dernier message: 14/06/2011, 12h04
  5. [AC-2003] Champs calculé : Somme conditionnelle: critère date
    Par jax54000 dans le forum IHM
    Réponses: 5
    Dernier message: 14/04/2010, 21h37

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