示例#1
0
        protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if ((e.CommandName == "CONFIRM_PAY") && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo info2 = new DebitNoteInfo();;
                        info2 = new DebitNoteInfo {
                            NoteId   = Globals.GetGenerateId(),
                            OrderId  = e.CommandArgument.ToString(),
                            Operator = ManagerHelper.GetCurrentManager().UserName,
                            Remark   = "后台" + info2.Operator + "收款成功"
                        };
                        OrderHelper.SaveDebitNote(info2);
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                    }
                    else
                    {
                        this.ShowMsg("确认订单收款失败", false);
                    }
                }
                else if (e.CommandName == "FINISH_TRADE")
                {
                    orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE);
                }
            }
        }
        protected void LbxlsClick(object sender, EventArgs e)
        {
            IList <DebitNoteInfo> pList = new List <DebitNoteInfo>();

            foreach (GridDataItem dataItem in RG_DebitNote.Items)
            {
                var cbCheck = (CheckBox)dataItem.FindControl("CB_Check");
                if (cbCheck.Checked)
                {
                    var           purchasingId = new Guid(dataItem.GetDataKeyValue("PurchasingId").ToString());
                    DebitNoteInfo priceInfo    = _debitNoteDao.GetDebitNoteInfo(purchasingId);

                    if (priceInfo != null)
                    {
                        pList.Add(priceInfo);
                    }
                }
            }
            if (pList.Count == 0)
            {
                RAM.Alert("请选择要导出的借记单!");
            }
            else
            {
                OutPutExcel(pList);
            }
        }
示例#3
0
        protected void btnConfirmPay_Click(object sender, EventArgs e)
        {
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(this.orderId);

            if ((orderInfo != null) && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
            {
                if (OrderHelper.ConfirmPay(orderInfo))
                {
                    DebitNoteInfo info2;
                    info2 = new DebitNoteInfo
                    {
                        NoteId   = Globals.GetGenerateId(),
                        OrderId  = this.orderId,
                        Operator = ManagerHelper.GetCurrentManager().UserName,
                        Remark   = "后台" + ManagerHelper.GetCurrentManager().UserName + "收款成功"
                    };
                    OrderHelper.SaveDebitNote(info2);
                    orderInfo.OnPayment();
                    this.ShowMsgAndReUrl("成功的确认了订单收款", true, "OrderDetails.aspx?OrderId=" + this.orderId + "&t=" + DateTime.Now.ToString("HHmmss"));
                }
                else
                {
                    this.ShowMsg("确认订单收款失败", false);
                }
            }
        }
示例#4
0
        /// <summary>
        /// 添加借记单和明细
        /// </summary>
        /// <param name="info"></param>
        /// <param name="debitNoteDetailList">借记单明细</param>
        public bool AddPurchaseSetAndDetail(DebitNoteInfo info, List <DebitNoteDetailInfo> debitNoteDetailList)
        {
            SqlParameter[] parms = GetDebitNotetParameters();
            parms[0].Value  = info.PurchasingId;
            parms[1].Value  = info.PurchasingNo;
            parms[2].Value  = info.CompanyId;
            parms[3].Value  = info.PresentAmount;
            parms[4].Value  = info.CreateDate;
            parms[5].Value  = info.FinishDate == DateTime.MinValue ? SqlDateTime.MinValue : info.FinishDate;
            parms[6].Value  = info.State;
            parms[7].Value  = info.WarehouseId;
            parms[8].Value  = info.Memo;
            parms[9].Value  = info.PersonResponsible;
            parms[10].Value = info.PurchaseGroupId;
            parms[11].Value = info.Title;
            parms[12].Value = info.ActivityTimeStart;
            parms[13].Value = info.ActivityTimeEnd;

            SqlParameter[] detailParms = GetDebitNoteDetailParameters();

            using (var conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    SqlHelper.ExecuteNonQuery(trans, SQL_INSERT_DEBITNOTE, parms);
                    foreach (var detailInfo in debitNoteDetailList)
                    {
                        detailParms[0].Value  = info.PurchasingId;
                        detailParms[1].Value  = detailInfo.GoodsId;
                        detailParms[2].Value  = detailInfo.GoodsName;
                        detailParms[3].Value  = detailInfo.Specification;
                        detailParms[4].Value  = detailInfo.GivingCount;
                        detailParms[5].Value  = detailInfo.ArrivalCount;
                        detailParms[6].Value  = detailInfo.Price;
                        detailParms[7].Value  = detailInfo.State;
                        detailParms[8].Value  = detailInfo.Amount;
                        detailParms[9].Value  = detailInfo.Memo;
                        detailParms[10].Value = detailInfo.Id;
                        SqlHelper.ExecuteNonQuery(trans, SQL_INSERT_DEBITNOTEDETAIL, detailParms);
                    }
                    trans.Commit();
                }
                catch (SqlException ex)
                {
                    trans.Rollback();
                    throw new ApplicationException(ex.Message);
                }
            }
            return(true);
        }
示例#5
0
        protected void btnConfirmSelPayment_Click(object sender, System.EventArgs e)
        {
            string text = "";

            if (!string.IsNullOrEmpty(base.Request["CheckBoxGroup"]))
            {
                text = base.Request["CheckBoxGroup"];
            }
            if (text.Length <= 0)
            {
                this.ShowMsg("请先选择要批量确认付款的订单", false);
                return;
            }
            string[] array = text.Trim(new char[]
            {
                ','
            }).Split(new char[]
            {
                ','
            });
            int num = 0;

            string[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                string text2 = array2[i];
                if (!string.IsNullOrEmpty(text2))
                {
                    OrderInfo orderInfo = OrderHelper.GetOrderInfo(text2);
                    if (orderInfo != null && OrderHelper.ConfirmPay(orderInfo))
                    {
                        num++;
                        DebitNoteInfo debitNoteInfo = new DebitNoteInfo();
                        debitNoteInfo.NoteId   = Globals.GetGenerateId();
                        debitNoteInfo.OrderId  = text2;
                        debitNoteInfo.Operator = ManagerHelper.GetCurrentManager().UserName;
                        debitNoteInfo.Remark   = "后台" + debitNoteInfo.Operator + "收款成功";
                        OrderHelper.SaveDebitNote(debitNoteInfo);
                        orderInfo.OnPayment();
                    }
                }
            }
            if (num > 0)
            {
                this.BindOrders();
                this.ShowMsg("成功的确认了" + num.ToString() + "个订单收款", true);
            }
            else
            {
                this.ShowMsg("确认订单收款失败", false);
            }
            this.BindOrders();
        }
示例#6
0
        public bool SaveDebitNote(DebitNoteInfo note)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(" insert into Hishop_OrderDebitNote(NoteId,OrderId,Operator,Remark) values(@NoteId,@OrderId,@Operator,@Remark)");
            System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand(stringBuilder.ToString());
            this.database.AddInParameter(sqlStringCommand, "NoteId", System.Data.DbType.String, note.NoteId);
            this.database.AddInParameter(sqlStringCommand, "OrderId", System.Data.DbType.String, note.OrderId);
            this.database.AddInParameter(sqlStringCommand, "Operator", System.Data.DbType.String, note.Operator);
            this.database.AddInParameter(sqlStringCommand, "Remark", System.Data.DbType.String, note.Remark);
            return(this.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
示例#7
0
        protected void dlstOrders_ItemCommand(object sender, DataListCommandEventArgs e)
        {
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if ((e.CommandName == "CONFIRM_PAY") && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num2       = 0;
                    int num3       = 0;
                    int groupBuyId = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo info2 = new DebitNoteInfo();

                        info2.NoteId   = Globals.GetGenerateId();
                        info2.OrderId  = e.CommandArgument.ToString();
                        info2.Operator = ManagerHelper.GetCurrentManager().UserName;
                        info2.Remark   = "后台" + info2.Operator + "收款成功";

                        OrderHelper.SaveDebitNote(info2);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int num4 = num2 + num3;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                    }
                    else
                    {
                        this.ShowMsg("确认订单收款失败", false);
                    }
                }
                else if ((e.CommandName == "FINISH_TRADE") && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    if (OrderHelper.ConfirmOrderFinish(orderInfo))
                    {
                        MemberProcessor.RemoveUserCache(orderInfo.UserId);
                        this.BindOrders();
                        DistributorsBrower.UpdateCalculationCommission(orderInfo);
                        this.ShowMsg("成功的完成了该订单", true);
                    }
                    else
                    {
                        this.ShowMsg("完成订单失败", false);
                    }
                }
            }
        }
示例#8
0
        protected void btnConfirmSelPayment_Click(object sender, EventArgs e)
        {
            string str = "";

            if (!string.IsNullOrEmpty(base.Request["CheckBoxGroup"]))
            {
                str = base.Request["CheckBoxGroup"];
            }
            if (str.Length <= 0)
            {
                this.ShowMsg("请先选择要批量确认付款的订单", false);
            }
            else
            {
                string[] strArray = str.Trim(new char[] { ',' }).Split(new char[] { ',' });
                int      num      = 0;
                foreach (string str2 in strArray)
                {
                    if (!string.IsNullOrEmpty(str2))
                    {
                        OrderInfo orderInfo = OrderHelper.GetOrderInfo(str2);
                        if ((orderInfo != null) && OrderHelper.ConfirmPay(orderInfo))
                        {
                            DebitNoteInfo info2 = new DebitNoteInfo();;
                            num++;
                            info2 = new DebitNoteInfo
                            {
                                NoteId   = Globals.GetGenerateId(),
                                OrderId  = str2,
                                Operator = ManagerHelper.GetCurrentManager().UserName,
                                Remark   = "后台" + info2.Operator + "收款成功"
                            };
                            OrderHelper.SaveDebitNote(info2);
                            orderInfo.OnPayment();
                        }
                    }
                }
                if (num > 0)
                {
                    this.BindOrders();
                    this.ShowMsg("成功的确认了" + num.ToString() + "个订单收款", true);
                }
                else
                {
                    this.ShowMsg("确认订单收款失败", false);
                }
                this.BindOrders();
            }
        }
示例#9
0
 private static Parameter[] GetDebitNotetParameters(DebitNoteInfo info)
 {
     return(new[]
     {
         new Parameter(PARM_PURCHASINGID, info.PurchasingId),
         new Parameter(PARM_PURCHASINGNO, info.PurchasingNo),
         new Parameter(PARM_COMPANYID, info.CompanyId),
         new Parameter(PARM_PRESENTAMOUNT, info.PresentAmount),
         new Parameter(PARM_CREATEDATE, info.CreateDate),
         new Parameter(PARM_FINISHDATE, info.FinishDate == DateTime.MinValue ? SqlDateTime.MinValue : info.FinishDate),
         new Parameter(PARM_STATE, info.State),
         new Parameter(PARM_WAREHOUSEID, info.WarehouseId),
         new Parameter(PARM_MEMO, info.Memo),
         new Parameter(PARM_PERSONRESPONSIBLE, info.PersonResponsible)
     });
 }
