2017-01-20 9 views
0

그래서 저희 회사는 저에게 포장 명세서를 소지 한 모든 판매 주문에 대한 견적 송장을 인쇄 할 배치 작업을 작성하라고했습니다 , 아직 인보이스를 게시하지 않았습니다. 그들은 실제로 PDF 파일을 게시하기 전에 PDF 파일을 통해 송장을 검토하기를 원하기 때문에이를 요구합니다. 대부분의 경우 승인 된 모든 인보이스에 하나의 프로세스로 게시 할 수 있습니다.AX 2009 : 송장이 게시되기 전에 ProForma 송장을 인쇄해야합니다.

지금까지 Google 검색을 통해 찾을 수있는이 일괄 처리 보고서 실행 방법의 예는 SalesInvoice 보고서를 생성하기 위해 판매 주문에 대한 custInvoiceJour 항목을 사용했지만 청구서에는 실제로 게시되었습니다.이 경우에 사용할 대응 CustInvoiceJour 항목이 없습니다.

게시 업무 (ProForma)없이 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); 
}