buli
2023-04-26 610aaa20b10fecad29607c2f1912721ff01bb379
backup0421
6个文件已修改
483 ■■■■■ 已修改文件
.vscode/settings.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ConInvoiceViewController.cls 454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignForm.cls 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls-meta.xml 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/updateESignBatchTest.cls 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/settings.json
@@ -5,5 +5,6 @@
    "**/.sfdx": true
  },
  "salesforcedx-vscode-core.show-cli-success-msg": false,
  "open-in-browser.default": "{\"opn-in-browser.default\":\"Microsoft Edge\"}"
  "open-in-browser.default": "{\"opn-in-browser.default\":\"Microsoft Edge\"}",
  "salesforcedx-vscode-apex.java.home": "C:\\Users\\buli\\Documents\\Software\\JDK\\jdk19\\bin"
}
force-app/main/default/classes/ConInvoiceViewController.cls
@@ -28,10 +28,7 @@
        return (coc.Name);
    }
    // 精琢科技   zxk  2021-11-03  存放消耗品明细  end
    public List < Consumable_Orderdetails__c > conoList {
        get;
        set;
    }
    public List<Consumable_Orderdetails__c> conoList { get; set; }
    // 精琢科技   zxk  2021-11-03  存放消耗品明细  end
    public String shipmentAccount{
@@ -54,8 +51,6 @@
    //发票明细1(出库单)
    private List<Consumable_order__c> invoiceOrderSelectedList = new List<Consumable_order__c>();
    Map<String,Decimal> ordermx1defaultMap = new Map<String,Decimal>();
    //出库单汇总金额 from 发票明细1
    Map<String,Decimal> outorderMoneytMap = new Map<String,Decimal>();
@@ -77,9 +72,9 @@
        }
    }
    list<Dealer_elationship__c> Dealerelationship = new list<Dealer_elationship__c>();
    list<Dealer_elationship__c> Dealerelationship = new List<Dealer_elationship__c>();
    //排序使用
    private String[] orderby = new String[]{ 'Outbound_Date__c','Name','ShipmentAccount__c'};
    private String[] orderby = new List<String>{ 'Outbound_Date__c', 'Name', 'ShipmentAccount__c' };
    public String sortKey { get; set; }
    public String preSortKey { get; private set; }
    public Boolean sortOrderAsc { get; private set; }
@@ -108,8 +103,8 @@
        this.sortKey = '1';
        this.preSortKey = '1';
        this.sortOrderAsc = false;
        this.sortOrder = new String[2];
        this.sortOrder = new String[]{' ',' ',' ',' '};
        this.sortOrder = new List<String>(2);
        this.sortOrder = new List<String>{ ' ', ' ', ' ', ' ' };
        if(invoiceId!=null && invoiceId!='' && (statusEdit==''|| statusEdit==null)){
            editAble = false;
@@ -120,7 +115,7 @@
        }
        userId = UserInfo.getUserId();
        //userId = '00510000005QQ35';
        List<user> Useracc = New List<user>();
        List<user> Useracc = new List<user>();
        Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c FROM user WHERE id = :userId ];
        accountid = Useracc[0].accountid;
        userWorkLocation = Useracc[0].Work_Location__c;
