zoukankan      html  css  js  c++  java
  • 零配件入库 Trigger 插入触发台账和零配件更新

    trigger PartsInTrigger on PartsIn__c (after insert) {
        PartsInHandler handler = new PartsInHandler();
        if(Trigger.IsAfter){
            if(Trigger.isInsert){
                handler.PartsIninsert(Trigger.New);
            }
        }
    }
    

      

    public with sharing class PartsInHandler {
        public void PartsIninsert(List<PartsIn__c> partsNew){
            Map<String,PartsIn__c> MapSpin = new Map<String,PartsIn__c>();  //入库map   型号,对象
            Map<String,Integer> MapSpinQ = new Map<String,Integer>();       //入库数量map  型号,数量
            List<Parts__c> addparList = new List<Parts__c>();
            Set<Id> partIds = new Set<Id>();      
            
            For(PartsIn__c par: partsNew){
                MapSpin.put(par.Name, par);  
                MapSpinQ.put(par.Name, Integer.valueOf(par.Quantity__c));             
            }  
            //system.debug(MapSpinQ.keySet());         
                    
            //查询与入库对应的台账                            
            List<Parts__c> parList = [SELECT Id,Name,Status__c,SPPrice__c,PartsModel__c,Position__c,LotNo__c,STContractNo__c 
                       From Parts__c 
                       Where Name in: MapSpin.keySet()
                       AND Status__c ='缺货'
                       ORDER BY CreatedDate];
             
            For(Parts__c plist: parList){
                if(MapSpinQ.containsKey(plist.Name)){
                    Integer pi = MapSpinQ.get(plist.Name);
                    //system.debug('pi='+pi); 
                    if(pi > 0){
                    PartsIn__c pts = MapSpin.get(plist.Name);
                        plist.Status__c = '已预约';
                        plist.SPPrice__c = pts.SPPrice__c;
                        plist.NetPrice__c = pts.Net_to_YTR__c; 
                        pi -= 1;
                        MapSpinQ.put(plist.Name, pi);
                        partIds.add(plist.Id);
                    }
                }
            }
             
            //查询与台账对应的零配件                            
            List<PartsAU__c> AUList = [SELECT Id,SparePartsModel__c,Status__c,WorkOrderItem__c,DetailsSpareParts__c
                       From PartsAU__c 
                       Where DetailsSpareParts__c in: partIds 
                       AND Status__c ='缺货'];
           
            For(PartsAU__c paulist: AUList){
                paulist.Status__c = '已预约';
               // paulist.Type__c= '预约';
            } 
            
            for(String piq: MapSpinQ.keyset()) {
                if(MapSpinQ.get(piq) > 0){
                    for(Integer i = 0; i < MapSpinQ.get(piq); i++){
                        PartsIn__c pi = MapSpin.get(piq);
                        Parts__c ps = new Parts__c();
                        ps.Name = pi.Name;
                        ps.PartsModel__c = pi.SparePartsModel__c;
                        ps.Position__c =pi.Location__c; 
                        ps.LotNo__c =pi.BatchNo__c;
                        ps.STContractNo__c =pi.ContractNo__c; 
                        ps.InDate__c =pi.InDate__c; 
                        ps.SPPrice__c =pi.SPPrice__c; 
                        ps.Status__c = '可使用';
                        ps.NetPrice__c = pi.Net_to_YTR__c;
                        addparList.add(ps);
                    }
                }
            }      
            //system.debug(addparList); 
            update parList;
            insert addparList;
            update AUList;
        }
    }
  • 相关阅读:
    第十六节 URL映射的时候指定默认参数
    第十五节 自定义path转换器
    第十四节 reverse函数补充
    第十一节 实例命名空间
    第十节 url命名和应用命名空间
    第八节 url解释器
    MySQL条件查询
    MySQL判断数据是否为空
    MySQL拼接字符串
    MySQL加号+ 的作用
  • 原文地址:https://www.cnblogs.com/pipidan/p/8695806.html
Copyright © 2011-2022 走看看