[CODE] Transformation de BC en PL
Modérateurs: Super-Apogea, Super Modérateur
1 message
|Page 1 sur 1
[CODE] Transformation de BC en PL
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#) :
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 !
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é
- Messages: 20
- Inscription: Mer 18 Sep 2013 14:52
1 message
|Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités