• Create & Post free text invoice by code


    Here is a sample class which is called via Dialog framework to create & post free text invoice using X++ code.

     1 public void xtest()
     2 {
     3     Dialog        dialog;
     4     DialogField   dlgCustAcc;
     5     DialogGroup   dialogPeriodLengthGroup, dialogPeriodLengthGroup1;
     6     DialogField   dlgLedgerAcc;
     7   ;
     8     dialog                   = new Dialog("Free-Text Invoice");
     9     dialogPeriodLengthGroup1 = dialog.addGroup(‘Cust Table’);
    10     dlgCustAcc               = dialog.addField(typeid(CustAccount));
    11     dialogPeriodLengthGroup  = dialog.addGroup(‘Ledger Table’);
    12     dlgLedgerAcc             = dialog.addField(typeid(LedgerAccount));
    13  
    14    
    15     if (dialog.run())
    16     {
    17         if (dlgCustAcc.value() && dlgLedgerAcc.value() != ”)
    18             FreeTxtInvoiceCreatePost::main(dlgCustAcc.value(), dlgLedgerAcc.value());
    19         else
    20              throw error(strfmt("Either CustAccount or LedgerAccount info is missing."));
    21     }
    22  }
    23  
    24 /// <summary>
    25 /// The <c>Job_FreeTxtInvoice</c> class is implemented to create/post <c>Free Text Invoice</c>.
    26 /// </summary>
    27 class FreeTxtInvoiceCreatePost
    28 {
    29 }
    30  
    31 static void main(CustAccount _custAccount, LedgerAccount _ledgerAccount)
    32 {
    33     CustInvoiceTable    custInvoiceTable;
    34     CustInvoiceLine     custInvoiceLine;
    35     CustTable           custTable;
    36     LedgerTable         ledgerTable;
    37     CustPostInvoice     custPostInvoice;
    38     LineNum             lineNum;
    39     int                 i;
    40     ;
    41  
    42     /// <summary>
    43     /// The <c>CustInvoiceTable</c> logic is implemented to create single <c>Header</c>.
    44     /// </summary>
    45     ttsbegin;
    46     custTable = CustTable::find(_custAccount);
    47     custInvoiceTable.initFromCustTable(custTable);
    48     custInvoiceTable.insert();
    49     ttscommit;
    50  
    51     /// <summary>
    52     /// The <c>CustInvoiceLine</c> logic is implemented to create multiple <c>Invoice Lines</c>.
    53     /// </summary>
    54     for (i = 1; i <= 100; i++)
    55     {
    56         ttsbegin;
    57         ledgerTable = LedgerTable::find(_ledgerAccount);
    58         custInvoiceLine.clear();
    59         custInvoiceLine.initValue();
    60         custInvoiceLine.LedgerAccount = ledgerTable.AccountNum;
    61         custInvoiceLine.initFromCustInvoiceTable(custInvoiceTable);
    62         custInvoiceLine.AmountCur = 10.00;
    63         custInvoiceLine.Description = ‘FreeTxIv’ + int2str(i);
    64         custInvoiceLine.TaxItemGroup = ‘full’;
    65         custInvoiceLine.ParentRecId = custInvoiceTable.RecId;
    66  
    67         //LINE NUM LOGIC.
    68         if(!lineNum)
    69         {
    70             lineNum = CustInvoiceLine::lastLineNum(custInvoiceLine.ParentRecId);
    71         }
    72  
    73         lineNum += 1;
    74         custInvoiceLine.LineNum = lineNum;
    75         custInvoiceLine.insert();
    76         ttscommit;
    77     }
    78  
    79     /// <summary>
    80     /// The <c>custPostInvoice</c> class is called for posting <c>Free-TextInvoice.</c> records.
    81     /// </summary>
    82     custPostInvoice = new CustPostInvoice(custInvoiceTable);
    83     custPostInvoice.run();
    84 }
  • 相关阅读:
    zabbix验证微信
    free
    有名管道和无名管道
    shell实现并发控制
    TCP/IP协议簇 端口 三次握手 四次挥手 11种状态集
    自动化运维
    JSON对象(自定义对象)
    对象中属性的遍历、删除与成员方法
    对象间的赋值操作
    自定义类
  • 原文地址:https://www.cnblogs.com/Jinnchu/p/2663603.html
Copyright © 2020-2023  润新知