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);
        }
예제 #4
0
    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);
    }
예제 #5
0
    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();";
            }
        }
    }
예제 #6
0
 public void AddTransportationBillDetail(TransportationBillDetail transportationBillDetail)
 {
     if (this.TransportationBillDetails == null)
     {
         this.TransportationBillDetails = new List <TransportationBillDetail>();
     }
     this.TransportationBillDetails.Add(transportationBillDetail);
 }
예제 #7
0
 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
        }
예제 #13
0
 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;
        }
예제 #15
0
        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);
        }
예제 #16
0
 public virtual void CreateTransportationBillDetail(TransportationBillDetail entity)
 {
     entityDao.CreateTransportationBillDetail(entity);
 }
예제 #17
0
    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);
 }
예제 #21
0
 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);
        }