Пример #1
0
 public string Refund(RefundOrderVO refundVO)
 {
     if (null != refundVO)
     {
         refundVO.Direct = DIRECT.REFUND2SUPPLIER;
     }
     return(service.Refund(refundVO));
 }
Пример #2
0
        private void btnRefund_Click(object sender, EventArgs e)
        {
            RefundOrderVO       refundVO = null;
            List <Refund>       list     = new List <Refund>();
            List <OrderGoodsVO> glist    = new List <OrderGoodsVO>();

            if (cboxNSupplier.SelectedIndex == -1)
            {
                return;
            }
            foreach (DataGridViewRow row in dtgvRfGoods.Rows)
            {
                object numObj   = row.Cells[colNum.Name].Value;
                object priceObj = row.Cells[colPrice.Name].Value;
                if (null == numObj || null == priceObj)
                {
                    continue;
                }
                Refund rf = new Refund();
                rf.Direct = DIRECT.REFUND2SUPPLIER;
                rf.InvID  = StringUtil.Obj2Long(row.Cells[colInvID.Name].Value);
                rf.Num    = StringUtil.Obj2Int(numObj);
                rf.Price  = StringUtil.Obj2Decimal(priceObj);
                rf.TgtSID = StringUtil.Obj2Long(row.Cells[colTgtSID.Name].Value);
                if (rf.Num * rf.Price == 0)
                {
                    continue;
                }
                list.Add(rf);

                OrderGoodsVO vo = new OrderGoodsVO();
                vo.GID   = StringUtil.Obj2Int(row.Cells[colGID.Name].Value);
                vo.GName = StringUtil.Obj2Str(row.Cells[colGName.Name].Value);
                vo.Num   = (int)rf.Num;
                vo.Price = (int)rf.Price;
                vo.Specs = StringUtil.Obj2Str(row.Cells[colSpecs.Name].Value);
                glist.Add(vo);
            }
            if (list.Count < 1)
            {
                return;
            }
            Customer         supplier    = cboxNSupplier.SelectedItem as Customer;
            OrderCnfrmDialog cnfrmDialog = new OrderCnfrmDialog("【退货单-明细】 " + supplier.CName, glist);
            DialogResult     rslt        = cnfrmDialog.ShowDialog();

            if (DialogResult.OK != rslt)
            {
                return;
            }

            refundVO             = new RefundOrderVO();
            refundVO.CustID      = supplier.CID__PK;
            refundVO.CustName    = supplier.CName;
            refundVO.Direct      = DIRECT.REFUND2SUPPLIER;
            refundVO.UptUID      = MainForm.usr.UId__PK;
            refundVO.CrtUID      = MainForm.usr.UId__PK;
            refundVO._RefundList = list;

            string orderNO = refundManager.Refund(refundVO);

            if (!StringUtil.isEmpty(orderNO))
            {
                MainForm.Info("商品已退回!退单号:" + orderNO);
                dtgvRfGoods.Rows.Clear();
            }
            else
            {
                MainForm.Warn("商品退回失败!");
            }
        }
Пример #3
0
        /// <summary>
        /// 退货
        /// </summary>
        /// <param name="RefundOrderVO"></param>
        /// <returns>退货单号</returns>
        public string Refund(RefundOrderVO refundVO)
        {
            string   orderNO = string.Empty;
            DateTime now     = DateTime.Now;

            if (null == refundVO)
            {
                return(orderNO);
            }

            decimal amount     = 0;
            int     direct     = 0;
            string  uptInvSql  = "UPDATE INVENTORY SET Num=Num-@rfNum,Tmst=@tmst WHERE InvID=@invID";
            string  uptSOutSql = null;

            if (DIRECT.REFUND2SUPPLIER == refundVO.Direct)
            {
                direct = 1;
            }
            else if (DIRECT.RESELLER_REFUND == refundVO.Direct)
            {
                uptSOutSql = "UPDATE STOCKOUT SET RfNum=RfNum+@num WHERE SID=@sId";
                direct     = -1;
            }
            else
            {
                return(orderNO);
            }
            orderNO = GenOrderNO(string.Format("{0:yyyyMMdd}", now), refundVO.Direct);
            foreach (Refund rf in refundVO._RefundList)
            {
                rf.OrderNO = orderNO;
                amount    += (decimal)rf.Price * (int)rf.Num;
                Connector.Save <Refund>(rf, true);
                //记录流水
                AddChld((long)rf.InvID, refundVO.CrtUID, (int)rf.Num, refundVO.Direct);
                Dictionary <string, object> values = new Dictionary <string, object>();
                values.Add("rfNum", rf.Num * direct);
                values.Add("tmst", now);
                values.Add("invID", rf.InvID);
                Connector.DbHelper.ExecuteSql(uptInvSql, values);
                //回收
                if (DIRECT.RESELLER_REFUND == refundVO.Direct)
                {
                    values = new Dictionary <string, object>();
                    values.Add("num", rf.Num);
                    values.Add("sId", rf.TgtSID);
                    Connector.DbHelper.ExecuteSql(uptSOutSql, values);
                }
            }

            Order order = new Order();

            order.CustID      = refundVO.CustID;
            order.CustName    = refundVO.CustName;
            order.Direct      = refundVO.Direct;
            order.UptUID      = refundVO.UptUID;
            order.CrtUID      = refundVO.CrtUID;
            order.CrtTmst     = now;
            order.UptTmst     = now;
            order.OrderNO__PK = orderNO;
            order.Amount      = amount;
            Connector.Save <Order>(order);
            return(orderNO);
        }