public void AddTransportationBillDetail(string billNo, IList <TransportationActBill> transportationActBillList, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(billNo, true); #region 检查状态 if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenAddDetail", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion if (transportationActBillList != null && transportationActBillList.Count > 0) { foreach (TransportationActBill transportationActBill in transportationActBillList) { TransportationActBill oldTransportationActBill = this.transportationActBillMgr.LoadTransportationActBill(transportationActBill.Id); oldTransportationActBill.CurrentBillQty = transportationActBill.CurrentBillQty; oldTransportationActBill.CurrentDiscount = transportationActBill.CurrentDiscount; TransportationBillDetail transportationBillDetail = this.transportationBillDetailMgr.TransferTransportationActBill2TransportationBillDetail(oldTransportationActBill); transportationBillDetail.Bill = oldTransportationBill; oldTransportationBill.AddTransportationBillDetail(transportationBillDetail); this.transportationBillDetailMgr.CreateTransportationBillDetail(transportationBillDetail); //扣减TransportationActBill数量和金额 this.transportationActBillMgr.ReverseUpdateTransportationActBill(null, transportationBillDetail, user); } oldTransportationBill.LastModifyDate = DateTime.Now; oldTransportationBill.LastModifyUser = user; this.UpdateTransportationBill(oldTransportationBill); } }
public void CancelTransportationBill(string billNo, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(billNo); #region 检查状态 if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenCancel", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion if (oldTransportationBill.TransportationBillDetails != null && oldTransportationBill.TransportationBillDetails.Count > 0) { foreach (TransportationBillDetail newTransportationBillDetail in oldTransportationBill.TransportationBillDetails) { TransportationBillDetail oldTransportationBillDetail = this.transportationBillDetailMgr.LoadTransportationBillDetail(newTransportationBillDetail.Id); //反向更新TransportationActBill this.transportationActBillMgr.ReverseUpdateTransportationActBill(oldTransportationBillDetail, null, user); #region 记录开票事务 /*20110422 Tag 先做标记,后期补充 * this.billTransactionMgr.RecordBillTransaction(oldTransportationBillDetail, user, true); */ #endregion } } oldTransportationBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CANCEL; oldTransportationBill.LastModifyUser = user; oldTransportationBill.LastModifyDate = DateTime.Now; this.UpdateTransportationBill(oldTransportationBill); }
public void DeleteTransportationBill(string billNo, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(billNo, true); #region 检查状态 if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenDelete", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion if (oldTransportationBill.TransportationBillDetails != null && oldTransportationBill.TransportationBillDetails.Count > 0) { foreach (TransportationBillDetail transportationBillDetail in oldTransportationBill.TransportationBillDetails) { TransportationBillDetail oldTransportationBillDetail = this.transportationBillDetailMgr.LoadTransportationBillDetail(transportationBillDetail.Id); //扣减TransportationActBill数量和金额 this.transportationActBillMgr.ReverseUpdateTransportationActBill(oldTransportationBillDetail, null, user); this.transportationBillDetailMgr.DeleteTransportationBillDetail(oldTransportationBillDetail); } } this.DeleteTransportationBill(oldTransportationBill); }
private IList <TransportationBillDetail> PopulateData(bool isChecked) { if (this.Gv_List.Rows != null && this.Gv_List.Rows.Count > 0) { IList <TransportationBillDetail> transportationBillDetailList = new List <TransportationBillDetail>(); foreach (GridViewRow row in this.Gv_List.Rows) { CheckBox checkBoxGroup = row.FindControl("CheckBoxGroup") as CheckBox; if (checkBoxGroup.Checked || !isChecked) { HiddenField hfId = row.FindControl("hfId") as HiddenField; TextBox tbQty = row.FindControl("tbQty") as TextBox; TextBox tbAmount = row.FindControl("tbAmount") as TextBox; TextBox tbDiscount = row.FindControl("tbDiscount") as TextBox; TransportationBillDetail transportationBillDetail = new TransportationBillDetail(); transportationBillDetail.Id = int.Parse(hfId.Value); transportationBillDetail.BilledQty = decimal.Parse(tbQty.Text); transportationBillDetail.Amount = decimal.Parse(tbAmount.Text); transportationBillDetail.Discount = decimal.Parse(tbDiscount.Text); transportationBillDetailList.Add(transportationBillDetail); } } return(transportationBillDetailList); } return(null); }
protected void GV_List_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { TransportationBillDetail transportationBillDetail = (TransportationBillDetail)e.Row.DataItem; TransportationOrder to = TheTransportationOrderMgr.LoadTransportationOrder(transportationBillDetail.ActBill.OrderNo); if (to != null) { Label lb_createDate = (System.Web.UI.WebControls.Label)e.Row.FindControl("lb_createDate");//运输日期 lb_createDate.Text = to.CreateDate.ToString("yyyy-MM-dd") != null?to.CreateDate.ToString("yyyy-MM-dd") : ""; Label lb_route = (System.Web.UI.WebControls.Label)e.Row.FindControl("lb_route"); //运输路线 lb_route.Text = to.TransportationRoute != null ? to.TransportationRoute.Description : ""; Label lb_pricingMethod = (System.Web.UI.WebControls.Label)e.Row.FindControl("lb_pricingMethod"); //运输方式 lb_pricingMethod.Text = to.PricingMethod != null ? to.PricingMethod : ""; Label lb_OrderNo = (System.Web.UI.WebControls.Label)e.Row.FindControl("lb_OrderNo"); //运单号码 lb_OrderNo.Text = to.OrderNo != null ? to.OrderNo : ""; } TextBox tbAmount = (TextBox)e.Row.FindControl("tbAmount"); tbAmount.Attributes["oldValue"] = tbAmount.Text; TextBox tbQty = (TextBox)e.Row.FindControl("tbQty"); TextBox tbDiscountRate = (TextBox)e.Row.FindControl("tbDiscountRate"); TextBox tbDiscount = (TextBox)e.Row.FindControl("tbDiscount"); if (transportationBillDetail.Bill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE) { tbQty.ReadOnly = true; tbAmount.ReadOnly = true; tbDiscountRate.ReadOnly = true; tbDiscount.ReadOnly = true; } /* * * 1.TransType=Transportation 价格单明细(承运商) 或 短拨费(区域)时 * a.PricingMethod=M3或KG 按数量 * b.SHIPT 按金额 * 2.TransType=WarehouseLease(固定费用) 按金额 * 3.TransType=Operation(操作费) 按数量 */ if (transportationBillDetail.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationBillDetail.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationBillDetail.ActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationBillDetail.ActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { tbQty.Attributes["onchange"] = "qtyChanged(this);"; tbQty.Attributes["onmouseup"] = "if(!readOnly)select();"; tbAmount.Attributes["onfocus"] = "this.blur();"; } else { tbQty.Attributes["onfocus"] = "this.blur();"; tbAmount.Attributes["onmouseup"] = "if(!readOnly)select();"; } } }
public void AddTransportationBillDetail(TransportationBillDetail transportationBillDetail) { if (this.TransportationBillDetails == null) { this.TransportationBillDetails = new List <TransportationBillDetail>(); } this.TransportationBillDetails.Add(transportationBillDetail); }
public void AddTransportationBillDetail(TransportationBillDetail transportationBillDetail) { if (this.TransportationBillDetails == null) { this.TransportationBillDetails = new List<TransportationBillDetail>(); } this.TransportationBillDetails.Add(transportationBillDetail); }
public void DeleteTransportationBillDetail(IList <TransportationBillDetail> transportationBillDetailList, User user) { if (transportationBillDetailList != null && transportationBillDetailList.Count > 0) { IDictionary <string, TransportationBill> cachedBillDic = new Dictionary <string, TransportationBill>(); foreach (TransportationBillDetail transportationBillDetail in transportationBillDetailList) { TransportationBillDetail oldTransportationBillDetail = this.transportationBillDetailMgr.LoadTransportationBillDetail(transportationBillDetail.Id); TransportationBill transportationBill = oldTransportationBillDetail.Bill; #region 缓存TransportationBill if (!cachedBillDic.ContainsKey(transportationBill.BillNo)) { cachedBillDic.Add(transportationBill.BillNo, transportationBill); #region 检查状态 if (transportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenDeleteDetail", transportationBill.Status, transportationBill.BillNo); } #endregion } #endregion //扣减TransportationActBill数量和金额 this.transportationActBillMgr.ReverseUpdateTransportationActBill(oldTransportationBillDetail, null, user); this.transportationBillDetailMgr.DeleteTransportationBillDetail(oldTransportationBillDetail); } #region 更新TransportationBill DateTime dateTimeNow = DateTime.Now; foreach (TransportationBill transportationBill in cachedBillDic.Values) { transportationBill.LastModifyDate = dateTimeNow; transportationBill.LastModifyUser = user; this.UpdateTransportationBill(transportationBill); } #endregion } }
public virtual void UpdateTransportationBillDetail(TransportationBillDetail entity) { entityDao.UpdateTransportationBillDetail(entity); }
public virtual void DeleteTransportationBillDetail(TransportationBillDetail entity) { entityDao.DeleteTransportationBillDetail(entity); }
public TransportationBill VoidTransportationBill(string billNo, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(billNo, true); DateTime dateTimeNow = DateTime.Now; #region ���״̬ if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenVoid", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion #region ���������˵� TransportationBill voidTransportationBill = new TransportationBill(); CloneHelper.CopyProperty(oldTransportationBill, voidTransportationBill, this.TransportationBillCloneField); voidTransportationBill.BillNo = this.numberControlMgr.GenerateNumber(BusinessConstants.CODE_PREFIX_TRANSPORTATIONBILL_RED); voidTransportationBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; if (oldTransportationBill.Discount.HasValue) { voidTransportationBill.Discount = 0 - oldTransportationBill.Discount.Value; } voidTransportationBill.ReferenceBillNo = oldTransportationBill.BillNo; voidTransportationBill.BillType = BusinessConstants.CODE_TRANSPORTATION_TRANSPORTATIONBILL_TYPE_VALUE_CANCEL; voidTransportationBill.CreateDate = dateTimeNow; voidTransportationBill.CreateUser = user; voidTransportationBill.LastModifyDate = dateTimeNow; voidTransportationBill.LastModifyUser = user; this.CreateTransportationBill(voidTransportationBill); #endregion #region ���������˵���ϸ foreach (TransportationBillDetail oldTransportationBillDetail in oldTransportationBill.TransportationBillDetails) { TransportationBillDetail voidTransportationBillDetail = new TransportationBillDetail(); CloneHelper.CopyProperty(oldTransportationBillDetail, voidTransportationBillDetail, this.TransportationBillDetailCloneField); voidTransportationBillDetail.BilledQty = 0 - oldTransportationBillDetail.BilledQty; voidTransportationBillDetail.Discount = 0 - oldTransportationBillDetail.Discount; voidTransportationBillDetail.Amount = 0 - oldTransportationBillDetail.Amount; voidTransportationBillDetail.Bill = voidTransportationBill; this.transportationBillDetailMgr.CreateTransportationBillDetail(voidTransportationBillDetail); voidTransportationBill.AddTransportationBillDetail(voidTransportationBillDetail); //�������TransportationActBill this.transportationActBillMgr.ReverseUpdateTransportationActBill(null, voidTransportationBillDetail, user); } #endregion #region ��¼��Ʊ���� /*20110422 Tag ������ǣ����ڲ��� foreach (TransportationBillDetail transportationBillDetail in oldTransportationBill.TransportationBillDetails) { this.billTransactionMgr.RecordBillTransaction(transportationBillDetail, user, true); } */ #endregion #region ����ԭ�˵� oldTransportationBill.ReferenceBillNo = voidTransportationBill.BillNo; oldTransportationBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_VOID; oldTransportationBill.LastModifyDate = dateTimeNow; oldTransportationBill.LastModifyUser = user; this.UpdateTransportationBill(oldTransportationBill); #endregion return voidTransportationBill; }
public void ReverseUpdateTransportationActBill(TransportationBillDetail oldBillDetail, TransportationBillDetail newBillDetail, User user) { if (oldBillDetail != null && newBillDetail != null && oldBillDetail.ActBill.Id != newBillDetail.ActBill.Id) { throw new TechnicalException("oldBillDetail.ActingBill.Id != newBillDetail.ActingBill.Id when ReverseUpdateActingBill"); } DateTime dateTimeNow = DateTime.Now; #region 扣减旧TransportationBillDetail的数量和金额 if (oldBillDetail != null) { //todo 校验数量、金额 TransportationActBill transportationActBill = this.LoadTransportationActBill(oldBillDetail.ActBill.Id); /* * * 1.TransType=Transportation 价格单明细(承运商) 或 短拨费(区域)时 * a.PricingMethod=M3或KG 按数量 * b.SHIPT 按金额 * 2.TransType=WarehouseLease(固定费用) 按金额 * 3.TransType=Operation(操作费) 按数量 */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { transportationActBill.BilledQty -= oldBillDetail.BilledQty; transportationActBill.BilledAmount -= oldBillDetail.Amount; if (transportationActBill.BillQty == transportationActBill.BilledQty) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } else { transportationActBill.BilledAmount -= oldBillDetail.Amount; if (transportationActBill.BilledAmount == 0) { transportationActBill.BilledQty = 0; } if (transportationActBill.BillAmount == transportationActBill.BilledAmount) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } transportationActBill.LastModifyDate = dateTimeNow; transportationActBill.LastModifyUser = user; this.UpdateTransportationActBill(transportationActBill); } #endregion #region 增加新BillDetail的数量和金额 if (newBillDetail != null) { //todo 校验数量、金额 TransportationActBill transportationActBill = this.LoadTransportationActBill(newBillDetail.ActBill.Id); EntityPreference entityPreference = this.entityPreferenceMgr.LoadEntityPreference( BusinessConstants.ENTITY_PREFERENCE_CODE_AMOUNT_DECIMAL_LENGTH); int amountDecimalLength = int.Parse(entityPreference.Value); /* * * 1.TransType=Transportation 价格单明细(承运商) 或 短拨费(区域)时 * a.PricingMethod=M3或KG 按数量 * b.SHIPT 按金额 * 2.TransType=WarehouseLease(固定费用) 按金额 * 3.TransType=Operation(操作费) 按数量 */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { #region 根据新开票数量计算开票金额 if (newBillDetail.BilledQty != (transportationActBill.BillQty - transportationActBill.BilledQty)) { //本次开票数量大于剩余数量 if ((transportationActBill.BillQty > 0 && transportationActBill.BillQty - transportationActBill.BilledQty - newBillDetail.BilledQty < 0) || (transportationActBill.BillQty < 0 && transportationActBill.BillQty - transportationActBill.BilledQty - newBillDetail.BilledQty > 0)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillQtyGeRemainQty"); } //本次开票数量小于剩余数量 newBillDetail.Amount = Math.Round( (transportationActBill.BillAmount / transportationActBill.BillQty * newBillDetail.BilledQty), amountDecimalLength, MidpointRounding.AwayFromZero); } else { //本次开票数量等于剩余数量 newBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } #endregion transportationActBill.BilledQty += newBillDetail.BilledQty; transportationActBill.BilledAmount += newBillDetail.Amount; if (transportationActBill.BillQty == transportationActBill.BilledQty) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } else { if (newBillDetail.Amount != (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { //本次开票金额大于剩余金额 if ((transportationActBill.BillAmount > 0 && transportationActBill.BillAmount - transportationActBill.BilledAmount - newBillDetail.Amount < 0) || (transportationActBill.BillAmount < 0 && transportationActBill.BillAmount - transportationActBill.BilledAmount - newBillDetail.Amount > 0)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillAmountGeRemainAmount"); } } else { //本次开票金额等于剩余金额 newBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } transportationActBill.BilledQty = 1; transportationActBill.BilledAmount += newBillDetail.Amount; if (transportationActBill.BillAmount == transportationActBill.BilledAmount) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } transportationActBill.LastModifyDate = dateTimeNow; transportationActBill.LastModifyUser = user; this.UpdateTransportationActBill(transportationActBill); } #endregion }
public virtual void DeleteTransportationBillDetail(TransportationBillDetail entity) { Delete(entity); }
public TransportationBillDetail TransferTransportationActBill2TransportationBillDetail(TransportationActBill transportationActBill) { EntityPreference entityPreference = this.entityPreferenceMgr.LoadEntityPreference( BusinessConstants.ENTITY_PREFERENCE_CODE_AMOUNT_DECIMAL_LENGTH); int amountDecimalLength = int.Parse(entityPreference.Value); TransportationBillDetail transportationBillDetail = new TransportationBillDetail(); transportationBillDetail.ActBill = transportationActBill; transportationBillDetail.TransType = transportationActBill.TransType; transportationBillDetail.Currency = transportationActBill.Currency; transportationBillDetail.IsIncludeTax = transportationActBill.IsIncludeTax; transportationBillDetail.TaxCode = transportationActBill.TaxCode; /* * * 1.TransType=Transportation �۸���ϸ�������̣� �� �̲��ѣ�����ʱ * a.PricingMethod=M3��KG ������ * b.SHIPT ����� * 2.TransType=WarehouseLease(�̶�����) ����� * 3.TransType=Operation(������) ������ */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { transportationBillDetail.UnitPrice = transportationActBill.UnitPrice; transportationBillDetail.BilledQty = transportationActBill.CurrentBillQty; transportationBillDetail.Discount = transportationActBill.CurrentDiscount; if (transportationActBill.CurrentBillQty != (transportationActBill.BillQty - transportationActBill.BilledQty)) { //���ο�Ʊ��������ʣ������ if (transportationActBill.CurrentBillQty > (transportationActBill.BillQty - transportationActBill.BilledQty)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillQtyGeRemainQty"); } //���ο�Ʊ����С��ʣ������ transportationBillDetail.Amount = Math.Round((transportationActBill.BillAmount / transportationActBill.BillQty * transportationActBill.CurrentBillQty), amountDecimalLength, MidpointRounding.AwayFromZero); } else { //���ο�Ʊ��������ʣ������ transportationBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } } else { transportationBillDetail.UnitPrice = transportationActBill.CurrentBillAmount; transportationBillDetail.BilledQty = 1; transportationBillDetail.Discount = transportationActBill.CurrentDiscount; if (transportationActBill.CurrentBillAmount != (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { //���ο�Ʊ������ʣ���� if (transportationActBill.CurrentBillAmount > (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillAmountGeRemainAmount"); } //���ο�Ʊ���С��ʣ���� transportationBillDetail.Amount = transportationActBill.CurrentBillAmount; } else { //���ο�Ʊ������ʣ���� transportationBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } } return transportationBillDetail; }
public TransportationBillDetail TransferTransportationActBill2TransportationBillDetail(TransportationActBill transportationActBill) { EntityPreference entityPreference = this.entityPreferenceMgr.LoadEntityPreference( BusinessConstants.ENTITY_PREFERENCE_CODE_AMOUNT_DECIMAL_LENGTH); int amountDecimalLength = int.Parse(entityPreference.Value); TransportationBillDetail transportationBillDetail = new TransportationBillDetail(); transportationBillDetail.ActBill = transportationActBill; transportationBillDetail.TransType = transportationActBill.TransType; transportationBillDetail.Currency = transportationActBill.Currency; transportationBillDetail.IsIncludeTax = transportationActBill.IsIncludeTax; transportationBillDetail.TaxCode = transportationActBill.TaxCode; /* * * 1.TransType=Transportation 价格单明细(承运商) 或 短拨费(区域)时 * a.PricingMethod=M3或KG 按数量 * b.SHIPT 按金额 * 2.TransType=WarehouseLease(固定费用) 按金额 * 3.TransType=Operation(操作费) 按数量 */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { transportationBillDetail.UnitPrice = transportationActBill.UnitPrice; transportationBillDetail.BilledQty = transportationActBill.CurrentBillQty; transportationBillDetail.Discount = transportationActBill.CurrentDiscount; if (transportationActBill.CurrentBillQty != (transportationActBill.BillQty - transportationActBill.BilledQty)) { //本次开票数量大于剩余数量 if (transportationActBill.CurrentBillQty > (transportationActBill.BillQty - transportationActBill.BilledQty)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillQtyGeRemainQty"); } //本次开票数量小于剩余数量 transportationBillDetail.Amount = Math.Round((transportationActBill.BillAmount / transportationActBill.BillQty * transportationActBill.CurrentBillQty), amountDecimalLength, MidpointRounding.AwayFromZero); } else { //本次开票数量等于剩余数量 transportationBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } } else { transportationBillDetail.UnitPrice = transportationActBill.CurrentBillAmount; transportationBillDetail.BilledQty = 1; transportationBillDetail.Discount = transportationActBill.CurrentDiscount; if (transportationActBill.CurrentBillAmount != (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { //本次开票金额大于剩余金额 if (transportationActBill.CurrentBillAmount > (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillAmountGeRemainAmount"); } //本次开票金额小于剩余金额 transportationBillDetail.Amount = transportationActBill.CurrentBillAmount; } else { //本次开票金额等于剩余金额 transportationBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } } return(transportationBillDetail); }
public virtual void CreateTransportationBillDetail(TransportationBillDetail entity) { entityDao.CreateTransportationBillDetail(entity); }
private IList<TransportationBillDetail> PopulateData(bool isChecked) { if (this.Gv_List.Rows != null && this.Gv_List.Rows.Count > 0) { IList<TransportationBillDetail> transportationBillDetailList = new List<TransportationBillDetail>(); foreach (GridViewRow row in this.Gv_List.Rows) { CheckBox checkBoxGroup = row.FindControl("CheckBoxGroup") as CheckBox; if (checkBoxGroup.Checked || !isChecked) { HiddenField hfId = row.FindControl("hfId") as HiddenField; TextBox tbQty = row.FindControl("tbQty") as TextBox; TextBox tbAmount = row.FindControl("tbAmount") as TextBox; TextBox tbDiscount = row.FindControl("tbDiscount") as TextBox; TransportationBillDetail transportationBillDetail = new TransportationBillDetail(); transportationBillDetail.Id = int.Parse(hfId.Value); transportationBillDetail.BilledQty = decimal.Parse(tbQty.Text); transportationBillDetail.Amount = decimal.Parse(tbAmount.Text); transportationBillDetail.Discount = decimal.Parse(tbDiscount.Text); transportationBillDetailList.Add(transportationBillDetail); } } return transportationBillDetailList; } return null; }
public void UpdateTransportationBill(TransportationBill transportationBill, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(transportationBill.BillNo, true); oldTransportationBill.Discount = transportationBill.Discount; oldTransportationBill.ExternalBillNo = transportationBill.ExternalBillNo; #region 检查状态 if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenUpdate", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion #region 更新明细 if (transportationBill.TransportationBillDetails != null && transportationBill.TransportationBillDetails.Count > 0) { foreach (TransportationBillDetail newTransportationBillDetail in transportationBill.TransportationBillDetails) { TransportationBillDetail oldTransportationBillDetail = this.transportationBillDetailMgr.LoadTransportationBillDetail(newTransportationBillDetail.Id); newTransportationBillDetail.ActBill = oldTransportationBillDetail.ActBill; newTransportationBillDetail.UnitPrice = oldTransportationBillDetail.UnitPrice; newTransportationBillDetail.Currency = oldTransportationBillDetail.Currency; newTransportationBillDetail.IsIncludeTax = oldTransportationBillDetail.IsIncludeTax; newTransportationBillDetail.TaxCode = oldTransportationBillDetail.TaxCode; /* * * 1.TransType=Transportation 价格单明细(承运商) 或 短拨费(区域)时 * a.PricingMethod=M3或KG 按数量 * b.SHIPT 按金额 * 2.TransType=WarehouseLease(固定费用) 按金额 * 3.TransType=Operation(操作费) 按数量 */ if (oldTransportationBillDetail.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (oldTransportationBillDetail.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (oldTransportationBillDetail.ActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || oldTransportationBillDetail.ActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { //反向更新TransportationActBill,会重新计算开票金额 if (oldTransportationBillDetail.BilledQty != newTransportationBillDetail.BilledQty) { this.transportationActBillMgr.ReverseUpdateTransportationActBill( oldTransportationBillDetail, newTransportationBillDetail, user); } oldTransportationBillDetail.Amount = newTransportationBillDetail.Amount; oldTransportationBillDetail.BilledQty = newTransportationBillDetail.BilledQty; oldTransportationBillDetail.Discount = newTransportationBillDetail.Discount; } else { //反向更新TransportationActBill,会重新计算开票金额 if (oldTransportationBillDetail.Amount != newTransportationBillDetail.Amount) { this.transportationActBillMgr.ReverseUpdateTransportationActBill( oldTransportationBillDetail, newTransportationBillDetail, user); } oldTransportationBillDetail.UnitPrice = newTransportationBillDetail.Amount; oldTransportationBillDetail.Amount = newTransportationBillDetail.Amount; oldTransportationBillDetail.BilledQty = 1; oldTransportationBillDetail.Discount = newTransportationBillDetail.Discount; } this.transportationBillDetailMgr.UpdateTransportationBillDetail(oldTransportationBillDetail); } } #endregion oldTransportationBill.LastModifyUser = user; oldTransportationBill.LastModifyDate = DateTime.Now; this.UpdateTransportationBill(oldTransportationBill); }
public void ReverseUpdateTransportationActBill(TransportationBillDetail oldBillDetail, TransportationBillDetail newBillDetail, User user) { if (oldBillDetail != null && newBillDetail != null && oldBillDetail.ActBill.Id != newBillDetail.ActBill.Id) { throw new TechnicalException("oldBillDetail.ActingBill.Id != newBillDetail.ActingBill.Id when ReverseUpdateActingBill"); } DateTime dateTimeNow = DateTime.Now; #region �ۼ���TransportationBillDetail�������ͽ�� if (oldBillDetail != null) { //todo У����������� TransportationActBill transportationActBill = this.LoadTransportationActBill(oldBillDetail.ActBill.Id); /* * * 1.TransType=Transportation �۸���ϸ�������̣� �� �̲��ѣ�����ʱ * a.PricingMethod=M3��KG ������ * b.SHIPT ����� * 2.TransType=WarehouseLease(�̶�����) ����� * 3.TransType=Operation(������) ������ */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { transportationActBill.BilledQty -= oldBillDetail.BilledQty; transportationActBill.BilledAmount -= oldBillDetail.Amount; if (transportationActBill.BillQty == transportationActBill.BilledQty) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } else { transportationActBill.BilledAmount -= oldBillDetail.Amount; if (transportationActBill.BilledAmount == 0) { transportationActBill.BilledQty = 0; } if (transportationActBill.BillAmount == transportationActBill.BilledAmount) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } transportationActBill.LastModifyDate = dateTimeNow; transportationActBill.LastModifyUser = user; this.UpdateTransportationActBill(transportationActBill); } #endregion #region ������BillDetail�������ͽ�� if (newBillDetail != null) { //todo У����������� TransportationActBill transportationActBill = this.LoadTransportationActBill(newBillDetail.ActBill.Id); EntityPreference entityPreference = this.entityPreferenceMgr.LoadEntityPreference( BusinessConstants.ENTITY_PREFERENCE_CODE_AMOUNT_DECIMAL_LENGTH); int amountDecimalLength = int.Parse(entityPreference.Value); /* * * 1.TransType=Transportation �۸���ϸ�������̣� �� �̲��ѣ�����ʱ * a.PricingMethod=M3��KG ������ * b.SHIPT ����� * 2.TransType=WarehouseLease(�̶�����) ����� * 3.TransType=Operation(������) ������ */ if (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_OPERATION || (transportationActBill.TransType == BusinessConstants.TRANSPORTATION_PRICELIST_DETAIL_TYPE_TRANSPORTATION && (transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_M3 || transportationActBill.PricingMethod == BusinessConstants.TRANSPORTATION_PRICING_METHOD_KG) ) ) { #region �����¿�Ʊ�������㿪Ʊ��� if (newBillDetail.BilledQty != (transportationActBill.BillQty - transportationActBill.BilledQty)) { //���ο�Ʊ��������ʣ������ if ((transportationActBill.BillQty > 0 && transportationActBill.BillQty - transportationActBill.BilledQty - newBillDetail.BilledQty < 0) || (transportationActBill.BillQty < 0 && transportationActBill.BillQty - transportationActBill.BilledQty - newBillDetail.BilledQty > 0)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillQtyGeRemainQty"); } //���ο�Ʊ����С��ʣ������ newBillDetail.Amount = Math.Round( (transportationActBill.BillAmount / transportationActBill.BillQty * newBillDetail.BilledQty), amountDecimalLength, MidpointRounding.AwayFromZero); } else { //���ο�Ʊ��������ʣ������ newBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } #endregion transportationActBill.BilledQty += newBillDetail.BilledQty; transportationActBill.BilledAmount += newBillDetail.Amount; if (transportationActBill.BillQty == transportationActBill.BilledQty) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } else { if (newBillDetail.Amount != (transportationActBill.BillAmount - transportationActBill.BilledAmount)) { //���ο�Ʊ������ʣ���� if ((transportationActBill.BillAmount > 0 && transportationActBill.BillAmount - transportationActBill.BilledAmount - newBillDetail.Amount < 0) || (transportationActBill.BillAmount < 0 && transportationActBill.BillAmount - transportationActBill.BilledAmount - newBillDetail.Amount > 0)) { throw new BusinessErrorException("TransportationActBill.Error.CurrentBillAmountGeRemainAmount"); } } else { //���ο�Ʊ������ʣ���� newBillDetail.Amount = transportationActBill.BillAmount - transportationActBill.BilledAmount; } transportationActBill.BilledQty = 1; transportationActBill.BilledAmount += newBillDetail.Amount; if (transportationActBill.BillAmount == transportationActBill.BilledAmount) { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; } else { transportationActBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE; } } transportationActBill.LastModifyDate = dateTimeNow; transportationActBill.LastModifyUser = user; this.UpdateTransportationActBill(transportationActBill); } #endregion }
public virtual void CreateTransportationBillDetail(TransportationBillDetail entity) { Create(entity); }
public virtual void UpdateTransportationBillDetail(TransportationBillDetail entity) { Update(entity); }
public TransportationBill VoidTransportationBill(string billNo, User user) { TransportationBill oldTransportationBill = this.CheckAndLoadTransportationBill(billNo, true); DateTime dateTimeNow = DateTime.Now; #region 检查状态 if (oldTransportationBill.Status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE) { throw new BusinessErrorException("TransportationBill.Error.StatusErrorWhenVoid", oldTransportationBill.Status, oldTransportationBill.BillNo); } #endregion #region 创建作废账单 TransportationBill voidTransportationBill = new TransportationBill(); CloneHelper.CopyProperty(oldTransportationBill, voidTransportationBill, this.TransportationBillCloneField); voidTransportationBill.BillNo = this.numberControlMgr.GenerateNumber(BusinessConstants.CODE_PREFIX_TRANSPORTATIONBILL_RED); voidTransportationBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE; if (oldTransportationBill.Discount.HasValue) { voidTransportationBill.Discount = 0 - oldTransportationBill.Discount.Value; } voidTransportationBill.ReferenceBillNo = oldTransportationBill.BillNo; voidTransportationBill.BillType = BusinessConstants.CODE_TRANSPORTATION_TRANSPORTATIONBILL_TYPE_VALUE_CANCEL; voidTransportationBill.CreateDate = dateTimeNow; voidTransportationBill.CreateUser = user; voidTransportationBill.LastModifyDate = dateTimeNow; voidTransportationBill.LastModifyUser = user; this.CreateTransportationBill(voidTransportationBill); #endregion #region 创建作废账单明细 foreach (TransportationBillDetail oldTransportationBillDetail in oldTransportationBill.TransportationBillDetails) { TransportationBillDetail voidTransportationBillDetail = new TransportationBillDetail(); CloneHelper.CopyProperty(oldTransportationBillDetail, voidTransportationBillDetail, this.TransportationBillDetailCloneField); voidTransportationBillDetail.BilledQty = 0 - oldTransportationBillDetail.BilledQty; voidTransportationBillDetail.Discount = 0 - oldTransportationBillDetail.Discount; voidTransportationBillDetail.Amount = 0 - oldTransportationBillDetail.Amount; voidTransportationBillDetail.Bill = voidTransportationBill; this.transportationBillDetailMgr.CreateTransportationBillDetail(voidTransportationBillDetail); voidTransportationBill.AddTransportationBillDetail(voidTransportationBillDetail); //反向更新TransportationActBill this.transportationActBillMgr.ReverseUpdateTransportationActBill(null, voidTransportationBillDetail, user); } #endregion #region 记录开票事务 /*20110422 Tag 先做标记,后期补充 * foreach (TransportationBillDetail transportationBillDetail in oldTransportationBill.TransportationBillDetails) * { * this.billTransactionMgr.RecordBillTransaction(transportationBillDetail, user, true); * } */ #endregion #region 更新原账单 oldTransportationBill.ReferenceBillNo = voidTransportationBill.BillNo; oldTransportationBill.Status = BusinessConstants.CODE_MASTER_STATUS_VALUE_VOID; oldTransportationBill.LastModifyDate = dateTimeNow; oldTransportationBill.LastModifyUser = user; this.UpdateTransportationBill(oldTransportationBill); #endregion return(voidTransportationBill); }
public IList <TransportationBill> CreateTransportationBill(IList <TransportationActBill> transportationActBillList, User user, string status, decimal discount) { if (status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE && status != BusinessConstants.CODE_MASTER_STATUS_VALUE_SUBMIT && status != BusinessConstants.CODE_MASTER_STATUS_VALUE_CLOSE) { throw new TechnicalException("status specified is not valided"); } if (transportationActBillList == null || transportationActBillList.Count == 0) { throw new BusinessErrorException("TransportationBill.Error.EmptyBillDetails"); } DateTime dateTimeNow = DateTime.Now; IList <TransportationBill> transportationBillList = new List <TransportationBill>(); foreach (TransportationActBill transportationActBill in transportationActBillList) { TransportationActBill oldTransportationActBill = this.transportationActBillMgr.LoadTransportationActBill(transportationActBill.Id); oldTransportationActBill.CurrentBillQty = transportationActBill.CurrentBillQty; oldTransportationActBill.CurrentBillAmount = transportationActBill.CurrentBillAmount; oldTransportationActBill.CurrentDiscount = transportationActBill.CurrentDiscount; TransportationBill transportationBill = null; #region 查找和待开明细的billAddress、currency一致的TransportationBillMstr foreach (TransportationBill thisTransportationBill in transportationBillList) { if (thisTransportationBill.BillAddress.Code == oldTransportationActBill.BillAddress.Code && thisTransportationBill.Currency.Code == oldTransportationActBill.Currency.Code) { transportationBill = thisTransportationBill; break; } } #endregion #region 没有找到匹配的TransportationBill,新建 if (transportationBill == null) { #region 检查权限 bool hasPermission = false; foreach (Permission permission in user.OrganizationPermission) { if (permission.Code == oldTransportationActBill.BillAddress.Party.Code) { hasPermission = true; break; } } if (!hasPermission) { throw new BusinessErrorException("TransportationBill.Create.Error.NoAuthrization", oldTransportationActBill.BillAddress.Party.Code); } #endregion #region 创建TransportationBill transportationBill = new TransportationBill(); transportationBill.BillNo = numberControlMgr.GenerateNumber(BusinessConstants.CODE_PREFIX_TRANSPORTATIONBILL); transportationBill.Status = status; transportationBill.BillAddress = oldTransportationActBill.BillAddress; transportationBill.Currency = oldTransportationActBill.Currency; transportationBill.Discount = discount; //可能有问题 transportationBill.BillType = BusinessConstants.CODE_TRANSPORTATION_TRANSPORTATIONBILL_TYPE_VALUE_NORMAL; transportationBill.CreateDate = dateTimeNow; transportationBill.CreateUser = user; transportationBill.LastModifyDate = dateTimeNow; transportationBill.LastModifyUser = user; this.CreateTransportationBill(transportationBill); transportationBillList.Add(transportationBill); #endregion } #endregion TransportationBillDetail transportationBillDetail = this.transportationBillDetailMgr.TransferTransportationActBill2TransportationBillDetail(oldTransportationActBill); transportationBillDetail.Bill = transportationBill; transportationBill.AddTransportationBillDetail(transportationBillDetail); this.transportationBillDetailMgr.CreateTransportationBillDetail(transportationBillDetail); //扣减TransportationActBill数量和金额 this.transportationActBillMgr.ReverseUpdateTransportationActBill(null, transportationBillDetail, user); } return(transportationBillList); }