[CODE] Transformation de BC en PL

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

[CODE] Transformation de BC en PL

de croftman » Mar 4 Mar 2014 15:47

Hello !

Comme je ne vois nulle part un code qui permettrait de transformer un BC en PL via les objets métiers, je vous met le mien ici (C#) :

Code: Tout sélectionner
private void BC2PL
        {

            try
            {
                openGescom();

                try
                {
                    /*** Variables **/
                    double qte;
                    IBODocumentVenteLigne3 ligne_temp = null;

                    // Contiendra les articles de la commande
                    //List<IBODocumentVenteLigne3> tablignes = new List<IBODocumentVenteLigne3>();

                    // Documents des ventes
                    IBODocumentVente3 docBC = null;
                    IBODocumentVente3 docPL = null;

                    /****/

                    // On ouvre le document à transformer, ici un Bon de Commande
                    docBC = baseGescom.FactoryDocumentVente.ReadPiece(DocumentType.DocumentTypeVenteCommande, "96911390");
                    docBC.CouldModified();

                    // On crée un bon de 'Préparation de livraison' avec les infos du BC
                    docPL = baseGescom.FactoryDocumentVente.CreateType(DocumentType.DocumentTypeVentePrepaLivraison);
                    docPL.SetDefaultClient(baseCompta.FactoryClient.ReadNumero( docBC.Client.CT_Num ));
                    docPL.SetDefaultDO_Piece();
                    docPL.DO_Date = DateTime.Now;
                    docPL.SetDefaultDO_Piece();

                    // Création du PL
                    docPL.WriteDefault();

                    foreach (IBODocumentVenteLigne3 docTemp in docBC.FactoryDocumentLigne.List)
                    {
                        if (docTemp.Article != null) // Si pas d'article alors c'est juste un commentaire
                        {
                            // Création de la ligne F_DOCLIGNE
                            ligne_temp = (IBODocumentVenteLigne3)docPL.FactoryDocumentLigne.Create();

                            qte = (docTemp.DL_Qte != 0) ? docTemp.DL_Qte : 1;

                            // Assignation de l'article
                            ligne_temp.SetDefaultArticle(baseGescom.FactoryArticle.ReadReference(docTemp.Article.AR_Ref), qte);

                            // Prix
                            ligne_temp.DL_PrixRU = docTemp.DL_PrixRU;
                            ligne_temp.DL_PrixUnitaire = docTemp.DL_PrixUnitaire;

                            // Remise
                            ligne_temp.Remise = docTemp.Remise;

                            // Commentaire (info libre 1)
                            ligne_temp.Write();
                            ligne_temp.InfoLibre[1] = docTemp.InfoLibre[1];
                            ligne_temp.Write();

                            //tablignes.Add(ligne_temp);
                        }
                        else
                        {
                            // Création d'une ligne avec juste dl_design (commentaire)
                            ligne_temp = (IBODocumentVenteLigne3)docPL.FactoryDocumentLigne.Create();
                            ligne_temp.DL_Design = docTemp.DL_Design;
                            ligne_temp.Write();

                            //tablignes.Add(ligne_temp);
                        }
                    }

                    // Suppression du BC
                    docBC.Remove();
                   

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erreur : " + ex.Message);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Erreur durant l'ouverture : " + ex.Message);
            }


            closeGescom();
           

        }

        private void openGescom()
        {

            try
            {
                baseCompta.Name = "S:\\FICHIER.mae";
                baseCompta.Loggable.UserName = "<Administrateur>";
                baseCompta.Loggable.UserPwd = "MDPSAGE";
                baseCompta.Open();


                baseGescom.CptaApplication = baseCompta;
                baseGescom.Name = "S:\\FICHIER.gcm";
                baseGescom.Loggable.UserName = "<Administrateur>";
                baseGescom.Loggable.UserPwd = "MDPSAGE";
                baseGescom.Open();

               
            }
            catch (Exception ex)
            {
                string erreur = "";
                erreur = "Erreur en ouverture de la base : " + ex.Message;
            }


            //return baseGescom;

        }

        private void closeGescom()
        {

            baseCompta.Close();
            baseGescom.Close();
        }

    }


Edit :

Voila le code terminé ! Je pensais qu'il fallait obligatoirement que le BC soit supprimé avant que le PL soit créé mais apparemment non !
Posteur habitué
Posteur habitué
 
Messages: 20
Inscription: Mer 18 Sep 2013 14:52

Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités