private void BTN_PRINT_TEST_Click(object sender, EventArgs e)
        {
            try
            {
                setWaitCursor(true);
                if (COM_PRINTER.SelectedItem == null || string.Empty.Equals(COM_PRINTER.SelectedItem.ToString().Trim()))
                {
                    MetroMessageBox.Show(this, Constants.getMessage("PRINTER_NOTHING"), "Print Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    GTF_ReceiptPrinter printer = new GTF_ReceiptPrinter(null);
                    printer.setPrinter(COM_PRINTER.SelectedItem.ToString());
                    printer.PrintSlip_Test();
                }
            }
            finally
            {
                setWaitCursor(false);
                BTN_PRINT_TEST.Focus();
            }

            /*
             * PrintDocument printDoc = new PrintDocument();
             * printDoc.PrinterSettings.PrinterName = COM_PRINTER.SelectedItem.ToString();
             * printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
             * printDoc.Print();
             */
        }
 private void BTN_OPOS_TEST_Click(object sender, EventArgs e)
 {
     try
     {
         setWaitCursor(true);
         if (COM_OPOS.SelectedItem != null && !"".Equals(COM_OPOS.SelectedItem.ToString()))
         {
             GTF_ReceiptPrinter printer = new GTF_ReceiptPrinter(null);
             printer.PrintSlip_sg(COM_OPOS.SelectedItem.ToString());
         }
     }
     finally
     {
         setWaitCursor(false);
         BTN_OPOS_TEST.Focus();
     }
 }
 private void BTN_PRINT_TEST_Click(object sender, EventArgs e)
 {
     try
     {
         setWaitCursor(true);
         if (COM_PRINTER.SelectedItem == null || "".Equals(COM_PRINTER.SelectedItem.ToString().Trim()))
         {
             MetroMessageBox.Show(this, "Printer is not working properly", "Passport Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
         else
         {
             GTF_ReceiptPrinter printer = new GTF_ReceiptPrinter(null);
             printer.setPrinter(COM_PRINTER.SelectedItem.ToString());
             printer.PrintSlip_Test();
         }
     }
     finally
     {
         setWaitCursor(false);
         BTN_PRINT_TEST.Focus();
     }
 }
Example #4
0
        private void metroGrid1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 12 && e.RowIndex >= 0)
            {
                if (!Constants.OPEN_DATE.Equals(m_strLastSearchDate))
                {
                    MetroMessageBox.Show(this, Constants.getMessage("ERROR_PRINT_DATE"), "Search", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }


                string strSlipNo = GRD_SLIP[2, e.RowIndex].Value.ToString();
                string printCnt  = (GRD_SLIP[12, e.RowIndex].Value == null || string.Empty.Equals(GRD_SLIP[12, e.RowIndex].Value.ToString().Trim()))
                    ? "0":GRD_SLIP[12, e.RowIndex].Value.ToString();
                Transaction       tran     = new Transaction();
                PrintSlipLangForm langForm = new PrintSlipLangForm(m_Logger);
                langForm.ShowDialog(this);
                string strSlipLang = string.Empty;
                if (langForm.m_SelectLang != null && !string.Empty.Equals(langForm.m_SelectLang.Trim()))
                {
                    strSlipLang = langForm.m_SelectLang;
                }
                else
                {
                    MetroMessageBox.Show(this, "Select Lang.", "Search", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                if (langForm.DialogResult != DialogResult.OK)
                {
                    return;
                }
                JObject jsonDocs = tran.GetPrintDocs(strSlipNo);
                if (jsonDocs != null)//출력
                {
                    string docid, retailer, goods, tourist, adsinfo, signInfo, preview = string.Empty;
                    docid    = jsonDocs["DOCID"].ToString();
                    retailer = jsonDocs["RETAILER"].ToString();
                    goods    = jsonDocs["GOODS"].ToString();
                    tourist  = jsonDocs["TOURIST"].ToString();
                    adsinfo  = jsonDocs["ADSINFO"].ToString();
                    preview  = jsonDocs["PREVIEW"].ToString();
                    signInfo = jsonDocs["SIGN"].ToString();

                    docid = strSlipLang + docid.Substring(2);
                    try {
                        GTF_ReceiptPrinter printer = new GTF_ReceiptPrinter(m_Logger);
                        printer.setPrinter(Constants.PRINTER_TYPE);
#if DEBUG
                        printer.PrintSlip_ja(docid.Replace("[REPUBLISH]", "1"), retailer, goods, tourist, adsinfo, true, signInfo);
#else
                        printer.PrintSlip_ja(docid.Replace("[REPUBLISH]", "1"), retailer, goods, tourist, adsinfo, "Y".Equals(preview), signInfo);
#endif
                    }
                    catch (Exception ex)
                    {
                        m_Logger.Error(ex.StackTrace);
                    }

                    JObject tempObj  = new JObject();
                    JObject tempObj2 = new JObject();
                    tempObj.Add("SLIP_NO", strSlipNo);
                    tempObj2.Add(Constants.PRINT_CNT, (Int32.Parse(printCnt) + 1).ToString());

                    if (GRD_SLIP[13, e.RowIndex].Value == null || !"02".Equals(GRD_SLIP[13, e.RowIndex].Value.ToString()))
                    {
                        MessageForm msgForm = new MessageForm(Constants.getMessage("SLIP_CONFIRM"), null, MessageBoxButtons.YesNo);
                        msgForm.ShowDialog(this);
                        if (msgForm.DialogResult == DialogResult.Yes)
                        {
                            string refunddt = System.DateTime.Now.ToString("yy'/'MM'/'dd HH:mm:ss");
                            tempObj2.Add("SLIP_STATUS_CODE", "02");
                            tempObj2.Add("REFUNDDT", refunddt);
                            refunddt = "";
                        }
                    }

                    tran.UpdateSlip(tempObj, tempObj2);
                    tempObj.RemoveAll();
                    tempObj2.RemoveAll();
                    tempObj  = null;
                    tempObj2 = null;
                    BTN_SEARCH_Click(null, null);
                }
                else
                {
                    MetroMessageBox.Show(this, "Print Error", "Search", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }
        }
Example #5
0
        private void BTN_PRINT_Click(object sender, EventArgs e)
        {
            if (strRefundStatusCode.Equals("04"))
            {
                MetroMessageBox.Show(this, Constants.getMessage("ALREADYCANCELREFUND"), "Issue", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (Constants.PRINTER_TYPE == null || string.Empty.Equals(Constants.PRINTER_TYPE.Trim()))
            {
                MetroMessageBox.Show(this, Constants.getMessage("PASSPORT_NOTHING"), "Issue", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                setWaitCursor(false);
                return;
            }

            PrintSlipLangForm langForm = new PrintSlipLangForm(m_Logger);

            langForm.ShowDialog(this);
            string strSlipLang = string.Empty;

            if (langForm.m_SelectLang != null && !string.Empty.Equals(langForm.m_SelectLang.Trim()))
            {
                strSlipLang = langForm.m_SelectLang;
            }
            else
            {
                MetroMessageBox.Show(this, "Select Lang.", "Search", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

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

            Transaction        tran    = new Transaction();//거래내용 조회
            GTF_ReceiptPrinter printer = new GTF_ReceiptPrinter(null);

            printer.setPrinter(Constants.PRINTER_TYPE);
            string strSlip_no = m_SlipNo;
            string retailer   = "";
            string docid      = "";
            string goods      = "";
            string tourist    = "";
            string singinfo   = "";
            string adsinfo    = "";

            JArray arrComm   = new JArray();
            JArray arrExComm = new JArray();
            JToken signToken;

            string  strRes        = tran.getSlipPrintInfo(strSlip_no);
            JObject result        = JObject.Parse(strRes);
            JToken  retailerToken = result["retailerInfo"].DeepClone();
            JToken  touristToken  = result["touristInfo"].DeepClone();
            JToken  refundToken   = result["refundInfo"].DeepClone();
            JToken  saleToken     = result["saleInfo"].DeepClone();

            if (result["signInfo"] != null)
            {
                signToken = result["signInfo"].DeepClone();
            }
            else
            {
                signToken = null;
            }
            JArray goodsList = JArray.Parse(result["goodsList"].ToString());

            tourist  = touristToken["PASSPORT_TYPE"].ToString() + "|";
            tourist += touristToken["PASSPORT_SERIAL_NO"].ToString() + "|";
            tourist += touristToken["BUYER_NAME"].ToString() + "|";
            tourist += touristToken["NATIONALITY"].ToString() + "|";
            tourist += touristToken["BUYER_BIRTH"].ToString() + "|";
            tourist += touristToken["RESIDENCE"].ToString() + "|";
            tourist += touristToken["ENTRYDT"].ToString() + "|";

            retailer  = retailerToken["TAXOFFICE_NAME"].ToString() + "|";
            retailer += retailerToken["TAX_ADDR1"].ToString() + "|";
            retailer += retailerToken["TAX_ADDR2"].ToString() + "|";

            retailer += retailerToken["MERCHANT_JPNM"].ToString() + "|";
            retailer += retailerToken["JP_ADDR1"].ToString() + "|";
            retailer += retailerToken["JP_ADDR2"].ToString() + "|";
            retailer += retailerToken["OPT_CORP_JPNM"].ToString() + "|";

            docid += strSlipLang + "|";                         //출력언어
            if (Constants.PRINT_TYPE != "ALL")
            {
                docid += "1" + "|";       //출력전표 갯수
                docid += "01" + "|";      //출력
            }
            else
            {
                docid += "2" + "|";         //출력전표 갯수
                docid += "01/02" + "|";     //출력
            }
            docid += "[REPUBLISH]" + "|";   //출력유형
            docid += strSlip_no + "|";

            docid += "N" + "|";                                       //합산전표 출력여부

            docid += refundToken["REFUND_WAY_CODE"].ToString() + "|"; //
            docid += refundToken["REFUND_WAY_CODE_DESC"].ToString() + "|";
            docid += refundToken["MASK_REMIT_NO"].ToString() + "|";
            docid += retailerToken["UNIKEY"].ToString();

            goods = retailerToken["SALEDT"].ToString() + "|";
            long com_cnt   = Int64.Parse(saleToken["COM_COUNT"].ToString());
            long excom_cnt = Int64.Parse(saleToken["EXCOM_COUNT"].ToString());

            if (com_cnt > 0 && excom_cnt > 0)
            {
                goods += "2" + "|";
            }
            else if (com_cnt > 0 || excom_cnt > 0)
            {
                goods += "1" + "|";
            }
            else
            {
                MetroMessageBox.Show(this, Constants.getMessage("ERROR_ISSUE"), "Issue", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //setWaitCursor(false);
                return;
            }

            for (int i = 0; i < goodsList.Count; i++)
            {
                JObject tempObj   = (JObject)goodsList[i];
                string  item_code = tempObj["GOODS_ITEMS_CODE"].ToString();

                if (item_code.Equals("A0002"))
                {
                    arrComm.Add(tempObj);
                }
                else
                {
                    arrExComm.Add(tempObj);
                }
            }

            if (arrComm != null && arrComm.Count > 0)
            {
                goods += "01" + "|";           //물품종류(소비)
                goods += arrComm.Count + "|";  //물품갯수
                for (int i = 0; i < arrComm.Count; i++)
                {
                    JObject tempObj = (JObject)arrComm[i];

                    goods += tempObj["GOODS_NAME"].ToString() + "|";
                    goods += tempObj["GOODS_UNIT_PRICE"].ToString() + "|";
                    goods += tempObj["GOODS_QTY"].ToString() + "|";
                    goods += tempObj["GOODS_AMT"].ToString() + "|";
                }

                goods += saleToken["TOTAL_COMM_SALE_AMT"].ToString() + "|";
                goods += saleToken["TOTAL_COMM_TAX_AMT"].ToString() + "|";
                goods += saleToken["TOTAL_COMM_REFUND_AMT"].ToString() + "|";
                goods += "|";;
            }

            if (arrExComm != null && arrExComm.Count > 0)
            {
                goods += "02" + "|";            //물품종류(일반)
                goods += arrExComm.Count + "|"; //물품갯수
                for (int i = 0; i < arrExComm.Count; i++)
                {
                    JObject tempObj = (JObject)arrExComm[i];

                    goods += tempObj["GOODS_NAME"].ToString() + "|";
                    goods += tempObj["GOODS_UNIT_PRICE"].ToString() + "|";
                    goods += tempObj["GOODS_QTY"].ToString() + "|";
                    goods += tempObj["GOODS_AMT"].ToString() + "|";
                }

                goods += saleToken["TOTAL_EXCOMM_SALE_AMT"].ToString() + "|";
                goods += saleToken["TOTAL_EXCOMM_TAX_AMT"].ToString() + "|";
                goods += saleToken["TOTAL_EXCOMM_REFUND_AMT"].ToString() + "|";
                goods += "|";
            }
            goods += Int64.Parse(saleToken["TOTAL_EXCOMM_TAX_AMT"].ToString()) + Int64.Parse(saleToken["TOTAL_COMM_TAX_AMT"].ToString()) + "|";
            goods += Int64.Parse(saleToken["TOTAL_EXCOMM_SALE_AMT"].ToString()) + Int64.Parse(saleToken["TOTAL_COMM_SALE_AMT"].ToString()) + "|";
            goods += ((Int64.Parse(saleToken["TOTAL_EXCOMM_TAX_AMT"].ToString()) + Int64.Parse(saleToken["TOTAL_COMM_TAX_AMT"].ToString())) -
                      (Int64.Parse(saleToken["TOTAL_EXCOMM_REFUND_AMT"].ToString()) + Int64.Parse(saleToken["TOTAL_COMM_REFUND_AMT"].ToString()))) + "|";
            goods += Int64.Parse(saleToken["TOTAL_EXCOMM_REFUND_AMT"].ToString()) + Int64.Parse(saleToken["TOTAL_COMM_REFUND_AMT"].ToString()) + "|";


            if (signToken != null)
            {
                singinfo = signToken["SIGN_DATA"].ToString();
            }
#if DEBUG
            printer.PrintSlip_ja(docid.Replace("[REPUBLISH]", "0"), retailer, goods, tourist, adsinfo, true, singinfo);
#else
            printer.PrintSlip_ja(docid.Replace("[REPUBLISH]", "0"), retailer, goods, tourist, adsinfo, false, singinfo);
#endif
        }
        public int PrintRefundSlip(JObject slipData)
        {
            int nRet = 0;

            //string filePath_QR = Directory.GetCurrentDirectory() + "/../Image/gtf_qr.bmp";
            //string filePath_LOGO = Directory.GetCurrentDirectory() + "/../Image/gtf_logo.bmp";
            //string filePath_ROUND_LOGO = Directory.GetCurrentDirectory() + "/../Image/gtf_logo_round.bmp";
            //string filePath_Combine = Directory.GetCurrentDirectory() + "/../Image/combine_QR.jpg";

            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                writer = new BarcodeWriter
                {
                    Format  = BarcodeFormat.QR_CODE,
                    Options = new QrCodeEncodingOptions
                    {
                        Width  = 120,
                        Height = 120
                    }
                };
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                writer = new BarcodeWriter
                {
                    Format  = BarcodeFormat.QR_CODE,
                    Options = new QrCodeEncodingOptions
                    {
                        Width  = 160,
                        Height = 160
                    }
                };
            }


            qrbmp = new Bitmap(writer.Write(slipData["buy_serial_no"].ToString()));
            using (var stream = new FileStream(Constants.filePath_QR, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                ImageConverter converter = new ImageConverter();
                byte[]         qrBytes   = (byte[])converter.ConvertTo(qrbmp, typeof(byte[]));
                stream.Write(qrBytes, 0, qrBytes.Length);
                stream.Close();
            }


            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                bmap = new Bitmap(214, 120);
                Graphics g = Graphics.FromImage(bmap);

                img  = Bitmap.FromFile(Constants.filePath_ROUND_LOGO_NORMAL);
                img2 = Bitmap.FromFile(Constants.filePath_QR);

                g.DrawImage(img, 0, 0);
                g.DrawImage(img2, 94, 0);

                bmap.Save(Constants.filePath_Combine, ImageFormat.Jpeg);
                bmap.Dispose();
                img.Dispose();
                img2.Dispose();
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                bmap = new Bitmap(126 + 160, 160);
                Graphics g = Graphics.FromImage(bmap);

                img  = Bitmap.FromFile(Constants.filePath_ROUND_LOGO);
                img2 = Bitmap.FromFile(Constants.filePath_QR);

                g.DrawImage(img, 0, 0);
                g.DrawImage(img2, 126, 0);

                bmap.Save(Constants.filePath_Combine, ImageFormat.Jpeg);
                bmap.Dispose();
                img.Dispose();
                img2.Dispose();
            }


            GTF_ReceiptPrinter dd  = new GTF_ReceiptPrinter();
            WindowPrinterUtil  wpu = new WindowPrinterUtil();

            if (Constants.PRINTER_SELECT_TYPE == 0) //일반프린터
            {
                //dd.PrintHotelRefundSlip_Printer(Constants.PRINTER_OPOS_TYPE, Constants.PRINTER_OPOS_TYPE);
                wpu.PrintRefundSlip(slipData);
            }
            else if (Constants.PRINTER_SELECT_TYPE == 1) //영수증 프린터
            {
                try {
                    Utils           util = new Utils();
                    System.DateTime sd   = new System.DateTime(Int32.Parse(slipData["sale_date"].ToString().Substring(0, 4)),
                                                               Int32.Parse(slipData["sale_date"].ToString().Substring(4, 2))
                                                               , Int32.Parse(slipData["sale_date"].ToString().Substring(6, 2)));
                    sd = sd.AddMonths(3);
                    Encoding enc = Encoding.Default;
                    //Constants.PRINTER_OPOS_TYPE = "BIXOLON350";
                    Boolean bOpen = dd.OpenOPOS(Constants.PRINTER_OPOS_TYPE);

                    StringBuilder sb = new StringBuilder();
                    dd.PrintOPOS_Text(ESC + "|cA" + ESC + "|N" + CRLF);

                    //로고는 이미지로 대체
                    //dd.PrintOPOS_Text( ESC + "|2C" + ESC + "|cA" +ESC + "!0" + "GLOBAL TAX FREE "  + CRLF);
                    dd.PrintOPOS_BMP(Constants.filePath_LOGO);


                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|cA" + ESC + "!0" + "숙 박 용 역" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "Hotel Tax Refund" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "This Document is authorized by Korea NTS" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "국세청장이 인정한 서식임" + CRLF);

                    dd.PrintOPOS_BMP(Constants.filePath_Combine);
                    //dd.PrintOPOS_BMP(filePath_QR);
                    //dd.PrintOPOS_BMP(filePath_ROUND_LOGO);
                    //dd.PrintOPOS_BMP(filePath_Combine2);
                    //bool bTest = true;
                    //if (bTest)
                    //{
                    //    dd.PrintOPOS_Text(ESC + "|N" + "Guest's Signature" + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                    //    return 0;
                    //}

                    dd.font_change_Small();

                    string strBuySerialNo = slipData["buy_serial_no"].ToString();
                    dd.PrintOPOS_Text(ESC + "|N" + "[email protected]            www.global-taxfree.com" + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + "Contact Us : +82 2 518 0837" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "단말기 ID " + slipData["tml_id"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "구매일련번호      " + strBuySerialNo.Substring(0, 2)
                                      + "-" + strBuySerialNo.Substring(2, 5)
                                      + "-" + strBuySerialNo.Substring(7, 5)
                                      + "-" + strBuySerialNo.Substring(12, 2)
                                      + "-" + strBuySerialNo.Substring(14)
                                      + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "호텔/Hotel" + CRLF);
                    String strBizPermitNo = slipData["biz_permit_no"].ToString();
                    strBizPermitNo = strBizPermitNo.Substring(0, 3) + "-" + strBizPermitNo.Substring(3, 2) + "-" + strBizPermitNo.Substring(5);
                    dd.PrintOPOS_Text(ESC + "|N" + "사업자번호 " + strBizPermitNo.PadLeft(nPaddingLen_big - 11, ' ') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "관광사업등록번호 " + "".PadLeft(nPaddingLen_big - 17 - enc.GetByteCount(slipData["company_reg_no"].ToString()), ' ') + slipData["company_reg_no"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "상호 " + "".PadLeft(util.getPaddingLen(nPaddingLen_big - 5
                                                                                         - enc.GetByteCount(slipData["shop_name"].ToString())), ' ') + slipData["shop_name"].ToString() + CRLF);

                    int nCeoNameCnt = enc.GetByteCount(slipData["ceo_name"].ToString());
                    dd.PrintOPOS_Text(ESC + "|N" + "대표자 " + "".PadLeft(nPaddingLen_big - 7
                                                                       - enc.GetByteCount(slipData["ceo_name"].ToString()), ' ') + slipData["ceo_name"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "주소 " + "".PadLeft(util.getPaddingLen(nPaddingLen_big - 5 - enc.GetByteCount(slipData["shop_addr"].ToString())), ' ')
                                      + slipData["shop_addr"].ToString() + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "연락처 " + slipData["shop_phone"].ToString().PadLeft(nPaddingLen_big - 7, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    string strDate = slipData["sale_date"].ToString();
                    strDate = strDate.Substring(0, 4) + "-" + strDate.Substring(4, 2) + "-" + strDate.Substring(6, 2);
                    dd.PrintOPOS_Text(ESC + "|N" + "Date of sale " + strDate.PadLeft(nPaddingLen_big - 13, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "숙박내역/Description of Accommodation " + CRLF);
                    if (slipData["buyList"] != null)
                    {
                        if (slipData["buyList"] is JArray)
                        {
                            JArray arrBuyData = (JArray)slipData["buyList"];
                            for (int i = 0; i < arrBuyData.Count(); i++)
                            {
                                dd.PrintOPOS_Text((i + 1) + ". " + arrBuyData[i]["goods_name"].ToString()
                                                  + (arrBuyData[i]["qty"].ToString() + " Nights")
                                                  .PadLeft(nPaddingLen_big - enc.GetByteCount((i + 1) + ". " + arrBuyData[i]["goods_name"].ToString()), ' ')
                                                  + CRLF);
                                dd.PrintOPOS_Text("   공급가격 Payment(Inc.Tax) " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(arrBuyData[i]["sales_amount"].ToString())).PadLeft(nPaddingLen_big - 29, ' ') + CRLF);
                                dd.PrintOPOS_Text("   부가세   V.A.T " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(arrBuyData[i]["tax_amount"].ToString())).PadLeft(nPaddingLen_big - 18, ' ') + CRLF);
                            }
                        }
                    }

                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text("합계       Total " + CRLF);

                    dd.PrintOPOS_Text("공급가격   Payment(Inc.Tax) " + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["sales_amount"].ToString())).PadLeft(nPaddingLen_big - 28, ' ') + CRLF);
                    dd.PrintOPOS_Text("부가세     V.A.T" + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["tax_amount"].ToString())).PadLeft(nPaddingLen_big - 16, ' ') + CRLF);
                    dd.PrintOPOS_Text("환급액     Refund Amount" + string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:n0}", Int64.Parse(slipData["refund_amount"].ToString())).PadLeft(nPaddingLen_big - 24, ' ') + CRLF);
                    dd.PrintOPOS_Text("환급유효기간/Refund Expiry date " + sd.ToString("yyyy-MM-dd").PadLeft(nPaddingLen_big - 33, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "투숙객/GUEST Your Passport Info in English" + CRLF);
                    dd.font_change_Big();
                    dd.PrintOPOS_Text(ESC + "|N" + "Passport Full Name " + CRLF);
                    String passportName = slipData["passport_name"] != null ? slipData["passport_name"].ToString().PadLeft(nPaddingLen_big, ' ') :"";
                    String passportNat  = slipData["passport_nat"] != null ? slipData["passport_nat"].ToString() : "";
                    String passportNo   = slipData["passport_no"] != null ? slipData["passport_no"].ToString() :"";

                    dd.PrintOPOS_Text(ESC + "|N" + passportName + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Passport No " + passportNo.PadLeft(nPaddingLen_big - 12, ' ') + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Nationality " + passportNat.PadLeft(nPaddingLen_big - 12, ' ') + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();

                    dd.PrintOPOS_Text(ESC + "E" + FONT_BOLD + "환급수단/Refund Option " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]Credit Card (Visa/Master/JCB/CUP)" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Card No." + CRLF + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]QQ Number" + CRLF + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "[  ]Alipay" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "(Alipay Mobile phone number 11digits)" + CRLF + CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "-".PadRight(nPaddingLen, '-') + CRLF);
                    dd.font_change_Big();

                    //출력데이터 추가

                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + ESC + "|uC" + "Consent to collect, use and disclose" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + ESC + "|uC" + "of personal information" + CRLF);

                    dd.PrintOPOS_Text(ESC + "|N" + "1. Personal Information Recipients" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Hotel Tax Refund Processing Government " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " organizations" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "2. Purpose of collection and use of personal" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - To confirm identification and check departure " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " for V.A.T. refund of foreign tourists received " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " hotel accommodation." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "3. Categories for collecting personal information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Personal Information : Name, Date of Birth, " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Nationality, Passport No., Date of Departure," + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " Date of arrival" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Unique Identification Information : Passport " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " No." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "4. Period of holding and using personal " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " information" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - The taxation period which includes The date " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " when the V.A.T. refund or remittance is " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " received" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "5. Withdrawal of consent and contents of " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " disadvantage" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - You have right to withdraw consents.However, " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " consequence follows(You may only receive V.A.T. " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " refund at the refund counter within the airport  " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " or port of departure)" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " - Personal information will not be disclosed " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + " for any other collected purpose" + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "I will consent to disclosure of personal " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "information." + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "I will consent to disclosure of unique " + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "identification information. " + CRLF);

                    //String strCurrntDate = DateTime.Now.ToString("yyyy.MM.dd");

                    String strCurrntDate = slipData["sale_date"].ToString().Substring(0, 4) + "." + slipData["sale_date"].ToString().Substring(4, 2) + "." + slipData["sale_date"].ToString().Substring(6, 2);
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + strCurrntDate + CRLF);
                    dd.PrintOPOS_Text(ESC + "|N" + "Name " + passportName.Trim().PadLeft(nPaddingLen_big - 5, ' ') + CRLF);

                    //2018.04.03 영수증프린터 출력 데이터 변경
                    //dd.PrintOPOS_Text(ESC + "|N" + "I agree to voluntarily provide personal INFO." + CRLF + CRLF);
                    //dd.PrintOPOS_Text(ESC + "|N" + "Guest's Signature" + CRLF + CRLF );
                    dd.PrintOPOS_Text(ESC + "|N" + "Signature" + CRLF + CRLF);
                    if (slipData["sign_img"] != null && !"".Equals(slipData["sign_img"].ToString().Trim()))
                    {
                        byte[]         sign_buff      = System.Convert.FromBase64String(slipData["sign_img"].ToString());
                        ImageConverter imageConverter = new ImageConverter();
                        Image          image          = (Image)imageConverter.ConvertFrom(sign_buff);
                        Image          resizeImage    = new Bitmap(image, new Size(360, 96));
                        resizeImage.Save(Constants.filePath_Sign, ImageFormat.Jpeg);
                        image.Dispose();
                        resizeImage.Dispose();
                        dd.PrintOPOS_BMP(Constants.filePath_Sign);
                    }
                    else
                    {
                        dd.PrintOPOS_Text(CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                    }
                    dd.PrintOPOS_Text(CRLF);
                    dd.font_change_Small();
                    dd.PrintOPOS_Text(ESC + "|N" + ESC + "|cA" + "ver." + Properties.Resources.appVer + CRLF + CRLF);
                    dd.PrintOPOS_Text(CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF + CRLF);
                }
                catch (Exception e)
                {
                    m_Logger.Error(e.Message, e);
                    Console.WriteLine(e.Message);
                }finally
                {
                    if (dd != null)
                    {
                        dd.CusPaper();
                        dd.CloseOPOS();
                    }
                    if (writer != null)
                    {
                        writer = null;
                    }
                    if (qrbmp != null)
                    {
                        qrbmp.Dispose();
                        qrbmp = null;
                    }
                    if (bmap != null)
                    {
                        bmap.Dispose();
                        bmap = null;
                    }
                    if (img != null)
                    {
                        img.Dispose();
                        img = null;
                    }
                    if (img2 != null)
                    {
                        img2.Dispose();
                        img2 = null;
                    }
                }
            }

            try
            {
                if (System.IO.File.Exists(Constants.filePath_QR))
                {
                    System.IO.File.Delete(Constants.filePath_QR);
                }
                if (System.IO.File.Exists(Constants.filePath_Combine))
                {
                    System.IO.File.Delete(Constants.filePath_Combine);
                }
                if (System.IO.File.Exists(Constants.filePath_Sign))
                {
                    System.IO.File.Delete(Constants.filePath_Sign);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(nRet);
        }