关于医院精确套打发票的实现

      某同学医院收费系统的开发公司倒闭,现在用的半死不活,勉强可以凑合用,只是可以打印药品清单,没有提供发票格式打印。原来发票是一个古老的dos版本票据打印软件,现在要求增加一项公费医疗,要求打印公费医疗支付比例。所以让我帮他搞定这个问题

     现在软件是实现了他们要求打印的功能,我也受了很多折磨,查阅了很多资料,差点万念俱灰了。

    我把我碰到的问题一一列出,并给出我的方案,源码太简单就不贴出来了,需要人找我我会发给你们参考。高手就不要笑话俺们这些个低手了,俺们需要不断的学习的

    1.首要问题是针式打印机自定义纸张大小问题?

       感谢/ <summary>
            /// 成都微创工作室(电子科技大学微创工作室)
           /// Tell 028-82853098
         /// Email zyspipi@163.com  , you680@gmail.com
        /// 打印机纸张的真正自定义部分代码
       /// 2006-1-2

       他们提供一个解决方案,调用api 实现自定义纸张大小的方法,这个是解决问题的关键,需要的去网上搜索他们的源码。

     2. 小写金额转换大写的转换问题?

 我用一个类实现    

 class Bigconvert
    {
        const string z0 = "零";
        const string z1 = "壹";
        const string z2 = "贰";
        const string z3 = "叁";
        const string z4 = "肆";
        const string z5 = "伍";
        const string z6 = "陆";
        const string z7 = "柒";
        const string z8 = "捌";
        const string z9 = "玖";
      //  const string z10 = "拾";

        private string wan;

        public string Wan
        {
            get { return wan; }
            set { wan = value; }
        }
        private string qian;
        public string Qian
        {
            get { return qian; }
            set { qian = value; }
        }
        private string bai;
        public string Bai
        {
            get { return bai; }
            set { bai = value; }
        }
        private string shi;
        public string Shi
        {
            get { return shi; }
            set { shi = value; }
        }
        private string yuan;
        public string Yuan
        {
            get { return yuan; }
            set { yuan = value; }
        }
        private string jiao;
        public string Jiao
        {
            get { return jiao; }
            set { jiao = value; }
        }
        private string fen;
        public string Fen
        {
            get { return fen; }
            set { fen = value; }
        }
        public static string z1daoyi(char   i)
        {
            switch (i)
            {
                case  '0':
                    return z0;
                  
                case ' ':
                    return z0;
                  
                case '1':
                    return z1;
                  
                case'2':
                    return z2;
                   
                case '3':
                    return z3;
                   
                case '4':
                    return z4;
                  
                case '5':
                    return z5;
                  
                case '6':
                    return z6;
                  
                case '7':
                    return z7;
                  
                case '8':
                    return z8;
                  
                case '9':
                    return z9;
                  
               default :
                   return "";
                   

              

            }
        }
        public static Bigconvert dx(string str)
        {
            Bigconvert dd = new Bigconvert();
            char[] je =shoujuprint.Convert8(str).ToCharArray();
            for (int i = 0; i <= 7; i++)
            {
                switch (i)
                {
                    case 0:
                        dd.Wan = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 1:
                        dd.Qian = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 2:
                        dd.Bai = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 3:
                        dd.Shi = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 4:
                        dd.Yuan = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 5:
                        break;
                    case 6:
                        dd.Jiao = Bigconvert.z1daoyi(je[i]);
                        break;
                    case 7:
                        dd.Fen = Bigconvert.z1daoyi(je[i]);
                        break;
                   
                       

                }

            }
            return dd;

        }
    }

3.发票上项目金额小写右对齐问题?

我只是实现5位数字的不超过万位,

 class fpshuziyouduiqi

    {
        public static  string Convert8(string str)
        {
            if (str == "")
                return "";
            else
            {
                string i = "";
                i = string.Format("{0:00000.00}", Convert.ToDouble(str));
                return zh(i);
            }

        }
       private static string zh(string a)
        {
            string b = "";

            char[] d = a.ToCharArray();

            for (int i = 0; i <= 7; i++)
            {
                if (i == 4 && d[4] == '0')
                {
                    b = "    0";
                    b += d[5];
                    b += d[6];
                    b += d[7];
                    return b;
                }

                if (d[i] == '0')
                    b += " ";
                else
                {
                    for (int j = i; j <= 7; j++)
                    { b += d[j]; }
                    return b;
                }
            }
           return b;
        }

}

4,打印事件实现?

       
            其他都跟文本打印一样,不熟悉的看看帮助文档,主要是设置绘制的单位为毫米,就可以精确控制了打印输出了
           就是这个 g.PageUnit = GraphicsUnit.Millimeter;

