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
kuldeep paliwalkuldeep paliwal 

can u help writing this trigger

i have phurchase order on that we have field Customer_PO, purchase order is related to purchase order line(Master detail relationship) where purchase order is parent and purchase order line is detail
now purchase order line is a lookup relationship to 'sales order line' which is child of 'sales order'
whenever user add  Customer_PO on purchase order it also add field of sales order.

i write something like this can anyone check and update it..

trigger UpdateCustomerPOField on AcctSeedERP__Purchase_Order__c (after insert) {

    list<id> pOrderLineId = new list<id>();
    list<id> sOrderLineId = new list<id>();
    list<id> sOrderId = new list<id>();
    
    List<AcctSeedERP__Purchase_Order__c> purchase = [SELECT Id,Customer_PO__c,(SELECT Id,Name FROM AcctSeedERP__Purchase_Order_Lines__r ) FROM AcctSeedERP__Purchase_Order__c LIMIT 1];

    for(AcctSeedERP__Purchase_Order__c  purchaseOrder : purchase){
        for(AcctSeedERP__Purchase_Order_Line__c purchaseOrderLine : purchaseOrder.AcctSeedERP__Purchase_Order_Lines__r ) {
        pOrderLineId.add(purchaseOrderLine.Id);
        }
    }

    List<AcctSeedERP__Purchase_Order_Line__c> pOrderLineList = [Select Id  FROM AcctSeedERP__Purchase_Order_Line__c Where Id IN: pOrderLineId LIMIT 1];
    map<id, AcctSeedERP__Purchase_Order_Line__c> purIdpurObjectMap = new map<id, AcctSeedERP__Purchase_Order_Line__c>();
            
    for(AcctSeedERP__Purchase_Order_Line__c purOrder : pOrderLineList){        
                purIdpurObjectMap.put(purOrder.Id, purOrder);
    }
            
    list<AcctSeedERP__Sales_Order_Line__c> salesOrderLineList = [Select id, AcctSeedERP__Purchase_Order_Line__c From AcctSeedERP__Sales_Order_Line__c Where AcctSeedERP__Purchase_Order_Line__c In: pOrderLineId LIMIT 1];
    map<id, list<AcctSeedERP__Sales_Order_Line__c>> purOrderLineSalesOrderLineMap = new map<id, list<AcctSeedERP__Sales_Order_Line__c>>();

    for(AcctSeedERP__Sales_Order_Line__c salesOrderLine : salesOrderLineList){
    list<AcctSeedERP__Sales_Order_Line__c> tempList = purOrderLineSalesOrderLineMap.get(salesOrderLine.AcctSeedERP__Purchase_Order_Line__c);
        if(templist!= null && templist.Size()>0){
                    tempList.add(salesOrderLine);
        }else{
                    tempList = new list<AcctSeedERP__Sales_Order_Line__c>();
                    tempList.add(salesOrderLine);
            }
                    purOrderLineSalesOrderLineMap.put(salesOrderLine.AcctSeedERP__Purchase_Order_Line__c, tempList);
                    sOrderLineId.add(salesOrderLine.AcctSeedERP__Sales_Order__c);
    }
    
    list<AcctSeedERP__Sales_Order__c> salesOrderList = [Select id,Customer_PO__c,(SELECT Id,Name FROM AcctSeedERP__Sales_Order_Line__r)  From AcctSeedERP__Sales_Order__c Where Id In: sOrderLineId];
    map<id, AcctSeedERP__Sales_Order__c> salIdsalObjectMap = new map<id, AcctSeedERP__Sales_Order__c>();
    
    for(AcctSeedERP__Sales_Order__c salesOrder : salesOrderList){
                    salIdsalObjectMap.put(salesOrder.Id, salesOrder);
                    for(AcctSeedERP__Sales_Order_Line__c salesLine : salesOrder.AcctSeedERP__Sales_Order_Line__r) {
        sOrderId.add(salesLine.Id);
        }
    }

    for(AcctSeedERP__Purchase_Order__c pur : trigger.new){
    List<AcctSeedERP__Sales_Order_Line__c> listOfSalesOrder = purOrderLineSalesOrderLineMap.get(pur.AcctSeedERP__Purchase_Order_Line__c);
    
        for(AcctSeedERP__Sales_Order__c sales : listOfSalesOrder){            
                    AcctSeedERP__Sales_Order__c salesObject  = salIdsalObjectMap.get(sales.id);
                    salesObject.Customer_PO__c = pur.Customer_PO__c;
        }
    }
}