public string Refund(RefundOrderVO refundVO) { if (null != refundVO) { refundVO.Direct = DIRECT.REFUND2SUPPLIER; } return(service.Refund(refundVO)); }
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("商品退回失败!"); } }
/// <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); }