| | |
| | | public without sharing class LexConsumableController { |
| | | /*****************検索用******************/ |
| | | public static Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ |
| | | public static String category1 { get; set; } |
| | | public static String category5 { get; set; } |
| | | public static String category4 { get; set; } |
| | | public static String category3 { get; set; } |
| | | public static String category_Goods { get; set; } |
| | | public static Boolean specialCampaign { get; set; } |
| | | public static Boolean cansee { get; set; } |
| | | //经销商合同名称 |
| | | public static String contractName { get; set; } |
| | | //经销商合同ID |
| | | public static String contractId { get; set; } |
| | | //经销商定价查看权限 |
| | | public static Boolean dealerPricesee { get; set; } |
| | | /*****************画面初始化用********************************/ |
| | | /******20160313_add**************/ |
| | | //public String idCheck {get;set;} |
| | | public static Boolean editAble { get; set; } |
| | | public static Boolean edoffersPrice { get; set; } |
| | | public static String statusEdit { get; set; } |
| | | public static Boolean returnOrder { get; set; } |
| | | public static String searchDone { get; set; } |
| | | //暂用20160323 |
| | | public static Decimal disCount = 0; |
| | | //总价格计算结果 |
| | | public static Decimal sumPrice { get; set; } |
| | | //自定义特价金额 |
| | | public static Decimal bargainPrice { get; set; } |
| | | //产品上下限 |
| | | public static String[] proLimitAndDate = new List<String>{}; |
| | | /*****************画面表示Bean******************/ |
| | | private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview { |
| | | get; |
| | | set; |
| | | } |
| | | public static Integer ConsumableorderdetailsCount { |
| | | get { |
| | | return consumableorderdetailsRecords == null |
| | | ? 0 |
| | | : consumableorderdetailsRecords.size(); |
| | | } |
| | | } |
| | | public static Integer ConsumableorderdetailsviewCount { |
| | | get { |
| | | return consumableorderdetailsRecordsview == null |
| | | ? 0 |
| | | : consumableorderdetailsRecordsview.size(); |
| | | } |
| | | } |
| | | public static List<String> lower = new List<String>(); |
| | | //附件 |
| | | public static List<ConsumableorderdetailsInfo> attachmentRecoeds { get; set; } |
| | | public static List<String> DealerProductId { get; set; } |
| | | public static Boolean editDelCommitBtnDisabled { get; private set; } |
| | | public static Boolean saveBtnDisabled { get; private set; } |
| | | public static Boolean sorderBtnDisabled { get; private set; } |
| | | public static String decisionCode { get; set; } |
| | | // 保存后动作: 1.检索 2.排序 |
| | | public static String baseUrl { get; private set; } |
| | | public static String sortKey { get; set; } |
| | | public static String preSortKey { get; private set; } |
| | | public static Boolean sortOrderAsc { get; private set; } |
| | | public static String[] sortOrder { get; private set; } |
| | | private static List<String> contactDealer = new List<String>(); |
| | | private static String[] columus = new List<String>{ |
| | | 'Consumable_Product__r.Name', |
| | | 'Consumable_Product__r.Asset_Model_No__c', |
| | | 'Consumable_Product__r.Intra_Trade_List_RMB__c', |
| | | '', |
| | | '', |
| | | 'Consumable_Product__r.Category3__c', |
| | | 'Consumable_Product__r.Category4__c', |
| | | 'Consumable_Product__r.Category5__c' |
| | | }; |
| | | private static String[] columus_no = new List<String>{ |
| | | 'Product2__c.Name', |
| | | 'Product2__c.Asset_Model_No__c', |
| | | 'Product2__c.Intra_Trade_List_RMB__c', |
| | | '', |
| | | '', |
| | | 'Category3__c', |
| | | 'Category4__c', |
| | | 'Category5__c' |
| | | }; |
| | | // 已选择产品明细 |
| | | private static List<Attachment> attachmentinfo = new List<Attachment>(); |
| | | /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ |
| | | private static String cate1ForSort = null; |
| | | private static String accountid = null; |
| | | private static String accountName = null; |
| | | // 产品 ID |
| | | public static String ESetId { get; set; } |
| | | private static String userId = ''; |
| | | //private String[] ProidListAll = new String[]{}; |
| | | public static List<SelectOption> categoryOptionList { get; set; } |
| | | public static List<SelectOption> category4OptionList { get; set; } |
| | | public static List<SelectOption> category5OptionList { get; set; } |
| | | public static List<CusOption> category3Option { get; set; } |
| | | public static List<CusOption> category4Option { get; set; } |
| | | public static List<CusOption> category5Option { get; set; } |
| | | private static Map<Id, Dealer_Product__c> DealerProductMap = new Map<Id, Dealer_Product__c>(); |
| | | public static List<String> orderzaikuId = new List<String>(); |
| | | //分页功能 |
| | | public static Integer size { get; set; } |
| | | public static Integer pageLimit { get; set; } |
| | | public static Integer noOfRecords { get; set; } |
| | | public static ApexPages.StandardSetController con { get; set; } |
| | | public static String soql { get; set; } |
| | | // 登录者工作地 |
| | | private static String userWorkLocation; |
| | | public static String agencyProType { get; set; } |
| | | public static String agencyProType1 { get; set; } //lt 20230526 安徽两票制 add |
| | | private static Boolean OSHFLG; //lt 20230517 安徽两票制 add |
| | | public static String methodType { get; set; } |
| | | public static String hospitalName { get; set; } |
| | | public static String hospitalId { get; set; } |
| | | public static String tempidHp { get; set; } |
| | | public static String tempidPp { get; set; } |
| | | private static List<String> hpids = new List<String>(); |
| | | private static Boolean isfirst = false; |
| | | //报错和警告信息 |
| | | public static List<String> errorMsgList = new List<String>(); |
| | | public static List<String> warningMsgList = new List<String>(); |
| | | //构造方法 |
| | | public LexConsumableController() { |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | DealerProductId = new List<String>(); |
| | | attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | editAble = false; |
| | | edoffersPrice = false; |
| | | returnOrder = false; |
| | | categoryOptionList = new List<SelectOption>(); |
| | | category4OptionList = new List<SelectOption>(); |
| | | category5OptionList = new List<SelectOption>(); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | } |
| | | |
| | | private static void initStandardController() { |
| | | con = new ApexPages.StandardSetController(Database.getQueryLocator(soql)); |
| | | con.setPageSize(size); |
| | | noOfRecords = con.getResultSize(); |
| | | } |
| | | |
| | | public static List<Product2__c> product2s() { |
| | | return (List<Product2__c>) con.getRecords(); |
| | | } |
| | | |
| | | private static List<ConsumableorderdetailsInfo> getPageInfo() { |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { |
| | | if (ass.check == true) { |
| | | selectedIdMap.put(ass.Prod.id, ass.Prod.id); |
| | | reSet.add(ass); |
| | | } |
| | | } |
| | | |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | if (editAble) { |
| | | consumableorderdetailsRecordsview = reSet; |
| | | } |
| | | Integer pagestartNo = (con.getPageNumber() * size) - size; |
| | | Integer pageendNo = (con.getPageNumber() * size) > noOfRecords |
| | | ? noOfRecords |
| | | : (con.getPageNumber() * size - 1); |
| | | Integer addNo = 0; |
| | | for ( |
| | | Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++ |
| | | ) { |
| | | Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); |
| | | if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { |
| | | addNo++; |
| | | //continue; |
| | | } |
| | | // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { |
| | | // break; |
| | | // } |
| | | else { |
| | | if (consumableorderdetailsRecords[i].check == false) { |
| | | consumableorderdetailsRecords[i].esd = orderdetails1; |
| | | /*****************検索用******************/ |
| | | public static Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ |
| | | public static String category1 { get; set; } |
| | | public static String category5 { get; set; } |
| | | public static String category4 { get; set; } |
| | | public static String category3 { get; set; } |
| | | public static String category_Goods { get; set; } |
| | | public static Boolean specialCampaign { get; set; } |
| | | public static Boolean cansee { get; set; } |
| | | //经销商合同名称 |
| | | public static String contractName { get; set; } |
| | | //经销商合同ID |
| | | public static String contractId { get; set; } |
| | | //经销商定价查看权限 |
| | | public static Boolean dealerPricesee { get; set; } |
| | | /*****************画面初始化用********************************/ |
| | | /******20160313_add**************/ |
| | | //public String idCheck {get;set;} |
| | | public static Boolean editAble { get; set; } |
| | | public static Boolean edoffersPrice { get; set; } |
| | | public static String statusEdit { get; set; } |
| | | public static Boolean returnOrder { get; set; } |
| | | public static String searchDone { get; set; } |
| | | //暂用20160323 |
| | | public static Decimal disCount = 0; |
| | | //总价格计算结果 |
| | | public static Decimal sumPrice { get; set; } |
| | | //自定义特价金额 |
| | | public static Decimal bargainPrice { get; set; } |
| | | //产品上下限 |
| | | public static String[] proLimitAndDate = new List<String>{}; |
| | | /*****************画面表示Bean******************/ |
| | | private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview { get; set; } |
| | | public static Integer ConsumableorderdetailsCount { |
| | | get { |
| | | return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); |
| | | } |
| | | //consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; |
| | | consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); |
| | | addNo++; |
| | | } |
| | | // if (addNo >= size) |
| | | // break; |
| | | } |
| | | return consumableorderdetailsRecordsview; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results init(String type, String esetId, String keywordStr) { |
| | | Results results = new Results(); |
| | | results.isNoteStay = LexUtility.getIsNoteStay(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | DealerProductId = new List<String>(); |
| | | attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | editAble = false; |
| | | edoffersPrice = false; |
| | | returnOrder = false; |
| | | categoryOptionList = new List<SelectOption>(); |
| | | category4OptionList = new List<SelectOption>(); |
| | | category5OptionList = new List<SelectOption>(); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | ESetId = esetId; |
| | | methodType = type; |
| | | if (String.isBlank(methodType) && String.isNotBlank(ESetId)) { |
| | | List<Consumable_order__c> oclist = [ |
| | | SELECT orderPattern__c |
| | | FROM Consumable_order__c |
| | | WHERE id = :ESetid |
| | | ]; |
| | | methodType = oclist.get(0).orderPattern__c; |
| | | public static Integer ConsumableorderdetailsviewCount { |
| | | get { |
| | | return consumableorderdetailsRecordsview == null ? 0 : consumableorderdetailsRecordsview.size(); |
| | | } |
| | | } |
| | | statusEdit = keywordStr; |
| | | System.debug('Param:' + ESetId + '---' + methodType + '---' + statusEdit); |
| | | try { |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[8]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; |
| | | cate1ForSort = ''; |
| | | decisionCode = ''; |
| | | sumPrice = 0; |
| | | specialCampaign = false; |
| | | if ( |
| | | ESetId != null && |
| | | ESetId != '' && |
| | | statusEdit == '' && |
| | | statusEdit == null |
| | | ) { |
| | | public static List<String> lower = new List<String>(); |
| | | //附件 |
| | | public static List<ConsumableorderdetailsInfo> attachmentRecoeds { get; set; } |
| | | public static List<String> DealerProductId { get; set; } |
| | | public static Boolean editDelCommitBtnDisabled { get; private set; } |
| | | public static Boolean saveBtnDisabled { get; private set; } |
| | | public static Boolean sorderBtnDisabled { get; private set; } |
| | | public static String decisionCode { get; set; } |
| | | // 保存后动作: 1.检索 2.排序 |
| | | public static String baseUrl { get; private set; } |
| | | public static String sortKey { get; set; } |
| | | public static String preSortKey { get; private set; } |
| | | public static Boolean sortOrderAsc { get; private set; } |
| | | public static String[] sortOrder { get; private set; } |
| | | private static List<String> contactDealer = new List<String>(); |
| | | private static String[] columus = new List<String>{ |
| | | 'Consumable_Product__r.Name', |
| | | 'Consumable_Product__r.Asset_Model_No__c', |
| | | 'Consumable_Product__r.Intra_Trade_List_RMB__c', |
| | | '', |
| | | '', |
| | | 'Consumable_Product__r.Category3__c', |
| | | 'Consumable_Product__r.Category4__c', |
| | | 'Consumable_Product__r.Category5__c' |
| | | }; |
| | | private static String[] columus_no = new List<String>{ |
| | | 'Product2__c.Name', |
| | | 'Product2__c.Asset_Model_No__c', |
| | | 'Product2__c.Intra_Trade_List_RMB__c', |
| | | '', |
| | | '', |
| | | 'Category3__c', |
| | | 'Category4__c', |
| | | 'Category5__c' |
| | | }; |
| | | // 已选择产品明细 |
| | | private static List<Attachment> attachmentinfo = new List<Attachment>(); |
| | | /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ |
| | | private static String cate1ForSort = null; |
| | | private static String accountid = null; |
| | | private static String accountName = null; |
| | | // 产品 ID |
| | | public static String ESetId { get; set; } |
| | | private static String userId = ''; |
| | | //private String[] ProidListAll = new String[]{}; |
| | | public static List<SelectOption> categoryOptionList { get; set; } |
| | | public static List<SelectOption> category4OptionList { get; set; } |
| | | public static List<SelectOption> category5OptionList { get; set; } |
| | | public static List<CusOption> category3Option { get; set; } |
| | | public static List<CusOption> category4Option { get; set; } |
| | | public static List<CusOption> category5Option { get; set; } |
| | | private static Map<Id, Dealer_Product__c> DealerProductMap = new Map<Id, Dealer_Product__c>(); |
| | | public static List<String> orderzaikuId = new List<String>(); |
| | | //分页功能 |
| | | public static Integer size { get; set; } |
| | | public static Integer pageLimit { get; set; } |
| | | public static Integer noOfRecords { get; set; } |
| | | public static ApexPages.StandardSetController con { get; set; } |
| | | public static String soql { get; set; } |
| | | // 登录者工作地 |
| | | private static String userWorkLocation; |
| | | public static String agencyProType { get; set; } |
| | | public static String agencyProType1 { get; set; } //lt 20230526 安徽两票制 add |
| | | private static Boolean OSHFLG; //lt 20230517 安徽两票制 add |
| | | public static String methodType { get; set; } |
| | | public static String hospitalName { get; set; } |
| | | public static String hospitalId { get; set; } |
| | | public static String tempidHp { get; set; } |
| | | public static String tempidPp { get; set; } |
| | | private static List<String> hpids = new List<String>(); |
| | | private static Boolean isfirst = false; |
| | | //报错和警告信息 |
| | | public static List<String> errorMsgList = new List<String>(); |
| | | public static List<String> warningMsgList = new List<String>(); |
| | | //构造方法 |
| | | public LexConsumableController() { |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | DealerProductId = new List<String>(); |
| | | attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | editAble = false; |
| | | } else if ( |
| | | (ESetId == null || ESetId == '') && |
| | | (statusEdit == '' || |
| | | statusEdit == null) |
| | | ) { |
| | | editAble = true; |
| | | } else if ( |
| | | ESetId != null && |
| | | ESetId != '' && |
| | | statusEdit != '' && |
| | | statusEdit != null |
| | | ) { |
| | | editAble = true; |
| | | } |
| | | userId = UserInfo.getUserId(); |
| | | List<user> Useracc = new List<user>(); |
| | | //lt 20230517 安徽两票制 add ,OSHFLG__c |
| | | Useracc = [ |
| | | SELECT accountid, Work_Location__c, UserPro_Type__c, OSHFLG__c |
| | | FROM user |
| | | WHERE id = :userId |
| | | ]; |
| | | accountid = Useracc[0].accountid; |
| | | userWorkLocation = Useracc[0].Work_Location__c; |
| | | agencyProType = Useracc[0].UserPro_Type__c; |
| | | agencyProType1 = Useracc[0].UserPro_Type__c; //lt 20230526 安徽两票制 add |
| | | //lt 20230526 安徽两票制 start |
| | | OSHFLG = Useracc[0].OSHFLG__c; //lt 20230517 安徽两票制 add |
| | | if (OSHFLG) { |
| | | agencyProType1 = 'OSH'; |
| | | } else if (String.isBlank(Useracc[0].UserPro_Type__c)) { |
| | | agencyProType1 = 'ET'; |
| | | } |
| | | //lt 20230526 安徽两票制 end |
| | | if (String.isBlank(Useracc[0].UserPro_Type__c)) { |
| | | agencyProType = 'ET'; |
| | | } |
| | | //错误信息提示 |
| | | if ( |
| | | String.isNotBlank(methodType) && |
| | | methodType.equals('hospitalorder') && |
| | | agencyProType == 'ET' |
| | | ) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!')); |
| | | errorMsgList.add('您没有订货医院特价产品的权限!'); |
| | | } |
| | | contactDealer = new List<String>(); |
| | | Date dateToday = Date.today(); |
| | | //查该经销商下所有有效合同 |
| | | List<Account> contractList = [ |
| | | SELECT Id, Name, RecordType.DeveloperName |
| | | FROM Account |
| | | WHERE |
| | | RecordType.DeveloperName = 'AgencyContract' |
| | | AND Contract_Decide_Start_Date__c <= :dateToday |
| | | AND Contract_Decide_End_Date__c >= :dateToday |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Agent_Ref__c = :accountid |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | for (Account contract : contractList) { |
| | | contactDealer.add(contract.Id); |
| | | } |
| | | DealerProductMap = new Map<Id, Dealer_Product__c>(); |
| | | DealerProductId = getDealerProductId(); |
| | | Account accountInfo = [ |
| | | SELECT |
| | | Name, |
| | | Dealer_discount__c, |
| | | Product_Limit_Date__c, |
| | | Product_Limit_DateENG__c |
| | | FROM account |
| | | WHERE id = :accountid |
| | | ]; |
| | | accountName = accountInfo.Name; |
| | | String product_Limit; |
| | | if (agencyProType == 'ET') { |
| | | product_Limit = accountInfo.Product_Limit_Date__c; |
| | | } else { |
| | | product_Limit = accountInfo.Product_Limit_DateENG__c; |
| | | } |
| | | if (product_Limit != null && product_Limit != '') { |
| | | proLimitAndDate = product_Limit.split(','); |
| | | } |
| | | saveBtnDisabled = false; |
| | | sorderBtnDisabled = false; |
| | | coc = new Consumable_order__c(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | if (String.isBlank(agencyProType)) { |
| | | //return ; |
| | | } |
| | | List<Product2__c> Product2Selected = new List<Product2__c>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //经销商在库数据 |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Cancellation_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Isoverdue__c = 1 |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | if (ESetId == null || ESetId == '') { |
| | | //获取经销商默认的一个合同 |
| | | List<Account> contract = [ |
| | | SELECT id, Name, State_Master__c, State_Master__r.Name |
| | | FROM Account |
| | | WHERE |
| | | ParentId = :accountid |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (contract.size() == 1) { |
| | | contractName = contract[0].Name; |
| | | contractId = contract[0].Id; |
| | | } |
| | | editDelCommitBtnDisabled = true; |
| | | List<String> DealerProductId = new List<String>(); |
| | | soql = makeSoql('', '', '', '', '', false, DealerProductId); |
| | | edoffersPrice = false; |
| | | returnOrder = false; |
| | | categoryOptionList = new List<SelectOption>(); |
| | | category4OptionList = new List<SelectOption>(); |
| | | category5OptionList = new List<SelectOption>(); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | product2Selected = Database.query(soql); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | } |
| | | |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | consumableorderdetailsRecords.add( |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | MidMap.put( |
| | | product2Selected[i].Id, |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | } |
| | | //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法 |
| | | if ( |
| | | String.isBlank(methodType) || |
| | | (!methodType.equals('promotionorder') && |
| | | !methodType.equals('hospitalorder')) |
| | | ) { |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | if ( |
| | | countDel[i].promotionorder__c == false && |
| | | countDel[i].hospitalSpecialOffer__c == false |
| | | ) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | private static void initStandardController() { |
| | | con = new ApexPages.StandardSetController(Database.getQueryLocator(soql)); |
| | | con.setPageSize(size); |
| | | noOfRecords = con.getResultSize(); |
| | | } |
| | | |
| | | public static List<Product2__c> product2s() { |
| | | return (List<Product2__c>) con.getRecords(); |
| | | } |
| | | |
| | | private static List<ConsumableorderdetailsInfo> getPageInfo() { |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { |
| | | if (ass.check == true) { |
| | | selectedIdMap.put(ass.Prod.id, ass.Prod.id); |
| | | reSet.add(ass); |
| | | } |
| | | } |
| | | } |
| | | |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | if (editAble) { |
| | | consumableorderdetailsRecordsview = reSet; |
| | | } |
| | | Integer pagestartNo = (con.getPageNumber() * size) - size; |
| | | Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1); |
| | | Integer addNo = 0; |
| | | for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) { |
| | | Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); |
| | | if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { |
| | | addNo++; |
| | | //continue; |
| | | } |
| | | // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { |
| | | // break; |
| | | // } |
| | | else { |
| | | if (consumableorderdetailsRecords[i].check == false) { |
| | | consumableorderdetailsRecords[i].esd = orderdetails1; |
| | | } |
| | | //consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; |
| | | consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); |
| | | addNo++; |
| | | } |
| | | // if (addNo >= size) |
| | | // break; |
| | | } |
| | | return consumableorderdetailsRecordsview; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results init(String type, String esetId, String keywordStr) { |
| | | Results results = new Results(); |
| | | results.isNoteStay = LexUtility.getIsNoteStay(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | //经销商定价 计算 |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf( |
| | | bss.Prod.Product2__r.Packing_list_manual__c |
| | | ); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id) |
| | | .Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id) |
| | | .Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id) |
| | | .OrderGoods_Limit__c; |
| | | } |
| | | consumableorderdetailsRecords.add(bss); |
| | | DealerProductId = new List<String>(); |
| | | attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | editAble = false; |
| | | edoffersPrice = false; |
| | | returnOrder = false; |
| | | categoryOptionList = new List<SelectOption>(); |
| | | category4OptionList = new List<SelectOption>(); |
| | | category5OptionList = new List<SelectOption>(); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | ESetId = esetId; |
| | | methodType = type; |
| | | if (String.isBlank(methodType) && String.isNotBlank(ESetId)) { |
| | | List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; |
| | | methodType = oclist.get(0).orderPattern__c; |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | if ( |
| | | methodType != null && |
| | | methodType != '' && |
| | | (methodType.equals('hospitalorder') || |
| | | methodType.equals('promotionorder')) |
| | | ) { |
| | | searchorderdetails( |
| | | methodType, |
| | | accountid, |
| | | hospitalId, |
| | | contractId, |
| | | userWorkLocation, |
| | | accountName, |
| | | proLimitAndDate, |
| | | editAble |
| | | ); |
| | | isfirst = true; |
| | | statusEdit = keywordStr; |
| | | System.debug('Param:' + ESetId + '---' + methodType + '---' + statusEdit); |
| | | try { |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[8]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; |
| | | cate1ForSort = ''; |
| | | decisionCode = ''; |
| | | sumPrice = 0; |
| | | specialCampaign = false; |
| | | if (ESetId != null && ESetId != '' && statusEdit == '' && statusEdit == null) { |
| | | editAble = false; |
| | | } else if ((ESetId == null || ESetId == '') && (statusEdit == '' || statusEdit == null)) { |
| | | editAble = true; |
| | | } else if (ESetId != null && ESetId != '' && statusEdit != '' && statusEdit != null) { |
| | | editAble = true; |
| | | } |
| | | userId = UserInfo.getUserId(); |
| | | List<user> Useracc = new List<user>(); |
| | | //lt 20230517 安徽两票制 add ,OSHFLG__c |
| | | Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c, OSHFLG__c FROM user WHERE id = :userId]; |
| | | accountid = Useracc[0].accountid; |
| | | userWorkLocation = Useracc[0].Work_Location__c; |
| | | agencyProType = Useracc[0].UserPro_Type__c; |
| | | agencyProType1 = Useracc[0].UserPro_Type__c; //lt 20230526 安徽两票制 add |
| | | //lt 20230526 安徽两票制 start |
| | | OSHFLG = Useracc[0].OSHFLG__c; //lt 20230517 安徽两票制 add |
| | | if (OSHFLG) { |
| | | agencyProType1 = 'OSH'; |
| | | } else if (String.isBlank(Useracc[0].UserPro_Type__c)) { |
| | | agencyProType1 = 'ET'; |
| | | } |
| | | //lt 20230526 安徽两票制 end |
| | | if (String.isBlank(Useracc[0].UserPro_Type__c)) { |
| | | agencyProType = 'ET'; |
| | | } |
| | | //错误信息提示 |
| | | if (String.isNotBlank(methodType) && methodType.equals('hospitalorder') && agencyProType == 'ET') { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!')); |
| | | errorMsgList.add('您没有订货医院特价产品的权限!'); |
| | | } |
| | | contactDealer = new List<String>(); |
| | | Date dateToday = Date.today(); |
| | | //查该经销商下所有有效合同 |
| | | List<Account> contractList = [ |
| | | SELECT Id, Name, RecordType.DeveloperName |
| | | FROM Account |
| | | WHERE |
| | | RecordType.DeveloperName = 'AgencyContract' |
| | | AND Contract_Decide_Start_Date__c <= :dateToday |
| | | AND Contract_Decide_End_Date__c >= :dateToday |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Agent_Ref__c = :accountid |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | for (Account contract : contractList) { |
| | | contactDealer.add(contract.Id); |
| | | } |
| | | DealerProductMap = new Map<Id, Dealer_Product__c>(); |
| | | DealerProductId = getDealerProductId(); |
| | | Account accountInfo = [ |
| | | SELECT Name, Dealer_discount__c, Product_Limit_Date__c, Product_Limit_DateENG__c |
| | | FROM account |
| | | WHERE id = :accountid |
| | | ]; |
| | | accountName = accountInfo.Name; |
| | | String product_Limit; |
| | | if (agencyProType == 'ET') { |
| | | product_Limit = accountInfo.Product_Limit_Date__c; |
| | | } else { |
| | | product_Limit = accountInfo.Product_Limit_DateENG__c; |
| | | } |
| | | if (product_Limit != null && product_Limit != '') { |
| | | proLimitAndDate = product_Limit.split(','); |
| | | } |
| | | saveBtnDisabled = false; |
| | | sorderBtnDisabled = false; |
| | | coc = new Consumable_order__c(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | if (String.isBlank(agencyProType)) { |
| | | //return ; |
| | | } |
| | | List<Product2__c> Product2Selected = new List<Product2__c>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //经销商在库数据 |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Cancellation_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Isoverdue__c = 1 |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | if (ESetId == null || ESetId == '') { |
| | | //获取经销商默认的一个合同 |
| | | List<Account> contract = [ |
| | | SELECT id, Name, State_Master__c, State_Master__r.Name |
| | | FROM Account |
| | | WHERE |
| | | ParentId = :accountid |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (contract.size() == 1) { |
| | | contractName = contract[0].Name; |
| | | contractId = contract[0].Id; |
| | | } |
| | | editDelCommitBtnDisabled = true; |
| | | List<String> DealerProductId = new List<String>(); |
| | | soql = makeSoql('', '', '', '', '', false, DealerProductId); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | product2Selected = Database.query(soql); |
| | | |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | } |
| | | //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法 |
| | | if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | //经销商定价 计算 |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; |
| | | } |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | if (methodType != null && methodType != '' && (methodType.equals('hospitalorder') || methodType.equals('promotionorder'))) { |
| | | searchorderdetails( |
| | | methodType, |
| | | accountid, |
| | | hospitalId, |
| | | contractId, |
| | | userWorkLocation, |
| | | accountName, |
| | | proLimitAndDate, |
| | | editAble |
| | | ); |
| | | isfirst = true; |
| | | } |
| | | getPageInfo(); |
| | | } else { |
| | | if (methodType != null && methodType.equals('hospitalorder')) { |
| | | List<Consumable_order__c> oclist = [ |
| | | SELECT orderPattern__c, Order_ForHospital__c, Order_ForHospital__r.Name |
| | | FROM Consumable_order__c |
| | | WHERE id = :ESetid |
| | | ]; |
| | | if (oclist.get(0).orderPattern__c.equals('hospitalorder')) { |
| | | hospitalName = oclist.get(0).Order_ForHospital__r.Name; |
| | | hospitalId = oclist.get(0).Order_ForHospital__c; |
| | | } |
| | | } |
| | | List<Consumable_Orderdetails__c> ConsumableorderdetailsSelected = new List<Consumable_Orderdetails__c>(); |
| | | //修改 |
| | | List<Consumable_order__c> qs = new List<Consumable_order__c>(); |
| | | qs = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Order_status__c, |
| | | Consumable_pdf_insert_day__c, |
| | | Dealer_Info__c, |
| | | Deliver_date__c, |
| | | Order_Reason__c, |
| | | Order_date__c, |
| | | Contract_application_decision__c, |
| | | Total_amount__c, |
| | | Offers_Price__c, |
| | | Order_effective_contact__c, |
| | | Order_effective_contact__r.Name |
| | | FROM Consumable_order__c |
| | | WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation |
| | | ]; |
| | | if (qs.size() > 0) { |
| | | coc = qs[0]; |
| | | decisionCode = coc.Contract_application_decision__c; |
| | | contractName = coc.Order_effective_contact__r.Name; |
| | | contractId = coc.Order_effective_contact__r.Id; |
| | | } |
| | | if (qs[0].Order_status__c == '已提交' || qs[0].Order_status__c == '批准' || qs[0].Order_status__c == '附件上传完成') { |
| | | saveBtnDisabled = true; |
| | | sorderBtnDisabled = true; |
| | | editDelCommitBtnDisabled = false; |
| | | } |
| | | // 選択済みの明细を取得 |
| | | ConsumableorderdetailsSelected = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Consumable_order__c, |
| | | Consumable_Product__r.Name__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Name, |
| | | Consumable_Count__c, |
| | | Consumable_Product__r.Category3__c, |
| | | Consumable_Product__r.Category4__c, |
| | | Consumable_Product__r.Category5__c, |
| | | Consumable_Product__r.Intra_Trade_List_RMB__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Sum_of_money__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_Orderdetails__c |
| | | WHERE |
| | | recordtypeid = :System.Label.RT_ConOrderDetail1_Order |
| | | AND Consumable_order__c = :ESetId |
| | | AND Order_Owner_WorkLocal__c = :userWorkLocation |
| | | AND Consumable_order__r.Dealer_Info__c = :accountid |
| | | ]; |
| | | for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { |
| | | if (cdc1.Consumable_Product__c != null) { |
| | | orderzaikuId.add(cdc1.Consumable_Product__c); |
| | | } |
| | | } |
| | | soql = makeSoqlorderdet(); |
| | | System.debug('soql:' + soql); |
| | | size = orderzaikuId.size(); |
| | | initStandardController(); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | } |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | //add by rentx 2020-12-09 |
| | | if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder')) |
| | | ) { |
| | | if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecords |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; |
| | | } |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { |
| | | ass.sortBy = sortOrderAsc; |
| | | for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { |
| | | sumPrice += cdc1.Sum_of_money__c; |
| | | if (ass.prod.Id == cdc1.Consumable_Product__c) { |
| | | ass.check = true; |
| | | ass.esd = cdc1; |
| | | } |
| | | } |
| | | } |
| | | //附件 |
| | | // attachmentinfo = [SELECT Id, Name, OwnerId, Owner.Name FROM Attachment WHERE parentid = :ESetId]; |
| | | // if (attachmentinfo.size() > 0) { |
| | | // for (Integer i = 0; i < attachmentinfo.size(); i++) { |
| | | // attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i])); |
| | | // } |
| | | // } |
| | | List<ContentDocumentLink> links = [SELECT Id, ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = :ESetId]; |
| | | if (links != null && links.size() > 0) { |
| | | List<String> documentIds = new List<String>(); |
| | | for (ContentDocumentLink link : links) { |
| | | documentIds.add(link.ContentDocumentId); |
| | | } |
| | | List<ContentVersion> cvInfo = [ |
| | | SELECT Id, Title, OwnerId, Owner.Name, CreatedDate, ContentDocumentId |
| | | FROM ContentVersion |
| | | WHERE ContentDocumentId IN :documentIds |
| | | ]; |
| | | if (cvInfo.size() > 0) { |
| | | for (Integer i = 0; i < cvInfo.size(); i++) { |
| | | attachmentRecoeds.add(new ConsumableorderdetailsInfo(cvInfo[i])); |
| | | } |
| | | } |
| | | } |
| | | // |
| | | consumableorderdetailsRecords.sort(); |
| | | getPageInfo(); |
| | | } |
| | | //计算库存上、下限 |
| | | productLimtAndDate(); |
| | | lowerRecord(); |
| | | //明细排序 |
| | | List<String> upper = new List<String>(); |
| | | if (String.isNotBlank(ESetid)) { |
| | | for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { |
| | | if (bss.esd.Consumable_count__c != null && bss.allnumber != null && bss.upperlimit != null) { |
| | | if (bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit) { |
| | | upper.add(bss.esd.Consumable_Product__r.Name__c); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (upper.size() > 0) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量超出库存上限!')); |
| | | warningMsgList.add('存在以下产品订货数量超出库存上限!'); |
| | | for (Integer i = 0; i < upper.size(); i++) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, upper[i])); |
| | | warningMsgList.add(upper[i]); |
| | | } |
| | | } |
| | | if (lower.size() > 0) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量低于库存下限!')); |
| | | warningMsgList.add('存在以下产品订货数量低于库存下限!'); |
| | | for (Integer i = 0; i < lower.size(); i++) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, lower[i])); |
| | | warningMsgList.add(lower[i]); |
| | | } |
| | | } |
| | | //价格查看权限 |
| | | Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe(); |
| | | cansee = dfr.isAccessible(); |
| | | AggregateResult[] categoryList = [ |
| | | SELECT Count(id), Category3_text__c c3c |
| | | FROM Product2__c |
| | | WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c != NULL |
| | | GROUP BY Category3_text__c |
| | | ]; |
| | | //categoty3 |
| | | // categoryOptionList = new List<SelectOption>(); |
| | | category3Option = new List<CusOption>(); |
| | | // categoryOptionList.add(new SelectOption('', '-无-')); |
| | | category3Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category3Search : categoryList) { |
| | | String deliverycnt = String.valueOf(category3Search.get('c3c')); |
| | | // categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); |
| | | category3Option.add(new CusOption(deliverycnt, deliverycnt)); |
| | | } |
| | | //categoty4 |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | //categoty5 |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | //return msg |
| | | consumableorderdetailsRecordsview = consumableorderdetailsRecords; |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Success'; |
| | | results.coc = coc; |
| | | results.editAble = editAble; |
| | | results.edoffersPrice = edoffersPrice; |
| | | results.editDelCommitBtnDisabled = EditDelCommitBtnDisabled; |
| | | results.category3Option = category3Option; |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.hospitalName = hospitalName; |
| | | results.contractName = contractName; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.attachmentRecoeds = attachmentRecoeds; |
| | | results.cansee = cansee; |
| | | results.agencyProType = agencyProType; |
| | | results.agencyProType1 = agencyProType1; |
| | | results.OSHFLG = OSHFLG; |
| | | results.userWorkLocation = userWorkLocation; |
| | | results.accountName = accountName; |
| | | results.category_Goods = category_Goods; |
| | | results.specialCampaign = specialCampaign; |
| | | results.dealerProductId = DealerProductId; |
| | | results.accountid = accountid; |
| | | results.hospitalId = hospitalId; |
| | | results.contractId = contractId; |
| | | results.contactDealer = contactDealer; |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | results.methodType = methodType; |
| | | results.proLimitAndDate = proLimitAndDate; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | getPageInfo(); |
| | | } else { |
| | | if (methodType != null && methodType.equals('hospitalorder')) { |
| | | List<Consumable_order__c> oclist = [ |
| | | return results; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results categoryAllload(String agencyProTypeStr, String category3Str) { |
| | | Results results = new Results(); |
| | | agencyProType = agencyProTypeStr; |
| | | category3 = category3Str; |
| | | try { |
| | | AggregateResult[] category4List = [ |
| | | SELECT Count(id), Category4_text__c c4c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category4_text__c |
| | | ]; |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category4Search : category4List) { |
| | | String deliverycnt4 = String.valueOf(category4Search.get('c4c')); |
| | | // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); |
| | | category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); |
| | | } |
| | | AggregateResult[] category5List = [ |
| | | SELECT Count(id), Category5_text__c c5c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category5_text__c |
| | | ]; |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category5Search : category5List) { |
| | | String deliverycnt5 = String.valueOf(category5Search.get('c5c')); |
| | | // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); |
| | | category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); |
| | | } |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results categoryload(String agencyProTypeStr, String category3Str, String category4Str) { |
| | | Results results = new Results(); |
| | | agencyProType = agencyProTypeStr; |
| | | category3 = category3Str; |
| | | category4 = category4Str; |
| | | try { |
| | | AggregateResult[] category4List = [ |
| | | SELECT Count(id), Category4_text__c c4c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category4_text__c |
| | | ]; |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category4Search : category4List) { |
| | | String deliverycnt4 = String.valueOf(category4Search.get('c4c')); |
| | | // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); |
| | | category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); |
| | | } |
| | | |
| | | AggregateResult[] category5List = [ |
| | | SELECT Count(id), Category5_text__c c5c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c = :category4 |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category5_text__c |
| | | ]; |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category5Search : category5List) { |
| | | String deliverycnt5 = String.valueOf(category5Search.get('c5c')); |
| | | // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); |
| | | category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); |
| | | } |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 画面初始化 |
| | | public static void lowerRecord() { |
| | | List<ConsumableorderdetailsInfo> lowerRecord = new List<ConsumableorderdetailsInfo>(); |
| | | //库存明细取得 |
| | | Map<String, ConsumableorderdetailsInfo> midMaprecord = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<Product2__c> product2Selected = [ |
| | | SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c |
| | | FROM Product2__c |
| | | WHERE Pro2_Dealer_Object__c = TRUE AND Estimation_Entry_Possibility__c = '○' |
| | | ]; |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | //先把ConsumableorderdetailsRecords 做成map |
| | | midMaprecord.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | } |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | orderPattern__c, |
| | | Order_ForHospital__c, |
| | | Order_ForHospital__r.Name |
| | | FROM Consumable_order__c |
| | | WHERE id = :ESetid |
| | | ]; |
| | | if (oclist.get(0).orderPattern__c.equals('hospitalorder')) { |
| | | hospitalName = oclist.get(0).Order_ForHospital__r.Name; |
| | | hospitalId = oclist.get(0).Order_ForHospital__c; |
| | | } |
| | | } |
| | | List<Consumable_Orderdetails__c> ConsumableorderdetailsSelected = new List<Consumable_Orderdetails__c>(); |
| | | //修改 |
| | | List<Consumable_order__c> qs = new List<Consumable_order__c>(); |
| | | qs = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Order_status__c, |
| | | Consumable_pdf_insert_day__c, |
| | | Dealer_Info__c, |
| | | Deliver_date__c, |
| | | Order_Reason__c, |
| | | Order_date__c, |
| | | Contract_application_decision__c, |
| | | Total_amount__c, |
| | | Offers_Price__c, |
| | | Order_effective_contact__c, |
| | | Order_effective_contact__r.Name |
| | | FROM Consumable_order__c |
| | | WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Guarantee_period_for_products__c, |
| | | Isoverdue__c, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Isoverdue__c = 1 |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | //AND Consumable_order_minor__r.Dealer_Info__c = :accountid |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | if (qs.size() > 0) { |
| | | coc = qs[0]; |
| | | decisionCode = coc.Contract_application_decision__c; |
| | | contractName = coc.Order_effective_contact__r.Name; |
| | | contractId = coc.Order_effective_contact__r.Id; |
| | | } |
| | | if ( |
| | | qs[0].Order_status__c == '已提交' || |
| | | qs[0].Order_status__c == '批准' || |
| | | qs[0].Order_status__c == '附件上传完成' |
| | | ) { |
| | | saveBtnDisabled = true; |
| | | sorderBtnDisabled = true; |
| | | editDelCommitBtnDisabled = false; |
| | | } |
| | | // 選択済みの明细を取得 |
| | | ConsumableorderdetailsSelected = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Consumable_order__c, |
| | | Consumable_Product__r.Name__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Name, |
| | | Consumable_Count__c, |
| | | Consumable_Product__r.Category3__c, |
| | | Consumable_Product__r.Category4__c, |
| | | Consumable_Product__r.Category5__c, |
| | | Consumable_Product__r.Intra_Trade_List_RMB__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Sum_of_money__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_Orderdetails__c |
| | | WHERE |
| | | recordtypeid = :System.Label.RT_ConOrderDetail1_Order |
| | | AND Consumable_order__c = :ESetId |
| | | AND Order_Owner_WorkLocal__c = :userWorkLocation |
| | | AND Consumable_order__r.Dealer_Info__c = :accountid |
| | | ]; |
| | | for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { |
| | | if (cdc1.Consumable_Product__c != null) { |
| | | orderzaikuId.add(cdc1.Consumable_Product__c); |
| | | } |
| | | } |
| | | soql = makeSoqlorderdet(); |
| | | System.debug('soql:' + soql); |
| | | size = orderzaikuId.size(); |
| | | initStandardController(); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put( |
| | | product2Selected[i].Id, |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | } |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | //add by rentx 2020-12-09 |
| | | if ( |
| | | String.isNotBlank(methodType) && methodType.equals('hospitalorder') |
| | | ) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | //add by rentx 2020-12-09 |
| | | if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || methodType.equals('promotionorder') |
| | | ) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || |
| | | (!methodType.equals('promotionorder') && |
| | | !methodType.equals('hospitalorder')) |
| | | ) { |
| | | if ( |
| | | countDel[i].promotionorder__c == false && |
| | | countDel[i].hospitalSpecialOffer__c == false |
| | | ) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { |
| | | if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | lowerRecord = new List<ConsumableorderdetailsInfo>(); |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecords |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | bss.packing_list = Integer.valueOf( |
| | | bss.Prod.Product2__r.Packing_list_manual__c |
| | | ); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id) |
| | | .Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id) |
| | | .Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id) |
| | | .OrderGoods_Limit__c; |
| | | } |
| | | consumableorderdetailsRecords.add(bss); |
| | | for (ConsumableorderdetailsInfo bss : midMaprecord.values()) { |
| | | lowerRecord.add(bss); |
| | | } |
| | | allProductLimt(lowerRecord); |
| | | for (ConsumableorderdetailsInfo bss : lowerRecord) { |
| | | if (bss.allnumber < bss.lowerlimit) { |
| | | lower.add(bss.Prod.Name__c); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //库存上下限 |
| | | public static void productLimtAndDate() { |
| | | String nowName = null, nowRightAsstModelNo = null; |
| | | Map<String, String> productLimt = new Map<String, String>(); |
| | | for (Integer i = 0; i < proLimitAndDate.size(); i++) { |
| | | nowName = proLimitAndDate[i]; |
| | | if (nowName.indexOf('|') >= 0) { |
| | | nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); |
| | | nowName = nowName.subString(nowName.indexOf('|') + 1); |
| | | } |
| | | productLimt.put(nowRightAsstModelNo, nowName); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { |
| | | ass.sortBy = sortOrderAsc; |
| | | for ( |
| | | Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected |
| | | ) { |
| | | sumPrice += cdc1.Sum_of_money__c; |
| | | if (ass.prod.Id == cdc1.Consumable_Product__c) { |
| | | ass.check = true; |
| | | ass.esd = cdc1; |
| | | if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { |
| | | ass.lowerlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')) |
| | | ); |
| | | ass.upperlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //全部库存上下限 |
| | | private static void allProductLimt(List<ConsumableorderdetailsInfo> lowerRecord) { |
| | | String nowName = null, nowRightAsstModelNo = null; |
| | | Map<String, String> productLimt = new Map<String, String>(); |
| | | for (Integer i = 0; i < proLimitAndDate.size(); i++) { |
| | | nowName = proLimitAndDate[i]; |
| | | if (nowName.indexOf('|') >= 0) { |
| | | nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); |
| | | nowName = nowName.subString(nowName.indexOf('|') + 1); |
| | | } |
| | | productLimt.put(nowRightAsstModelNo, nowName); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : lowerRecord) { |
| | | if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { |
| | | ass.lowerlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')) |
| | | ); |
| | | ass.upperlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results searchConsumableorderdetails( |
| | | String userWorkLocationStr, |
| | | String agencyProTypeStr, |
| | | String accountNameStr, |
| | | String accountIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String category1Str, |
| | | String category3Str, |
| | | String category4Str, |
| | | String category5Str, |
| | | String category_GoodStr, |
| | | Boolean specialCampaignStr, |
| | | String dealerProductIdStr, |
| | | String methodTypeStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | Boolean editAbleStr, |
| | | List<String> proLimitAndDateList |
| | | ) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | userWorkLocation = userWorkLocationStr; |
| | | agencyProType = agencyProTypeStr; |
| | | accountName = accountNameStr; |
| | | accountid = accountIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | category1 = category1Str; |
| | | category3 = category3Str; |
| | | category4 = category4Str; |
| | | category5 = category5Str; |
| | | category_Goods = category_GoodStr; |
| | | specialCampaign = specialCampaignStr; |
| | | methodType = methodTypeStr; |
| | | editAble = editAbleStr; |
| | | proLimitAndDate = proLimitAndDateList; |
| | | dealerProductId = (List<String>) JSON.deserialize(dealerProductIdStr, List<String>.class); |
| | | consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsviewStr, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | try { |
| | | searchDone = 'searchDone'; |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | List<ConsumableorderdetailsInfo> derdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | //add by rentx 2020-12-09 |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | //add by rentx 2020-12-09 |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | List<Product2__c> product2Selected = new List<Product2__c>(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | soql = makeSoql(category1, category_Goods, category3, category4, category5, specialCampaign, DealerProductId); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | System.debug('soql:' + soql); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | } |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { |
| | | if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | if (selectedIdMap.containsKey(bss.Prod.id)) { |
| | | continue; |
| | | } else { |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; |
| | | } |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | productLimtAndDate(); |
| | | getPageInfo(); |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', '', '', '', '', '' }; |
| | | cate1ForSort = category1; |
| | | // 显示数据条数信息 |
| | | // makeMessage(); |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | if (consumableorderdetailsRecords.size() > 0) { |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Success'; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.errorMsg = '搜索到' + consumableorderdetailsRecords.size() + '件产品'; |
| | | } else { |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Fail'; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.errorMsg = '没有搜索到相关数据'; |
| | | } |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //医院--检索 |
| | | @AuraEnabled |
| | | public static Results searchorderdetails( |
| | | String methodTypeStr, |
| | | String accountIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String userWorkLocationStr, |
| | | String accountNameStr, |
| | | List<String> proLimitAndDateList, |
| | | Boolean editAbleStr |
| | | ) { |
| | | Results results = new Results(); |
| | | methodType = methodTypeStr; |
| | | accountId = accountIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | userWorkLocation = userWorkLocationStr; |
| | | accountName = accountNameStr; |
| | | proLimitAndDate = proLimitAndDateList; |
| | | editAble = editAbleStr; |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | try { |
| | | soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | if (methodType.equals('hospitalorder')) { |
| | | //医院id 有值 |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT id, product__c |
| | | FROM hospitalprice__c |
| | | WHERE account__c = :accountid AND hospital__c = :hospitalId |
| | | ]; |
| | | if (hplist != null && hplist.size() > 0) { |
| | | List<String> hpids = new List<String>(); |
| | | for (hospitalprice__c hc : hplist) { |
| | | hpids.add(hc.product__c); |
| | | } |
| | | |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该医院下没有符合医院特价的产品 |
| | | soql += ' AND Id = null '; |
| | | } |
| | | } else if (methodType.equals('promotionorder')) { |
| | | List<Dealer_Product__c> dpclist = [ |
| | | SELECT Id, Dealer_Product2__c |
| | | FROM Dealer_Product__c |
| | | WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | if (dpclist != null && dpclist.size() > 0) { |
| | | String ids = '('; |
| | | for (Dealer_Product__c hc : dpclist) { |
| | | hpids.add(hc.Dealer_Product2__c); |
| | | ids += '\'' + hc.Dealer_Product2__c + '\','; |
| | | } |
| | | ids = ids.substring(0, ids.length() - 1) + ')'; |
| | | if (hpids != null && hpids.size() > 0) { |
| | | // soql += ' AND Id in : hpids '; |
| | | soql += ' AND Id in ' + ids; |
| | | } |
| | | } else { |
| | | //该经销商下没有促销价格的产品 |
| | | soql += ' AND Id = null '; |
| | | } |
| | | } |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | List<Product2__c> product2Selected = new List<Product2__c>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | } |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | //AND Consumable_order_minor__r.Dealer_Info__c = :accountid |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | if (methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if (methodType.equals('promotionorder')) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | if (selectedIdMap.containsKey(bss.Prod.id)) { |
| | | continue; |
| | | } else { |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; |
| | | } |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | productLimtAndDate(); |
| | | getPageInfoForHos(); |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', '', '', '', '', '' }; |
| | | cate1ForSort = category1; |
| | | // 显示数据条数信息 |
| | | noOfRecords = consumableorderdetailsRecords.size(); |
| | | getConsumableShowTableFieldValue(); |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | if (consumableorderdetailsRecordsview.size() > 0) { |
| | | results.result = 'Success'; |
| | | results.errorMsg = '共搜索到' + consumableorderdetailsRecordsview.size() + '条数据'; |
| | | } else { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '没有搜索到相关数据'; |
| | | } |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //用户切换医院时取消选中的产品 |
| | | private static List<ConsumableorderdetailsInfo> getPageInfoForHos() { |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | if (editAble) { |
| | | consumableorderdetailsRecordsview = reSet; |
| | | } |
| | | Integer pagestartNo = (con.getPageNumber() * size) - size; |
| | | Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1); |
| | | Integer addNo = 0; |
| | | for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) { |
| | | Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); |
| | | if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { |
| | | addNo++; |
| | | //continue; |
| | | } |
| | | // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { |
| | | // break; |
| | | // } |
| | | else { |
| | | if (consumableorderdetailsRecords[i].check == false) { |
| | | consumableorderdetailsRecords[i].esd = orderdetails1; |
| | | } |
| | | consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); |
| | | addNo++; |
| | | } |
| | | // if (addNo >= size){ |
| | | // break; |
| | | // } |
| | | } |
| | | return consumableorderdetailsRecordsview; |
| | | } |
| | | //add by rentx 2020-12-03 end ===================================================================================================================== |
| | | //特价 |
| | | public static void OffersPrice() { |
| | | edoffersPrice = true; |
| | | } |
| | | |
| | | //得到促销产品Id |
| | | private static List<String> getDealerProductId() { |
| | | List<String> ProductId = new List<String>(); |
| | | Map<String, String> DealerProductIdMap = new Map<String, String>(); |
| | | Date dateToday = Date.today(); |
| | | List<Dealer_Product__c> DealerProductList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | OrderGoods_Limit__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c IN :contactDealer |
| | | AND Campaign_StartDate__c <= :dateToday |
| | | AND Campaign_EndDate__c >= :dateToday |
| | | AND Special_Campaign_Price__c != NULL |
| | | ]; |
| | | for (Dealer_Product__c dealerProduct : DealerProductList) { |
| | | if (DealerProductIdMap.containsKey(dealerProduct.Dealer_Product2__c)) { |
| | | continue; |
| | | } else { |
| | | ProductId.add(dealerProduct.Dealer_Product2__c); |
| | | DealerProductIdMap.put(dealerProduct.Dealer_Product2__c, dealerProduct.Dealer_Product2__c); |
| | | } |
| | | } |
| | | return ProductId; |
| | | } |
| | | |
| | | private static String makeSoql( |
| | | String CateName, |
| | | String CateCode, |
| | | String Category3, |
| | | String Category4, |
| | | String Category5, |
| | | Boolean specialCampaign, |
| | | List<String> DealerProductId |
| | | ) { |
| | | String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | // add begin ================================================================================================ |
| | | if (methodType != null && methodType.equals('hospitalorder')) { |
| | | //如果是医院特价 |
| | | //1.判断 医院id是否有值 如果有值 则根据医院id去 医院特价表中获取产品id |
| | | //医院id 有值 |
| | | if (hospitalId == null || hospitalId == '') { |
| | | soql += ' and id = null '; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择医院')); |
| | | warningMsgList.add('请选择医院'); |
| | | } else { |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT id, product__c |
| | | FROM hospitalprice__c |
| | | WHERE account__c = :accountid AND hospital__c = :hospitalId |
| | | ]; |
| | | if (hplist != null && hplist.size() > 0) { |
| | | hpids = new List<String>(); |
| | | for (hospitalprice__c hc : hplist) { |
| | | hpids.add(hc.product__c); |
| | | } |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该医院下没有符合医院特价的产品 |
| | | soql += ' AND Id = null '; |
| | | return soql; |
| | | } |
| | | } |
| | | } |
| | | //促销订货 |
| | | if (methodType != null && methodType.equals('promotionorder')) { |
| | | if (contractId == null || contractId == '') { |
| | | soql += ' and id = null '; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择合同')); |
| | | warningMsgList.add('请选择合同'); |
| | | } else { |
| | | //1.查询所有经销商产品 |
| | | List<Dealer_Product__c> dpclist = [ |
| | | SELECT Id, Dealer_Product2__c |
| | | FROM Dealer_Product__c |
| | | WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | |
| | | if (dpclist != null && dpclist.size() > 0) { |
| | | hpids = new List<String>(); |
| | | for (Dealer_Product__c hc : dpclist) { |
| | | hpids.add(hc.Dealer_Product2__c); |
| | | } |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该经销商下没有促销价格的产品 |
| | | soql += ' AND Id = null '; |
| | | return soql; |
| | | } |
| | | } |
| | | } |
| | | //add end =================================================================================================== |
| | | if (!String.isBlank(CateName)) { |
| | | soql += |
| | | ' AND (Name__c like \'%' + |
| | | String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + |
| | | '%\' or Asset_Model_No__c like \'%' + |
| | | String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + |
| | | '%\')'; |
| | | } |
| | | if (!String.isBlank(Category3)) { |
| | | soql += ' AND Category3__c = \'' + Category3 + '\''; |
| | | } |
| | | if (!String.isBlank(Category4)) { |
| | | soql += ' AND Category4__c = \'' + Category4 + '\''; |
| | | } |
| | | if (!String.isBlank(Category5)) { |
| | | soql += ' AND Category5__c = \'' + Category5 + '\''; |
| | | } |
| | | if (agencyProType == 'ET') { |
| | | soql += ' AND Pro2_Dealer_Object__c = true'; |
| | | } |
| | | if (agencyProType == 'ENG') { |
| | | soql += ' AND Pro2_Dealer_ENG__c = true'; |
| | | } |
| | | soql += ' AND Intra_Trade_List_RMB__c > 0 '; |
| | | System.debug('soql +++++++++++ ' + soql); |
| | | return soql; |
| | | } |
| | | |
| | | private static String makeSoqlorderdet() { |
| | | String sqlTail = '(\''; |
| | | for (Integer i = 0; i < orderzaikuId.size(); i++) { |
| | | if (i < orderzaikuId.size() - 1) { |
| | | sqlTail += orderzaikuId[i] + '\',\''; |
| | | } else { |
| | | sqlTail += orderzaikuId[i] + '\')'; |
| | | } |
| | | } |
| | | String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | System.debug('sqlTail:' + sqlTail); |
| | | System.debug('orderzaikuId:' + orderzaikuId); |
| | | if (orderzaikuId.size() > 0) { |
| | | soql += ' AND Id in' + sqlTail; |
| | | } |
| | | return soql; |
| | | } |
| | | |
| | | // 编辑按钮 |
| | | @AuraEnabled |
| | | public static Results setEditAble(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | try { |
| | | statusEdit = 'Redirect'; |
| | | List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; |
| | | String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c; |
| | | results.result = 'Success'; |
| | | results.url = url; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 再申请 |
| | | @AuraEnabled |
| | | public static Results backOrder(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | statusEdit = 'Redirect'; |
| | | returnOrder = true; |
| | | try { |
| | | statusEdit = 'Redirect'; |
| | | List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid]; |
| | | String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c; |
| | | results.result = 'Success'; |
| | | results.url = url; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //上传附件 |
| | | @AuraEnabled |
| | | public static Results filesUpload(String pId, String fileName, String base64Data) { |
| | | Results results = new Results(); |
| | | try { |
| | | base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8'); |
| | | ContentVersion cv = new ContentVersion(); |
| | | cv.Title = fileName; |
| | | cv.PathOnClient = '/' + fileName; |
| | | cv.FirstPublishLocationId = pId; |
| | | cv.VersionData = EncodingUtil.base64Decode(base64Data); |
| | | cv.IsMajorVersion = true; |
| | | insert cv; |
| | | Consumable_order__c c = [SELECT Id FROM Consumable_order__c WHERE Id = :pId]; |
| | | c.Consumable_pdf_insert_day__c = Date.today(); |
| | | update c; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //删除按钮 |
| | | @AuraEnabled |
| | | public static Results delConsumable(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | try { |
| | | Consumable_order__c cord = new Consumable_order__c(Id = ESetId); |
| | | List<Consumable_Orderdetails__c> orderdetails1 = [ |
| | | SELECT Id |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE Consumable_order__c = :EsetId |
| | | ]; |
| | | delete orderdetails1; |
| | | delete cord; |
| | | results.result = 'Success'; |
| | | results.url = '/lexconsumableordermanage'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 提交按钮 |
| | | @AuraEnabled |
| | | public static Results sorder(String eSetidStr, String accountidStr) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | ESetId = eSetidStr; |
| | | accountid = accountidStr; |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | Map<Id, String> prodMap = new Map<Id, String>(); |
| | | Consumable_order__c P = new Consumable_order__c(); |
| | | P = new Consumable_order__c(); |
| | | p.Id = ESetId; |
| | | p.Order_date__c = Date.today(); |
| | | p.Order_status__c = '附件上传完成'; |
| | | for (Consumable_Orderdetails__c cod1 : [ |
| | | SELECT Consumable_product__r.Product2__c, Consumable_product__r.Name__c |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE Consumable_order__c = :ESetId |
| | | ]) { |
| | | prodMap.put(cod1.Consumable_product__r.Product2__c, cod1.Consumable_product__r.Name__c); |
| | | } |
| | | // GZW 提交产品无效 出错误消息 |
| | | System.debug(prodMap); |
| | | Map<String, String> chkMap = OpportunityWebService.MapCheckProRegisterDecide(prodMap, accountid, ''); |
| | | System.debug(chkMap); |
| | | if (chkMap.size() > 0) { |
| | | if (chkMap.containsKey('agency')) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '第一经销商没有有效的医疗器械经营许可证。')); |
| | | errorMsgList.add('第一经销商没有有效的医疗器械经营许可证。'); |
| | | } |
| | | for (String proId : prodMap.keySet()) { |
| | | if (chkMap.containsKey(proId)) { |
| | | if (chkMap.get(proId) == '1') { |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。') |
| | | // ); |
| | | errorMsgList.add('产品 ' + prodMap.get(proId) + ' 没有有效的注册证。'); |
| | | } else if (chkMap.get(proId) == '2') { |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。') |
| | | // ); |
| | | errorMsgList.add('产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。'); |
| | | } |
| | | } |
| | | } |
| | | results.result = 'Fail'; |
| | | results.errorMsg = ''; |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | return results; |
| | | } |
| | | update p; |
| | | Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); |
| | | psr.setObjectId(ESetId); |
| | | Approval.ProcessResult submitResult = Approval.process(psr); |
| | | results.result = 'Success'; |
| | | results.url = '/lexconsumableordermanage'; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 驳回订单copy |
| | | @AuraEnabled |
| | | public static Results ordrCopy( |
| | | String contractNameStr, |
| | | String cocStr, |
| | | String agencyProTypeStr, |
| | | String accountidStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | String contactDealerStr, |
| | | String methodTypeStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String agencyProType1Str, |
| | | Boolean OSHFLGStr |
| | | ) { |
| | | ESetId = ''; |
| | | return save( |
| | | contractNameStr, |
| | | cocStr, |
| | | agencyProTypeStr, |
| | | accountidStr, |
| | | consumableorderdetailsRecordsviewStr, |
| | | contactDealerStr, |
| | | methodTypeStr, |
| | | ESetId, |
| | | hospitalIdStr, |
| | | contractIdStr, |
| | | agencyProType1Str, |
| | | OSHFLGStr |
| | | ); |
| | | } |
| | | |
| | | //保存按钮 |
| | | @AuraEnabled |
| | | public static Results save( |
| | | String contractNameStr, |
| | | String cocStr, |
| | | String agencyProTypeStr, |
| | | String accountidStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | String contactDealerStr, |
| | | String methodTypeStr, |
| | | String eSetIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String agencyProType1Str, |
| | | Boolean OSHFLGStr |
| | | ) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | contractName = contractNameStr; |
| | | agencyProType = agencyProTypeStr; |
| | | accountid = accountidStr; |
| | | methodType = methodTypeStr; |
| | | ESetId = eSetIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | agencyProType1 = agencyProType1Str; |
| | | OSHFLG = OSHFLGStr; |
| | | coc = (Consumable_order__c) JSON.deserialize(cocStr, Consumable_order__c.class); |
| | | contactDealer = (List<String>) JSON.deserialize(contactDealerStr, List<String>.class); |
| | | System.debug('consumableorderdetailsRecordsviewStr:' + consumableorderdetailsRecordsviewStr); |
| | | consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsviewStr, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | if (coc.Offers_Price__c != null) { |
| | | String offerStr = String.valueOf(coc.Offers_Price__c); |
| | | bargainPrice = Decimal.valueOf(offerStr.replace(',', '')); |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (String.isEmpty(contractName)) { |
| | | // coc.Order_effective_contact__c.addError('请选择合同'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请选择合同'; |
| | | return results; |
| | | } |
| | | List<Account> contract = [ |
| | | SELECT Id, Name, Contract_Department_Class__c, Contract_Quote_Decide_Flag__c |
| | | FROM account |
| | | WHERE |
| | | Name = :contractName |
| | | AND Id = :contractId //lt 20230517 安徽两票制 add |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Agent_Ref__c = :accountid |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (contract.size() <= 0) { |
| | | // coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '不存在的合同,请重新确认。'; |
| | | return results; |
| | | } else { |
| | | if (String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)) { |
| | | // coc.Order_effective_contact__c.addError('合同无效,请重新确认。'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '合同无效,请重新确认。'; |
| | | return results; |
| | | } |
| | | } |
| | | Integer FLG = 0; |
| | | Integer Count = 0; |
| | | //add by rentx 2020-11-25 |
| | | List<String> tpids = new List<String>(); |
| | | //add by rentx 2020-11-25 |
| | | for (ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) { |
| | | FLG = FLG + 1; |
| | | if (CheckCount.check == false) { |
| | | Count = Count + 1; |
| | | } |
| | | if (CheckCount.check == true) { |
| | | //add by rentx 2020-11-25 |
| | | tpids.add(CheckCount.Prod.Id); |
| | | //add by rentx 2020-11-25 |
| | | if (CheckCount.esd.Consumable_Count__c == null || CheckCount.esd.Consumable_Count__c == 0) { |
| | | // CheckCount.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } |
| | | if ( |
| | | CheckCount.orderGoods_Limit > 0 && |
| | | math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c), Integer.valueOf(CheckCount.orderGoods_Limit)) > 0 |
| | | ) { |
| | | // CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入促销数量的倍数'; |
| | | return results; |
| | | } |
| | | } |
| | | } |
| | | if (Count == FLG) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请选择所需消耗品'; |
| | | return results; |
| | | } |
| | | //=======================================医院特价,有金额的话取金额 |
| | | Map<String, Decimal> dealerHospitalmMap = new Map<String, Decimal>(); |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT Id, hospital__c, mPrice__c, pPrice__c, product__c, account__c |
| | | FROM hospitalprice__c |
| | | WHERE product__c IN :tpids AND mPrice__c != NULL AND account__c = :accountid |
| | | ]; |
| | | for (hospitalprice__c dealerProduct : hplist) { |
| | | if (dealerProduct.mPrice__c != null) { |
| | | dealerHospitalmMap.put('' + dealerProduct.hospital__c + dealerProduct.product__c, dealerProduct.mPrice__c); |
| | | } |
| | | } |
| | | //促销订货 根据经销商产品中的数据计算金额 |
| | | //=======================================产品特殊折扣 |
| | | Map<String, Decimal> dealerPDiscountMap = new Map<String, Decimal>(); |
| | | Map<String, Decimal> dealerMPDiscountMap = new Map<String, Decimal>(); |
| | | //1.获取有开始结束日的产品 |
| | | Date dateToday = Date.today(); |
| | | List<Dealer_Product__c> haveDateList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | OrderGoods_Limit__c, |
| | | Special_Discount__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c IN :contactDealer |
| | | AND Campaign_StartDate__c <= :dateToday |
| | | AND Campaign_EndDate__c >= :dateToday |
| | | AND (Special_Discount__c != NULL |
| | | OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | //2.获取没有开始结束日的产品 |
| | | List<Dealer_Product__c> DealerProductList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | Special_Discount__c, |
| | | OrderGoods_Limit__c |
| | | FROM Dealer_Product__c |
| | | WHERE Dealer_Contact__c IN :contactDealer AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | for (Dealer_Product__c dealerProduct : DealerProductList) { |
| | | //如果促销价格为null 则设置特殊折扣(百分比)到集合 |
| | | if (dealerProduct.Special_Campaign_Price__c == null) { |
| | | dealerPDiscountMap.put( |
| | | '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Discount__c |
| | | ); |
| | | } else { |
| | | dealerMPDiscountMap.put( |
| | | '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Campaign_Price__c |
| | | ); |
| | | } |
| | | } |
| | | //这样做是为了计算促销价格时 优先计算促销开始结束日不为空的产品 |
| | | //如果该集合有值 则说明需要根据当前的金额或者折扣来计算 |
| | | if (haveDateList != null && haveDateList.size() > 0) { |
| | | for (Dealer_Product__c dealerProduct : haveDateList) { |
| | | if (dealerProduct.Special_Campaign_Price__c == null) { |
| | | dealerPDiscountMap.put( |
| | | '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Discount__c |
| | | ); |
| | | dealerMPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); |
| | | } else { |
| | | dealerMPDiscountMap.put( |
| | | '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Campaign_Price__c |
| | | ); |
| | | dealerPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); |
| | | } |
| | | } |
| | | } |
| | | //=======================================经销商合同折扣 |
| | | List<Account> at = [ |
| | | SELECT id, Name, State_Master__c, State_Master__r.Name, Sales_Section__c, Dealer_discount__c |
| | | FROM Account |
| | | WHERE |
| | | Name = :contractName |
| | | AND Id = :contractId //lt 20230517 安徽两票制 add |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Contact_Type__c LIKE :agencyProType |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (at.size() > 0 && at[0].Dealer_discount__c != null) { |
| | | disCount = at[0].Dealer_discount__c; |
| | | } else { |
| | | disCount = 100; |
| | | } |
| | | Consumable_order__c P = new Consumable_order__c(); |
| | | List<Consumable_Orderdetails__c> Ins = new List<Consumable_Orderdetails__c>(); |
| | | //新建订单时 |
| | | if (String.isBlank(ESetId)) { |
| | | Integer i = 1; |
| | | Integer Roll = 0; |
| | | p.Name = '*'; |
| | | p.Order_status__c = '草案中'; |
| | | p.Dealer_Info__c = accountid; |
| | | p.Order_ProType__c = agencyProType; |
| | | p.Offers_Price__c = coc.Offers_Price__c; |
| | | p.Order_date__c = coc.Order_date__c; |
| | | p.Order_effective_contact__c = contract[0].Id; |
| | | p.Order_Reason__c = coc.Order_Reason__c; |
| | | p.RecordTypeid = System.Label.RT_ConOrder_Order; |
| | | p.Overrule_order__c = coc.Id; |
| | | if (String.isNotBlank(methodType)) { |
| | | p.orderPattern__c = methodType; |
| | | } |
| | | insert p; |
| | | List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id]; |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { |
| | | Roll = Roll + 1; |
| | | if (ass.check == true) { |
| | | if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) { |
| | | // ass.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } else { |
| | | Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | } |
| | | InsAfterDel.Name = Consumable_order[0].Name + '-' + str; |
| | | InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; |
| | | InsAfterDel.Consumable_order__c = p.id; |
| | | InsAfterDel.Consumable_Product__c = ass.Prod.id; |
| | | InsAfterDel.Box_Piece__c = '盒'; |
| | | //协议订货 |
| | | if (methodType.equals('agreementorder')) { |
| | | Consumable_order[0].orderPattern__c = 'agreementorder'; |
| | | |
| | | InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; |
| | | //=====================================================================================update by rentx 2020-11-25 |
| | | } else if (methodType.equals('promotionorder')) { |
| | | Consumable_order[0].orderPattern__c = 'promotionorder'; |
| | | //促销订货 |
| | | //如果促销价格不为null 则直接使用促销价格来计算金额 |
| | | if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id); |
| | | system.debug('cai 0' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / |
| | | 100; |
| | | system.debug('cai 00' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | } |
| | | //=====================================================================================update by rentx 2020-11-25 |
| | | } else if (methodType.equals('hospitalorder')) { |
| | | //医院特价 |
| | | Consumable_order[0].Order_ForHospital__c = hospitalId; |
| | | Consumable_order[0].orderPattern__c = 'hospitalorder'; |
| | | if ( |
| | | dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && |
| | | dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null |
| | | ) { |
| | | //直接根据促销金额计算 |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get('' + hospitalId + ass.Prod.Id); |
| | | } |
| | | } else if (DealerProductMap.containsKey(ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; |
| | | system.debug('cai 2' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; |
| | | InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; |
| | | } |
| | | InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; |
| | | i++; |
| | | Ins.add(InsAfterDel); |
| | | } |
| | | } |
| | | } |
| | | ESetId = p.id; |
| | | if (Consumable_order.size() > 0) { |
| | | update Consumable_order; |
| | | } |
| | | } |
| | | //修改之后 保存订单 |
| | | if (Ins.size() > 0) { |
| | | insert Ins; |
| | | } else { |
| | | //修改,获取消耗品订单 |
| | | List<Consumable_order__c> cocinfo = new List<Consumable_order__c>(); |
| | | cocinfo = [ |
| | | SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, Order_Reason__c, Offers_Price__c |
| | | FROM Consumable_order__c |
| | | WHERE Id = :ESetId |
| | | ]; |
| | | if (cocinfo.size() > 0) { |
| | | p = cocinfo[0]; |
| | | } |
| | | p.Name = coc.Name; |
| | | p.Dealer_Info__c = accountid; |
| | | p.Order_ProType__c = agencyProType; |
| | | p.Order_date__c = coc.Order_date__c; |
| | | p.Order_effective_contact__c = contract[0].Id; |
| | | p.Order_Reason__c = coc.Order_Reason__c; |
| | | if (bargainPrice != null) { |
| | | p.Offers_Price__c = bargainPrice; |
| | | } |
| | | update p; |
| | | List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id]; |
| | | List<Consumable_Orderdetails__c> qs = new List<Consumable_Orderdetails__c>(); |
| | | qs = [ |
| | | SELECT Id |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Dealer_Info__c = :accountid |
| | | ]; |
| | | if (qs.size() > 0) { |
| | | delete qs; |
| | | } |
| | | Integer i = 1; |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { |
| | | if (ass.check == true) { |
| | | Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); |
| | | if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) { |
| | | // ass.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } else { |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | } |
| | | InsAfterDel.Name = Consumable_order[0].Name + '-' + str; |
| | | InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; |
| | | InsAfterDel.Consumable_order__c = ESetId; |
| | | InsAfterDel.Consumable_Product__c = ass.Prod.id; |
| | | InsAfterDel.Box_Piece__c = '盒'; |
| | | //协议订货 |
| | | if (methodType.equals('agreementorder')) { |
| | | Consumable_order[0].orderPattern__c = 'agreementorder'; |
| | | InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; |
| | | } else if (methodType.equals('promotionorder')) { |
| | | Consumable_order[0].orderPattern__c = 'promotionorder'; |
| | | //促销订货 |
| | | if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id); |
| | | } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / |
| | | 100; |
| | | } |
| | | } else if (methodType.equals('hospitalorder')) { |
| | | Consumable_order[0].orderPattern__c = 'hospitalorder'; |
| | | //医院特价 |
| | | Consumable_order[0].Order_ForHospital__c = hospitalId; |
| | | if ( |
| | | dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && |
| | | dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null |
| | | ) { |
| | | //直接根据促销金额计算 |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get('' + hospitalId + ass.Prod.Id); |
| | | } |
| | | } else if (DealerProductMap.containsKey(ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; |
| | | InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; |
| | | InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; |
| | | } |
| | | // ==================================================之前的促销订货的逻辑 |
| | | InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; |
| | | i++; |
| | | Ins.add(InsAfterDel); |
| | | } |
| | | } |
| | | } |
| | | if (Ins.size() > 0) { |
| | | insert Ins; |
| | | } |
| | | } |
| | | results.result = 'Success'; |
| | | results.eSetId = ESetId; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //删除附件 |
| | | @AuraEnabled |
| | | public static Results deleteAtt(String contentVersionId, String cocId) { |
| | | Results results = new Results(); |
| | | try { |
| | | List<ContentVersion> cvInfo = [SELECT Id FROM ContentVersion WHERE FirstPublishLocationId = :cocId]; |
| | | ContentVersion conVersion = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionId]; |
| | | String contentDocumentId = conVersion.ContentDocumentId; |
| | | ContentDocument conDocument = [SELECT Id FROM ContentDocument WHERE Id = :contentDocumentId]; |
| | | delete conDocument; |
| | | if (cvInfo.size() <= 1) { |
| | | Consumable_order__c c = [SELECT Id FROM Consumable_order__c WHERE Id = :cocId]; |
| | | c.Consumable_pdf_insert_day__c = null; |
| | | update c; |
| | | } |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | public static void getConsumableShowTableFieldValue() { |
| | | for (ConsumableorderdetailsInfo con : consumableorderdetailsRecordsview) { |
| | | if (con.Prod != null) { |
| | | con.recordId = con.Prod.Id; |
| | | if (!con.oldCheck) { |
| | | con.prodName = con.Prod.Name__c; |
| | | // System.debug('ProdName:'+con.Prod.Id+'---'+con.Prod.Name__c); |
| | | } |
| | | con.prodSFDAStatus = con.Prod.SFDA_Status__c; |
| | | con.prodCategory3 = con.Prod.Category3__c; |
| | | con.prodCategory4 = con.Prod.Category4__c; |
| | | con.prodCategory5 = con.Prod.Category5__c; |
| | | con.prodIntraTradeList = con.Prod.Intra_Trade_List_RMB__c; |
| | | } |
| | | if (con.esd != null) { |
| | | // if(con.oldCheck){ |
| | | // con.prodName = con.esd.Consumable_Product__r.Name__c; |
| | | // } |
| | | con.consumableCount = con.esd.Consumable_count__c; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class ConsumableorderdetailsInfo implements Comparable { |
| | | @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 Integer packing_list { get; set; } |
| | | @AuraEnabled |
| | | public Date expiration_Date { get; set; } |
| | | @AuraEnabled |
| | | public String approbation_No { get; set; } |
| | | @AuraEnabled |
| | | public Decimal allnumber { get; set; } |
| | | @AuraEnabled |
| | | public Decimal allnumber_piece { get; set; } |
| | | @AuraEnabled |
| | | public Decimal oldConsumableCount { get; set; } |
| | | @AuraEnabled |
| | | public Boolean canSelect { get; set; } |
| | | @AuraEnabled |
| | | public ContentVersion Concc { get; set; } |
| | | @AuraEnabled |
| | | public Boolean sortBy { get; set; } |
| | | @AuraEnabled |
| | | public Decimal upperlimit { get; set; } |
| | | @AuraEnabled |
| | | public Decimal lowerlimit { get; set; } |
| | | @AuraEnabled |
| | | public Decimal SpecialCampaignPrice { get; set; } |
| | | @AuraEnabled |
| | | public Decimal orderGoods_Limit { get; set; } |
| | | @AuraEnabled |
| | | public Date Campaign_EndDate { get; set; } |
| | | @AuraEnabled |
| | | public String recordId { get; set; } |
| | | @AuraEnabled |
| | | public String prodName { get; set; } |
| | | @AuraEnabled |
| | | public String prodSFDAStatus { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory3 { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory4 { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory5 { get; set; } |
| | | @AuraEnabled |
| | | public Decimal prodIntraTradeList { get; set; } |
| | | @AuraEnabled |
| | | public Decimal consumableCount { get; set; } |
| | | |
| | | // 已存产品明细 |
| | | public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { |
| | | check = true; |
| | | oldCheck = true; |
| | | esd = e; |
| | | Prod = e.Consumable_Product__r; |
| | | oldConsumableCount = e.Consumable_Count__c; |
| | | canSelect = true; |
| | | allnumber = 0; |
| | | allnumber_piece = 0; |
| | | } |
| | | |
| | | public ConsumableorderdetailsInfo(Product2__c e) { |
| | | check = false; |
| | | oldCheck = false; |
| | | esd = new Consumable_Orderdetails__c(); |
| | | Prod = e; |
| | | oldConsumableCount = null; |
| | | canSelect = true; |
| | | allnumber = 0; |
| | | allnumber_piece = 0; |
| | | } |
| | | //附件 |
| | | // attachmentinfo = [SELECT Id, Name, OwnerId, Owner.Name FROM Attachment WHERE parentid = :ESetId]; |
| | | // if (attachmentinfo.size() > 0) { |
| | | // for (Integer i = 0; i < attachmentinfo.size(); i++) { |
| | | // attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i])); |
| | | // } |
| | | // } |
| | | List<ContentDocumentLink> links = [ |
| | | SELECT Id, ContentDocumentId |
| | | FROM ContentDocumentLink |
| | | WHERE LinkedEntityId = :ESetId |
| | | ]; |
| | | if (links != null && links.size() > 0) { |
| | | List<String> documentIds = new List<String>(); |
| | | for (ContentDocumentLink link : links) { |
| | | documentIds.add(link.ContentDocumentId); |
| | | } |
| | | List<ContentVersion> cvInfo = [ |
| | | SELECT |
| | | Id, |
| | | Title, |
| | | OwnerId, |
| | | Owner.Name, |
| | | CreatedDate, |
| | | ContentDocumentId |
| | | FROM ContentVersion |
| | | WHERE ContentDocumentId IN :documentIds |
| | | ]; |
| | | if (cvInfo.size() > 0) { |
| | | for (Integer i = 0; i < cvInfo.size(); i++) { |
| | | attachmentRecoeds.add(new ConsumableorderdetailsInfo(cvInfo[i])); |
| | | } |
| | | } |
| | | public ConsumableorderdetailsInfo(ContentVersion e) { |
| | | Concc = e; |
| | | } |
| | | // |
| | | consumableorderdetailsRecords.sort(); |
| | | getPageInfo(); |
| | | } |
| | | //计算库存上、下限 |
| | | productLimtAndDate(); |
| | | lowerRecord(); |
| | | //明细排序 |
| | | List<String> upper = new List<String>(); |
| | | if (String.isNotBlank(ESetid)) { |
| | | for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) { |
| | | if ( |
| | | bss.esd.Consumable_count__c != null && |
| | | bss.allnumber != null && |
| | | bss.upperlimit != null |
| | | ) { |
| | | if (bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit) { |
| | | upper.add(bss.esd.Consumable_Product__r.Name__c); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (upper.size() > 0) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量超出库存上限!')); |
| | | warningMsgList.add('存在以下产品订货数量超出库存上限!'); |
| | | for (Integer i = 0; i < upper.size(); i++) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, upper[i])); |
| | | warningMsgList.add(upper[i]); |
| | | } |
| | | } |
| | | if (lower.size() > 0) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量低于库存下限!')); |
| | | warningMsgList.add('存在以下产品订货数量低于库存下限!'); |
| | | for (Integer i = 0; i < lower.size(); i++) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, lower[i])); |
| | | warningMsgList.add(lower[i]); |
| | | } |
| | | } |
| | | //价格查看权限 |
| | | Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe(); |
| | | cansee = dfr.isAccessible(); |
| | | AggregateResult[] categoryList = [ |
| | | SELECT Count(id), Category3_text__c c3c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c != NULL |
| | | GROUP BY Category3_text__c |
| | | ]; |
| | | //categoty3 |
| | | // categoryOptionList = new List<SelectOption>(); |
| | | category3Option = new List<CusOption>(); |
| | | // categoryOptionList.add(new SelectOption('', '-无-')); |
| | | category3Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category3Search : categoryList) { |
| | | String deliverycnt = String.valueOf(category3Search.get('c3c')); |
| | | // categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); |
| | | category3Option.add(new CusOption(deliverycnt, deliverycnt)); |
| | | } |
| | | //categoty4 |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | //categoty5 |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | //return msg |
| | | consumableorderdetailsRecordsview = consumableorderdetailsRecords; |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Success'; |
| | | results.coc = coc; |
| | | results.editAble = editAble; |
| | | results.edoffersPrice = edoffersPrice; |
| | | results.editDelCommitBtnDisabled = EditDelCommitBtnDisabled; |
| | | results.category3Option = category3Option; |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.hospitalName = hospitalName; |
| | | results.contractName = contractName; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.attachmentRecoeds = attachmentRecoeds; |
| | | results.cansee = cansee; |
| | | results.agencyProType = agencyProType; |
| | | results.agencyProType1 = agencyProType1; |
| | | results.OSHFLG = OSHFLG; |
| | | results.userWorkLocation = userWorkLocation; |
| | | results.accountName = accountName; |
| | | results.category_Goods = category_Goods; |
| | | results.specialCampaign = specialCampaign; |
| | | results.dealerProductId = DealerProductId; |
| | | results.accountid = accountid; |
| | | results.hospitalId = hospitalId; |
| | | results.contractId = contractId; |
| | | results.contactDealer = contactDealer; |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | results.methodType = methodType; |
| | | results.proLimitAndDate = proLimitAndDate; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results categoryAllload( |
| | | String agencyProTypeStr, |
| | | String category3Str |
| | | ) { |
| | | Results results = new Results(); |
| | | agencyProType = agencyProTypeStr; |
| | | category3 = category3Str; |
| | | try { |
| | | AggregateResult[] category4List = [ |
| | | SELECT Count(id), Category4_text__c c4c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category4_text__c |
| | | ]; |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category4Search : category4List) { |
| | | String deliverycnt4 = String.valueOf(category4Search.get('c4c')); |
| | | // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); |
| | | category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); |
| | | } |
| | | AggregateResult[] category5List = [ |
| | | SELECT Count(id), Category5_text__c c5c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category5_text__c |
| | | ]; |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category5Search : category5List) { |
| | | String deliverycnt5 = String.valueOf(category5Search.get('c5c')); |
| | | // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); |
| | | category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); |
| | | } |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results categoryload( |
| | | String agencyProTypeStr, |
| | | String category3Str, |
| | | String category4Str |
| | | ) { |
| | | Results results = new Results(); |
| | | agencyProType = agencyProTypeStr; |
| | | category3 = category3Str; |
| | | category4 = category4Str; |
| | | try { |
| | | AggregateResult[] category4List = [ |
| | | SELECT Count(id), Category4_text__c c4c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c != NULL |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category4_text__c |
| | | ]; |
| | | // category4OptionList = new List<SelectOption>(); |
| | | category4Option = new List<CusOption>(); |
| | | // category4OptionList.add(new SelectOption('', '-无-')); |
| | | category4Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category4Search : category4List) { |
| | | String deliverycnt4 = String.valueOf(category4Search.get('c4c')); |
| | | // category4OptionList.add(new SelectOption(deliverycnt4, deliverycnt4)); |
| | | category4Option.add(new CusOption(deliverycnt4, deliverycnt4)); |
| | | } |
| | | |
| | | AggregateResult[] category5List = [ |
| | | SELECT Count(id), Category5_text__c c5c |
| | | FROM Product2__c |
| | | WHERE |
| | | Estimation_Entry_Possibility__c = '○' |
| | | AND Product_Type__c LIKE :agencyProType |
| | | AND Category3_text__c = :category3 |
| | | AND Category4_text__c = :category4 |
| | | AND Category5_text__c != NULL |
| | | GROUP BY Category5_text__c |
| | | ]; |
| | | // category5OptionList = new List<SelectOption>(); |
| | | category5Option = new List<CusOption>(); |
| | | // category5OptionList.add(new SelectOption('', '-无-')); |
| | | category5Option.add(new CusOption('-无-', '')); |
| | | for (AggregateResult category5Search : category5List) { |
| | | String deliverycnt5 = String.valueOf(category5Search.get('c5c')); |
| | | // category5OptionList.add(new SelectOption(deliverycnt5, deliverycnt5)); |
| | | category5Option.add(new CusOption(deliverycnt5, deliverycnt5)); |
| | | } |
| | | results.category4Option = category4Option; |
| | | results.category5Option = category5Option; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 画面初始化 |
| | | public static void lowerRecord() { |
| | | List<ConsumableorderdetailsInfo> lowerRecord = new List<ConsumableorderdetailsInfo>(); |
| | | //库存明细取得 |
| | | Map<String, ConsumableorderdetailsInfo> midMaprecord = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<Product2__c> product2Selected = [ |
| | | SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c |
| | | FROM Product2__c |
| | | WHERE |
| | | Pro2_Dealer_Object__c = TRUE |
| | | AND Estimation_Entry_Possibility__c = '○' |
| | | ]; |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i])); |
| | | //先把ConsumableorderdetailsRecords 做成map |
| | | midMaprecord.put( |
| | | product2Selected[i].Id, |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | } |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Guarantee_period_for_products__c, |
| | | Isoverdue__c, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Isoverdue__c = 1 |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | //AND Consumable_order_minor__r.Dealer_Info__c = :accountid |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | //add by rentx 2020-12-09 |
| | | if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || methodType.equals('promotionorder') |
| | | ) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || |
| | | (!methodType.equals('promotionorder') && |
| | | !methodType.equals('hospitalorder')) |
| | | ) { |
| | | if ( |
| | | countDel[i].promotionorder__c == false && |
| | | countDel[i].hospitalSpecialOffer__c == false |
| | | ) { |
| | | if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = midMaprecord.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | lowerRecord = new List<ConsumableorderdetailsInfo>(); |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecords |
| | | for (ConsumableorderdetailsInfo bss : midMaprecord.values()) { |
| | | lowerRecord.add(bss); |
| | | } |
| | | allProductLimt(lowerRecord); |
| | | for (ConsumableorderdetailsInfo bss : lowerRecord) { |
| | | if (bss.allnumber < bss.lowerlimit) { |
| | | lower.add(bss.Prod.Name__c); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //库存上下限 |
| | | public static void productLimtAndDate() { |
| | | String nowName = null, nowRightAsstModelNo = null; |
| | | Map<String, String> productLimt = new Map<String, String>(); |
| | | for (Integer i = 0; i < proLimitAndDate.size(); i++) { |
| | | nowName = proLimitAndDate[i]; |
| | | if (nowName.indexOf('|') >= 0) { |
| | | nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); |
| | | nowName = nowName.subString(nowName.indexOf('|') + 1); |
| | | } |
| | | productLimt.put(nowRightAsstModelNo, nowName); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { |
| | | if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { |
| | | ass.lowerlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c) |
| | | .subString( |
| | | 0, |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') |
| | | ) |
| | | ); |
| | | ass.upperlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c) |
| | | .subString( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1 |
| | | ) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //全部库存上下限 |
| | | private static void allProductLimt( |
| | | List<ConsumableorderdetailsInfo> lowerRecord |
| | | ) { |
| | | String nowName = null, nowRightAsstModelNo = null; |
| | | Map<String, String> productLimt = new Map<String, String>(); |
| | | for (Integer i = 0; i < proLimitAndDate.size(); i++) { |
| | | nowName = proLimitAndDate[i]; |
| | | if (nowName.indexOf('|') >= 0) { |
| | | nowRightAsstModelNo = nowName.subString(0, nowName.indexOf('|')); |
| | | nowName = nowName.subString(nowName.indexOf('|') + 1); |
| | | } |
| | | productLimt.put(nowRightAsstModelNo, nowName); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : lowerRecord) { |
| | | if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) { |
| | | ass.lowerlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c) |
| | | .subString( |
| | | 0, |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') |
| | | ) |
| | | ); |
| | | ass.upperlimit = decimal.valueOf( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c) |
| | | .subString( |
| | | productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1 |
| | | ) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static Results searchConsumableorderdetails( |
| | | String userWorkLocationStr, |
| | | String agencyProTypeStr, |
| | | String accountNameStr, |
| | | String accountIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String category1Str, |
| | | String category3Str, |
| | | String category4Str, |
| | | String category5Str, |
| | | String category_GoodStr, |
| | | Boolean specialCampaignStr, |
| | | String dealerProductIdStr, |
| | | String methodTypeStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | Boolean editAbleStr, |
| | | List<String> proLimitAndDateList |
| | | ) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | userWorkLocation = userWorkLocationStr; |
| | | agencyProType = agencyProTypeStr; |
| | | accountName = accountNameStr; |
| | | accountid = accountIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | category1 = category1Str; |
| | | category3 = category3Str; |
| | | category4 = category4Str; |
| | | category5 = category5Str; |
| | | category_Goods = category_GoodStr; |
| | | specialCampaign = specialCampaignStr; |
| | | methodType = methodTypeStr; |
| | | editAble = editAbleStr; |
| | | proLimitAndDate = proLimitAndDateList; |
| | | dealerProductId = (List<String>) JSON.deserialize( |
| | | dealerProductIdStr, |
| | | List<String>.class |
| | | ); |
| | | consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsviewStr, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | try { |
| | | searchDone = 'searchDone'; |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | List<ConsumableorderdetailsInfo> derdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | //add by rentx 2020-12-09 |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | //add by rentx 2020-12-09 |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | List<Product2__c> product2Selected = new List<Product2__c>(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | soql = makeSoql( |
| | | category1, |
| | | category_Goods, |
| | | category3, |
| | | category4, |
| | | category5, |
| | | specialCampaign, |
| | | DealerProductId |
| | | ); |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | System.debug('soql:' + soql); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put( |
| | | product2Selected[i].Id, |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | } |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if ( |
| | | String.isNotBlank(methodType) && methodType.equals('hospitalorder') |
| | | ) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || methodType.equals('promotionorder') |
| | | ) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if ( |
| | | String.isBlank(methodType) || |
| | | (!methodType.equals('promotionorder') && |
| | | !methodType.equals('hospitalorder')) |
| | | ) { |
| | | if ( |
| | | countDel[i].promotionorder__c == false && |
| | | countDel[i].hospitalSpecialOffer__c == false |
| | | ) { |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | if (selectedIdMap.containsKey(bss.Prod.id)) { |
| | | continue; |
| | | } else { |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id) |
| | | .Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id) |
| | | .Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id) |
| | | .OrderGoods_Limit__c; |
| | | } |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf( |
| | | bss.Prod.Product2__r.Packing_list_manual__c |
| | | ); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | productLimtAndDate(); |
| | | getPageInfo(); |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', '', '', '', '', '' }; |
| | | cate1ForSort = category1; |
| | | // 显示数据条数信息 |
| | | // makeMessage(); |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | if (consumableorderdetailsRecords.size() > 0) { |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Success'; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.errorMsg = |
| | | '搜索到' + |
| | | consumableorderdetailsRecords.size() + |
| | | '件产品'; |
| | | } else { |
| | | getConsumableShowTableFieldValue(); |
| | | results.result = 'Fail'; |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | results.errorMsg = '没有搜索到相关数据'; |
| | | } |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //医院--检索 |
| | | @AuraEnabled |
| | | public static Results searchorderdetails( |
| | | String methodTypeStr, |
| | | String accountIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String userWorkLocationStr, |
| | | String accountNameStr, |
| | | List<String> proLimitAndDateList, |
| | | Boolean editAbleStr |
| | | ) { |
| | | Results results = new Results(); |
| | | methodType = methodTypeStr; |
| | | accountId = accountIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | userWorkLocation = userWorkLocationStr; |
| | | accountName = accountNameStr; |
| | | proLimitAndDate = proLimitAndDateList; |
| | | editAble = editAbleStr; |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); |
| | | try { |
| | | soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | if (methodType.equals('hospitalorder')) { |
| | | //医院id 有值 |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT id, product__c |
| | | FROM hospitalprice__c |
| | | WHERE account__c = :accountid AND hospital__c = :hospitalId |
| | | ]; |
| | | if (hplist != null && hplist.size() > 0) { |
| | | List<String> hpids = new List<String>(); |
| | | for (hospitalprice__c hc : hplist) { |
| | | hpids.add(hc.product__c); |
| | | } |
| | | |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该医院下没有符合医院特价的产品 |
| | | soql += ' AND Id = null '; |
| | | } |
| | | } else if (methodType.equals('promotionorder')) { |
| | | List<Dealer_Product__c> dpclist = [ |
| | | SELECT Id, Dealer_Product2__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c = :contractId |
| | | AND (Special_Discount__c != NULL |
| | | OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | if (dpclist != null && dpclist.size() > 0) { |
| | | String ids = '('; |
| | | for (Dealer_Product__c hc : dpclist) { |
| | | hpids.add(hc.Dealer_Product2__c); |
| | | ids += '\'' + hc.Dealer_Product2__c + '\','; |
| | | } |
| | | ids = ids.substring(0, ids.length() - 1) + ')'; |
| | | if (hpids != null && hpids.size() > 0) { |
| | | // soql += ' AND Id in : hpids '; |
| | | soql += ' AND Id in ' + ids; |
| | | } |
| | | } else { |
| | | //该经销商下没有促销价格的产品 |
| | | soql += ' AND Id = null '; |
| | | } |
| | | } |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | initStandardController(); |
| | | List<Product2__c> product2Selected = new List<Product2__c>(); |
| | | Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | product2Selected = Database.query(soql); |
| | | for (Integer i = 0; i < product2Selected.size(); i++) { |
| | | MidMap.put( |
| | | product2Selected[i].Id, |
| | | new ConsumableorderdetailsInfo(product2Selected[i]) |
| | | ); |
| | | } |
| | | List<Consumable_order_details2__c> countDel = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | Name, |
| | | Inventory_date__c, |
| | | Consumable_Product__c, |
| | | Consumable_Product__r.Asset_Model_No__c, |
| | | Recordtypeid, |
| | | Box_Piece__c, |
| | | hospitalSpecialOffer__c, |
| | | promotionorder__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Dealer_Returned__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c != NULL |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | //AND Consumable_order_minor__r.Dealer_Info__c = :accountid |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | for (Integer i = 0; i < countDel.size(); i++) { |
| | | if (methodType.equals('hospitalorder')) { |
| | | if (countDel[i].hospitalSpecialOffer__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } else if (methodType.equals('promotionorder')) { |
| | | if (countDel[i].promotionorder__c == true) { |
| | | //然后循环CountDel去修改map里的allnumber |
| | | if (MidMap.containsKey(countDel[i].Consumable_Product__c)) { |
| | | ConsumableorderdetailsInfo Jstage = MidMap.get( |
| | | countDel[i].Consumable_Product__c |
| | | ); |
| | | if (countDel[i].Box_Piece__c == '盒') { |
| | | Jstage.allnumber = Jstage.allnumber + 1; |
| | | } else { |
| | | Jstage.allnumber_piece = Jstage.allnumber_piece + 1; |
| | | } |
| | | //Jstage.BoxPiece = CountDel[i].Box_Piece__c; |
| | | MidMap.put(countDel[i].Consumable_Product__c, Jstage); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ |
| | | for (ConsumableorderdetailsInfo bss : MidMap.values()) { |
| | | if (selectedIdMap.containsKey(bss.Prod.id)) { |
| | | continue; |
| | | } else { |
| | | if (DealerProductMap.containsKey(bss.Prod.Id)) { |
| | | bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id) |
| | | .Special_Campaign_Price__c; |
| | | bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id) |
| | | .Campaign_EndDate__c; |
| | | bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id) |
| | | .OrderGoods_Limit__c; |
| | | } |
| | | bss.sortBy = sortOrderAsc; |
| | | bss.packing_list = Integer.valueOf( |
| | | bss.Prod.Product2__r.Packing_list_manual__c |
| | | ); |
| | | bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; |
| | | bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; |
| | | consumableorderdetailsRecords.add(bss); |
| | | } |
| | | } |
| | | consumableorderdetailsRecords.sort(); |
| | | productLimtAndDate(); |
| | | getPageInfoForHos(); |
| | | sortKey = '1'; |
| | | preSortKey = '1'; |
| | | sortOrderAsc = false; |
| | | sortOrder = new String[7]; |
| | | sortOrder = new List<String>{ ' ', ' ', ' ', '', '', '', '', '' }; |
| | | cate1ForSort = category1; |
| | | // 显示数据条数信息 |
| | | noOfRecords = consumableorderdetailsRecords.size(); |
| | | getConsumableShowTableFieldValue(); |
| | | results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview; |
| | | if (consumableorderdetailsRecordsview.size() > 0) { |
| | | results.result = 'Success'; |
| | | results.errorMsg = |
| | | '共搜索到' + |
| | | consumableorderdetailsRecordsview.size() + |
| | | '条数据'; |
| | | } else { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '没有搜索到相关数据'; |
| | | } |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //用户切换医院时取消选中的产品 |
| | | private static List<ConsumableorderdetailsInfo> getPageInfoForHos() { |
| | | List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> selectedIdMap = new Map<String, String>(); |
| | | consumableorderdetailsRecordsview = new List<ConsumableorderdetailsInfo>(); |
| | | if (editAble) { |
| | | consumableorderdetailsRecordsview = reSet; |
| | | } |
| | | Integer pagestartNo = (con.getPageNumber() * size) - size; |
| | | Integer pageendNo = (con.getPageNumber() * size) > noOfRecords |
| | | ? noOfRecords |
| | | : (con.getPageNumber() * size - 1); |
| | | Integer addNo = 0; |
| | | for ( |
| | | Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++ |
| | | ) { |
| | | Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); |
| | | if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) { |
| | | addNo++; |
| | | //continue; |
| | | } |
| | | // else if (consumableorderdetailsRecordsview.size() >= pageLimit + size) { |
| | | // break; |
| | | // } |
| | | else { |
| | | if (consumableorderdetailsRecords[i].check == false) { |
| | | consumableorderdetailsRecords[i].esd = orderdetails1; |
| | | } |
| | | consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); |
| | | addNo++; |
| | | } |
| | | // if (addNo >= size){ |
| | | // break; |
| | | // } |
| | | } |
| | | return consumableorderdetailsRecordsview; |
| | | } |
| | | //add by rentx 2020-12-03 end ===================================================================================================================== |
| | | //特价 |
| | | public static void OffersPrice() { |
| | | edoffersPrice = true; |
| | | } |
| | | |
| | | //得到促销产品Id |
| | | private static List<String> getDealerProductId() { |
| | | List<String> ProductId = new List<String>(); |
| | | Map<String, String> DealerProductIdMap = new Map<String, String>(); |
| | | Date dateToday = Date.today(); |
| | | List<Dealer_Product__c> DealerProductList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | OrderGoods_Limit__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c IN :contactDealer |
| | | AND Campaign_StartDate__c <= :dateToday |
| | | AND Campaign_EndDate__c >= :dateToday |
| | | AND Special_Campaign_Price__c != NULL |
| | | ]; |
| | | for (Dealer_Product__c dealerProduct : DealerProductList) { |
| | | if (DealerProductIdMap.containsKey(dealerProduct.Dealer_Product2__c)) { |
| | | continue; |
| | | } else { |
| | | ProductId.add(dealerProduct.Dealer_Product2__c); |
| | | DealerProductIdMap.put( |
| | | dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Dealer_Product2__c |
| | | ); |
| | | } |
| | | } |
| | | return ProductId; |
| | | } |
| | | |
| | | private static String makeSoql( |
| | | String CateName, |
| | | String CateCode, |
| | | String Category3, |
| | | String Category4, |
| | | String Category5, |
| | | Boolean specialCampaign, |
| | | List<String> DealerProductId |
| | | ) { |
| | | String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | // add begin ================================================================================================ |
| | | if (methodType != null && methodType.equals('hospitalorder')) { |
| | | //如果是医院特价 |
| | | //1.判断 医院id是否有值 如果有值 则根据医院id去 医院特价表中获取产品id |
| | | //医院id 有值 |
| | | if (hospitalId == null || hospitalId == '') { |
| | | soql += ' and id = null '; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择医院')); |
| | | warningMsgList.add('请选择医院'); |
| | | } else { |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT id, product__c |
| | | FROM hospitalprice__c |
| | | WHERE account__c = :accountid AND hospital__c = :hospitalId |
| | | ]; |
| | | if (hplist != null && hplist.size() > 0) { |
| | | hpids = new List<String>(); |
| | | for (hospitalprice__c hc : hplist) { |
| | | hpids.add(hc.product__c); |
| | | } |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该医院下没有符合医院特价的产品 |
| | | soql += ' AND Id = null '; |
| | | return soql; |
| | | } |
| | | } |
| | | } |
| | | //促销订货 |
| | | if (methodType != null && methodType.equals('promotionorder')) { |
| | | if (contractId == null || contractId == '') { |
| | | soql += ' and id = null '; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择合同')); |
| | | warningMsgList.add('请选择合同'); |
| | | } else { |
| | | //1.查询所有经销商产品 |
| | | List<Dealer_Product__c> dpclist = [ |
| | | SELECT Id, Dealer_Product2__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c = :contractId |
| | | AND (Special_Discount__c != NULL |
| | | OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | |
| | | if (dpclist != null && dpclist.size() > 0) { |
| | | hpids = new List<String>(); |
| | | for (Dealer_Product__c hc : dpclist) { |
| | | hpids.add(hc.Dealer_Product2__c); |
| | | } |
| | | if (hpids != null && hpids.size() > 0) { |
| | | soql += ' AND Id in : hpids '; |
| | | } |
| | | } else { |
| | | //该经销商下没有促销价格的产品 |
| | | soql += ' AND Id = null '; |
| | | return soql; |
| | | } |
| | | } |
| | | } |
| | | //add end =================================================================================================== |
| | | if (!String.isBlank(CateName)) { |
| | | soql += |
| | | ' AND (Name__c like \'%' + |
| | | String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + |
| | | '%\' or Asset_Model_No__c like \'%' + |
| | | String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + |
| | | '%\')'; |
| | | } |
| | | if (!String.isBlank(Category3)) { |
| | | soql += ' AND Category3__c = \'' + Category3 + '\''; |
| | | } |
| | | if (!String.isBlank(Category4)) { |
| | | soql += ' AND Category4__c = \'' + Category4 + '\''; |
| | | } |
| | | if (!String.isBlank(Category5)) { |
| | | soql += ' AND Category5__c = \'' + Category5 + '\''; |
| | | } |
| | | if (agencyProType == 'ET') { |
| | | soql += ' AND Pro2_Dealer_Object__c = true'; |
| | | } |
| | | if (agencyProType == 'ENG') { |
| | | soql += ' AND Pro2_Dealer_ENG__c = true'; |
| | | } |
| | | soql += ' AND Intra_Trade_List_RMB__c > 0 '; |
| | | System.debug('soql +++++++++++ ' + soql); |
| | | return soql; |
| | | } |
| | | |
| | | private static String makeSoqlorderdet() { |
| | | String sqlTail = '(\''; |
| | | for (Integer i = 0; i < orderzaikuId.size(); i++) { |
| | | if (i < orderzaikuId.size() - 1) { |
| | | sqlTail += orderzaikuId[i] + '\',\''; |
| | | } else { |
| | | sqlTail += orderzaikuId[i] + '\')'; |
| | | } |
| | | } |
| | | String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; |
| | | System.debug('sqlTail:' + sqlTail); |
| | | System.debug('orderzaikuId:' + orderzaikuId); |
| | | if (orderzaikuId.size() > 0) { |
| | | soql += ' AND Id in' + sqlTail; |
| | | } |
| | | return soql; |
| | | } |
| | | |
| | | // 编辑按钮 |
| | | @AuraEnabled |
| | | public static Results setEditAble(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | try { |
| | | statusEdit = 'Redirect'; |
| | | List<Consumable_order__c> oclist = [ |
| | | SELECT orderPattern__c |
| | | FROM Consumable_order__c |
| | | WHERE id = :ESetid |
| | | ]; |
| | | String url = |
| | | '/lexconsumable?ESetid=' + |
| | | ESetid + |
| | | '&KeyWords=' + |
| | | statusEdit + |
| | | '&type=' + |
| | | oclist.get(0).orderPattern__c; |
| | | results.result = 'Success'; |
| | | results.url = url; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 再申请 |
| | | @AuraEnabled |
| | | public static Results backOrder(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | statusEdit = 'Redirect'; |
| | | returnOrder = true; |
| | | try { |
| | | statusEdit = 'Redirect'; |
| | | List<Consumable_order__c> oclist = [ |
| | | SELECT orderPattern__c |
| | | FROM Consumable_order__c |
| | | WHERE id = :ESetid |
| | | ]; |
| | | String url = |
| | | '/lexconsumable?ESetid=' + |
| | | ESetid + |
| | | '&KeyWords=' + |
| | | statusEdit + |
| | | '&type=' + |
| | | oclist.get(0).orderPattern__c; |
| | | results.result = 'Success'; |
| | | results.url = url; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //上传附件 |
| | | @AuraEnabled |
| | | public static Results filesUpload( |
| | | String pId, |
| | | String fileName, |
| | | String base64Data |
| | | ) { |
| | | Results results = new Results(); |
| | | try { |
| | | base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8'); |
| | | ContentVersion cv = new ContentVersion(); |
| | | cv.Title = fileName; |
| | | cv.PathOnClient = '/' + fileName; |
| | | cv.FirstPublishLocationId = pId; |
| | | cv.VersionData = EncodingUtil.base64Decode(base64Data); |
| | | cv.IsMajorVersion = true; |
| | | insert cv; |
| | | Consumable_order__c c = [ |
| | | SELECT Id |
| | | FROM Consumable_order__c |
| | | WHERE Id = :pId |
| | | ]; |
| | | c.Consumable_pdf_insert_day__c = Date.today(); |
| | | update c; |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //删除按钮 |
| | | @AuraEnabled |
| | | public static Results delConsumable(String eSetidStr) { |
| | | Results results = new Results(); |
| | | ESetId = eSetidStr; |
| | | try { |
| | | Consumable_order__c cord = new Consumable_order__c(Id = ESetId); |
| | | List<Consumable_Orderdetails__c> orderdetails1 = [ |
| | | SELECT Id |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE Consumable_order__c = :EsetId |
| | | ]; |
| | | delete orderdetails1; |
| | | delete cord; |
| | | results.result = 'Success'; |
| | | results.url = '/lexconsumableordermanage'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 提交按钮 |
| | | @AuraEnabled |
| | | public static Results sorder(String eSetidStr, String accountidStr) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | ESetId = eSetidStr; |
| | | accountid = accountidStr; |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | Map<Id, String> prodMap = new Map<Id, String>(); |
| | | Consumable_order__c P = new Consumable_order__c(); |
| | | P = new Consumable_order__c(); |
| | | p.Id = ESetId; |
| | | p.Order_date__c = Date.today(); |
| | | p.Order_status__c = '附件上传完成'; |
| | | for (Consumable_Orderdetails__c cod1 : [ |
| | | SELECT Consumable_product__r.Product2__c, Consumable_product__r.Name__c |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE Consumable_order__c = :ESetId |
| | | ]) { |
| | | prodMap.put( |
| | | cod1.Consumable_product__r.Product2__c, |
| | | cod1.Consumable_product__r.Name__c |
| | | ); |
| | | } |
| | | // GZW 提交产品无效 出错误消息 |
| | | System.debug(prodMap); |
| | | Map<String, String> chkMap = OpportunityWebService.MapCheckProRegisterDecide( |
| | | prodMap, |
| | | accountid, |
| | | '' |
| | | ); |
| | | System.debug(chkMap); |
| | | if (chkMap.size() > 0) { |
| | | if (chkMap.containsKey('agency')) { |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '第一经销商没有有效的医疗器械经营许可证。')); |
| | | errorMsgList.add('第一经销商没有有效的医疗器械经营许可证。'); |
| | | } |
| | | for (String proId : prodMap.keySet()) { |
| | | if (chkMap.containsKey(proId)) { |
| | | if (chkMap.get(proId) == '1') { |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。') |
| | | // ); |
| | | errorMsgList.add( |
| | | '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。' |
| | | ); |
| | | } else if (chkMap.get(proId) == '2') { |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。') |
| | | // ); |
| | | errorMsgList.add( |
| | | '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。' |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | results.result = 'Fail'; |
| | | results.errorMsg = ''; |
| | | results.errorMsgList = errorMsgList; |
| | | results.warningMsgList = warningMsgList; |
| | | return results; |
| | | } |
| | | update p; |
| | | Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); |
| | | psr.setObjectId(ESetId); |
| | | Approval.ProcessResult submitResult = Approval.process(psr); |
| | | results.result = 'Success'; |
| | | results.url = '/lexconsumableordermanage'; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 驳回订单copy |
| | | @AuraEnabled |
| | | public static Results ordrCopy( |
| | | String contractNameStr, |
| | | String cocStr, |
| | | String agencyProTypeStr, |
| | | String accountidStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | String contactDealerStr, |
| | | String methodTypeStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String agencyProType1Str, |
| | | Boolean OSHFLGStr |
| | | ) { |
| | | ESetId = ''; |
| | | return save( |
| | | contractNameStr, |
| | | cocStr, |
| | | agencyProTypeStr, |
| | | accountidStr, |
| | | consumableorderdetailsRecordsviewStr, |
| | | contactDealerStr, |
| | | methodTypeStr, |
| | | ESetId, |
| | | hospitalIdStr, |
| | | contractIdStr, |
| | | agencyProType1Str, |
| | | OSHFLGStr |
| | | ); |
| | | } |
| | | |
| | | //保存按钮 |
| | | @AuraEnabled |
| | | public static Results save( |
| | | String contractNameStr, |
| | | String cocStr, |
| | | String agencyProTypeStr, |
| | | String accountidStr, |
| | | String consumableorderdetailsRecordsviewStr, |
| | | String contactDealerStr, |
| | | String methodTypeStr, |
| | | String eSetIdStr, |
| | | String hospitalIdStr, |
| | | String contractIdStr, |
| | | String agencyProType1Str, |
| | | Boolean OSHFLGStr |
| | | ) { |
| | | Results results = new Results(); |
| | | errorMsgList = new List<String>(); |
| | | warningMsgList = new List<String>(); |
| | | contractName = contractNameStr; |
| | | agencyProType = agencyProTypeStr; |
| | | accountid = accountidStr; |
| | | methodType = methodTypeStr; |
| | | ESetId = eSetIdStr; |
| | | hospitalId = hospitalIdStr; |
| | | contractId = contractIdStr; |
| | | agencyProType1 = agencyProType1Str; |
| | | OSHFLG = OSHFLGStr; |
| | | coc = (Consumable_order__c) JSON.deserialize( |
| | | cocStr, |
| | | Consumable_order__c.class |
| | | ); |
| | | contactDealer = (List<String>) JSON.deserialize( |
| | | contactDealerStr, |
| | | List<String>.class |
| | | ); |
| | | System.debug( |
| | | 'consumableorderdetailsRecordsviewStr:' + |
| | | consumableorderdetailsRecordsviewStr |
| | | ); |
| | | consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsviewStr, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | if (coc.Offers_Price__c != null) { |
| | | String offerStr = String.valueOf(coc.Offers_Price__c); |
| | | bargainPrice = Decimal.valueOf(offerStr.replace(',', '')); |
| | | } |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | if (String.isEmpty(contractName)) { |
| | | // coc.Order_effective_contact__c.addError('请选择合同'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请选择合同'; |
| | | return results; |
| | | } |
| | | List<Account> contract = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Contract_Department_Class__c, |
| | | Contract_Quote_Decide_Flag__c |
| | | FROM account |
| | | WHERE |
| | | Name = :contractName |
| | | AND Id = :contractId //lt 20230517 安徽两票制 add |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Agent_Ref__c = :accountid |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (contract.size() <= 0) { |
| | | // coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '不存在的合同,请重新确认。'; |
| | | return results; |
| | | } else { |
| | | if (String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)) { |
| | | // coc.Order_effective_contact__c.addError('合同无效,请重新确认。'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '合同无效,请重新确认。'; |
| | | return results; |
| | | } |
| | | } |
| | | Integer FLG = 0; |
| | | Integer Count = 0; |
| | | //add by rentx 2020-11-25 |
| | | List<String> tpids = new List<String>(); |
| | | //add by rentx 2020-11-25 |
| | | for ( |
| | | ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview |
| | | ) { |
| | | FLG = FLG + 1; |
| | | if (CheckCount.check == false) { |
| | | Count = Count + 1; |
| | | } |
| | | if (CheckCount.check == true) { |
| | | //add by rentx 2020-11-25 |
| | | tpids.add(CheckCount.Prod.Id); |
| | | //add by rentx 2020-11-25 |
| | | if ( |
| | | CheckCount.esd.Consumable_Count__c == null || |
| | | CheckCount.esd.Consumable_Count__c == 0 |
| | | ) { |
| | | // CheckCount.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } |
| | | if ( |
| | | CheckCount.orderGoods_Limit > 0 && |
| | | math.mod( |
| | | Integer.valueOf(CheckCount.esd.Consumable_Count__c), |
| | | Integer.valueOf(CheckCount.orderGoods_Limit) |
| | | ) > 0 |
| | | ) { |
| | | // CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入促销数量的倍数'; |
| | | return results; |
| | | } |
| | | } |
| | | } |
| | | if (Count == FLG) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请选择所需消耗品'; |
| | | return results; |
| | | } |
| | | //=======================================医院特价,有金额的话取金额 |
| | | Map<String, Decimal> dealerHospitalmMap = new Map<String, Decimal>(); |
| | | List<hospitalprice__c> hplist = [ |
| | | SELECT Id, hospital__c, mPrice__c, pPrice__c, product__c, account__c |
| | | FROM hospitalprice__c |
| | | WHERE |
| | | product__c IN :tpids |
| | | AND mPrice__c != NULL |
| | | AND account__c = :accountid |
| | | ]; |
| | | for (hospitalprice__c dealerProduct : hplist) { |
| | | if (dealerProduct.mPrice__c != null) { |
| | | dealerHospitalmMap.put( |
| | | '' + dealerProduct.hospital__c + dealerProduct.product__c, |
| | | dealerProduct.mPrice__c |
| | | ); |
| | | } |
| | | } |
| | | //促销订货 根据经销商产品中的数据计算金额 |
| | | //=======================================产品特殊折扣 |
| | | Map<String, Decimal> dealerPDiscountMap = new Map<String, Decimal>(); |
| | | Map<String, Decimal> dealerMPDiscountMap = new Map<String, Decimal>(); |
| | | //1.获取有开始结束日的产品 |
| | | Date dateToday = Date.today(); |
| | | List<Dealer_Product__c> haveDateList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | OrderGoods_Limit__c, |
| | | Special_Discount__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c IN :contactDealer |
| | | AND Campaign_StartDate__c <= :dateToday |
| | | AND Campaign_EndDate__c >= :dateToday |
| | | AND (Special_Discount__c != NULL |
| | | OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | //2.获取没有开始结束日的产品 |
| | | List<Dealer_Product__c> DealerProductList = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Dealer_Product2__c, |
| | | Special_Campaign_Price__c, |
| | | Campaign_StartDate__c, |
| | | Campaign_EndDate__c, |
| | | Dealer_Contact__c, |
| | | Special_Discount__c, |
| | | OrderGoods_Limit__c |
| | | FROM Dealer_Product__c |
| | | WHERE |
| | | Dealer_Contact__c IN :contactDealer |
| | | AND (Special_Discount__c != NULL |
| | | OR Special_Campaign_Price__c != NULL) |
| | | ]; |
| | | for (Dealer_Product__c dealerProduct : DealerProductList) { |
| | | //如果促销价格为null 则设置特殊折扣(百分比)到集合 |
| | | if (dealerProduct.Special_Campaign_Price__c == null) { |
| | | dealerPDiscountMap.put( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Discount__c |
| | | ); |
| | | } else { |
| | | dealerMPDiscountMap.put( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Campaign_Price__c |
| | | ); |
| | | } |
| | | } |
| | | //这样做是为了计算促销价格时 优先计算促销开始结束日不为空的产品 |
| | | //如果该集合有值 则说明需要根据当前的金额或者折扣来计算 |
| | | if (haveDateList != null && haveDateList.size() > 0) { |
| | | for (Dealer_Product__c dealerProduct : haveDateList) { |
| | | if (dealerProduct.Special_Campaign_Price__c == null) { |
| | | dealerPDiscountMap.put( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Discount__c |
| | | ); |
| | | dealerMPDiscountMap.remove( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c |
| | | ); |
| | | } else { |
| | | dealerMPDiscountMap.put( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c, |
| | | dealerProduct.Special_Campaign_Price__c |
| | | ); |
| | | dealerPDiscountMap.remove( |
| | | '' + |
| | | dealerProduct.Dealer_Contact__c + |
| | | dealerProduct.Dealer_Product2__c |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | //=======================================经销商合同折扣 |
| | | List<Account> at = [ |
| | | SELECT |
| | | id, |
| | | Name, |
| | | State_Master__c, |
| | | State_Master__r.Name, |
| | | Sales_Section__c, |
| | | Dealer_discount__c |
| | | FROM Account |
| | | WHERE |
| | | Name = :contractName |
| | | AND Id = :contractId //lt 20230517 安徽两票制 add |
| | | AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1 |
| | | AND Contact_Type__c LIKE :agencyProType |
| | | AND Contract_Decide_Start_Date__c <= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND Contract_Decide_End_Date__c >= :Date.Today() |
| | | AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add |
| | | ]; |
| | | if (at.size() > 0 && at[0].Dealer_discount__c != null) { |
| | | disCount = at[0].Dealer_discount__c; |
| | | } else { |
| | | disCount = 100; |
| | | } |
| | | Consumable_order__c P = new Consumable_order__c(); |
| | | List<Consumable_Orderdetails__c> Ins = new List<Consumable_Orderdetails__c>(); |
| | | //新建订单时 |
| | | if (String.isBlank(ESetId)) { |
| | | Integer i = 1; |
| | | Integer Roll = 0; |
| | | p.Name = '*'; |
| | | p.Order_status__c = '草案中'; |
| | | p.Dealer_Info__c = accountid; |
| | | p.Order_ProType__c = agencyProType; |
| | | p.Offers_Price__c = coc.Offers_Price__c; |
| | | p.Order_date__c = coc.Order_date__c; |
| | | p.Order_effective_contact__c = contract[0].Id; |
| | | p.Order_Reason__c = coc.Order_Reason__c; |
| | | p.RecordTypeid = System.Label.RT_ConOrder_Order; |
| | | p.Overrule_order__c = coc.Id; |
| | | if (String.isNotBlank(methodType)) { |
| | | p.orderPattern__c = methodType; |
| | | } |
| | | insert p; |
| | | List<Consumable_order__c> Consumable_order = [ |
| | | SELECT Name, orderPattern__c |
| | | FROM Consumable_order__c |
| | | WHERE id = :p.id |
| | | ]; |
| | | for ( |
| | | ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview |
| | | ) { |
| | | Roll = Roll + 1; |
| | | if (ass.check == true) { |
| | | if ( |
| | | ass.esd.Consumable_Count__c == null || |
| | | ass.esd.Consumable_Count__c == 0 |
| | | ) { |
| | | // ass.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } else { |
| | | Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | } |
| | | InsAfterDel.Name = Consumable_order[0].Name + '-' + str; |
| | | InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; |
| | | InsAfterDel.Consumable_order__c = p.id; |
| | | InsAfterDel.Consumable_Product__c = ass.Prod.id; |
| | | InsAfterDel.Box_Piece__c = '盒'; |
| | | //协议订货 |
| | | if (methodType.equals('agreementorder')) { |
| | | Consumable_order[0].orderPattern__c = 'agreementorder'; |
| | | |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | disCount / |
| | | 100; |
| | | //=====================================================================================update by rentx 2020-11-25 |
| | | } else if (methodType.equals('promotionorder')) { |
| | | Consumable_order[0].orderPattern__c = 'promotionorder'; |
| | | //促销订货 |
| | | //如果促销价格不为null 则直接使用促销价格来计算金额 |
| | | if ( |
| | | dealerMPDiscountMap.containsKey( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ) |
| | | ) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ); |
| | | system.debug('cai 0' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | } else if ( |
| | | dealerPDiscountMap.containsKey( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ) |
| | | ) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / |
| | | 100; |
| | | system.debug('cai 00' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | // 排序Consumable_order__c |
| | | public Integer compareTo(Object compareTo) { |
| | | ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo; |
| | | Integer returnValue = 0; |
| | | if (check == true) { |
| | | if (sortBy == false) { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } |
| | | return returnValue; |
| | | } else { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } |
| | | return returnValue; |
| | | } |
| | | //=====================================================================================update by rentx 2020-11-25 |
| | | } else if (methodType.equals('hospitalorder')) { |
| | | //医院特价 |
| | | Consumable_order[0].Order_ForHospital__c = hospitalId; |
| | | Consumable_order[0].orderPattern__c = 'hospitalorder'; |
| | | if ( |
| | | dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && |
| | | dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null |
| | | ) { |
| | | //直接根据促销金额计算 |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get( |
| | | '' + hospitalId + ass.Prod.Id |
| | | ); |
| | | } |
| | | } else if (DealerProductMap.containsKey(ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get( |
| | | ass.Prod.Id |
| | | ) |
| | | .Special_Campaign_Price__c; |
| | | system.debug('cai 2' + InsAfterDel.Intra_Trade_List_RMB__c); |
| | | InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; |
| | | InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get( |
| | | ass.Prod.Id |
| | | ) |
| | | .Special_Campaign_Price__c; |
| | | } |
| | | InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; |
| | | i++; |
| | | Ins.add(InsAfterDel); |
| | | } |
| | | } |
| | | } |
| | | ESetId = p.id; |
| | | if (Consumable_order.size() > 0) { |
| | | update Consumable_order; |
| | | } |
| | | } |
| | | //修改之后 保存订单 |
| | | if (Ins.size() > 0) { |
| | | insert Ins; |
| | | } else { |
| | | //修改,获取消耗品订单 |
| | | List<Consumable_order__c> cocinfo = new List<Consumable_order__c>(); |
| | | cocinfo = [ |
| | | SELECT |
| | | Id, |
| | | Name, |
| | | Order_status__c, |
| | | Dealer_Info__c, |
| | | Deliver_date__c, |
| | | Order_Reason__c, |
| | | Offers_Price__c |
| | | FROM Consumable_order__c |
| | | WHERE Id = :ESetId |
| | | ]; |
| | | if (cocinfo.size() > 0) { |
| | | p = cocinfo[0]; |
| | | } |
| | | p.Name = coc.Name; |
| | | p.Dealer_Info__c = accountid; |
| | | p.Order_ProType__c = agencyProType; |
| | | p.Order_date__c = coc.Order_date__c; |
| | | p.Order_effective_contact__c = contract[0].Id; |
| | | p.Order_Reason__c = coc.Order_Reason__c; |
| | | if (bargainPrice != null) { |
| | | p.Offers_Price__c = bargainPrice; |
| | | } |
| | | update p; |
| | | List<Consumable_order__c> Consumable_order = [ |
| | | SELECT Name, orderPattern__c |
| | | FROM Consumable_order__c |
| | | WHERE id = :p.id |
| | | ]; |
| | | List<Consumable_Orderdetails__c> qs = new List<Consumable_Orderdetails__c>(); |
| | | qs = [ |
| | | SELECT Id |
| | | FROM Consumable_Orderdetails__c |
| | | WHERE |
| | | Consumable_order__c = :ESetId |
| | | AND Consumable_order__r.Dealer_Info__c = :accountid |
| | | ]; |
| | | if (qs.size() > 0) { |
| | | delete qs; |
| | | } |
| | | Integer i = 1; |
| | | for ( |
| | | ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview |
| | | ) { |
| | | if (ass.check == true) { |
| | | Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); |
| | | if ( |
| | | ass.esd.Consumable_Count__c == null || |
| | | ass.esd.Consumable_Count__c == 0 |
| | | ) { |
| | | // ass.esd.Consumable_Count__c.addError('请输入采购数量'); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = '请输入采购数量'; |
| | | return results; |
| | | } else { |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | } |
| | | InsAfterDel.Name = Consumable_order[0].Name + '-' + str; |
| | | InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; |
| | | InsAfterDel.Consumable_order__c = ESetId; |
| | | InsAfterDel.Consumable_Product__c = ass.Prod.id; |
| | | InsAfterDel.Box_Piece__c = '盒'; |
| | | //协议订货 |
| | | if (methodType.equals('agreementorder')) { |
| | | Consumable_order[0].orderPattern__c = 'agreementorder'; |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | disCount / |
| | | 100; |
| | | } else if (methodType.equals('promotionorder')) { |
| | | Consumable_order[0].orderPattern__c = 'promotionorder'; |
| | | //促销订货 |
| | | if ( |
| | | dealerMPDiscountMap.containsKey( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ) |
| | | ) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ); |
| | | } else if ( |
| | | dealerPDiscountMap.containsKey( |
| | | '' + contract[0].Id + ass.Prod.Id |
| | | ) |
| | | ) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = |
| | | ass.Prod.Intra_Trade_List_RMB__c * |
| | | dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) / |
| | | 100; |
| | | if (sortBy == false) { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } |
| | | return returnValue; |
| | | } else { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } |
| | | return returnValue; |
| | | } |
| | | } else if (methodType.equals('hospitalorder')) { |
| | | Consumable_order[0].orderPattern__c = 'hospitalorder'; |
| | | //医院特价 |
| | | Consumable_order[0].Order_ForHospital__c = hospitalId; |
| | | if ( |
| | | dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && |
| | | dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null |
| | | ) { |
| | | //直接根据促销金额计算 |
| | | InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get( |
| | | '' + hospitalId + ass.Prod.Id |
| | | ); |
| | | } |
| | | } else if (DealerProductMap.containsKey(ass.Prod.Id)) { |
| | | InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get( |
| | | ass.Prod.Id |
| | | ) |
| | | .Special_Campaign_Price__c; |
| | | InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; |
| | | InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get( |
| | | ass.Prod.Id |
| | | ) |
| | | .Special_Campaign_Price__c; |
| | | } |
| | | // ==================================================之前的促销订货的逻辑 |
| | | InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; |
| | | i++; |
| | | Ins.add(InsAfterDel); |
| | | } |
| | | } |
| | | } |
| | | if (Ins.size() > 0) { |
| | | insert Ins; |
| | | } |
| | | |
| | | public class Results { |
| | | @AuraEnabled |
| | | public String result; |
| | | @AuraEnabled |
| | | public String errorMsg; |
| | | @AuraEnabled |
| | | public String eSetId; |
| | | @AuraEnabled |
| | | public String agencyProType; |
| | | @AuraEnabled |
| | | public String userWorkLocation; |
| | | @AuraEnabled |
| | | public String accountName; |
| | | @AuraEnabled |
| | | public String accountid; |
| | | @AuraEnabled |
| | | public String hospitalId; |
| | | @AuraEnabled |
| | | public String contractId; |
| | | @AuraEnabled |
| | | public String category_Goods; |
| | | @AuraEnabled |
| | | public Consumable_order__c coc; |
| | | @AuraEnabled |
| | | public Boolean edoffersPrice; |
| | | @AuraEnabled |
| | | public Boolean editDelCommitBtnDisabled; |
| | | @AuraEnabled |
| | | public Boolean editAble; |
| | | @AuraEnabled |
| | | public String hospitalName; |
| | | @AuraEnabled |
| | | public String contractName; |
| | | @AuraEnabled |
| | | public List<CusOption> category3Option; |
| | | @AuraEnabled |
| | | public List<CusOption> category4Option; |
| | | @AuraEnabled |
| | | public List<CusOption> category5Option; |
| | | @AuraEnabled |
| | | public List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview; |
| | | @AuraEnabled |
| | | public List<ConsumableorderdetailsInfo> attachmentRecoeds; |
| | | @AuraEnabled |
| | | public Boolean cansee; |
| | | @AuraEnabled |
| | | public List<String> errorMsgList; |
| | | @AuraEnabled |
| | | public List<String> warningMsgList; |
| | | @AuraEnabled |
| | | public Boolean hasWarning; |
| | | @AuraEnabled |
| | | public Boolean hasError; |
| | | @AuraEnabled |
| | | public Boolean specialCampaign; |
| | | @AuraEnabled |
| | | public List<String> dealerProductId; |
| | | @AuraEnabled |
| | | public List<String> contactDealer; |
| | | @AuraEnabled |
| | | public String url; |
| | | @AuraEnabled |
| | | public String methodType; |
| | | @AuraEnabled |
| | | public List<String> proLimitAndDate; |
| | | @AuraEnabled |
| | | public Boolean isNoteStay; |
| | | @AuraEnabled |
| | | public Boolean OSHFLG; |
| | | @AuraEnabled |
| | | public String agencyProType1; |
| | | } |
| | | |
| | | public class CusOption { |
| | | CusOption(String label, String value) { |
| | | this.label = label; |
| | | this.value = value; |
| | | } |
| | | } |
| | | results.result = 'Success'; |
| | | results.eSetId = ESetId; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | //删除附件 |
| | | @AuraEnabled |
| | | public static Results deleteAtt(String contentVersionId, String cocId) { |
| | | Results results = new Results(); |
| | | try { |
| | | List<ContentVersion> cvInfo = [ |
| | | SELECT Id |
| | | FROM ContentVersion |
| | | WHERE FirstPublishLocationId = :cocId |
| | | ]; |
| | | ContentVersion conVersion = [ |
| | | SELECT ContentDocumentId |
| | | FROM ContentVersion |
| | | WHERE Id = :contentVersionId |
| | | ]; |
| | | String contentDocumentId = conVersion.ContentDocumentId; |
| | | ContentDocument conDocument = [ |
| | | SELECT Id |
| | | FROM ContentDocument |
| | | WHERE Id = :contentDocumentId |
| | | ]; |
| | | delete conDocument; |
| | | if (cvInfo.size() <= 1) { |
| | | Consumable_order__c c = [ |
| | | SELECT Id |
| | | FROM Consumable_order__c |
| | | WHERE Id = :cocId |
| | | ]; |
| | | c.Consumable_pdf_insert_day__c = null; |
| | | update c; |
| | | } |
| | | results.result = 'Success'; |
| | | } catch (Exception e) { |
| | | results.result = 'Fail'; |
| | | results.errorMsg = e.getLineNumber() + '---' + e.getMessage(); |
| | | @AuraEnabled |
| | | public String label; |
| | | @AuraEnabled |
| | | public String value; |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | public static void getConsumableShowTableFieldValue() { |
| | | for (ConsumableorderdetailsInfo con : consumableorderdetailsRecordsview) { |
| | | if (con.Prod != null) { |
| | | con.recordId = con.Prod.Id; |
| | | if (!con.oldCheck) { |
| | | con.prodName = con.Prod.Name__c; |
| | | // System.debug('ProdName:'+con.Prod.Id+'---'+con.Prod.Name__c); |
| | | } |
| | | con.prodSFDAStatus = con.Prod.SFDA_Status__c; |
| | | con.prodCategory3 = con.Prod.Category3__c; |
| | | con.prodCategory4 = con.Prod.Category4__c; |
| | | con.prodCategory5 = con.Prod.Category5__c; |
| | | con.prodIntraTradeList = con.Prod.Intra_Trade_List_RMB__c; |
| | | } |
| | | if (con.esd != null) { |
| | | // if(con.oldCheck){ |
| | | // con.prodName = con.esd.Consumable_Product__r.Name__c; |
| | | // } |
| | | con.consumableCount = con.esd.Consumable_count__c; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class ConsumableorderdetailsInfo implements Comparable { |
| | | @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 Integer packing_list { get; set; } |
| | | @AuraEnabled |
| | | public Date expiration_Date { get; set; } |
| | | @AuraEnabled |
| | | public String approbation_No { get; set; } |
| | | @AuraEnabled |
| | | public Decimal allnumber { get; set; } |
| | | @AuraEnabled |
| | | public Decimal allnumber_piece { get; set; } |
| | | @AuraEnabled |
| | | public Decimal oldConsumableCount { get; set; } |
| | | @AuraEnabled |
| | | public Boolean canSelect { get; set; } |
| | | @AuraEnabled |
| | | public ContentVersion Concc { get; set; } |
| | | @AuraEnabled |
| | | public Boolean sortBy { get; set; } |
| | | @AuraEnabled |
| | | public Decimal upperlimit { get; set; } |
| | | @AuraEnabled |
| | | public Decimal lowerlimit { get; set; } |
| | | @AuraEnabled |
| | | public Decimal SpecialCampaignPrice { get; set; } |
| | | @AuraEnabled |
| | | public Decimal orderGoods_Limit { get; set; } |
| | | @AuraEnabled |
| | | public Date Campaign_EndDate { get; set; } |
| | | @AuraEnabled |
| | | public String recordId { get; set; } |
| | | @AuraEnabled |
| | | public String prodName { get; set; } |
| | | @AuraEnabled |
| | | public String prodSFDAStatus { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory3 { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory4 { get; set; } |
| | | @AuraEnabled |
| | | public String prodCategory5 { get; set; } |
| | | @AuraEnabled |
| | | public Decimal prodIntraTradeList { get; set; } |
| | | @AuraEnabled |
| | | public Decimal consumableCount { get; set; } |
| | | |
| | | // 已存产品明细 |
| | | public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { |
| | | check = true; |
| | | oldCheck = true; |
| | | esd = e; |
| | | Prod = e.Consumable_Product__r; |
| | | oldConsumableCount = e.Consumable_Count__c; |
| | | canSelect = true; |
| | | allnumber = 0; |
| | | allnumber_piece = 0; |
| | | } |
| | | |
| | | public ConsumableorderdetailsInfo(Product2__c e) { |
| | | check = false; |
| | | oldCheck = false; |
| | | esd = new Consumable_Orderdetails__c(); |
| | | Prod = e; |
| | | oldConsumableCount = null; |
| | | canSelect = true; |
| | | allnumber = 0; |
| | | allnumber_piece = 0; |
| | | } |
| | | //附件 |
| | | public ConsumableorderdetailsInfo(ContentVersion e) { |
| | | Concc = e; |
| | | } |
| | | // 排序Consumable_order__c |
| | | public Integer compareTo(Object compareTo) { |
| | | ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo; |
| | | Integer returnValue = 0; |
| | | if (check == true) { |
| | | if (sortBy == false) { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } |
| | | return returnValue; |
| | | } else { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } |
| | | return returnValue; |
| | | } |
| | | } else { |
| | | if (sortBy == false) { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } |
| | | return returnValue; |
| | | } else { |
| | | if (allnumber > compareToesd.allnumber) { |
| | | returnValue = 1; |
| | | } else if (allnumber < compareToesd.allnumber) { |
| | | returnValue = -1; |
| | | } |
| | | return returnValue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class Results { |
| | | @AuraEnabled |
| | | public String result; |
| | | @AuraEnabled |
| | | public String errorMsg; |
| | | @AuraEnabled |
| | | public String eSetId; |
| | | @AuraEnabled |
| | | public String agencyProType; |
| | | @AuraEnabled |
| | | public String userWorkLocation; |
| | | @AuraEnabled |
| | | public String accountName; |
| | | @AuraEnabled |
| | | public String accountid; |
| | | @AuraEnabled |
| | | public String hospitalId; |
| | | @AuraEnabled |
| | | public String contractId; |
| | | @AuraEnabled |
| | | public String category_Goods; |
| | | @AuraEnabled |
| | | public Consumable_order__c coc; |
| | | @AuraEnabled |
| | | public Boolean edoffersPrice; |
| | | @AuraEnabled |
| | | public Boolean editDelCommitBtnDisabled; |
| | | @AuraEnabled |
| | | public Boolean editAble; |
| | | @AuraEnabled |
| | | public String hospitalName; |
| | | @AuraEnabled |
| | | public String contractName; |
| | | @AuraEnabled |
| | | public List<CusOption> category3Option; |
| | | @AuraEnabled |
| | | public List<CusOption> category4Option; |
| | | @AuraEnabled |
| | | public List<CusOption> category5Option; |
| | | @AuraEnabled |
| | | public List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview; |
| | | @AuraEnabled |
| | | public List<ConsumableorderdetailsInfo> attachmentRecoeds; |
| | | @AuraEnabled |
| | | public Boolean cansee; |
| | | @AuraEnabled |
| | | public List<String> errorMsgList; |
| | | @AuraEnabled |
| | | public List<String> warningMsgList; |
| | | @AuraEnabled |
| | | public Boolean hasWarning; |
| | | @AuraEnabled |
| | | public Boolean hasError; |
| | | @AuraEnabled |
| | | public Boolean specialCampaign; |
| | | @AuraEnabled |
| | | public List<String> dealerProductId; |
| | | @AuraEnabled |
| | | public List<String> contactDealer; |
| | | @AuraEnabled |
| | | public String url; |
| | | @AuraEnabled |
| | | public String methodType; |
| | | @AuraEnabled |
| | | public List<String> proLimitAndDate; |
| | | @AuraEnabled |
| | | public Boolean isNoteStay; |
| | | @AuraEnabled |
| | | public Boolean OSHFLG; |
| | | @AuraEnabled |
| | | public String agencyProType1; |
| | | } |
| | | |
| | | public class CusOption { |
| | | CusOption(String label, String value) { |
| | | this.label = label; |
| | | this.value = value; |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public String label; |
| | | @AuraEnabled |
| | | public String value; |
| | | } |
| | | } |
| | | } |