以上为基本思路,有些网友说用水晶报表解决,水晶报表我还没有去研究,有了这个思路,基本上解决其他精确套打的比如支票,快递单据都应该可以解决了。

希望对这个问题困惑的朋友能够多个小提示。可以qq跟我交流106782465

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DELPHI 支票打程序,可以从excel中导入数据打印。打印格式完全可以定制,适用于各个国家的支票以及其他的需要打的东西。全部源代码。 E:\work\yan 的目录 2012/09/19 13:39 . 2012/09/19 13:39 .. 2012/09/19 13:39 0 a.txt 2012/09/18 09:00 7,860 ABOUT.dcu 2012/09/18 08:59 42,189 ABOUT.dfm 2012/09/18 09:01 2,163 ABOUT.pas 2012/09/18 09:01 1,470 ChequePrint.dpr 2012/09/18 08:59 7,572 ChequePrint.dproj 2012/09/18 09:01 62 ChequePrint.dproj.local 2012/09/18 08:59 64,061 ChequePrint.drc 2012/09/18 09:01 876,544 ChequePrint.ENU 2012/09/18 09:00 7,260,672 ChequePrint.exe 2012/09/18 08:59 876,544 ChequePrint.HEB 2012/09/19 13:03 524 ChequePrint.identcache 2012/09/19 11:53 8,632 ChequePrint.res 2012/09/18 09:01 7,358 ChequePrint_Icon.ico 2012/09/18 08:59 7,358 ChequePrint_Icon1.ico 2012/09/18 08:59 7,358 ChequePrint_Icon2.ico 2012/09/18 09:01 ENU 2012/09/18 09:01 Excel 2012/09/18 09:01 17,612 FieldPropertiesUnit.dcu 2012/09/18 09:01 25,175 FieldPropertiesUnit.dfm 2012/09/18 09:01 8,370 FieldPropertiesUnit.pas 2012/09/18 09:00 4,660 Fieldslistunit.dcu 2012/09/18 09:01 600 Fieldslistunit.dfm 2012/09/18 09:01 527 Fieldslistunit.pas 2012/09/18 09:00 96,448 GlobalUnit.dcu 2012/09/18 09:01 91,161 GlobalUnit.pas 2012/09/18 09:01 HEB 2012/09/18 09:01 images 2012/09/18 08:59 Install 2012/09/18 09:00 languages 2012/09/18 08:59 1,769,472 LicensesConfirm.dll 2012/09/18 09:01 68,608 LicensesConfirm.ENU 2012/09/18 09:01 69,120 LicensesConfirm.HEB 2012/09/18 09:01 88,064 LicensesConfirm.RUS 2012/09/18 09:01 88,064 LicensesConfirm.UKR 2012/09/18 09:00 107,240 mainunit.dcu 2012/09/18 08:59 75,527 mainunit.dfm 2012/09/18 09:01 79,042 mainunit.pas 2012/09/19 11:53 15,868 Mover.dcu 2012/09/18 09:00 13,978 Mover.pas 2012/09/18 09:01 9,092 PagePropertiesUnit.dcu 2012/09/18 09:00 4,156 PagePropertiesUnit.dfm 2012/09/18 09:00 2,879 PagePropertiesUnit.pas 2012/09/18 09:01 7,384 printersetup.dcu 2012/09/18 09:01 5,644 PrinterSetup.pas 2012/09/18 09:00 printpreview 2012/09/18 09:01 50,640 PrintUnit.dcu 2012/09/18 09:01 764,788 PrintUnit.dfm 2012/09/18 09:01 30,595 PrintUnit.pas 2012/09/18 09:01 2,217 ProjectGroup1.groupproj 2012/09/18 08:59 199 ProjectGroup1.groupproj.local 2012/09/19 11:53 4,947 reinit.dcu 2012/09/18 09:00 3,635 reinit.pas 2012/09/18 09:01 6,587 ServerRegistryUnit.dcu 2012/09/18 09:00 7,837 ServerRegistryUnit1.dcu 2012/09/18 09:01 6,545 ServerRegistryUnit1.pas 2012/09/18 09:01 Templates 2012/09/18 09:00 481,792 test.xls 2012/09/18 09:00 6,222 TipForm.dcu 2012/09/18 08:59 4,914 TipForm.dfm 2012/09/18 09:01 1,211 TipForm.pas 2012/09/18 09:01 25,647 uSthEvaluator.dcu 2012/09/18 08:59 22,195 uSthEvaluator.pas 2012/09/18 09:01 6,723 utils.dcu 2012/09/18 09:01 6,497 utils.pas 57 个文件 13,252,249 字节 10 个目录 164,096,159,744 可用字节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值