示例#10
0
        /// <summary>
        /// 根据新采购单ID获取借记单
        /// </summary>
        /// <param name="newPurchasingId"></param>
        /// <returns></returns>
        public DebitNoteInfo GetDebitNoteInfoByNewPurchasingId(Guid newPurchasingId)
        {
            const string SQL  = SQL_SELECT_DEBITNOTE + " WHERE [NewPurchasingId]=@NewPurchasingId";
            var          parm = new SqlParameter(PARM_NEWPURCHASINGID, SqlDbType.UniqueIdentifier)
            {
                Value = newPurchasingId
            };

            DebitNoteInfo info = null;

            using (var dr = SqlHelper.ExecuteReader(GlobalConfig.ERP_DB_NAME, true, SQL, parm))
            {
                if (dr.Read())
                {
                    info = ReaderDebitNote(dr);
                }
            }
            return(info);
        }
示例#11
0
        private static DebitNoteInfo ReaderDebitNote(IDataReader dr)
        {
            var info = new DebitNoteInfo
            {
                PurchasingId      = dr["PurchasingId"] == DBNull.Value ? Guid.Empty : new Guid(dr["PurchasingId"].ToString()),
                PurchasingNo      = dr["PurchasingNo"] == DBNull.Value ? string.Empty : dr["PurchasingNo"].ToString(),
                CompanyId         = dr["CompanyId"] == DBNull.Value ? Guid.Empty : new Guid(dr["CompanyId"].ToString()),
                PresentAmount     = dr["PresentAmount"] == DBNull.Value ? 0 : decimal.Parse(dr["PresentAmount"].ToString()),
                CreateDate        = dr["CreateDate"] == DBNull.Value ? DateTime.MinValue : DateTime.Parse(dr["CreateDate"].ToString()),
                FinishDate        = dr["FinishDate"] == DBNull.Value ? DateTime.MinValue : DateTime.Parse(dr["FinishDate"].ToString()),
                State             = dr["State"] == DBNull.Value ? 0 : int.Parse(dr["State"].ToString()),
                WarehouseId       = dr["WarehouseId"] == DBNull.Value ? Guid.Empty : new Guid(dr["WarehouseId"].ToString()),
                Memo              = dr["Memo"] == DBNull.Value ? string.Empty : dr["Memo"].ToString(),
                PersonResponsible = dr["PersonResponsible"] == DBNull.Value ? Guid.Empty : new Guid(dr["PersonResponsible"].ToString()),
                NewPurchasingId   = dr["NewPurchasingId"] == DBNull.Value ? Guid.Empty : new Guid(dr["NewPurchasingId"].ToString()),
                PurchaseGroupId   = dr["PurchaseGroupId"] == DBNull.Value ? (Guid?)null : new Guid(dr["PurchaseGroupId"].ToString()),
                Title             = dr["Title"] == DBNull.Value ? string.Empty : dr["Title"].ToString()
            };

            return(info);
        }
示例#12
0
        protected void btnConfirmPay_Click(object sender, System.EventArgs e)
        {
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(this.orderId);

            if (orderInfo != null && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
            {
                if (OrderHelper.ConfirmPay(orderInfo))
                {
                    DebitNoteInfo debitNoteInfo = new DebitNoteInfo();
                    debitNoteInfo.NoteId   = Globals.GetGenerateId();
                    debitNoteInfo.OrderId  = this.orderId;
                    debitNoteInfo.Operator = ManagerHelper.GetCurrentManager().UserName;
                    debitNoteInfo.Remark   = "后台" + debitNoteInfo.Operator + "收款成功";
                    OrderHelper.SaveDebitNote(debitNoteInfo);
                    orderInfo.OnPayment();
                    this.ShowMsgAndReUrl("成功的确认了订单收款", true, "OrderDetails.aspx?OrderId=" + this.orderId + "&t=" + System.DateTime.Now.ToString("HHmmss"));
                    return;
                }
                this.ShowMsg("确认订单收款失败", false);
            }
        }
示例#13
0
        /// <summary>
        /// 添加借记单和明细
        /// </summary>
        /// <param name="info"></param>
        /// <param name="debitNoteDetailList">借记单明细</param>
        public static bool AddPurchaseSetAndDetail(DebitNoteInfo info, IList <DebitNoteDetailInfo> debitNoteDetailList)
        {
            const string SQL_INSERT_DEBITNOTE       = @"
IF EXISTS(SELECT 0 FROM [lmshop_DebitNote] WHERE [PurchasingId]=@PurchasingId)
BEGIN
	UPDATE [lmshop_DebitNote] SET [PresentAmount]+=@PresentAmount WHERE [PurchasingId]=@PurchasingId
END
ELSE
BEGIN
    INSERT INTO [lmshop_DebitNote]([PurchasingId],[PurchasingNo],[CompanyId],[PresentAmount],[CreateDate],[FinishDate],[State],[WarehouseId],[Memo],[PersonResponsible]) VALUES(@PurchasingId,@PurchasingNo,@CompanyId,@PresentAmount,@CreateDate,@FinishDate,@State,@WarehouseId,@Memo,@PersonResponsible)
END
";
            const string SQL_INSERT_DEBITNOTEDETAIL = @"
IF EXISTS(SELECT 0 FROM [lmshop_DebitNoteDetail] WHERE [PurchasingId]=@PurchasingId AND [GoodsId]=@GoodsId)
BEGIN
	UPDATE [lmshop_DebitNoteDetail] SET [GivingCount]+=@GivingCount WHERE [PurchasingId]=@PurchasingId AND [GoodsId]=@GoodsId
END
ELSE
BEGIN
	INSERT INTO [lmshop_DebitNoteDetail]([PurchasingId],[GoodsId],[GoodsName],[Specification],[GivingCount],[ArrivalCount],[Price],[State],[Amount],[Memo],[ID]) VALUES(@PurchasingId,@GoodsId,@GoodsName,@Specification,@GivingCount,@ArrivalCount,@Price,@State,@Amount,@Memo,@ID)
END
";

            using (var db = DatabaseFactory.Create())
            {
                db.BeginTransaction();
                var parms = GetDebitNotetParameters(info);
                db.Execute(false, SQL_INSERT_DEBITNOTE, parms);
                foreach (var detailInfo in debitNoteDetailList)
                {
                    Parameter[] detailParms = GetDebitNoteDetailParameters(detailInfo);
                    db.Execute(false, SQL_INSERT_DEBITNOTEDETAIL, detailParms);
                }
                db.CompleteTransaction();
            }
            return(true);
        }
示例#14
0
        protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            bool      flag      = false;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if ((e.CommandName == "CONFIRM_PAY") && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num2       = 0;
                    int num3       = 0;
                    int groupBuyId = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo info2 = new DebitNoteInfo();
                        info2.NoteId   = Globals.GetGenerateId();
                        info2.OrderId  = e.CommandArgument.ToString();
                        info2.Operator = ManagerHelper.GetCurrentManager().UserName;
                        info2.Remark   = "后台" + info2.Operator + "收款成功";
                        OrderHelper.SaveDebitNote(info2);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int num4 = num2 + num3;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                    }
                    else
                    {
                        this.ShowMsg("确认订单收款失败", false);
                    }
                }
                else if ((e.CommandName == "FINISH_TRADE") && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    Dictionary <string, LineItemInfo> lineItems = orderInfo.LineItems;
                    LineItemInfo info3 = new LineItemInfo();
                    foreach (KeyValuePair <string, LineItemInfo> pair in lineItems)
                    {
                        info3 = pair.Value;
                        if ((info3.OrderItemsStatus == OrderStatus.ApplyForRefund) || (info3.OrderItemsStatus == OrderStatus.ApplyForReturns))
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        if (OrderHelper.ConfirmOrderFinish(orderInfo))
                        {
                            this.BindOrders();
                            DistributorsBrower.UpdateCalculationCommission(orderInfo, wid);
                            foreach (LineItemInfo info4 in orderInfo.LineItems.Values)
                            {
                                if (info4.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString())
                                {
                                    RefundHelper.UpdateOrderGoodStatu(orderInfo.OrderId, info4.SkuId, 5);
                                }
                            }
                            this.ShowMsg("成功的完成了该订单", true);
                        }
                        else
                        {
                            this.ShowMsg("完成订单失败", false);
                        }
                    }
                    else
                    {
                        this.ShowMsg("订单中商品有退货(款)不允许完成!", false);
                    }
                }
            }
        }
示例#15
0
 public static bool SaveDebitNote(DebitNoteInfo note)
 {
     return(new DebitNoteDao().SaveDebitNote(note));
 }
        protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            bool      flag      = false;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if ((e.CommandName == "CONFIRM_PAY") && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num2       = 0;
                    int num3       = 0;
                    int groupBuyId = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo info2 = new DebitNoteInfo();
                        info2 = new DebitNoteInfo
                        {
                            NoteId   = Globals.GetGenerateId(),
                            OrderId  = e.CommandArgument.ToString(),
                            Operator = ManagerHelper.GetCurrentManager().UserName,
                            Remark   = "后台" + info2.Operator + "收款成功"
                        };
                        OrderHelper.SaveDebitNote(info2);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int num4 = num2 + num3;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                    }
                    else
                    {
                        this.ShowMsg("确认订单收款失败", false);
                    }
                }
                else if ((e.CommandName == "FINISH_TRADE") && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    Dictionary <string, LineItemInfo> lineItems = orderInfo.LineItems;
                    LineItemInfo info3 = new LineItemInfo();
                    foreach (KeyValuePair <string, LineItemInfo> pair in lineItems)
                    {
                        info3 = pair.Value;
                        if ((info3.OrderItemsStatus == OrderStatus.ApplyForRefund) || (info3.OrderItemsStatus == OrderStatus.ApplyForReturns))
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        if (OrderHelper.ConfirmOrderFinish(orderInfo))
                        {
                            this.BindOrders();
                            this.myNotifier.updateAction = UpdateAction.OrderUpdate;
                            this.myNotifier.actionDesc   = "订单已完成";
                            if (orderInfo.PayDate.HasValue)
                            {
                                this.myNotifier.RecDateUpdate = orderInfo.PayDate.Value;
                            }
                            else
                            {
                                this.myNotifier.RecDateUpdate = DateTime.Today;
                            }
                            this.myNotifier.DataUpdated += new StatisticNotifier.DataUpdatedEventHandler(this.myEvent.Update);
                            this.myNotifier.UpdateDB();
                            this.ShowMsg("成功的完成了该订单", true);
                        }
                        else
                        {
                            this.ShowMsg("完成订单失败", false);
                        }
                    }
                    else
                    {
                        this.ShowMsg("订单中商品有退货(款)不允许完成!", false);
                    }
                }
            }
        }
