IMPORT

Description

Cette action est appelée pour chaque enregistrement de chaque table déclaréedans le 1er onglet du modèle. Cette action intervient lorsque la classe [M] aété chargée. La classe [F] contient l'enregistrement à importer. Cette action intervient avant la simulation de la saisie.

Action appelée depuis le traitement généré par l'import WWIxxxxxxx.

Import OBJet

Simple, Tableau, Combiné

Cette action n'est pas appelée sur un import sans OBJet.

Utilisation

    Bien que cela soit possible dans l'action AP_IMPORT, on peut encore compléter la classe [F] de l'enregistrement à importer 

   On peut charger par avance des informations dans la classe [M] parce qu'il n'y aura pas d'automatisme du superviseur pour ces informations ( ex : fenêtre supplémentaire de l'OBJet, champ invisible ou affiché, variable de bas de tableau ). 

    Sur un OBJet Entête - détail, identifier pour chaque détail, si on est en création, modification, suppression ou insertion en milieu de tableau.

    Eviter l'import d'un enregistrement de niveau 1, ainsi que tous ces enregistrements de niveau inférieur, on positionnant la variable OK = 0. 

Quelques variables utiles dans cette action :

[L]TRTMSK : traitement généré de l'écran
[L]IMPFIC
  : abréviation de la table courante

[S]nolign : on la positionnera à zéro pour la création d'une ligne détail sinon on l'alimente par le numéro de ligne détail à modifier.
[L]
status  : on identifie la suppression de ligne détail, par le status = 65, l'insertion ligne en milieu de tableau par le status=72 

 

Exemple

Dans l'import de commande de vente, on peut être amené à importer un champ contenant le numéro de client suivi du caractère "~" suivi d'autres données. Pour charger le numéro de client dans la classe [F], on utilise l'action IMPORT suivante :

$IMPORT
Case IMPFIC
  When "SOH"
     If G_GIMP6
        I1=instr(1,GIMP(6),"~")
        If I1 [F:SOH]BPCORD=left$(GIMP(6),I1-1) Else [F:SOH]BPCORD=GIMP(6) Endif
     Endif
  When Default
Endcase
Return

Dans l'import de commande de vente, on a la possibilité d'importer l'adresse du client commande dans la table des commandes, si la raison sociale est paramétrée dans le modèle d'import. Ces informations ne sont pas saisissables dans un onglets de l'OBJet des commandes, mais dans un écran à part appelé depuis la barre de menu. Il n'y a donc pas d'automatisme du superviseur, pour le chargement de la classe [M]. Donc, dans l'action LIENS, on charge la classe [M]  par la classe [F] de l'enregistrement à modifier, puis dans l'action IMPORT, on charge la classe [M]  par la classe [F] de l'enregistrement à importer. 

If GREP="C" Raz [M:ADB1], [M:ADB2], [M:ADB3] Endif
If G_BPCNAM
   [M:ADB1]ADBBPR = [F:SOH]BPCORD
   [M:ADB1]BPRNAM(0) = [F:SOH]BPCNAM(0)
   [M:ADB1]BPRNAM(1) = [F:SOH]BPCNAM(1) 
   [M:ADB1]BPAADDLIG(0) = [F:SOH]BPCADDLIG(0)
   [M:ADB1]BPAADDLIG(1) = [F:SOH]BPCADDLIG(1)
   [M:ADB1]BPAADDLIG(2) = [F:SOH]BPCADDLIG(2)
   [M:ADB1]POSCOD = [F:SOH]BPCPOSCOD
   [M:ADB1]CTY = [F:SOH]BPCCTY
   [M:ADB1]SAT = [F:SOH]BPCSAT
   [M:ADB1]CRY = [F:SOH]BPCCRY
   [M:ADB1]CRYNAM = [F:SOH]BPCCRYNAM
Endif

Dans l'import de commande de vente basé sur un OBJet entête détail, lorsqu'on est en modification de commande, les opérations possibles pour les lignes de cette commande peuvent être la création, la modification ou la suppression. Dans notre cas, la quantité à zéro sur une ligne de détail indique qu'il faut supprimer la ligne. On positionnera alors le status à 65 et on exécutera les actions nécessaires dans cette action IMPORT.  

Case IMPFIC
  When "SOQ", "SOP" :
     Gosub IMP_DECLARE From TRTX3IMP
     # --> Il faut déterminer s'il s'agit d'une nouvelle ligne ou pas
     If GREP = "M"
        ICLEPRIM (0) = "SOPLIN"
        ICLEPRIM (1) = "IMPNUMLIG" : ICLEBRK(1)=1
        ICLEPRIM (2) = "ITMREF"       : ICLESEC(2)="SHIDAT" : TSEC(2)="DSHIDAT"
        ICLEPRIM (3) = "ITMREF"
        NBASTAB = "NBLIG"
        Gosub RECHERCHE_LIGNE From TRTX3IMP
        If nolign=0 : G_NLDET=1 : Endif
        # --> Traitement de suppression d'une ligne
        Call TST_CHAMP(IMPFIC,"QTY",OKCHAMP) From SUBIMPOBJ
        If OKCHAMP & [F:SOQ]QTY = 0 & nolign <> 0
           status=65
           # --> Contrôle de suppression de lignes
           Call C_NBLIG From W1SOH4
           If mkstat OK=0 : Return : Endif
           Call AVANT_NBLIG From W1SOH4
           Call APRES_NBLIG From W1SOH4
        Endif
        Return
     Endif
Endcase

Dans l'OBJet de commande de vente, le numéro de commande est activé ou désactivé en fonction du type de commande. Comme la simulation de saisie traite les champs séquentiellement dans l'ordre dans lequel ils sont définis sur l'écran. Dans cette action IMPORT on est obligé d'activer ou désactiver le numéro de commande.

# En fonction de GMANCOU, il faut réactiver ou pas SOHNUM
If GREP="C"
   Setmode INBAFF,IAFFCOD,IAFFMASK,IAFFCHP,IAFFIND,IAFFTXT,IAFFRANG,IAFFOPT1,IAFFOPT2
   If GMANCOU=1
      Diszo [M:SOH0]SOHNUM
   Elsif GMANCOU=2
      Actzo [M:SOH0]SOHNUM
   Endif
   Setmode
Endif