资源描述
重庆发票打印程序设计
第一部分 重庆电费发票票面主要内容说明
1、“实收金额”表示本次实际收到客户所交电费的金额。
2、“上次余额”表示截止上次缴费或抵扣止客户帐上的余额。结余为负表示客户欠费,结余为正表示客户预存电费。
3、“本次余额”表示客户本次付款后,或本次抵扣后客户帐上的余额。结余为负表示客户欠费,结余为正表示客户预存电费。
4、应收电费:表示公司本月实际应收客户电费的金额。
5、发票或清单“应收电费”后面内容是“应收电费”的明细构成。
第二部分 重庆电费发票使用业务规则
一、非增值税客户业务规则
1、符合下列条件之一,向客户提供发票:
(1)收到客户款项;
(2)系统用 “上次余额”完整自动冲抵了应收电费且客户提出发票需求;(仅限供电局营业厅使用)
(3)办理托收业务手续时。
2、每次抄表出帐后只能向客户提供一次具有“应收电费”及其明细的发票。只有在系统已出帐,产生了客户应收电费且符合下列条件之一时,发票上才体现“计费月份”、“应收电费”及其明细项目。
(1)客户第一次付款;
(2)系统自动用 “上次余额”足额清算应收电费;
(3)用 “上次余额”不能足额清算应收电费,客户提出发票需求,经本局市场营销部主任批准后。
3、有数笔欠费的客户在供电局营业厅缴费时,一次不能足额清偿累计欠费的,原则上按先进先出法进行清算。但客户有明确要求时,按客户指定的月份进行清算。对于未清偿月份的电费,不得向客户提供该月应收电费的情况,在客户已清偿月份的电费发票上打印“特别提示:此发票本次余额X元不包括X年X月的应收电费X元”。
有多笔欠费的客户在代收机构缴费时,代收机构分笔体现实收,如存在某月或某几月的电费未清则在发票上打印“特别提示:此发票本次余额X元不包括X年X月的应收电费X元”。
4、由于上述第3款的原因,发票另有“特别提示”的除外,公司与客户之间的在收费时点的债权债务金额为电费发票上的“本次余额-本次取整结余”。对于专变客户,当“本次余额-本次取整结余”为负时,应要求客户在发票的存根联上签字确认。
5、对于因支票、汇票退回原因导致收款失败,应收回已开出的相应发票。
6、供电局前台和代收机构柜台现金代收可以满足客户等额、超额、差额付款。其他收款方式如银行代收代扣、电话网上缴费等只能满足客户等额付款。
7、因某种原因需退还客户电费,分以下几种情况分别处理:
(1)因抄表计量错误引起应收电费错误,在CCS系统中进行调整性撤回而需退费的,开具实收金额和应收电费为负的发票。
(2)代收机构需退费时,应将已开出的发票收回作废,不得开具负金额的电费发票(系统不得向代收机构提供可开具负金额的电费发票功能)。
8、普通发票上的本次余额=(实收金额+上次余额)-(应收金额+违约金)
二、增值税客户业务规则
1、增值税客户的付款、违约金及余额情况,均在销货清单上反映。
2、遵守非增值税客户规则的1-6款规定(1-5款发票对应换为销货清单);
3、“零增值税部分”(即1.68分部分)的应收金额和取整结余使用普通发票。
4、只有在客户足额交纳某月电费时才可向客户提供增值税发票,且增值税发票金额等于客户当月电费扣减零增值税部分后的余额。
5、销货清单上的本次余额=(实收金额+上次余额)-(应收电费+清单中“扣减零增值税部分”+违约金);
6、因某种原因需退还客户电费时分别以下情况处理:
(1)对未开增值税发票的,退费时的处理和非增值税客户的要求一致,只是对应的将发票换为清单。
(2)对已开增值税发票的,在取得税务同意退费的证明之后,可开红字增值税发票退费,并开具相应红字销货清单。
第三部分 重庆票据打印的规则总结
1、在每次收费时候的开票方式存在四类:只开高压普通发票,只开低压普通发票,销货清单和开高压普通发票,销货清单和开低压普通发票
用户分类 CONS_SORT_CODE( 【0101 高压;;0104 小水电】;【0201;低压非居民;0302;低压居民】)
票据类型NOTE_TYPE_CODE( 【0101;普通发票】;【0201;增值税发票】 )
ü 高压普通发票的条件:客户的用户分类为高压\小水电,票据类型为普通发票
ü 低压普通发票的条件:客户的用户分类为低压居民\低压非居民, 票据类型为普通发票
ü 销货清单和高压发票同时打印的条件为:客户的用户分类为高压\小水电, 票据类型为增值税发票
ü 销货清单和低压发票同时打印的条件为:客户的用户分类为低压居民\低压非居民, 票据类型为增值税发票
2、在非增值税用户,普通发票上的本次余额=(实收金额+上次余额)-(应收金额+违约金)
3、增值税用户销货清单上的本次余额 =(实收金额+上次余额-(【应收电费+清单中“扣减零增值税部分”】【代表了该户当月总应收电费】+违约金);
4、增值税用的普通发票上永远也不打印本次余额和下次余额和实收费电费、违约金,增值税用户的,普通发票只有再本次缴费对应的销货清单上的在应收不为0的时候才可以打印。
5、所有余额的改变都与实收有关,单纯的应收改变不影响本次余额的改变
6、上次余额按照操作的先后顺序产生
7、应收数据的打印时针对对每月应收的实收的第一次收费才进行打印。
8、对发票或者销货清单,在一张发票上信息打印不完整时,需要打印多张,但是本次应收、本次实收、本次余额、上次月等信息都不打印,只打印电费的明细信息。
第四部分 常见业务发票打印说明
X 表示有打印的内容 - 表示不打印
付款情况
客户类型
发票类型
应收及明细金额
实收
上次余额
本次余额
等额付款
普通客户
普通发票
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(0增值税)
-
-
-
补足不足额付款(由于之间缴纳过费用再补充缴纳)
普通客户
普通发票
-
X
X
X
增值税客户
销货清单
-
X
X
X
补足不足额付款(由于自动冲减了部分电费再补充缴纳)
普通客户
普通发票
X
X
X
X
增值税客户
销货清单
X(除0增值税)
X
X
X
普通发票
X(0增值税)
-
-
-
预付款(预付时)
普通客户
普通发票
-
X
X
X
增值税客户
销货清单
-
X
X
X
预付款(预收费完整的冲抵了一个月的电费,在客户需要发票的时候打印发票)
普通客户
普通发票
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(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)
是
交易标识
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)
是
发票备注
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_PRN_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
从客户发票余额总获得
本次余额
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)如果没有完整的冲减电费,不写入该表
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
发生的负应收金额
违约金
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_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
客户编号
应收标识
RCVBL_AMT_ID
插入记录时,首先在该表中按照客户编号与应收
标识查询,如果查询存在记录,再本次插入记录为空,
负责写入本次缴费的应收标识;纯粹写预收费时为空
应收年月
RCVBL_YM
本笔电费对应的应收年月,否则写空
收费标识
CHARGE_ID
本次收费时对应的收费记录中的收费标识
交易标识
EXCHG_ID
银行代收、代扣等交易时填写
是否打印
IF_PRN
0
应收金额
THIS_RCVBL_AMT
当应收标识不为空时,填写当月的全部应收,否则为0
违约金
THIS_PENALTY
本次缴费时的实际违约金
实收金额
THIS_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;
在收费结束操作后,打印发票,修改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:对代扣类缴费的时候,和单笔缴费处理方式相同,字段交易标识为代收交易流水号
C:前台坐收多笔缴费的时候,一次缴纳的金额是多笔电费的总金额时,在收费过程中,每销完一个月的帐后,都需要向表pub_a_ivn_prn中写数据,写数据的规则如下
销完第一个月后写的规则如下(第一个月指本次收费中后台销账时销账的月份)
字段
字段名
数据来源说明
唯一标示
NOTE_PRN_ID
序列
缴费批次
Charge_PC
比如批量收费的时候,本次批量收费的缴费批次为第一
笔销账时产生的缴费批次,尤其是不同客户一起缴费,
更要写正确,作为一起打印发票的条件
户号
CONS_NO
客户编号
应收标识
RCVBL_AMT_ID
插入记录时,首先在该表中按照客户编号与应收
标识查询,如果查询存在记录,再本次插入记录为空,
负责写入本次缴费的应收标识;纯粹写预收费时为空
应收年月
RCVBL_YM
本笔电费对应的应收年月,否则写空
收费标识
CHARGE_ID
本次收费时对应的收费记录中的收费标识
交易标识
EXCHG_ID
银行代收、代扣等交易时填写
是否打印
IF_PRN
0
应收金额
THIS_RCVBL_AMT
当应收标识不为空时,填写当月的全部应收,否则为0
违约金
THIS_PENALTY
本次缴费时的实际违约金
实收金额
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 = THIS_NOTE_AMT
Where cons_no = ;as_cons_no;
销完第二个月后写的规则如下
字段
字段名
数据来源说明
唯一标示
NOTE_PRN_ID
序列
缴费批次
Charge_PC
比如批量收费的时候,本次批量收费的缴费批次为第一
笔销账时产生的缴费批次,尤其是不同客户一起缴费,
更要写正确,作为一起打印发票的条件
户号
CONS_NO
客户编号
应收标识
RCVBL_AMT_ID
插入记录时,首先在该表中按照客户编号与应收
标识查询,如果查询存在记录,再本次插入记录为空,
负责写入本次缴费的应收标识;纯粹写预收费时为空
应收年月
RCVBL_YM
本笔电费对应的应收年月,否则写空
收费标识
CHARGE_ID
本次收费时对应的收费记录中的收费标识
交易标识
EXCHG_ID
银行代收、代扣等交易时填写
是否打印
IF_PRN
0
应收金额
THIS_RCVBL_AMT
当应收标识不为空时,填写当月的全部应收,否则为0
违约金
THIS_PENALTY
本次缴费时的实际违约金
实收金额
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 = THIS_NOTE_AMT
Where cons_no = :as_cons_no;
后面如果再有缴费记录按照该方式依次类推;
在全部收费结束后,依据表pub_a_ivn_prn中的数据进行发票打印,打印的顺序按照小用户普通发票,销货清单、大用户普通发票 的顺序进行打印。
第三:走收收费按照如下规则编写
在走收通知单打印的时候,按照前台单笔收费的方式进行同时插入该表,录入规则如下
字段
字段名
数据来源说明
唯一标示
NOTE_PRN_ID
序列
缴费批次
Charge_PC
户号
CONS_NO
客户编号
应收标识
RCVBL_AMT_ID
本次批量打印的缴费批次为第一
发票打印时生成的缴费批次,本次打印缴费通知单
的缴费批次保持和第一条相同。
应收年月
RCVBL_YM
本笔电费对应的应收年月,否则写空
收费标识
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
暂时不考虑
操作人员
User_no
走收单打印人员编号
走收的发票记录只作为暂时保存以备客户需要发票的时候打印所需要,同时一旦打印了走收单道收费结束之前,该客户违约金停止计算
对缴费回来以后未进行销账的的客户,只做单一的销账,对走回回来需要取消销账的客户,需要对应的发票打印记录进行作废。
在客户使用电费缴费单需要换取发票是,按照表pub_a_ivn_prn中的客户编号,和打印标志,查询未打印的记录打印相关的发票
第四:其它说明:
1、 在前台收费的时候结束后,依据客户的性质首先判定客户是开什么样的票据
2、 在收费过程中按照上面的规则写入对应的数据
3、 在收费结束后,按照顺序提示客户放入对应的票据,进行打印。
4、 在客户作废收费记录,需要重新收费打印发票的时候,发票的余额在作废的时候应该从表pub_a_ivn_prn中获得最后一条打印标志不为2的记录的本次月,更新为客户的发票余额。后续的操作按照正常操作进行。
第五:公用方法
写一个方法,输入的是用户分类和客户的票据类型,得出是打印发票还是销货清单。
第六部分 发票打印场景举例
业务发生过程
发票余额变化
对应发票打印
业务发生场景,按顺序
预收费发生额
截止预收费
发票余额
ID
户号
实收收标识
应收标识
应收年月
预收标识
收费标识
是否打印
应收
违约金
实收
上次余额
本次余额
备注
发行201001月电费 100
0
收取2010年电费 200
100
100
100
001
101
001
001
201001
001
100
200
0
100
发行201002月电费 50
预收费完整自动冲减电费 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
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月部份电费 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月电费 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
201006
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
部分冲减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
110
退费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
冲正时只能按照收费顺序从后往前冲正,冲正作废发票打印信息同时将上次余额更新到用户发票余额字段中。
展开阅读全文