高章伟
2022-02-24 2aa8da8af66aa8ae00f25831aed6bb0364176e7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
public without sharing class ArriveGsDetailsController {
    /*****************検索用******************/
    public Consumable_order__c coc { get; set; }
    private String accountid = null;
    private Decimal orderallcount = 0;
    //public String alertMessage {set;get;}
    public String baseUrl {get;private set;}
    public Boolean arrivetoorder { get; set; }
    /*****************画面表示Bean******************/
    public List<ConsumableorderdetailsInfo> consumableorderdetailsRecords { get; set; }
    /****************************************/
    //add by rentx 20210622 start  CHAN-C3K4ZQ
    public List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; }
    
     public void makeRecordsView(List<ConsumableorderdetailsInfo> recordsdummy){
        consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>();
 
        // if(recordsdummy.size() > 1000){
            List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>();
            List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>();
            ConsumableorderdetailsInfo c = null;
            ConsumableorderdetailsRecordsbreak.clear();
            ConsumableorderdetailsRecordsbreakover.clear();
            consumableorderdetailsRecordsview.clear();
            //选择产品view
            ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>();
            ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>();
            if(recordsdummy.size() > 1000){
                for(Integer i = 0; i < recordsdummy.size(); i++){
                    if(i < 1000){
                        c = recordsdummy.get(i);
                        ConsumableorderdetailsRecordsbreak.add(c);
                    }else{
                        c = recordsdummy.get(i);
                        ConsumableorderdetailsRecordsbreakover.add(c);
                    }
                }
                consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak);
                consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover);
            }else{
                consumableorderdetailsRecordsview.add(recordsdummy);
            }
        // }else{
        //     consumableorderdetailsRecordsview.add(recordsdummy);
        // }
    }
    // add by rentx 20210622 end CHAN-C3K4ZQ
 
    //到货明细2
    //private List<Consumable_order_details2__c> consumablearriveproductdetailsSelected = new List<Consumable_order_details2__c>();
    // 产品 ID
    private String ESetId = '';
    private Integer consumableorderdetailsCount = null;
    public ArriveGsDetailsController(){
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        ESetId = ApexPages.currentPage().getParameters().get('esetId');
        consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
        consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>();
    }
    public void init(){
        //取经销商信息
        String userId = UserInfo.getUserId();
        List<user> Useracc = New List<user>();
        Useracc = [select accountid from user where id =:userId];
        accountid = Useracc[0].accountid;
 
        List<Consumable_order__c> Rs = New List<Consumable_order__c>();
        if(ESetId== NULL || ESetId==''){
        }else{
        Rs = [SELECT id,name,Order_reason__c,Arrive_Order__c,Arrive_Order__r.Total_num__c,Arrive_Order__r.IsShipment__c,
                    recordtypeid,Order_status__c,Deliver_date__c,Arrive_total_amount__c
                FROM Consumable_order__c
                WHERE id =:ESetID];
        coc =  new Consumable_order__c();
        if(Rs.size()>0){
            coc = Rs[0];
            orderallcount = coc.Arrive_Order__r.Total_num__c;
        }
        if(coc.Arrive_Order__c == null){
            arrivetoorder = true;
            //alertMessage = '到货订单没有与发货单联动。';
        }
        List<Consumable_order_details2__c> consumablearriveproductdetailsSelected = [SELECT Id,Dealer_Arrive__c,Bar_Code__c, RecordTypeid, Name,Consumable_Product__r.Name__c,
                                                    Consumable_Product__c,Consumable_Product__r.Name,Dealer_Saled__c,
                                                    Sterilization_limit__c,Deliver_date__c,
                                                    Intra_Trade_List_RMB__c,Asset_Model_No__c,Arrive_Date__c,Send_Date__c,
                                                    Consumable_Product__r.SFDA_Status__c,
                                                    Consumable_Product__r.Product2__r.Packing_list_manual__c,
                                                    Consumable_Product__r.Product2__r.SFDA_Approbation_No__c,
                                                    Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c
                                                FROM Consumable_order_details2__c
                                                WHERE Consumable_Arrived_order__c = :ESetId
                                                //AND Consumable_order_minor__r.Dealer_Info__c = :accountid
                                                ORDER BY Name ];
        for (Integer i = 0; i < consumablearriveproductdetailsSelected.size(); i++) {
                consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(consumablearriveproductdetailsSelected[i]));
            }
        }
        for(ConsumableorderdetailsInfo bss : consumableorderdetailsRecords){
            bss.packing_list = bss.Prod.Product2__r.Packing_list_manual__c;
            bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
            //update by rentx 20210622 start CHAN-C3K4ZQ
            // bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
            bss.expiration_DateStr = bss.Prod.Product2__r.SFDA_Expiration_Date__c == null ? '' : bss.Prod.Product2__r.SFDA_Expiration_Date__c.format();
            bss.Sterilization_limitStr = bss.esd.Sterilization_limit__c == null ? '' : bss.esd.Sterilization_limit__c.format();
            //update by rentx 20210622 end CHAN-C3K4ZQ
        }
        consumableorderdetailsCount = consumableorderdetailsRecords.size();
        //add by rentx 20210622 CHAN-C3K4ZQ
        makeRecordsView(consumableorderdetailsRecords);
        //add by rentx 20210622 CHAN-C3K4ZQ
        
    }
 
    public PageReference ProSale() {
 
        List<Consumable_order_details2__c> orderdetails = new List<Consumable_order_details2__c>();
        //发货明细2
        orderdetails = [SELECT Id 
                        FROM Consumable_order_details2__c
                        WHERE Consumable_order_minor__c =:coc.Arrive_Order__c
                        AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
                        AND Dealer_Arrive__c = true ];
        if(orderallcount!= consumableorderdetailsCount){
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '订单不完全到货,无法出库。'));
            return null;
        }
        return ProS();
    }
 
    // 销售画面
    public PageReference ProS() {
        // 出库指示画面
        if(coc.Arrive_Order__r.IsShipment__c == true){
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '订单已经出库'));
            return null;
        }
        PageReference ref = new Pagereference('/summonsCreat?arriveorder=' + ESetId +'&KeyWords=Redirect');
        ref.setRedirect(true);
        return ref;
    }
           // Data Bean
        class ConsumableorderdetailsInfo implements Comparable {
        public Consumable_order_details2__c esd { get; set; }
        public Product2__c Prod { get; set; }
        public Decimal packing_list { get; set; }
        public Date expiration_Date { get; set; }
        public String approbation_No { get; set; }
        //add by rentx 20210622 start 
        public String expiration_DateStr {get;set;}
        public String Sterilization_limitStr {get;set;}
        // 已存在消耗品明细用
        public ConsumableorderdetailsInfo(Consumable_order_details2__c e) {
            esd = e;
            Prod = e.Consumable_Product__r;
        }
        // 排序Consumable_order__c
        public Integer compareTo(Object compareTo) {
            return null;
        }
    }
}