Imprimer par code un document de la gestion commerciale

0000002176     -      08/12/2021

Voici quelques exemples de codes qui permettent d'imprimer un document de la gestion commerciale.

Au départ d'une BillingForm :

Zoom
billingForm.BillingEngine.PrintPrev(MercatorUi.PrintPrevEnum.Print);

Au départ d'un BillingEngine :

Zoom
billingEngine.PrintPrev(MercatorUi.PrintPrevEnum.Print);

ou pour combiner plusieurs actions (prévisualiser, imprimer, générer un PDF)

Zoom
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 :

Zoom
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 :

Zoom
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

Zoom
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 :

  • MercatorUi.PrintPrevEnum.Preview pour prévisualiser
  • MercatorUi.PrintPrevEnum.Send pour envoyer un email

ou pour combiner plusieurs actions (prévisualiser, imprimer, générer un PDF)

Zoom
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