Friday, January 22, 2016

Sales Order and Purchase Order Tables and Classes

Sales Order and Purchase Order Tables and Classes


SalesOrder Classes and Tables:

SalesTableType and SaleslineType classes will get called while creating the SalesOrders.
SalesFormLetter_Confirm
SalesFormLetter_Invoice
SalesFormLetter_PackingSlip
SalesFormLetter_PickingLlst
classes will be used to post the sales order at various document status (packing, invoice etc).
Tables:
SalesTable contains all SalesOrder headers regardless whether they have been posted or not.
The SalesParmTable and SalesParmLine contains detailed information regarding posting sales headers and Lines.
CustConfirmJour and CustConfirmTrans tables contains all Sales Confirmation headers and Lines posted in Dynamic Ax originating from Sales Orders and Lines.
CustPackingSlipJour and CustPackingSlipTrans tables contains all sales PackingSlip headers and Lines posted in Dynamic Ax originating from Sales Orders and Lines.
CustInvoiceJour and CustInvoiceTrans tables contains all sales all Sales Invoice headers and Lines posted in Dynamic Ax originating from Sales Orders and Lines.

Purchase Order classes and Tables:

PurchTableType and PurchTableLine classes will get called while creating the PurchaseOrders.
PurchFormLetter_PurchOrder
PurchFormLetter_ApproveJournal
PurchFormLetter_Invoice
PurchFormLetter_PackingSlip
PurchFormLetter_ReceiptsList
classes will be used to post the PurchaseOrder at various document status (packing, invoice etc).
Tables:
PurchTable contains all purchase order headers regardless whether they have been posted or not.
PurchParmTable and PurchParmLine contains detailed information regarding posting Purchase headers and Lines.
VendPurchOrderJour and VendPurchOrderTrans tables contains Purchase requisition headers and lines.(i.e purchase confirmation details.)
VendReceiptsListJour contains Posted purchase receipt headers.
VendReceiptsListPurchLink contains purchase receipt relations.
VendReceiptsListTrans contains  Posted purchase receipt Lines.
VendReceiptsJour and VendReceiptsTrans tables contains posted receipt header and lines.
VendPackingSlipJour and VendPackingSlipTrans tables contains posted packingslip headers and lines.
VendInvoiceJour and VendInvoiceTrans tables contains all invoiced purchase order headers and Lines.

VendInvoiceInfoTable and VendInvoiceInfoLine tables contains Vendor invoice headers and lines for specific purchase order.



As per my observation through debugging:
FormletterService class will be triggered for when updating sales orders, purchase orders from FormletterServiceController Class.

FormletterService 
Methods:
Purchase Order posting methods:
postPurchaseOrderConfirmation :Posts a purchase order confirmation.
postPurchaseOrderReceiptList:Posts a purchase order receipt list.
postPurchaseOrderPackingSlip: Posts a purchase order packing slip.
postPurchaseOrderInvoice:Posts a purchase order invoice.

SalesOrder posting methods:
postSalesOrderConfirmation:Posts a sales order confirmation.
postSalesOrderPickingList:Posts a sales order picking list.
postSalesOrderPackingSlip:Posts a sales order packing slip.
postSalesOrderInvoice:Posts a sales order invoice.


Happy Daxing !!!



Thursday, January 21, 2016

Creating SO and PO with X++ code in ax 2012 r3

Creating SO with X++ code in ax 2012 r3

static void SO_shiv(Args _args)
{
    NumberSeq numberSeq;
    SalesTable salesTable;
    SalesLine salesline;
    SalesFormLetter salesFormLetter;
    ;
    ttsBegin;
    numberSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId());
    numberSeq.used();
    salesTable.SalesId = numberSeq.num(); // salestable
    salesTable.initValue();

    salesTable.CustAccount='US-002';
    salesTable.initFromCustTable();
    salesTable.insert();

    salesline.SalesId = salesTable.SalesId; // saleline
    salesline.ItemId  = "sunglasses";
    salesline.createLine(true,true,true,true,true);
    ttsCommit;

    info(strFmt("%1 SO is created",salesTable.SalesId));//SO Created

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);//SO Confirmed
    salesFormLetter.update(salesTable);
    info(strFmt("%1 SO is Confirmed",salesTable.SalesId));

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);//SO Invoiced
    salesFormLetter.update(salesTable);
    info(strFmt("%1 SO is Invoiced ",salesTable.SalesId));

}


//Creating PO with X++ code in ax 2012 r3

static void PO_shiv(Args _args)
{
    NumberSeq numberseq;
    PurchTable purchtable;
    PurchLine purchline;
    PurchFormLetter purchformletter;

    ;
    ttsbegin;
    numberseq = NumberSeq::newGetNum(PurchParameters::numRefPurchId());
    numberseq.used();
    purchtable.PurchId = numberseq.num();
    purchtable.initValue();

    purchtable.initFromVendTable(VendTable::find('1100'));


    if(!purchtable.validateWrite())
    {
        throw exception::Error;
    }
    purchtable.insert();


    purchline.PurchId=purchtable.PurchId;
    purchline.ItemId ='Duke Bike 700';
    purchline.createLine(true,true,true,true,true,true);
    ttsCommit;
    info(strFmt("%1 Purchase order is created ",purchtable.PurchId));//Po created

    purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);// PO confirm
    purchformLetter.update(purchtable,Purchtable.PurchId);
    info(strFmt("%1 PO is Confirmed ",purchtable.PurchId));


    purchformletter = PurchFormLetter::construct(DocumentStatus::ReceiptsList);// Receipt List
    purchformletter.update(purchtable,purchtable.PurchId);
    info(strFmt("%1 PO ReciptList created  ",purchtable.PurchId));

    purchformletter = PurchFormLetter::construct(DocumentStatus::Invoice);// PO Invoiced
    purchformletter.update(purchtable,purchtable.PurchId);//here PO no default as Invoice no is taken
    info(strFmt("%1 PO is invoiced",purchtable.PurchId));

    //Note Please Make Sure that the item should have default,purch,sales,inventory site and warehouse settings
    //(i.e go to item edit >manage inventory>defaultordersettings,site order settings)
}

Export a copy of the standard user acceptance testing (UAT) database

 Reference link: Export a copy of the standard user acceptance testing (UAT) database - Finance & Operations | Dynamics 365 | Microsoft ...