C# POS 小票打印
网上查了好多资料终于让我捣鼓出来了!
public partial class Models_JXC_Sale_actNewSalePage : WebPartBase
{ public string saild_id_ = System.DateTime.Now.ToString("yyyyMMddhhmmss");
public string date_ = DateTime.Now.ToString();
public DataTable datas_ = new DataTable(); public double discount_ = ; //优惠金额
public double amount_ = ; // 应收金额
public double recv_cash_ = ; // 收款金额 public string card_no_ = ""; // 会员卡号
public double mark_in_ = ; // 本次积分 private System.Windows.Forms.PrintPreviewDialog printv_pos = null;
private System.Drawing.Printing.PrintDocument printd_pos = null; public string SVIDS = "";
public string WHIDS = "";
protected void Page_Load(object sender, EventArgs e)
{
if (IsFirstLoad)
{
btnPrinter.Enabled = false;
Session["mdp"] = "";
Session["mdSLID"] = "";
IsFirstLoad = false;
SVIDS = SVID.ToString();
WHIDS = WHID.ToString();
}
else
{
btnPrinter.Enabled = true;
if (Session["mdp"].ToString() == Session["mdSLID"].ToString())
{
CreateBlendListReport(Session["mdSLID"].ToString());
}
}
if (cSaleDate.Text == "")
{
cSaleDate.Value = DateTime.Now;
} this.printv_pos = new System.Windows.Forms.PrintPreviewDialog();
this.printd_pos = new System.Drawing.Printing.PrintDocument(); this.printv_pos.AutoScrollMargin = new System.Drawing.Size(, );
this.printv_pos.AutoScrollMinSize = new System.Drawing.Size(, );
this.printv_pos.ClientSize = new System.Drawing.Size(, );
this.printv_pos.Document = this.printd_pos;
this.printv_pos.Enabled = true;
this.printv_pos.Name = "printPreviewDialog1";
this.printv_pos.Visible = false;
//
// printd_pos
//
this.printd_pos.DocumentName = "京华茶叶店POS小票";
this.printd_pos.OriginAtMargins = true;
this.printd_pos.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printd_pos_PrintPage); datas_.Clear();
} private int getYc(double cm)
{
return (int)(cm / 25.4) * ;
} public string GetPrintStr()
{
StringBuilder sb = new StringBuilder(); sb.Append("*********" + "京华茶叶连锁店" + "***********\n"); sb.Append(" 流水号:" + this.saild_id_ + "\n");
sb.Append(" 日 期:" + date_ + "\n"); sb.Append(" 商品编号" + "\t" + "数量" + "\t" + "单价" + "\t" + "金额" + "\n");
for (int i = ; i < this.datas_.Rows.Count; i++)
{
sb.Append(" " + datas_.Rows[i][] + "\t" + datas_.Rows[i][] + "\t" + datas_.Rows[i][] + "\t" + datas_.Rows[i][] + "\n");
sb.Append(" " + datas_.Rows[i][]);
sb.Append("\n");
} sb.Append("\n"); sb.Append(" 优惠金额:" + discount_ + "\n");
sb.Append(" 应收金额:" + amount_ + "\n");
sb.Append(" 实收金额:" + recv_cash_ + "\n");
sb.Append(" \n");
sb.Append(" 会员卡号:" + card_no_ + "\n");
sb.Append(" 本次积分:" + mark_in_ + "\n");
sb.Append("***************************************\n");
string myfoot = string.Format(" {0}\n", "欢迎下次光临!");
sb.Append(myfoot);
return sb.ToString();
} /// <summary>
/// POS打印
/// </summary>
public void print()
{
this.printd_pos.PrintController = new System.Drawing.Printing.StandardPrintController();
this.printd_pos.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printd_pos_PrintPage); //设置边距
System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(, , , );
this.printd_pos.DefaultPageSettings.Margins = margins; this.printd_pos.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("First custom size", getYc(), );
//this.printDocument1.PrinterSettings.PrinterName = "";
//Margins margins = new Margins( //this.printv_pos.Document = this.printd_pos; printv_pos.PrintPreviewControl.AutoZoom = false;
printv_pos.PrintPreviewControl.Zoom = ; // this.printv_pos.ShowDialog(win); try
{
printd_pos.Print();
}
catch (Exception ex)
{
MessageBox(ex.Message);
printd_pos.PrintController.OnEndPrint(printd_pos, new PrintEventArgs());
} } private void printd_pos_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
string strFile = GetPrintStr();
Font ft = new Font("宋体", 8.5F, FontStyle.Regular);
Point pt = new Point(, );
g.DrawString(strFile, ft, new SolidBrush(Color.Black), pt);
} #region 商品种类的无刷新事件
protected void ASPxCBProductType_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
string ParentID = e.Parameter.ToString().Split(';')[].ToString();
Session["ParentID"] = ParentID;
pc2.InnerHtml = createdivstr(ParentID);
} #region 二级产品信息查询一系列实现步骤
private string createdivstr(string ParentID) //根据一级产品大类ID查询对应的二级产品类型
{
string divstr = "";
divstr += "<table>";
JXCProductService.ProductServiceClient ProductS = new JXCProductService.ProductServiceClient();
DataTable dt = ProductS.GetProductCategorystrdt(" AND ProductCategoryCode<>'0' AND IsSale=1 AND ParentCategoryID=" + ParentID);
ProductS.Close();
int icount = ;
divstr += "<tr>";
divstr += "<td>";
foreach (DataRow dr in dt.Rows) //循环显示二级产品信息并格式化操作
{
divstr += "<input type=\"radio\" name=\"b\" onclick=\"javascript:ProductView.PerformCallback('" + dr["PCID"].ToString() + "')\">" + dr["ProductCategoryCode"].ToString() + "-" + dr["ProductCategoryName"].ToString() + "</input>";
if (icount % == )
{
divstr += "</td>";
divstr += "</tr>";
divstr += "<tr>";
divstr += "<td>";
}
icount++;
}
if (icount % == )
{
divstr = divstr.Substring(, divstr.Length - );
}
else
{
divstr += "</td>";
divstr += "</tr>";
}
divstr += "</table>";
return divstr;
}
#endregion protected void Product_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
JXCSaleService.SaleServiceClient SaleS = new JXCSaleService.SaleServiceClient(); string salestrbp = e.Parameter.Split('&')[];
string salestrremark = e.Parameter.Split('&')[];
string[] str = salestrremark.Split(';');
#region 保存单头
JXCSaleService.JXCSaleBills sbs = new JXCSaleService.JXCSaleBills();
sbs.SVID = SVID; //门店的ID
sbs.GUID = Guid.NewGuid();
sbs.Isable = ; double unionpayCard = ; // cUnionpayCard.Text.Trim();
double coolCard = ;// cCoolCard.Text.Trim();
double checks = ;// cCheck.Text.Trim();
double alipay = ;// cAlipay.Text.Trim();
string entryPeople = cEntryPeople.Text.Trim(); //银联卡手续费
double unionpayCommission = 0.00;
//雅酷卡手续费
double coolCommission = 0.00;
//实收金额
double paidAmount = 0.00;
//应收金额
double amountReceivable = 0.00;
//现金金额
double cashs = 0.00;
if (str != null)
{
//备注
sbs.SaleRemark = str[];
//实收金额
paidAmount = double.Parse(str[]);
//应收金额
amountReceivable = double.Parse(str[]);
//现金金额
if (str[] != "")
{
cashs = double.Parse(str[]);
}
if (str[] != "")
{
unionpayCard = double.Parse(str[]);
} if (str[] != "")
{
coolCard = double.Parse(str[]);
}
if (str[] != "")
{
checks = double.Parse(str[]);
}
if (str[] != "")
{
alipay = double.Parse(str[]);
}
}
//现金
sbs.Cash = cashs;
//银联卡金额 sbs.UnionpayCard = unionpayCard;
//银联卡支付的1%,20000以上20封顶 if (unionpayCard < )
{
JXC.JXCBase.RefreshBasedt();
DataRow[] drs = JXC.JXCBase.BaseDT.Select(" InfoName='银联支付手续费'");
unionpayCommission = unionpayCard * double.Parse(drs[]["InfoCode"].ToString());
}
else
{
JXC.JXCBase.RefreshBasedt();
DataRow[] drs = JXC.JXCBase.BaseDT.Select(" InfoName='银联支付手续费封顶'");
unionpayCommission = double.Parse(drs[]["InfoCode"].ToString());
} //雅酷卡金额 sbs.CoolCard = coolCard;
//雅酷卡支付的10%。
DataRow[] drs1 = JXC.JXCBase.BaseDT.Select(" InfoName='雅酷卡支付手续费'");
coolCommission = coolCard * double.Parse(drs1[]["InfoCode"].ToString()); //银联手续费
sbs.UnionpayCommission = unionpayCommission;
//雅酷卡手续费
sbs.CoolCommission = coolCommission;
//手续费=银联卡手续费+雅酷卡手续费
sbs.Commission = unionpayCommission + coolCommission;
//销售金额=实收金额-手续费
sbs.SalesAmount = paidAmount - unionpayCommission - coolCommission;
//让利金额=应收金额-实收金额
sbs.ConcessionsAmount = amountReceivable - paidAmount;
//支票 sbs.Checkes = checks; //支付宝 sbs.Alipay = alipay;
if (paidAmount <= )
{
pc4.InnerText = "请输入销售商品的数量!";
btnPrinter.Enabled = false;
return; } if (paidAmount != (cashs + unionpayCard + coolCard + checks + alipay))
{
pc4.InnerText = "实收金额与现金,银联卡,雅酷卡,支票,支付宝之和不相等!";
btnPrinter.Enabled = false;
return; } //客户类型
sbs.BuyerType = BuyerType.Text.Trim();
if (BuyerType.Text.Trim() == "会员")
{
//会员卡号
if (str[].ToString() == "")
{
pc4.InnerText = "请填写会员卡号";
btnPrinter.Enabled = false;
return;
}
else
{
sbs.CardNo = str[].ToString(); JXCQCService.QCServiceClient qc = new JXCQCService.QCServiceClient();
DataTable dtqc = new DataTable(); dtqc = qc.GetBuyerMember(" and MemberCardNO=" + str[].ToString());
if (dtqc != null)
{
if (dtqc.Rows.Count > )
{
double jifen = 0.0;
double sumJiFen = 0.0;
jifen = double.Parse(dtqc.Rows[][].ToString()) + paidAmount;
sumJiFen = double.Parse(dtqc.Rows[][].ToString()) + paidAmount;
bool count1 = qc.UpdateBM2(jifen, sumJiFen, str[].ToString());
sbs.BMID = int.Parse(dtqc.Rows[][].ToString());
}
else
{
JXCQCService.JXC_S_BuyerMember bm = new JXCQCService.JXC_S_BuyerMember();
JXCSelfService.SelfServiceClient self = new JXCSelfService.SelfServiceClient();
DataTable dtMD = self.BindMD(" and SVID=" + SVID); bm.MemberName = str[].ToString();
bm.MemberCardNO = str[].ToString();
bm.MemberCategory = UserName;
bm.PhoneNumber = "";
bm.MemberType = "个人";
bm.MemberPoints = decimal.Parse(paidAmount.ToString());
bm.DiscountRate = "九折";
bm.CreateTime = DateTime.Now.ToString("yyyy-MM-dd");
bm.IntergralCounts = ;
bm.IntergralSumCounts = decimal.Parse(paidAmount.ToString());
bm.SVID = SVID;
if (dtMD != null)
{
if (dtMD.Rows.Count > )
{
bm.SalesName = dtMD.Rows[][].ToString();
}
} bool reslut = qc.InsertBM(bm);
DataTable dtbm = new DataTable(); dtbm = qc.GetBuyerMember(" and MemberCardNO=" + str[].ToString());
if (dtbm.Rows.Count > )
{
sbs.BMID = int.Parse(dtbm.Rows[][].ToString());
}
}
} } }
else
{
sbs.CardNo = str[].ToString();
} if (cSaleDate.Text != "")
{
//销售日期
sbs.SaleTime = DateTime.Parse(cSaleDate.Text.ToString());
}
else
{
sbs.SaleTime = DateTime.Now;
} JXCSelfService.SelfServiceClient selfService = new JXCSelfService.SelfServiceClient(); DataTable dt = selfService.GetDayAndDate(SVID);
if (dt.Rows[][].ToString() != "" & dt.Rows[][].ToString() != null)
{
if (DateTime.Parse(sbs.SaleTime.ToString("yyyy-MM-dd")) <= DateTime.Parse(dt.Rows[][].ToString()))
{
pc3.InnerText = "您选择的销售日期已经日结,请先删除该日期的日结报表!";
btnPrinter.Enabled = false;
return;
}
} //录入人
if (entryPeople != "")
{
sbs.Payee = entryPeople;
}
else
{
sbs.Payee = UserName;
} int result = SaleS.InsertSaleBills(sbs);
#endregion
bool Condition = true;
if (result > )
{
#region 保存明细
string bpstr = salestrbp.ToString().Substring(, salestrbp.Length - );
string bpssss = bpstr.Split('*')[];
string[] bpids = bpssss.Split('$');
foreach (string bps in bpids)
{
JXCSaleService.JXCSaleBillDetail sbd = new JXCSaleService.JXCSaleBillDetail();
string[] orderpid = bps.Split(';');
sbd.BPID = int.Parse(orderpid[]);
sbd.SaleCounts = double.Parse(orderpid[]);
sbd.PredictSaleAmount = double.Parse(orderpid[]);
sbd.SLID = result;
Condition = SaleS.InsertSaleBillDetail(sbd);
}
#endregion
}
if (result > && Condition)
{
int isable = int.Parse(salestrbp.ToString().Substring(salestrbp.Length - , ));
Dictionary<object, object> ht = new Dictionary<object, object>();
ht.Add("isable", isable);
ht.Add("SLID", result);
if (SaleS.UpdateByht(ht, "JXC_S_SaleBill"))
{
pc3.InnerText = "保存成功!";
btnPrinter.Enabled = true;
Session["mdSLID"] = result; //获得销售单ID datas_ = SaleS.GetSaleBillItemsBySlid(Convert.ToInt32(Session["mdSLID"])); discount_ = amountReceivable - paidAmount; //优惠金额
amount_ = amountReceivable; // 应收金额
recv_cash_ = paidAmount; // 收款金额 card_no_ = str[].ToString(); // 会员卡号
if (card_no_ != "")
{
mark_in_ = paidAmount; // 本次积分
}
print(); } //调用销售信息方法
else
{
pc3.InnerText = "保存失败!请联系管理员!";
}
}
else
{
pc3.InnerText = "保存失败!请联系管理员!";
}
SaleS.Close();
cEntryPeople.Text = ""; } protected void ProductView_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
if (e.Parameter != "")
{
Session["getpcID"] = e.Parameter.ToString();
GetDataViewBind();
} }
#endregion
protected void btnNew_Click(object sender, EventArgs e)
{
Session["SaleGUID"] = GetGuid();
}
#region 绑定DataView
protected void GetDataViewBind()
{
JXCProductService.ProductServiceClient psProdData = new JXCProductService.ProductServiceClient();
DataTable dt = new DataTable();
if (!JXC.fun.IsNull(this, "getpcID"))
{
if (!JXC.fun.IsNull(this, "ParentID"))
{
dt = psProdData.GetProDataViewInformation2(Convert.ToInt32(Session["getpcID"]), SVID, WHID);
}
}
ASPxDataView1.DataSource = dt;
ASPxDataView1.DataBind();
psProdData.Close();
}
#endregion /// <summary>
/// 打印门店订单方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnPrinter_Click(object sender, EventArgs e)
{
//CreateBlendListReport(Session["mdSLID"].ToString());
//Session["mdp"] = Session["mdSLID"].ToString(); print();
} #region 报表打印的代码
protected void CreateBlendListReport(string slid)
{
if (slid != null || slid != "")
{
JXCSelfService.SelfServiceClient saleItem = new JXCSelfService.SelfServiceClient();
XtraReport xpst = null;
DataTable dt = new DataTable();
hidFidMDSale.Value = Session["mdSLID"].ToString();
ASPxPCmdSalePrint.Top = ;
ASPxPCmdSalePrint.Left = ;
ASPxPCmdSalePrint.ShowOnPageLoad = true;
xpst = XtraReport.FromFile(Server.MapPath("~") + "\\Models\\JXC\\Reports\\SaleList.repx", true);
if (Session["mdSLID"] != null)
{
xpst.DataSource = saleItem.GetSaleBillItemsBySlid(Convert.ToInt32(Session["mdSLID"]));
}
xpst.Parameters["times"].Value = DateTime.Now.ToString("yyyy年MM月dd日");
xpst.CreateDocument();
RvmdPrint.Report = xpst;
RvmdPrint.DataBind();
saleItem.Close();
}
else
{
MessageBox("抱歉,暂无报表。");
}
}
#endregion }
C# POS 小票打印的更多相关文章
- 怎样做出通用的pos小票打印程序
POS小票打印机分为热敏和针式俩种. 打印纸的宽度分为58毫米.76毫米和80毫米三种. 打印接口分为:串口.并口.USB和网口(以太网). 热敏打印机速度较快,打印的时候噪音少,针打可以使用多联纸自 ...
- Ajax使用WCF实现小票pos机打印源码
通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq 22945 ...
- 【转】C#使用ESC指令控制POS打印机打印小票
.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos ...
- C#使用ESC指令控制POS打印机打印小票
1.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的po ...
- 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印
重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端 ...
- linux下使用小票打印
linux下使用小票打印 打印机: Xprinter XP-58IIH指令支持: ESC/POS接口: USB, 蓝牙 Linux系统: Centos7 蓝牙配对很快, 配对好后就是连接状态. 但很快 ...
- Delphi 10 Seattle 小票打印控件TQ_Printer
TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...
- c# 小票打印
c# 在进行小票打印时大致有三种方法. 1. 使用水晶报表进行打印.可以参考:https://www.cnblogs.com/aitong/p/10717786.html 2. 在 PrintDocu ...
- 城管停车执法打印APP 移动云POS 现场打印告知单-执法平台+智能POS客户端系统
市城管局城管支队工作人员使用最新配备的城管执法手持终端对便道违法停放车辆进行拍照取证. 城管执法手持终端具备拍照.现场打印.无线传输等功能,执法人员只要在该终端登录,即可随时实现对违停车辆的拍照取证. ...
随机推荐
- linux命令总结dd命令详解
一:dd命令 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: if=文件 ...
- UVA12167 Proving Equivalences
UVA12167 Proving Equivalences 题意翻译 题目描述 在数学中,我们常常需要完成若干命题的等价性证明. 例如:有4个命题a,b,c,d,要证明他们是等价的,我们需要证明a&l ...
- P1077 摆花
P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号.为了在门口展出更多种花, ...
- 转:iOS绘制一个UIView
绘制一个UIView 绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时 ...
- 转:UIView之userInteractionEnabled属性介绍
属性作用 该属性值为布尔类型,如属性本身的名称所释,该属性决定UIView是否接受并响应用户的交互. 当值设置为NO后,UIView会忽略那些原本应该发生在其自身的诸如touch和keyboard等用 ...
- 如何使用vuejs过滤器
大家再使用vue做项目时,查询功能当然必不可少,这就得使用vue强大的filter啦.其实vue内置的两个属性filterBy和orderBy已经能满足部分需求了,但是她更大的的魅力在于自定义filt ...
- Docker容器加载宿主机的hosts解析
前言 公司一直在用传统的tomcat下丢war包的架构体系,随着项目的增多.服务器数量的增多.需要为此花费很多时间在不同服务器的系统环境问题上.为了技术的与时俱进和工作的运维效率等方面,笔者引入doc ...
- Java获取精确到秒的时间戳
1.时间戳简介: 时间戳的定义:通常是一个字符序列,唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用.是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01 ...
- ArcGis数据分类(ClassBreaksDefinition)
文章转载自:Arcgis数据分类那些事儿 数据分类.地图分级(Classification)通常用于Choropleth Map(面量图)的制作中,是专题制图中最初,也是最基本的一个步骤.没有进行过分 ...
- PHP面向对象__set(赋值方法)
//类Ren里面的变量都是私有的,子类$r里面直接取是取不到的,正常给变量赋值的方法为$r->__set("age",20);,但是可以直接写成$r->age = 20 ...