|
SAGE GESCOM 100 SQL WINDEV |
Débuté par stéphane, 30 déc. 2005 11:24 - 1 réponse |
| |
| | | |
|
| |
Posté le 30 décembre 2005 - 11:24 |
Bonjour, Je suis sur un projet Windev9 effectuant des opérations sur les fichiers d'une BD Sage L100 SQL. Je transforme des pièces de vente de BC en BL. Je travaille avec des articles à gammes, sérialisés et à lot. J'effectue avec succès les opérations d'ajout et de modification sur les fichiers.
La validité de ces opérations est vérifiée, cependant par l'intermédiaire de Sage GESCOM, l'affichage n'est mis à jour que partiellement. Par exemple, les numéro de lot n'apparaissent pas lorsque je consulte la pièce transformée.
Questions: 1/ Quelqu'un peut-il m'aider ? 2/ Comment faire pour obtenir un affichage raffrachit. 3/ Dois-je utiliser les TRIGGERS ? 4/ Les requettes SQL suffisent-elles ? 5/ En SQL, la mise à jour des stock est-elle gérée par SAGE ou doit-on gérer la ventilation du stock à travers toutes les tables les gérant ? 6/ Est-il possible de déclencher le rafraichissement des fenêtres ouvertes dans la Gescom : par exemple la liste pièces de ventes; le statut des pièces ...
Merci par avance à ceux qui me consacreront un peu de temps.
Vu la période, mes Meilleurs voeux à ceux qui liront ce message. |
| |
| |
| | | |
|
| | |
| |
Posté le 02 janvier 2006 - 10:09 |
Un extrait de mes codes à ce sujet
PROCEDURE F_DOCLIGNE_Ajoute_ligne()
::MessageErreurSAGE=""
Requete est chaîne = "INSERT INTO f_docligne ("+...
"do_domaine,do_type,ct_num,do_piece,dl_pieceBC,dl_pieceBL,do_date,dl_dateBC,dl_dateBL,dl_ligne,do_ref,dl_TNomencl,dl_TRemPied,dl_tremexep,ar_ref,dl_design,dl_qte,dl_qteBC,dl_qteBL,"+...
"dl_PoidsNet,dl_PoidsBrut,dl_Remise01REM_Valeur,dl_Remise01REM_Type,dl_Remise02REM_Valeur,dl_Remise02REM_Type,dl_Remise03REM_Valeur,dl_Remise03REM_Type,dl_PrixUnitaire,dl_PUBC,dl_Taxe1,"+...
"dl_TypeTaux1,dl_TypeTaxe1,dl_Taxe2,dl_TypeTaux2,dl_TypeTaxe2,re_no,ag_no1,ag_no2,dl_PrixRU,dl_CMUP,dl_MvtStock,gl_no,af_RefFourniss,eu_Enumere,eu_Qte,dl_TTC,de_no,dl_noref,"+...
"dl_TypePL,dl_PUDevise,dl_PUTTC,dl_no,do_DateLivr,ca_num,dl_Taxe3,dl_TypeTaux3,dl_TypeTaxe3,dl_Frais,dl_Valorise,ar_RefCompose,dl_NonLivre,ac_refClient,dl_MontantHT,dl_MontantTTC,"+...
"dl_FactPoids,dl_Escompte, qte_autorisee, qte_envoyee_bics"+...
") VALUES ("+...
::F_DOCLIGNE_do_domaine+","+::F_DOCLIGNE_do_type+","+:EntreCotes(::F_DOCLIGNE_ct_num)+","+:EntreCotes(::F_DOCLIGNE_do_piece)+","+...
:EntreCotes(::F_DOCLIGNE_dl_pieceBC)+","+:EntreCotes(::F_DOCLIGNE_dl_pieceBL)+","+:EntreCotes(::F_DOCLIGNE_do_date)+","+...
:EntreCotes(::F_DOCLIGNE_dl_dateBC)+","+:EntreCotes(::F_DOCLIGNE_dl_dateBL)+","+::F_DOCLIGNE_dl_ligne+","+:EntreCotes(::F_DOCLIGNE_do_ref)+","+...
::F_DOCLIGNE_dl_TNomencl+","+::F_DOCLIGNE_dl_TRemPied+","+::F_DOCLIGNE_dl_tremexep+","+:EntreCotes(::F_DOCLIGNE_ar_ref)+","+...
:EntreCotes(::F_DOCLIGNE_dl_design)+","+::F_DOCLIGNE_dl_qte+","+::F_DOCLIGNE_dl_qteBC+","+::F_DOCLIGNE_dl_qteBL+","+::F_DOCLIGNE_dl_PoidsNet+","+...
::F_DOCLIGNE_dl_PoidsBrut+","+::F_DOCLIGNE_dl_Remise01REM_Valeur+","+::F_DOCLIGNE_dl_Remise01REM_Type+","+::F_DOCLIGNE_dl_Remise02REM_Valeur+","+...
::F_DOCLIGNE_dl_Remise02REM_Type+","+::F_DOCLIGNE_dl_Remise03REM_Valeur+","+::F_DOCLIGNE_dl_Remise03REM_Type+","+::F_DOCLIGNE_dl_PrixUnitaire+","+...
::F_DOCLIGNE_dl_PUBC+","+::F_DOCLIGNE_dl_Taxe1+","+::F_DOCLIGNE_dl_TypeTaux1+","+::F_DOCLIGNE_dl_TypeTaxe1+","+::F_DOCLIGNE_dl_Taxe2+","+...
::F_DOCLIGNE_dl_TypeTaux2+","+::F_DOCLIGNE_dl_TypeTaxe2+","+::F_DOCLIGNE_re_no+","+::F_DOCLIGNE_ag_no1+","+::F_DOCLIGNE_ag_no2+","+...
::F_DOCLIGNE_dl_PrixRU+","+::F_DOCLIGNE_dl_CMUP+","+::F_DOCLIGNE_dl_MvtStock+","+::F_DOCLIGNE_gl_no+","+:EntreCotes(::F_DOCLIGNE_af_RefFourniss)+","+...
:EntreCotes(::F_DOCLIGNE_eu_Enumere)+","+::F_DOCLIGNE_eu_Qte+","+::F_DOCLIGNE_dl_TTC+","+::F_DOCLIGNE_de_no+","+::F_DOCLIGNE_dl_noref+","+...
::F_DOCLIGNE_dl_TypePL+","+::F_DOCLIGNE_dl_PUDevise+","+::F_DOCLIGNE_dl_PUTTC+","+::F_DOCLIGNE_dl_no+","+:EntreCotes(::F_DOCLIGNE_do_DateLivr)+","+...
:EntreCotes(::F_DOCLIGNE_ca_num)+","+::F_DOCLIGNE_dl_Taxe3+","+::F_DOCLIGNE_dl_TypeTaux3+","+::F_DOCLIGNE_dl_TypeTaxe3+","+...
::F_DOCLIGNE_dl_Frais+","+::F_DOCLIGNE_dl_Valorise+","+:EntreCotes(::F_DOCLIGNE_ar_RefCompose)+","+::F_DOCLIGNE_dl_NonLivre+","+...
:EntreCotes(::F_DOCLIGNE_ac_refClient)+","+::F_DOCLIGNE_dl_MontantHT+","+::F_DOCLIGNE_dl_MontantTTC+","+::F_DOCLIGNE_dl_FactPoids+","+...
::F_DOCLIGNE_dl_Escompte+","+::F_DOCLIGNE_qte_autorisee+","+::F_DOCLIGNE_qte_envoyee_bics+...
")"
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Requête AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur+RC+Requete
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
SI SansEspace(::F_DOCLIGNE_ar_ref)="ZPORT" ALORS RENVOYER Vrai
SELON c_SAGE::F_DOCLIGNE_do_type
CAS 1
// BON DE COMMANDE
// Réservation du stock dans le fichier F_ARTSTOCK
SI PAS SQLExec("UPDATE f_artstock SET as_qteres=as_qteres+"+::F_DOCLIGNE_dl_qte+" WHERE ar_ref="+:EntreCotes(::F_DOCLIGNE_ar_ref),"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Résa stock AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Query512")
CAS 2
// BON DE LIVRAISON
SI ::F_DOCLIGNE_dl_pieceBC<>"" ALORS
// Mise à jour des stocks réservés
Requete="UPDATE f_artstock SET as_qteres=as_qteres-"+::F_DOCLIGNE_dl_qte+" WHERE ar_ref="+:EntreCotes(::F_DOCLIGNE_ar_ref)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp résa stock AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
// Mise à jour de la ligne de commande
// si pas sqlexec("UPDATE f_docligne SET dl_qte=dl_qte-"+::F_DOCLIGNE_dl_qte+", qte_envoyee_bics=qte_envoyee_bics-"+::F_DOCLIGNE_dl_qte+" WHERE ar_ref="+:EntreCotes(::F_DOCLIGNE_ar_ref)+" AND do_piece="+:entrecotes(::F_DOCLIGNE_dl_pieceBC),"Query512") ALORS
Requete="UPDATE f_docligne SET dl_qte=dl_qte-"+::F_DOCLIGNE_dl_qte+",dl_qtebl=dl_qtebl-"+::F_DOCLIGNE_dl_qte+", qte_envoyee_bics=0 WHERE ar_ref="+:EntreCotes(::F_DOCLIGNE_ar_ref)+" AND do_piece="+:EntreCotes(::F_DOCLIGNE_dl_pieceBC)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp résa stock AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
// Suppression des lignes de commandes vides
Requete="DELETE FROM f_docligne WHERE dl_qte<=0 AND do_piece="+:EntreCotes(::F_DOCLIGNE_dl_pieceBC)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp lignes cdes vides AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur+RC+RC+requete
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
// Suppression des commandes vides
NbLignes est entier = 0
requete="SELECT count(do_piece) FROM f_docligne WHERE do_piece="+:EntreCotes(::F_DOCLIGNE_dl_pieceBC)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp lignes cdes vides AJOUT DOCLIGNE "+SQL.Erreur+" - "+SQL.MesErreur+RC+RC+requete
RENVOYER Faux
FIN
SI ::TracerRequete ALORS Trace(Requete)
SI SQLAvance("Query512")=0 ALORS
NbLignes=Val(SQLLitCol("Query512",1))
FIN
SQLFerme("Query512")
SI NbLignes=0 ALORS
Requete="DELETE FROM f_docregl WHERE do_piece="+:EntreCotes(::F_DOCLIGNE_dl_pieceBC)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp rgl associés des cdes vides AJOUT DOCLIGNE "+::F_DOCLIGNE_dl_pieceBC+")"+SQL.Erreur+TAB+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
Requete="DELETE FROM f_docentete WHERE do_piece="+:EntreCotes(::F_DOCLIGNE_dl_pieceBC)
SI PAS SQLExec(Requete,"Query512") ALORS
SQLInfoGene("Query512")
SI EnModeTest() ALORS
Info(SQL.Erreur+" - "+SQL.MesErreur+RC+Requete)
// stop
FIN
::MessageErreurSAGE = "Supp cde vides AJOUT DOCLIGNE "+::F_DOCLIGNE_dl_pieceBC+")"+SQL.Erreur+TAB+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Query512")
SI ::TracerRequete ALORS Trace(Requete)
FIN
FIN
SI PAS :MAJStockArticle(::F_DOCLIGNE_ar_ref,...
c_SAGE::F_DOCLIGNE_dl_lot,...
c_SAGE::F_DOCLIGNE_dl_lotperemption,...
-::F_DOCLIGNE_dl_qte,...
c_SAGE::F_DOCLIGNE_do_piece,...
::F_DOCLIGNE_dl_no,...
Faux) ALORS
RENVOYER Faux
FIN
FIN
RENVOYER Vrai
PROCEDURE MAJStockArticle(CodeArticle="",Lot="",DatePeremption=DateSys(),Qte=0,NumPiece="",dl_no=0,IncrementerLignePiece=Faux)
SI CodeArticle="" ALORS
::MessageErreurSAGE = "Le code article est vide"
RENVOYER Faux
FIN
//si Qte=0 alors
// ::MessageErreurSAGE = "La quantité est nulle"
// renvoyer faux
//FIN
CodeArticle=SansEspace(CodeArticle)
Lot = Remplace(SansEspace(Lot)," ","_")
LibelleArticle est chaîne
PieceTrouvee est booléen = Faux
NumLigne est un entier
SuiviStock est entier
cbmarq est entier
dl_noin est entier
Requete est une chaîne
DlMvtStock est entier
_On est chaîne
QuantiteEnCommande est réel
QuantiteEnstock est réel
QuantiteRestante est réel
SI Qte>0 ALORS
DlMvtStock=1
SINON
DlMvtStock=3
FIN
SI PAS SQLExec("SELECT ar_design,ar_suivistock FROM f_article WHERE ar_ref="+:EntreCotes(CodeArticle),"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete verif article (stocks) "+TAB+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") <> 0 ALORS
::MessageErreurSAGE="L'article "+CodeArticle+" n'existe pas"
SQLFerme("Q")
RENVOYER Faux
FIN
LibelleArticle=SQLLitCol("Q",1)
SuiviStock=Val(SQLLitCol("Q",2))
SQLFerme("Q")
SI SuiviStock=0 ALORS
::MessageErreurSAGE="Cet article n'est pas géré en stock"
RENVOYER Vrai
FIN
SI SuiviStock=5 ET Lot="" ALORS
Lot="AUCUN"
// ::MessageErreurSQL="Pas de lot alors que l'article est en suivi de lot"
// renvoyer faux
FIN
:F_DOCENTETE_raz()
SI NumPiece="" ALORS
SI Qte>=0
NumPiece=:ProchainNumPiece("MVT+")
SINON
NumPiece=:ProchainNumPiece("MVT-")
FIN
SI NumPiece="" ALORS
::MessageErreurSAGE="N° de pièce vide"
RENVOYER Faux
FIN
SINON
Requete = "SELECT de_no FROM f_docentete WHERE do_piece="+:EntreCotes(NumPiece)
SI PAS SQLExec(Requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete recherche de_no (stocks) "+RC+Requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q")= 0 ALORS
::F_DOCENTETE_de_no = Val(SQLLitCol("Q",1))
SQLFerme("Q")
PieceTrouvee=Vrai
FIN
FIN
SI ::F_DOCENTETE_de_no=0 ALORS ::F_DOCENTETE_de_no=1
::F_DOCENTETE_do_domaine=2
::F_DOCENTETE_do_piece = NumPiece
::F_DOCENTETE_do_date = DateVersChaîne(DateSys(),"JJ/MM/AA")
::F_DOCENTETE_do_ref = ""
::F_DOCENTETE_do_tiers = 1
::F_DOCENTETE_re_no=0
::F_DOCENTETE_do_transaction = 0
SI Qte>=0
::F_DOCENTETE_do_type
SINON
::F_DOCENTETE_do_type!
FIN
SI PieceTrouvee = Faux ALORS
SI PAS :F_DOCENTETE_Ajoute_ligne() ALORS
::MessageErreurSAGE="Erreur lors de l'ajout dans DOCENTETE"+RC+::MessageErreurSAGE
RENVOYER Faux
FIN
FIN
//si enmodetest() et CodeArticle="UG32256" alors stop
SI dl_no=0 ALORS
// on recherche la correspondance entre une éventuelle ligne de DOCLIGNE et son lot
_On = " ON f_docligne.dl_no=f_lotserie."
SI Qte>=0 ALORS
_On = _On+"dl_noin"
SINON
_On = _On+"dl_noout"
FIN
Requete = "SELECT f_docligne.dl_no, f_docligne.dl_mvtstock"+...
" FROM f_lotserie LEFT JOIN f_docligne "+...
_On+...
" WHERE f_docligne.do_piece="+:EntreCotes(NumPiece)+" AND f_lotserie.ar_ref="+:EntreCotes(CodeArticle)+" AND f_lotserie.ls_noserie="+:EntreCotes(lot)
SI PAS SQLExec(Requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete correspondance docligne et son lot (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") = 0 ALORS
dl_no = SQLLitCol("Q",1)
DlMvtStock=SQLLitCol("Q",2)
FIN
SQLFerme("Q")
FIN
SI dl_no=0 ALORS
:F_DOCLIGNE_Raz()
::F_DOCLIGNE_dl_MvtStock = DlMvtStock
dl_no = :F_DOCLIGNE_dl_no_en_cours()+1
SI dl_no = -1 ALORS
::MessageErreurSAGE = "Impossible de récupérer le dl_no"
RENVOYER Faux
FIN
NumLigne=:F_DOCLIGNE_dl_ligne_en_cours (c_SAGE::F_DOCENTETE_do_piece)+1
SI NumLigne = -1 ALORS
::MessageErreurSAGE = "le n° de ligne est introuvable pour la pièce "+c_SAGE::F_DOCENTETE_do_piece
RENVOYER Faux
FIN
c_SAGE::F_DOCLIGNE_dl_no = dl_no
::F_DOCLIGNE_do_domaine = 2
::F_DOCLIGNE_do_type = c_SAGE::F_DOCENTETE_do_type
::F_DOCLIGNE_ct_num = c_SAGE::F_DOCENTETE_do_tiers
::F_DOCLIGNE_do_piece = c_SAGE::F_DOCENTETE_do_piece
::F_DOCLIGNE_dl_ligne = 10000*NumLigne
::F_DOCLIGNE_do_ref = c_SAGE::F_DOCENTETE_do_ref
::F_DOCLIGNE_ar_ref = CodeArticle
::F_DOCLIGNE_dl_design = LibelleArticle
::F_DOCLIGNE_de_no = c_SAGE::F_DOCENTETE_de_no // n° de dépôt
::F_DOCLIGNE_re_no = c_SAGE::F_DOCENTETE_re_no // Représentant
// ::F_DOCLIGNE_dl_qte = Qte
// ::F_DOCLIGNE_dl_qtebc = c_SAGE::F_DOCLIGNE_dl_qte
// ::F_DOCLIGNE_dl_qtebl = c_SAGE::F_DOCLIGNE_dl_qte
SI PAS :F_DOCLIGNE_Ajoute_ligne() ALORS
::MessageErreurSAGE="ERREUR LORS DE L'AJOUT DANS DOCLIGNE"+RC+::MessageErreurSAGE
RENVOYER Faux
FIN
FIN
SI dl_no=0 ALORS
::MessageErreurSAGE="Le dl_no est toujours vide!"
RENVOYER Faux
FIN
SI IncrementerLignePiece ALORS
QteAAjouter est réel =Abs(Qte)
Requete="UPDATE f_docligne SET dl_qte=dl_qte+"+QteAAjouter+",dl_qteBC=dl_qteBC+"+QteAAjouter+",dl_qteBL=dl_qteBL+"+QteAAjouter+" WHERE dl_no="+dl_no
SI PAS SQLExec(Requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete incrément pièce (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Q")
FIN
Requete="SELECT as_qtesto-as_qteres FROM f_artstock WHERE ar_ref="+:EntreCotes(CodeArticle)
SI PAS SQLExec(Requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete select ar_ref article (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") <> 0 ALORS
QuantiteEnCommande=SQLLitCol("Q",1)
SQLFerme("Q")
:F_ARTSTOCK_Raz()
::F_ARTSTOCK_AR_Ref = CodeArticle
SI PAS :F_ARTSTOCK_Ajoute_ligne() ALORS
::MessageErreurSAGE="ERREUR LORS DE L'AJOUT DANS ARTSTOCK"+RC+::MessageErreurSAGE
RENVOYER Faux
FIN
FIN
SQLFerme("Q")
SELON SuiviStock
CAS 5
// Gestion par lot
:F_LOTSERIE_Raz()
::F_LOTSERIE_ar_ref = CodeArticle
::F_LOTSERIE_ls_noserie = Lot
::F_LOTSERIE_ls_peremption = DatePeremption
::F_LOTSERIE_ls_mvtstock = DlMvtStock
cbmarq=0
// On recherche si il n'y a pas déjà une entrée en stock pour cet article et on récupère le cbmarq
Requete = "SELECT dl_noin,cbmarq FROM f_lotserie WHERE ar_ref="+:EntreCotes(CodeArticle)+" AND ls_noserie="+:EntreCotes(Lot)+" AND ls_mvtstock=1"
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete verif si entrée stock (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") = 0
dl_noin = SQLLitCol("Q",1)
cbmarq = SQLLitCol("Q",2)
FIN
SQLFerme("Q")
SI cbmarq=0
SI DlMvtStock<>1 ALORS
::MessageErreurSAGE = "Impossible de trouver le DL_NOIN pour l'article "+CodeArticle+" - lot "+Lot+RC+"Quantité : "+Qte
SI Qte=0 ALORS
// Pas grave si pas d'entrée car le stock est nul
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
FIN
::F_LOTSERIE_dl_noin = dl_no
SI PAS :F_LOTSERIE_Ajoute_ligne() ALORS
::MessageErreurSAGE="ERREUR LORS DE L'AJOUT DANS LOTSERIE"+RC+::MessageErreurSAGE
RENVOYER Faux
FIN
Requete = "SELECT dl_noin,cbmarq FROM f_lotserie WHERE ar_ref="+:EntreCotes(CodeArticle)+"AND ls_noserie="+:EntreCotes(Lot)+" AND ls_mvtstock=1"
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete dl_noin dans f_lotserie (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") = 0
dl_noin = SQLLitCol("Q",1)
cbmarq = SQLLitCol("Q",2)
SINON
::MessageErreurSAGE = "Impossible de trouver le cbmarq pour l'article "+CodeArticle+" - lot "+Lot
SQLFerme("Q")
RENVOYER Faux
FIN
SQLFerme("Q")
SINON
SI Qte<0
SI Qte>=0 ALORS
::F_LOTSERIE_ls_qte = Qte
SINON
::F_LOTSERIE_ls_qte = -Qte
FIN
SI DlMvtStock=1 ALORS
// Entrée
::F_LOTSERIE_dl_noin = dl_no
SINON
// Sortie
::F_LOTSERIE_dl_noin = dl_noin
::F_LOTSERIE_dl_noout = dl_no
FIN
SI PAS :F_LOTSERIE_Ajoute_ligne() ALORS
::MessageErreurSAGE="ERREUR LORS DE L'AJOUT DANS LOTSERIE"+RC+::MessageErreurSAGE
RENVOYER Faux
FIN
FIN
FIN
SI Qte>=0 ALORS
Requete="UPDATE f_lotserie SET ls_lotepuise=0,ls_qte=ls_qte+"+Qte+",ls_qterestant=ls_qterestant+"+Qte+" WHERE cbmarq="+cbmarq
SINON
Requete="UPDATE f_lotserie SET ls_lotepuise=0,ls_qterestant=ls_qterestant+"+Qte+" WHERE cbmarq="+cbmarq
FIN
// Modification de l'enregistrement
SI PAS SQLExec(Requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete modif f_lotserie (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
:F_ARTSTOCK_RecalculStock(CodeArticle,5)
AUTRE CAS
::MessageErreurSAGE="La gestion du suivi de stock "+SuiviStock+" n'a pas été développée !"
RENVOYER Faux
FIN
RENVOYER Vrai
PROCEDURE F_ARTSTOCK_RecalculStock(CodeArt,TypeRecalcul)
// Mise à jour du stock dans F_ARTSTOCK
Requete est chaîne
QuantiteEnstock est réel
QuantiteEnCommande est réel
SI TypeRecalcul=-1
SI PAS SQLExec("SELECT ar_suivistock FROM f_article WHERE ar_ref="+:EntreCotes(CodeArt),"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete verif article (stocks) "+TAB+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q") <> 0 ALORS
::MessageErreurSAGE="L'article "+CodeArt+" n'existe pas"
SQLFerme("Q")
RENVOYER Faux
FIN
TypeRecalcul=Val(SQLLitCol("Q",1))
SQLFerme("Q")
FIN
SELON TypeRecalcul
CAS 5
// Gestion de l'épuisé : remise à 0 si encore du stock
requete="UPDATE f_lotserie SET ls_lotepuise=0 WHERE ar_ref="+:EntreCotes(CodeArt)+" AND ls_mvtstock=1 AND ls_qterestant>0"
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete lot epuise article (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Q")
// Recherche de la quantité en stock
Requete="SELECT sum(ls_qterestant) FROM f_lotserie WHERE ar_ref="+:EntreCotes(CodeArt)+" AND ls_mvtstock=1 AND ls_lotepuise=0"
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete as_qtesto article (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q")=0
QuantiteEnstock=SQLLitCol("Q",1)
FIN
SQLFerme("Q")
// Calcul de la quantité en commande
Requete="SELECT sum(dl_qte) FROM f_docligne WHERE do_type=1 AND ar_ref="+:EntreCotes(CodeArt)
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete as_qtesto article (stocks en commande) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SI SQLAvance("Q")=0
QuantiteEnCommande=SQLLitCol("Q",1)
FIN
SQLFerme("Q")
Requete="UPDATE f_artstock SET as_qtesto="+QuantiteEnstock+",as_qteres="+QuantiteEnCommande+" WHERE ar_ref="+:EntreCotes(CodeArt)
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete as_qtesto article (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Q")
// Gestion de l'épuisé : remise à 0 si plus de stock
requete="UPDATE f_lotserie SET ls_lotepuise=1 WHERE ar_ref="+:EntreCotes(CodeArt)+" AND ls_lotepuise=0 AND ls_mvtstock=1 AND ls_qterestant=0"
SI PAS SQLExec(requete,"Q") ALORS
SQLInfoGene("Q")
::MessageErreurSAGE = "Erreur requete lot epuise article (stocks) "+RC+requete+RC+SQL.MesErreur
RENVOYER Faux
FIN
SQLFerme("Q")
FIN
RENVOYER Vrai
"stéphane" <s.sgame@wanadoo.fr> a écrit dans le message de news: 43b61475$1@news.pcsoft.fr...
Bonjour, Je suis sur un projet Windev9 effectuant des opérations sur les fichiers d'une BD Sage L100 SQL. Je transforme des pièces de vente de BC en BL. Je travaille avec des articles à gammes, sérialisés et à lot. J'effectue avec succès les opérations d'ajout et de modification sur les fichiers.
La validité de ces opérations est vérifiée, cependant par l'intermédiaire de Sage GESCOM, l'affichage n'est mis à jour que partiellement. Par exemple, les numéro de lot n'apparaissent pas lorsque je consulte la pièce transformée.
Questions: 1/ Quelqu'un peut-il m'aider ? 2/ Comment faire pour obtenir un affichage raffrachit. 3/ Dois-je utiliser les TRIGGERS ? 4/ Les requettes SQL suffisent-elles ? 5/ En SQL, la mise à jour des stock est-elle gérée par SAGE ou doit-on gérer la ventilation du stock à travers toutes les tables les gérant ? 6/ Est-il possible de déclencher le rafraichissement des fenêtres ouvertes dans la Gescom : par exemple la liste pièces de ventes; le statut des pièces ...
Merci par avance à ceux qui me consacreront un peu de temps.
Vu la période, mes Meilleurs voeux à ceux qui liront ce message.
|
| |
| |
| | | |
|
| | | | |
| | |
|