Billing system and method6836763Abstract A bill editor, generator, messaging and insert system and method comprises a portion of a bill production processor designed to create monthly billing statements which are sent to customers and which detail charges incurred over the course of a billing cycle. The bill editor and generator allows billing personnel to design a bill using static text, dynamic text and paragraph areas. Once the report/bill is defined, the report definition is stored in temporary memory for later use. The report definition file defines how the report is to appear and where the data used in the report is stored. The report generator, when subsequently run, uses the predefined report definition to retrieve data from the database and generates the report as defined by the report definition file. The bill messaging and insert system determines, based on assigned priority, criteria and weight and space limitations, the messages and notices to be included in a customer billing statement. Claims What is claimed is: Description TECHNICAL FIELD OF THE INVENTION
<background color> - Color
<binding> - - an identifier denoting a data element
(see Appendix A)
<columns> - - number of columns in paragraph area
<dynamic text> = DynamicText
<binding>
<ori x> <ori y> <width>
<height> <justif>
<background color>
<foreground color>
<font>
<element> = <dynamic text>
.vertline. <line>
.vertline. <paragraph area>
.vertline. <picture>
.vertline. <rectangle>
.vertline. <rounded rectangle>
.vertline. <static text>
<font> = Font
<foreground color> - Color
<full width> = - 1 if full width, 0 if column width
<grid size> = - granularity of editing grid
<height> - - height
<justif> = - 0 if left, 1 if center, 2 if right
<landscape> = - 1 if landscape, 0 if portrait
<line> - Line
<pt1 x> <pt1 y> <pt2 x> <pt2
y>
<background color>
<foreground color>
<margin bottom> = - paper bottom margin
(nonintegral number of points)
<margin left> = - paper left margin
(nonintegral number of points)
<margin right> - - paper right margin
(nonintegral number of points)
<margin top> = - paper top margin
(nonintegral number of points)
<ori x> = - x coordinate of origin
<ori y> = - y coordinate of origin
<overlap x> - 0
<overlap y> = 0
<page info> - <page info version> <paper type>
<landscape>
<poster> <paper width> <paper
height>
<margin left> <margin right>
<margin top> <margin bottom>
<scale mode> <scale x> <scale y>
<overlap x> <overlap y>
<page info version> = a
<paper height> - - height of paper
(nonintegral number of points)
<paper type> = PaperType
<paper width> - - width of paper
(nonintegral number of points)
<paragraph> = Paragraph
<paragraph identifier>
<full width> <height>
<grid size>
- number of elements
{ <element> }
<paragraph area> = ParagraphArea
<script>
<columns> <ori x> <ori y>
<width>
<height>
- number of paragraphs
{ <paragraph> }
<paragraph identifier> - - a name uniquely identifying the
paragraph
within its paragraph area
<picture> = Picture
<ori x> <ori y>
- number of picture lines
{ <picture line> }
<picture line> - - 64 hex digits of Neuron Data image data
<poster> = 0
<pt1 x> = - x coordinate of first point
<pt1 y> = - y coordinate of first point
<pt2 x> - - x coordinate of second point
<pt2 y> - - y coordinate of second point
<RDR version> = a
<rectangle> = Rectangle
<ori x> <ori y> <width>
<height>
<background color>
<foreground color>
<report> - Report
<RDF version>
<page Info>
<paragraph area>
<rounded rectangle> - RoundedRectangle
<ori x> <ori y> <width>
<height>
<background color>
<foreground color>
<scale mode> = 3
<scale x> - 1
<scale y> = 1
<script> = - a paragraph area script (see Appendix A)
<static text> = StaticText
<text>
<ori x> <orl y>
<background color>
<foreground color>
<font>
<text> = - static text
<width> = - width
Color = the name of a Neuron Data color resource
Font - the name of a Neuron Data font resource
PaperType = 1 US letter
2 US legal
3 US tabloid
4 US ledger
etc.
Associated with each paragraph area is a script, defining how each paragraph area is to be rendered. The syntax of paragraph area scripts is shown below. It uses the same stylized form as the above RDF syntax. The distinguished symbol (that is, the place to begin) is the nonterminal symbol <script>.
<argument> - <expression>
<data set> = <data set identified { <argument> }
<data set identifier> - Identifier
<expression> - Identifier .vertline. Number .vertline. String
.vertline. <type> ( <expression> )
<foreach statement> = foreach <data set>
{ <statement > }
end foreach
<paragraph identifier> - String
<paragraph statement> = paragraph <paragraph identifier>
<script> - { <statement> }
<statement> = <foreach statement> .vertline. <paragraph
statement>
<type> = Integer .vertline. Money .vertline. String
.vertline. Time
Identifier = a sequence of one or more letters, digits,
underscores, and periods, beginning with
a letter, and not matching any of the above
boldfaced reserved words -- may denote a
data element, as <data set
identifier>.<column name>
Number = a sequence of one or more digits
String - a sequence of zero or more non-quote
characters, in quotes
When a paragraph area is to be rendered, the statements comprising its script are executed, in sequence. Execution of a paragraph statement simply consists of rendering its identified paragraph, at the next location within the paragraph area. Execution of a foreach statement consists of two actions: 1) Acquire the data set of the foreach statement. In online operation, this involves calling the identified stored procedure with the listed arguments. In offline operation, this involves reading the next data set from an input file, where the data set consists of a number of rows m, a number of columns n, n column names, and m rows of data, n columns per row. 2) For each row in the data set, execute the statements of the foreach statement, in sequence. Two examples of a typical RDF file follow. The reports specified by these examples are shown in FIGS. 4 and 5, respectively. The first example specifies a static message. RDF: Report a a 1 0 0 614.295 794.97 72.27 72.27 72.27 72.27 3 1 1 0 0 ParagraphArea paragraph "Paragraph 1" 1 10 10 614 795 1 Paragraph Paragraph 1 1 795 6 2 StaticText Example 1: 72 205 Color.White Color.Black fonts.FontLarge StaticText The simplest report you'll ever need. 72 229 Color.Transparent Color.Black fonts.FontLarge The next example, the output of which is shown in FIG. 5, displays data in a paragraph area contained within the top-level paragraph area. In online operation, the stored procedure lp_get_subject_cat is the source of the data elements subject_cat_cd and subject_cat_desc. In offline operation, they come from an input file such as the one following the example. RDF: Report a a 1 0 0 614.295 794.97 72.27 72.27 72.27 72.27 3 1 1 0 0 ParagraphArea paragraph "Paragraph 1" 1 10 10 614 795 1 Paragraph Paragraph 1 1 795 6 4 StaticText Example 2 205 96 Color.White Color.Black fonts.FontLarge ParagraphArea foreach subject_cat paragraph "Paragraph 1" end foreach 1 60 132 494 651 1 Paragraph Paragraph 1 1 36 0 3 Rectangle 20 0 468 37 Color.White Color.Black DynamicText subject_cat.subject_cat_cd 54 18 10 1 0 Color.White Color.Black Font.Normal DynamicText subject_cat.subject_cat_desc 271 18 11 1 0 Color.White Color.Black Font.Normal StaticText Code 120 120 Color.White Color.Black Font.Bold StaticText Description 337 120 Color.White Color.Black Font.Bold Input File: subject_cat 11 2 subject_cat_cd subject_cat_desc ADULT.vertline.Adult ADVEN.vertline.Adventure CHILD .vertline.Children CNCRT.vertline.Concert COMDY.vertline.Comedy DRAMA.vertline.Drama EDUC.vertline.Education FAM.vertline.Family HORR.vertline.Horror MUSCL.vertline.Musical Story SPORT.vertline.Sports With reference to FIG. 6 in conjunction with FIG. 1, there is shown a high level flow diagram of the bill messaging extraction module 152 and bill insert manager 153 according to the preferred embodiment. The bill messaging extraction module 152 determines the type of messages and notices that may be included on a customer billing statement. The bill insert manager 153 determines whether inserts, if any, should be included within the customer billing statement based on the total weight of the bill. In Step 1501 of the bill messaging, notices and inserts process of FIG. 6, the user first defines a universe of messages, notices and inserts which could be included in the customer billing statement. Step 1501 allows billing personnel to enter all relevant messages, notices and inserts for a particular billing cycle, of which only a small subset may eventually appear in any particular customer's billing statement. Thus, by initially inputting a universe of billing messages, notices and inserts, the billing personnel is relieved of having to generate customized billing statements for each customer. In Step 1502, the universe of available messages are qualified for a particular customer, based on known criteria for that customer. If, of a universe of 50 messages, only 5 are relevant to, i.e., qualify for, a particular customer, the remaining 45 messages are discarded. Next, the messages and inserts are analyzed in Step 1503 to determine whether they will conform to the particular format established for that bill run. A particular bill format is chosen, perhaps consisting of a single, folded page, which is perforated so that the bill may be separated into two sections, one of which is returned with payment. All of the qualifying messages may not fit on the customer billing statement. Step 1503 determines whether particular messages will indeed fit on the chosen format for the customer billing statement. For instance, in the case of messages, this means that, of 5 relevant messages, perhaps only 3 will fit on the final statement. Similarly, for notices, this means that only the most important notices will be included in the bill, but only if the total weight of the bill is equal to or less than a designated postal weight, e.g., one ounce. Next, in Step 1504 all qualifying messages as specified through the formatting language transmitted to the bill renderer are printed and all qualifying inserts are stuffed into envelopes by the bill renderer. With reference to FIG. 7, there is shown a more detailed description of the bill modules 152, 153 according to the preferred embodiment. The system may be seen as having two operating segments, the bill definition segment 1510 and the bill run segment 1520, one following the other. In the bill definition segment 1510, the universe of possible messages and inserts are defined by the billing personnel. Once the universe of messages is determined, the bill run segment qualifies the messages for each customer and executes a prioritization to determine whether a particular message and/or insert will be included in the customer billing statement. In Step 1512, the billing personnel defines for the billing period the universe of messages that could be included on any given billing statement without regard to individual customer information. The universe of messages are preferably input using a graphical user interface. Alternatively, an existing or flat file with a predefined universe of messages is accessed by the billing personnel, who then chooses which messages are to be included in the sub-universe of possible messages. The types of messages that might be included within the universe are varied. For instance, if a customer currently subscribes to HBO, one of the messages might include the promotion "Free Cinemax in the month of December for all HBO subscribers, Happy Holidays!" Alternatively, the messages might be notices or reminders. For instance, it might remind customers to call "1-800-DONTDIG" for assistance concerning where to dig on their property to avoid utility lines. Still further, the messages could be informational, such as informing customers of rate increases/decreases, informing customers of deadlines for solicitation of comments concerning changes in rules, advertising for an upcoming pay-per-view event, collections messages such as "your account is past due of $45.00, please pay immediately," etc. In Step 1514, the billing personnel identifies for the billing cycle the universe of inserts which could be included in any given customer billing statement without regard to individual customer information. The universe of inserts are input using the graphical user interface. The types of inserts, like the types of notices, are varied. For instance, they could include advertisements, legal notices, promotional coupons for local business which have paid for advertising on any of the cable stations, schedule of televised events, etc. After the universe of messages have been defined and identified, the billing personnel in Step 1516 defines criteria for determining which of the universe of messages, notices and inserts should be included in a particular bill run. The criteria is preferably defined by the billing personnel using the graphical user interface. Alternatively, the billing personnel could access a flat file having a listing of possible criteria, which are then chosen according to relevance to the bill run. The criteria of messages is diverse, and could include, for example, account information, collections history, product history, instructions to send messages and inserts to all customers, only to specified customers or some other subset of customers, instructions to send messages and inserts to those customers who have been late in remitting payment in the last three months, those in a certain zip codes, those subscribing to certain channels, etc., to name a few. The billing criteria is defined using traditional logic commands (AND/OR etc.) strung between the various commands associated with the particular criteria. For instance, the criteria for a message could be designed as "All customers in franchise tax area 8010 AND in bill cycle 4 AND (have HBO OR Cinemax)". The step of setting specified criteria for a bill run is particularly useful in the case where a limited bill run is scheduled for a segment of the franchise's customer base. The remaining segment of the franchise would thus be excluded from the bill run. In Step 1518, the billing personnel assigns a priority to each of the messages, notices and inserts using, e.g., a scale of 1-10. This qualifies the importance of a particular message, notice or insert and the likelihood that it is included in a bill run. The higher the priority, the more likely a message, notice or insert will be included in a customer billing statement. For instance, government sanctioned legal notices would likely be assigned a relatively high priority, whereas advertising and promotional activities may be assigned a relatively lower priority. The billing personnel enters the priority of each of the messages, notices and inserts using the graphical user interface. With the conclusion of Step 1518, the bill definition segment 1510 is completed. No further input is required by the billing personnel. The bill run segment 1520 then commences. In Step 1522, each message, notice and insert, are qualified against stored information for each customer. Only messages, notices and inserts which are relevant to each customer individually qualify for that customer. For instance, if messages informing customers of imminent repairs in certain zip codes are included in the bill run, customers of other zip codes do not quality and messages and notices are not sent to those customers in the non-qualifying zip codes. Alternatively, if Cinemax is offering a promotion, e.g., free Cinemax for customers with HBO, only those customers who currently subscribe to HBO, but not Cinemax, will receive the notice on their customer billing statement. It is possible that 50 or more messages, notice and inserts will have been defined, but only 5 or less qualify for a particular customer. In Step 1524, all of the qualifying messages and notices are grouped together. Based on formatting rules, the messages and notices with the highest priority are designated to be printed on the bill first. As described previously in connection with the bill editor and generator module 151, different message areas are defined on the bill. The formatting rules dictate that the highest priority message that can fit into these areas are included on the bill. Since the bill is typically a single, perforated sheet, a limited amount of text space is available. If all of the available space on the customer billing statement has been allocated to messages and notices of relatively high priority, any remaining lower priority, un-printed messages are discarded. Alternatively, any of the remaining lower priority, un-printed messages may be stored in the customer's file for incorporation into the next billing run, and depending upon whether they are high enough in priority relative to the messages and notices for the next succeeding billing run and are not otherwise outdated, they may then be printed on the following customer billing statement. In Step 1526, all of the qualifying inserts are grouped together. First class postage is typically limited to a specified weight limited, e.g., one ounce. Anything above this will require further postage fees. When it is considered that tens of thousands of customers must be sent customer billing statements every month, the cost of mailing customer billing statements becomes significant. Thus, any deviation above the weight limit of first class postage becomes economically significant on this scale. At the same time, however, if a number of inserts qualify for a particular customer, it is desirable to include as many inserts as possible without exceeding the first class weight limit. Thus, in Step 1526, the qualifying inserts are chosen based upon the assigned priority until the total weight of the bill is equal to or less than the prevailing weight limit of the preferred mailing class, i.e., one ounce in the case of first class postage. Any of the remaining lower priority inserts which are not included in the customer billing statement may be stored in the customer's file for incorporation into the next billing run, and depending upon whether they are high enough in priority relative to the inserts for the next succeeding billing run and are not otherwise outdated, they may then be included in the following customer billing statement. Although the present invention has been described in detail, it should be understood that various changes, substitutions, and alterations can be made without departing from the spirit and scope of the invention as defined by the appended claims.
|
Same subclass Same class Consider this |
||||||||||
