Axaptapedia is now maintained by AgileCadence For more information please click here.

SalesFormLetter class

From Axaptapedia
Jump to: navigation, search

SalesFormLetter class is a base class for processing various documents on sales orders. Each kind of document is represented as a descendant of this class. For example it is SalesFormLetter_Invoice for invoice.

See also[edit]

Description[edit]

The class do the following way (see the method main):

  • creates a instance for the particular document (construct method)
  • constructs records in parameter tables: SalesParmTable, SalesParmLine, SalesParmUpdate with the new unique id (can be accessed via parmID property)
  • displays it contents to user to let some tweaks (via SalesEditLines form - see dialog method)
  • processes particular document

Examples[edit]

Printing proforma for the sales invoice[edit]

<xpp> static void Test_SalesFormLetter(Args _args) {

   SalesFormLetter letter=SalesFormLetter::construct(DocumentStatus::Invoice);
   SalesTable sale = SalesTable::find('ORDR00000229');
   ttsBegin;
   letter.update(sale, systemDateGet(), SalesUpdate::PickingList, AccountOrder::None, true, true);
   ttsCommit;

} </xpp>

The same with tweaking lines qty[edit]

<xpp> static void Test_SalesFormLetter(Args _args) {

   SalesFormLetter letter=SalesFormLetter::construct(DocumentStatus::Invoice);
   SalesTable sale = SalesTable::find('S00000274');
   SalesParmLine parmLine;
   ttsBegin;
   letter.salesTable(sale);
   letter.transDate          (systemDateGet());
   letter.specQty            (SalesUpdate::PickingList);
   letter.proforma           (true);
   letter.printFormLetter    (true);
   //letter.printCODLabel      (NoYes::No);
   //letter.printFreightSlip   (NoYes::No);
   //letter.printShippingLabel (NoYes::No);
   //letter.printBillOfExchange(NoYes::No);
   letter.createParmUpdate();
   letter.initParameters(letter.salesParmUpdate(),
                       PrintOut::Current);  // Printout
   info(letter.parmId());
   letter.giroType(sale.giroType);
   letter.initLinesQuery();
   while select forUpdate parmLine where parmLine.ParmId == letter.parmId()
   {
       // changed the Qty
       parmLine.DeliverNow = 3;
       // the following is stollen from the SalesEditLines form (field modified method)
       parmLine.setQty(parmLine.salesParmTable().ordering, letter.SalesParmUpdate().creditRemaining);
       parmLine.setInventDeliverNow();
       parmLine.setLineAmount();
       if (parmLine.closed)
       {
           parmLine.remainAfter = 0;
           parmLine.setRemainAfterInvent();
       }
       parmLine.calcPackingUnitQty();
       parmLine.update();
   }
   letter.run();
   ttsCommit;

} </xpp>

Methods[edit]

chooseLines[edit]

Constructs SalesParmTable and SalesParmLine tables records for

Links[edit]