@@ -130,14 +125,20 @@
        }
        coc = new Consumable_order__c();
        Dealerelationship = [SELECT Dealer_subordinate__c,Dealer_subordinate__r.Name FROM Dealer_elationship__c WHERE Dealer_principal__c =:accountid ];
        Dealerelationship = [
            SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name
            FROM Dealer_elationship__c
            WHERE Dealer_principal__c = :accountid
        ];
        List<Agency_Hospital_Link__c> AgencyHospitalLink = new List<Agency_Hospital_Link__c>();
        AgencyHospitalLink = [select Id, Name, Hospital__c, Hospital__r.Id, Hospital__r.Name, Agency__c
                                                from Agency_Hospital_Link__c
                                                WHERE Agency__c = :accountId];
        AgencyHospitalLink = [
            SELECT Id, Name, Hospital__c, Hospital__r.Id, Hospital__r.Name, Agency__c
            FROM Agency_Hospital_Link__c
            WHERE Agency__c = :accountId
        ];
         // 新規
        if (invoiceId== NULL || invoiceId=='') {
            if (deliveryId== NULL || deliveryId=='') {
        if (invoiceId == null || invoiceId == '') {
            if (deliveryId == null || deliveryId == '') {
                String msoql = makeSoql();
                invoiceOrderList = Database.query(msoql);
                for(Integer i = 0; i < invoiceOrderList.size(); i++){
@@ -149,7 +150,10 @@
                }else if(statusEdit!=''&&statusEdit!=null){
                    EditAble = true;
                }
                coc = [SELECT Id,Name,
                coc = [
                    SELECT
                        Id,
                        Name,
                    Invoice_status__c,
                    Invoice_Date__c,
                    Order_ForDealerText__c,
@@ -169,7 +173,8 @@
                    Invoicedet_attachment__c,
                    Outbound_order__c
                FROM Consumable_order__c
                WHERE Id =:deliveryId];
                    WHERE Id = :deliveryId
                ];
                coc.Name = '';
                if(coc.Order_ForDealer__c != null){
                    SecondDealer = coc.Order_ForDealer__c;
@@ -181,11 +186,14 @@
                }
                //发票关联出库单取得(出库单)
                invoiceOrderSelectedList = [SELECT Id,
                invoiceOrderSelectedList = [
                    SELECT
                        Id,
                                                    Order_ForDealer__r.Name,
                                                    Order_ForHospital__r.Name,
                                                    Order_ForDealerText__c,
                                                    Name,Outbound_Date__c,
                        Name,
                        Outbound_Date__c,
                                                    ShipmentAccount__c,
                                                    Order_Dealer_Info__c,
                                                    SummonsForDirction__c,
@@ -198,13 +206,17 @@
                                                    Billed_Status__c
                                                    FROM Consumable_order__c
                                                    WHERE Id = :deliveryId
                                                    order by Name ];
                    ORDER BY Name
                ];
                for(Integer i = 0; i < invoiceOrderSelectedList.size(); i++){
                    invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
                }
            }
        }else{
            coc = [SELECT Id,Name,
            coc = [
                SELECT
                    Id,
                    Name,
                        Invoice_status__c,
                        Invoice_Date__c,
                        Order_ForDealerText__c,
@@ -224,8 +236,8 @@
                        Invoicedet_attachment__c,
                        Outbound_order__c
                    FROM Consumable_order__c
                    WHERE Id =:invoiceId
                    AND Order_type__c = '发票'];
                WHERE Id = :invoiceId AND Order_type__c = '发票'
            ];
            if(coc.Order_ForDealer__c != null){
                SecondDealer = coc.Order_ForDealer__c;
            }
@@ -234,18 +246,23 @@
                HospitalName = coc.Order_ForHospital__r.Name;
            }
            //到链接表中查找关联出库单
            List<Consumable_order_LinkTable__c> outOrderList = [SELECT Outboundorder_Code_link__c
            List<Consumable_order_LinkTable__c> outOrderList = [
                SELECT Outboundorder_Code_link__c
                                        FROM Consumable_order_LinkTable__c
                                        WHERE Invoice_Code_link__c = :invoiceId];
                WHERE Invoice_Code_link__c = :invoiceId
            ];
            for(Integer i = 0; i < outOrderList.size(); i++){
                outOrderStringList.add(outOrderList[i].Outboundorder_Code_link__c);
            }
            //取得出库单信息
            invoiceOrderSelectedList = [SELECT Id,
            invoiceOrderSelectedList = [
                SELECT
                    Id,
                                                    Order_ForDealer__r.Name,
                                                    Order_ForHospital__r.Name,
                                                    Order_ForDealerText__c,
                                                    Name,Outbound_Date__c,
                    Name,
                    Outbound_Date__c,
                                                    ShipmentAccount__c,
                                                    Shipment_total_amount__c,
                                                    RrturnPro_total_amount__c,
@@ -255,9 +272,9 @@
                                                    Invoice_total_amount__c,
                                                    Billed_Status__c
                                                FROM Consumable_order__c
                                                WHERE Id in :outOrderStringList
                                                AND Order_Owner_WorkLocal__c =: userWorkLocation
                                                order by Name ];
                WHERE Id IN :outOrderStringList AND Order_Owner_WorkLocal__c = :userWorkLocation
                ORDER BY Name
            ];
            for(Integer i = 0; i < invoiceOrderSelectedList.size(); i++){
                outorderMoneytMap.put(invoiceOrderSelectedList[i].id, 0);
                invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
@@ -265,11 +282,14 @@
            if(String.isNotBlank(deliveryId)){
                //发票关联出库单取得(出库单)
                isChange = true;
                invoiceOrderSelectedList = [SELECT Id,
                invoiceOrderSelectedList = [
                    SELECT
                        Id,
                                                    Order_ForDealer__r.Name,
                                                    Order_ForHospital__r.Name,
                                                    Order_ForDealerText__c,
                                                    Name,Outbound_Date__c,
                        Name,
                        Outbound_Date__c,
                                                    ShipmentAccount__c,
                                                    Shipment_total_amount__c,
                                                    RrturnPro_total_amount__c,
@@ -279,9 +299,9 @@
                                                    Invoice_total_amount__c,
                                                    Billed_Status__c
                                                    FROM Consumable_order__c
                                                    WHERE Id = :deliveryId
                                                    AND Order_Owner_WorkLocal__c =: userWorkLocation
                                                    order by Name ];
                    WHERE Id = :deliveryId AND Order_Owner_WorkLocal__c = :userWorkLocation
                    ORDER BY Name
                ];
                for(Integer i = 0; i < invoiceOrderSelectedList.size(); i++){
                    if(!outorderMoneytMap.containsKey(invoiceOrderSelectedList[i].Id)){
                        invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
@@ -290,7 +310,9 @@
                }
            }
            //发票明细一览
            List<Consumable_Orderdetails__c> countDel = [SELECT Id,
            List<Consumable_Orderdetails__c> countDel = [
                SELECT
                    Id,
                                                            Consumable_ZS_order__c,
                                                            Name,
                                                            Consumable_order__c,
@@ -309,12 +331,16 @@
                                                            ProductPacking_list_manual__c
                                                        FROM Consumable_Orderdetails__c
                                                        WHERE Consumable_order__c = :invoiceId
                                                        order by Invoicedet1_OD_link__c];
                ORDER BY Invoicedet1_OD_link__c
            ];
            if(countDel.size()>0){
                for (Integer i = 0; i < countDel.size(); i++) {
                    outordercountMap.put(countDel[i].Invoicedet1_OD_link__c + countDel[i].Asset_Model_No__c,countDel[i]);
                    if(outorderMoneytMap.containsKey(countDel[i].Invoicedet1_OD_link__c)){
                        outorderMoneytMap.put(countDel[i].Invoicedet1_OD_link__c,outorderMoneytMap.get(countDel[i].Invoicedet1_OD_link__c) + countDel[i].InvoicedProCost_RMB__c);
                        outorderMoneytMap.put(
                            countDel[i].Invoicedet1_OD_link__c,
                            outorderMoneytMap.get(countDel[i].Invoicedet1_OD_link__c) + countDel[i].InvoicedProCost_RMB__c
                        );
                    }
                    invoiceOrderdetail1Recoeds.add(new InvoiceOrderInfo(countDel[i]));
                }
@@ -330,7 +356,9 @@
        if(SecondDealer==null||SecondDealer==''){
            provinceOpts.add(new SelectOption('', '-无-'));
            for(Integer i = 0; i < Dealerelationship.size(); i++){
                provinceOpts.add(new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name));
                provinceOpts.add(
                    new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name)
                );
            }
        }else{
            provinceOpts.add(new SelectOption('', '-无-'));
@@ -341,7 +369,9 @@
            }
            for(Integer i = 0; i < Dealerelationship.size(); i++){
                if(Dealerelationship[i].Dealer_subordinate__r.Name != SecondDealer){
                    provinceOpts.add(new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name));
                    provinceOpts.add(
                        new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name)
                    );
                }
            }
        }