示例#17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="purDics"></param>
        /// <param name="dicGoods"></param>
        /// <param name="purchaseSetList"></param>
        /// <param name="msg"></param>
        public bool CreatePurchasing(Dictionary <PurchasingInfo, IList <PurchasingDetailInfo> > purDics, Dictionary <string, Guid> dicGoods,
                                     IList <PurchaseSetInfo> purchaseSetList, out string msg)
        {
            if (dicGoods == null || dicGoods.Count == 0)
            {
                msg = string.Empty;
                return(true);
            }

            using (var ts = new TransactionScope(TransactionScopeOption.Required))
            {
                foreach (KeyValuePair <PurchasingInfo, IList <PurchasingDetailInfo> > keyValue in purDics)
                {
                    var pInfo = keyValue.Key;
                    IList <PurchasingDetailInfo> plist = keyValue.Value;

                    IList <PurchasingDetailInfo> plist2 = plist.Where(w => w.PurchasingGoodsType != (int)PurchasingGoodsType.Gift).ToList();
                    //如果赠送方式为总数量赠送时使用  key 主商品ID  value 额外赠送
                    var dics           = new Dictionary <string, int>();    //需赠送
                    var sendDics       = new Dictionary <string, int>();    //现返已赠送
                    var debitExtraDics = new Dictionary <string, int>();    //借计单已送
                    var addDetailsList = new List <PurchasingDetailInfo>(); //添加赠品
                    #region [现返]
                    //处理原理:
                    //赠品数量=原采购数量/(买几个+送几个)*送几个
                    //购买数量=原采购数量-赠品数量
                    foreach (var pdInfo in plist2)
                    {
                        if (!dicGoods.ContainsKey(pdInfo.GoodsName))
                        {
                            continue;
                        }
                        var             goodsBaseInfo   = dicGoods[pdInfo.GoodsName];
                        PurchaseSetInfo purchaseSetInfo = purchaseSetList.FirstOrDefault(w => w.GoodsId == goodsBaseInfo && pInfo.WarehouseID == w.WarehouseId && pInfo.PurchasingFilialeId == w.HostingFilialeId);
                        if (purchaseSetInfo == null)
                        {
                            continue;
                        }
                        IList <PurchasePromotionInfo> ppList = _purchasePromotionManager.GetPurchasePromotionList(purchaseSetInfo.PromotionId, purchaseSetInfo.GoodsId, purchaseSetInfo.WarehouseId, purchaseSetInfo.HostingFilialeId,
                                                                                                                  (int)PurchasePromotionType.Back);
                        PurchasePromotionInfo ppInfo = ppList.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Now);
                        if (ppInfo != null)
                        {
                            #region  新增
                            if (!ppInfo.IsSingle)  //按商品总数量进行赠送
                            {
                                if (!dics.ContainsKey(pdInfo.GoodsName))
                                {
                                    var dataList = plist2.Where(act => act.GoodsName == pdInfo.GoodsName).OrderByDescending(act => act.PlanQuantity).ToList();
                                    //余数
                                    var extra = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) % (ppInfo.BuyCount + ppInfo.GivingCount);
                                    if (extra == ppInfo.BuyCount)
                                    {
                                        dataList[0].PlanQuantity += ppInfo.GivingCount;
                                    }
                                    else
                                    {
                                        //应赠送次数
                                        int actquantity = extra % (ppInfo.BuyCount + ppInfo.GivingCount);
                                        if (actquantity >= ((ppInfo.BuyCount + ppInfo.GivingCount) / float.Parse("2.0")))
                                        {
                                            dataList[0].PlanQuantity = dataList[0].PlanQuantity + (ppInfo.BuyCount + ppInfo.GivingCount) - actquantity;
                                        }
                                    }
                                    //总商品赠送商品总数
                                    var sumTotal = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) * ppInfo.GivingCount / (ppInfo.BuyCount + ppInfo.GivingCount);
                                    dics.Add(pdInfo.GoodsName, sumTotal);
                                    if (dics[pdInfo.GoodsName] > 0)
                                    {
                                        foreach (var item in dataList.OrderByDescending(act => act.PlanQuantity))
                                        {
                                            if (dics[item.GoodsName] == 0)
                                            {
                                                continue;
                                            }
                                            var count = dics[item.GoodsName] - Convert.ToInt32(item.PlanQuantity);
                                            if (count > 0)  //赠品数>购买数
                                            {
                                                item.Price = 0;
                                                item.PurchasingGoodsType = (int)PurchasingGoodsType.Gift;
                                                item.RealityQuantity     = 0;
                                                dics[item.GoodsName]     = count;
                                            }
                                            else if (count < 0)  //赠送数小于采购数
                                            {
                                                addDetailsList.Add(new PurchasingDetailInfo
                                                {
                                                    PurchasingGoodsID   = Guid.NewGuid(),
                                                    PurchasingID        = item.PurchasingID,
                                                    GoodsID             = item.GoodsID,
                                                    GoodsName           = item.GoodsName,
                                                    GoodsCode           = item.GoodsCode,
                                                    Specification       = item.Specification,
                                                    CompanyID           = item.CompanyID,
                                                    Price               = 0,
                                                    PlanQuantity        = dics[item.GoodsName],
                                                    PurchasingGoodsType = (int)PurchasingGoodsType.Gift,
                                                    RealityQuantity     = 0,
                                                    State               = item.State,
                                                    Description         = "",
                                                    Units               = item.Units,
                                                    SixtyDaySales       = item.SixtyDaySales,
                                                    ThirtyDaySales      = item.ThirtyDaySales,
                                                    ElevenDaySales      = item.ElevenDaySales,
                                                    CPrice              = 0
                                                });
                                                item.RealityQuantity = 0;
                                                item.PlanQuantity    = Math.Abs(count);
                                                dics[item.GoodsName] = 0;
                                            }
                                            else   //赠送数=采购数
                                            {
                                                item.Price = 0;
                                                item.PurchasingGoodsType = (int)PurchasingGoodsType.Gift;
                                                item.RealityQuantity     = 0;
                                                item.CPrice          = 0;
                                                dics[item.GoodsName] = 0;
                                            }
                                        }
                                    }
                                }
                            }
                            else  //按单光度
                            {
                                //应赠余数
                                var actquantity = pdInfo.PlanQuantity % (ppInfo.BuyCount + ppInfo.GivingCount);
                                if (actquantity > 0)
                                {
                                    if (actquantity >= ((ppInfo.BuyCount + ppInfo.GivingCount) / float.Parse("2.0")))
                                    {
                                        pdInfo.PlanQuantity = pdInfo.PlanQuantity + (ppInfo.BuyCount + ppInfo.GivingCount) - actquantity;
                                    }
                                }
                                int pQuantity = int.Parse(pdInfo.PlanQuantity.ToString(CultureInfo.InvariantCulture));
                                //赠品数量=原采购数量/(买几个+送几个)*送几个
                                int quantity = pQuantity / (ppInfo.BuyCount + ppInfo.GivingCount) * ppInfo.GivingCount;
                                if (quantity > 0)
                                {
                                    var oldPurchasingDetailInfo = plist.FirstOrDefault(w => w.PurchasingGoodsID == pdInfo.PurchasingGoodsID);
                                    if (oldPurchasingDetailInfo != null)
                                    {
                                        //购买数量=原采购数量-赠品数量
                                        oldPurchasingDetailInfo.PlanQuantity -= (quantity);
                                    }

                                    var purchasingDetailInfo = plist.FirstOrDefault(w => w.GoodsID == pdInfo.GoodsID && w.PurchasingGoodsType == (int)PurchasingGoodsType.Gift);
                                    if (purchasingDetailInfo != null)
                                    {
                                        //在原赠品数量累加
                                        purchasingDetailInfo.PlanQuantity += (quantity);
                                    }
                                    else
                                    {
                                        purchasingDetailInfo = new PurchasingDetailInfo
                                        {
                                            PurchasingGoodsID   = Guid.NewGuid(),
                                            PurchasingID        = pInfo.PurchasingID,
                                            GoodsID             = pdInfo.GoodsID,
                                            GoodsName           = pdInfo.GoodsName,
                                            GoodsCode           = pdInfo.GoodsCode,
                                            Specification       = pdInfo.Specification,
                                            CompanyID           = pdInfo.CompanyID,
                                            Price               = 0,
                                            PlanQuantity        = (quantity),
                                            PurchasingGoodsType = (int)PurchasingGoodsType.Gift,
                                            RealityQuantity     = 0,
                                            State               = 0,
                                            Description         = "",
                                            Units               = pdInfo.Units,
                                            SixtyDaySales       = pdInfo.SixtyDaySales,
                                            ThirtyDaySales      = pdInfo.ThirtyDaySales,
                                            ElevenDaySales      = pdInfo.ElevenDaySales
                                        };
                                        addDetailsList.Add(purchasingDetailInfo);
                                    }
                                }
                            }
                            #endregion
                        }
                    }
                    if (addDetailsList.Count > 0)
                    {
                        foreach (var purchasingDetailInfo in addDetailsList)
                        {
                            purchasingDetailInfo.Price = 0;
                            plist.Add(purchasingDetailInfo);
                        }
                    }

                    #endregion

                    #region [非现返生成借记单]
                    var debitNoteDetailList = new List <DebitNoteDetailInfo>();
                    foreach (var pdInfo in plist2)
                    {
                        if (!dicGoods.ContainsKey(pdInfo.GoodsName))
                        {
                            continue;
                        }
                        var             goodsBaseInfo   = dicGoods[pdInfo.GoodsName];
                        PurchaseSetInfo purchaseSetInfo = purchaseSetList.FirstOrDefault(w => w.GoodsId == goodsBaseInfo && w.HostingFilialeId == pInfo.PurchasingFilialeId);
                        if (purchaseSetInfo != null)
                        {
                            IList <PurchasePromotionInfo> ppList = _purchasePromotionManager.GetPurchasePromotionList(purchaseSetInfo.PromotionId, purchaseSetInfo.GoodsId, purchaseSetInfo.WarehouseId, purchaseSetInfo.HostingFilialeId,
                                                                                                                      (int)PurchasePromotionType.NoBack);
                            PurchasePromotionInfo ppInfo = ppList.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Now);
                            if (ppInfo != null)
                            {
                                int pQuantity = Convert.ToInt32(pdInfo.PlanQuantity);
                                //赠品数量=原采购数量/买几个*送几个
                                int quantity = pQuantity / ppInfo.BuyCount * ppInfo.GivingCount;
                                #region  新增
                                //按商品总数量进行赠送
                                if (!ppInfo.IsSingle)
                                {
                                    if (!dics.ContainsKey(pdInfo.GoodsName))
                                    {
                                        var dataList = plist2.Where(act => act.GoodsName == pdInfo.GoodsName).ToList();
                                        //单光度赠送商品总数
                                        var total = dataList.Sum(act => (Convert.ToInt32(act.PlanQuantity) / (ppInfo.BuyCount + ppInfo.GivingCount)));
                                        //总商品赠送商品总数
                                        var sumTotal = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) / (ppInfo.BuyCount + ppInfo.GivingCount);
                                        if (sumTotal > total)
                                        {
                                            dics.Add(pdInfo.GoodsName, sumTotal);
                                        }
                                    }
                                }
                                #endregion
                                if (quantity > 0)
                                {
                                    var debitNoteDetailInfo = new DebitNoteDetailInfo
                                    {
                                        PurchasingId  = pInfo.PurchasingID,
                                        GoodsId       = pdInfo.GoodsID,
                                        GoodsName     = pdInfo.GoodsName,
                                        Specification = pdInfo.Specification,
                                        GivingCount   = quantity,
                                        ArrivalCount  = 0,
                                        Price         = pdInfo.Price,
                                        State         = 0,
                                        Amount        = quantity * pdInfo.Price,
                                        Memo          = "",
                                        Id            = Guid.NewGuid()
                                    };
                                    if (debitExtraDics.ContainsKey(pdInfo.GoodsName))
                                    {
                                        debitExtraDics[pdInfo.GoodsName] = debitExtraDics[pdInfo.GoodsName] + quantity;
                                    }
                                    else
                                    {
                                        debitExtraDics.Add(pdInfo.GoodsName, quantity);
                                    }
                                    debitNoteDetailList.Add(debitNoteDetailInfo);
                                }
                            }
                        }
                    }

                    #endregion

                    #region 处理额外赠送商品
                    foreach (var dic in dics)
                    {
                        KeyValuePair <string, int> dic1 = dic;
                        if (sendDics.ContainsKey(dic.Key))
                        {
                            var total = dic1.Value - sendDics[dic.Key];
                            if (total > 0)
                            {
                                var data = plist.Where(act => act.GoodsName == dic1.Key && act.PurchasingGoodsType != (int)PurchasingGoodsType.Gift)
                                           .OrderByDescending(act => act.PlanQuantity).ToList();
                                var data2 = plist.Where(act => act.GoodsName == dic1.Key && act.PurchasingGoodsType == (int)PurchasingGoodsType.Gift)
                                            .OrderByDescending(act => act.PlanQuantity);
                                for (int i = 0; i < total; i++)
                                {
                                    var purchasingDetailInfo = data2.FirstOrDefault(w => w.GoodsID == plist[i].GoodsID);
                                    if (purchasingDetailInfo != null)
                                    {
                                        data[i].PlanQuantity -= 1;
                                        purchasingDetailInfo.PlanQuantity += 1;
                                    }
                                }
                            }
                        }
                        if (debitExtraDics.ContainsKey(dic.Key))
                        {
                            var total = dic1.Value - debitExtraDics[dic.Key];
                            if (total > 0)
                            {
                                var data = debitNoteDetailList.Where(act => act.GoodsName == dic1.Key).OrderByDescending(act => act.GivingCount).ToList();
                                for (int i = 0; i < total; i++)
                                {
                                    data[i].GivingCount += 1;
                                    data[i].Amount       = data[i].Price * data[i].GivingCount;
                                }
                            }
                        }
                    }
                    #endregion

                    var originalDetails = _purchasingDetailManager.Select(pInfo.PurchasingID);

                    _purchasingDetailManager.Delete(pInfo.PurchasingID);
                    _purchasing.DeleteById(pInfo.PurchasingID);

                    //pInfo.IsOut = true;
                    //插入采购单
                    _purchasing.PurchasingInsert(pInfo);
                    //保存采购单明细
                    foreach (var item in plist.Where(act => act.Price == 0 && act.PurchasingGoodsType != (int)PurchasingGoodsType.Gift))
                    {
                        var info = plist.FirstOrDefault(act => act.GoodsName == item.GoodsName && act.Price > 0);
                        item.Price = info != null?info.Price:0;
                    }

                    var ids = new List <Guid>();
                    if (originalDetails.Count > 0)
                    {
                        foreach (var purchasingDetailInfo in originalDetails)
                        {
                            var info = plist.FirstOrDefault(act =>
                                                            act.GoodsID == purchasingDetailInfo.GoodsID &&
                                                            act.PurchasingGoodsType == purchasingDetailInfo.PurchasingGoodsType);
                            if (info != null)
                            {
                                purchasingDetailInfo.PlanQuantity += info.PlanQuantity;
                                ids.Add(info.PurchasingGoodsID);
                            }
                            _purchasingDetailManager.Insert(purchasingDetailInfo);
                        }
                    }
                    foreach (var item in plist.Where(act => !ids.Contains(act.PurchasingGoodsID)))
                    {
                        _purchasingDetailManager.Insert(item);
                    }

                    //添加借记单
                    if (debitNoteDetailList.Count > 0)
                    {
                        IDebitNote debitNoteManager = new DebitNote(Environment.GlobalConfig.DB.FromType.Write);
                        var        debitNoteInfo    = new DebitNoteInfo
                        {
                            PurchasingId      = pInfo.PurchasingID,
                            PurchasingNo      = pInfo.PurchasingNo,
                            CompanyId         = pInfo.CompanyID,
                            PresentAmount     = debitNoteDetailList.Sum(w => w.Amount),
                            CreateDate        = DateTime.Now,
                            FinishDate        = DateTime.MinValue,
                            State             = (int)DebitNoteState.ToPurchase,
                            WarehouseId       = pInfo.WarehouseID,
                            Memo              = "",
                            PersonResponsible = pInfo.PersonResponsible,
                            NewPurchasingId   = Guid.Empty
                        };
                        debitNoteManager.AddPurchaseSetAndDetail(debitNoteInfo, debitNoteDetailList);
                    }
                }
                ts.Complete();
            }
            msg = string.Empty;
            return(true);
        }
