You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
14 KiB
C#

9 months ago
using DevComponents.DotNetBar.Controls;
using DevComponents.DotNetBar.SuperGrid;
using POSV.Template;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace POSV.GuangChang
{
public partial class GuangChangRefundForm : BusinessForm
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private List<VposOrderProduct> _orderProductInfo = null;
private List<VposOrderProductMake> _orderProductMake = null;
public GuangChangRefundForm(List<VposOrderProduct> orderProductInfo,List<VposOrderProductMake> orderProductMake)
{
InitializeComponent();
this.controlBox1.Text = "订单退款";
this.controlBox1.ShowApplicationVersion = false;
foreach (VposOrderProduct product in orderProductInfo) {
product.NowCount = product.Count - product.Rcount;
}
this._orderProductMake = orderProductMake;
this._orderProductInfo = orderProductInfo;
//可编辑cell颜色特殊标注
var panel = this.productListTable.PrimaryGrid;
Color bgColor = ColorTranslator.FromHtml("193,255,192");
panel.Columns["rfCount"].CellStyles.Default.Background.Color1 = bgColor;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.DesignMode) return;
productListTable.PrimaryGrid.DataSource = this._orderProductInfo;
}
private void OnControlBoxCloseClick(object sender, EventArgs e)
{
OnCloseTouchClick(sender, e);
}
private void BtnExitClick(object sender, EventArgs e)
{
OnCloseTouchClick(sender, e);
}
private void OnCloseTouchClick(object sender, EventArgs e)
{
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void BtnBackTicketClick(object sender, EventArgs e)
{
//遍历列信息
var rows = this.productListTable.PrimaryGrid.Rows;
if (rows.Count > 0)
{
decimal totalAmount = 0.00M;
List<VposOrderProduct> productList = new List<VposOrderProduct>();
foreach (var temRow in rows)
{
GridRow row = temRow as GridRow;
var id = StringUtils.GetString(row.Cells["id"].Value);
var clientId = StringUtils.GetString(row.Cells["clientId"].Value);
var productId = StringUtils.GetString(row.Cells["productId"].Value);
var productNo = StringUtils.GetString(row.Cells["productNo"].Value);
var productName = StringUtils.GetString(row.Cells["productName"].Value);
var productUnitId = StringUtils.GetString(row.Cells["productUnitId"].Value);
var productUnitName = StringUtils.GetString(row.Cells["productUnitName"].Value);
var seriesId = StringUtils.GetString(row.Cells["seriesId"].Value);
var seriesName = StringUtils.GetString(row.Cells["seriesName"].Value);
var typePath = StringUtils.GetString(row.Cells["typePath"].Value);
var typeId = StringUtils.GetString(row.Cells["typeId"].Value);
var typeName = StringUtils.GetString(row.Cells["typeName"].Value);
var specId = StringUtils.GetString(row.Cells["specId"].Value);
var specName = StringUtils.GetString(row.Cells["specName"].Value);
var discountPrice = StringUtils.GetDecimal(row.Cells["discountPrice"].Value);
var count = StringUtils.GetDecimal(row.Cells["count"].Value);
var rcount = StringUtils.GetDecimal(row.Cells["rcount"].Value);
var rfCount = StringUtils.GetDecimal(row.Cells["rfCount"].Value);
var rfAmount = StringUtils.GetDecimal(row.Cells["rfAmount"].Value);
if (rfCount>0) {
VposOrderProduct vposOrderProduct = new VposOrderProduct();
vposOrderProduct.Id = id;
vposOrderProduct.ProductId = productId;
vposOrderProduct.ProductNo = productNo;
vposOrderProduct.ProductName = productName;
vposOrderProduct.ProductUnitId = productUnitId;
vposOrderProduct.ProductUnitName = productUnitName;
vposOrderProduct.SeriesId = seriesId;
vposOrderProduct.SeriesName = seriesName;
vposOrderProduct.TypePath = typePath;
vposOrderProduct.TypeId = typeId;
vposOrderProduct.TypeName = typeName;
vposOrderProduct.SpecId = specId;
vposOrderProduct.SpecName = specName;
vposOrderProduct.DiscountPrice = discountPrice;
vposOrderProduct.Price = discountPrice;
vposOrderProduct.Count = count;
vposOrderProduct.Rcount = rcount+ rfCount;
vposOrderProduct.RfCount = rfCount;
vposOrderProduct.RfAmount = rfAmount;
List<VposOrderProductMake> tempList = new List<VposOrderProductMake>();
if (_orderProductMake != null && _orderProductMake.Count > 0)
{
foreach (VposOrderProductMake item in _orderProductMake)
{
if (item.OrderItemId.Equals(clientId))
{
tempList.Add(item);
}
}
}
vposOrderProduct.MakeInfo = tempList;
productList.Add(vposOrderProduct);
totalAmount = totalAmount + rfAmount;
}
}
if (totalAmount<=0) {
this.ShowToastNotify(this, "请输入退款数量!");
return;
}
this.OnAcceptButtonClick(new TransparentEventArgs(TransparentAction.Accept, "rfBack", productList));
OnCloseTouchClick(this, null);
}
}
private void OnBeginEdit(object sender, GridEditEventArgs e)
{
var cell = e.GridCell;
var cellPoint = this.productListTable.PointToScreen(cell.LocationRelative);
if (cell.GridColumn.Name == "rfCount")
{
cellPoint.Y -= this.productListTable.VScrollOffset;
var p = NumericKeyboard.CalculateLocation(cellPoint, cell.GridColumn.Width);
NumericKeyboard.ShowKeyboard(this, p);
}
else
{
var txtForm = new TxtKeyboardForm(StringUtils.GetString(cell.Value));
txtForm.NotifyChanged += (o, args) =>
{
cell.Value = args.Data;
};
var trans = new TransparentForm(this, .5, txtForm);
trans.Show(this);
}
}
private void OnCellValueChanged(object sender, GridCellValueChangedEventArgs e)
{
var cell = e.GridCell;
if (cell.GridColumn.Name == "rfCount")
{
var row = cell.GridRow;
// 可退数量
var nowCount = StringUtils.FormatDataTwoDigitObject(row.Cells["nowCount"].Value);
// 折后单价
var discountPrice = StringUtils.FormatDataTwoDigitObject(row.Cells["discountPrice"].Value);
// 录入的数量
var rfCount = StringUtils.FormatDataTwoDigitObject(row.Cells["rfCount"].Value);
if (rfCount < 0 )
{
this.ShowToastNotify(this, "数量非法");
row.Cells["rfCount"].Value = 0;
rfCount = 0;
}
if (rfCount > nowCount) {
row.Cells["rfCount"].Value = nowCount;
rfCount = nowCount;
}
var rfAmount = discountPrice * rfCount;
row.Cells["rfAmount"].Value = StringUtils.FormatDataTwoDigitObject(rfAmount);
//获取退款总额
decimal totalBackAmount = 0.00M;
decimal totalBackCount = 0.00M;
var rows = this.productListTable.PrimaryGrid.Rows;
if (rows.Count > 0)
{
foreach (var temRow in rows)
{
GridRow amountRow = temRow as GridRow;
var Money = StringUtils.FormatDataTwoDigitObject(amountRow.Cells["rfAmount"].Value);
var Count = StringUtils.FormatDataTwoDigitObject(amountRow.Cells["rfCount"].Value);
totalBackAmount = totalBackAmount + Money;
totalBackCount = totalBackCount + Count;
}
}
this.labelXRcount.Text = StringUtils.GetString(StringUtils.FormatDataTwoDigitObject(totalBackCount));
this.labelXRmoney.Text = StringUtils.GetString(StringUtils.FormatDataTwoDigitObject(totalBackAmount));
}
}
private void OnCloseEdit(object sender, GridCloseEditEventArgs e)
{
NumericKeyboard.CloseKeyboard();
}
private void BtnAllBackTicketClick(object sender, EventArgs e)
{
//遍历列信息
var rows = this.productListTable.PrimaryGrid.Rows;
if (rows.Count > 0)
{
decimal totalAmount = 0.00M;
List<VposOrderProduct> productList = new List<VposOrderProduct>();
foreach (var temRow in rows)
{
GridRow row = temRow as GridRow;
var id = StringUtils.GetString(row.Cells["id"].Value);
var clientId = StringUtils.GetString(row.Cells["clientId"].Value);
var productId = StringUtils.GetString(row.Cells["productId"].Value);
var productNo = StringUtils.GetString(row.Cells["productNo"].Value);
var productName = StringUtils.GetString(row.Cells["productName"].Value);
var productUnitId = StringUtils.GetString(row.Cells["productUnitId"].Value);
var productUnitName = StringUtils.GetString(row.Cells["productUnitName"].Value);
var seriesId = StringUtils.GetString(row.Cells["seriesId"].Value);
var seriesName = StringUtils.GetString(row.Cells["seriesName"].Value);
var typePath = StringUtils.GetString(row.Cells["typePath"].Value);
var typeId = StringUtils.GetString(row.Cells["typeId"].Value);
var typeName = StringUtils.GetString(row.Cells["typeName"].Value);
var specId = StringUtils.GetString(row.Cells["specId"].Value);
var specName = StringUtils.GetString(row.Cells["specName"].Value);
var discountPrice = StringUtils.GetDecimal(row.Cells["discountPrice"].Value);
var count = StringUtils.GetDecimal(row.Cells["count"].Value);
var rcount = StringUtils.GetDecimal(row.Cells["rcount"].Value);
var rfCount = StringUtils.FormatDataTwoDigitObject(row.Cells["nowCount"].Value);
var rfAmount = rfCount * discountPrice;
if (rfCount > 0)
{
VposOrderProduct vposOrderProduct = new VposOrderProduct();
vposOrderProduct.Id = id;
vposOrderProduct.ProductId = productId;
vposOrderProduct.ProductNo = productNo;
vposOrderProduct.ProductName = productName;
vposOrderProduct.ProductUnitId = productUnitId;
vposOrderProduct.ProductUnitName = productUnitName;
vposOrderProduct.SeriesId = seriesId;
vposOrderProduct.SeriesName = seriesName;
vposOrderProduct.TypePath = typePath;
vposOrderProduct.TypeId = typeId;
vposOrderProduct.TypeName = typeName;
vposOrderProduct.SpecId = specId;
vposOrderProduct.SpecName = specName;
vposOrderProduct.DiscountPrice = discountPrice;
vposOrderProduct.Price = discountPrice;
vposOrderProduct.Count = count;
vposOrderProduct.Rcount = rcount + rfCount;
vposOrderProduct.RfCount = rfCount;
vposOrderProduct.RfAmount = rfAmount;
List<VposOrderProductMake> tempList = new List<VposOrderProductMake>();
if (_orderProductMake != null && _orderProductMake.Count > 0)
{
foreach (VposOrderProductMake item in _orderProductMake)
{
if (item.OrderItemId.Equals(clientId))
{
tempList.Add(item);
}
}
}
vposOrderProduct.MakeInfo = tempList;
productList.Add(vposOrderProduct);
totalAmount = totalAmount + rfAmount;
}
}
if (totalAmount <= 0)
{
this.ShowToastNotify(this, "订单已全额退款!");
return;
}
this.OnAcceptButtonClick(new TransparentEventArgs(TransparentAction.Accept, "rfBack", productList));
OnCloseTouchClick(this, null);
}
}
}
}