diff --git a/raterspec.cls b/raterspec.cls index 94be281..4499a46 100644 --- a/raterspec.cls +++ b/raterspec.cls @@ -73,6 +73,7 @@ \expandafter\gdef\csname @raterspec@#1\endcsname{ \PackageWarning{raterspec}{Missing #2! \MessageBreak Define using \expandafter\protect\csname#1\endcsname}% + \incomplete \todo{No #2 have been defined.}% } % publically accessible input macro @@ -125,6 +126,22 @@ {} {} +\@raterspec@mkhook{premcalc}{premium calculations} + {} + {} + +\@raterspec@mkhook{forms}{forms} + {} + {} + +\@raterspec@mkhook{coneimport}{c1 import details} + {} + {} + +\@raterspec@mkhook{proguisteps}{program ui steps} + {} + {} + %% diff --git a/raterspec/parts.tex b/raterspec/parts.tex index 5a9c35c..135d31c 100644 --- a/raterspec/parts.tex +++ b/raterspec/parts.tex @@ -33,3 +33,15 @@ \pnumoff\part{Data Classification}\pnumon \input{raterspec/sec/dataclass} +\pnumoff\part{Premium Calculation}\pnumon + \input{raterspec/sec/premcalc} + +\pnumoff\part{Forms}\pnumon + \input{raterspec/sec/forms} + +\pnumoff\part{ConceptOne Import}\pnumon + \input{raterspec/sec/c1import} + +\pnumoff\part{User Interface}\pnumon + \input{raterspec/sec/progui} + diff --git a/raterspec/rates.sty b/raterspec/rates.sty index 1ed00ec..28a83d0 100644 --- a/raterspec/rates.sty +++ b/raterspec/rates.sty @@ -6,6 +6,12 @@ \ProcessOptions\relax +\def\var#1{{\tt#1}}% +\def\locvar#1{\var{#1}_\loc} +\def\tlookup#1#2{\ArgSty{#2 from} \tref{#1}}% +\def\tlookupf#1#2{\tlookup{#1}{#2} \ArgSty{or fail in error}}% + + \newenvironment{ratetable*}[5][]% {% \def\@@lotcaption{#1} diff --git a/raterspec/sec/c1import.tex b/raterspec/sec/c1import.tex new file mode 100644 index 0000000..b92bd84 --- /dev/null +++ b/raterspec/sec/c1import.tex @@ -0,0 +1,12 @@ +% raterspec c1 import +%% + +\label{s:c1import} +\index{ConceptOne!import|(} + \chapter{ConceptOne Integration} + \incomplete + \todo{Information on the ConceptOne integration and import process.} + + \coneimportout +\index{ConceptOne!import|)} + diff --git a/raterspec/sec/forms.tex b/raterspec/sec/forms.tex new file mode 100644 index 0000000..b7528ad --- /dev/null +++ b/raterspec/sec/forms.tex @@ -0,0 +1,15 @@ +% raterspec forms +%% + +\label{s:forms} + +\index{forms|(} + \begindeptgroup{c} + \chapter{Common Forms and Definitions} + \input{raterspec/sec/forms/dfn} + + %% user input + \formsout + \enddeptgroup +\index{forms|)} + diff --git a/raterspec/sec/forms/dfn.tex b/raterspec/sec/forms/dfn.tex new file mode 100644 index 0000000..ccea618 --- /dev/null +++ b/raterspec/sec/forms/dfn.tex @@ -0,0 +1,17 @@ +% Form definitions + +\incomplete +\todo{Additional information on the existing process.} + +\sigauth{NL} +A~\dfn*{form} is a~document that is included with a~policy to provide additional +information, coverages, and/or~exclusions. + +\sigauth{NL} +A~form is considered to be \dfn{forms!applicable} when each of its specified +conditions are met. A~form \shall be included with the policy only when it is +applicable. + +\sigauth{NL} +In the event that a~form code is applicable under multiple circumstances, +the~form \shall be attached to the document a single time. diff --git a/raterspec/sec/premcalc.tex b/raterspec/sec/premcalc.tex new file mode 100644 index 0000000..631e48f --- /dev/null +++ b/raterspec/sec/premcalc.tex @@ -0,0 +1,16 @@ +% raterspec premium calculation +%% + +\label{s:premcalc} +\index{calculation|(} + +\chapter{Definitions} +\label{s:premcalc:dfns} +\input{raterspec/sec/premcalc/dfn} + + +%% user input +\premcalcout + +\index{calculation|)} + diff --git a/raterspec/sec/premcalc/dfn.tex b/raterspec/sec/premcalc/dfn.tex new file mode 100644 index 0000000..b8f0afd --- /dev/null +++ b/raterspec/sec/premcalc/dfn.tex @@ -0,0 +1,69 @@ +% Common definitions for premium calculation +\sectiondept{it} + +\sigauth{MTG} +A \dfn{premium calculation}---or simply \dfn{calculation}---is an algorithm that +\index{deterministic}deterministically operates on ^[input data] described in +\sref{indata} and yields a numeric \dfn{premium}. + +\sigauth{MTG} +\p{finalprem} +A \dfn{premium!final premium} is the ^[premium] that represents the total cost +to the insured and \shall be represented by a ^[floating-point] number rounded +to the nearest representable value of two decimal places, in which the whole +integer value \shall represent a dollar amount and the fractional value \shall +represent cents. There \shall be only one final premium.\footnote{Multiple +^[final premium]s may be obtained through multiple calls to the~^[rater].} + +\sigauth{MTG} +A calculation \dfn{calculation!consideration} is defined as the point when an +implementation determines if the calculation is applicable to the ^[input data]. + +\sigauth{MTG} +\p{calc-supp} +All defined rating calculations \shall be considered even if they exist outside +of any dependency tree that arrives at the ^[premium!final premium]. +Calculations that are not directly used to determine the ^[premium!final +premium] are termed \dfn{calculation!disjoint calculations}.\footnote{This +allows supplementary data to be calculated.} + +\sigauth{MTG} +\p{calcapplicable} A calculation \shall be +\index{calculation!consideration}considered to be applicable if its defined +^[classification] conditions are met. + +\sigauth{MTG} +An applicable calculation \shall undergo \dfn{calculation!evaluation}, yielding +a~premium that is the result of the application of the ^[input data] to its +definition. + +\sigauth{MTG} +A calculation that has been determined to be inapplicable \shallnot execute any +portion of its definition and \shall yield the scalar floating-point +value~$0.00$.\footnote{The definition \shallnot be executed because it cannot +reliably do so without the proper data (as determined by its required +classifications).} + +\sigauth{MTG} +A calculation \may treat the result of another calculation as ^[input data]. + +\sigauth{MTG} +A calculation \may treat the result of a~^[classification] (see +\sref{dataclass}) as ^[input data]. + +\sigauth{MTG} +Where it is required that a calculation be performed for each ^[location], the +implementation \shall make such a determination either by (a)~use of a +^[parameter] defined in \sref{locparam} that is always available or (b)~an +implementation-defined ^[parameter] that explicitly provides the location count. +For either case, an implementation \must fail in error if the location count +cannot be determined. + +\sigauth{MTG} +In the sections that follow, the following conventions \shall hold: (a)~Any +reference to a table value, unless otherwise stated, \shall be located by +matching the ^[parameter]s in the table column headers with the value of the +associated argument in any input data; (b)~any ^[parameter] containing the +term~``rate'' represents a~value obtained in an implementation-defined manner +and an implementation \must fail in error if such a value cannot be obtained as +mandated by the calculation definition. diff --git a/raterspec/sec/progui.tex b/raterspec/sec/progui.tex new file mode 100644 index 0000000..507e9b6 --- /dev/null +++ b/raterspec/sec/progui.tex @@ -0,0 +1,112 @@ +% raterspec program ui +%% + +\chapter{Program Client} +\label{s:programui} +\index{Program Client|(} + +\sectiondept{it} + +The \dfn{Program Client} is defined as the user interface that is used to +enter data about a ^Quote, receive a premium from one or more +^[supplier]s, and~optionally submit the~^Quote for further processing from +within ^[ConceptOne]. + +The Program Client \shall be accessed by using a~^[web browser] to +download the applicable resources---specifically, ^[HTML], ^[CSS], and +^[JavaScript]---from the ^[LoVullo Website]. + +\incomplete +\todo{While this chapter does contain information necessary to complete +the Scottsdale Commercial Lines project, it is largely incomplete.} + + +\section{Program UI}\label{s:program-ui} +\sectiondept{it} + \index{Program Client!Program UI|(} + + The \dfn{Program UI}---hereinafter occasionally referred to simply as + ``UI'' unambiguously within this chapter---\shall be defined as the + graphical user interface of the~Program Client and \shall render + directly in the user's ^[web browser] using only ^[HTML], ^[CSS], + and~^[JavaScript].\footnote{For example, browser plugins such as Java + and~Flash \shallnot be used in an implementation of the Program Client.} + + A \dfn{Program Client!quoting step} is the highest level of ^Quote data + separation and consists only of question groups. The UI \shall display + no more than one step (see~\sref{program-steps}) to the ^user at any + given time. + + \incomplete + A \dfn{Program Client!field group} contains only fields and provides an + optional delineation from other groups. Any number of groups \may be + displayed to the~^user at any given time.\todo{Types.} + + A \dfn{Program Client!field} is a generic term that represents any + question, answer, display, or static element; any of these may appear + where a field is expected unless the field specification does not permit + such a field type.\footnote{For example, if a field is expected, then a + question or an~answer may be substituted. However, if a~question is + expected, then an~answer may not be substituted.} + + \incomplete + A \dfn{Program Client!question} prompts the ^user for a datum and may be + directly modified by the user unless explicitly restricted. \todo{How + interacts with bucket; types.} + + \incomplete + A \dfn{Program Client!answer} displays a~^user response associated with + a~question. \todo{Types} + + \incomplete + A \dfn{Program Client!display} displays any arbitrary bucket datum to + the~^user. \todo{Bucket.} + + \incomplete + A \dfn{Program Client!static element} displays arbitrary static text to + the~user and \may contain ^[HTML]. + \index{Program Client!Program UI|)} + +\begindeptgroup{uw/pm} + \section{Quoting Steps}\label{s:program-steps} + \incomplete + An implementation \shall display all steps, groups, and~fields (each defined + in~\sref{program-ui}) in the exact order provided within this section. + \todo{An~implementation \shall contain no steps, groups, or~fields that have not + been enumerated in this section.} + + \sigauth{NL} + Within this section, questions are listed by the~labels that \shall be displayed + to the user. Below the label is additional text describing further + implementation requirements. When a question is indented to the level of the + paragraph of another question, then the indented question is strongly related to + the containing question in some logical manner; the containing question is said + to be a~\dfn{Program Client!question!parent question} any the~question that is + indented relative to it is said to be a~\dfn{Program Client!question!child + question}.\footnote{For example, a child question may be visible to the ^user + only when its~parent is answered in a specified manner.} + + \incomplete + A question is said to be \dfn{Program Client!question!applicable} when it is to + be displayed to the user; questions are applicable by default. A question \shall + be visible to the user for entry only if it is applicable; otherwise, it \shall + be hidden from the user, its value reset to the specified default or---if no + default is specified---the default for its question type, and validations + \shallnot be performed. \todo{Question type defaults and validations}. + + + %% user-provided input + \proguistepsout +\enddeptgroup + + +\section{Quote Server Communication} + \sectiondept{it} + \index{Quote Server|(} + + The Program Client \shall communicate with the~^[Quote Server] as required + in~\sref{hostenv-qs}. + + \index{Quote Server|)} +\index{Program Client|)} +