2017-01-20 22 views
0

Итак, моя компания поручила мне создать пакетное задание, которое будет распечатывать счета-фактуры Proforma для всех заказов на продажу, которые были отправлены в этот день , но пока еще не выставлены счета-фактуры. Они просят об этом, потому что они хотят просмотреть счета-фактуры через файлы PDF, прежде чем отправлять их. Скорее всего, они могут размещать на всех одобренных счетах в одном процессе.AX 2009: необходимо распечатать счет ProForma перед выставлением счета-фактуры

До сих пор все примеры того, как создать этот пакетный отчет (который я могу найти при поиске в Google), используют записи custInvoiceJour для заказа клиента, чтобы генерировать отчет SalesInvoice, однако, поскольку счета-фактуры не на самом деле еще не опубликовано, нет соответствующей записи CustInvoiceJour для использования в этом случае

Как я могу создать SalesInvoice без публикации (ProForma), так как эти записи журнала не были созданы? Я знаю, что это можно сделать, так как вы можете сделать это через пользовательский интерфейс.

Вот код, который у меня есть до сих пор для метода запуска пакетного задания, и когда он запускает его, возникает ошибка в том, что вы не можете найти запись custInvoiceJour.

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(); 

}

ответ

0

Вы можете использовать этот код, чтобы сохранить проформы в файл

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); 
}