示例#18
0
文件: SendInfo.cs 项目: zwkjgs/XKD
        protected void rptList_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
        {
            bool      flag      = false;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if (e.CommandName == "CONFIRM_PAY" && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num      = 0;
                    int num2     = 0;
                    int arg_49_0 = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo debitNoteInfo = new DebitNoteInfo();
                        debitNoteInfo.NoteId   = Globals.GetGenerateId();
                        debitNoteInfo.OrderId  = e.CommandArgument.ToString();
                        debitNoteInfo.Operator = ManagerHelper.GetCurrentManager().UserName;
                        debitNoteInfo.Remark   = "后台" + debitNoteInfo.Operator + "收款成功";
                        OrderHelper.SaveDebitNote(debitNoteInfo);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int arg_BE_0 = num + num2;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                        return;
                    }
                    this.ShowMsg("确认订单收款失败", false);
                    return;
                }
                else if (e.CommandName == "FINISH_TRADE" && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    System.Collections.Generic.Dictionary <string, LineItemInfo> lineItems = orderInfo.LineItems;
                    LineItemInfo lineItemInfo = new LineItemInfo();
                    foreach (System.Collections.Generic.KeyValuePair <string, LineItemInfo> current in lineItems)
                    {
                        lineItemInfo = current.Value;
                        if (lineItemInfo.OrderItemsStatus == OrderStatus.ApplyForRefund || lineItemInfo.OrderItemsStatus == OrderStatus.ApplyForReturns)
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        if (OrderHelper.ConfirmOrderFinish(orderInfo))
                        {
                            this.BindOrders();
                            DistributorsBrower.UpdateCalculationCommission(orderInfo);
                            foreach (LineItemInfo current2 in orderInfo.LineItems.Values)
                            {
                                if (current2.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString())
                                {
                                    RefundHelper.UpdateOrderGoodStatu(orderInfo.OrderId, current2.SkuId, 5, current2.ID);
                                }
                            }
                            this.ShowMsg("成功的完成了该订单", true);
                            return;
                        }
                        this.ShowMsg("完成订单失败", false);
                        return;
                    }
                    else
                    {
                        this.ShowMsg("订单中商品有退货(款)不允许完成!", false);
                    }
                }
            }
        }
