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