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客户端系统
市城管局城管支队工作人员使用最新配备的城管执法手持终端对便道违法停放车辆进行拍照取证. 城管执法手持终端具备拍照.现场打印.无线传输等功能,执法人员只要在该终端登录,即可随时实现对违停车辆的拍照取证. ...
随机推荐
- Java入门:Java中获取键盘输入值的三种方法
Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代 ...
- Linux /etc/issue 和 /etc/issue.net的作用和区别
1./etc/motd /etc/motd即messageoftoday(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端.系统管理员可以在文件中编辑系统活动消息,例如:管 ...
- scrum敏捷开发重点介绍
参考: http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html https://www.zhihu.com/question/3 ...
- pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法
pom.xml文件在添加了新的依赖后,一直报:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的错误,Maven ...
- What Does “Neurons that Fire Together Wire Together” Mean?
What Does “Neurons that Fire Together Wire Together” Mean? I’ve heard the phrase “neurons that fire ...
- Ubuntu 15.04 双击运行 *.sh、*.py文件
源 起 之前一直在Windows下用AndoridStudio,今天试了一下在Linux系统Ubuntu 15.04中配置Android Studio: 过程和Windws下差不多,但是最后没有生成桌 ...
- ASP.NET中的另类控件
首先看一个aspx文件里的部分内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- (转)Oracle 字符集的查看和修改
一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...
- redis写定时任务获取root权限
前提: 1.redis由root用户启动. 2.开启cron的时候,/var/spool/cron linux机器下默认的计划任务,linux会定时去执行里面的任务. 启动服务 :/sbin/serv ...
- php 获取唯一字符串与文件扩展名函数
/** * 生成唯一字符串 * @return string */ function getUniqueStr(){ return md5(uniqid(microtime(true),true)); ...