示例#19
0
            /// <summary>
            /// 循环遍历子商品的销售和采购信息
            /// </summary>
            /// <param name="p"></param>
            /// <param name="childGoodsSaleAll"></param>
            /// <param name="warehouseId"></param>
            /// <param name="hostingFilialeId"></param>
            /// <param name="avgStockDays"></param>
            /// <param name="nextStockDate"></param>
            /// <param name="taskType"></param>
            /// <param name="step"></param>
            /// <param name="nextPurchasingDate"></param>
            private static void OperationSaleAndPurchasing(PurchasingGoods p, IEnumerable <ChildGoodsSalePurchasing> childGoodsSaleAll, Guid warehouseId, Guid hostingFilialeId,
                                                           int avgStockDays, DateTime nextStockDate, TaskType taskType, int step, DateTime nextPurchasingDate, List <ERP.SAL.WMS.StockStatisticsDTO> stocks)
            {
                //如果传过来的仓库ID是空,说明是指定仓库
                if (warehouseId == Guid.Empty)
                {
                    warehouseId = p.WarehouseId;
                }
                //产生一个采购单ID
                var purchasingId     = Guid.NewGuid();
                var tempPurchasingId = DataAccessor.GetSamePurchasingId(p.CompanyId, p.PersonResponsible, warehouseId, hostingFilialeId);

                if (tempPurchasingId != Guid.Empty)
                {
                    purchasingId = tempPurchasingId;
                }

                //是否有子商品采购信息
                var    hasChildGoodsPurchasingInfo = false;
                var    isException  = false;
                string purchasingNo = DataAccessor.GetCode(BaseInfo.CodeType.PH);
                List <ChildGoodsSalePurchasing> childGoodsSalePurchasingList = childGoodsSaleAll.ToList();
                List <Guid> goodsIdOrRealGoodsIdList  = childGoodsSalePurchasingList.Select(w => w.GoodsId).Distinct().ToList();
                Dictionary <Guid, GoodsInfo> dicGoods = _goodsCenterSao.GetGoodsBaseListByGoodsIdOrRealGoodsIdList(goodsIdOrRealGoodsIdList);
                //如果赠送方式为总数量赠送时使用  key 主商品ID  value 额外赠送
                var dics = new Dictionary <Guid, int>();

                //循环遍历子商品的销售和采购信息
                foreach (var sale in childGoodsSaleAll)
                {
#if debug
                    Console.WriteLine("规格:{0},销售一:{1},销售二:{2},销售三:{3},平均销售:{4},增长率:{5}", sale.Specification, sale.FirstNumberOneStockUpSale, sale.FirstNumberTwoStockUpSale, sale.FirstNumberThreeStockUpSale, sale.WeightedAverageSaleQuantity, sale.SaleInCrease);
#endif

                    //计算计划采购数量
                    if (taskType == TaskType.Warning)
                    {
                        if (step == 4)
                        {
                            sale.PlanPurchasingquantity = sale.WeightedAverageSaleQuantity * ((nextStockDate - DateTime.Now).Days + 1 + p.ArrivalDays);
                        }
                        else
                        {
                            sale.PlanPurchasingquantity = sale.WeightedAverageSaleQuantity * (avgStockDays + p.ArrivalDays);
                        }
                    }
                    else if (taskType == TaskType.Routine)
                    {
                        if (step == 3)
                        {
                            sale.PlanPurchasingquantity = sale.WeightedAverageSaleQuantity * ((nextPurchasingDate - DateTime.Now).Days + (avgStockDays * 2) + 1 + p.ArrivalDays);
                        }
                        else
                        {
                            sale.PlanPurchasingquantity = sale.WeightedAverageSaleQuantity * ((nextStockDate - DateTime.Now).Days + 1 + p.ArrivalDays);
                        }
                    }

                    //计算当前的采购商品数量,包含扣除的已经采购完成和部分采购完成和赠品类型
                    sale.SubtractPurchasingQuantity = DataAccessor.GetSumPurchasingQuantity(sale.GoodsId, warehouseId, hostingFilialeId);

                    //计算当前仓库存货数量
                    var info = stocks.FirstOrDefault(act => act.RealGoodsId == sale.GoodsId);
                    sale.NonceWarehouseStockQuantity = info != null ? info.CurrentStock + info.UppingQuantity - info.RequireQuantity : 0;


#if debug
                    Console.WriteLine("预计采购:{0},采购中的数量:{1},当前库存数量:{2}", sale.PlanPurchasingquantity, sale.SubtractPurchasingQuantity, sale.NonceWarehouseStockQuantity);
                    if (sale.GoodsId == "D41FBCB0-DB51-447D-8F7C-9767D612EC2B".ToGuid())
                    {
                        sale.IsNull();
                    }
#endif

                    //判断实际的采购数量大于零时,新增一条采购记录
                    if (sale.RealityNeedPurchasingQuantity > 0)
                    {
                        //如果是预警报备,计划采购还是到下一次周期的报备
                        if (taskType == TaskType.Warning)
                        {
                            sale.PlanPurchasingquantity = sale.WeightedAverageSaleQuantity * ((nextStockDate - DateTime.Now).Days + 1 + p.ArrivalDays);
                        }

#if debug
                        Console.WriteLine("实际采购数量:{0}", sale.RealityNeedPurchasingQuantity);
#endif

                        //判断是否有最低库存,如果有要判断采购是否满足最低库存
                        var minStockQuantity = DataAccessor.GetGoodsStockMinQuantity(sale.GoodsId, p.WarehouseId);
                        if (minStockQuantity > 0)
                        {
                            if (sale.RealityNeedPurchasingQuantity < minStockQuantity)
                            {
                                var newPlanPurchasingquantity = (minStockQuantity - sale.RealityNeedPurchasingQuantity) + sale.PlanPurchasingquantity;
                                sale.PlanPurchasingquantity = newPlanPurchasingquantity;
                            }
                        }

                        //采购数
                        int purchasingQuantity = 0;

                        #region [现返]
                        //处理原理:
                        //赠品数量=原采购数量/(买几个+送几个)*送几个
                        //购买数量=原采购数量-赠品数量
                        int zpquantity = 0;
                        var goodsInfo  = new GoodsInfo();
                        if (dicGoods != null)
                        {
                            bool hasKey = dicGoods.ContainsKey(sale.GoodsId);
                            if (hasKey)
                            {
                                goodsInfo = dicGoods.FirstOrDefault(w => w.Key == sale.GoodsId).Value;
                            }
                        }
                        IList <PurchasePromotionInfo> ppList = DataAccessor.GetPurchasePromotionList(goodsInfo.GoodsId, (int)PurchasePromotionType.Back, hostingFilialeId);
                        PurchasePromotionInfo         ppInfo = ppList.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 17:29:59"));
                        if (ppInfo != null)
                        {
                            //赠品数量=原采购数量/(买几个+送几个)*送几个
                            zpquantity = (int)sale.RealityNeedPurchasingQuantity / (ppInfo.BuyCount + ppInfo.GivingCount) * ppInfo.GivingCount;
                            if (zpquantity > 0)
                            {
                                int xfQuantity = (int)sale.RealityNeedPurchasingQuantity - zpquantity; //现返类型实际要采购多少数量
                                purchasingQuantity = (int)GetBoxNumber(p.PackQuantity, xfQuantity);    //加入箱数采购算法计算采购数
                            }
                        }
                        else
                        {
                            purchasingQuantity = (int)GetBoxNumber(p.PackQuantity, (int)sale.RealityNeedPurchasingQuantity);//加入箱数采购算法计算采购数
                        }
                        #endregion

                        #region [非现返生成借记单]

                        var addedExtra = new List <Guid>();
                        //借记单明细
                        var debitNoteDetailList = new List <DebitNoteDetailInfo>();
                        IList <PurchasePromotionInfo> ppList2 = DataAccessor.GetPurchasePromotionList(goodsInfo.GoodsId, (int)PurchasePromotionType.NoBack, hostingFilialeId);
                        PurchasePromotionInfo         ppInfo2 = ppList2.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 17:29:59"));
                        if (ppInfo2 != null)
                        {
                            int pQuantity = (int)sale.RealityNeedPurchasingQuantity;
                            //赠品数量=原采购数量/买几个*送几个
                            int fxfzpquantity = pQuantity / ppInfo2.BuyCount * ppInfo2.GivingCount;
                            int extra         = addedExtra.Contains(goodsInfo.GoodsId)
                                        ? 0
                                        : dics[goodsInfo.GoodsId];
                            if (!addedExtra.Contains(goodsInfo.GoodsId))
                            {
                                addedExtra.Add(goodsInfo.GoodsId);
                            }
                            if (fxfzpquantity > 0 || extra > 0)
                            {
                                var debitNoteDetailInfo = new DebitNoteDetailInfo
                                {
                                    PurchasingId  = purchasingId,
                                    GoodsId       = sale.GoodsId,
                                    GoodsName     = p.GoodsName,
                                    Specification = sale.Specification,
                                    GivingCount   = fxfzpquantity + extra,
                                    ArrivalCount  = 0,
                                    Price         = p.Price,
                                    State         = 0,
                                    Amount        = fxfzpquantity * p.Price,
                                    Memo          = "",
                                    Id            = Guid.NewGuid()
                                };
                                debitNoteDetailList.Add(debitNoteDetailInfo);
                            }
                            if (debitNoteDetailList.Count > 0)
                            {
                                var debitNoteInfo = new DebitNoteInfo
                                {
                                    PurchasingId      = purchasingId,
                                    PurchasingNo      = purchasingNo,
                                    CompanyId         = p.CompanyId,
                                    PresentAmount     = debitNoteDetailList.Sum(w => w.Amount),
                                    CreateDate        = DateTime.Now,
                                    FinishDate        = DateTime.MinValue,
                                    State             = (int)DebitNoteState.ToPurchase,
                                    WarehouseId       = p.WarehouseId,
                                    Memo              = "",
                                    PersonResponsible = p.PersonResponsible,
                                    NewPurchasingId   = Guid.Empty
                                };
                                var dnInfo = DataAccessor.GetDebitNoteInfo(purchasingId); //是否已经有借记单
                                if (dnInfo != null && dnInfo.PurchasingId != Guid.Empty)  //已经有借记单则修改借记单
                                {
                                    var dnlist = DataAccessor.GetDebitNoteDetailList(purchasingId);
                                    if (dnlist != null && dnlist.Any(act => act.GoodsId == sale.GoodsId))
                                    {
                                        DataAccessor.UpdateDebitNoteDetail(purchasingId, sale.GoodsId, fxfzpquantity);
                                    }
                                    else
                                    {
                                        foreach (var dinfo in debitNoteDetailList)
                                        {
                                            DataAccessor.AddDebitNoteDetail(dinfo);
                                        }
                                    }
                                }
                                else
                                {
                                    DataAccessor.AddPurchaseSetAndDetail(debitNoteInfo, debitNoteDetailList);
                                }
                            }
                        }
                        #endregion

                        var purchasingGoodsId = Guid.Empty;
                        if (tempPurchasingId != Guid.Empty)
                        {
                            purchasingGoodsId = DataAccessor.GetSamePurchasingGoodsId(tempPurchasingId, sale.GoodsId, sale.Specification, sale.HostingFilialeId);
                        }
                        if (purchasingGoodsId != Guid.Empty)
                        {
                            DataAccessor.UpdatePurchasingGoodsPlanQuantity(purchasingGoodsId, purchasingQuantity);

                            if (zpquantity > 0)//如果有现反赠品则添加一条采购明细记录
                            {
                                var salesinfo = DataAccessor.GetChildGoodsSale(sale.GoodsId, warehouseId, hostingFilialeId, DateTime.Now);
                                DataAccessor.InsertPurchasingDetail(Guid.NewGuid(), (tempPurchasingId == Guid.Empty ? purchasingId : tempPurchasingId), sale.GoodsId,
                                                                    p.GoodsName, p.Units, p.GoodsCode, sale.Specification,
                                                                    p.CompanyId, 0, zpquantity, 0, 0, string.Empty,
                                                                    sale.WeightedAverageSaleQuantity / 30,
                                                                    zpquantity, p.StockingDays + p.ArrivalDays, isException,
                                                                    salesinfo.SixtyDaySales, salesinfo.ThirtyDaySales,
                                                                    (salesinfo.ElevenDaySales / 11), (int)PurchasingGoodsType.Gift);
                            }
                        }
                        else
                        {
                            if (sale.RealityNeedPurchasingQuantity > 0)
                            {
                                var salesinfo = DataAccessor.GetChildGoodsSale(sale.GoodsId, warehouseId, hostingFilialeId, DateTime.Now);

                                if (salesinfo.GoodsId != Guid.Empty)
                                {
                                    //当前活动报备异常
                                    if ((salesinfo.ElevenDaySales / 11) >= ((salesinfo.ThirtyDaySales / 30) * 1.8))
                                    {
                                        isException = true;
                                    }
                                    //历史活动报备异常
                                    if ((salesinfo.ElevenDaySales / 11) * 1.6 <= (salesinfo.ThirtyDaySales / 30) || (salesinfo.ElevenDaySales / 11) * 1.6 <= (salesinfo.SixtyDaySales / 30))
                                    {
                                        isException = true;
                                    }
                                }

                                //插入具体的商品采购信息记录

                                if (zpquantity > 0)//如果有现反赠品则添加一条采购明细记录
                                {
                                    DataAccessor.InsertPurchasingDetail(Guid.NewGuid(), (tempPurchasingId == Guid.Empty ? purchasingId : tempPurchasingId), sale.GoodsId, p.GoodsName, p.Units, p.GoodsCode, sale.Specification,
                                                                        p.CompanyId, 0, zpquantity, 0, 0, string.Empty, sale.WeightedAverageSaleQuantity / 30,
                                                                        zpquantity, p.StockingDays + p.ArrivalDays, isException, salesinfo.SixtyDaySales,
                                                                        salesinfo.ThirtyDaySales, (salesinfo.ElevenDaySales / 11), (int)PurchasingGoodsType.Gift);//赠品
                                }
                                DataAccessor.InsertPurchasingDetail(Guid.NewGuid(), purchasingId, sale.GoodsId, p.GoodsName, p.Units, p.GoodsCode,
                                                                    sale.Specification, p.CompanyId, p.Price, purchasingQuantity, 0, 0,
                                                                    string.Empty, sale.WeightedAverageSaleQuantity / 30,
                                                                    purchasingQuantity, p.StockingDays + p.ArrivalDays, isException,
                                                                    salesinfo.SixtyDaySales, salesinfo.ThirtyDaySales,
                                                                    (salesinfo.ElevenDaySales / 11), (int)PurchasingGoodsType.NoGift);//非赠品

                                hasChildGoodsPurchasingInfo = true;

#if debug
                                Console.WriteLine("新增采购单成功,单据ID:{0}", purchasingId);
#endif
                            }
                        }
                    }
                }

                //插入采购单记录
                if (hasChildGoodsPurchasingInfo && tempPurchasingId == Guid.Empty)
                {
                    if (step == 3)
                    {
                        nextPurchasingDate.AddDays(avgStockDays * 2);
                    }

                    DataAccessor.InsertPurchasing(purchasingId, purchasingNo, p.CompanyId, p.CompanyName, hostingFilialeId, warehouseId, hostingFilialeId, 0, 1, DateTime.Now, DateTime.Now,
                                                  "[自动报备]", Guid.Empty, nextStockDate.AddDays(p.ArrivalDays), nextPurchasingDate, isException, p.PersonResponsible);
                }
            }
        // 采购中
        protected void IbnPurchasing_Click(object sender, EventArgs eventArgs)
        {
            bool isHave      = false;
            var  codeManager = new CodeManager();

            foreach (GridDataItem dataItem in RG_DebitNote.Items)
            {
                var purchasingId      = new Guid(dataItem.GetDataKeyValue("PurchasingId").ToString());
                var personResponsible = new Guid(dataItem.GetDataKeyValue("PersonResponsible").ToString());
                var cbCheck           = (CheckBox)dataItem.FindControl("CB_Check");
                if (cbCheck.Checked)
                {
                    using (var ts = new TransactionScope(TransactionScopeOption.Required))
                    {
                        isHave = true;
                        _debitNoteDao.UpdateDebitNoteStateByPurchasingId(purchasingId, (int)DebitNoteState.Purchasing);
                        //生成采购单
                        DebitNoteInfo debitNoteInfo = _debitNoteDao.GetDebitNoteInfo(purchasingId) ?? new DebitNoteInfo();
                        IList <DebitNoteDetailInfo> debitNoteDetailList = _debitNoteDao.GetDebitNoteDetailList(purchasingId);
                        CompanyCussentInfo          companyCussentInfo  = CompanyCussentList.FirstOrDefault(w => w.CompanyId == debitNoteInfo.CompanyId);
                        //var warehouseInfo = WarehouseManager.Get(debitNoteInfo.WarehouseId);
                        PersonnelInfo  personnelInfo     = PersonnelList.FirstOrDefault(w => w.PersonnelId == debitNoteInfo.PersonResponsible) ?? new PersonnelInfo(null);
                        PurchasingInfo oldPurchasingInfo = _purchasing.GetPurchasingById(purchasingId);
                        var            realName          = CurrentSession.Personnel.Get().RealName;
                        var            filialeId         = string.IsNullOrWhiteSpace(debitNoteInfo.PurchasingNo) || debitNoteInfo.PurchasingNo == "-"?FilialeManager.GetHeadList().First(ent => ent.Name.Contains("可得")).ID
                            : _purchasing.GetPurchasingList(debitNoteInfo.PurchasingNo).FilialeID;
                        var pInfo = new PurchasingInfo
                        {
                            PurchasingID    = Guid.NewGuid(),
                            PurchasingNo    = codeManager.GetCode(CodeType.PH),
                            CompanyID       = debitNoteInfo.CompanyId,
                            CompanyName     = companyCussentInfo == null ? "" : companyCussentInfo.CompanyName,
                            FilialeID       = filialeId,
                            WarehouseID     = debitNoteInfo.WarehouseId,
                            PurchasingState = (int)PurchasingState.Purchasing,
                            PurchasingType  = (int)PurchasingType.Custom,
                            StartTime       = DateTime.Now,
                            EndTime         = DateTime.MaxValue,
                            //Description = "[采购类别:{0}赠品借记单][对应采购单号" + debitNoteInfo.PurchasingNo + "]" + CurrentSession.Personnel.Get().RealName,
                            Description         = string.Format("[采购类别:{0},赠品借记单对应采购单号{1};采购人:{2}]", EnumAttribute.GetKeyName(PurchasingType.Custom), debitNoteInfo.PurchasingNo, realName),
                            PmId                = personnelInfo.PersonnelId,
                            PmName              = personnelInfo.RealName,
                            ArrivalTime         = oldPurchasingInfo.ArrivalTime,
                            PersonResponsible   = personResponsible,
                            PurchasingFilialeId = filialeId
                        };
                        IList <PurchasingDetailInfo> purchasingDetailList = new List <PurchasingDetailInfo>();
                        if (debitNoteDetailList.Count > 0)
                        {
                            List <Guid> goodsIdOrRealGoodsIdList  = debitNoteDetailList.Select(w => w.GoodsId).Distinct().ToList();
                            Dictionary <Guid, GoodsInfo> dicGoods = _goodsCenterSao.GetGoodsBaseListByGoodsIdOrRealGoodsIdList(goodsIdOrRealGoodsIdList);
                            if (dicGoods != null && dicGoods.Count > 0)
                            {
                                foreach (var debitNoteDetailInfo in debitNoteDetailList)
                                {
                                    bool hasKey = dicGoods.ContainsKey(debitNoteDetailInfo.GoodsId);
                                    if (hasKey)
                                    {
                                        GoodsInfo goodsBaseInfo = dicGoods.FirstOrDefault(w => w.Key == debitNoteDetailInfo.GoodsId).Value;
                                        // 获取商品的60、30、11天销量
                                        var purchasingDetailInfo = _purchasingDetail.GetChildGoodsSale(debitNoteDetailInfo.GoodsId, debitNoteInfo.WarehouseId, DateTime.Now, pInfo.PurchasingFilialeId) ?? new PurchasingDetailInfo();
                                        var durchasingDetailInfo = new PurchasingDetailInfo
                                        {
                                            PurchasingID        = pInfo.PurchasingID,
                                            PurchasingGoodsID   = Guid.NewGuid(),
                                            GoodsID             = debitNoteDetailInfo.GoodsId,
                                            GoodsName           = debitNoteDetailInfo.GoodsName,
                                            GoodsCode           = goodsBaseInfo.GoodsCode,
                                            Specification       = debitNoteDetailInfo.Specification,
                                            CompanyID           = pInfo.CompanyID,
                                            Price               = debitNoteDetailInfo.Price,
                                            PlanQuantity        = debitNoteDetailInfo.GivingCount,
                                            RealityQuantity     = 0,
                                            State               = 0,
                                            Description         = "",
                                            Units               = goodsBaseInfo.Units,
                                            PurchasingGoodsType = (int)PurchasingGoodsType.Gift,
                                            SixtyDaySales       = purchasingDetailInfo.SixtyDaySales,
                                            ThirtyDaySales      = purchasingDetailInfo.ThirtyDaySales,
                                            ElevenDaySales      = purchasingDetailInfo.ElevenDaySales == 0 ? 0 : purchasingDetailInfo.ElevenDaySales, // 11 //日均销量(11天)
                                            CPrice              = debitNoteDetailInfo.Price
                                        };
                                        purchasingDetailList.Add(durchasingDetailInfo);
                                    }
                                }
                            }
                        }
                        if (purchasingDetailList.Count > 0)
                        {
                            _debitNoteDao.UpdateDebitNoteNewPurchasingIdByPurchasingId(purchasingId, pInfo.PurchasingID);
                            _purchasing.PurchasingInsert(pInfo);
                            _purchasing.PurchasingUpdateIsOut(pInfo.PurchasingID);
                            //报备管理生成采购单操作记录添加
                            WebControl.AddOperationLog(personnelInfo.PersonnelId, personnelInfo.RealName, pInfo.PurchasingID, pInfo.PurchasingNo,
                                                       OperationPoint.ReportManage.DebitToAddPurchasingList.GetBusinessInfo(), string.Empty);
                            var purchasingDetailManager = new PurchasingDetailManager(_purchasingDetail, _purchasing);
                            purchasingDetailManager.Save(purchasingDetailList);
                        }
                        ts.Complete();
                    }
                }
            }
            if (isHave == false)
            {
                RAM.Alert("未勾选借记单!");
            }
            else
            {
                RAM.ResponseScripts.Add("setTimeout(function(){ refreshGrid(); }, " + GlobalConfig.PageAutoRefreshDelayTime + ");");
            }
        }
