1、 重庆发票打印程序设计 第一部分 重庆电费发票票面主要内容说明 1、“实收金额”表示本次实际收到客户所交电费的金额。 2、“上次余额”表示截止上次缴费或抵扣止客户帐上的余额。结余为负表示客户欠费,结余为正表示客户预存电费。 3、“本次余额”表示客户本次付款后,或本次抵扣后客户帐上的余额。结余为负表示客户欠费,结余为正表示客户预存电费。 4、应收电费:表示公司本月实际应收客户电费的金额。 5、发票或清单“应收电费”后面内容是“应收电费”的明细构成。 第二部分 重庆电费发票使用业务规则 一、非增值税客户业务规则 1、符合下列条件之一,向客户提供发票: (1)收到客
2、户款项; (2)系统用 “上次余额”完整自动冲抵了应收电费且客户提出发票需求;(仅限供电局营业厅使用) (3)办理托收业务手续时。 2、每次抄表出帐后只能向客户提供一次具有“应收电费”及其明细的发票。只有在系统已出帐,产生了客户应收电费且符合下列条件之一时,发票上才体现“计费月份”、“应收电费”及其明细项目。 (1)客户第一次付款; (2)系统自动用 “上次余额”足额清算应收电费; (3)用 “上次余额”不能足额清算应收电费,客户提出发票需求,经本局市场营销部主任批准后。 3、有数笔欠费的客户在供电局营业厅缴费时,一次不能足额清偿累计欠费的,原则上按先进先出法进行清算。但客户有明
3、确要求时,按客户指定的月份进行清算。对于未清偿月份的电费,不得向客户提供该月应收电费的情况,在客户已清偿月份的电费发票上打印“特别提示:此发票本次余额X元不包括X年X月的应收电费X元”。 有多笔欠费的客户在代收机构缴费时,代收机构分笔体现实收,如存在某月或某几月的电费未清则在发票上打印“特别提示:此发票本次余额X元不包括X年X月的应收电费X元”。 4、由于上述第3款的原因,发票另有“特别提示”的除外,公司与客户之间的在收费时点的债权债务金额为电费发票上的“本次余额-本次取整结余”。对于专变客户,当“本次余额-本次取整结余”为负时,应要求客户在发票的存根联上签字确认。 5、对于因支票、汇票
4、退回原因导致收款失败,应收回已开出的相应发票。 6、供电局前台和代收机构柜台现金代收可以满足客户等额、超额、差额付款。其他收款方式如银行代收代扣、电话网上缴费等只能满足客户等额付款。 7、因某种原因需退还客户电费,分以下几种情况分别处理: (1)因抄表计量错误引起应收电费错误,在CCS系统中进行调整性撤回而需退费的,开具实收金额和应收电费为负的发票。 (2)代收机构需退费时,应将已开出的发票收回作废,不得开具负金额的电费发票(系统不得向代收机构提供可开具负金额的电费发票功能)。 8、普通发票上的本次余额=(实收金额+上次余额)-(应收金额+违约金) 二、增值税客户业务规则 1、增
5、值税客户的付款、违约金及余额情况,均在销货清单上反映。 2、遵守非增值税客户规则的1-6款规定(1-5款发票对应换为销货清单); 3、“零增值税部分”(即1.68分部分)的应收金额和取整结余使用普通发票。 4、只有在客户足额交纳某月电费时才可向客户提供增值税发票,且增值税发票金额等于客户当月电费扣减零增值税部分后的余额。 5、销货清单上的本次余额=(实收金额+上次余额)-(应收电费+清单中“扣减零增值税部分”+违约金); 6、因某种原因需退还客户电费时分别以下情况处理: (1)对未开增值税发票的,退费时的处理和非增值税客户的要求一致,只是对应的将发票换为清单。 (2)对已开增值税
6、发票的,在取得税务同意退费的证明之后,可开红字增值税发票退费,并开具相应红字销货清单。 第三部分 重庆票据打印的规则总结 1、在每次收费时候的开票方式存在四类:只开高压普通发票,只开低压普通发票,销货清单和开高压普通发票,销货清单和开低压普通发票 用户分类 CONS_SORT_CODE( 【0101 高压;;0104 小水电】;【0201;低压非居民;0302;低压居民】) 票据类型NOTE_TYPE_CODE( 【0101;普通发票】;【0201;增值税发票】 ) ü 高压普通发票的条件:客户的用户分类为高压\小水电,票据类型为普通发票 ü 低压普通发票的条件:客户的
7、用户分类为低压居民\低压非居民, 票据类型为普通发票 ü 销货清单和高压发票同时打印的条件为:客户的用户分类为高压\小水电, 票据类型为增值税发票 ü 销货清单和低压发票同时打印的条件为:客户的用户分类为低压居民\低压非居民, 票据类型为增值税发票 2、在非增值税用户,普通发票上的本次余额=(实收金额+上次余额)-(应收金额+违约金) 3、增值税用户销货清单上的本次余额 =(实收金额+上次余额-(【应收电费+清单中“扣减零增值税部分”】【代表了该户当月总应收电费】+违约金); 4、增值税用的普通发票上永远也不打印本次余额和下次余额和实收费电费、违约金,增值税用户的,普通发票
8、只有再本次缴费对应的销货清单上的在应收不为0的时候才可以打印。 5、所有余额的改变都与实收有关,单纯的应收改变不影响本次余额的改变 6、上次余额按照操作的先后顺序产生 7、应收数据的打印时针对对每月应收的实收的第一次收费才进行打印。 8、对发票或者销货清单,在一张发票上信息打印不完整时,需要打印多张,但是本次应收、本次实收、本次余额、上次月等信息都不打印,只打印电费的明细信息。 第四部分 常见业务发票打印说明 X 表示有打印的内容 - 表示不打印 付款情况 客户类型 发票类型 应收及明细金额 实收 上次余额 本次余额 等额付款 普通客户 普通发票
9、 X X X X 增值税客户 销货清单 X(除0增值税) X X X 普通发票 X(0增值税) - - - 超额付款(付款时) 普通客户 普通发票 X X X X 增值税客户 销货清单 X(除0增值税) X X X 普通发票 X(0增值税) - - - 在等额、超额的情况下客户以后的N次付费 普通客户 普通发票 - X X X 增值税客户 销货清单 - X X X 不足额付款 普通客户 普通发票 X X X X 增值税客户 销货清单 X(除0增值税) X X X 普通发票 X
10、0增值税) - - - 补足不足额付款(由于之间缴纳过费用再补充缴纳) 普通客户 普通发票 - X X X 增值税客户 销货清单 - X X X 补足不足额付款(由于自动冲减了部分电费再补充缴纳) 普通客户 普通发票 X X X X 增值税客户 销货清单 X(除0增值税) X X X 普通发票 X(0增值税) - - - 预付款(预付时) 普通客户 普通发票 - X X X 增值税客户 销货清单 - X X X 预付款(预收费完整的冲抵了一个月的电费,在客户需要发票的时候打印发票) 普通客户
11、普通发票 X - X X 增值税客户 销货清单 X(除0增值税) - X X 普通发票 X(0增值税) - - - 分次付款(前几次) 普通客户 普通发票 - X X X 增值税客户 销货清单 - X X X 分次付款(已经发行了应收:最后一次) 普通客户 普通发票 X X X X 增值税客户 销货清单 X(除0增值税) X X X 普通发票 X(0增值税) - - - 第五部分 程序设计 1、数模修改 1)在客户余额表(A_ACCT_BAL)增加发票余额(NOTE_BAL bumber
12、18,2))字段 2)新建表发票打印数据表 pub_a_ivn_prn 字段 字段名 类型 是否为空 主建 备注 唯一标示 NOTE_PRN_ID NUMBER(16,0) 否 是 缴费批次 Charge_PC NUMBER(16,0) 否 户号 CONS_NO VARCHAR2(16) 否 应收标识 RCVBL_AMT_ID NUMBER(16,0) 是 应收年月 RCVBL_YM VARCHAR2(6) 是 收费标识 CHARGE_ID NUMBER(16,0) 是 交易标
13、识 EXCHG_ID NUMBER(16,0) 是 是否打印 IF_PRN VARCHAR2(1) 否 默认为0 0为未打印 1为打印 2为作为 应收金额 THIS_RCVBL_AMT NUMBER(18,2) 是 违约金 THIS_PENALTY NUMBER(18,2) 是 实收金额 THIS_RCVED_AMT NUMBER(18,2) 是 上次余额 LAST_NOTE_AMT NUMBER(18,2) 是 本次余额 THIS_NOTE_AMT NUMBER(18,2) 是
14、 发票备注 CHARGE_REMARK VARCHAR2(600) 是 上次调尾 THIS_AMT NUMBER(18,2) 是 本次调尾 LAST_AMT NUMBER(18,2) 是 操作人员 User_no VARCHAR2(16) 是 缴费批次的编码规则 ‘YYYYMM’+10位序列;【需要定义序列】。 2、程序修改 第一:电费发行部分修改 1)对客户的预收费完整的冲减完客户当月的欠费时,需要向表pub_a_ivn_prn中写数据,写数据的规则如下: 字段 字段名 数据来源 唯一标示 NOTE_PR
15、N_ID 序列获得 缴费批次 Charge_PC ‘YYYYMM’+10位序列 户号 CONS_NO 客户的编号 应收标识 RCVBL_AMT_ID 当月应收标识 应收年月 RCVBL_YM 应收年月 收费标识 CHARGE_ID 冲减时收费记录表中的收费标识 交易标识 EXCHG_ID 空 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT 当月应收金额 违约金 THIS_PENALTY 0 实收金额 THIS_RCVED_AMT 0 上次余额 LAST_NOTE_AMT 从客户发票余额总获得 本次余额
16、THIS_NOTE_AMT 上次余额-应收金额 发票备注 CHARGE_REMARK 预收费自动冲减电费 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考虑 操作人员 User_no SYSTEM 同时更新表A_ACCT_BAL的NOTE_BAL字段 Update A_ACCT_BAL Set NOTE_BAL - THIS_RCVBL_AMT Where cons_no = ;as_cons_no; 提供界面:如果客户需要打印这张发票,打印结束后,修改IF_PRN为1 2)如果没有完整的冲减电费,不写入该表
17、3)发行负电费转预收费后写的规则如下 发行负电费转预收费,需要向表pub_a_ivn_prn中写数据, 写数据的规则如下: 字段 字段名 数据来源 唯一标示 NOTE_PRN_ID 序列获得 缴费批次 Charge_PC ‘YYYYMM’+10位序列 户号 CONS_NO 客户的编号 应收标识 RCVBL_AMT_ID 本次应收标识 应收年月 RCVBL_YM 应收年月 收费标识 CHARGE_ID 冲减时收费记录表中的收费标识 交易标识 EXCHG_ID 空 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT
18、 发生的负应收金额 违约金 THIS_PENALTY 0 实收金额 THIS_RCVED_AMT 0 上次余额 LAST_NOTE_AMT 从客户发票余额总获得 本次余额 THIS_NOTE_AMT 上次余额-应收金额 发票备注 CHARGE_REMARK 发行负电费转预收费 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考虑 操作人员 User_no SYSTEM 发行完负电费转入预收费时,需要同样更新发票余额,同时向表 同时更新表A_ACCT_BAL的NOTE_BAL字段 Update A_ACCT_
19、BAL Set NOTE_BAL = NOTE_BAL - THIS_RCVBL_AMT Where cons_no = ;as_cons_no;; 提供界面:如果客户需要打印这张发票,打印结束后,修改IF_PRN为1 第二:坐收收费结束,发票打印之前按照如下规则写入记录 1):单笔收费 在坐收收费结束后,需要向表需要向表pub_a_ivn_prn中写数据,写数据的规则如下: 字段 字段名 数据来源说明 唯一标示 NOTE_PRN_ID 序列 缴费批次 Charge_PC ‘YYYYMM’+10位序列 户号 CONS_NO 客户编号 应收标
20、识 RCVBL_AMT_ID 插入记录时,首先在该表中按照客户编号与应收 标识查询,如果查询存在记录,再本次插入记录为空, 负责写入本次缴费的应收标识;纯粹写预收费时为空 应收年月 RCVBL_YM 本笔电费对应的应收年月,否则写空 收费标识 CHARGE_ID 本次收费时对应的收费记录中的收费标识 交易标识 EXCHG_ID 银行代收、代扣等交易时填写 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT 当应收标识不为空时,填写当月的全部应收,否则为0 违约金 THIS_PENALTY 本次缴费时的实际违约金 实收金额 THIS
21、RCVED_AMT 本次缴费的实际金额 上次余额 LAST_NOTE_AMT 从客户发票余额中获取 本次余额 THIS_NOTE_AMT 上次余额+本次实收费-应收金额-违约金 发票备注 CHARGE_REMARK 空 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考虑 操作人员 User_no 收费人员编号 写入完后更新如下表 Update A_ACCT_BAL Set NOTE_BAL = THIS_NOTE_AMT Where cons_no = ;as_cons_no; 在收费结束操作后,打印
22、发票,修改IF_PRN 为1; 2):单笔收费单笔冲正,不打印发票 对表pub_a_ivn_prn进行更新操作,更新表IF_PRN字段为2 对表A_ACCT_BAL进行更新操作,更新NOTE_BAL字段的表pub_a_ivn_prn字段的LAST_NOTE_AMT;(或者在该表中按照户号查询,IF_PRN字段不为2的最后一条记录的THIS_NOTE_AMT字段的数值) 3):多笔收费程序设计 A:多笔收费现在在银行代收都是以单笔收费成功,再进行下一次操作,因此操作和前台单笔收费处理方式一样,只是在插入该表数据的时候,字段交易标识为代收交易流水号(缴费序号); B:对
23、代扣类缴费的时候,和单笔缴费处理方式相同,字段交易标识为代收交易流水号 C:前台坐收多笔缴费的时候,一次缴纳的金额是多笔电费的总金额时,在收费过程中,每销完一个月的帐后,都需要向表pub_a_ivn_prn中写数据,写数据的规则如下 销完第一个月后写的规则如下(第一个月指本次收费中后台销账时销账的月份) 字段 字段名 数据来源说明 唯一标示 NOTE_PRN_ID 序列 缴费批次 Charge_PC 比如批量收费的时候,本次批量收费的缴费批次为第一 笔销账时产生的缴费批次,尤其是不同客户一起缴费, 更要写正确,作为一起打印发票的条件 户号 CONS_N
24、O 客户编号 应收标识 RCVBL_AMT_ID 插入记录时,首先在该表中按照客户编号与应收 标识查询,如果查询存在记录,再本次插入记录为空, 负责写入本次缴费的应收标识;纯粹写预收费时为空 应收年月 RCVBL_YM 本笔电费对应的应收年月,否则写空 收费标识 CHARGE_ID 本次收费时对应的收费记录中的收费标识 交易标识 EXCHG_ID 银行代收、代扣等交易时填写 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT 当应收标识不为空时,填写当月的全部应收,否则为0 违约金 THIS_PENALTY 本次缴费时的实际违约金
25、 实收金额 THIS_RCVED_AMT 本次缴费的实际金额(多笔缴费时的缴费总金额), 包含为违约金 上次余额 LAST_NOTE_AMT 从客户发票余额中获取 本次余额 THIS_NOTE_AMT 上次余额+本次实收费-应收金额-违约金 发票备注 CHARGE_REMARK 此发票本次余额X元不包括X年X月的应收电费X元, 年X月应收电费X元….. 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考虑 操作人员 User_no 收费人员编号 Update A_ACCT_BAL Set NOTE_BAL = T
26、HIS_NOTE_AMT Where cons_no = ;as_cons_no; 销完第二个月后写的规则如下 字段 字段名 数据来源说明 唯一标示 NOTE_PRN_ID 序列 缴费批次 Charge_PC 比如批量收费的时候,本次批量收费的缴费批次为第一 笔销账时产生的缴费批次,尤其是不同客户一起缴费, 更要写正确,作为一起打印发票的条件 户号 CONS_NO 客户编号 应收标识 RCVBL_AMT_ID 插入记录时,首先在该表中按照客户编号与应收 标识查询,如果查询存在记录,再本次插入记录为空, 负责写入本次缴费的应收标识;纯粹写预收
27、费时为空 应收年月 RCVBL_YM 本笔电费对应的应收年月,否则写空 收费标识 CHARGE_ID 本次收费时对应的收费记录中的收费标识 交易标识 EXCHG_ID 银行代收、代扣等交易时填写 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT 当应收标识不为空时,填写当月的全部应收,否则为0 违约金 THIS_PENALTY 本次缴费时的实际违约金 实收金额 THIS_RCVED_AMT 本次缴费的实际金额(多笔缴费时的缴费总金额), 包含为违约金 上次余额 LAST_NOTE_AMT 从客户发票余额中获取 本次余额 T
28、HIS_NOTE_AMT 上次余额+本次实收费-应收金额-违约金 发票备注 CHARGE_REMARK 此发票本次余额X元不包括X年X月的应收电费X元, 年X月应收电费X元….. 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考虑 操作人员 User_no 收费人员编号 Update A_ACCT_BAL Set NOTE_BAL = THIS_NOTE_AMT Where cons_no = :as_cons_no; 后面如果再有缴费记录按照该方式依次类推; 在全部收费结束后,依据表pub_a_ivn_prn中的
29、数据进行发票打印,打印的顺序按照小用户普通发票,销货清单、大用户普通发票 的顺序进行打印。 第三:走收收费按照如下规则编写 在走收通知单打印的时候,按照前台单笔收费的方式进行同时插入该表,录入规则如下 字段 字段名 数据来源说明 唯一标示 NOTE_PRN_ID 序列 缴费批次 Charge_PC 户号 CONS_NO 客户编号 应收标识 RCVBL_AMT_ID 本次批量打印的缴费批次为第一 发票打印时生成的缴费批次,本次打印缴费通知单 的缴费批次保持和第一条相同。 应收年月 RCVBL_YM 本笔电费对应的应收年月,否则写空 收费标识
30、 CHARGE_ID 为空 交易标识 EXCHG_ID 位空 是否打印 IF_PRN 0 应收金额 THIS_RCVBL_AMT 本笔电费对应的应收金额 违约金 THIS_PENALTY 本次打印时的应收违约金 实收金额 THIS_RCVED_AMT 本次的应收金额和违约金之和 上次余额 LAST_NOTE_AMT 从客户发票余额中获取 本次余额 THIS_NOTE_AMT 上次余额+本次实收费-应收金额-违约金 发票备注 CHARGE_REMARK 空 上次调尾 THIS_AMT 暂时不考虑 本次调尾 LAST_AMT 暂时不考
31、虑 操作人员 User_no 走收单打印人员编号 走收的发票记录只作为暂时保存以备客户需要发票的时候打印所需要,同时一旦打印了走收单道收费结束之前,该客户违约金停止计算 对缴费回来以后未进行销账的的客户,只做单一的销账,对走回回来需要取消销账的客户,需要对应的发票打印记录进行作废。 在客户使用电费缴费单需要换取发票是,按照表pub_a_ivn_prn中的客户编号,和打印标志,查询未打印的记录打印相关的发票 第四:其它说明: 1、 在前台收费的时候结束后,依据客户的性质首先判定客户是开什么样的票据 2、 在收费过程中按照上面的规则写入对应的数据 3、 在收费结束后,按照
32、顺序提示客户放入对应的票据,进行打印。 4、 在客户作废收费记录,需要重新收费打印发票的时候,发票的余额在作废的时候应该从表pub_a_ivn_prn中获得最后一条打印标志不为2的记录的本次月,更新为客户的发票余额。后续的操作按照正常操作进行。 第五:公用方法 写一个方法,输入的是用户分类和客户的票据类型,得出是打印发票还是销货清单。 第六部分 发票打印场景举例 业务发生过程 发票余额变化 对应发票打印 业务发生场景,按顺序 预收费发生额 截止预收费 发票余额 ID 户号 实收收标识 应收标识 应收年月 预收标识 收费标识 是否打
33、印 应收 违约金 实收 上次余额 本次余额 备注 发行201001月电费 100 0 收取2010年电费 200 100 100 100 001 101 001 001 201001 001 100 200 0 100 发行201002月电费 50 预收费完整自动冲减电费
34、 50 -50 50 50 002 101 002 002 201002 002 50 0 100 50 发行2010年3月电费 100 部分冲减2010年3月部份电费 50 -50 0 0 收取2010年3月电费 20 0 0 0 003 101 003 003 201003 003
35、 100 20 50 -30 正常收费 50 20 20 20 004 101 004 004 0 50 -30 20 正常收费 50 50 70 70 005 101 001 005 0 50 20 70 发行201004 月电费 100 冲减2010年5月部份电费
36、 70 -70 0 发行2010年5月份电费 200 对两笔应收一并收费150 0 0 120 006 101 005 004 201004 006 100 150 70 120 -80 007 101 006 005 201005 006 200 0 120 -80 发行201006
37、月电费 100 打印201006月走收 发票 -80 008 101 006 201006 100 100 -80 -80 前台收费201005月份电费 80 0 009 101 007 005 201005 007 0 80 -80 0 情况一:足额销账100(更新"走收发行100") 008 101 008 006 20100
38、6 008 100 100 -80 -80 情况二:作废(打印201006月走收 发票) -100 -100 0 0 应收=实收 时不更新余额。 正常收费201006月电费 110 10 10 10 010 101 008 006 201006 008 100 110 0 10 发行201007 月电费 100
39、 部分冲减2010年7月部份电费 10 -10 0 发行201008 月电费 200 收费400 0 0 310 011 101 009 007 201007 009 100 400 10 310 110 012 101 010 008 201008 009 200 0 310 1
40、10 退费110 0 013 101 011 002 010 -110 110 0 调账收费400记录 -300 014 101 012 007 201007 011 -100 -400 0 -300 -100 015 101 013 008 201008 011 -200 0 -300 -100 收费100 0 016 101 014 012 1 100 -100 0 冲正100 -100 016 101 014 012 2 100 -100 0 冲正时只能按照收费顺序从后往前冲正,冲正作废发票打印信息同时将上次余额更新到用户发票余额字段中。






