/// <summary> /// 获取用户默认地址 /// </summary> /// <param name="customerId">用户Id</param> /// <param name="throwex">是否抛出错误</param> /// <returns>null 或者地址实体信息</returns> public vwCHIS_Code_Customer_AddressInfos GetUserDefaultMailAddress(int customerId, bool throwex = false, bool bAllAddr = true) { vwCHIS_Code_Customer_AddressInfos rtn = null; try { var find = _db.vwCHIS_Code_Customer_AddressInfos.FirstOrDefault(m => m.CustomerId == customerId && m.IsDefault == true); if (find != null) { rtn = find; } else { if (throwex && !bAllAddr) { throw new Exception("没有发现默认地址"); } var finds = _db.vwCHIS_Code_Customer_AddressInfos.AsNoTracking().Where(m => m.CustomerId == customerId); if (finds.Count() == 1) { rtn = finds.First(); } else { throw new Exception("没有发现任何地址信息"); } } if (rtn != null && rtn.IsLegalAddress) { return(rtn); } else { throw new Exception("找到地址信息不完整"); } } catch (Exception ex) { if (throwex) { throw ex; } } return(null); }
private async Task CalcJKTransFeeAsync(long treatId, List <vwCHIS_DoctorAdvice_Formed_Detail> formeds, List <vwCHIS_DoctorAdvice_Herbs_Detail> herbs, vwCHIS_Code_Customer_AddressInfos defaddress) { //快递费信息 var extrafees = _db.CHIS_Doctor_ExtraFee.AsNoTracking().Where(m => m.TreatId == treatId && m.TreatFeeTypeId == MPS.Fee_快递).ToList(); var toAddressId = _db.CHIS_DoctorTreat.Find(treatId)?.TransferAddressId; if (toAddressId == null) { toAddressId = defaddress?.AddressId; } if (toAddressId.HasValue) { //计算是否有剑客的药品 var bjk = formeds.Any(m => m.SourceFrom == (int)DrugSourceFrom.WebNet && m.SupplierId == MPS.SupplierId_JK) || herbs.Any(m => m.SourceFrom == (int)DrugSourceFrom.WebNet && m.SupplierId == MPS.SupplierId_JK); if (!bjk) { return; } //计算总价是否超过58 int toAreaId; decimal feeOrig; var fee = _dispensingSvr.GetTransFee(treatId, toAddressId.Value, MPS.CenterAreaId_JK, out toAreaId, out feeOrig); var jkentity = extrafees.FirstOrDefault(m => m.MailForSupplierId == MPS.SupplierId_JK); if (extrafees == null || jkentity == null) { await _db.CHIS_Doctor_ExtraFee.AddAsync(new CHIS_Doctor_ExtraFee { TreatFeeTypeId = MPS.Fee_快递, Qty = 1, FeeRemark = "健客快递费", TreatFeeOriginalPrice = feeOrig, TreatFeePrice = fee, Amount = fee, IsConfirmed = true, TreatId = treatId, MailForSupplierId = MPS.SupplierId_JK, MailFromAreaId = MPS.CenterAreaId_JK, MailToAreaId = toAreaId, MailAddressInfoId = toAddressId, ChargeStatus = 0 }); } else { if (jkentity.ChargeStatus == 0) { jkentity.TreatFeeOriginalPrice = feeOrig; jkentity.TreatFeePrice = fee; jkentity.Amount = fee; jkentity.IsConfirmed = true; jkentity.MailFromAreaId = MPS.CenterAreaId_JK; jkentity.MailToAreaId = toAreaId; jkentity.MailAddressInfoId = toAddressId; _db.Update(jkentity); } } await _db.SaveChangesAsync(); } }
/// <summary> /// 重新调整快递费 /// </summary> private async Task <IEnumerable <vwCHIS_Doctor_ExtraFee> > AdjustTransFeeAsync(long treatId, List <vwCHIS_DoctorAdvice_Formed_Detail> formeds, List <vwCHIS_DoctorAdvice_Herbs_Detail> herbs, vwCHIS_Code_Customer_AddressInfos defaddress) { //计算剑客的快递费 await CalcJKTransFeeAsync(treatId, formeds, herbs, defaddress); //重新计算总价摘要 CalcPaySumary(treatId); return(_db.vwCHIS_Doctor_ExtraFee.AsNoTracking().Where(m => m.TreatId == treatId && m.ChargeStatus == 0)); }