Wednesday, October 24, 2018

Import and Export a configuration model in D365(xml file) for custom fields.

Export:

[ExtensionOf(classStr(PcModelVisitorExport))]

final class PCModelVisitorExport_Extension
{
    public void visitStart(Common _record)
    {
        next visitStart(_record);       

        if (_record is EcoResAttribute)
        {
            if ( this.writeComponent() )
            {
                EcoResAttribute ecoResAttribute = _record;

                this.writeFieldValueInt(ecoResAttribute, fieldId2name(ecoResAttribute.TableId, fieldNum(EcoResAttribute, NoPrint)), ecoResAttribute.NoPrint);
            }
        }

        if (_record is PCPriceExpressionValue)
        {
            PCPriceExpressionValue  priceExpressionValue = _record;

            this.writeFieldValue(priceExpressionValue, fieldId2name(priceExpressionValue.TableId, fieldNum(PCPriceExpressionValue, SalesOptionId)), priceExpressionValue.SalesOptionId);
        }

        if (_record is PCPriceExpressionRule)
        {
            PCPriceExpressionRule  priceExpressionRule = _record;

            this.writeFieldValue(priceExpressionRule, fieldId2name(priceExpressionRule.TableId, fieldNum(PCPriceExpressionRule, SalesOptionId)), priceExpressionRule.SalesOptionId);
        }
    }   


}

Import:

[ExtensionOf(classStr(PCImportComponentAttributeHandler))]
final class PCImportComponentAttributeHandler_Extension
{
    protected void importData()
    {
        #define.NoPrint('NoPrint')

        next importData();
               
        ttsbegin;

        attribute.Selectforupdate(true);
        attribute.NoPrint   = this.getIntFieldByName(#NoPrint);
        attribute.update();

        ttscommit;       
    }

}

[ExtensionOf(classStr(PCImportPriceExpressionRuleHandler))]
final class PCImportPriceExpressionRuleHandler_Extension
{
    protected void importData()
    {
        #define.SalesOptionId('SalesOptionId')

        next importData();

        ttsbegin;

        expressionRule.Selectforupdate(true);
        expressionRule.SalesOptionId    = this.getFieldByName(#SalesOptionId);
        expressionRule.update();

        ttscommit;
    }

}

No comments: