Voici quelques exemples de codes qui permettent d'imprimer un document de la gestion commerciale.
Au départ d'une BillingForm :
billingForm.BillingEngine.PrintPrev(MercatorUi.PrintPrevEnum.Print);
Au départ d'un BillingEngine :
billingEngine.PrintPrev(MercatorUi.PrintPrevEnum.Print);
ou pour combiner plusieurs actions (prévisualiser, imprimer, générer un PDF)
List<MercatorUi.Reporting.OutputDescriptor> outputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPreview()); // pour obtenir une prévisualisation
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPrint()); // pour obtenir une impression
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorExport(MercatorUi.Reporting.ExportReportEnum.PDF, @"C:\invoice.pdf", MercatorUi.Reporting.ExportOpenAfterEnum.No)); // pour exporter vers C:\invoice.pdf
DataSet dataSetPrintPrev = billingEngine.PrepareDataSetForPrint();
Dictionary<string, object> parametersPrintPrev = billingEngine.PrepareParametersForPrint();
MercatorUi.Reporting.ReportingStatic.Reporting.RunReport("TitleOfPreviewForm", "piece.repx", dataSetPrintPrev, outputDescriptors, parametersPrintPrev);
En dehors de tout contexte de BillingEngine :
string id = "...";
string journal = "...";
Int64 piece = ...;
MercatorUi.Reporting.ReportingStatic.PrintBilling(id, journal, piece, MercatorUi.PrintPrevEnum.Print);
Si on dispose déjà de l’information typeVA (V=vente, A=achat) et type, il vaut mieux utiliser cette seconde signature qui économisera une requête dans la DB SQL :
int type = ...;
string id = "...";
string journal = "...";
Int64 piece = ...;
MercatorUi.Reporting.ReportingStatic.PrintBilling(MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V, type, id, journal, piece, MercatorUi.PrintPrevEnum.Print);
ou
int type = ...;
string id = "...";
string journal = "...";
Int64 piece = ...;
MercatorUi.Engine.Gescom.Tools.BillingDocDescriptor billingDocDescriptor = new MercatorUi.Engine.Gescom.Tools.BillingDocDescriptor(MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V, type, id, journal, piece);
MercatorUi.Reporting.ReportingStatic.PrintBilling(billingDocDescriptor, MercatorUi.PrintPrevEnum.Print);
Partout dans le code, MercatorUi.PrintPrevEnum.Print peut être remplacé par :
ou pour combiner plusieurs actions (prévisualiser, imprimer, générer un PDF)
MercatorUi.Engine.Gescom.Billing.TypeVAEnum typeVA = MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V;
int type = ...;
string id = "...";
string journal = "...";
Int64 piece = ...;
using (MercatorUi.Engine.Gescom.BillingEngine billingEngine = MercatorUi.Engine.Gescom.BillingEngine.InitExisting(typeVA, type, id, journal, piece))
{
if (billingEngine.DataSet == null)
{
Api.Stop(billingEngine.LastError);
return;
}
List<MercatorUi.Reporting.OutputDescriptor> outputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPreview()); // pour obtenir une prévisualisation
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPrint()); // pour obtenir une impression
outputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorExport(MercatorUi.Reporting.ExportReportEnum.PDF, @"C:\invoice.pdf", MercatorUi.Reporting.ExportOpenAfterEnum.No)); // pour exporter vers C:\invoice.pdf
DataSet dataSetPrintPrev = billingEngine.PrepareDataSetForPrint();
Dictionary<string, object> parametersPrintPrev = billingEngine.PrepareParametersForPrint();
billingEngine.OnPrintPrevPrepared(dataSetPrintPrev, parametersPrintPrev, "piece.repx");
MercatorUi.Reporting.ReportingStatic.Reporting.RunReport("TitleOfPreviewForm", "piece.repx", dataSetPrintPrev, outputDescriptors, parametersPrintPrev);
}
Depuis une application externe : voir cette page