示例#21
0
        private static void PurchasingPromotion(Dictionary <PurchasingInfo, List <PurchasingDetailInfo> > dictPurchase, Dictionary <Guid, GoodsInfo> dicGoods, IList <PurchasingGoods> pg)
        {
            if (dictPurchase.Count > 0)
            {
                //IList<PurchaseSetInfo> purchaseSetList = _purchaseSetBll.GetPurchaseSetList();
                foreach (KeyValuePair <PurchasingInfo, List <PurchasingDetailInfo> > keyValuePair in dictPurchase)
                {
                    keyValuePair.Key.PurchasingNo = DataAccessor.GetCode(BaseInfo.CodeType.PH);
                    var pInfo = keyValuePair.Key;
                    IList <PurchasingDetailInfo> plist = keyValuePair.Value;
                    //pInfo.IsOut = true;
                    _purchasing.PurchasingInsert(pInfo);

                    //非赠品采购商品
                    IList <PurchasingDetailInfo> plist2 = plist.Where(w => w.PurchasingGoodsType != (int)PurchasingGoodsType.Gift).ToList();

                    #region [现返]
                    //如果赠送方式为总数量赠送时使用  key 主商品ID  value 额外赠送
                    var dics           = new Dictionary <string, int>();    //需赠送
                    var debitExtraDics = new Dictionary <string, int>();    //借计单已送
                    var addDetailsList = new List <PurchasingDetailInfo>(); //添加赠品
                                                                            //处理原理:
                                                                            //赠品数量=原采购数量/(买几个+送几个)*送几个
                                                                            //购买数量=原采购数量-赠品数量
                    foreach (var pdInfo in plist2)
                    {
                        var goodsBaseInfo = new GoodsInfo();
                        if (dicGoods != null)
                        {
                            bool hasKey = dicGoods.ContainsKey(pdInfo.GoodsID);
                            if (hasKey)
                            {
                                goodsBaseInfo = dicGoods.FirstOrDefault(w => w.Key == pdInfo.GoodsID).Value;
                            }
                        }
                        PurchasingGoods purchaseSetInfo = pg.FirstOrDefault(w => w.GoodsId == goodsBaseInfo.GoodsId && w.WarehouseId == pInfo.WarehouseID);
                        if (purchaseSetInfo == null)
                        {
                            continue;
                        }
                        IList <PurchasePromotionInfo> ppList = _purchasePromotionBll.GetPurchasePromotionList(purchaseSetInfo.PromotionId, purchaseSetInfo.GoodsId, purchaseSetInfo.WarehouseId, pInfo.PurchasingFilialeId, (int)PurchasePromotionType.Back);
                        PurchasePromotionInfo         ppInfo = ppList.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Now);
                        if (ppInfo != null)
                        {
                            #region  新增
                            if (!ppInfo.IsSingle)  //按商品总数量进行赠送
                            {
                                if (!dics.ContainsKey(goodsBaseInfo.GoodsName))
                                {
                                    var dataList = plist2.Where(act => act.GoodsName == goodsBaseInfo.GoodsName).OrderByDescending(act => act.PlanQuantity).ToList();
                                    //余数
                                    var extra = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) % (ppInfo.BuyCount + ppInfo.GivingCount);
                                    if (extra == ppInfo.BuyCount)
                                    {
                                        dataList[0].PlanQuantity += ppInfo.GivingCount;
                                    }
                                    else
                                    {
                                        //应赠送次数
                                        int actquantity = extra % (ppInfo.BuyCount + ppInfo.GivingCount);
                                        if (actquantity >= (ppInfo.BuyCount / float.Parse("2.0")))
                                        {
                                            dataList[0].PlanQuantity = dataList[0].PlanQuantity + (ppInfo.BuyCount + ppInfo.GivingCount) - actquantity;
                                        }
                                    }
                                    //总商品赠送商品总数
                                    var sumTotal = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) / (ppInfo.BuyCount + ppInfo.GivingCount);
                                    dics.Add(goodsBaseInfo.GoodsName, sumTotal);
                                    if (dics[goodsBaseInfo.GoodsName] > 0)
                                    {
                                        foreach (var item in dataList.OrderByDescending(act => act.PlanQuantity))
                                        {
                                            var count = dics[item.GoodsName] - Convert.ToInt32(item.PlanQuantity);
                                            if (count > 0)  //赠品数>购买数
                                            {
                                                item.Price = 0;
                                                item.PurchasingGoodsType = (int)PurchasingGoodsType.Gift;
                                                item.RealityQuantity     = 0;
                                                dics[item.GoodsName]     = count;
                                            }
                                            else if (count < 0)
                                            {
                                                addDetailsList.Add(new PurchasingDetailInfo
                                                {
                                                    PurchasingGoodsID   = Guid.NewGuid(),
                                                    PurchasingID        = item.PurchasingID,
                                                    GoodsID             = item.GoodsID,
                                                    GoodsName           = item.GoodsName,
                                                    GoodsCode           = item.GoodsCode,
                                                    Specification       = item.Specification,
                                                    CompanyID           = item.CompanyID,
                                                    Price               = 0,
                                                    PlanQuantity        = dics[item.GoodsName],
                                                    PurchasingGoodsType = (int)PurchasingGoodsType.Gift,
                                                    RealityQuantity     = 0,
                                                    State               = item.State,
                                                    Description         = "",
                                                    Units               = item.Units,
                                                    SixtyDaySales       = item.SixtyDaySales,
                                                    ThirtyDaySales      = item.ThirtyDaySales,
                                                    ElevenDaySales      = item.ElevenDaySales,
                                                    CPrice              = 0
                                                });
                                                item.RealityQuantity = 0;
                                                item.PlanQuantity    = Math.Abs(count);
                                                dics[item.GoodsName] = 0;
                                            }
                                            else
                                            {
                                                item.Price = 0;
                                                item.PurchasingGoodsType = (int)PurchasingGoodsType.Gift;
                                                item.RealityQuantity     = 0;
                                                item.CPrice          = 0;
                                                dics[item.GoodsName] = 0;
                                            }
                                            if (dics[item.GoodsName] == 0)
                                            {
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            else  //按单光度
                            {
                                //应赠余数
                                var actquantity = pdInfo.PlanQuantity % (ppInfo.BuyCount + ppInfo.GivingCount);
                                if (actquantity > 0)
                                {
                                    if (actquantity >= ((ppInfo.BuyCount + ppInfo.GivingCount) / float.Parse("2.0")))
                                    {
                                        pdInfo.PlanQuantity = pdInfo.PlanQuantity + (ppInfo.BuyCount + ppInfo.GivingCount) - actquantity;
                                    }
                                }
                                int pQuantity = int.Parse(pdInfo.PlanQuantity.ToString(CultureInfo.InvariantCulture));
                                //赠品数量=原采购数量/(买几个+送几个)*送几个
                                int quantity = pQuantity / (ppInfo.BuyCount + ppInfo.GivingCount) * ppInfo.GivingCount;
                                if (quantity > 0)
                                {
                                    var oldPurchasingDetailInfo = plist.FirstOrDefault(w => w.PurchasingGoodsID == pdInfo.PurchasingGoodsID);
                                    if (oldPurchasingDetailInfo != null)
                                    {
                                        //购买数量=原采购数量-赠品数量
                                        oldPurchasingDetailInfo.PlanQuantity -= (quantity);
                                    }

                                    var purchasingDetailInfo = plist.FirstOrDefault(w => w.GoodsID == pdInfo.GoodsID && w.PurchasingGoodsType == (int)PurchasingGoodsType.Gift);
                                    if (purchasingDetailInfo != null)
                                    {
                                        //在原赠品数量累加
                                        purchasingDetailInfo.PlanQuantity += (quantity);
                                    }
                                    else
                                    {
                                        purchasingDetailInfo = new PurchasingDetailInfo
                                        {
                                            PurchasingGoodsID   = Guid.NewGuid(),
                                            PurchasingID        = pInfo.PurchasingID,
                                            GoodsID             = pdInfo.GoodsID,
                                            GoodsName           = pdInfo.GoodsName,
                                            GoodsCode           = pdInfo.GoodsCode,
                                            Specification       = pdInfo.Specification,
                                            CompanyID           = pdInfo.CompanyID,
                                            Price               = 0,
                                            PlanQuantity        = (quantity),
                                            PurchasingGoodsType = (int)PurchasingGoodsType.Gift,
                                            RealityQuantity     = 0,
                                            State               = 0,
                                            Description         = "",
                                            Units               = pdInfo.Units,
                                            SixtyDaySales       = pdInfo.SixtyDaySales,
                                            ThirtyDaySales      = pdInfo.ThirtyDaySales,
                                            ElevenDaySales      = pdInfo.ElevenDaySales
                                        };
                                        addDetailsList.Add(purchasingDetailInfo);
                                    }
                                }
                            }
                            #endregion
                        }
                    }
                    #endregion

                    #region [非现返生成借记单]

                    var debitNoteDetailList = new List <DebitNoteDetailInfo>();
                    foreach (var pdInfo in plist2)
                    {
                        var goodsBaseInfo = new GoodsInfo();
                        if (dicGoods != null)
                        {
                            bool hasKey = dicGoods.ContainsKey(pdInfo.GoodsID);
                            if (hasKey)
                            {
                                goodsBaseInfo = dicGoods.FirstOrDefault(w => w.Key == pdInfo.GoodsID).Value;
                            }
                        }
                        PurchasingGoods purchaseSetInfo = pg.FirstOrDefault(w => w.GoodsId == goodsBaseInfo.GoodsId && w.WarehouseId == pInfo.WarehouseID);
                        if (purchaseSetInfo != null)
                        {
                            IList <PurchasePromotionInfo> ppList = _purchasePromotionBll.GetPurchasePromotionList(purchaseSetInfo.PromotionId, purchaseSetInfo.GoodsId, purchaseSetInfo.WarehouseId, pInfo.PurchasingFilialeId, (int)PurchasePromotionType.NoBack);
                            PurchasePromotionInfo         ppInfo = ppList.FirstOrDefault(w => w.GivingCount > 0 && w.StartDate <= DateTime.Now && w.EndDate >= DateTime.Now);
                            if (ppInfo != null)
                            {
                                int pQuantity = Convert.ToInt32(pdInfo.PlanQuantity);
                                //赠品数量=原采购数量/买几个*送几个
                                #region  新增
                                //按商品总数量进行赠送
                                if (!ppInfo.IsSingle && dicGoods != null)
                                {
                                    if (!dics.ContainsKey(goodsBaseInfo.GoodsName))
                                    {
                                        var dataList = plist2.Where(act => act.GoodsName == goodsBaseInfo.GoodsName).ToList();
                                        //单光度赠送商品总数
                                        var total = dataList.Sum(act => (Convert.ToInt32(act.PlanQuantity) / (ppInfo.BuyCount + ppInfo.GivingCount)));
                                        //总商品赠送商品总数
                                        var sumTotal = dataList.Sum(act => Convert.ToInt32(act.PlanQuantity)) / (ppInfo.BuyCount + ppInfo.GivingCount);
                                        if (sumTotal > total)
                                        {
                                            dics.Add(goodsBaseInfo.GoodsName, sumTotal);
                                        }
                                    }
                                }
                                #endregion
                                int quantity = pQuantity / ppInfo.BuyCount * ppInfo.GivingCount;
                                if (quantity > 0)
                                {
                                    var debitNoteDetailInfo = new DebitNoteDetailInfo
                                    {
                                        PurchasingId  = pInfo.PurchasingID,
                                        GoodsId       = pdInfo.GoodsID,
                                        GoodsName     = pdInfo.GoodsName,
                                        Specification = pdInfo.Specification,
                                        GivingCount   = quantity,
                                        ArrivalCount  = 0,
                                        Price         = pdInfo.Price,
                                        State         = 0,
                                        Amount        = quantity * pdInfo.Price,
                                        Memo          = "",
                                        Id            = Guid.NewGuid()
                                    };
                                    debitNoteDetailList.Add(debitNoteDetailInfo);
                                }
                            }
                        }
                    }

                    if (addDetailsList.Count > 0)
                    {
                        foreach (var purchasingDetailInfo in addDetailsList)
                        {
                            purchasingDetailInfo.Price = 0;
                            plist.Add(purchasingDetailInfo);
                        }
                    }
                    #endregion

                    #region 处理额外赠送商品
                    foreach (var dic in dics)
                    {
                        KeyValuePair <string, int> dic1 = dic;
                        if (debitExtraDics.ContainsKey(dic.Key))
                        {
                            var total = dic1.Value - debitExtraDics[dic.Key];
                            if (total > 0)
                            {
                                var data = debitNoteDetailList.Where(act => act.GoodsName == dic1.Key).OrderByDescending(act => act.GivingCount).ToList();
                                for (int i = 0; i < total; i++)
                                {
                                    data[i].GivingCount += 1;
                                    data[i].Amount       = data[i].Price * data[i].GivingCount;
                                }
                            }
                        }
                    }
                    #endregion

                    foreach (var item in plist.Where(act => act.Price == 0 && act.PurchasingGoodsType != (int)PurchasingGoodsType.Gift))
                    {
                        var info = plist.FirstOrDefault(act => act.GoodsName == item.GoodsName && act.Price > 0);
                        item.Price = info != null ? info.Price : 0;
                    }
                    //保存采购单明细
                    _purchasingDetailBll.Save(plist);

                    //添加借记单
                    if (debitNoteDetailList.Count > 0)
                    {
                        var debitNoteInfo = new DebitNoteInfo
                        {
                            PurchasingId      = pInfo.PurchasingID,
                            PurchaseGroupId   = pInfo.PurchaseGroupId,
                            PurchasingNo      = pInfo.PurchasingNo,
                            CompanyId         = pInfo.CompanyID,
                            PresentAmount     = debitNoteDetailList.Sum(w => w.Amount),
                            CreateDate        = DateTime.Now,
                            FinishDate        = DateTime.MinValue,
                            State             = (int)DebitNoteState.ToPurchase,
                            WarehouseId       = pInfo.WarehouseID,
                            Memo              = "",
                            PersonResponsible = pInfo.PersonResponsible,
                            NewPurchasingId   = Guid.Empty
                        };
                        _debitNoteBll.AddPurchaseSetAndDetail(debitNoteInfo, debitNoteDetailList);
                    }
                }

                if (dicGoods != null && dicGoods.Count > 0)
                {
                    var completeGoodsIds = dicGoods.Select(keyValuePair => keyValuePair.Value.GoodsId).ToList();
                    foreach (var item in pg.Where(ent => completeGoodsIds.Contains(ent.GoodsId)))
                    {
                        DataAccessor.UpdateLastPurchasingDate(item.WarehouseId, item.HostingFilialeId, item.GoodsId, DateTime.Now);
                    }
                }
            }
        }
示例#22
0
        protected void rptList_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
        {
            bool      flag      = false;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if (e.CommandName == "CONFIRM_PAY" && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num      = 0;
                    int num2     = 0;
                    int arg_49_0 = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo debitNoteInfo = new DebitNoteInfo();
                        debitNoteInfo.NoteId   = Globals.GetGenerateId();
                        debitNoteInfo.OrderId  = e.CommandArgument.ToString();
                        debitNoteInfo.Operator = ManagerHelper.GetCurrentManager().UserName;
                        debitNoteInfo.Remark   = "后台" + debitNoteInfo.Operator + "收款成功";
                        OrderHelper.SaveDebitNote(debitNoteInfo);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int arg_BE_0 = num + num2;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                        return;
                    }
                    this.ShowMsg("确认订单收款失败", false);
                    return;
                }
                else if (e.CommandName == "FINISH_TRADE" && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    System.Collections.Generic.Dictionary <string, LineItemInfo> lineItems = orderInfo.LineItems;
                    LineItemInfo lineItemInfo = new LineItemInfo();
                    foreach (System.Collections.Generic.KeyValuePair <string, LineItemInfo> current in lineItems)
                    {
                        lineItemInfo = current.Value;
                        if (lineItemInfo.OrderItemsStatus == OrderStatus.ApplyForRefund || lineItemInfo.OrderItemsStatus == OrderStatus.ApplyForReturns)
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        if (OrderHelper.ConfirmOrderFinish(orderInfo))
                        {
                            this.BindOrders();
                            this.myNotifier.updateAction = UpdateAction.OrderUpdate;
                            this.myNotifier.actionDesc   = "订单已完成";
                            if (orderInfo.PayDate.HasValue)
                            {
                                this.myNotifier.RecDateUpdate = orderInfo.PayDate.Value;
                            }
                            else
                            {
                                this.myNotifier.RecDateUpdate = System.DateTime.Today;
                            }
                            this.myNotifier.DataUpdated += new StatisticNotifier.DataUpdatedEventHandler(this.myEvent.Update);
                            this.myNotifier.UpdateDB();
                            this.ShowMsg("成功的完成了该订单", true);
                            return;
                        }
                        this.ShowMsg("完成订单失败", false);
                        return;
                    }
                    else
                    {
                        this.ShowMsg("订单中商品有退货(款)不允许完成!", false);
                    }
                }
            }
        }
