public with sharing class LexSaleAndDeliveryController {
    // 显示数据条数限制
    private static Integer Select_Limit = 100;
    
    //初始化
    @AuraEnabled
    public static ResponseBodyLWC init() {
        try {
            System.debug('init');
            //经销商id
            String accountid = '';
            //经销商产品分类
            String agencyProType = '';
            //登录用户 ID
            String userinfoId = '';
            //登录者工作地
            String userWorkLocation = '';

            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String,object> data = new Map<String,object>();
            res.entity = data;
            userinfoId = UserInfo.getUserId();
            List<user> Useracc = New List<user>();
            Useracc = [SELECT
                            accountid, Work_Location__c,UserPro_Type__c
                        FROM user
            WHERE id =:userinfoId];
            accountid = Useracc[0].accountid;
            agencyProType = Useracc[0].UserPro_Type__c;
            if(String.isBlank(Useracc[0].UserPro_Type__c)){
                agencyProType = 'ET';
            }
            userWorkLocation = Useracc[0].Work_Location__c;
            data.put('userinfoId',userinfoId);
            data.put('accountid',accountid);
            data.put('agencyProType',agencyProType);
            data.put('userWorkLocation',userWorkLocation);
            System.debug('userinfoId = ' + userinfoId + ' accountid = ' + accountid + ' agencyProType = ' + agencyProType + ' userWorkLocation = ' + userWorkLocation);
            //默认检索显示未完成的指示单
            List<Consumable_order__c> raesList = new List<Consumable_order__c>();
            String soql = 'select Id, Name,ShipmentAccount__c,SummonsStatus_c__c,Billed_Status__c,CreatedDate,Outbound_Date__c,Order_ForCustomerText__c,InvoiceNotPro_total_amount__c,InvoiceNotPro_money__c from Consumable_order__c';
            soql += '  WHERE Order_type__c = \'' + '传票' + '\'  ';
            soql += ' and Order_ProType__c =\'' + agencyProType +'\' ';
            soql += 'and SummonsStatus_c__c != \'' + '已完成' + '\' and Dealer_Info__c =\'' + accountid +'\' ';
            soql += 'and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
            soql += 'order by SummonsStatus_c__c';
            System.debug('soql = ' + soql);
            raesList = Database.query(soql);
            System.debug('raesList = ' + raesList);
            data.put('raesList', raesList);
            res.status = 'Success';
            res.code = 200;
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error',500, e.getMessage(), '');
        }
    }

    // 已出库未开票的出库单
    @AuraEnabled
    public static ResponseBodyLWC searchOrderInstatus(String orderDate,String deliverDate,String accountid,String agencyProType,String userWorkLocation,String category1,String category2) {
        try {
            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String,object> data = new Map<String,object>();
            res.entity = data;

            Date cate2 = String.isEmpty(orderDate) ? null : Date.valueOf(orderDate.replace('/', '-'));
            Date cate3 = String.isEmpty(deliverDate) ? null : Date.valueOf(deliverDate.replace('/', '-'));
            // 获得订单一览
            List<Consumable_order__c> raesList = new List<Consumable_order__c>();
            String soql = 'select Id, Name,ShipmentAccount__c,SummonsStatus_c__c,Billed_Status__c,CreatedDate,Outbound_Date__c,Order_ForCustomerText__c,InvoiceNotPro_total_amount__c,InvoiceNotPro_money__c from Consumable_order__c';
            soql += ' WHERE   Order_type__c = \'' + '传票' + '\' ';
            soql += ' and Dealer_Info__c =\'' + accountid +'\' ';
            soql += ' and Order_ProType__c =\'' + agencyProType +'\' ';
            soql += ' and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
            if (!String.isBlank(category1)) {
                soql += ' and Name like \'%' + String.escapeSingleQuotes(category1.replaceAll('%', '\\%')) + '%\' ';
            }
            if (!String.isBlank(category2)) {
                soql += ' and ShipmentAccount__c like \'%' + String.escapeSingleQuotes(category2.replaceAll('%', '\\%')) + '%\' ';
            }
            if(cate2 != null){
                soql += ' and Outbound_Date__c >= :cate2 ';
            }
            if(cate3 != null){
                soql += ' and Outbound_Date__c <= :cate3 ';
            }
            soql += 'and SummonsForDirction__c != \'' + '互相调货' + '\' ';
            soql += 'and SummonsStatus_c__c = \'' + '已完成' + '\' ';
            soql += 'and Billed_Status__c != \'' + '全部开票' + '\' ';
            soql += 'order by CreatedDate desc limit ' + Select_Limit;
            System.debug('soql = ' + soql);
            raesList = Database.query(soql);
            data.put('raesList', raesList);
            if(raesList.size()>0){
                res.msg = '共有' + raesList.size() + '个出库单';
            }else{
                res.msg = '没有搜索到相关出库单。';
            }
            res.status = 'Success';
            res.code = 200;
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error',500, e.getMessage(), '');
        }
    }

    //还没出库的出库单
    @AuraEnabled
    public static ResponseBodyLWC searchConsumableorderdetails(String orderDate,String deliverDate,String accountid,String agencyProType,String userWorkLocation,String category1,String category2) {
        try {
            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String,object> data = new Map<String,object>();
            res.entity = data;
            Date cate2 = String.isEmpty(orderDate) ? null : Date.valueOf(orderDate.replace('/', '-'));
            Date cate3 = String.isEmpty(deliverDate) ? null : Date.valueOf(deliverDate.replace('/', '-'));
            // 获得订单一览
            List<Consumable_order__c> raesList = new List<Consumable_order__c>();
            String soql = 'select Id, Name,ShipmentAccount__c,SummonsStatus_c__c,Billed_Status__c,CreatedDate,Outbound_Date__c,Order_ForCustomerText__c,InvoiceNotPro_total_amount__c,InvoiceNotPro_money__c from Consumable_order__c';
            soql += ' WHERE   Order_type__c = \'' + '传票' + '\' ';
            soql += ' and Dealer_Info__c =\'' + accountid +'\' ';
            soql += ' and Order_ProType__c =\'' + agencyProType +'\' ';
            soql += ' and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
            if (!String.isBlank(category1)) {
                soql += ' and Name like \'%' + String.escapeSingleQuotes(category1.replaceAll('%', '\\%')) + '%\' ';
            }
            if (!String.isBlank(category2)) {
                soql += ' and ShipmentAccount__c like \'%' + String.escapeSingleQuotes(category2.replaceAll('%', '\\%')) + '%\' ';
            }
            if(cate2 != null){
                soql += ' and Order_date__c >= :cate2 ';
            }
            if(cate3 != null){
                soql += ' and Order_date__c <= :cate3 ';
            }
            soql += 'and SummonsStatus_c__c != \'' + '已完成' + '\' ';
            soql += 'order by SummonsStatus_c__c limit '+ Select_Limit;
            System.debug('soql+++++' + soql);
            raesList = Database.query(soql);
            data.put('raesList', raesList);
            if(raesList.size()>0){
                res.msg = '共有' + raesList.size() + '个出库单';
            }else{
                res.msg = '没有搜索到相关出库单。';
            }
            res.status = 'Success';
            res.code = 200;
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error',500, e.getMessage(), '');
        }
    }

    // 已出库已开票的出库单
    @AuraEnabled
    public static ResponseBodyLWC searchConsumableorFinish(String orderDate,String deliverDate,String accountid,String agencyProType,String userWorkLocation,String category1,String category2) {
        try {
            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String,object> data = new Map<String,object>();
            res.entity = data;
            Date cate2 = String.isEmpty(orderDate) ? null : Date.valueOf(orderDate.replace('/', '-'));
            Date cate3 = String.isEmpty(deliverDate) ? null : Date.valueOf(deliverDate.replace('/', '-'));
            List<Consumable_order__c> raesList = new List<Consumable_order__c>();
            String soql = 'select Id, Name,ShipmentAccount__c,SummonsStatus_c__c,Billed_Status__c,CreatedDate,Outbound_Date__c,Order_ForCustomerText__c,InvoiceNotPro_total_amount__c,InvoiceNotPro_money__c from Consumable_order__c';
            soql += ' WHERE   Order_type__c = \'' + '传票' + '\' ';
            soql += ' and Dealer_Info__c =\'' + accountid +'\' ';
            soql += ' and Order_ProType__c =\'' + agencyProType +'\' ';
            soql += ' and Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' ';
            if (!String.isBlank(category1)) {
                soql += ' and Name like \'%' + String.escapeSingleQuotes(category1.replaceAll('%', '\\%')) + '%\' ';
            }
            if (!String.isBlank(category2)) {
                soql += ' and ShipmentAccount__c like \'%' + String.escapeSingleQuotes(category2.replaceAll('%', '\\%')) + '%\' ';
            }
            if(cate2 != null){
                soql += ' and Outbound_Date__c >= :cate2 ';
            }
            if(cate3 != null){
                soql += ' and Outbound_Date__c <= :cate3 ';
            }
            soql += 'and SummonsStatus_c__c = \'' + '已完成' + '\' ';
            soql += 'and Billed_Status__c = \'' + '全部开票' + '\' ';
            soql += 'order by CreatedDate desc limit ' + Select_Limit;
            raesList = Database.query(soql);
            data.put('raesList', raesList);
            if(raesList.size()>0){
                res.msg = '共有' + raesList.size() + '个出库单';
            }else{
                res.msg = '没有搜索到相关出库单。';
            }
            res.status = 'Success';
            res.code = 200;
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error',500, e.getMessage(), '');
        }
    }
}