public without sharing class ArriveGoodsController {
|
public String barcode { get; set; }
|
public Consumable_order__c coc { get; set; }
|
/*****************画面表示Bean******************/
|
public List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
|
public List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsUse = new List<ConsumableorderdetailsInfo>();
|
public List<ConsumableorderdetailsInfo> consumableInventory { get; set; }
|
public List<ConsumableorderdetailsInfo> detailsSummary { get; set; }
|
public List<ConsumableorderdetailsInfo> consumableInventoryUse = new List<ConsumableorderdetailsInfo>();
|
//更新明细取消时间
|
public List<Consumable_order_details2__c> consumableorderdetails2Cancle = new List<Consumable_order_details2__c>();
|
// 更新借调信息 add by gzw 2020-0-415 start
|
Map<String, Consumable_order_details2__c> orderdetails2trMap = new Map<String, Consumable_order_details2__c>();
|
// 更新借调信息 add by gzw 2020-0-415 end
|
public List<Consumable_order_details2__c> consumableorderdetails2Insert = new List<Consumable_order_details2__c>();
|
public List<Consumable_order_details2__c> consumableorderdetails2Nobox = new List<Consumable_order_details2__c>();
|
public List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordserror { get; set; }
|
public transient List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsdummy { get; set; }
|
public List<ConsumableorderdetailsInfo> ShowGoodsofReturnList { get; set; }
|
public List<ConsumableorderdetailsInfo> ShowGoodsofRemoveBoxReturnList { get; set; }
|
//add by rentx 20210602 CHAN-C3K4ZQ
|
public List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; }
|
//add by rentx 20210602 CHAN-C3K4ZQ
|
|
public List<String> GrList = new List<String>();
|
//超出定货数量的产品
|
public List<String> cancellationProList = new List<String>();
|
//错误信息
|
public String alertMessage { get; set; }
|
public integer getinventorysize() {
|
return consumableInventory.size();
|
}
|
public integer geterrorsize() {
|
return ConsumableorderdetailsRecordserror.size();
|
}
|
Set<String> noboxBarcodeList = new Set<String>();
|
public transient Map<String, String> ExistIdMap = new Map<String, String>();
|
public transient Map<String, String> ErrorIdMap = new Map<String, String>();
|
public transient Map<String, String> AllMap = new Map<String, String>();
|
Map<String, String> otherAgencyMap = new Map<String, String>();
|
public transient Map<String, String> barMcodeMap = new Map<String, String>();
|
Map<String, Integer> BarcodeCntMap = new Map<String, Integer>();
|
//qi
|
public transient List<String> BarCodeListP = new List<String>();
|
|
// public transient Map<String, String> OrderAllMap = new Map<String, String>();
|
Map<String, Decimal> orderProductCunMap = new Map<String, Decimal>();
|
Map<String, Decimal> orderProductArrivedCunMap = new Map<String, Decimal>();
|
Map<String, Decimal> orderWantArriveCunMap = new Map<String, Decimal>();
|
//超出型号和数量
|
Map<String, Decimal> overOrderCunMap = new Map<String, Decimal>();
|
//超出BARCODE和型号
|
Map<String, List<String>> overOrderBARcodeCunMap = new Map<String, List<String>>();
|
list<String> overOrderBARcodeTTTTTT = new List<String>();
|
|
//不符合的barcode和型号
|
Map<String, List<String>> notEqualBARcodeCunMap = new Map<String, List<String>>();
|
list<String> overOrderBARcodeSSSSSS = new List<String>();
|
list<String> productList = new List<String>();
|
list<String> notInlist = new List<String>();
|
//不选择订单时保存订单ID、产品型号用
|
//List<String> orderId = new List<String>();
|
//List<String> prodName = new List<String>();
|
//库存登录使用
|
list<String> notInStorelist = new List<String>();
|
list<String> exitBarCodeList = new List<String>();
|
|
// Map<String, Consumable_order_details2__c> reallMap = new Map<String, Consumable_order_details2__c>();
|
Map<String, String> HosErrorMap = new Map<String, String>();
|
List<String> HosErrorList = new List<String>();
|
public String baseUrl { get; private set; }
|
public String ESetId { get; set; }
|
public String arriveId = '';
|
private String accountid = null;
|
private String accountName = null;
|
//public String[] proidList =new String[]{};
|
public Decimal orderCountAll = 0;
|
public Decimal orderCountNotarrive = 0;
|
private id return_Order_id = null;
|
private id inventory_Order_id = null;
|
public boolean ReturnFLGbln { get; set; }
|
public boolean saveFLGbln { get; set; }
|
public String ArrType { get; set; }
|
// 登录者工作地
|
private String userWorkLocation;
|
|
//用户产品区分
|
public String userPro_Typestr = null;
|
public String userPro_Type = null;
|
public String product_Type = null;
|
public Boolean EngFlag = false;
|
public Boolean ETFlag = false;
|
public ArriveGoodsController() {
|
baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
|
ESetId = ApexPages.currentPage().getParameters().get('esetId');
|
ArrType = ApexPages.currentPage().getParameters().get('ArrType');
|
ConsumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
|
ConsumableorderdetailsRecordserror = new List<ConsumableorderdetailsInfo>();
|
ConsumableorderdetailsRecordsdummy = new List<ConsumableorderdetailsInfo>();
|
consumableInventory = new List<ConsumableorderdetailsInfo>();
|
consumableorderdetailsRecordsUse = new List<ConsumableorderdetailsInfo>();
|
consumableInventoryUse = new List<ConsumableorderdetailsInfo>();
|
consumableorderdetails2Cancle = new List<Consumable_order_details2__c>();
|
orderdetails2trMap = new Map<String, Consumable_order_details2__c>();
|
detailsSummary = new List<ConsumableorderdetailsInfo>();
|
saveFLGbln = false;
|
//overOrderBARcodeTTTTTT.add('');
|
//add by rentx 20210602 CHAN-C3K4ZQ start
|
consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>();
|
//add by rentx 20210602 CHAN-C3K4ZQ end
|
// OrderAllMap = new Map<String, String>();
|
}
|
|
//add by rentx 20210602 CHAN-C3K4ZQ start 出错的原因是页面最多展示1000条数据,但是需要展示的数据超过了1000条,现在把展示上线改为1000 * 1000
|
public void makeRecordsView(List<ConsumableorderdetailsInfo> recordsdummy) {
|
consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>();
|
|
if (recordsdummy.size() > 1000) {
|
List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>();
|
List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>();
|
ConsumableorderdetailsInfo c = null;
|
ConsumableorderdetailsRecordsbreak.clear();
|
ConsumableorderdetailsRecordsbreakover.clear();
|
consumableorderdetailsRecordsview.clear();
|
//选择产品view
|
ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>();
|
ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>();
|
if (recordsdummy.size() > 1000) {
|
for (Integer i = 0; i < recordsdummy.size(); i++) {
|
if (i < 1000) {
|
c = recordsdummy.get(i);
|
ConsumableorderdetailsRecordsbreak.add(c);
|
} else {
|
c = recordsdummy.get(i);
|
ConsumableorderdetailsRecordsbreakover.add(c);
|
}
|
}
|
consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak);
|
consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover);
|
} else {
|
consumableorderdetailsRecordsview.add(recordsdummy);
|
}
|
|
// Integer count = recordsdummy.size() / 1000;
|
// Integer last = recordsdummy.size() - (1000*count);
|
|
// for(Integer i = 0; i < count ; i++){
|
// List<ConsumableorderdetailsInfo> tempList = new List<ConsumableorderdetailsInfo>();
|
// for(Integer j=0; j < 1000; j++){
|
// tempList.add(recordsdummy.get(i * count + j ));
|
// // itemList.add(resList.get(i*count+j));
|
// }
|
// consumableorderdetailsRecordsview.add(tempList);
|
// }
|
// if (last > 0) {
|
// List<ConsumableorderdetailsInfo> tempList = new List<ConsumableorderdetailsInfo>();
|
// for(Integer j=0; j < last; j++){
|
// tempList.add(recordsdummy.get(count * 1000 + j ));
|
// // itemList.add(resList.get(i*count+j));
|
// }
|
// consumableorderdetailsRecordsview.add(tempList);
|
// }
|
} else {
|
consumableorderdetailsRecordsview.add(recordsdummy);
|
}
|
}
|
//add by rentx 20210602 CHAN-C3K4ZQ end
|
public void init() {
|
// String userId = '00510000007cthP';
|
String userId = UserInfo.getUserId();
|
List<user> Useracc = new List<user>();
|
Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId];
|
accountid = Useracc[0].accountid;
|
//--------AddStart-----XHL--------------20181008-------------
|
userPro_Type = Useracc[0].UserPro_Type__c;
|
if (String.isBlank(userPro_Type)) {
|
userPro_Type = 'ET';
|
}
|
|
if (userPro_Type == 'ENG') {
|
product_Type = 'ET';
|
EngFlag = true;
|
} else {
|
product_Type = 'ENG';
|
ETFlag = true;
|
}
|
userPro_Typestr = '%' + userPro_Type + '%';
|
//--------AddEnd-----XHL--------------20181008-------------
|
userWorkLocation = Useracc[0].Work_Location__c;
|
system.debug('userWorkLocation' + userWorkLocation);
|
List<account> accountInfo = [SELECT Name FROM account WHERE id = :accountid];
|
accountName = accountInfo[0].Name;
|
system.debug('accountName' + accountName);
|
coc = new Consumable_order__c();
|
if (ArrType == 'ReG') {
|
ReturnFLGbln = true;
|
} else {
|
ReturnFLGbln = false;
|
}
|
if (ESetId != '' && ESetId != null) {
|
List<Consumable_order__c> qs = new List<Consumable_order__c>();
|
List<Consumable_order_details2__c> reSet1 = new List<Consumable_order_details2__c>();
|
List<Consumable_Orderdetails__c> reSet = new List<Consumable_Orderdetails__c>();
|
qs = [
|
SELECT
|
Id,
|
Name,
|
Order_status__c,
|
Dealer_Info__c,
|
Deliver_date__c,
|
ReturnGs_Upload_Date__c,
|
Order_Reason__c,
|
Order_date__c,
|
Contract_application_decision__c,
|
Order_type__c,
|
Total_num__c,
|
OrderNumber_arrived__c,
|
Delivery_detail_count__c,
|
OrderNumber_notarrive__c,
|
orderPattern__c
|
FROM Consumable_order__c
|
WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Info__c = :accountid
|
];
|
if (qs.size() > 0) {
|
coc = qs[0];
|
orderCountAll = coc.Total_num__c;
|
orderCountNotarrive = coc.OrderNumber_notarrive__c;
|
}
|
//产品定货数量
|
reSet = [
|
SELECT Asset_Model_No__c, Consumable_order__c, Consumable_count__c
|
FROM Consumable_Orderdetails__c
|
WHERE Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation
|
];
|
for (Integer i = 0; i < reSet.size(); i++) {
|
productList.add(reSet[i].Asset_Model_No__c);
|
orderProductCunMap.put(reSet[i].Asset_Model_No__c, reSet[i].Consumable_count__c);
|
orderProductArrivedCunMap.put(reSet[i].Asset_Model_No__c, 0);
|
orderWantArriveCunMap.put(reSet[i].Asset_Model_No__c, 0);
|
overOrderCunMap.put(reSet[i].Asset_Model_No__c, 0);
|
overOrderBARcodeCunMap.put(reSet[i].Asset_Model_No__c, overOrderBARcodeTTTTTT);
|
//overOrderCunMap.put(reSet[i].Asset_Model_No__c,0);
|
}
|
//
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c1*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
AND Consumable_order_minor__c = :ESetId
|
AND Dealer_Arrive__c = TRUE
|
AND Box_Piece__c != '个'
|
];
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
// OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
|
//init的时候不展示已经入库的明细 by rentx 20210617 CHAN-C3K4ZQ
|
// ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i]));
|
//update by rentx 20210617 end CHAN-C3K4ZQ
|
if (orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c)) {
|
orderProductArrivedCunMap.put(
|
reSet1[i].Asset_Model_No__c,
|
orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c) + 1
|
);
|
}
|
}
|
//add by rentx 20210602 start CHAN-C3K4ZQ
|
// makeRecordsView(ConsumableorderdetailsRecordsdummy);
|
//add by rentx 20210602 end CHAN-C3K4ZQ
|
}
|
}
|
//========20160311======ADD_Start================================
|
// 将页面或取得BarCode去掉重复的,转换成List
|
//========20160311======ADD_Start================================
|
public List<String> ParseBarCode(String Code) {
|
String[] Cache = new List<String>{};
|
Cache = Code.split('\n');
|
Set<String> Buff = new Set<String>();
|
for (String A : Cache) {
|
Buff.add(A.toUpperCase());
|
}
|
List<String> outPut = new List<String>();
|
for (String B : Buff) {
|
B = B.trim();
|
if (B.length() > 8) {
|
String tracingCode = B.substring(B.length() - 5, B.length());
|
barMcodeMap.put(B, tracingCode);
|
}
|
outPut.add(B);
|
}
|
system.debug('barMcodeMap等于' + barMcodeMap);
|
return outPut;
|
}
|
|
//========20160311======ADD_End==================================
|
//获取明细
|
public void SearchPro() {
|
notInlist = new List<String>();
|
otherAgencyMap = new Map<String, String>();
|
barMcodeMap = new Map<String, String>();
|
consumableInventory = new List<ConsumableorderdetailsInfo>();
|
consumableInventoryUse = new List<ConsumableorderdetailsInfo>();
|
consumableorderdetails2Cancle = new List<Consumable_order_details2__c>();
|
orderdetails2trMap = new Map<String, Consumable_order_details2__c>();
|
//add by rentx 2021-01-27 start
|
HosErrorList = new List<String>();
|
HosErrorMap = new Map<String, String>();
|
//add by rentx 2021-01-27 end
|
|
noboxBarcodeList.clear();
|
//再检索项目清空
|
ConsumableorderdetailsRecordserror = new List<ConsumableorderdetailsInfo>();
|
ErrorIdMap = new Map<String, String>();
|
ErrorIdMap.clear();
|
AllMap = new Map<String, String>();
|
AllMap.clear();
|
ExistIdMap = new Map<String, String>();
|
ExistIdMap.clear();
|
consumableorderdetails2Insert = new List<Consumable_order_details2__c>();
|
ConsumableorderdetailsRecordsdummy = new List<ConsumableorderdetailsInfo>();
|
/*if(EsetId != null && EsetId != ''){
|
List<Consumable_order_details2__c> reSet1 = [SELECT Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c
|
//add by rentx 2020-10-14 start
|
,ContractNo_text__c,/*ContractNo__c1*
|
//add by rentx 2020-10-14 end
|
,hospitalSpecialOffer__c
|
FROM Consumable_order_details2__c
|
WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Consumable_order_minor__c = :ESetId
|
AND Arrive_Owner_Work_Location__c =: userWorkLocation
|
AND Dealer_Arrive__c = true ];
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
// OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
|
//add by rentx 2021-01-27
|
// reallMap.put(reSet1[i].Bar_Code__C, reSet1[i]);
|
//add by rentx 2021-01-27
|
|
//不需要展示已到货的明细 update by rentx 20210617 start CHAN-C3K4ZQ
|
// ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i]));
|
//不需要展示已到货的明细 update by rentx 20210617 end CHAN-C3K4ZQ
|
|
//if(orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c)){
|
// orderProductArrivedCunMap.put(reSet1[i].Asset_Model_No__c,orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c)+1);
|
//}
|
}
|
}*/
|
ConsumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
|
BarCodeListP = new List<String>();
|
BarCodeListP = ParseBarCode(barcode);
|
Consumable_order_details2__c p = new Consumable_order_details2__c();
|
List<Consumable_order_details2__c> Ins = new List<Consumable_order_details2__c>();
|
List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>();
|
List<Consumable_order_details2__c> reSet1 = new List<Consumable_order_details2__c>();
|
if (barcode == null || barcode.trim() == '') {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请输入BarCode号。'));
|
return;
|
}
|
//对比全部库存中是否存在管理编码一样,barcode号不一样的产品
|
reSet1 = [
|
SELECT Id, Name, TracingCode__c, Bar_Code__c, Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Lose_Flag__c = FALSE
|
AND Dealer_Returned__c = FALSE
|
AND Cancellation_Flag__c = FALSE
|
AND TracingCode__c IN :barMcodeMap.values()
|
AND Bar_Code__c NOT IN :barMcodeMap.keySet()
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
for (String str : barMcodeMap.keySet()) {
|
if (barMcodeMap.get(str) == reSet1[i].TracingCode__c) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
str + ' 的管理编码已经存在于系统的库存中,请确认输入信息是否有误。'
|
)
|
);
|
ErrorIdMap.put(str, str);
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
}
|
}
|
//管理编码为空的产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
TracingCode__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
//AND Arrive_Owner_Work_Location__c =: userWorkLocation
|
AND (TracingCode__c = NULL
|
OR TracingCode__c = '')
|
ORDER BY Name
|
];
|
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该产品没有管理编码,无法入库';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '管理编码为空的产品 ' + ErrorIdMap));
|
//整体到货
|
if (EsetId == null || EsetId == '') {
|
if (ArrType != 'ReG') {
|
//到货但产品类型与用户的类型不符
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Product_Type__c,
|
ContractNo_text__c /*,ContractNo__c1*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
FROM Consumable_order_details2__c
|
WHERE
|
Bar_Code__c IN :BarCodeListP
|
AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
AND Dealer_Info_text__c = :accountName
|
AND ((Consumable_order_minor__c != NULL
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation)
|
OR Consumable_order_minor__c = NULL)
|
ORDER BY Name
|
];
|
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//销售产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
OwnerId,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Saled__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
AND (Arrive_Owner_Work_Location__c = :userWorkLocation
|
OR OwnerId = :System.Label.User_OlympusSystem)
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '';
|
if (reSet1[i].OwnerId == System.Label.User_OlympusSystem) {
|
str = '该商品是直销产品请先返品';
|
} else {
|
str = '该商品已经销售';
|
}
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//出库产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Shipment__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品已经出库';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//已到货产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Lose_Flag__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品已经到货';
|
if (reSet1[i].Lose_Flag__c == true) {
|
str = '该商品已经丢失';
|
}
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
|
//已拆盒产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND Bar_Code__c IN :BarCodeListP
|
AND (Dealer_Info_text__c != :accountName
|
OR (Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c != :userWorkLocation))
|
AND Box_Piece__c = '个'
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '已拆盒的产品不能入库';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
|
// 经销商之间或者同一经销商不同工作地调货
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Asset_Model_No__c,
|
Arrive_Owner_Work_Location__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Box_Piece__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
TracingCode__c,
|
Dealer_Info_text__c,
|
OwnerId,
|
Lose_Flag__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
SerialLotNo__c,
|
Dealer_Arrive__c,
|
Consumable_Arrived_order__r.Dealer_Info__c,
|
Consumable_Arrived_order__r.Dealer_Info__r.Name,
|
Intra_Trade_List_RMB__c,
|
Dealer_Shipment__c,
|
Dealer_Saled__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
// 更新借调信息 add by gzw 2020-0-415 start
|
SummonsForDirction_det__c,
|
Transfer_Time__c,
|
Frist_Transfer_Agency__c,
|
Agency_Transfer__c,
|
// 更新借调信息 add by gzw 2020-0-415 start
|
// 首次入库经销商信息 add by gzw 2020-04-27 start
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
// 首次入库经销商信息 add by gzw 2020-04-27 end
|
|
//add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号
|
ContractNo_text__c /*,ContractNo__c */,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
//add by rentx 2020-10-13 end
|
//add by rentx 2021-03-22 start
|
hospitalSpecialOffer__c,
|
exchangeOutPattern__c,
|
Report_Product_Expiration__c
|
//add by rentx 2021-03-22 end
|
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 Cancellation_Flag__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
//AND (Dealer_Shipment__c = FALSE
|
// OR (Dealer_Shipment__c = TRUE
|
// AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货'))
|
AND (Dealer_Info_text__c != :accountName
|
OR (Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c != :userWorkLocation))
|
// 更新借调信息 add by gzw 2020-0-415 start
|
ORDER BY Bar_Code__c, Transfer_Time__c DESC
|
// 更新借调信息 add by gzw 2020-0-415 end
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
if (otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)) {
|
continue;
|
} else {
|
//其他经销商出库产品可以入库
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(reSet1[i].Bar_Code__c);
|
barcodedetList.add(String.valueOf(reSet1[i].Sterilization_limit__c));
|
barcodedetList.add(reSet1[i].SerialLotNo__c);
|
barcodedetList.add(reSet1[i].TracingCode__c);
|
if (reSet1[i].Lose_Flag__c == false) {
|
//&& reSet1[i].Dealer_Info_text__c == accountName
|
consumableorderdetails2Cancle.add(reSet1[i]);
|
}
|
// 更新借调信息 add by gzw 2020-0-415 start
|
if (
|
reSet1[i].SummonsForDirction_det__c == '互相调货' &&
|
!orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c)
|
) {
|
orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]);
|
}
|
// 更新借调信息 add by gzw 2020-0-415 end
|
consumableInventory.add(new ConsumableorderdetailsInfo(reSet1[i], barcodedetList));
|
Consumable_order_details2__c codsIns = new Consumable_order_details2__c();
|
|
codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
|
codsIns.Intra_Trade_List_RMB__c = null;
|
codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c;
|
codsIns.Direct_Arrive_Product__c = true;
|
codsIns.Sterilization_limit__c = reSet1[i].Sterilization_limit__c;
|
codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c;
|
codsIns.Bar_Code__c = reSet1[i].Bar_Code__c;
|
codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c;
|
codsIns.TracingCode__c = reSet1[i].TracingCode__c;
|
// 更新借调信息 add by gzw 2020-0-415 start
|
codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c == null ? 1 : reSet1[i].Transfer_Time__c;
|
codsIns.Frist_Transfer_Agency__c = reSet1[i].Frist_Transfer_Agency__c == null
|
? reSet1[i].Dealer_Info_text__c
|
: reSet1[i].Frist_Transfer_Agency__c;
|
codsIns.Agency_Transfer__c = true;
|
// 更新借调信息 add by gzw 2020-0-415 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c;
|
codsIns.Frist_Storage_Agency__c = reSet1[i].Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
|
//add by rentx 2020-10-13 start 互相调货时,记录SAP合同号
|
// update tcm start
|
if (String.isBlank(reSet1[i].Consumable_order_minor__r.ContractNo__c)) {
|
codsIns.ContractNo_text__c = reSet1[i].ContractNo_text__c;
|
} else {
|
codsIns.ContractNo_text__c = reSet1[i].Consumable_order_minor__r.ContractNo__c;
|
}
|
// update tcm end
|
//add by rentx 2020-10-13 end
|
|
//add by rentx 2021-03-22 start
|
// if (reSet1[i].Lose_Flag__c == true){
|
if (reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货') {
|
codsIns.exchangeOutPattern__c = true;
|
}
|
//add by rentx 2021-03-22 end
|
|
consumableorderdetails2Insert.add(codsIns);
|
otherAgencyMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
//String str = '该商品在其他经销商库存';
|
//ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
|
//ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
}
|
|
//发错库 未到货
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
TracingCode__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
SerialLotNo__c,
|
Dealer_Arrive__c,
|
Dealer_Shipment__c,
|
Dealer_Saled__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
// 更新借调信息 add by gzw 2020-0-415 start
|
SummonsForDirction_det__c,
|
Transfer_Time__c,
|
Frist_Transfer_Agency__c,
|
Agency_Transfer__c,
|
Dealer_Info_text__c,
|
// 更新借调信息 add by gzw 2020-0-415 start
|
// 首次入库经销商信息 add by gzw 2020-04-27 start
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
// 首次入库经销商信息 add by gzw 2020-04-27 end
|
//add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
//add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号
|
hospitalSpecialOffer__c,
|
exchangeOutPattern__c,
|
Lose_Flag__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = FALSE
|
AND Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
//AND Cancellation_Flag__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND (Dealer_Info_text__c != :accountName
|
OR (Dealer_Info_text__c = :accountName
|
AND ((Consumable_order_minor__c != NULL
|
AND (Consumable_order_minor__r.Order_Owner_WorkLocal__c != :userWorkLocation
|
OR (Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation
|
AND Cancellation_Flag__c = TRUE)))
|
OR (Consumable_order_minor__c = NULL
|
AND Cancellation_Flag__c = TRUE))))
|
// 更新借调信息 add by gzw 2020-0-415 start
|
ORDER BY Bar_Code__c, Transfer_Time__c DESC
|
// 更新借调信息 add by gzw 2020-0-415 end
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
if (otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)) {
|
continue;
|
} else {
|
//取消明细
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(reSet1[i].Bar_Code__c);
|
barcodedetList.add(String.valueOf(reSet1[i].Sterilization_limit__c));
|
barcodedetList.add(reSet1[i].SerialLotNo__c);
|
barcodedetList.add(reSet1[i].TracingCode__c);
|
// 发错库存时,自动取消 update by gzw 2020-04-15 start
|
//if (reSet1[i].Consumable_order_minor__c == null) {
|
consumableorderdetails2Cancle.add(reSet1[i]);
|
//}
|
// 发错库存时,自动取消 update by gzw 2020-04-15 start
|
// 更新借调信息 add by gzw 2020-0-415 start
|
if (
|
reSet1[i].SummonsForDirction_det__c == '互相调货' &&
|
!orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c)
|
) {
|
orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]);
|
}
|
// 更新借调信息 add by gzw 2020-0-415 end
|
consumableInventory.add(new ConsumableorderdetailsInfo(reSet1[i], barcodedetList));
|
Consumable_order_details2__c codsIns = new Consumable_order_details2__c();
|
|
codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
|
codsIns.Intra_Trade_List_RMB__c = null;
|
codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c;
|
codsIns.Direct_Arrive_Product__c = true;
|
codsIns.Sterilization_limit__c = reSet1[i].Sterilization_limit__c;
|
codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c;
|
codsIns.Bar_Code__c = reSet1[i].Bar_Code__c;
|
codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c;
|
codsIns.TracingCode__c = reSet1[i].TracingCode__c;
|
// 更新借调信息 add by gzw 2020-0-415 start
|
// 没有入库时,没有借调信息
|
codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c;
|
codsIns.Frist_Transfer_Agency__c = reSet1[i].Frist_Transfer_Agency__c;
|
codsIns.Agency_Transfer__c = reSet1[i].Agency_Transfer__c;
|
// 更新借调信息 add by gzw 2020-0-415 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c;
|
codsIns.Frist_Storage_Agency__c = reSet1[i].Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
|
//add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号
|
// update tcm start
|
if (String.isBlank(reSet1[i].Consumable_order_minor__r.ContractNo__c)) {
|
codsIns.ContractNo_text__c = reSet1[i].ContractNo_text__c;
|
} else {
|
codsIns.ContractNo_text__c = reSet1[i].Consumable_order_minor__r.ContractNo__c;
|
}
|
// update tcm end
|
//add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号
|
|
//add by rentx 2021-03-22 start
|
// if (reSet1[i].Lose_Flag__c == true){
|
if (reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货') {
|
codsIns.exchangeOutPattern__c = true;
|
}
|
//add by rentx 2021-03-22 end
|
|
consumableorderdetails2Insert.add(codsIns);
|
otherAgencyMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
}
|
} else {
|
//返品检查
|
//到货但产品类型与用户的类型不符
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Product_Type__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
Bar_Code__c IN :BarCodeListP
|
AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
AND Dealer_Info_text__c = :accountName
|
AND ((Consumable_order_minor__c != NULL
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation)
|
OR Consumable_order_minor__c = NULL)
|
ORDER BY Name
|
];
|
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
Report_Product_Expiration__c
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = FALSE
|
AND Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
ORDER BY Name
|
]; //没到货
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品尚未入库';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
ToDueDateDays__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Lose_Flag__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
Report_Product_Expiration__c
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Returned__c = FALSE
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
//AND Lose_Flag__c = FALSE
|
// AND Lose_Flag__c = FALSE
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// Gzw 20201215修复,拆盒产品不判断
|
AND Box_Piece__c = '盒'
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
ORDER BY Name
|
]; //没出库,没销售,就是在库
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// String str = '该商品在库';
|
// if (reSet1[i].Lose_Flag__c) {
|
// str = '该商品丢失';
|
// }
|
String str = '';
|
if (reSet1[i].Lose_Flag__c == false) {
|
str = '该商品在库'; //没出库 ,没销售,没丢失就是在库。
|
}
|
if (reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c >= 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.WARNING,
|
'产品' + reSet1[i].Consumable_Product__r.Name + '存在丢失记录'
|
)
|
); //如果丢失产品就给提示。
|
}
|
if (reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c < 0) {
|
str = '过期已销存产品,不允许返品';
|
}
|
if (str != '') {
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
// ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
|
// ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
}
|
}
|
}
|
}
|
|
//到货正确信息
|
reSet = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Consumable_Product__r.Pro2_Dealer_ENG__c,
|
Consumable_Product__r.Pro2_Dealer_Object__c,
|
TracingCode__c,
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
Dealer_Info_text__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Cancellation_Date__c = NULL
|
AND Dealer_Arrive__c = FALSE
|
AND Product_Type__c LIKE :userPro_Typestr
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
AND ((Consumable_order_minor__c != NULL
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation)
|
OR Consumable_order_minor__c = NULL)
|
ORDER BY Name
|
];
|
|
if (reSet.size() > 0) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ErrorIdMap+++ '+ ErrorIdMap.keyset()));
|
Map<String, String> errorMap = new Map<String, String>();
|
for (Integer i = 0; i < reSet.size(); i++) {
|
if (ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c);
|
if (n.find()) {
|
String str = '管理编码中有数字,请与管理员确认是否错误。';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i], str));
|
ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
continue;
|
}
|
if (otherAgencyMap.containsKey(reSet[i].Bar_Code__c)) {
|
for (Integer j = 0; j < consumableInventory.size(); j++) {
|
ConsumableorderdetailsInfo codInfo = consumableInventory.get(j);
|
if (codInfo.barCodeNo == reSet[i].Bar_Code__c) {
|
consumableInventory.remove(j);
|
break;
|
}
|
}
|
for (Integer m = 0; m < consumableorderdetails2Insert.size(); m++) {
|
Consumable_order_details2__c cod2 = consumableorderdetails2Insert.get(m);
|
if (cod2.Bar_Code__c == reSet[i].Bar_Code__c) {
|
consumableorderdetails2Insert.remove(m);
|
break;
|
}
|
}
|
}
|
//orderId.add(reSet[i].Consumable_order_minor__c);
|
//prodName.add(reSet[i].Consumable_Product__r.Name);
|
ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
}
|
}
|
}
|
//barcode不一致,管理编码一致
|
reSet = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
TracingCode__c,
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c */,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Dealer_Info_text__c = :accountName
|
//update by rentx 2021-01-04 start CHAN-BWX3XW
|
// AND Consumable_order_minor__c != null
|
// AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation
|
AND ((Consumable_order_minor__c != NULL
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation)
|
OR Consumable_order_minor__c = NULL)
|
//update by rentx 2021-01-04 end CHAN-BWX3XW
|
AND Dealer_Arrive__c = FALSE
|
AND Cancellation_Date__c = NULL
|
AND TracingCode__c IN :barMcodeMap.values()
|
AND Bar_Code__c NOT IN :barMcodeMap.keySet()
|
ORDER BY Name
|
];
|
|
if (reSet.size() > 0) {
|
for (Integer i = 0; i < reSet.size(); i++) {
|
if (ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c);
|
if (n.find()) {
|
String str = '管理编码中有数字,请与管理员确认是否错误。';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i], str));
|
ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
continue;
|
}
|
ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
for (String str : barMcodeMap.keySet()) {
|
// BarCode不一致时的警告信息
|
if (reSet[i].Bar_Code__c != str && reSet[i].TracingCode__c == barMcodeMap.get(str)) {
|
// 20220815 ljh SWAG-CH65B7 start
|
// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'此管理编码与实际发货BarCode不一致,请核对管理编码('+ str +')的入库及库存数据。'));
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.WARNING, '条形码为(' + str + ')的入库数据与发货数据不一致')
|
);
|
// 20220815 ljh SWAG-CH65B7 end
|
}
|
if (barMcodeMap.get(str) == reSet[i].TracingCode__c) {
|
reSet[i].Bar_Code__c = str;
|
//=====================================
|
// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'入库BarCode('+ str +')和库存条码不一致。'));
|
ExistIdMap.put(str, str);
|
}
|
}
|
ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i]));
|
}
|
}
|
}
|
|
// CHAN-BD43NK 关闭直接返品功能 追加 barcode不一致判断
|
reSet1 = [
|
SELECT Id, Name, TracingCode__c, Bar_Code__c, Sale_orderName__c, Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND (Dealer_Shipment__c = TRUE
|
OR Dealer_Saled__c = TRUE)
|
AND TracingCode__c IN :barMcodeMap.values()
|
AND Bar_Code__c NOT IN :barMcodeMap.keySet()
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
for (String str : barMcodeMap.keySet()) {
|
if (barMcodeMap.get(str) == reSet1[i].TracingCode__c) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'barcode' +
|
str +
|
'与出库单' +
|
reSet1[i].Sale_orderName__c +
|
' 中的管理编码一致,但Barcode不同,请确认具体数据。'
|
)
|
);
|
ErrorIdMap.put(str, str);
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
}
|
}
|
integer RGcnt = GoodsReturnCheck();
|
AllMap.putAll(ErrorIdMap);
|
AllMap.putAll(ExistIdMap);
|
if (RGcnt > 0) {
|
for (String str : GrList) {
|
AllMap.put(str, str);
|
}
|
}
|
//得到不存在的BarCode
|
//return;
|
for (Integer i = 0; i < BarCodeListP.size(); i++) {
|
if (AllMap.containsKey(BarCodeListP[i])) {
|
continue;
|
} else if (otherAgencyMap.containsKey(BarCodeListP[i])) {
|
continue;
|
}
|
//add by rentx 2021-01-27 start
|
else if (coc != null && coc.orderPattern__c == 'hospitalorder') {
|
HosErrorList.add(BarCodeListP[i]);
|
continue;
|
}
|
//add by rentx 2021-01-27 end
|
else {
|
notInlist.add(BarCodeListP[i]);
|
otherAgencyMap.put(BarCodeListP[i], BarCodeListP[i]);
|
}
|
}
|
// CHAN-BD43NK 关闭直接返品功能
|
if (notInlist.size() > 0) {
|
if (ArrType != 'ReG') {
|
inventoryEntryNoESetId(notInlist);
|
if (notInStorelist.size() > 0) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'BarCode号' + notInStorelist + '不存在。'));
|
return;
|
}
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'BarCode号' + notInlist + '不存在,无对应的出库单,请先操作产品入库。'
|
)
|
);
|
return;
|
}
|
}
|
|
//add by rentx 2021-01-27 start
|
if (HosErrorList.size() > 0) {
|
for (String str : HosErrorList) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'BarCode号:' + str + HosErrorMap.get(str) + ''));
|
}
|
}
|
//add by rentx 2021-01-27 end
|
} else {
|
//已取消产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = FALSE
|
AND Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Dealer_Returned__c = FALSE
|
AND Cancellation_Date__c != NULL
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
ORDER BY Name
|
]; //没到货
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品取消';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//已经销售
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Saled__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Dealer_Info_text__c = :accountName
|
AND Bar_Code__c IN :BarCodeListP
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品已经销售';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//已经出库产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Shipment__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
AND Bar_Code__c IN :BarCodeListP
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品已经出库';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//已经到货产品
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Lose_Flag__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :BarCodeListP
|
AND Dealer_Info_text__c = :accountName
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该商品已经到货';
|
if (reSet1[i].Lose_Flag__c == true) {
|
str = '该商品已经丢失';
|
}
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//不属于本订单
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Box_Piece__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
recordtypeid,
|
Consumable_order_minor__r.Arrive_Order__c,
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE Consumable_order_minor__c != :ESetId AND Bar_Code__c IN :BarCodeListP
|
//AND Dealer_Info_text__c = :accountName
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '该消耗品不属于本订单';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
//到货但产品类型与用户的类型不符
|
reSet1 = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Product_Type__c,
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Dealer_Info_text__c = :accountName
|
AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
AND Consumable_order_minor__c = :ESetId
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation
|
AND Dealer_Arrive__c = FALSE
|
AND Cancellation_Date__c = NULL
|
AND Bar_Code__c IN :BarCodeListP
|
ORDER BY Name
|
];
|
if (reSet1.size() > 0) {
|
for (Integer i = 0; i < reSet1.size(); i++) {
|
if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i], str));
|
ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c);
|
}
|
}
|
}
|
|
//到货正确信息
|
reSet = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
TracingCode__c,
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
Dealer_Info_text__c,
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Dealer_Info_text__c = :accountName
|
AND Product_Type__c LIKE :userPro_Typestr
|
AND Consumable_order_minor__c = :ESetId
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation
|
AND Dealer_Arrive__c = FALSE
|
AND Cancellation_Date__c = NULL
|
AND Bar_Code__c IN :BarCodeListP
|
ORDER BY Name
|
];
|
if (reSet.size() > 0) {
|
Map<String, String> errorMap = new Map<String, String>();
|
for (Integer i = 0; i < reSet.size(); i++) {
|
if (ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c);
|
if (n.find()) {
|
String str = '管理编码中有数字,请与管理员确认是否错误。';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i], str));
|
ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
continue;
|
}
|
ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
}
|
}
|
}
|
|
//barcode不一致,管理编码一致
|
reSet = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
TracingCode__c,
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
FROM Consumable_order_details2__c
|
WHERE
|
recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Cancellation_Date__c = NULL
|
AND Dealer_Arrive__c = FALSE
|
AND TracingCode__c IN :barMcodeMap.values()
|
AND Bar_Code__c NOT IN :barMcodeMap.keySet()
|
AND Dealer_Info_text__c = :accountName
|
AND ((Consumable_order_minor__c != NULL
|
AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation)
|
OR Consumable_order_minor__c = NULL)
|
ORDER BY Name
|
];
|
if (reSet.size() > 0) {
|
for (Integer i = 0; i < reSet.size(); i++) {
|
if (ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c);
|
if (n.find()) {
|
String str = '管理编码中有数字,请与管理员确认是否错误。';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i], str));
|
ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
continue;
|
}
|
ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c);
|
for (String str : barMcodeMap.keySet()) {
|
if (barMcodeMap.get(str) == reSet[i].TracingCode__c) {
|
reSet[i].Bar_Code__c = str;
|
ExistIdMap.put(str, str);
|
}
|
}
|
ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i]));
|
ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i]));
|
}
|
}
|
}
|
AllMap.putAll(ErrorIdMap);
|
AllMap.putAll(ExistIdMap);
|
//得到不存在的BarCode
|
for (Integer i = 0; i < BarCodeListP.size(); i++) {
|
if (AllMap.containsKey(BarCodeListP[i])) {
|
continue;
|
} else if (otherAgencyMap.containsKey(BarCodeListP[i])) {
|
continue;
|
}
|
//add by rentx 2021-01-27 start
|
else if (coc != null && coc.orderPattern__c == 'hospitalorder') {
|
HosErrorList.add(BarCodeListP[i]);
|
continue;
|
}
|
//add by rentx 2021-01-27 end
|
else {
|
notInlist.add(BarCodeListP[i]);
|
otherAgencyMap.put(BarCodeListP[i], BarCodeListP[i]);
|
}
|
}
|
if (notInlist.size() > 0) {
|
inventoryEntry(notInlist);
|
if (notInStorelist.size() > 0) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'BarCode号' + notInStorelist + '不存在。'));
|
return;
|
}
|
}
|
}
|
|
//add by rentx 2021-01-27 start 当订单为医院特价类型的订单时,如果找不到barcode,不解析,并且默认该barcode对应的明细2为非医院特价产品,直接报错
|
if (HosErrorList.size() > 0) {
|
for (String str : HosErrorList) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'BarCode号:' + str + '是非医院特价产品'));
|
}
|
}
|
//add by rentx 2021-01-27 end
|
|
makeArrivedSummary();
|
|
//add by rentx 20210602 start CHAN-C3K4ZQ
|
makeRecordsView(ConsumableorderdetailsRecordsdummy);
|
//add by rentx 20210602 end CHAN-C3K4ZQ
|
}
|
|
public void inventoryEntryNoESetId(List<String> barCodeList) {
|
//所有barcode解析到的Jancode
|
List<String> alljanCodeList = new List<String>();
|
List<String> allotCodeList = new List<String>();
|
List<String> barCode01List = new List<String>();
|
List<String> barCode241List = new List<String>();
|
Map<String, Map<String, String>> barJancodeMap = new Map<String, Map<String, String>>();
|
Map<String, Map<String, String>> barOtcodeMap = new Map<String, Map<String, String>>();
|
Map<String, List<String>> barcodeinfoMap = new Map<String, List<String>>();
|
Map<String, String> barcoderightMap = new Map<String, String>();
|
notInStorelist.clear();
|
for (Integer i = 0; i < barCodeList.size(); i++) {
|
Date expirationDate = null;
|
String serialNoorLotNo = '';
|
String tracingCode = '';
|
String productDateStr = '';
|
Date productionDate = null;
|
String expirationDateStr = '';
|
if (barCodeList[i].length() >= 3) {
|
if (barCodeList[i].substring(0, 2) == '01') {
|
String janCodeMark = '';
|
//生产日期
|
List<String> janCode = new List<String>();
|
if (barCodeList[i].length() < 16) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!'
|
)
|
);
|
continue;
|
} else {
|
//if(barCodeList[i].substring(0,2) !='01'){
|
// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')没有janCode,不符合要求!'));
|
// return;
|
//}
|
janCodeMark = barCodeList[i].substring(2, 16);
|
try {
|
Decimal test = Decimal.valueOf(janCodeMark);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的janCode错误!')
|
);
|
continue;
|
}
|
}
|
if (barCodeList[i].length() >= 22) {
|
if (barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) != '250') {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')
|
);
|
continue;
|
}
|
if (barCodeList[i].substring(16, 18) == '11') {
|
try {
|
productDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01';
|
productionDate = Date.valueOf(productDateStr);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 32) {
|
if (barCodeList[i].substring(24, 26) == '17') {
|
try {
|
if (barCodeList[i].substring(30, 32) == '00') {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(26, 28) +
|
'-' +
|
barCodeList[i].substring(28, 30) +
|
'-' +
|
'01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(26, 28) +
|
'-' +
|
barCodeList[i].substring(28, 30) +
|
'-' +
|
barCodeList[i].substring(30, 32);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 42) {
|
if (barCodeList[i].substring(32, 34) == '10' || barCodeList[i].substring(32, 34) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(34, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(26, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].substring(16, 18) == '17') {
|
try {
|
if (barCodeList[i].substring(22, 24) == '00') {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(18, 20) +
|
'-' +
|
barCodeList[i].substring(20, 22) +
|
'-01';
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr));
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(18, 20) +
|
'-' +
|
barCodeList[i].substring(20, 22) +
|
'-' +
|
barCodeList[i].substring(22, 24);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 34) {
|
if (barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(26, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].length() >= 26) {
|
if (barCodeList[i].substring(16, 18) == '10' || barCodeList[i].substring(16, 18) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(18, barCodeList[i].length() - 8);
|
}
|
}
|
}
|
if (
|
barCodeList[i].length() >= 24 &&
|
barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) == '250'
|
) {
|
if (barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) == '250') {
|
tracingCode = barCodeList[i].substring(barCodeList[i].length() - 5, barCodeList[i].length());
|
Matcher n = Pattern.compile('[0-9]').matcher(tracingCode);
|
if (n.find()) {
|
String str = '管理编码不正确,请与管理员确认是否错误。';
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')管理编码中有数字,请与管理员确认是否错误!'
|
)
|
);
|
continue;
|
}
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!')
|
);
|
continue;
|
}
|
}
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(barCodeList[i]);
|
barcodedetList.add(String.valueOf(expirationDate));
|
barcodedetList.add(serialNoorLotNo);
|
barcodedetList.add(tracingCode);
|
Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1));
|
Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2));
|
Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3));
|
Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4));
|
Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5));
|
Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6));
|
Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7));
|
Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8));
|
Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9));
|
Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10));
|
Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11));
|
Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12));
|
Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13));
|
|
Integer count12 =
|
jan2 +
|
jan3 * 3 +
|
jan4 +
|
jan5 * 3 +
|
jan6 +
|
jan7 * 3 +
|
jan8 +
|
jan9 * 3 +
|
jan10 +
|
jan11 * 3 +
|
jan12 +
|
jan13 * 3;
|
Integer count13 =
|
jan1 * 3 +
|
jan2 +
|
jan3 * 3 +
|
jan4 +
|
jan5 * 3 +
|
jan6 +
|
jan7 * 3 +
|
jan8 +
|
jan9 * 3 +
|
jan10 +
|
jan11 * 3 +
|
jan12 +
|
jan13 * 3;
|
String frost12 = (String.valueOf(count12)).substring((String.valueOf(count12)).length() - 1);
|
String frost13 = (String.valueOf(count13)).substring((String.valueOf(count13)).length() - 1);
|
//减去12位个位
|
frost12 = (String.valueOf(10 - Integer.valueOf(frost12)))
|
.substring((String.valueOf(10 - Integer.valueOf(frost12))).length() - 1);
|
frost13 = (String.valueOf(10 - Integer.valueOf(frost13)))
|
.substring((String.valueOf(10 - Integer.valueOf(frost13))).length() - 1);
|
janCode.add(janCodeMark.substring(1, 13) + frost12);
|
janCode.add(janCodeMark.substring(0, 13) + frost12);
|
janCode.add(janCodeMark.substring(1, 13) + frost13);
|
janCode.add(janCodeMark.substring(0, 13) + frost13);
|
alljanCodeList.addAll(janCode);
|
Map<String, String> janCodeMap = new Map<String, String>();
|
janCodeMap.put(janCodeMark.substring(1, 13) + frost12, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(0, 13) + frost12, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(1, 13) + frost13, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(0, 13) + frost13, barCodeList[i]);
|
barJancodeMap.put(barCodeList[i], janCodeMap);
|
barcodeinfoMap.put(barCodeList[i], barcodedetList);
|
barCode01List.add(barCodeList[i]);
|
} else if (barCodeList[i].substring(0, 3) == '241') {
|
if (
|
barCodeList[i].length() > 8 &&
|
barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) != '250'
|
) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')
|
);
|
continue;
|
}
|
List<String> otCodeList = new List<String>();
|
Map<String, String> otCodeMap = new Map<String, String>();
|
if (barCodeList[i].length() < 7) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!'
|
)
|
);
|
continue;
|
} else if (barCodeList[i].length() == 11) {
|
String otCode4 = barCodeList[i].substring(3, 7);
|
String otCode5 = barCodeList[i].substring(3, 8);
|
String otCode6 = barCodeList[i].substring(3, 9);
|
String otCode7 = barCodeList[i].substring(3, 10);
|
String otCode8 = barCodeList[i].substring(3, 11);
|
otCodeList.add(otCode4);
|
otCodeList.add(otCode5);
|
otCodeList.add(otCode6);
|
otCodeList.add(otCode7);
|
otCodeList.add(otCode8);
|
otCodeMap.put(otCode4, barCodeList[i]);
|
otCodeMap.put(otCode5, barCodeList[i]);
|
otCodeMap.put(otCode6, barCodeList[i]);
|
otCodeMap.put(otCode7, barCodeList[i]);
|
otCodeMap.put(otCode8, barCodeList[i]);
|
} else if (barCodeList[i].length() >= 12) {
|
String otCode4 = barCodeList[i].substring(3, 7);
|
String otCode5 = barCodeList[i].substring(3, 8);
|
String otCode6 = barCodeList[i].substring(3, 9);
|
String otCode7 = barCodeList[i].substring(3, 10);
|
String otCode8 = barCodeList[i].substring(3, 11);
|
String otCode9 = barCodeList[i].substring(3, 12);
|
otCodeList.add(otCode4);
|
otCodeList.add(otCode5);
|
otCodeList.add(otCode6);
|
otCodeList.add(otCode7);
|
otCodeList.add(otCode8);
|
otCodeList.add(otCode9);
|
otCodeMap.put(otCode4, barCodeList[i]);
|
otCodeMap.put(otCode5, barCodeList[i]);
|
otCodeMap.put(otCode6, barCodeList[i]);
|
otCodeMap.put(otCode7, barCodeList[i]);
|
otCodeMap.put(otCode8, barCodeList[i]);
|
otCodeMap.put(otCode9, barCodeList[i]);
|
}
|
allotCodeList.addAll(otCodeList);
|
barOtcodeMap.put(barCodeList[i], otCodeMap);
|
barCode241List.add(barCodeList[i]);
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')不符合要求!')
|
);
|
continue;
|
}
|
} else {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')不符合要求!'));
|
continue;
|
}
|
}
|
//01通过检索产品是否存在
|
//-----------XHL--------------UpdateSTART----------------20181010------
|
if (alljanCodeList.size() > 0) {
|
List<Product2__c> product2InStore = [
|
SELECT
|
Id,
|
Name,
|
Name__c,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
OT_CODE__c,
|
Product2_Jancode__c,
|
Pro2_Dealer_ENG__c,
|
Pro2_Dealer_Object__c
|
FROM Product2__c
|
WHERE Product2_Jancode__c IN :alljanCodeList
|
ORDER BY SFDA_Expiration_Date__c DESC
|
];
|
if (product2InStore.size() > 0) {
|
// CHAN-AVSAST
|
Map<String, String> rightBar = new Map<String, String>();
|
Map<String, String> errorMap = new Map<String, String>();
|
for (String bar : barJancodeMap.keySet()) {
|
Integer cou = 0;
|
for (Product2__c produ : product2InStore) {
|
if (barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)) {
|
cou++;
|
if (EngFlag == true && produ.Pro2_Dealer_ENG__c == true) {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
rightBar.put(bar, bar);
|
} else if (ETFlag == true && produ.Pro2_Dealer_Object__c == true) {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
rightBar.put(bar, bar);
|
} else {
|
errorMap.put(bar, bar);
|
}
|
}
|
}
|
if (cou <= 0) {
|
notInStorelist.add(bar);
|
}
|
}
|
if (errorMap.size() > 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户类型[' + userPro_Type + ']不符'
|
)
|
);
|
}
|
}
|
}
|
|
//241通过检索产品是否存在
|
if (allotCodeList.size() > 0) {
|
Map<String, String> errorMap = new Map<String, String>();
|
Map<String, String> exitBarCodeMap = new Map<String, String>();
|
List<Product2__c> product2InStore = [
|
SELECT
|
Id,
|
Name,
|
Name__c,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
OT_CODE__c,
|
Product2_Jancode__c,
|
Pro2_Dealer_ENG__c,
|
Pro2_Dealer_Object__c
|
FROM Product2__c
|
WHERE OT_CODE__c IN :allotCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
];
|
if (product2InStore.size() > 0) {
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barOtcodeMap.keySet()) {
|
if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) {
|
exitBarCodeMap.put(bar, bar);
|
errorMap.put(bar, bar);
|
}
|
}
|
}
|
}
|
if (errorMap.size() > 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符'
|
)
|
);
|
}
|
product2InStore = [
|
SELECT
|
Id,
|
Name,
|
Name__c,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
OT_CODE__c,
|
Product2_Jancode__c,
|
Pro2_Dealer_ENG__c,
|
Pro2_Dealer_Object__c
|
FROM Product2__c
|
WHERE OT_CODE__c IN :allotCodeList AND Product_Type__c LIKE :userPro_Typestr
|
];
|
|
if (product2InStore.size() > 0) {
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barOtcodeMap.keySet()) {
|
Date expirationDate = null;
|
String serialNoorLotNo = '';
|
String tracingCode = '';
|
String productDateStr = '';
|
Date productionDate = null;
|
String expirationDateStr = '';
|
if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) {
|
Integer oTcodeLength = produ.OT_CODE__c.length();
|
if (bar.length() >= oTcodeLength + 11) {
|
if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '11') {
|
try {
|
productDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 5, oTcodeLength + 7) +
|
'-' +
|
bar.substring(oTcodeLength + 7, oTcodeLength + 9) +
|
'-01';
|
productionDate = Date.valueOf(productDateStr);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 3 + 16) {
|
if (bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '17') {
|
try {
|
if (bar.substring(oTcodeLength + 3 + 14, oTcodeLength + 3 + 16) == '00') {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 10, oTcodeLength + 3 + 12) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 12, oTcodeLength + 3 + 14) +
|
'-' +
|
'01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 10, oTcodeLength + 3 + 12) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 12, oTcodeLength + 3 + 14) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 14, oTcodeLength + 3 + 16);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 3 + 25) {
|
if (
|
bar.substring(oTcodeLength + 3 + 16, oTcodeLength + 3 + 18) == '10' ||
|
bar.substring(oTcodeLength + 3 + 16, oTcodeLength + 3 + 18) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 18, bar.length() - 8);
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo));
|
}
|
}
|
} else if (
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '10' ||
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10, bar.length() - 8);
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo));
|
}
|
}
|
} else if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '17') {
|
try {
|
if (bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8) == '00') {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 2, oTcodeLength + 3 + 4) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 4, oTcodeLength + 3 + 6) +
|
'-01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 2, oTcodeLength + 3 + 4) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 4, oTcodeLength + 3 + 6) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 20) {
|
if (
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '10' ||
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10, bar.length() - 8);
|
}
|
}
|
} else if (bar.length() >= oTcodeLength + 12) {
|
if (
|
bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '10' ||
|
bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 2, bar.length() - 8);
|
}
|
}
|
}
|
if (bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8, bar.length() - 5) == '250') {
|
if (bar.substring(bar.length() - 8, bar.length() - 5) == '250') {
|
tracingCode = bar.substring(bar.length() - 5, bar.length());
|
Matcher n = Pattern.compile('[0-9]').matcher(tracingCode);
|
if (n.find()) {
|
String str = '管理编码不正确,请与管理员确认是否错误。';
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!'
|
)
|
);
|
continue;
|
}
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的tracingCode错误!')
|
);
|
continue;
|
}
|
}
|
exitBarCodeMap.put(bar, bar);
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(bar);
|
barcodedetList.add(String.valueOf(expirationDate));
|
barcodedetList.add(serialNoorLotNo);
|
barcodedetList.add(tracingCode);
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodedetList));
|
consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ, barcodedetList));
|
}
|
}
|
}
|
}
|
for (String bartxt : barCode241List) {
|
if (!exitBarCodeMap.containsKey(bartxt)) {
|
if (!errorMap.containsKey(bartxt)) {
|
notInStorelist.add(bartxt);
|
}
|
}
|
}
|
}
|
}
|
|
public void inventoryEntry(List<String> barCodeList) {
|
//所有barcode解析到的Jancode
|
List<String> alljanCodeList = new List<String>();
|
List<String> allotCodeList = new List<String>();
|
List<String> barCode01List = new List<String>();
|
List<String> barCode241List = new List<String>();
|
Map<String, Map<String, String>> barJancodeMap = new Map<String, Map<String, String>>();
|
Map<String, Map<String, String>> barOtcodeMap = new Map<String, Map<String, String>>();
|
Map<String, List<String>> barcodeinfoMap = new Map<String, List<String>>();
|
notInStorelist.clear();
|
notEqualBARcodeCunMap.clear();
|
Map<String, String> orderdetailMap = new Map<String, String>();
|
List<Consumable_Orderdetails__c> orderdetail = [
|
SELECT Id, Name, Consumable_order__c, Consumable_Product__c, Asset_Model_No__c
|
FROM Consumable_Orderdetails__c
|
WHERE
|
Consumable_order__r.Dealer_Info__c = :accountid
|
AND Consumable_order__c != NULL
|
AND Consumable_order__c = :ESetId
|
AND Order_Owner_WorkLocal__c = :userWorkLocation
|
ORDER BY Name
|
];
|
for (Integer i = 0; i < orderdetail.size(); i++) {
|
orderdetailMap.put(orderdetail[i].Consumable_Product__c, orderdetail[i].Consumable_Product__c);
|
}
|
|
for (Integer i = 0; i < barCodeList.size(); i++) {
|
Date expirationDate = null;
|
String serialNoorLotNo = '';
|
String tracingCode = '';
|
String productDateStr = '';
|
Date productionDate = null;
|
String expirationDateStr = '';
|
|
if (barCodeList[i].substring(0, 2) == '01') {
|
String janCodeMark = '';
|
//生产日期
|
List<String> janCode = new List<String>();
|
if (barCodeList[i].length() < 16) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')
|
);
|
continue;
|
} else {
|
janCodeMark = barCodeList[i].substring(2, 16);
|
try {
|
Decimal test = Decimal.valueOf(janCodeMark);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的janCode错误!')
|
);
|
continue;
|
}
|
}
|
if (barCodeList[i].length() >= 22) {
|
if (barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) != '250') {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')
|
);
|
continue;
|
}
|
if (barCodeList[i].substring(16, 18) == '11') {
|
try {
|
productDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01';
|
productionDate = Date.valueOf(productDateStr);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 32) {
|
if (barCodeList[i].substring(24, 26) == '17') {
|
try {
|
if (barCodeList[i].substring(30, 32) == '00') {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(26, 28) +
|
'-' +
|
barCodeList[i].substring(28, 30) +
|
'-' +
|
'01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(26, 28) +
|
'-' +
|
barCodeList[i].substring(28, 30) +
|
'-' +
|
barCodeList[i].substring(30, 32);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 42) {
|
if (barCodeList[i].substring(32, 34) == '10' || barCodeList[i].substring(32, 34) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(34, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(26, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].substring(16, 18) == '17') {
|
try {
|
if (barCodeList[i].substring(22, 24) == '00') {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(18, 20) +
|
'-' +
|
barCodeList[i].substring(20, 22) +
|
'-01';
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr));
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
barCodeList[i].substring(18, 20) +
|
'-' +
|
barCodeList[i].substring(20, 22) +
|
'-' +
|
barCodeList[i].substring(22, 24);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (barCodeList[i].length() >= 34) {
|
if (barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(26, barCodeList[i].length() - 8);
|
}
|
}
|
} else if (barCodeList[i].length() >= 26) {
|
if (barCodeList[i].substring(16, 18) == '10' || barCodeList[i].substring(16, 18) == '21') {
|
serialNoorLotNo = barCodeList[i].substring(18, barCodeList[i].length() - 8);
|
}
|
}
|
}
|
if (
|
barCodeList[i].length() >= 24 &&
|
barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) == '250'
|
) {
|
if (barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) == '250') {
|
tracingCode = barCodeList[i].substring(barCodeList[i].length() - 5, barCodeList[i].length());
|
Matcher n = Pattern.compile('[0-9]').matcher(tracingCode);
|
if (n.find()) {
|
String str = '管理编码不正确,请与管理员确认是否错误。';
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + barCodeList[i] + ')管理编码中有数字,请与管理员确认是否错误!'
|
)
|
);
|
continue;
|
}
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!')
|
);
|
continue;
|
}
|
}
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(barCodeList[i]);
|
barcodedetList.add(String.valueOf(expirationDate));
|
barcodedetList.add(serialNoorLotNo);
|
barcodedetList.add(tracingCode);
|
Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1));
|
Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2));
|
Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3));
|
Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4));
|
Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5));
|
Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6));
|
Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7));
|
Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8));
|
Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9));
|
Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10));
|
Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11));
|
Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12));
|
Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13));
|
Integer count12 =
|
jan2 +
|
jan3 * 3 +
|
jan4 +
|
jan5 * 3 +
|
jan6 +
|
jan7 * 3 +
|
jan8 +
|
jan9 * 3 +
|
jan10 +
|
jan11 * 3 +
|
jan12 +
|
jan13 * 3;
|
|
Integer count13 =
|
jan1 * 3 +
|
jan2 +
|
jan3 * 3 +
|
jan4 +
|
jan5 * 3 +
|
jan6 +
|
jan7 * 3 +
|
jan8 +
|
jan9 * 3 +
|
jan10 +
|
jan11 * 3 +
|
jan12 +
|
jan13 * 3;
|
String frost12 = (String.valueOf(count12)).substring((String.valueOf(count12)).length() - 1);
|
String frost13 = (String.valueOf(count13)).substring((String.valueOf(count13)).length() - 1);
|
//减去12位个位4
|
frost12 = (String.valueOf(10 - Integer.valueOf(frost12)))
|
.substring((String.valueOf(10 - Integer.valueOf(frost12))).length() - 1);
|
frost13 = (String.valueOf(10 - Integer.valueOf(frost13)))
|
.substring((String.valueOf(10 - Integer.valueOf(frost13))).length() - 1);
|
|
janCode.add(janCodeMark.substring(1, 13) + frost12);
|
janCode.add(janCodeMark.substring(0, 13) + frost12);
|
janCode.add(janCodeMark.substring(1, 13) + frost13);
|
janCode.add(janCodeMark.substring(0, 13) + frost13);
|
alljanCodeList.addAll(janCode);
|
Map<String, String> janCodeMap = new Map<String, String>();
|
janCodeMap.put(janCodeMark.substring(1, 13) + frost12, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(0, 13) + frost12, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(1, 13) + frost13, barCodeList[i]);
|
janCodeMap.put(janCodeMark.substring(0, 13) + frost13, barCodeList[i]);
|
barJancodeMap.put(barCodeList[i], janCodeMap);
|
barcodeinfoMap.put(barCodeList[i], barcodedetList);
|
barCode01List.add(barCodeList[i]);
|
} else if (barCodeList[i].substring(0, 3) == '241') {
|
if (
|
barCodeList[i].length() > 8 &&
|
barCodeList[i].substring(barCodeList[i].length() - 8, barCodeList[i].length() - 5) != '250'
|
) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')
|
);
|
continue;
|
}
|
List<String> otCodeList = new List<String>();
|
Map<String, String> otCodeMap = new Map<String, String>();
|
if (barCodeList[i].length() < 7) {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')
|
);
|
continue;
|
} else if (barCodeList[i].length() == 11) {
|
String otCode4 = barCodeList[i].substring(3, 7);
|
String otCode5 = barCodeList[i].substring(3, 8);
|
String otCode6 = barCodeList[i].substring(3, 9);
|
String otCode7 = barCodeList[i].substring(3, 10);
|
String otCode8 = barCodeList[i].substring(3, 11);
|
otCodeList.add(otCode4);
|
otCodeList.add(otCode5);
|
otCodeList.add(otCode6);
|
otCodeList.add(otCode7);
|
otCodeList.add(otCode8);
|
otCodeMap.put(otCode4, barCodeList[i]);
|
otCodeMap.put(otCode5, barCodeList[i]);
|
otCodeMap.put(otCode6, barCodeList[i]);
|
otCodeMap.put(otCode7, barCodeList[i]);
|
otCodeMap.put(otCode8, barCodeList[i]);
|
} else if (barCodeList[i].length() >= 12) {
|
String otCode4 = barCodeList[i].substring(3, 7);
|
String otCode5 = barCodeList[i].substring(3, 8);
|
String otCode6 = barCodeList[i].substring(3, 9);
|
String otCode7 = barCodeList[i].substring(3, 10);
|
String otCode8 = barCodeList[i].substring(3, 11);
|
String otCode9 = barCodeList[i].substring(3, 12);
|
otCodeList.add(otCode4);
|
otCodeList.add(otCode5);
|
otCodeList.add(otCode6);
|
otCodeList.add(otCode7);
|
otCodeList.add(otCode8);
|
otCodeList.add(otCode9);
|
otCodeMap.put(otCode4, barCodeList[i]);
|
otCodeMap.put(otCode5, barCodeList[i]);
|
otCodeMap.put(otCode6, barCodeList[i]);
|
otCodeMap.put(otCode7, barCodeList[i]);
|
otCodeMap.put(otCode8, barCodeList[i]);
|
otCodeMap.put(otCode9, barCodeList[i]);
|
}
|
allotCodeList.addAll(otCodeList);
|
barOtcodeMap.put(barCodeList[i], otCodeMap);
|
barCode241List.add(barCodeList[i]);
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有janCode或OTcode,不符合要求!')
|
);
|
continue;
|
}
|
}
|
//01通过检索产品是否存在
|
Map<String, String> rightBar = new Map<String, String>();
|
if (alljanCodeList.size() > 0) {
|
Map<String, String> exitBarCodeMap = new Map<String, String>();
|
List<Product2__c> product2InStore = [
|
SELECT
|
Id,
|
Name,
|
Name__c,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
OT_CODE__c,
|
Product2_Jancode__c,
|
Pro2_Dealer_ENG__c,
|
Pro2_Dealer_Object__c,
|
Product_Type__c
|
FROM Product2__c
|
WHERE Product2_Jancode__c IN :alljanCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
ORDER BY SFDA_Expiration_Date__c DESC
|
];
|
if (product2InStore.size() > 0) {
|
Map<String, String> errorMap = new Map<String, String>();
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barJancodeMap.keySet()) {
|
if (barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)) {
|
exitBarCodeMap.put(bar, bar);
|
errorMap.put(bar, bar);
|
}
|
}
|
}
|
if (errorMap.size() > 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户的类型[' + userPro_Type + ']不符'
|
)
|
);
|
}
|
}
|
product2InStore = [
|
SELECT
|
Id,
|
Name,
|
Name__c,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
OT_CODE__c,
|
Product2_Jancode__c,
|
Pro2_Dealer_ENG__c,
|
Pro2_Dealer_Object__c,
|
Product_Type__c
|
FROM Product2__c
|
WHERE Product2_Jancode__c IN :alljanCodeList AND Product_Type__c LIKE :userPro_Typestr
|
ORDER BY SFDA_Expiration_Date__c DESC
|
];
|
if (product2InStore.size() > 0) {
|
Map<String, String> errorMap = new Map<String, String>();
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barJancodeMap.keySet()) {
|
if (barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)) {
|
exitBarCodeMap.put(bar, bar);
|
if (orderdetailMap.containsKey(produ.Id)) {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
rightBar.put(bar, bar);
|
} else {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)));
|
rightBar.put(bar, bar);
|
list<String> overOrderBARcodeCunList = new List<String>();
|
if (notEqualBARcodeCunMap.containsKey(produ.Id)) {
|
overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id).clone();
|
overOrderBARcodeCunList.add(bar);
|
notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList);
|
} else {
|
overOrderBARcodeCunList.add(bar);
|
notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList);
|
}
|
}
|
}
|
}
|
}
|
}
|
for (String bartxt : barCode01List) {
|
if (!exitBarCodeMap.containsKey(bartxt)) {
|
notInStorelist.add(bartxt);
|
}
|
}
|
}
|
|
//241通过检索产品是否存在
|
if (allotCodeList.size() > 0) {
|
Map<String, String> exitBarCodeMap = new Map<String, String>();
|
Map<String, String> errorMap = new Map<String, String>();
|
List<Product2__c> product2InStore = [
|
SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Pro2_Dealer_Object__c, Pro2_Dealer_ENG__c
|
FROM Product2__c
|
WHERE OT_CODE__c IN :allotCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
];
|
if (product2InStore.size() > 0) {
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barOtcodeMap.keySet()) {
|
if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) {
|
exitBarCodeMap.put(bar, bar);
|
errorMap.put(bar, bar);
|
}
|
}
|
}
|
}
|
if (errorMap.size() > 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符'
|
)
|
);
|
}
|
product2InStore = [
|
SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Pro2_Dealer_Object__c, Pro2_Dealer_ENG__c
|
FROM Product2__c
|
WHERE OT_CODE__c IN :allotCodeList AND Product_Type__c LIKE :userPro_Typestr
|
];
|
|
if (product2InStore.size() > 0) {
|
for (Product2__c produ : product2InStore) {
|
for (String bar : barOtcodeMap.keySet()) {
|
Date expirationDate = null;
|
String serialNoorLotNo = '';
|
String tracingCode = '';
|
String productDateStr = '';
|
Date productionDate = null;
|
String expirationDateStr = '';
|
Integer oTcodeLength = produ.OT_CODE__c.length();
|
|
if (bar.length() >= oTcodeLength + 11) {
|
if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '11') {
|
try {
|
productDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 5, oTcodeLength + 7) +
|
'-' +
|
bar.substring(oTcodeLength + 7, oTcodeLength + 9) +
|
'-01';
|
productionDate = Date.valueOf(productDateStr);
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 3 + 16) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode17' + bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10)));
|
if (bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '17') {
|
try {
|
if (bar.substring(oTcodeLength + 3 + 14, oTcodeLength + 3 + 16) == '00') {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 10, oTcodeLength + 3 + 12) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 12, oTcodeLength + 3 + 14) +
|
'-' +
|
'01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 10, oTcodeLength + 3 + 12) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 12, oTcodeLength + 3 + 14) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 14, oTcodeLength + 3 + 16);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 3 + 25) {
|
if (
|
bar.substring(oTcodeLength + 3 + 16, oTcodeLength + 3 + 18) == '10' ||
|
bar.substring(oTcodeLength + 3 + 16, oTcodeLength + 3 + 18) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 18, bar.length() - 8);
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo));
|
}
|
}
|
} else if (
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '10' ||
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10, bar.length() - 8);
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo));
|
}
|
}
|
} else if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '17') {
|
try {
|
if (bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8) == '00') {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 2, oTcodeLength + 3 + 4) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 4, oTcodeLength + 3 + 6) +
|
'-01';
|
expirationDate = Date.valueOf(expirationDateStr);
|
expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1);
|
} else {
|
expirationDateStr =
|
'20' +
|
bar.substring(oTcodeLength + 3 + 2, oTcodeLength + 3 + 4) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 4, oTcodeLength + 3 + 6) +
|
'-' +
|
bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8);
|
expirationDate = Date.valueOf(expirationDateStr);
|
}
|
} catch (Exception e) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!'
|
)
|
);
|
continue;
|
}
|
if (bar.length() >= oTcodeLength + 20) {
|
if (
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '10' ||
|
bar.substring(oTcodeLength + 3 + 8, oTcodeLength + 3 + 10) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10, bar.length() - 8);
|
}
|
}
|
} else if (bar.length() >= oTcodeLength + 12) {
|
if (
|
bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '10' ||
|
bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '21'
|
) {
|
serialNoorLotNo = bar.substring(oTcodeLength + 3 + 2, bar.length() - 8);
|
}
|
}
|
}
|
if (bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8, bar.length() - 5) == '250') {
|
if (bar.substring(bar.length() - 8, bar.length() - 5) == '250') {
|
tracingCode = bar.substring(bar.length() - 5, bar.length());
|
Matcher n = Pattern.compile('[0-9]').matcher(tracingCode);
|
if (n.find()) {
|
String str = '管理编码不正确,请与管理员确认是否错误。';
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.ERROR,
|
'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!'
|
)
|
);
|
continue;
|
}
|
} else {
|
ApexPages.addmessage(
|
new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的tracingCode错误!')
|
);
|
continue;
|
}
|
}
|
List<String> barcodedetList = new List<String>();
|
barcodedetList.add(bar);
|
barcodedetList.add(String.valueOf(expirationDate));
|
barcodedetList.add(serialNoorLotNo);
|
barcodedetList.add(tracingCode);
|
if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) {
|
exitBarCodeMap.put(bar, bar);
|
|
if (orderdetailMap.containsKey(produ.Id)) {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodedetList));
|
} else {
|
consumableInventory.add(new ConsumableorderdetailsInfo(produ, barcodedetList));
|
list<String> overOrderBARcodeCunList = new List<String>();
|
if (notEqualBARcodeCunMap.containsKey(produ.Id)) {
|
overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id).clone();
|
overOrderBARcodeCunList.add(bar);
|
notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList);
|
} else {
|
overOrderBARcodeCunList.add(bar);
|
notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
for (String bartxt : barCode241List) {
|
if (!exitBarCodeMap.containsKey(bartxt)) {
|
if (!errorMap.containsKey(bartxt)) {
|
notInStorelist.add(bartxt);
|
}
|
}
|
}
|
}
|
//判断产品是否一致
|
if (notEqualBARcodeCunMap.size() > 0) {
|
for (String widget : notEqualBARcodeCunMap.keySet()) {
|
if (notEqualBARcodeCunMap.get(widget).size() > 0) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '以下barcode产品与订货产品不一致。'));
|
for (String barcodeListTTT : (List<String>) notEqualBARcodeCunMap.get(widget)) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT));
|
}
|
}
|
}
|
}
|
}
|
|
public String ConfimResult() {
|
list<String> overOrderproList = new List<String>();
|
list<String> overOrderBARcodeCunList = new List<String>();
|
list<String> overOrderBARcodeCunListTest = new List<String>();
|
//overOrderBARcodeCunMap.clear();
|
for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) {
|
if (
|
orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) >
|
orderProductCunMap.get(ass.esd.Asset_Model_No__c) - 1
|
) {
|
// 获取超过定货数量的消耗品信息
|
overOrderBARcodeCunList = new List<String>();
|
overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.esd.Asset_Model_No__c).clone();
|
overOrderBARcodeCunList.add(ass.esd.Bar_Code__c);
|
overOrderBARcodeCunMap.put(ass.esd.Asset_Model_No__c, overOrderBARcodeCunList);
|
overOrderCunMap.put(ass.esd.Asset_Model_No__c, overOrderCunMap.get(ass.esd.Asset_Model_No__c) + 1);
|
cancellationProList.add(ass.esd.Asset_Model_No__c);
|
} else if (
|
orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) ==
|
orderProductCunMap.get(ass.esd.Asset_Model_No__c) - 1
|
) {
|
consumableorderdetailsRecordsUse.add(ass);
|
cancellationProList.add(ass.esd.Asset_Model_No__c);
|
} else {
|
consumableorderdetailsRecordsUse.add(ass);
|
}
|
orderWantArriveCunMap.put(ass.esd.Asset_Model_No__c, orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + 1);
|
}
|
for (ConsumableorderdetailsInfo ass : consumableInventory) {
|
if (!orderWantArriveCunMap.containsKey(ass.Prod.Asset_Model_No__c)) {
|
consumableInventoryUse.add(ass);
|
continue;
|
}
|
if (
|
orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) >
|
orderProductCunMap.get(ass.Prod.Asset_Model_No__c) - 1
|
) {
|
//取得原有list
|
overOrderBARcodeCunList = new List<String>();
|
overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.Prod.Asset_Model_No__c).clone();
|
//更新list
|
overOrderBARcodeCunList.add(ass.barCodeNo);
|
//更新map
|
overOrderBARcodeCunMap.put(ass.Prod.Asset_Model_No__c, overOrderBARcodeCunList);
|
overOrderCunMap.put(ass.Prod.Asset_Model_No__c, overOrderCunMap.get(ass.Prod.Asset_Model_No__c) + 1);
|
cancellationProList.add(ass.Prod.Asset_Model_No__c);
|
} else if (
|
orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) ==
|
orderProductCunMap.get(ass.Prod.Asset_Model_No__c) - 1
|
) {
|
consumableInventoryUse.add(ass);
|
cancellationProList.add(ass.Prod.Asset_Model_No__c);
|
} else {
|
consumableInventoryUse.add(ass);
|
}
|
orderWantArriveCunMap.put(ass.Prod.Asset_Model_No__c, orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + 1);
|
}
|
for (Integer i = 0; i < productList.size(); i++) {
|
if (overOrderBARcodeCunMap.get(productList[i]).size() > 0) {
|
// 获取超过定货数量的消耗品信息
|
overOrderproList.add(productList[i]);
|
}
|
}
|
if (overOrderproList.size() > 0) {
|
return '产品' + overOrderproList + '本次到货数量和已到货数量已经超过订货数量!';
|
} else {
|
return '';
|
}
|
}
|
|
public void confimResultWithoutOrder() {
|
/*list<String> overOrderproList = new list<String>();
|
list<String> overOrderBARcodeCunList = new list<String>();
|
orderProductCunMap.clear();
|
orderProductArrivedCunMap.clear();
|
orderWantArriveCunMap.clear();
|
//所有产品数量
|
List<Consumable_Orderdetails__c> mx1 = [SELECT Asset_Model_No__c,
|
Consumable_order__c,
|
Consumable_count__c,
|
Consumable_Product__r.Name
|
FROM Consumable_Orderdetails__c
|
WHERE Consumable_order__c in :orderId
|
AND Consumable_Product__r.Name in : prodName
|
AND Consumable_order__r.Dealer_Info__c = :accountid];
|
for (Integer i = 0; i < mx1.size(); i++) {
|
orderProductCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,mx1[i].Consumable_count__c);
|
orderProductArrivedCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0);
|
orderWantArriveCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0);
|
}
|
//已到货产品数量
|
List<Consumable_order_details2__c> mx2 = [SELECT Asset_Model_No__c,
|
Consumable_count__c,
|
Consumable_order_minor__c,
|
Consumable_Product__r.Name
|
FROM Consumable_order_details2__c
|
WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery
|
AND Consumable_order_minor__c in :orderId
|
AND Consumable_Product__r.Name in : prodName
|
AND Dealer_Info_text__c = :accountName
|
AND Dealer_Arrive__c = true];
|
for (Integer i = 0; i < mx2.size(); i++) {
|
if(orderProductArrivedCunMap.containsKey(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)){
|
orderProductArrivedCunMap.put(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c,orderProductArrivedCunMap.get(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)+1);
|
}
|
}*/
|
|
//要到货产品数量
|
for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) {
|
/*if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) > orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){
|
// 获取超过定货数量的消耗品信息
|
overOrderproList.add('产品' + ass.esd.Asset_Model_No__c + '在订单' + ass.esd.Consumable_order_minor__r.Name + '中超过订货数量!\n');
|
overOrderBARcodeCunList = new list<String>();
|
overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.esd.Asset_Model_No__c).clone();
|
overOrderBARcodeCunList.add(ass.esd.Bar_Code__c);
|
overOrderBARcodeCunMap.put(ass.esd.Asset_Model_No__c,overOrderBARcodeCunList);
|
}else if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) == orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){
|
consumableorderdetailsRecordsUse.add(ass);
|
orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1);
|
}else{*/
|
consumableorderdetailsRecordsUse.add(ass);
|
}
|
/*orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1);
|
}
|
return overOrderproList;*/
|
}
|
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// 虚拟盘点单消耗品明细1创建巡回
|
public void addInventoryDetails1(List<Consumable_order_details2__c> addList) {
|
Map<String, List<Consumable_order_details2__c>> accountGroupMap = new Map<String, List<Consumable_order_details2__c>>();
|
Map<String, Map<Id, Integer>> productMap = new Map<String, Map<Id, Integer>>();
|
List<Id> orderIdList = new List<Id>();
|
// 以经销商名将要生成出库单的数据分组
|
for (Consumable_order_details2__c cod : addList) {
|
List<Consumable_order_details2__c> accGroupList = new List<Consumable_order_details2__c>();
|
Map<Id, Integer> pNumMap = new Map<Id, Integer>();
|
Integer num = 1;
|
if (accountGroupMap.containsKey(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c)) {
|
accGroupList = accountGroupMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c);
|
pNumMap = productMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c);
|
if (pNumMap.containsKey(cod.Consumable_Product__c)) {
|
num = pNumMap.get(cod.Consumable_Product__c) + 1;
|
}
|
}
|
orderIdList.add(cod.Consumable_Inventory_order__c);
|
pNumMap.put(cod.Consumable_Product__c, num);
|
accGroupList.add(cod);
|
productMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap);
|
accountGroupMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList);
|
System.debug('======accGroupList' + accGroupList);
|
}
|
|
System.debug('======accountGroupMap' + accountGroupMap);
|
List<Consumable_order__c> orderList = [
|
SELECT Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c
|
FROM Consumable_order__c
|
WHERE id IN :orderIdList
|
];
|
|
// 生成各经销商出库订单List
|
// List<Consumable_order__c> orderList = new List<Consumable_order__c> ();
|
Map<String, List<Consumable_orderdetails__c>> insDetail1Map = new Map<String, List<Consumable_orderdetails__c>>();
|
for (String acc : accountGroupMap.keySet()) {
|
Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0];
|
List<Consumable_order_details2__c> prodPriceList = accountGroupMap.get(acc);
|
Map<Id, Integer> pNumMap = new Map<Id, Integer>();
|
pNumMap = productMap.get(acc);
|
List<Consumable_orderdetails__c> insDetail1 = new List<Consumable_orderdetails__c>();
|
for (Id id : pNumMap.keySet()) {
|
Consumable_orderdetails__c ins = new Consumable_orderdetails__c();
|
|
//InsAfterDel.Consumable_order__c = p.id;
|
ins.Product_Refind__c = pNumMap.get(id);
|
ins.inventory_sum__c = pNumMap.get(id);
|
ins.Consumable_Product__c = id;
|
for (Consumable_order_details2__c pri : prodPriceList) {
|
if (pri.Consumable_Product__c == id) {
|
ins.Intra_Trade_List_RMB__c = pri.Intra_Trade_List_RMB__c;
|
break;
|
}
|
}
|
ins.Box_Piece__c = '盒';
|
ins.Out_unit__c = '盒';
|
//ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c;
|
//ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c;
|
//ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c;
|
ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory;
|
ins.Used_date__c = Date.today();
|
ins.OwnerId = arriveAccount.OwnerId;
|
|
insDetail1.add(ins);
|
}
|
System.debug('======insDetail1' + insDetail1);
|
insDetail1Map.put(acc, insDetail1);
|
System.debug('======insDetail1Map' + insDetail1Map);
|
}
|
List<Consumable_orderdetails__c> insDetail1List = new List<Consumable_orderdetails__c>();
|
for (Consumable_order__c setId : orderList) {
|
// 明细1
|
List<Consumable_orderdetails__c> d1list = insDetail1Map.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c);
|
Integer i = 1;
|
for (Consumable_orderdetails__c dtl1 : d1list) {
|
String str = ('000' + i).right(4);
|
dtl1.Consumable_order__c = setId.Id;
|
dtl1.Name = setId.Name + '-' + str;
|
insDetail1List.add(dtl1);
|
}
|
}
|
System.debug('======insDetail1List' + insDetail1List);
|
insert insDetail1List;
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
|
// 经销商的不同工作地调货自动生成出库单
|
public void addSaleOrderAuto(List<Consumable_order_details2__c> addList) {
|
Map<String, List<Consumable_order_details2__c>> accountGroupMap = new Map<String, List<Consumable_order_details2__c>>();
|
Map<String, Map<Id, Integer>> productMap = new Map<String, Map<Id, Integer>>();
|
// 以经销商名将要生成出库单的数据分组
|
for (Consumable_order_details2__c cod : addList) {
|
List<Consumable_order_details2__c> accGroupList = new List<Consumable_order_details2__c>();
|
Map<Id, Integer> pNumMap = new Map<Id, Integer>();
|
Integer num = 1;
|
if (accountGroupMap.containsKey(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c)) {
|
accGroupList = accountGroupMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c);
|
pNumMap = productMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c);
|
if (pNumMap.containsKey(cod.Consumable_Product__c)) {
|
num = pNumMap.get(cod.Consumable_Product__c) + 1;
|
}
|
}
|
pNumMap.put(cod.Consumable_Product__c, num);
|
accGroupList.add(cod);
|
productMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap);
|
accountGroupMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList);
|
}
|
|
// 生成各经销商出库订单List
|
List<Consumable_order__c> orderList = new List<Consumable_order__c>();
|
Map<String, List<Consumable_orderdetails__c>> insDetail1Map = new Map<String, List<Consumable_orderdetails__c>>();
|
for (String acc : accountGroupMap.keySet()) {
|
Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0];
|
Consumable_order__c autoOrder = new Consumable_order__c();
|
autoOrder.Name = '*';
|
autoOrder.Dealer_Info__c = arriveAccount.Consumable_Arrived_order__r.Dealer_Info__c;
|
autoOrder.OwnerId = arriveAccount.OwnerId;
|
autoOrder.Order_type__c = '传票';
|
autoOrder.SummonsStatus_c__c = '已完成';
|
autoOrder.Order_ForDealerText__c = accountName;
|
autoOrder.SummonsForDirction__c = '互相调货';
|
autoOrder.RecordTypeid = System.Label.RT_ConOrder_Shipment;
|
autoOrder.Outbound_Date__c = Date.today();
|
autoOrder.Order_date__c = Date.today();
|
autoOrder.AutoShipment__c = true;
|
orderList.add(autoOrder);
|
|
List<Consumable_order_details2__c> prodPriceList = accountGroupMap.get(acc);
|
Map<Id, Integer> pNumMap = new Map<Id, Integer>();
|
pNumMap = productMap.get(acc);
|
List<Consumable_orderdetails__c> insDetail1 = new List<Consumable_orderdetails__c>();
|
for (Id id : pNumMap.keySet()) {
|
Consumable_orderdetails__c ins = new Consumable_orderdetails__c();
|
|
//InsAfterDel.Consumable_order__c = p.id;
|
ins.Shipment_Count__c = pNumMap.get(id);
|
ins.Consumable_Product__c = id;
|
for (Consumable_order_details2__c pri : prodPriceList) {
|
if (pri.Consumable_Product__c == id) {
|
ins.Intra_Trade_List_RMB__c = pri.Intra_Trade_List_RMB__c;
|
break;
|
}
|
}
|
ins.Box_Piece__c = '盒';
|
ins.Out_unit__c = '盒';
|
//ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c;
|
//ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c;
|
//ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c;
|
ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Shipment;
|
ins.Used_date__c = Date.today();
|
ins.OwnerId = arriveAccount.OwnerId;
|
|
insDetail1.add(ins);
|
}
|
insDetail1Map.put(acc, insDetail1);
|
}
|
insert orderList;
|
|
List<Id> orderIdList = new List<Id>();
|
for (Consumable_order__c co : orderList) {
|
orderIdList.add(co.Id);
|
}
|
|
orderList = new List<Consumable_order__c>();
|
orderList = [SELECT Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c FROM Consumable_order__c WHERE id IN :orderIdList];
|
|
// 设置明细1 和 明细2 的 订单ID
|
List<Consumable_orderdetails__c> insDetail1List = new List<Consumable_orderdetails__c>();
|
List<Consumable_order_details2__c> updDetail2List = new List<Consumable_order_details2__c>();
|
for (Consumable_order__c setId : orderList) {
|
// 明细1
|
List<Consumable_orderdetails__c> d1list = insDetail1Map.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c);
|
Integer i = 1;
|
for (Consumable_orderdetails__c dtl1 : d1list) {
|
String str = ('000' + i).right(4);
|
// if(str.length() == 1){
|
// str = '0' + str;
|
// }
|
dtl1.Consumable_order__c = setId.Id;
|
dtl1.Name = setId.Name + '-' + str;
|
insDetail1List.add(dtl1);
|
}
|
|
// 明细2
|
List<Consumable_order_details2__c> d2list = accountGroupMap.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c);
|
for (Consumable_order_details2__c dtl2 : d2list) {
|
dtl2.Send_Date__c = Date.today();
|
dtl2.Consumable_Sale_order__c = null;
|
dtl2.Consumable_Return_order__c = null;
|
dtl2.Consumable_ZS_order__c = setId.Id;
|
//dtl2.Delivery_List_RMB__c = null;
|
dtl2.Return_date__c = null;
|
dtl2.Return_reason__c = null;
|
dtl2.Consumable_Shipment_order__c = setId.Id;
|
// 更新借调信息 add by gzw 2020-0-415 start
|
dtl2.Transfer_Time__c = 1;
|
dtl2.Agency_Transfer__c = true;
|
dtl2.Frist_Transfer_Agency__c = dtl2.Dealer_Info_text__c;
|
// 更新借调信息 add by gzw 2020-0-415 end
|
updDetail2List.add(dtl2);
|
}
|
}
|
|
insert insDetail1List;
|
update updDetail2List;
|
}
|
|
//到货确认
|
public PageReference ArriveGoodsConfim() {
|
//add by rentx 20210618 start CHAN-C3K4ZQ 跳过不必要的查询
|
StaticParameter.ConsumableOrderTrigger = true;
|
//add by rentx 20210618 end CHAN-C3K4ZQ 跳过不必要的查询
|
cancellationProList = new List<String>();
|
List<Consumable_order_details2__c> ins = new List<Consumable_order_details2__c>();
|
String resultcheck = '';
|
List<String> resultcheckWithoutOrder = new List<String>();
|
Savepoint sp = Database.setSavepoint();
|
|
if (ConsumableorderdetailsRecords.size() < 1 && consumableInventory.size() < 1) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '不存在到货明细'));
|
return null;
|
}
|
if (EsetId != null && EsetId != '') {
|
resultcheck = ConfimResult();
|
if (resultcheck.length() > 0) {
|
for (String widget : overOrderBARcodeCunMap.keySet()) {
|
if (overOrderBARcodeCunMap.get(widget).size() > 0) {
|
ApexPages.addmessage(
|
new ApexPages.message(
|
ApexPages.severity.INFO,
|
'产品' + widget + '本次到货数量超过' + overOrderBARcodeCunMap.get(widget).size() + '个订货的数量。'
|
)
|
);
|
for (String barcodeListTTT : (List<String>) overOrderBARcodeCunMap.get(widget)) {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT));
|
}
|
}
|
}
|
}
|
} else {
|
confimResultWithoutOrder();
|
}
|
try {
|
Consumable_order__c orderMain = new Consumable_order__c();
|
List<Consumable_order_details2__c> orderdetails = new List<Consumable_order_details2__c>();
|
//到货正确信息
|
orderMain.Name = '*';
|
orderMain.Order_status__c = '批准';
|
orderMain.Dealer_Info__c = accountid;
|
orderMain.Deliver_date__c = Date.today();
|
orderMain.Order_date__c = Date.today();
|
orderMain.Order_type__c = '到货';
|
orderMain.Order_ProType__c = userPro_Type;
|
if (EsetId != null && EsetId != '') {
|
orderMain.Arrive_Order__c = coc.Id;
|
}
|
orderMain.RecordTypeid = System.Label.RT_ConOrder_Arrive;
|
insert orderMain;
|
|
List<Consumable_order__c> consumable_order = [SELECT Name FROM Consumable_order__c WHERE id = :orderMain.id];
|
arriveId = orderMain.id;
|
Decimal arriveAmount = 0;
|
for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsUse) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------1------'));
|
Consumable_order_details2__c insDetails = new Consumable_order_details2__c();
|
insDetails.Id = ass.esd.Id;
|
insDetails.Consumable_Arrived_order__c = orderMain.id;
|
insDetails.Arrive_date__c = Date.today();
|
insDetails.Bar_Code__c = ass.esd.Bar_Code__c;
|
insDetails.OwnerId = UserInfo.getUserId();
|
// 更新借调信息 add by gzw 2020-0-415 start
|
if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) {
|
insDetails.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c;
|
insDetails.Agency_Transfer__c = true;
|
insDetails.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null
|
? ass.esd.Dealer_Info_text__c
|
: ass.esd.Frist_Transfer_Agency__c;
|
}
|
// 更新借调信息 add by gzw 2020-0-415 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
insDetails.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c;
|
insDetails.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null
|
? ass.esd.Dealer_Info_text__c
|
: ass.esd.Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
arriveAmount += ass.esd.Intra_Trade_List_RMB__c;
|
orderdetails.add(insDetails);
|
}
|
Integer i = 1;
|
for (ConsumableorderdetailsInfo ass : consumableInventoryUse) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------'));
|
Consumable_order_details2__c insAfterDel = new Consumable_order_details2__c();
|
String str = ('000' + i).right(4);
|
// if(str.length() == 1){
|
// str = '0' + str;
|
// }
|
insAfterDel.Name = consumable_order[0].Name + '-' + str;
|
insAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
|
if (EsetId != null && EsetId != '') {
|
insAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c;
|
} else {
|
insAfterDel.Intra_Trade_List_RMB__c = 0;
|
}
|
insAfterDel.Asset_Model_No__c = ass.Prod.Asset_Model_No__c;
|
if (EsetId != null && EsetId != '') {
|
insAfterDel.Consumable_order_minor__c = ESetId;
|
}
|
insAfterDel.Deliver_date__c = Date.today();
|
insAfterDel.Direct_Arrive_Product__c = true;
|
//TODO待确认
|
insAfterDel.Sterilization_limit__c = ass.sterilizationlimitDate;
|
insAfterDel.Consumable_Product__c = ass.Prod.id;
|
insAfterDel.Bar_Code__c = ass.barCodeNo;
|
insAfterDel.Used_account__c = accountid;
|
//TODO待确认
|
insAfterDel.SerialLotNo__c = ass.serialNoorLotNo;
|
insAfterDel.TracingCode__c = ass.tracingCodeNo;
|
|
//insAfterDel.Dealer_Arrive__c = true;
|
insAfterDel.Consumable_Arrived_order__c = orderMain.id;
|
insAfterDel.Arrive_date__c = Date.today();
|
insAfterDel.OwnerId = UserInfo.getUserId();
|
// 更新借调信息 add by gzw 2020-0-415 start
|
if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) {
|
insAfterDel.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c;
|
insAfterDel.Agency_Transfer__c = true;
|
insAfterDel.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null
|
? accountName
|
: ass.esd.Frist_Transfer_Agency__c;
|
}
|
// 更新借调信息 add by gzw 2020-0-415 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
insAfterDel.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c;
|
insAfterDel.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null
|
? accountName
|
: ass.esd.Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
arriveAmount += insAfterDel.Intra_Trade_List_RMB__c;
|
//add by rentx 2020-10-14 strat
|
//insAfterDel.ContractNo_text__c = /*ass.esd.ContractNo__c*/;
|
// tcm start
|
if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) {
|
insAfterDel.ContractNo_text__c = ass.esd.ContractNo_text__c;
|
} else {
|
insAfterDel.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c;
|
}
|
// tcm end
|
//add by rentx 2020-10-14 end
|
i++;
|
|
ins.add(insAfterDel);
|
}
|
orderMain.Arrive_total_amount__c = arriveAmount;
|
update orderMain;
|
List<Consumable_order_details2__c> updateconsumableorderdetails2 = new List<Consumable_order_details2__c>();
|
//更新明细取消时间 => 未到货取消,到货自动生成出库流程
|
List<Consumable_order_details2__c> addSaleOrderList = new List<Consumable_order_details2__c>();
|
for (Consumable_order_details2__c Cod : consumableorderdetails2Cancle) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------3------'));
|
if (Cod.Dealer_Arrive__c) {
|
if (Cod.Dealer_Shipment__c == false && Cod.Dealer_Saled__c == false) {
|
addSaleOrderList.add(Cod);
|
}
|
} else {
|
Cod.Cancellation_Date__c = Date.today();
|
Cod.Cancellation_Flag__c = true;
|
updateconsumableorderdetails2.add(Cod);
|
}
|
}
|
|
if (addSaleOrderList.size() > 0) {
|
addSaleOrderAuto(addSaleOrderList);
|
}
|
|
if (updateconsumableorderdetails2.size() > 0) {
|
update updateconsumableorderdetails2;
|
}
|
|
List<Consumable_order_details2__c> insertconsumableorderdetails2 = new List<Consumable_order_details2__c>();
|
for (Consumable_order_details2__c Cod2 : consumableorderdetails2Insert) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------'));
|
String str = ('000' + i).right(4);
|
// if(str.length() == 1){
|
// str = '0' + str;
|
// }
|
Cod2.Name = consumable_order[0].Name + '-' + str;
|
Cod2.Consumable_order_minor__c = null;
|
Cod2.Deliver_date__c = Date.today();
|
Cod2.Used_account__c = accountid;
|
Cod2.Consumable_Arrived_order__c = orderMain.id;
|
Cod2.Arrive_date__c = Date.today();
|
// 更新借调信息 add by gzw 2020-0-415 start
|
if (orderdetails2trMap.containsKey(Cod2.Bar_Code__c)) {
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4++++++' + Cod2.Frist_Storage_Agency__c));
|
Cod2.Transfer_Time__c = Cod2.Transfer_Time__c == null ? 1 : Cod2.Transfer_Time__c;
|
Cod2.Agency_Transfer__c = true;
|
Cod2.Frist_Transfer_Agency__c = Cod2.Frist_Transfer_Agency__c == null ? accountName : Cod2.Frist_Transfer_Agency__c;
|
}
|
// 更新借调信息 add by gzw 2020-0-415 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
Cod2.Agencyinfo_fromSAP__c = Cod2.Agencyinfo_fromSAP__c;
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------' + Cod2.Frist_Storage_Agency__c));
|
Cod2.Frist_Storage_Agency__c = Cod2.Frist_Storage_Agency__c == null ? accountName : Cod2.Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
insertconsumableorderdetails2.add(Cod2);
|
i++;
|
}
|
|
//return null;
|
|
if (insertconsumableorderdetails2.size() > 0) {
|
insert insertconsumableorderdetails2;
|
}
|
|
if (ins.size() > 0) {
|
insert ins;
|
}
|
if (orderdetails.size() > 0) {
|
ControllerUtil.updateOrderDetailsSatus(orderdetails);
|
}
|
//超出到货数量产品取消日期更新
|
List<Consumable_order_details2__c> needcanceldet = new List<Consumable_order_details2__c>();
|
if (cancellationProList.size() > 0) {
|
needcanceldet = [
|
SELECT Id, Cancellation_Date__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Asset_Model_No__c IN :cancellationProList
|
AND Consumable_order_minor__c = :ESetId
|
AND Dealer_Arrive__c = FALSE
|
AND Cancellation_Date__c = NULL
|
];
|
if (needcanceldet.size() > 0) {
|
for (Integer a = 0; a < needcanceldet.size(); a++) {
|
needcanceldet[a].Cancellation_Date__c = Date.today();
|
needcanceldet[a].Cancellation_Flag__c = true;
|
}
|
ControllerUtil.updateOrderDetailsSatus(needcanceldet);
|
}
|
}
|
List<Consumable_order__c> qs = new List<Consumable_order__c>();
|
qs = [
|
SELECT
|
Id,
|
Name,
|
Order_status__c,
|
Dealer_Info__c,
|
Deliver_date__c,
|
ReturnGs_Upload_Date__c,
|
Order_Reason__c,
|
Order_date__c,
|
Contract_application_decision__c,
|
Order_type__c,
|
Total_num__c,
|
OrderNumber_arrived__c,
|
Delivery_detail_count__c,
|
OrderNumber_notarrive__c
|
FROM Consumable_order__c
|
WHERE Id = :ESetId AND Dealer_Info__c = :accountid
|
];
|
if (qs.size() > 0) {
|
coc = qs[0];
|
}
|
saveFLGbln = true;
|
alertMessage = '到货完成。';
|
// Integer a = 1/0;
|
} catch (Exception e) {
|
Database.rollback(sp);
|
ApexPages.addMessages(e);
|
return null;
|
}
|
if (resultcheck.length() > 0) {
|
return null;
|
} else if (resultcheckWithoutOrder.size() > 0) {
|
return null;
|
} else {
|
return UnabletoEdit();
|
// return null;
|
}
|
}
|
|
// 返品检查,后回库
|
public integer GoodsReturnCheck() {
|
List<String> GrListIn = ParseBarCode(barcode);
|
GrList = new List<String>();
|
Map<String, String> CheckBarcodeResult = new Map<String, String>();
|
for (String Str : GrListIn) {
|
CheckBarcodeResult.put(str, 'UnFind');
|
}
|
List<Consumable_order_details2__c> BarcodeRetrunResult = [
|
SELECT
|
Id,
|
Name,
|
Intra_Trade_List_RMB__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Consumable_Product__r.Asset_Model_No__c,
|
Sterilization_limit__c,
|
Deliver_date__c,
|
Bar_Code__c,
|
Arrive_date__c,
|
Send_Date__c,
|
Consumable_order_minor__r.Name,
|
Consumable_order_minor__c,
|
Dealer_Arrive__c,
|
Guarantee_period_for_products__c,
|
CFDA_Status__c,
|
ProductPacking_list_manual__c,
|
Report_Product_Approbation__c,
|
Report_Product_Expiration__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Product_Type__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c
|
// tcm end
|
//add by rentx 2020-10-14 end
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND (Dealer_Shipment__c = TRUE
|
//AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货')
|
OR Dealer_Saled__c = TRUE)
|
AND Dealer_Info_text__c = :accountName
|
AND Bar_Code__c IN :GrListIn
|
AND (NOT Product_Type__c LIKE :userPro_Typestr)
|
AND Dealer_Returned__c = FALSE
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
ORDER BY Box_Piece__c DESC, Name
|
];
|
if (BarcodeRetrunResult.size() > 0) {
|
for (Integer i = 0; i < BarcodeRetrunResult.size(); i++) {
|
if (
|
ErrorIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c) || ExistIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c)
|
) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
String str = '产品类型[' + BarcodeRetrunResult[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(BarcodeRetrunResult[i], str));
|
ErrorIdMap.put(BarcodeRetrunResult[i].Bar_Code__c, BarcodeRetrunResult[i].Bar_Code__c);
|
}
|
}
|
}
|
AllMap.putAll(ErrorIdMap);
|
BarcodeRetrunResult = [
|
SELECT
|
Id,
|
Consumable_order_minor__c,
|
Deliver_date__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Name,
|
Bar_Code__c,
|
Arrive_date__c,
|
Dealer_Shipment__c,
|
Lose_Flag__c,
|
Dealer_Saled__c,
|
Return_reason__c,
|
Consumable_Shipment_order__c,
|
Consumable_Shipment_order__r.Name,
|
Send_date__c,
|
Consumable_Sale_order__c,
|
Consumable_Sale_order__r.Name,
|
Used_date__c,
|
SerialLotNo__c,
|
TracingCode__c,
|
Sterilization_limit__c,
|
Consumable_ZS_order__c,
|
Consumable_ZS_order__r.Name,
|
Product_OutDate__c,
|
Invoice_Date__c,
|
recordtypeid,
|
Consumable_Arrived_order__c,
|
Box_Piece__c,
|
Rrturn_count__c,
|
Intra_Trade_List_RMB__c,
|
OwnerId,
|
SummonsForDirction_det__c,
|
Order_Dealer_Info__c,
|
HospItal_Name__c,
|
Agencyinfo_fromSAP__c,
|
Frist_Storage_Agency__c,
|
Dealer_Info_text__c,
|
Used_account__c,
|
Transfer_Time__c,
|
Frist_Transfer_Agency__c,
|
Arrive_Owner_Work_Location__c,
|
Agency_Transfer__c,
|
//add by rentx 2020-10-14 start
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
//add by rentx 2020-10-14 end
|
Report_Product_Expiration__c
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
AND (Dealer_Shipment__c = TRUE
|
//AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货')
|
OR Dealer_Saled__c = TRUE
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
OR (Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Lose_Flag__c = TRUE))
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
AND Dealer_Info_text__c = :accountName
|
AND Bar_Code__c IN :GrListIn
|
AND Product_Type__c LIKE :userPro_Typestr
|
AND Dealer_Returned__c = FALSE
|
AND (Arrive_Owner_Work_Location__c = :userWorkLocation
|
OR OwnerId = :System.Label.User_OlympusSystem)
|
ORDER BY Box_Piece__c DESC, Name
|
];
|
ShowGoodsofReturnList = new List<ConsumableorderdetailsInfo>();
|
|
//返品时istinct处理
|
if (ArrType == 'ReG') {
|
BarcodeRetrunResult = getDistinctZSOrder(BarcodeRetrunResult);
|
}
|
|
for (Consumable_order_details2__c codc : BarcodeRetrunResult) {
|
if (ErrorIdMap.containsKey(codc.Bar_Code__c) || ExistIdMap.containsKey(codc.Bar_Code__c)) {
|
// 跳过已经处理的消耗品明细
|
continue;
|
} else {
|
Matcher n = Pattern.compile('[0-9]').matcher(codc.TracingCode__c);
|
if (n.find()) {
|
String str = '管理编码中有数字,请与管理员确认是否错误。';
|
ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(codc, str));
|
ErrorIdMap.put(codc.Bar_Code__c, codc.Bar_Code__c);
|
continue;
|
}
|
if (CheckBarcodeResult.containsKey(codc.Bar_Code__c)) {
|
GrList.add(codc.Bar_Code__c);
|
if (codc.Dealer_Shipment__c == true) {
|
CheckBarcodeResult.put(codc.Bar_Code__c, '已出库');
|
ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc));
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// else{
|
// CheckBarcodeResult.put( codc.Bar_Code__c, '已销售');
|
// ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) );
|
// }
|
else if (codc.Dealer_Saled__c == true) {
|
CheckBarcodeResult.put(codc.Bar_Code__c, '已销售');
|
ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc));
|
} else {
|
CheckBarcodeResult.put(codc.Bar_Code__c, '已丢失');
|
ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc));
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
} else {
|
continue;
|
}
|
}
|
}
|
|
return BarcodeRetrunResult.size();
|
}
|
|
// 单位为个的Barcode对应的出库单
|
public integer Getconsumableorderdetails2Nobox() {
|
consumableorderdetails2Nobox = new List<Consumable_order_details2__c>();
|
BarcodeCntMap.clear();
|
consumableorderdetails2Nobox = [
|
SELECT
|
Id,
|
Consumable_order_minor__c,
|
Deliver_date__c,
|
Asset_Model_No__c,
|
Consumable_Product__c,
|
Consumable_Product__r.Name,
|
Consumable_Product__r.Name__c,
|
Name,
|
Bar_Code__c,
|
Arrive_date__c,
|
Dealer_Shipment__c,
|
Dealer_Saled__c,
|
Return_reason__c,
|
Consumable_Shipment_order__c,
|
Send_date__c,
|
Consumable_Sale_order__c,
|
Used_date__c,
|
SerialLotNo__c,
|
TracingCode__c,
|
Sterilization_limit__c,
|
Consumable_ZS_order__c,
|
Consumable_ZS_order__r.Name,
|
Product_OutDate__c,
|
Invoice_Date__c,
|
recordtypeid,
|
Consumable_Arrived_order__c,
|
Box_Piece__c,
|
RemoveBox_No__c,
|
RemoveBox_date__c,
|
Rrturn_count__c,
|
Dealer_Info_text__c,
|
Arrive_Owner_Work_Location__c,
|
Intra_Trade_List_RMB__c,
|
//add by rentx 2020-10-13 start 返品时 新数据记录SAP合同号
|
ContractNo_text__c /*,ContractNo__c*/,
|
// tcm start
|
Consumable_order_minor__r.ContractNo__c,
|
// tcm end
|
Report_Product_Expiration__c
|
//add by rentx 2020-10-13 end
|
FROM Consumable_order_details2__c
|
WHERE
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// (Dealer_Shipment__c = true or Dealer_Saled__c = true)
|
(Dealer_Shipment__c = TRUE
|
OR Dealer_Saled__c = TRUE
|
OR (Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Lose_Flag__c = TRUE))
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
AND Dealer_Info_text__c = :accountName
|
AND Bar_Code__c IN :noboxBarcodeList
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
AND Dealer_Returned__c = FALSE
|
AND Box_Piece__c = '个'
|
ORDER BY Consumable_ZS_order__c, RemoveBox_No__c
|
];
|
|
AggregateResult[] results = [
|
SELECT Consumable_ZS_order__c, Bar_Code__c, count(Id) recordCount
|
FROM Consumable_order_details2__c
|
WHERE
|
Dealer_Arrive__c = TRUE
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// AND (Dealer_Shipment__c= true OR Dealer_Saled__c = true)
|
AND (Dealer_Shipment__c = TRUE
|
OR Dealer_Saled__c = TRUE
|
OR (Dealer_Shipment__c = FALSE
|
AND Dealer_Saled__c = FALSE
|
AND Lose_Flag__c = TRUE))
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
AND Dealer_Returned__c = FALSE
|
AND Bar_Code__c IN :noboxBarcodeList
|
AND Arrive_Owner_Work_Location__c = :userWorkLocation
|
AND Box_Piece__c = '个'
|
AND Dealer_Info_text__c = :accountName
|
GROUP BY Consumable_ZS_order__c, Bar_Code__c
|
];
|
|
for (AggregateResult ar : results) {
|
String key = '' + ar.get('Consumable_ZS_order__c') + ar.get('Bar_Code__c');
|
BarcodeCntMap.put(key, Integer.valueOf(ar.get('recordCount')));
|
}
|
|
return consumableorderdetails2Nobox.size();
|
}
|
|
//distinct
|
public List<Consumable_order_details2__c> getDistinctZSOrder(List<Consumable_order_details2__c> duplicates) {
|
List<Consumable_order_details2__c> distinctOrder = new List<Consumable_order_details2__c>();
|
|
for (Consumable_order_details2__c details2 : duplicates) {
|
Boolean found = false;
|
for (Consumable_order_details2__c result : distinctOrder) {
|
if (details2.Consumable_ZS_order__c == result.Consumable_ZS_order__c && details2.Bar_Code__c == result.Bar_Code__c) {
|
found = true;
|
break;
|
}
|
}
|
|
if (!found) {
|
distinctOrder.add(details2);
|
|
if (details2.Box_Piece__c == '个')
|
noboxBarcodeList.add(details2.Bar_Code__c);
|
}
|
}
|
return distinctOrder;
|
}
|
|
// Update返品明细信息
|
public Pagereference UpdateGoodsOfReturn() {
|
if (ShowGoodsofReturnList == null) {
|
GoodsReturnCheck();
|
}
|
Getconsumableorderdetails2Nobox();
|
|
Savepoint sp = Database.setSavepoint();
|
boolean hasReturnGoods = false;
|
boolean hasLoseGoods = false;
|
try {
|
if (ShowGoodsofReturnList.size() > 0 || consumableInventory.size() > 0) {
|
Consumable_order__c Return_Order_Sheet = new Consumable_order__c();
|
Return_Order_Sheet.Name = '*';
|
Return_Order_Sheet.Order_status__c = '批准';
|
Return_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId();
|
Return_Order_Sheet.ReturnGs_Upload_Date__c = Date.today();
|
Return_Order_Sheet.Order_type__c = '返品';
|
Return_Order_Sheet.RecordTypeid = System.Label.Dealer_Returned_Label;
|
Return_Order_Sheet.Order_ProType__c = userPro_Type;
|
insert Return_Order_Sheet;
|
return_Order_id = Return_Order_Sheet.id;
|
List<Consumable_order__c> consumable_order_ret = [SELECT Name FROM Consumable_order__c WHERE id = :Return_Order_Sheet.id];
|
|
//2017-07-03 到货订单
|
Consumable_order__c Arrived_Order_Sheet = new Consumable_order__c();
|
Arrived_Order_Sheet.Name = '*';
|
Arrived_Order_Sheet.Order_status__c = '批准';
|
Arrived_Order_Sheet.Order_type__c = '到货';
|
Arrived_Order_Sheet.Dealer_Info__c = accountid;
|
Arrived_Order_Sheet.RecordTypeid = System.Label.RT_ConOrder_Arrive;
|
Arrived_Order_Sheet.Order_ProType__c = userPro_Type;
|
insert Arrived_Order_Sheet;
|
List<Consumable_order__c> consumable_order_arr = [SELECT Name FROM Consumable_order__c WHERE id = :Arrived_Order_Sheet.id];
|
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// 虚拟盘点单
|
Consumable_order__c Inventory_Order_Sheet = new Consumable_order__c();
|
Inventory_Order_Sheet.Name = '*';
|
Inventory_Order_Sheet.Order_status__c = '批准';
|
Inventory_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId();
|
Inventory_Order_Sheet.Inventory_date__c = Date.today();
|
Inventory_Order_Sheet.Dealer_Info__c = accountid;
|
Inventory_Order_Sheet.ReturnGs_Upload_Date__c = Date.today();
|
Inventory_Order_Sheet.Order_type__c = '盘点';
|
Inventory_Order_Sheet.RecordTypeid = System.Label.RT_ConOrder_Inventory;
|
Inventory_Order_Sheet.Order_ProType__c = userPro_Type;
|
insert Inventory_Order_Sheet;
|
inventory_Order_id = Inventory_Order_Sheet.id;
|
List<Consumable_order__c> consumable_order_Inv = [
|
SELECT Name
|
FROM Consumable_order__c
|
WHERE id = :Inventory_Order_Sheet.id
|
];
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
|
List<Consumable_order_details2__c> codcList = new List<Consumable_order_details2__c>();
|
//新规返品对应的产品明细
|
List<Consumable_order_details2__c> codcorderdetList = new List<Consumable_order_details2__c>();
|
//返品原因,返品数量检查
|
for (ConsumableorderdetailsInfo codi : ShowGoodsofReturnList) {
|
if (
|
codi.esd.Box_Piece__c == '个' &&
|
(codi.esd.Rrturn_count__c == null ||
|
String.valueof(codi.esd.Rrturn_count__c) == '' ||
|
codi.esd.Rrturn_count__c <= 0)
|
) {
|
continue;
|
}
|
|
if (codi.esd.Return_reason__c == null || codi.esd.Return_reason__c == '') {
|
codi.esd.Return_reason__c.addError('请补充返品原因');
|
return null;
|
}
|
|
if (codi.esd.Box_Piece__c == '个' && codi.esd.Rrturn_count__c > 0) {
|
String key = '' + codi.esd.Consumable_ZS_order__c + codi.esd.Bar_Code__c;
|
Integer deliverycnt = BarcodeCntMap.get(key);
|
if (codi.esd.Rrturn_count__c > deliverycnt) {
|
codi.esd.Rrturn_count__c.addError('超出出库数量');
|
return null;
|
}
|
}
|
}
|
|
Integer tempNo = 0;
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
List<Consumable_order_details2__c> conOrderDetail2InList = new List<Consumable_order_details2__c>();
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
for (ConsumableorderdetailsInfo codi : ShowGoodsofReturnList) {
|
Consumable_order_details2__c codcorderdet = new Consumable_order_details2__c();
|
|
//单位=个
|
if (
|
codi.esd.Box_Piece__c == '个' &&
|
(codi.esd.Rrturn_count__c == null ||
|
String.valueof(codi.esd.Rrturn_count__c) == '' ||
|
codi.esd.Rrturn_count__c <= 0)
|
) {
|
continue;
|
}
|
|
if (codi.esd.Box_Piece__c == '个' && codi.esd.Rrturn_count__c > 0) {
|
hasReturnGoods = true;
|
|
Integer cnt = 1;
|
for (Consumable_order_details2__c codctmp : consumableorderdetails2Nobox) {
|
if (
|
codctmp.Consumable_ZS_order__c == codi.esd.Consumable_ZS_order__c &&
|
codctmp.Bar_Code__c == codi.esd.Bar_Code__c
|
) {
|
Consumable_order_details2__c esd = codctmp;
|
// esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
esd.Return_reason__c = codi.esd.Return_reason__c;
|
esd.Return_date__c = Date.today();
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// esd.Return_reason__c = codi.esd.Return_reason__c;
|
// esd.Return_date__c = Date.today();
|
// esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
if (
|
codi.esd.Dealer_Saled__c == false &&
|
codi.esd.Dealer_Shipment__c == false &&
|
codi.esd.Lose_Flag__c == true
|
) {
|
// esd.Lose_Flag__c = false;
|
esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id;
|
conOrderDetail2InList.add(esd);
|
hasLoseGoods = true;
|
} else {
|
// esd.Return_date__c = Date.today();
|
esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId();
|
|
//修改返品所有人
|
esd.OwnerId = UserInfo.getUserId();
|
esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return;
|
|
//Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id];
|
codcorderdet = new Consumable_order_details2__c();
|
codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4, '0');
|
codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c;
|
codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id;
|
//修改到货所有人
|
codcorderdet.OwnerId = UserInfo.getUserId();
|
codcorderdet.Arrive_date__c = Date.today();
|
codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c;
|
codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c;
|
codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c;
|
codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c;
|
codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c;
|
codcorderdet.TracingCode__c = codi.esd.TracingCode__c;
|
codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c;
|
codcorderdet.Intra_Trade_List_RMB__c = codi.esd.Intra_Trade_List_RMB__c;
|
codcorderdet.RemoveBox_No__c = codctmp.RemoveBox_No__c;
|
codcorderdet.RemoveBox_date__c = codctmp.RemoveBox_date__c;
|
codcorderdet.Box_Piece__c = codctmp.Box_Piece__c;
|
|
//add by rentx 2020-10-13 start 返品时新数据记录SAP合同号
|
// codcorderdet.ContractNo_text__c= codctmp.ContractNo__c;
|
// tcm start
|
if (String.isBlank(codctmp.Consumable_order_minor__r.ContractNo__c)) {
|
codcorderdet.ContractNo_text__c = codctmp.ContractNo_text__c;
|
} else {
|
codcorderdet.ContractNo_text__c = codctmp.Consumable_order_minor__r.ContractNo__c;
|
}
|
// tcm end
|
//add by rentx 2020-10-13 end 返品时新数据记录SAP合同号
|
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
if (hasLoseGoods) {
|
codcorderdet.loseInventory__c = true;
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
// 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商
|
codcorderdet.Used_account__c = codi.esd.Used_account__c;
|
codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c;
|
codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c;
|
codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c;
|
|
codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c;
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------1------' + codi.esd.Frist_Storage_Agency__c));
|
codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null
|
? codi.esd.Dealer_Info_text__c
|
: codi.esd.Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
codcorderdetList.add(codcorderdet);
|
codcList.add(esd);
|
|
cnt++;
|
if (cnt > codi.esd.Rrturn_count__c)
|
break;
|
}
|
}
|
} else {
|
hasReturnGoods = true;
|
//单位=盒
|
//changeinvoiceInfo(codi.esd);
|
//Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id];
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
codi.esd.Return_date__c = Date.today();
|
// codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
if (codi.esd.Dealer_Saled__c == false && codi.esd.Dealer_Shipment__c == false && codi.esd.Lose_Flag__c == true) {
|
codi.esd.Lose_Flag__c = false;
|
codi.esd.Return_reason__c = '';
|
codi.esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id;
|
conOrderDetail2InList.add(codi.esd);
|
hasLoseGoods = true;
|
} else {
|
// codi.esd.Return_date__c = Date.today();
|
codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
codi.esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId();
|
// codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id;
|
//修改返品所有人
|
codi.esd.OwnerId = UserInfo.getUserId();
|
codi.esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return;
|
codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4, '0');
|
codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c;
|
codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id;
|
//修改到货所有人
|
codcorderdet.OwnerId = UserInfo.getUserId();
|
codcorderdet.Arrive_date__c = Date.today();
|
codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c;
|
codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c;
|
codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c;
|
codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c;
|
codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c;
|
codcorderdet.TracingCode__c = codi.esd.TracingCode__c;
|
codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c;
|
codcorderdet.Intra_Trade_List_RMB__c = codi.esd.Intra_Trade_List_RMB__c;
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
if (hasLoseGoods) {
|
codcorderdet.loseInventory__c = true;
|
}
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
// 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商
|
codcorderdet.Used_account__c = codi.esd.Used_account__c;
|
codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c;
|
codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c;
|
codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c;
|
|
codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c;
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------' + codi.esd.Frist_Storage_Agency__c));
|
codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null
|
? codi.esd.Dealer_Info_text__c
|
: codi.esd.Frist_Storage_Agency__c;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
|
//add by rentx 2020-10-13 start 返品时新数据记录SAP合同号
|
// codcorderdet.ContractNo_text__c = /*codi.esd.ContractNo__c*/;
|
// tcm start
|
if (String.isBlank(codi.esd.Consumable_order_minor__r.ContractNo__c)) {
|
codcorderdet.ContractNo_text__c = codi.esd.ContractNo_text__c;
|
} else {
|
codcorderdet.ContractNo_text__c = codi.esd.Consumable_order_minor__r.ContractNo__c;
|
}
|
// tcm end
|
//add by rentx 2020-10-13 end 返品时新数据记录SAP合同号
|
|
codcorderdetList.add(codcorderdet);
|
codcList.add(codi.esd);
|
}
|
}
|
|
//明细2不存在的对应的到货订单明细 2017-07-05
|
Integer i = 1;
|
//for(ConsumableorderdetailsInfo ass : consumableInventoryUse){
|
for (ConsumableorderdetailsInfo ass : consumableInventory) {
|
hasReturnGoods = true;
|
Consumable_order_details2__c codcorderdetail = new Consumable_order_details2__c();
|
Consumable_order_details2__c retorddetail = new Consumable_order_details2__c();
|
String str = ('000' + i).right(4);
|
// if(str.length() == 1){
|
// str = '0' + str;
|
// }
|
|
if (ass.ReturnReason == null || ass.ReturnReason == '') {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请补充返品原因'));
|
return null;
|
}
|
|
//到货明细
|
codcorderdetail.Name = consumable_order_arr[0].Name + '-' + str;
|
codcorderdetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
|
codcorderdetail.Intra_Trade_List_RMB__c = null;
|
codcorderdetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c;
|
codcorderdetail.Direct_Arrive_Product__c = true;
|
codcorderdetail.Sterilization_limit__c = ass.sterilizationlimitDate;
|
codcorderdetail.Consumable_Product__c = ass.Prod.id;
|
codcorderdetail.Bar_Code__c = ass.barCodeNo;
|
codcorderdetail.SerialLotNo__c = ass.serialNoorLotNo;
|
codcorderdetail.TracingCode__c = ass.tracingCodeNo;
|
codcorderdetail.Consumable_Arrived_order__c = Arrived_Order_Sheet.id;
|
codcorderdetail.Arrive_date__c = Date.today();
|
|
//add by rentx 2020-10-14 start
|
// codcorderdetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/;
|
// tcm start
|
if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) {
|
codcorderdetail.ContractNo_text__c = ass.esd.ContractNo_text__c;
|
} else {
|
codcorderdetail.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c;
|
}
|
// tcm end
|
//add by rentx 2020-10-14 end
|
|
codcorderdetList.add(codcorderdetail);
|
|
//返品明细
|
retorddetail.Return_reason__c = ass.ReturnReason;
|
retorddetail.Return_date__c = Date.today();
|
retorddetail.ReturnGs_Uploader_ID__c = UserInfo.getUserId();
|
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start
|
// if(ass.esd.Dealer_Saled__c == false && ass.esd.Dealer_Shipment__c == false && ass.esd.Lose_Flag__c == true){
|
// retorddetail.Consumable_Inventory_order__c = Inventory_Order_Sheet.id;
|
// retorddetail.loseInventory__c = true;
|
// }
|
retorddetail.Consumable_Return_order__c = Return_Order_Sheet.id;
|
// WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end
|
|
retorddetail.Name = consumable_order_ret[0].Name + '-' + str;
|
retorddetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Return;
|
retorddetail.Intra_Trade_List_RMB__c = null;
|
retorddetail.Dealer_Info_IF__c = accountid;
|
retorddetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c;
|
retorddetail.Direct_Arrive_Product__c = true;
|
retorddetail.Sterilization_limit__c = ass.sterilizationlimitDate;
|
retorddetail.Consumable_Product__c = ass.Prod.id;
|
retorddetail.Bar_Code__c = ass.barCodeNo;
|
retorddetail.SerialLotNo__c = ass.serialNoorLotNo;
|
retorddetail.TracingCode__c = ass.tracingCodeNo;
|
retorddetail.Arrive_date__c = Date.today();
|
retorddetail.Deliver_date__c = Date.today();
|
// 追加首次入库经销商 add by gzw 2020-04-27 start
|
retorddetail.Frist_Storage_Agency__c = accountName;
|
// 追加首次入库经销商 add by gzw 2020-04-27 end
|
|
//add by rentx 2020-10-14 start
|
// retorddetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/;
|
// tcm start
|
if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) {
|
retorddetail.ContractNo_text__c = ass.esd.ContractNo_text__c;
|
} else {
|
retorddetail.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c;
|
}
|
// tcm end
|
//add by rentx 2020-10-14 end
|
|
codcorderdetList.add(retorddetail);
|
i++;
|
}
|
|
// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------end------'));
|
// return null;
|
|
if (codcList.size() > 0) {
|
ControllerUtil.updateOrderDetailsSatus(codcList);
|
//insert codcorderdetList;
|
}
|
if (codcorderdetList.size() > 0) {
|
System.debug('codcorderdetList +++++ ' + codcorderdetList);
|
insert codcorderdetList;
|
}
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start
|
if (conOrderDetail2InList.size() > 0) {
|
addInventoryDetails1(conOrderDetail2InList);
|
}
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start
|
|
if (hasReturnGoods) {
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start
|
// return ToReturnGoodsPage();
|
if (hasLoseGoods) {
|
return ToInventoryGoodsPage();
|
// return null;
|
} else {
|
return ToReturnGoodsPage();
|
// return null;
|
}
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start
|
} else {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '没有需要登录的返品'));
|
return null;
|
}
|
} else {
|
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '没有需要登录的返品'));
|
return null;
|
}
|
} catch (Exception e) {
|
Database.rollback(sp);
|
ApexPages.addMessages(e);
|
return null;
|
}
|
}
|
|
public void makeArrivedSummary() {
|
detailsSummary = new List<ConsumableorderdetailsInfo>();
|
//ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'consumableInventory ' + consumableInventory));
|
try {
|
ConsumableorderdetailsInfo arriveDdetailsSummary = null;
|
Map<String, ConsumableorderdetailsInfo> detailsSummaryMap = new Map<String, ConsumableorderdetailsInfo>();
|
for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) {
|
if (detailsSummaryMap.containsKey(ass.Prod.Id)) {
|
detailsSummaryMap.get(ass.Prod.Id).arrivedCount++;
|
detailsSummaryMap.get(ass.Prod.Id).arriveAmount += ass.esd.Intra_Trade_List_RMB__c;
|
} else {
|
arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod);
|
arriveDdetailsSummary.arrivedCount = 1;
|
arriveDdetailsSummary.arriveAmount = ass.esd.Intra_Trade_List_RMB__c;
|
detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary);
|
}
|
}
|
for (ConsumableorderdetailsInfo ass : consumableInventory) {
|
if (detailsSummaryMap.containsKey(ass.Prod.Id)) {
|
detailsSummaryMap.get(ass.Prod.Id).arrivedCount++;
|
if (EsetId != null && EsetId != '') {
|
detailsSummaryMap.get(ass.Prod.Id).arriveAmount += ass.Prod.Intra_Trade_List_RMB__c;
|
} else {
|
detailsSummaryMap.get(ass.Prod.Id).arriveAmount += 0;
|
}
|
} else {
|
arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod);
|
arriveDdetailsSummary.arrivedCount = 1;
|
if (EsetId != null && EsetId != '') {
|
arriveDdetailsSummary.arriveAmount = ass.Prod.Intra_Trade_List_RMB__c;
|
} else {
|
arriveDdetailsSummary.arriveAmount = 0;
|
}
|
detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary);
|
}
|
}
|
for (String key : detailsSummaryMap.keySet()) {
|
detailsSummary.add(detailsSummaryMap.get(key));
|
}
|
} catch (Exception e) {
|
//Database.rollback(sp);
|
throw new ControllerUtil.myException('e::' + e + ' linenumber::' + e.getLineNumber());
|
// ApexPages.addMessages(e);
|
// ApexPages.addMessages(e.getLineNumber() + ' 11111111111111111');
|
|
//return null;
|
}
|
}
|
|
//跳转到返品页面
|
public Pagereference ToReturnGoodsPage() {
|
PageReference ref = new Pagereference('/' + return_Order_id);
|
ref.setRedirect(true);
|
return ref;
|
}
|
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start
|
public Pagereference ToInventoryGoodsPage() {
|
PageReference ref = new Pagereference('/' + inventory_Order_id);
|
ref.setRedirect(true);
|
return ref;
|
}
|
// WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 end
|
|
// 跳转到到货订单明细
|
public PageReference UnabletoEdit() {
|
PageReference ref = new Pagereference('/ArriveGsDetails?EsetId=' + arriveId);
|
ref.setRedirect(true);
|
return ref;
|
}
|
|
class ConsumableorderdetailsInfo implements Comparable {
|
public Consumable_order_details2__c esd { get; set; }
|
public Product2__c Prod { get; set; }
|
public String ProductName { get; set; }
|
//public Boolean canSELECT { get; set; }
|
public String barCodeNo { get; set; }
|
public Date sterilizationlimitDate { get; set; }
|
public String serialNoorLotNo { get; set; }
|
public String tracingCodeNo { get; set; }
|
public String ReturnReason { get; set; }
|
public String oldConsumableCount { get; set; }
|
public String ErrorReason { get; set; }
|
public boolean canEdit { get; set; }
|
public Integer intMark { get; set; }
|
public Decimal arriveAmount { get; set; }
|
public Decimal arrivedCount { get; set; }
|
|
public String ReportProductExpirationDate { get; set; }
|
public ConsumableorderdetailsInfo(Consumable_order_details2__c e, string str) {
|
esd = e;
|
Prod = e.Consumable_Product__r;
|
oldConsumableCount = e.name;
|
ErrorReason = str;
|
intMark = 1;
|
if (e.Report_Product_Expiration__c != null) {
|
ReportProductExpirationDate = e.Report_Product_Expiration__c.format();
|
}
|
}
|
public ConsumableorderdetailsInfo(Consumable_order_details2__c e) {
|
canEdit = false;
|
if (e.Box_Piece__c == '盒') {
|
e.Rrturn_count__c = 1;
|
canEdit = true;
|
}
|
|
esd = e;
|
Prod = e.Consumable_Product__r;
|
oldConsumableCount = e.name;
|
if (e.Report_Product_Expiration__c != null) {
|
ReportProductExpirationDate = e.Report_Product_Expiration__c.format();
|
}
|
}
|
|
public ConsumableorderdetailsInfo(Product2__c e, List<String> barinfoL) {
|
esd = new Consumable_order_details2__c();
|
ProductName = e.Name__c;
|
Prod = e;
|
barCodeNo = barinfoL[0];
|
if (String.isNotBlank(barinfoL[1])) {
|
sterilizationlimitDate = Date.valueOf(barinfoL[1]);
|
}
|
serialNoorLotNo = barinfoL[2];
|
tracingCodeNo = barinfoL[3];
|
ReturnReason = '';
|
}
|
|
public ConsumableorderdetailsInfo(Consumable_order_details2__c e, List<String> barinfoL) {
|
esd = e;
|
Prod = e.Consumable_Product__r;
|
barCodeNo = barinfoL[0];
|
if (String.isNotBlank(barinfoL[1])) {
|
sterilizationlimitDate = Date.valueOf(barinfoL[1]);
|
}
|
serialNoorLotNo = barinfoL[2];
|
tracingCodeNo = barinfoL[3];
|
if (e.Report_Product_Expiration__c != null) {
|
ReportProductExpirationDate = e.Report_Product_Expiration__c.format();
|
}
|
}
|
public ConsumableorderdetailsInfo(Product2__c e) {
|
Prod = e;
|
}
|
// 排序
|
public Integer compareTo(Object compareTo) {
|
return null;
|
}
|
}
|
}
|