示例#23
0
        protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            bool      flag      = false;
            OrderInfo orderInfo = OrderHelper.GetOrderInfo(e.CommandArgument.ToString());

            if (orderInfo != null)
            {
                if ((e.CommandName == "CONFIRM_PAY") && orderInfo.CheckAction(OrderActions.SELLER_CONFIRM_PAY))
                {
                    int num2       = 0;
                    int num3       = 0;
                    int groupBuyId = orderInfo.GroupBuyId;
                    if (OrderHelper.ConfirmPay(orderInfo))
                    {
                        DebitNoteInfo info2;
                        info2 = new DebitNoteInfo
                        {
                            NoteId   = Globals.GetGenerateId(),
                            OrderId  = e.CommandArgument.ToString(),
                            Operator = ManagerHelper.GetCurrentManager().UserName,
                            Remark   = "后台" + ManagerHelper.GetCurrentManager().UserName + "收款成功"
                        };
                        OrderHelper.SaveDebitNote(info2);
                        if (orderInfo.GroupBuyId > 0)
                        {
                            int num6 = num2 + num3;
                        }
                        this.BindOrders();
                        orderInfo.OnPayment();
                        this.ShowMsg("成功的确认了订单收款", true);
                    }
                    else
                    {
                        this.ShowMsg("确认订单收款失败", false);
                    }
                }
                else if ((e.CommandName == "FINISH_TRADE") && orderInfo.CheckAction(OrderActions.SELLER_FINISH_TRADE))
                {
                    Dictionary <string, LineItemInfo> lineItems = orderInfo.LineItems;
                    LineItemInfo info3 = new LineItemInfo();
                    foreach (KeyValuePair <string, LineItemInfo> pair in lineItems)
                    {
                        info3 = pair.Value;
                        if ((info3.OrderItemsStatus == OrderStatus.ApplyForRefund) || (info3.OrderItemsStatus == OrderStatus.ApplyForReturns))
                        {
                            flag = true;
                        }
                    }
                    if (!flag)
                    {
                        if (OrderHelper.ConfirmOrderFinish(orderInfo))
                        {
                            this.BindOrders();
                            DistributorsBrower.UpdateCalculationCommission(orderInfo);
                            foreach (LineItemInfo info4 in orderInfo.LineItems.Values)
                            {
                                if (info4.OrderItemsStatus.ToString() == OrderStatus.SellerAlreadySent.ToString())
                                {
                                    RefundHelper.UpdateOrderGoodStatu(orderInfo.OrderId, info4.SkuId, 5);
                                }
                            }
                            this.myNotifier.updateAction = UpdateAction.OrderUpdate;
                            this.myNotifier.actionDesc   = "订单已完成";
                            if (orderInfo.PayDate.HasValue)
                            {
                                this.myNotifier.RecDateUpdate = orderInfo.PayDate.Value;
                            }
                            else
                            {
                                this.myNotifier.RecDateUpdate = DateTime.Today;
                            }
                            this.ShowMsg("成功的完成了该订单", true);
                        }
                        else
                        {
                            this.ShowMsg("完成订单失败", false);
                        }
                    }
                    else
                    {
                        this.ShowMsg("订单中商品有退货(款)不允许完成!", false);
                    }
                }
                else if (e.CommandName == "delete")
                {
                    string str  = e.CommandArgument.ToString();
                    int    num4 = OrderHelper.RealDeleteOrders("'" + str.Replace(",", "','") + "'");
                    this.BindOrders();
                    this.ShowMsg(string.Format("成功删除了{0}个订单", num4), true);
                }
                else if (e.CommandName == "restore")
                {
                    string str2 = e.CommandArgument.ToString();
                    int    num5 = OrderHelper.RestoreOrders("'" + str2.Replace(",", "','") + "'");
                    this.BindOrders();
                    this.ShowMsg(string.Format("成功还原了订单", num5), true);
                }
            }
        }