function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
d.tejdeep@nicomatic.ind.tejdeep@nicomatic.in 

Trigger to create parent and child records from set of one object records

I have one object named "Order_batch__c" .In that i have records in such a way
I want to separate the data into two records one is parent object "order" and child object "order item"

order consists of fields : customer po,account name, customer id
order item consists of fields : nicomatic pin,quantity ordered

Trigger:
 
trigger orderitem on order_batch__c (after insert , after update) {
 Set<Id> Ids= new Set<Id>();
    for (order_batch__c member : Trigger.new){
        Ids.add(member.Id); 
        
        
        }
 List<order_batch__c> memberList = new List<order_batch__c>([Select Id,Or_customer_PO_Number__c,Or_Nicomatic_p_n__c, Or_clientpn__c,Quantity_Ordered__c,Requested_Date__c,Discount__c,Unit_price__c  From order_batch__c  where Id in :Ids]);
    for(order_batch__c temp : memberList )
    {
        order__c o= new order__c();
        o.Customer_Po__c=o=temp.Or_customer_PO_Number__c;
        insert o;
        Order_Item__c member2 = new Order_Item__c();
       // mermber2.Order__c=temp.Or_customer_PO_Number__c;
        member2.Name = temp.Or_Nicomatic_p_n__c;
        member2.Client_PN__c = temp.Or_clientpn__c;
         member2.Quantity__c = temp.Quantity_Ordered__c;
        member2.Request_Date__c = temp.Requested_Date__c;
         member2.Discount__c = temp.Discount__c;
        member2.Price__c = temp.Unit_price__c;
        insert member2;
        
        
    }
 }
My requirement is to separate records in parent and child records .when ever there is an update in order batch records it has to update accordingly parent or child.

I am getting error in the above trigger .can any body help me regarding this




User-added image
Swati GSwati G
How do you identify to which order that order batch record is mapped? do you have any unique identifier in order batch which you mapped with order?
Rohit SharmaGRohit SharmaG
Can you let me know what error your are getting ?
d.tejdeep@nicomatic.ind.tejdeep@nicomatic.in
trigger orderitem on order_batch__c (after insert , after update) {
    order__c[] orders = new order__c[] {};
    for (order_batch__c ob : Trigger.new){
    if(Trigger.isInsert)
        {
   orders.add(new order__c(Customer_Po__c = ob.Or_customer_PO_Number__c));
    }
    if(Trigger.isupdate)
        {
   orders.add(new order__c(id=ob.id,Customer_Po__c = ob.Or_customer_PO_Number__c));     
        }
    }
    upsert orders;
    Order_Item__c[] items = new Order_Item__c[] {};
    Integer index = 0;
    for (order_batch__c ob : Trigger.new)
    {
    if(Trigger.isInsert)
        {
 items.add(new Order_Item__c(
                Name = ob.Or_Nicomatic_p_n__c,
                Client_PN__c = ob.Or_clientpn__c,
                Quantity__c = ob.Quantity_Ordered__c,
                Request_Date__c = ob.Requested_Date__c,
                Discount__c = ob.Discount__c,
                Price__c = ob.Unit_price__c,
                Order__c = orders[index].Id
                ));
        index++;
    }
    if(Trigger.isupdate)
        {
    items.add(new Order_Item__c(
                 ID=ob.id,
                Name = ob.Or_Nicomatic_p_n__c,
                Client_PN__c = ob.Or_clientpn__c,
                Quantity__c = ob.Quantity_Ordered__c,
                Request_Date__c = ob.Requested_Date__c,
                Discount__c = ob.Discount__c,
                Price__c = ob.Unit_price__c,
                Order__c = orders[index].Id
                ));
        index++;
    }
    upsert items;
 }
}
I have re wrote the trigger like this .I am getting error like this:

Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger orderitem caused an unexpected exception, contact your administrator: orderitem: execution of AfterUpdate caused by: System.TypeException: Invalid id value for this SObject type: a1EN000000025fIMAQ: Trigger.orderitem: line 11, column 1


My requirement is to separate records in parent and child records .when ever there is an update in order batch records it has to update accordingly parent or child.

I am getting error in the above trigger .can any body help me regarding this
Swati GSwati G
At line 11, you are setting order batch id in order id. YOu should have some field which identify to which order the current order batch should be mapped.