From 3962c2bb0435484b60a3e408e4738d792e249a53 Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 05 六月 2023 11:09:55 +0800
Subject: [PATCH] LEX CommunityNewCmp

---
 force-app/main/default/classes/LexConInvoicedetailsController.cls |  392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 392 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/classes/LexConInvoicedetailsController.cls b/force-app/main/default/classes/LexConInvoicedetailsController.cls
new file mode 100644
index 0000000..18a4fb5
--- /dev/null
+++ b/force-app/main/default/classes/LexConInvoicedetailsController.cls
@@ -0,0 +1,392 @@
+public with sharing class LexConInvoicedetailsController {
+    //鍑哄簱鍗曚娇鐢�
+	public static Consumable_order__c coc { get; set; }
+
+	//鍙戠エ浣跨敤
+	public static Consumable_order__c invoicecode { get; set; }
+
+	//浠锋牸璁$畻缁撴灉
+    public static Decimal sumPrice {get;set;}
+
+	//鍑哄簱鍗旾D
+	private static String orderId {get;set;}
+	//鍙戠エ鍗旾D
+	private static String invoiceId {get;set;}
+    //鍑哄簱鍗曟槑缁�1锛岀敾闈㈡樉绀轰娇鐢�
+	public static List<ConsumableorderdetailsInfo> consumableorderdetails1Records { get; set; }
+	//鏄庣粏鏁伴噺
+    public static Integer invoiceOrderRecoedsCount {
+        get {
+            return consumableorderdetails1Records == null ? 0 : consumableorderdetails1Records.size();
+        }
+    }
+
+    //椤甸潰鍒濆鍖�
+    @AuraEnabled
+    public static ResponseBodyLWC init(String orderIdLwc,String invoiceIdLwc) {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+
+        orderId = orderIdLwc;
+        invoiceId = invoiceIdLwc;
+        consumableorderdetails1Records = new List<ConsumableorderdetailsInfo>();
+        sumPrice = 0;
+        coc = new Consumable_order__c();
+        //鍑哄簱鍗曚俊鎭�
+        coc = [SELECT Id, Name, Outbound_Date__c, Order_ForDealerText__c, Dealer_Info__c FROM Consumable_order__c WHERE Id = :orderId];
+        //鍙戠エ淇℃伅
+        invoicecode = [
+            SELECT Id, Name, ShipmentAccount__c, Order_ForCustomerText__c, Order_ForDealerText__c, Dealer_Info__c
+            FROM Consumable_order__c
+            WHERE Id = :invoiceId
+        ];
+        //鍙戠エ鏄庣粏1
+        Map<String, Consumable_Orderdetails__c> invoiceorderdet1CountMap = new Map<String, Consumable_Orderdetails__c>();
+        List<Consumable_Orderdetails__c> invoiceorderdetails1 = [
+            SELECT
+                Id,
+                Name,
+                Consumable_order__c,
+                Asset_Model_No__c,
+                Consumable_Product__r.Asset_Model_No__c,
+                Consumable_Count__c,
+                Shipment_Count__c,
+                RrturnPro_count__c,
+                Delivery_List_RMB__c,
+                InvoicedProCost_RMB__c,
+                Invoiced_Procount__c,
+                Invoiced_Count__c,
+                Invoice_Unitprice__c,
+                InvoiceProNot_count__c,
+                Invoice_Cost_RMB__c,
+                Invoice_No__c,
+                Invoice_Unit__c,
+                Invoicedet1_OD_link__c
+            FROM Consumable_Orderdetails__c
+            WHERE Consumable_order__c = :invoiceId AND Invoicedet1_OD_link__c = :orderId
+        ];
+        for (Integer i = 0; i < invoiceorderdetails1.size(); i++) {
+            invoiceorderdet1CountMap.put(invoiceorderdetails1[i].Asset_Model_No__c, invoiceorderdetails1[i]);
+        }
+        //鍑哄簱鍗曟槑缁�1锛岀敾闈㈡樉绀轰娇鐢�
+        List<Consumable_Orderdetails__c> consumableorderdetails1 = [
+            SELECT
+                Id,
+                Name,
+                Consumable_order__c,
+                Asset_Model_No__c,
+                Consumable_Product__r.Asset_Model_No__c,
+                Consumable_Count__c,
+                Shipment_Count__c,
+                RrturnPro_count__c,
+                Delivery_List_RMB__c,
+                InvoicedProCost_RMB__c,
+                Invoiced_Procount__c,
+                Invoiced_Count__c,
+                Invoice_Unitprice__c,
+                InvoiceProNot_count__c,
+                Invoice_Cost_RMB__c,
+                Invoice_No__c,
+                Consumable_Product__c,
+                Intra_Trade_List_RMB__c,
+                Dealer_Custom_Price__c,
+                Sum_of_money__c,
+                Used_date__c,
+                Send_date__c,
+                Box_Piece__c,
+                Invoice_Unit__c,
+                Consumable_Product__r.Packing_list_manual__c,
+                ProductPacking_list_manual__c
+            FROM Consumable_Orderdetails__c
+            WHERE Consumable_order__c = :orderId
+        ];
+        for (Integer i = 0; i < consumableorderdetails1.size(); i++) {
+            consumableorderdetails1Records.add(new ConsumableorderdetailsInfo(consumableorderdetails1[i]));
+        }
+        for (ConsumableorderdetailsInfo ass : consumableorderdetails1Records) {
+            if (invoiceorderdet1CountMap.containsKey(ass.esd.Asset_Model_No__c)) {
+                ass.check = true;
+                if (
+                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c == null ||
+                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c == ''
+                ) {
+                    ass.esd.Invoice_Unit__c = ass.esd.Box_Piece__c;
+                } else {
+                    ass.esd.Invoice_Unit__c = invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c;
+                }
+                if (
+                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c == null ||
+                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c == 0
+                ) {
+                    ass.invoiceCount = ass.esd.Invoiced_Count__c;
+                } else {
+                    ass.invoiceCount = invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c;
+                }
+
+                if (ass.esd.Box_Piece__c == '鐩�' && ass.esd.Invoice_Unit__c == '涓�') {
+                    ass.esd.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
+                } else {
+                    ass.esd.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
+                }
+                Decimal invoiceAllprice = 0.00;
+                invoiceAllprice = (ass.invoiceCount * ass.esd.Invoice_Unitprice__c).setScale(2);
+                ass.invoiceAllprice = invoiceAllprice;
+            } else {
+                ass.invoiceCount = ass.esd.InvoiceProNot_count__c;
+                ass.esd.Invoice_Unit__c = ass.esd.Box_Piece__c;
+                ass.esd.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
+            }
+        }
+        data.put('invoicecode',invoicecode);
+        data.put('coc',coc);
+        data.put('consumableorderdetails1Records',consumableorderdetails1Records);
+        res.status = 'Success';
+        res.code = 200;
+        System.debug('res = ' + res);
+        return res;
+    }
+
+    @AuraEnabled
+    public static ResponseBodyLWC save(String consumableorderdetails1RecordsLwc,String invoiceIdLwc,String orderIdLwc) {
+        ResponseBodyLWC res = new ResponseBodyLWC();
+        Map<String, object> data = new Map<String, object>();
+        res.entity = data;
+
+        consumableorderdetails1Records= (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetails1RecordsLwc, List<ConsumableorderdetailsInfo>.class);
+        invoiceId = invoiceIdLwc;
+        orderId = orderIdLwc;
+        System.debug('consumableorderdetails1Records = ' + consumableorderdetails1Records);
+        System.debug('invoiceId = ' + invoiceId);
+        System.debug('orderId = ' + orderId);
+
+        Savepoint sp = Database.setSavepoint();
+        //鏂拌鍙戠エ鏄庣粏1
+        List<Consumable_Orderdetails__c> invoiceorderList1 = new List<Consumable_Orderdetails__c>();
+        //鏇存柊鍙戠エ鏄庣粏1
+        List<Consumable_Orderdetails__c> invoiceorderUpList1 = new List<Consumable_Orderdetails__c>();
+        //鍒犻櫎鍙戠エ鏄庣粏1
+        List<Consumable_Orderdetails__c> invoiceorderDeList1 = new List<Consumable_Orderdetails__c>();
+
+        Map<String, Consumable_Orderdetails__c> invoiceordet1Map = new Map<String, Consumable_Orderdetails__c>();
+
+        List<String> consumableorderList = new List<String>();
+        List<String> consumableNameList = new List<String>();
+        try {
+            //鏇存柊鍑哄簱鍗曟槑缁�1
+            for (ConsumableorderdetailsInfo ass : consumableorderdetails1Records) {
+                consumableorderList.add(ass.esd.Asset_Model_No__c);
+            }
+
+            //鍙戠エ鏄庣粏1鑾峰彇
+            List<Consumable_Orderdetails__c> invoiceorderdetails1 = [
+                SELECT
+                    Id,
+                    Name,
+                    Consumable_order__c,
+                    Asset_Model_No__c,
+                    Consumable_Product__r.Asset_Model_No__c,
+                    Consumable_Count__c,
+                    Shipment_Count__c,
+                    RrturnPro_count__c,
+                    Delivery_List_RMB__c,
+                    InvoicedProCost_RMB__c,
+                    Invoiced_Procount__c,
+                    Invoiced_Count__c,
+                    Invoice_Unitprice__c,
+                    InvoiceProNot_count__c,
+                    Invoice_Cost_RMB__c,
+                    Invoice_No__c,
+                    Invoice_Unit__c,
+                    Box_Piece__c,
+                    Invoicedet1_OD_link__c
+                FROM Consumable_Orderdetails__c
+                WHERE Consumable_order__c = :invoiceId AND Invoicedet1_OD_link__c = :orderId AND Asset_Model_No__c IN :consumableorderList
+            ];
+            for (Integer i = 0; i < invoiceorderdetails1.size(); i++) {
+                invoiceordet1Map.put(
+                    invoiceorderdetails1[i].Invoicedet1_OD_link__c + invoiceorderdetails1[i].Asset_Model_No__c,
+                    invoiceorderdetails1[i]
+                );
+            }
+            List<Consumable_Orderdetails__c> invoicedetails1count = [
+                SELECT
+                    Id,
+                    Name,
+                    Consumable_order__c,
+                    Invoicedet1_OD_link__c,
+                    Asset_Model_No__c,
+                    Consumable_Product__r.Asset_Model_No__c,
+                    Consumable_Count__c,
+                    Shipment_Count__c,
+                    RrturnPro_count__c,
+                    Delivery_List_RMB__c,
+                    InvoicedProCost_RMB__c,
+                    Invoiced_Procount__c,
+                    Invoiced_Count__c,
+                    Sum_of_money__c,
+                    Invoice_Unitprice__c,
+                    InvoiceProNot_count__c,
+                    Invoice_Cost_RMB__c,
+                    Invoice_Unit__c,
+                    Invoice_No__c
+                FROM Consumable_Orderdetails__c
+                WHERE Consumable_order__c = :invoiceId
+            ];
+            Integer invoiceRecordscon = invoicedetails1count.size() + 1;
+
+            for (ConsumableorderdetailsInfo ass : consumableorderdetails1Records) {
+                if (ass.check == true && ass.invoiceCount > 0) {
+                    if (String.isEmpty(String.valueOf(ass.invoiceCount))) {
+                        // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '璇疯緭鍏ュ彂绁ㄦ暟閲忥紒'));
+                        // return null;
+                        return new ResponseBodyLWC('Error', 500, '璇疯緭鍏ュ彂绁ㄦ暟閲忥紒', '');
+                    }
+                    if (ass.esd.Box_Piece__c == '鐩�' && ass.esd.Invoice_Unit__c == '涓�') {
+                        if (ass.invoiceCount > (ass.esd.InvoiceProNot_count__c * ass.Packing_list_manual).setScale(0)) {
+                            // ass.esd.InvoiceProNot_count__c.addError('鍙戠エ鏁伴噺涓嶈兘瓒呰繃杩樻病鍙戠エ鏁伴噺锛�');
+                            // return null;
+                            return new ResponseBodyLWC('Error', 500, '鍙戠エ鏁伴噺涓嶈兘瓒呰繃杩樻病鍙戠エ鏁伴噺锛�', '');
+                        }
+                    } else {
+                        if (ass.invoiceCount > ass.esd.InvoiceProNot_count__c) {
+                            // ass.esd.InvoiceProNot_count__c.addError('鍙戠エ鏁伴噺涓嶈兘瓒呰繃杩樻病鍙戠エ鏁伴噺锛�');
+                            // return null;
+                            return new ResponseBodyLWC('Error', 500, '鍙戠エ鏁伴噺涓嶈兘瓒呰繃杩樻病鍙戠エ鏁伴噺锛�', '');
+                        }
+                    }
+
+                    //if(ass.esd.Invoice_Unit__c =='涓�'){
+                    String invoiceCount = String.valueOf(ass.invoiceCount);
+                    if (!Pattern.matches('^\\+{0,1}[1-9]\\d*', invoiceCount)) {
+                        // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '鍙戠エ鏁伴噺蹇呴』鏄暣鏁�'));
+                        // return null;
+                        return new ResponseBodyLWC('Error', 500, '鍙戠エ鏁伴噺蹇呴』鏄暣鏁�', '');
+                    }
+                    //}
+
+                    if (invoiceordet1Map.containsKey(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)) {
+                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Shipment_Count__c = ass.invoiceCount;
+                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Invoiced_Count__c = ass.invoiceCount;
+                        //invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c = invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Delivery_List_RMB__c * ass.invoiceCount;
+                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)
+                            .Invoice_Unit__c = ass.esd.Invoice_Unit__c;
+                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Box_Piece__c = ass.esd.Box_Piece__c;
+                        if (ass.esd.Box_Piece__c == '鐩�' && ass.esd.Invoice_Unit__c == '涓�') {
+                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c =
+                                (ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual) * ass.invoiceCount;
+                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Invoice_Unitprice__c =
+                                ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
+                        } else {
+                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c =
+                                ass.esd.Delivery_List_RMB__c * ass.invoiceCount;
+                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)
+                                .Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
+                        }
+
+                        invoiceorderUpList1.add(invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c));
+                        invoiceRecordscon++;
+                    } else {
+                        String str = string.valueOf(invoiceRecordscon);
+                        if (str.length() == 1) {
+                            str = '0' + str;
+                        }
+                        Consumable_Orderdetails__c invoiceInsert1 = new Consumable_Orderdetails__c();
+                        invoiceInsert1.Used_date__c = ass.esd.Used_date__c;
+                        invoiceInsert1.Send_date__c = ass.esd.Send_date__c;
+                        invoiceInsert1.Name =
+                            invoicecode.Name +
+                            '-' +
+                            ass.esd.Name.substring(ass.esd.Name.length() - 7, ass.esd.Name.length());
+                        invoiceInsert1.Shipment_Count__c = ass.invoiceCount;
+                        invoiceInsert1.Consumable_Product__c = ass.esd.Consumable_Product__c;
+                        invoiceInsert1.Intra_Trade_List_RMB__c = ass.esd.Intra_Trade_List_RMB__c;
+                        invoiceInsert1.Delivery_List_RMB__c = ass.esd.Delivery_List_RMB__c;
+                        invoiceInsert1.Dealer_Custom_Price__c = ass.esd.Dealer_Custom_Price__c;
+                        invoiceInsert1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
+                        if (ass.esd.Box_Piece__c == '鐩�' && ass.esd.Invoice_Unit__c == '涓�') {
+                            invoiceInsert1.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
+                        } else {
+                            invoiceInsert1.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
+                        }
+                        //invoiceInsert1.Invoice_Unitprice__c = ass.esd.Invoice_Unitprice__c;
+                        invoiceInsert1.Invoice_Unit__c = ass.esd.Invoice_Unit__c;
+                        invoiceInsert1.Box_Piece__c = ass.esd.Box_Piece__c;
+                        if (ass.esd.Invoiced_Procount__c == null)
+                            ass.esd.Invoiced_Procount__c = 0;
+                        invoiceInsert1.Invoiced_Count__c = ass.invoiceCount;
+                        if (ass.esd.InvoicedProCost_RMB__c == null)
+                            ass.esd.InvoicedProCost_RMB__c = 0;
+                        invoiceInsert1.InvoicedProCost_RMB__c = ass.invoiceCount * invoiceInsert1.Invoice_Unitprice__c;
+                        invoiceInsert1.Consumable_order__c = invoiceId;
+                        invoiceInsert1.Invoicedet1_OD_link__c = orderId;
+                        invoiceRecordscon++;
+                        invoiceorderList1.add(invoiceInsert1);
+                    }
+                } else {
+                    if (invoiceordet1Map.containsKey(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)) {
+                        invoiceorderDeList1.add(invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c));
+                    }
+                }
+            }
+
+            if (invoiceorderList1.size() > 0) {
+                insert invoiceorderList1;
+            }
+            if (invoiceorderUpList1.size() > 0) {
+                update invoiceorderUpList1;
+            }
+            if (invoiceorderDeList1.size() > 0) {
+                delete invoiceorderDeList1;
+            }
+        } catch (Exception e) {
+            ApexPages.addmessages(e);
+            // Database.rollback(sp);
+            // return null;
+            return new ResponseBodyLWC('Error', 500, e.getMessage() + ' ' + e.getLineNumber(), '');
+        }
+        res.status = 'Success';
+        res.code = 200;
+        System.debug('res = ' + res);
+        return res;
+    }
+
+    // Data Bean
+    class ConsumableorderdetailsInfo {
+        @AuraEnabled
+        public Boolean check { get; set; }
+        @AuraEnabled
+        public Boolean oldCheck { get; set; }
+        @AuraEnabled
+        public Consumable_Orderdetails__c esd { get; set; }
+        @AuraEnabled
+        public Product2__c Prod { get; set; }
+        @AuraEnabled
+        public Decimal invoiceCount { get; set; }
+        @AuraEnabled
+        public Decimal invoiceAllprice { get; set; }
+        @AuraEnabled
+        public Decimal Packing_list_manual { get; set; }
+        public List<SelectOption> Invoice_UnitOpts { get; set; }
+        @AuraEnabled
+        public Map<String,String> Invoice_UnitOptsMap { get; set; }
+        // 娑堣�楀搧浜у搧鏄庣粏
+        public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) {
+            check = false;
+            oldCheck = false;
+            esd = e;
+            Prod = e.Consumable_Product__r;
+            invoiceAllprice = 0;
+
+            Packing_list_manual = e.Consumable_Product__r.Packing_list_manual__c;
+
+            Invoice_UnitOpts = new List<SelectOption>();
+            Invoice_UnitOpts.add(new SelectOption('鐩�', '鐩�'));
+            Invoice_UnitOpts.add(new SelectOption('涓�', '涓�'));
+
+            Invoice_UnitOptsMap = new Map<String,String>();
+            Invoice_UnitOptsMap.put('鐩�', '鐩�');
+            Invoice_UnitOptsMap.put('涓�', '涓�');
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1