Вставьте несколько тегов XML как записи Salesforce через mulesoft - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь извлечь несколько тегов из XML и вставить их как записи Salesforce. однако почему-то я вставляю только последнюю запись, и все, что я думаю, перезаписывается последней, я думаю, причина в том, что я использую то же имя переменной «записи» для хранения записей, но как только я меняю имя переменной на что-то иначе mulesoft выдает ошибку ошибка, неопознанная переменная, как с этим справиться?

%dw 2.0
output application/json
ns ns0 http://www.demandware.com/xml/impex/order/2006-10-31
---
[{  
    Ascent4Ecomm__Ecomm_Order_ID__c: payload.ns0#order.ns0#"original-order-no",
    Ascent4Ecomm__Ecomm_Order_Name__c: payload.ns0#order.ns0#"original-order-no",
    Ascent4Ecomm__Ecomm_Order_Number__c: payload.ns0#order.ns0#"original-order-no", 
    attributes: {
        "type": "PBSI__PBSI_Sales_Order__c",
        "referenceId": "SO"
    },
    PBSI__Sales_Order_Lines__r: {
        records: payload.ns0#order.ns0#"product-lineitems".*ns0#"product-lineitem" map ( e , lineindex ) -> {
            "attributes": {
                "type": "PBSI__PBSI_Sales_Order_Line__c",
                "referenceId": e.ns0#"product-id"
            },                      
                 PBSI__Price__c: e.ns0#"base-price" - (e.ns0#"tax"/e.ns0#"quantity"),
                 PBSI__Tax_Value__c: e.ns0#tax/e.ns0#quantity,
                 PBSI__ItemDescription__c: e.ns0#"product-name",
                 PBSI__Quantity_Needed__c: e.ns0#quantity,
                 "PBSI__Item__c": e.ns0#"custom-attributes".ns0#"custom-attribute"          
             
        }

    },
    PBSI__Sales_Order_Lines__r: {
        records: payload.ns0#order.ns0#"shipping-lineitems".*ns0#"shipping-lineitem" map ( s, slindex) -> {
            "attributes": {
                "type": "PBSI__PBSI_Sales_Order_Line__c",
                "referenceId": s.ns0#"shipment-id"
            },
                PBSI__Price__c: s.ns0#"base-price" - s.ns0#"tax",
                PBSI__Tax_Value__c: s.ns0#tax,
                PBSI__ItemDescription__c: s.ns0#"lineitem-text",
                PBSI__Quantity_Needed__c: 1,
                "PBSI__Item__c": "a0a1x000001PmTc"                                      
        }
        
    },
    
    
    
        
    PBSI__Customer__c: (payload.ns0#order.ns0#"custom-attributes".*ns0#"custom-attribute"
        filter (item) -> (item.@"attribute-id" == "sscAccountid")) [0]      
}]

ввод XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<order order-no="00000907" xmlns="http://www.demandware.com/xml/impex/order/2006-10-31">
    <order-date>2020-07-10T08:57:05.076Z</order-date>
    <current-order-no>00000907</current-order-no>
    <product-lineitems>
        <product-lineitem>
            <net-price>54.17</net-price>
            <tax>10.83</tax>
            <gross-price>65.00</gross-price>
            <base-price>65.00</base-price>
            <lineitem-text>Travel pillow</lineitem-text>
            <tax-basis>65.00</tax-basis>
            <position>1</position>
            <product-id>116065</product-id>
            <product-name>Travel pillow</product-name>
            <quantity unit="">1.0</quantity>
            <tax-rate>0.2</tax-rate>
            <shipment-id>00004505</shipment-id>
            <gift>false</gift>
            <custom-attributes>
                <custom-attribute attribute-id="sscProductId">a0a1x000001Pjhj</custom-attribute>
            </custom-attributes>
        </product-lineitem>
    </product-lineitems>
    <shipping-lineitems>
        <shipping-lineitem>
            <net-price>4.99</net-price>
            <tax>1.00</tax>
            <gross-price>5.99</gross-price>
            <base-price>5.99</base-price>
            <lineitem-text>Shipping</lineitem-text>
            <tax-basis>5.99</tax-basis>
            <item-id>STANDARD_SHIPPING</item-id>
            <shipment-id>00004505</shipment-id>
            <tax-rate>0.2</tax-rate>
        </shipping-lineitem>
    </shipping-lineitems>
</order>

1 Ответ

0 голосов
/ 15 июля 2020

реструктурированный рабочий код. больше информации в документе: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite_sobject_tree.htm#topic -title

%dw 2.0
    output application/json
    ns ns0 http://www.demandware.com/xml/impex/order/2006-10-31
    ---
    [{  
        Ascent4Ecomm__Ecomm_Order_ID__c: payload.ns0#order.ns0#"original-order-no",
        Ascent4Ecomm__Ecomm_Order_Name__c: payload.ns0#order.ns0#"original-order-no",
        Ascent4Ecomm__Ecomm_Order_Number__c: payload.ns0#order.ns0#"original-order-no", 
        attributes: {
            "type": "PBSI__PBSI_Sales_Order__c",
            "referenceId": "SO"
        },
        PBSI__Sales_Order_Lines__r: {   
            records: [
                        {
                            (payload.ns0#order.ns0#"product-lineitems".*ns0#"product-lineitem" map ( e , lineindex ) -> {
                            "attributes": {"type": "PBSI__PBSI_Sales_Order_Line__c","referenceId": e.ns0#"product-id"},                     
                             PBSI__Price__c: e.ns0#"base-price" - (e.ns0#"tax"/e.ns0#"quantity"),
                             PBSI__Tax_Value__c: e.ns0#"tax"/e.ns0#quantity,
                             PBSI__ItemDescription__c: e.ns0#"product-name",
                             PBSI__Quantity_Needed__c: e.ns0#quantity,
                             "PBSI__Item__c": e.ns0#"custom-attributes".ns0#"custom-attribute"  
                            })
                        },
                        {
                            (payload.ns0#order.ns0#"shipping-lineitems".*ns0#"shipping-lineitem" map ( s, slindex) -> {
                            "attributes": {"type": "PBSI__PBSI_Sales_Order_Line__c","referenceId": s.ns0#"shipment-id"},    
                            PBSI__Price__c: s.ns0#"base-price" - s.ns0#"tax",
                            PBSI__Tax_Value__c: s.ns0#tax,
                            PBSI__ItemDescription__c: s.ns0#"lineitem-text",
                            PBSI__Quantity_Needed__c: 1,
                            "PBSI__Item__c": "a0a1x000001PmTc"                                      
                            })
                        }
                    
                    ]            
        },  
        PBSI__Customer__c: (payload.ns0#order.ns0#"custom-attributes".*ns0#"custom-attribute"
            filter (item) -> (item.@"attribute-id" == "sscAccountid")) [0]      
    }]
...