2017-01-20 6 views
0

私の会社は、その日に梱包明細書を転載したすべての受注のProforma販売請求書を印刷するバッチジョブを作成するように指示しました、まだ請求書が掲載されていない。実際に転記する前にPDFファイルで請求書を確認したいので、彼らはこれを求めています。ほとんどの場合、1つのプロセスですべての承認された請求書に転記することができます。AX 2009:請求書が転記される前にProForma請求書を印刷する必要があります

これまでのバッチレポートの実行例(Googleの検索で見つかる)は、SalesInvoiceレポートを生成するためにcustInvoiceJourエントリを使用していますが、実際にまだ投稿されていない場合、対応するCustInvoiceJourエントリはこのケースで使用されません。

これらの仕訳入力が作成されていないため、転記することなくSalesInvoiceを作成する方法を教えてください。あなたがUIを通してそれを行うことができるので、これができることを私は知っています。

バッチジョブの実行メソッドのコードはここにあります。実行すると、custInvoiceJourエントリが見つからないというエラーが出力されます。ファイルへのプロフォーマを保存するには、以下のコードを使用することができます

答えて

0

public void run() 
{ 
// Arguments for function. 
    Args args; 
    ParmId parmId; 
    ReportRun reportRun; 
    SalesTable salesTable; 
    PrintJobSettings printJobSettings; 
    SalesFormLetter formLetter; 

    select salesTable where salesTable.DocumentStatus == DocumentStatus::PackingSlip && salesTable.SalesStatus == SalesStatus::Delivered; 

    printJobSettings = new PrintJobSettings(); 
    printJobSettings.setTarget(PrintMedium::File); 
    printJobSettings.format(PrintFormat::PDF); 
    printJobSettings.fileName("C:\temp\proforma_invoice.pdf"); 

    formLetter = SalesFormLetter::construct(DocumentStatus::Invoice); 

    formLetter.proforma(true); 
    formLetter.printFormLetter(true); 
    formLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings()); 

    args = new Args(ReportStr(SalesInvoice)); 
    args.caller(formLetter); 
    args.parmEnum(PrintCopyOriginal::Original); 
    args.parmEnumType(enumnum(PrintCopyOriginal)); 
    args.record(salesTable); 

    reportRun = new ReportRun(args); 
    reportRun.printJobSettings().setTarget(PrintMedium::File); 
    reportRun.printJobSettings().format(PrintFormat::PDF); 
    reportRun.printJobSettings().fileName("C:\temp\proforma_invoice.pdf"); 
    reportRun.prompt(); 
    reportRun.run(); 

}

public void run() 
{ 
    SalesTable   salesTable; 
    PrintJobSettings printJobSettings; 
    SalesFormLetter  salesFormLetter; 
    ; 

    select firstOnly salesTable 
     where salesTable.DocumentStatus == DocumentStatus::PackingSlip 
      && salesTable.SalesStatus == SalesStatus::Delivered; 

    printJobSettings = new PrintJobSettings(); 
    printJobSettings.setTarget(PrintMedium::File); 
    printJobSettings.format(PrintFormat::PDF); 
    printJobSettings.fileName(@'C:\Temp\proforma_invoice.pdf'); 

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice); 
    salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings()); 
    salesFormLetter.update(salesTable, 
          systemDateGet(), 
          SalesUpdate::PackingSlip, 
          AccountOrder::None, 
          NoYes::Yes, 
          NoYes::Yes); 
} 
関連する問題