Wednesday, July 2, 2014

ReadXML

static void RealXML(Args _args)
{
    XMLDocument     retXmlDoc;
    XMLElement      xmlOutput;
    XMLElement      creditCardNode, invoiceSumNode, invoiceDtlNode;
    boolean         requestPayment = true;
    str             requestContactId, requestCCSubId, requestRecId, requestPayMode, requestLast4;
    str             requestCCnum, requestNameOnCard, requestCCExpMonth, requestCCExpYear, requestCCType;
    str             requestNumInv, requestTtlAmt, retMessageCode, retMessageText;
    str             invoiceId, xRefRecId, openAmount;
    ;
    retXmlDoc = new XMLDocument();
    xmlOutput = retXmlDoc.createElement("ProcessInvoiceCCPayment");
    xmlOutput.setAttribute("processingFullPayment", strfmt("%1", requestPayment));
    xmlOutput.setAttribute("contactId", strfmt("%1", requestContactId));
    creditCardNode = retXmlDoc.createElement("CreditCard");
    xmlOutput.appendChild(CreditCardNode);
    creditCardNode.setAttribute("CCSubscriptionId", strfmt("%1", requestCCSubId));
    creditCardNode.setAttribute("CCRecID", strfmt("%1", requestRecId));
    creditCardNode.setAttribute("payMode", strfmt("%1", requestPayMode));
    creditCardNode.setAttribute("CCLast4Digits", strfmt("%1", requestLast4));
    creditCardNode.setAttribute("mbsCCNumber", strfmt("%1", requestCCnum));
    creditCardNode.setAttribute("nameOnCard", strfmt("%1", requestNameOnCard));
    creditCardNode.setAttribute("CCExpMonth", strfmt("%1", requestCCExpMonth));
    creditCardNode.setAttribute("CCExpYear", strfmt("%1", requestCCExpYear));
    creditCardNode.setAttribute("CCType", strfmt("%1", requestCCType));
    invoiceSumNode = retXmlDoc.createElement("InvoiceSummary");
    xmlOutput.appendChild(invoiceSumNode);
    invoiceSumNode.setAttribute("totalNumberOfInvoices", strfmt("%1", requestNumInv));
    invoiceSumNode.setAttribute("totalOpenAmount", strfmt("%1", requestTtlAmt));
    invoiceSumNode.setAttribute("messageCode", strfmt("%1", retMessageCode));
    invoiceSumNode.setAttribute("messageText", strfmt("%1", retMessageText));
    invoiceDtlNode = retXmlDoc.createElement("InvoiceDetail");
    invoiceSumNode.appendChild(invoiceDtlNode);
    invoiceDtlNode.setAttribute("InvoiceId", strfmt("%1", invoiceId));
    invoiceDtlNode.setAttribute("RefRecId", strfmt("%1", xRefRecId));
    invoiceDtlNode.setAttribute("OpenAmount", strfmt("%1", openAmount));
    info(xmlOutput.xml());

    /*
    <ProcessInvoiceCCPayment processingFullPayment="true" contactId="">
        <CreditCard CCSubscriptionId="" CCRecID="" payMode="" CCLast4Digits="" mbsCCNumber="" nameOnCard="" CCExpMonth="" CCExpYear="" CCType="" />
        <InvoiceSummary totalNumberOfInvoices="" totalOpenAmount="" messageCode="" messageText="">
            <InvoiceDetail InvoiceId="" RefRecId="" OpenAmount="" />
        </InvoiceSummary>
    </ProcessInvoiceCCPayment>
    */
}

Tuesday, June 10, 2014

FormRun 3

    salesTable              salesTable = SalesTable::find("S104872");
    FormRun                 formRun;
    Args                    args;
    str                     parmGuid;
    ;
    args = new Args(MenuItemDisplayStr(BDCCOneTime));
    args.record(salesTable);
    formRun = New Menufunction(MenuItemDisplayStr(BDCCOneTime), MenuItemType::Display).create(args);
    if (formRun)
    {
        formRun.run();
    }