@@ -365,11 +395,14 @@
            }
        }*/
        Map<String,String> consumableaccessoriesMap = new Map<String,String>();
        Map<String,String> invorceOrderIdMap = new Map<String,String>();
        List<Consumable_accessories_invoice__c> consumableaccessories =[SELECT Id, Name,Attachment_ID__c,Accessories_type__c FROM Consumable_accessories_invoice__c WHERE  Invoice_code__c =:invoiceId  ];
        List<Consumable_accessories_invoice__c> consumableaccessories = [
            SELECT Id, Name, Attachment_ID__c, Accessories_type__c
            FROM Consumable_accessories_invoice__c
            WHERE Invoice_code__c = :invoiceId
        ];
        System.debug('consumableaccessories = ' + consumableaccessories);
        if(consumableaccessories.size()>0){
            for (Integer i = 0; i < consumableaccessories.size(); i++) {
                consumableaccessoriesMap.put(consumableaccessories[i].Attachment_ID__c,consumableaccessories[i].Accessories_type__c);
@@ -440,6 +473,7 @@
    // 保存附件
    public PageReference saveAttachment() {
        Consumable_accessories_invoice__c attachmentdetails = new Consumable_accessories_invoice__c();
        System.debug('AttachmentRecoeds = ' + AttachmentRecoeds);
        for (InvoiceOrderInfo ass : AttachmentRecoeds)  {
            if(!String.isBlank(ass.mailSelectOptsin)){
                attachmentdetails.Id = ass.invoiceOrderId;
@@ -455,10 +489,8 @@
    }
    // 保存按钮
    public PageReference save() {
        System.debug('enter ConInvoiceViewController.save success');
        List<String> chukudanID = new List<String>();
        //  画面录入项判断
        //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'HospitalInfo +++++' + HospitalInfo + '-----' + HospitalName));
        //return null;
        if(coc.Name  ==''||coc.Name  == null){
            coc.Name.addError('请录入发票号。');
            return null;
@@ -477,19 +509,8 @@
            coc.addError('必须输入客户名或者二级经销商。');
            return null;
        }
        /*if(String.isBlank(HospitalInfo) && SecondDealer  != null && coc.Order_ForDealerText__c != null){
            coc.Order_ForDealerText__c.addError('请输入二级经销商或者经销商(录入)。');
            return null;
        }*/
        //CHAN-BSS5SQ    update by rentongxiao 2020-08-26  start
/*        if(HospitalInfo  !=null && HospitalInfo  !='' && SecondDealer  != null && coc.Order_ForDealerText__c != null){
            coc.addError('请输入客户名、二级经销商和经销商(录入)只可输入一个。');
            return null;
        }
*/
        if (HospitalInfo != null && HospitalInfo != '' && SecondDealer != null) {
            coc.addError('请输入客户名、二级经销商只可输入一个。');
        }
/*        if(HospitalInfo  !=null && HospitalInfo  !='' && (SecondDealer  != null || coc.Order_ForDealerText__c != null)){
            coc.addError('请输入客户名、二级经销商和经销商(录入)只可输入一个。');
@@ -536,7 +557,10 @@
                        }
                    }
                    if(SecondDealer != null){
                        if(ass.esd.Order_ForDealer__c != shipmentAccountString && ass.esd.Order_ForDealerText__c != shipmentAccountString){
                        if (
                            ass.esd.Order_ForDealer__c != shipmentAccountString &&
                            ass.esd.Order_ForDealerText__c != shipmentAccountString
                        ) {
                            //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, shipmentAccountString  + ass.esd.Order_ForDealer__c + ass.esd.Order_ForDealerText__c));
                            invoiceOrderAccountList.add(ass.esd.Name);
                        }
@@ -545,7 +569,10 @@
                    // if(coc.Order_ForDealerText__c != null){
                    if(coc.Order_ForDealerText__c != null && (HospitalInfo == null || HospitalInfo == '' )){
                    //update by rentx 2021-2-24 CHAN-BYH9PK end
                        if((ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') && ass.esd.ShipmentAccount__c != shipmentAccountString){
                        if (
                            (ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') &&
                            ass.esd.ShipmentAccount__c != shipmentAccountString
                        ) {
                            invoiceOrderAccountList.add(ass.esd.Name);
                        }
                    }
@@ -566,7 +593,10 @@
                // if(coc.Order_ForDealerText__c != null){
                if(coc.Order_ForDealerText__c != null && (HospitalInfo == null || HospitalInfo == '' )){
                //update by rentx 2021-2-24 CHAN-BYH9PK end
                    if((ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') && ass.esd.ShipmentAccount__c != shipmentAccountString){
                    if (
                        (ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') &&
                        ass.esd.ShipmentAccount__c != shipmentAccountString
                    ) {
                        invoiceOrderAccountList.add(ass.esd.Name);
                    }
                }
@@ -588,8 +618,8 @@
            }
        }
        Consumable_order__c invoiceHead = new Consumable_order__c();
        List<String> outOrderIdList = New List<String>();
        List<Consumable_order_LinkTable__c> invoiceLinkList = New List<Consumable_order_LinkTable__c>();
        List<String> outOrderIdList = new List<String>();
        List<Consumable_order_LinkTable__c> invoiceLinkList = new List<Consumable_order_LinkTable__c>();
        Map<String,String> insertDetMap = new Map<String,String>();
        Map<String,String> deleteDetMap = new Map<String,String>();
        //新建发票时
@@ -597,7 +627,8 @@
        try{
            if(String.isBlank(invoiceId)){
                invoiceHead.Name = coc.Name;
                if(coc.Invoice_status__c ==null||String.isBlank(coc.Invoice_status__c))coc.Invoice_status__c ='草案中';
                if (coc.Invoice_status__c == null || String.isBlank(coc.Invoice_status__c))
                    coc.Invoice_status__c = '草案中';
                invoiceHead.Order_type__c = '发票';
                invoiceHead.Invoice_Date__c = coc.Invoice_Date__c;
                invoiceHead.Dealer_Info__c = accountid;
@@ -621,8 +652,11 @@
                insert invoiceHead;
                invoiceId = invoiceHead.Id ;
                List<Consumable_order__c> cocinfo = New List<Consumable_order__c>();
                cocinfo = [SELECT Id,Name,
                List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
                cocinfo = [
                    SELECT
                        Id,
                        Name,
                                Invoice_status__c,
                                Invoice_Date__c,
                                Order_ForDealerText__c,
@@ -641,7 +675,8 @@
                                Invoicedet_attachment__c,
                                Outbound_order__c
                            FROM Consumable_order__c
                            WHERE Id =:invoiceId];
                    WHERE Id = :invoiceId
                ];
                if (cocinfo.size()>0){
                    invoiceHead = cocinfo[0];
                }
@@ -673,9 +708,11 @@
                //return null;
                if(insertDetMap.size() > 0 ){
                    for (String field : insertDetMap.keySet()) {
                        List<Consumable_order_LinkTable__c> existLinkinfo = [SELECT Id FROM Consumable_order_LinkTable__c
                                                               WHERE Outboundorder_Code_link__c = :field
                                                               AND Invoice_Code_link__c = :insertDetMap.get(field)];
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c = :field AND Invoice_Code_link__c = :insertDetMap.get(field)
                        ];
                        if(existLinkinfo.size() < 1){
                            Consumable_order_LinkTable__c invoiceLink = new Consumable_order_LinkTable__c();
                            invoiceLink.Name = field + insertDetMap.get(field);
@@ -700,9 +737,8 @@
                    }
                    delete invoiceLinkdetList;
                }*/
            }
            } else if (String.isNotBlank(reopen) && reopen.equals('isreopen') && String.isNotBlank(invoiceId)) {
            //CHAN-BSS5SQ    update by rentongxiao 2020-09-04   start
            else if (String.isNotBlank(reopen) && reopen.equals('isreopen') && String.isNotBlank(invoiceId)) {
                //如果是 作废重开
                //1. 设置新发票信息
                invoiceHead.Name = coc.Name;
@@ -725,18 +761,22 @@
                    invoiceHead.Order_ForDealer__c = SecondDealer;
                }
                invoiceHead.Order_ForDealerText__c = coc.Order_ForDealerText__c;
                System.debug('invoiceHead = ' + invoiceHead);
                insert invoiceHead;
                List<String> updateChukudanId = new List<String>();
                //获取原发票相关联的链接表信息
                List<Consumable_order_LinkTable__c> tLinkList = [SELECT Outboundorder_Code_link__c
                List<Consumable_order_LinkTable__c> tLinkList = [
                    SELECT Outboundorder_Code_link__c
                                        FROM Consumable_order_LinkTable__c
                                        WHERE Invoice_Code_link__c = :invoiceId];
                    WHERE Invoice_Code_link__c = :invoiceId
                ];
                for(Consumable_order_LinkTable__c colc : tLinkList){
                    colc.Invoice_Code_link__c = invoiceHead.Id;
                    updateChukudanId.add(colc.Outboundorder_Code_link__c);
                }
                System.debug('tLinkList = ' + tLinkList);
                update tLinkList;
                //更新发票明细信息
                //获取出库单,设置关联关系
@@ -744,12 +784,24 @@
                Map<String,Consumable_Orderdetails__c> tempCocMap = new Map<String,Consumable_Orderdetails__c>();
                List<Consumable_Orderdetails__c> tempCountList = [
                SELECT Id,Consumable_order__c,Asset_Model_No__c,InvoicedProCost_RMB__c, Invoicedet1_OD_link__c ,InvoicedProduct_RMB__c,Invoiced_Procount__c,Invoiced_BoxCount__c,Invoice_Unit__c
                FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :invoiceId];
                    SELECT
                        Id,
                        Consumable_order__c,
                        Asset_Model_No__c,
                        InvoicedProCost_RMB__c,
                        Invoicedet1_OD_link__c,
                        InvoicedProduct_RMB__c,
                        Invoiced_Procount__c,
                        Invoiced_BoxCount__c,
                        Invoice_Unit__c
                    FROM Consumable_Orderdetails__c
                    WHERE Consumable_order__c = :invoiceId
                ];
                for(Consumable_Orderdetails__c cocTemp : tempCountList){
                    cocTemp.Consumable_order__c = invoiceHead.Id;
                    tempCocMap.put(cocTemp.Invoicedet1_OD_link__c +cocTemp.Asset_Model_No__c, cocTemp);
                }
                System.debug('tempCountList = ' + tempCountList);
                update tempCountList;
                List<Consumable_Orderdetails__c> updateFromList = [
                                    SELECT 
@@ -769,7 +821,7 @@
                                        Shipment_amount__c,
                                        Asset_Model_No__c 
                                    FROM Consumable_Orderdetails__c
                                    WHERE Consumable_order__c in : updateChukudanId
                    WHERE Consumable_order__c IN :updateChukudanId
                ];
                for(Consumable_Orderdetails__c corderc : updateFromList){
                    String tempStr = corderc.Consumable_order__c + corderc.Asset_Model_No__c;
@@ -785,13 +837,14 @@
                            corderc.Invoice_Unitprice__c = corderc.Delivery_List_RMB__c;
                        }
                    }
                }
                Consumable_order__c tempcoc = new Consumable_order__c();
                tempcoc.Id = invoiceId;
                System.debug('tempcoc = ' + tempcoc);
                delete tempcoc;
                invoiceId = invoiceHead.Id;
                System.debug('updateFromList = ' + updateFromList);
                update updateFromList;
                //--------------------------------------------------------------------------
                for (InvoiceOrderInfo ass : invoiceOrderRecoeds)  {
@@ -807,10 +860,11 @@
                    }
                    //被选中的出库单集合
                    if(insertDetMap.size() > 0 ){
                        List<Consumable_order_LinkTable__c> existLinkinfo =
                        [SELECT Id,Invoice_Code_link__c,Outboundorder_Code_link__c
                        FROM Consumable_order_LinkTable__c WHERE Outboundorder_Code_link__c in :insertDetMap.keySet()
                        AND Invoice_Code_link__c = :invoiceHead.Id];
                    List<Consumable_order_LinkTable__c> existLinkinfo = [
                        SELECT Id, Invoice_Code_link__c, Outboundorder_Code_link__c
                        FROM Consumable_order_LinkTable__c
                        WHERE Outboundorder_Code_link__c IN :insertDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
                    ];
                        //存在没有与发票建立关联关系的出库单
                            List<String> templist2 = new List<String>();
                            for(Consumable_order_LinkTable__c colc : existLinkinfo){
@@ -828,35 +882,39 @@
                                    invoiceLinkList.add(invoiceLink);
                                }
                            }
                    System.debug('invoiceLinkList = ' + invoiceLinkList);
                            upsert invoiceLinkList;
                    }
                    //删除出库单链接表
                    if(deleteDetMap.size() > 0 ){
                        List<Consumable_order_LinkTable__c> invoiceLinkdetList = New List<Consumable_order_LinkTable__c>();
                    List<Consumable_order_LinkTable__c> invoiceLinkdetList = new List<Consumable_order_LinkTable__c>();
                        deleteOutboundorder(deleteDetMap,invoiceHead.Id);
                        List<Consumable_order_LinkTable__c> existLinkinfo = [SELECT Id,Outboundorder_Code_link__c,Invoice_Code_link__c FROM Consumable_order_LinkTable__c
                                                                   WHERE Outboundorder_Code_link__c in :deleteDetMap.keySet()
                                                                   AND Invoice_Code_link__c = :invoiceHead.Id];
                    List<Consumable_order_LinkTable__c> existLinkinfo = [
                        SELECT Id, Outboundorder_Code_link__c, Invoice_Code_link__c
                        FROM Consumable_order_LinkTable__c
                        WHERE Outboundorder_Code_link__c IN :deleteDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
                    ];
                        for(Consumable_order_LinkTable__c colctemp : existLinkinfo){
                            if (deleteDetMap.get(colctemp.Outboundorder_Code_link__c) == colctemp.Invoice_Code_link__c) {
                                //存在与该发票关联的出库单 
                                invoiceLinkdetList.add(colctemp);
                            }
                        }
                    System.debug('invoiceLinkdetList = ' + invoiceLinkdetList);
                        delete invoiceLinkdetList;
                    }
                    //新建发票明细1
                    if(chukudanID.size() > 0 ){
                        newinvoicedetails1(chukudanID);
                    }
            }
            } else {
            //CHAN-BSS5SQ    update by rentongxiao 2020-09-04   end
            //编辑后保存
            else{
                List<Consumable_order__c> cocinfo = New List<Consumable_order__c>();
                cocinfo = [SELECT Id,Name,
                List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
                cocinfo = [
                    SELECT
                        Id,
                        Name,
                                Invoice_status__c,
                                Invoice_Date__c,
                                Order_ForDealerText__c,
@@ -875,7 +933,8 @@
                                Invoicedet_attachment__c,
                                Outbound_order__c
                            FROM Consumable_order__c
                            WHERE Id =:invoiceId];
                    WHERE Id = :invoiceId
                ];
                if (cocinfo.size()>0){
                    invoiceHead = cocinfo[0];
                }
@@ -889,7 +948,8 @@
                    Map<String,Decimal> returnProcountMap = new Map<String,Decimal>();
                    Map<String,Decimal> changeOrderProcountMap = new Map<String,Decimal>();
                    List<Consumable_Orderdetails__c> detaliFromList = [
                                        SELECT Id,
                        SELECT
                            Id,
                                            Name,
                                            Consumable_order__c,
                                            Asset_Model_No__c,
@@ -905,13 +965,15 @@
                                            Box_Piece__c,
                                            Invoice_Cost_RMB__c
                                        FROM Consumable_Orderdetails__c
                                        WHERE Consumable_order__c = :deliveryId ];
                        WHERE Consumable_order__c = :deliveryId
                    ];
                    for(Consumable_Orderdetails__c changeOD : detaliFromList){
                        needchangeOrderProcountMap.put(changeOD.Asset_Model_No__c, changeOD.Shipment_Count__c);
                    }
                    //发票返品信息
                    List<Consumable_Orderdetails__c> returnCountList = [
                                     SELECT Id,
                        SELECT
                            Id,
                                            Name,
                                            Consumable_order__c,
                                            Asset_Model_No__c,
@@ -927,12 +989,16 @@
                                            Invoice_Unit__c,
                                            Box_Piece__c
                                        FROM Consumable_Orderdetails__c
                                        where Consumable_order__c = :invoiceId];
                        WHERE Consumable_order__c = :invoiceId
                    ];
                    for(Consumable_Orderdetails__c changeOD : returnCountList){
                        if(changeOD.RrturnPro_count__c > 0){
                            if(returnProcountMap.containsKey(changeOD.Asset_Model_No__c)){
                                returnProcountMap.put(changeOD.Asset_Model_No__c, returnProcountMap.get(changeOD.Asset_Model_No__c) + changeOD.RrturnPro_count__c);
                                returnProcountMap.put(
                                    changeOD.Asset_Model_No__c,
                                    returnProcountMap.get(changeOD.Asset_Model_No__c) + changeOD.RrturnPro_count__c
                                );
                            }else{
                                returnProcountMap.put(changeOD.Asset_Model_No__c, changeOD.RrturnPro_count__c);
                            }
@@ -941,7 +1007,8 @@
                    //已换货单出库数量信息
                    List<Consumable_Orderdetails__c> returnCount1List = [
                                     SELECT Id,
                        SELECT
                            Id,
                                            Name,
                                            Consumable_order__c,
                                            Asset_Model_No__c,
@@ -957,10 +1024,15 @@
                                            Invoice_Unit__c,
                                            Box_Piece__c
                                        FROM Consumable_Orderdetails__c
                                        where Consumable_order__c in (SELECT Outboundorder_Code_link__c FROM Consumable_order_LinkTable__c
                                                                       WHERE Invoice_Code_link__c = :invoiceId)
                                        AND Consumable_order__r.Onchange_order__c = true
                                        AND Consumable_order__c != :deliveryId];
                        WHERE
                            Consumable_order__c IN (
                                SELECT Outboundorder_Code_link__c
                                FROM Consumable_order_LinkTable__c
                                WHERE Invoice_Code_link__c = :invoiceId
                            )
                            AND Consumable_order__r.Onchange_order__c = TRUE
                            AND Consumable_order__c != :deliveryId
                    ];
                    for(Consumable_Orderdetails__c changeOD : returnCount1List){
                        changeOrderProcountMap.put(changeOD.Asset_Model_No__c, changeOD.Shipment_Count__c);
                    }
@@ -1000,10 +1072,11 @@
                    //CHAN-BSS5SQ    update by rentongxiao 2020-09-08  start
                    //被选中的出库单集合
                    if(insertDetMap.size() > 0 ){
                        List<Consumable_order_LinkTable__c> existLinkinfo =
                        [SELECT Id,Invoice_Code_link__c,Outboundorder_Code_link__c
                        FROM Consumable_order_LinkTable__c WHERE Outboundorder_Code_link__c in :insertDetMap.keySet()
                        AND Invoice_Code_link__c = :invoiceHead.Id];
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id, Invoice_Code_link__c, Outboundorder_Code_link__c
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c IN :insertDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
                        ];
                        //存在没有与发票建立关联关系的出库单
                            List<String> templist2 = new List<String>();
                            for(Consumable_order_LinkTable__c colc : existLinkinfo){
@@ -1022,7 +1095,6 @@
                                }
                            }
                            upsert invoiceLinkList;
                    }
                    /*if(insertDetMap.size() > 0 ){
                        for (String field : insertDetMap.keySet()) {
@@ -1058,12 +1130,13 @@
                    }*/
                    //删除出库单链接表
                    if(deleteDetMap.size() > 0 ){
                        List<Consumable_order_LinkTable__c> invoiceLinkdetList = New List<Consumable_order_LinkTable__c>();
                        List<Consumable_order_LinkTable__c> invoiceLinkdetList = new List<Consumable_order_LinkTable__c>();
                        deleteOutboundorder(deleteDetMap,invoiceHead.Id);
                        List<Consumable_order_LinkTable__c> existLinkinfo = [SELECT Id,Outboundorder_Code_link__c,Invoice_Code_link__c FROM Consumable_order_LinkTable__c
                                                                   WHERE Outboundorder_Code_link__c in :deleteDetMap.keySet()
                                                                   AND Invoice_Code_link__c = :invoiceHead.Id];
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id, Outboundorder_Code_link__c, Invoice_Code_link__c
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c IN :deleteDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
                        ];
                        for(Consumable_order_LinkTable__c colctemp : existLinkinfo){
                            if (deleteDetMap.get(colctemp.Outboundorder_Code_link__c) == colctemp.Invoice_Code_link__c) {
                                //存在与该发票关联的出库单 
@@ -1090,12 +1163,15 @@
    //换货单链接表 发票明细2做成
    public void outOrderchange(Map<String,String> insertDetMap){
        List<string> chukudanID = new List<string>();
        List<Consumable_order_LinkTable__c> invoiceLinkList = New List<Consumable_order_LinkTable__c>();
        List<Consumable_order_LinkTable__c> invoiceLinkList = new List<Consumable_order_LinkTable__c>();
        Consumable_order__c p = new Consumable_order__c();
        if(insertDetMap.size() > 0 ){
            for (String field : insertDetMap.keySet()) {
                List<Consumable_order_LinkTable__c> existLinkinfo = [SELECT Id FROM Consumable_order_LinkTable__c
                                                       WHERE Outboundorder_Code_link__c = :field];
                List<Consumable_order_LinkTable__c> existLinkinfo = [
                    SELECT Id
                    FROM Consumable_order_LinkTable__c
                    WHERE Outboundorder_Code_link__c = :field
                ];
                if(existLinkinfo.size() > 0){
                    delete existLinkinfo;
                }
@@ -1114,7 +1190,8 @@
        }
        //换货出库单明细1更新
        List<Consumable_Orderdetails__c> detaliFrom1List = [
                            SELECT Id,
            SELECT
                Id,
                                Name,
                                Consumable_order__c,
                                Asset_Model_No__c,
@@ -1134,7 +1211,8 @@
                                Consumable_Sale_order__r.Name,
                                Consumable_Shipment_order__r.Name
                            FROM Consumable_Orderdetails__c
                            WHERE Consumable_order__c in : chukudanID];
            WHERE Consumable_order__c IN :chukudanID
        ];
        for(Consumable_Orderdetails__c changeOD : detaliFrom1List){
            changeOD.Invoiced_Procount__c = changeOD.Shipment_Count__c;
        }
@@ -1163,16 +1241,17 @@
            changeOD.Invoice_Date__c = Date.today();
        }
        update detaliFromList;*/
    }
    //取得更新map初始化数据
    //获取 订单中产品的初始化 Map
    public void getdefaultMapinfo(List<String> orderIdList){
        List<Consumable_Orderdetails__c> existLinkinfo = new List<Consumable_Orderdetails__c>();
        existLinkinfo = [SELECT Id,Consumable_order__c,Consumable_product__c,Asset_Model_No__c
        existLinkinfo = [
            SELECT Id, Consumable_order__c, Consumable_product__c, Asset_Model_No__c
                        FROM Consumable_Orderdetails__c
                        WHERE Consumable_order__c in:orderIdList];
            WHERE Consumable_order__c IN :orderIdList
        ];
        for(Integer i = 0; i < existLinkinfo.size(); i++){
            ordermx1defaultMap.put(existLinkinfo[i].Consumable_order__c + existLinkinfo[i].Asset_Model_No__c,0);
        }
@@ -1193,22 +1272,24 @@
    }*/
    public void deleteOutboundorder(Map<String,String> deleteMap,String value){
        //删除发票明细1
        List<Consumable_Orderdetails__c> detInvoicedet1List =
        [SELECT Id,Consumable_Shipment_order__c,Consumable_Sale_order__c,Consumable_product__c,Asset_Model_No__c
        List<Consumable_Orderdetails__c> detInvoicedet1List = [
            SELECT Id, Consumable_Shipment_order__c, Consumable_Sale_order__c, Consumable_product__c, Asset_Model_No__c
                            FROM Consumable_Orderdetails__c
                            WHERE Consumable_order__c = :value
                            AND Invoicedet1_OD_link__c = :deleteMap.keySet()];
            WHERE Consumable_order__c = :value AND Invoicedet1_OD_link__c = :deleteMap.keySet()
        ];
        System.debug('detInvoicedet1List = ' + detInvoicedet1List);
            delete detInvoicedet1List;
    }
    //CHAN-BSS5SQ    update by rentongxiao 2020-09-08  end
    public void newinvoicedetails1(List<String> chukudanID){
        //新规发票明细1
        List<Consumable_Orderdetails__c> invoiceorderList1 = New List<Consumable_Orderdetails__c>();
        List<Consumable_Orderdetails__c> invoiceorderList1 = new List<Consumable_Orderdetails__c>();
        //出库单明细更新
        List<Consumable_Orderdetails__c> outOrderList1 = New List<Consumable_Orderdetails__c>();
        List<Consumable_Orderdetails__c> outOrderList1 = new List<Consumable_Orderdetails__c>();
        List<Consumable_Orderdetails__c> detaliFromList = [
                            SELECT Id,
            SELECT
                Id,
                                Name,
                                Consumable_order__c,
                                Asset_Model_No__c,
@@ -1233,8 +1314,7 @@
                                Invoice_Unit__c,
                                ProductPacking_list_manual__c
                            FROM Consumable_Orderdetails__c
                            WHERE Consumable_order__c in : chukudanID
                            AND InvoiceProNot_count__c > 0
            WHERE Consumable_order__c IN :chukudanID AND InvoiceProNot_count__c > 0
        ];
        for(Integer i = 0; i < detaliFromList.size(); i++){
@@ -1248,7 +1328,10 @@
            if(str.length() == 1){
                str = '0' + str;
            }
            invoiceInsert1.Name = coc.Name + '-' + detaliFromList[i].Name.substring(detaliFromList[i].Name.length() - 7,detaliFromList[i].Name.length());
            invoiceInsert1.Name =
                coc.Name +
                '-' +
                detaliFromList[i].Name.substring(detaliFromList[i].Name.length() - 7, detaliFromList[i].Name.length());
            invoiceInsert1.Shipment_Count__c = detaliFromList[i].InvoiceProNot_count__c;
            invoiceInsert1.Consumable_Product__c = detaliFromList[i].Consumable_Product__c;
            invoiceInsert1.Intra_Trade_List_RMB__c = detaliFromList[i].Intra_Trade_List_RMB__c;
@@ -1257,18 +1340,22 @@
            invoiceInsert1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
            
            if(detaliFromList[i].Box_Piece__c == '盒' && detaliFromList[i].Invoice_Unit__c == '个'){
                invoiceInsert1.Invoice_Unitprice__c = detaliFromList[i].Delivery_List_RMB__c/detaliFromList[i].ProductPacking_list_manual__c;
                invoiceInsert1.Invoice_Unitprice__c =
                    detaliFromList[i].Delivery_List_RMB__c / detaliFromList[i].ProductPacking_list_manual__c;
            }else{
                invoiceInsert1.Invoice_Unitprice__c = detaliFromList[i].Delivery_List_RMB__c;
            }
            invoiceInsert1.Box_Piece__c = detaliFromList[i].Box_Piece__c;
            invoiceInsert1.Invoice_Unit__c = detaliFromList[i].Box_Piece__c;
            //orderUpdate1.Invoice_Unitprice__c = detaliFromList[i].Delivery_List_RMB__c;
            if (detaliFromList[i].Invoiced_Procount__c == null) detaliFromList[i].Invoiced_Procount__c = 0;
            if (detaliFromList[i].RrturnPro_count__c == null) detaliFromList[i].RrturnPro_count__c = 0;
            if (detaliFromList[i].Invoiced_Procount__c == null)
                detaliFromList[i].Invoiced_Procount__c = 0;
            if (detaliFromList[i].RrturnPro_count__c == null)
                detaliFromList[i].RrturnPro_count__c = 0;
            //invoiceInsert1.Invoiced_Procount__c = detaliFromList[i].Invoiced_Procount__c;
            invoiceInsert1.Invoiced_Count__c = detaliFromList[i].InvoiceProNot_count__c;
            if (detaliFromList[i].InvoicedProCost_RMB__c == null) detaliFromList[i].InvoicedProCost_RMB__c = 0;
            if (detaliFromList[i].InvoicedProCost_RMB__c == null)
                detaliFromList[i].InvoicedProCost_RMB__c = 0;
            invoiceInsert1.InvoicedProCost_RMB__c = invoiceInsert1.Invoiced_Count__c * invoiceInsert1.Delivery_List_RMB__c;
            //invoiceInsert1.Sum_of_money__c = invoiceInsert1.InvoicedProCost_RMB__c;
            invoiceInsert1.Consumable_order__c = invoiceId;
@@ -1283,6 +1370,7 @@
        Savepoint sp = Database.setSavepoint();
        if(invoiceorderList1.size() > 0){
            try {
                System.debug('invoiceorderList1 = ' + invoiceorderList1);
                insert invoiceorderList1;
            }catch (Exception ex) {
                Database.rollback(sp);
@@ -1291,10 +1379,15 @@
        }
    }
    //上传附件
    public PageReference FilesUpload(){
        PageReference ref = new Pagereference('/p/attach/NoteAttach?pid='+invoiceId+'&retURL=%2F' + '/ConInvoiceView?invoiceId=' +invoiceId);
        PageReference ref = new Pagereference(
            '/p/attach/NoteAttach?pid=' +
            invoiceId +
            '&retURL=%2F' +
            '/ConInvoiceView?invoiceId=' +
            invoiceId
        );
        ref.setRedirect(true);
        return ref;
    }
@@ -1351,7 +1444,11 @@
    // 删除按钮
    public PageReference deleteButton() {
        system.debug('====invoiceId==========>' + invoiceId);
        List < Consumable_Orderdetails__c > consList = [select id, Consumable_order__c from Consumable_Orderdetails__c where Consumable_order__c = : invoiceId];
        List<Consumable_Orderdetails__c> consList = [
            SELECT id, Consumable_order__c
            FROM Consumable_Orderdetails__c
            WHERE Consumable_order__c = :invoiceId
        ];
        // Consumable_order__c consumable = [select id from Consumable_order__c where id =: invoiceId AND Invoice_status__c = '草案中'];
        try {
            system.debug('====cons==========>' + consList);
@@ -1373,7 +1470,6 @@
    }
    // 精琢科技  zxk  2021-11-03  CHAN-C8D86K 添加删除按钮  end
    // 作废重开按钮
    public PageReference setreopen(){
        statusEdit = 'Redirect';
@@ -1385,13 +1481,14 @@
    public PageReference approval() {
        //更新发票明细2链接
        Consumable_order__c P = new Consumable_order__c();
        List<Consumable_order__c> cocinfo = New List<Consumable_order__c>();
        List<Consumable_order_details2__c> invoiceorderList2 = New List<Consumable_order_details2__c>();
        List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
        List<Consumable_order_details2__c> invoiceorderList2 = new List<Consumable_order_details2__c>();
        //更新出库单明细1
        List<Consumable_Orderdetails__c> outOrderdetUp1List = New List<Consumable_Orderdetails__c>();
        List<Consumable_Orderdetails__c> outOrderdetUp1List = new List<Consumable_Orderdetails__c>();
         //需要更新出库单明细1
        List<Consumable_Orderdetails__c> outOrderdet1List = [
                            SELECT Id,
            SELECT
                Id,
                                Name,
                                Consumable_order__c,
                                Consumable_order__r.Name,
@@ -1410,37 +1507,77 @@
                                Box_Piece__c,
                                Invoice_Unit__c
                            FROM Consumable_Orderdetails__c
                            WHERE Consumable_order__c in : outOrderStringList
            WHERE Consumable_order__c IN :outOrderStringList
        ];
        for(Integer i = 0; i < outOrderdet1List.size(); i++){
            if(outordercountMap.containsKey(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)){
                Consumable_Orderdetails__c invoiceUpdte1 = new Consumable_Orderdetails__c();
                invoiceUpdte1.Id = outOrderdet1List[i].Id;
                invoiceUpdte1.Invoice_Unit__c = outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c;
                if(outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c == '盒' && outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c == '个'){
                invoiceUpdte1.Invoice_Unit__c = outordercountMap.get(
                        outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                    )
                    .Invoice_Unit__c;
                if (
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c ==
                    '盒' &&
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c ==
                    '个'
                ) {
                    Decimal OldinvoicedProcount = 0;
                    OldinvoicedProcount = (outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoiced_Count__c / outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).ProductPacking_list_manual__c).setScale(2);
                    OldinvoicedProcount = (outordercountMap.get(
                                outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                            )
                            .Invoiced_Count__c /
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
                            .ProductPacking_list_manual__c)
                        .setScale(2);
                    invoiceUpdte1.Invoiced_Procount__c = outOrderdet1List[i].Invoiced_Procount__c + OldinvoicedProcount ;
                }else{
                    invoiceUpdte1.Invoiced_Procount__c = outOrderdet1List[i].Invoiced_Procount__c + outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoiced_Count__c;
                    invoiceUpdte1.Invoiced_Procount__c =
                        outOrderdet1List[i].Invoiced_Procount__c +
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
                            .Invoiced_Count__c;
                }
                invoiceUpdte1.Invoice_Unitprice__c = outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unitprice__c;
                invoiceUpdte1.Invoice_Unitprice__c = outordercountMap.get(
                        outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                    )
                    .Invoice_Unitprice__c;
                invoiceUpdte1.InvoicedProCost_RMB__c = invoiceUpdte1.Invoiced_Procount__c * outOrderdet1List[i].Delivery_List_RMB__c;
                
                Decimal invoicedProcount = 0;
                if(outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c == '盒' && outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c == '个'){
                    invoicedProcount = (outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoiced_Count__c / outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).ProductPacking_list_manual__c).setScale(2);
                if (
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c ==
                    '盒' &&
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c ==
                    '个'
                ) {
                    invoicedProcount = (outordercountMap.get(
                                outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                            )
                            .Invoiced_Count__c /
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
                            .ProductPacking_list_manual__c)
                        .setScale(2);
                }else{
                    invoicedProcount = outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoiced_Count__c;
                    invoicedProcount = outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
                        .Invoiced_Count__c;
                }
                if(outOrderdet1List[i].InvoiceProNot_count__c < invoicedProcount){
                    ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '出库单' + outOrderdet1List[i].Consumable_order__r.Name + '中,' + outOrderdet1List[i].Asset_Model_No__c +'还没开票数量小于发票数量,请确认是否有返品。'));
                    ApexPages.addmessage(
                        new ApexPages.message(
                            ApexPages.severity.Error,
                            '出库单' +
                            outOrderdet1List[i].Consumable_order__r.Name +
                            '中,' +
                            outOrderdet1List[i].Asset_Model_No__c +
                            '还没开票数量小于发票数量,请确认是否有返品。'
                        )
                    );
                    return null;
                }
                outOrderdetUp1List.add(invoiceUpdte1);
            }
        }
        Savepoint sp = Database.setSavepoint();
@@ -1450,7 +1587,11 @@
                ControllerUtil.updateOrderDetails1Satus(outOrderdetUp1List);
            }
            //发票状态更新
            cocinfo = [SELECT Id,Name,Invoice_status__c,Dealer_Info__c,Order_ForHospital__c,SummonsForDirction__c FROM Consumable_order__c WHERE Id =:invoiceId];
            cocinfo = [
                SELECT Id, Name, Invoice_status__c, Dealer_Info__c, Order_ForHospital__c, SummonsForDirction__c
                FROM Consumable_order__c
                WHERE Id = :invoiceId
            ];
            if (cocinfo.size()>0){
                p = cocinfo[0];
            }
@@ -1511,7 +1652,6 @@
        soql += ' AND InvoiceNotPro_total_amount__c > 0';
        soql += ' AND Onchange_order__c = false limit 1000';
        return soql;
    }
    // Data Bean
force-app/main/default/classes/SyncProvinceWIndowToSignForm.cls
@@ -11,13 +11,14 @@
            if (!Test.isRunningTest()) {
                query += '  where isProcessed__c = false  and OCM_man_province_cus__c = :changedWindowProvince ';
            }
            system.debug('SOQL' + query);
            system.debug('SOQL:' + query);
            return Database.getQueryLocator(query);
        }
        return null;
    }
    global void execute(Database.BatchableContext BC, List<eSignForm__c> signFormList) {
        system.debug('sign form list size:' + signFormList.size());
        // 取得OCM管理省信息
        Map<String, OCM_Management_Province__c> provinceMap = DNUpsertBatch.getManagementProvince();
        // 判断需要更新的签收单
@@ -44,6 +45,7 @@
    public static void syncProvinceWIndow(Set<String> changedWindowProvince) {
        if (changedWindowProvince != null && changedWindowProvince.size() > 0) {
            Database.executeBatch(new SyncProvinceWIndowToSignForm(changedWindowProvince), 200);
        }
    }
}
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls
@@ -4,7 +4,7 @@
    private static void testTestCase() {
        // Test data setup
        //新建电子签收单
        map<string, eSignForm__c> eSFMap = new Map<string, eSignForm__c>();
        map <string, eSignForm__c> eSFMap = new  map <string, eSignForm__c>();
        eSignForm__c eSignForm = new eSignForm__c();
        eSignForm.Name = '::测试电子签收单';
        eSignForm.DNName__c = '112233';
@@ -18,22 +18,18 @@
        sad.EsignTestAccount__c = true;
        sad.ReturnMark__c = false;
        list<Statu_Achievements_DN__c> DNList = new List<Statu_Achievements_DN__c>();
        list<Statu_Achievements_DN__c> DNList = new list<Statu_Achievements_DN__c>();
        DNList.add(sad);
        List<RecordType> rectCo = [SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'];
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [
            SELECT Id
            FROM RecordType
            WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '戦略科室分類 呼吸科'
        ];
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [SELECT Id FROM RecordType WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '診療科 消化科'];
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
        if (rectDpt.size() == 0) {
            return;
        }
@@ -58,11 +54,8 @@
        depart.Hospital__c = company.Id;
        upsert depart;
        RecordType rectOpp = [
            SELECT id
            FROM RecordType
            WHERE IsActive = TRUE AND SobjectType = 'Opportunity' AND DeveloperName = 'Opportunity'
        ];
        RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and DeveloperName = 'Opportunity' ];
        Opportunity opp = new Opportunity(
            Name = 'testOpp1',
            StageName = '引合',
force-app/main/default/classes/SyncProvinceWIndowToSignFormTest.cls-meta.xml
force-app/main/default/classes/updateESignBatchTest.cls
@@ -2900,6 +2900,7 @@
        mp1.SP_assistant__c = UserInfo.getUserId();
        mp1.Energy_assistant__c = UserInfo.getUserId();
        mp1.SalesManage__c = UserInfo.getUserId();
        mp1.Window1__c = UserInfo.getUserId();
        insert mp1;