Sunday 2 July 2017

Financial Dimension Update through Job

Financial Dimension Update through Job

Scenario:

We are going to update financial dimension (specific values)in sales quotation without affecting other dimesnion values.

Code:


static void AbsSalesQuotationDimension_Upd(Args _args)
{
    int                            j, k;
    Struct                         struct = new Struct();
    container                      ledgerDimension;
    DimensionDefault               DimensionDefault;
    SalesQuotationTable            salesquotbl;

    DimensionAttributeValueSetStorage    dimStorage;
    DimensionAttribute                   DimensionAttribute;
    Counter                                               i;
    DimensionAttribute          dimAttr;
    DimensionAttributeValue     dimAttrValue;
    Common                      common;
    DictTable                   dictTable;
    DimensionValue              activity, country, department, project, property, unit;
    str                         Name;
    str                         value;
    SalesQuotationLine  sqline;

    //department = '111';

    ttsBegin;
    while select forupdate salesquotbl where salesquotbl.QuotationStatus == SalesQuotationStatus::Created
    {
        activity   = '';
        country    = '';
        department = '';
        project    = '';
        property   = '';
        unit       = '';
        ledgerDimension = conNull();
        k = 1;
        j = 0;
        DimensionDefault = 0;
        struct = new Struct();
        

            dimStorage = DimensionAttributeValueSetStorage::find(salesquotbl.DefaultDimension);

            for (i=1 ; i<= dimStorage.elements() ; i++)
            {
                select firstonly dimAttrValue
                where dimAttrValue.RecId == dimStorage.getValueByIndex(i)
                join dimAttr
                    where dimAttr.RecId == dimAttrValue.DimensionAttribute;

                    if (dimAttr && dimAttrValue)
                    {
                        dictTable = new DictTable(dimAttr.BackingEntityType);
                        common = dictTable.makeRecord();

                        if (common.TableId)
                        {
                            select common where common.(dimAttr.KeyAttribute) == dimAttrValue.EntityInstance;
                            name = common.(dimAttr.NameAttribute);
                            value = common.(dimAttr.ValueAttribute);
                            if (dimAttr.Name == 'Activities')
                            {
                               activity =  value;
                            }
                            if (dimAttr.Name == 'Country')
                            {
                               country  =  value;
                            }
                            else if (dimAttr.Name == 'Departments')
                            {
                               department =  '111'; //value;
                            }
                            else if (dimAttr.Name == 'Project_ID')
                            {
                               project =  value;
                            }
                            else if (dimAttr.Name == 'Property_id')
                            {
                               property =  value;
                            }
                            else if (dimAttr.Name == 'Unit_ID')
                            {
                               unit =  value;
                            }
                        }
                    }
            }  //for

                if (activity)
                {
                struct.add('Activities', activity);
                }
                if (country)
                {
                struct.add('Country', country);
                }

                if (department)
                {
                struct.add('Departments', department);
                }

                if (project)
                {
                struct.add('Project_ID', project);
                }

                if (property)
                {
                struct.add('Property_id', property);
                }

                if (unit)
                {
                struct.add('Unit_ID', unit);
                }

                j = struct.fields();

                ledgerDimension += struct.fields();
                for (k =1; k <= j; k++)
                {
                    ledgerDimension += struct.fieldName(k);
                    ledgerDimension += struct.valueIndex(k);
                }

                DimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(ledgerDimension);

                salesquotbl.DefaultDimension = DimensionDefault;
                salesquotbl.update();

            update_recordSet sqline
            setting DefaultDimension = salesquotbl.DefaultDimension
             where salesquotbl.QuotationId == sqline.QuotationId; 
            
    }
    ttsCommit;

}

Happy coding!

1 comment:

  1. Mohegan Sun - Mens Titanium Wedding Rings
    Mohegan men\'s titanium wedding bands Sun - Mohegan Sun is one of titanium bike frame the world's largest mens titanium wedding rings and best kept secret. Discover titanium band rings our unique and micro touch titanium trim iconic MOHEGAN SUN SITE LEGAL SITE

    ReplyDelete