FormRun 2


    salesTable              salesTable = SalesTable::find("S104872");
    FormRun                 fr;
    Args                    args;
    str                     parmGuid;
    ;
    args = new Args("BDCCOneTime");
    args.record(salesTable);
    fr = new FormRun(args);
    if (fr)
    {
        fr.init();
        fr.run();
        fr.wait();
    }

Where BDCCOneTime is a form. The short program passes a record into the Form.

FormRun

Form                    form;
    FormRun                 formRun;
    Args                    args;
    FormBuildDesign         formBuildDesign;
    FormBuildControl        formBuildControl;
    FormBuildTabControl     formBuildTabControl;
    FormBuildTabPageControl formBuildTabPageControl;
    FormBuildGridControl    formBuildGridControl;
    FormBuildDatasource     formBuildDatasource;
    FormBuildStringControl  formString;
    ;
    form = new Form();
    formBuildDatasource = form.addDataSource(tableStr(PurchTable));
    formBuildDesign = form.addDesign('design');
    formBuildTabControl = formBuildDesign.addControl(FormControlType::Tab, 'Tab');
    formBuildTabPageControl = formBuildTabControl.addControl(FormControlType::TabPage, 'TabPage');
    formBuildGridControl = formBuildTabPageControl.addControl(FormControlType::Grid, 'Grid');
    formString = formBuildGridControl.addDataField(formBuildDatasource.id(), fieldNum(PurchTable, PurchId));
    formString.label("PurchId");
    args    = new Args();
    args.object(form);
    formRun = classFactory.formRunClass(args);
    formRun.init();
    formRun.run();
    formRun.wait();

Monday, June 9, 2014

Clean Cart

Delete Table instance is different from select table instance. When do a loop find or assign to a new object, best practice is to use that object's find method.
static void clearDeliveryItems(cusWBWebCartId _cartId)
{
    cusWebCartLine  cusWebCartLine;
    InventTable     inventTable;
    cusWebCartLine  deletecusWebCartLine;
    str             test;
    ;
      _cartId = 'CART_ID_019937';
       while
        select * from cusWebCartLine where cusWebCartLine.cartId == _cartId
        {//test="reset";
            inventTable=inventTable::find(cusWebCartLine.ItemId,false);
                if (inventTable.cusbdDeliveryOption == NoYes::Yes)
                    {
                    ttsbegin;
                    deletecusWebCartLine = cusWebCartLine::findRecId(cusWebCartLine.RecId, true);
                    if (deletecusWebCartLine)
                    {
                        deletecusWebCartLine.delete();
                    }
                    ttscommit;
                   // test="deleted";
                    }
                // else test="safe";
        }
}
 

Friday, May 30, 2014

CreateClass

    int                         id;
    boolean                     ret;
    Array                       errArray = new Array(Types::String);
    str                         className;
    className   = "mbsEBErrChk" + enum2str(mDocType);
    id          = dict.className2Id(className);
    obj         = classFactory.createClass(id);
    if (obj)
    {
        obj.setmDocDir(mDocDir);
        obj.setmDocType(mDocType);
        obj.setTPId(TPId);
        obj.setUpdate(updateRec);
        if (partner)
        {
            obj.SetPartner(partner);
        }
        if (partnerType)
        {
            obj.SetPartnerType(partnerType);
        }
       numErrors   = obj.checkError(mDoc, writeErrRec, _showTiming);
    }

Monday, May 26, 2014

Lookup and Query Range

public void lookupHCMtable(FormStringControl _ctrl)
{
    SysTableLookup              sysTableLookup = SysTableLookup::newParameters(tablenum(hcmtable), _ctrl);
    Query                       query = new Query();
    QueryBuildDataSource        queryBuildDataSource;
    QueryBuildRange             queryBuildRange;
    ;
    sysTableLookup.addLookupfield(fieldnum(hcmtable, EmpId));
    sysTableLookup.addLookupfield(fieldnum(hcmtable, EmpName));
    queryBuildDataSource = query.addDataSource(tablenum(hcmtable));
    queryBuildRange = queryBuildDataSource.addRange(fieldnum(hcmtable, Lastdateworked));
    queryBuildRange.value(strFmt('(Lastdateworked > %1)', today()));
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}