Cooperation of Invoicing Flow and Accounting System

Monday, April 27, 2015
It is no exaggeration to say that all business activities are carried out for the sake of "billing". However, the difficulty of its business process designing is high.

Speaking about "Quotation" (Previous article), it roughly would be 1) approval by supervisor, 2) submission to the client, 3) deal confirmation. In its designing,
  • "Expertise" such as tax and accounting
  • "Systems knowledge" such as data processing or collaboration with other systems
  • Devising of mutual supervision (internal control) such as separation of accounting bookkeeping from Receipts and expenditure
are not needed. ("Quotation Issuance flow" is Peaceful than I have imagined.)

Whereas, 'Billing' has its Downstream Steps such as "Bookkeeping of accounts receivable", "confirmation of payment", "storing as evidence". In fact, it varies according to the industry and the business formats of the company, or the accounting policies, or the deployed systems. Even for the starting point and the end point of the business process, state of "To-Be" is different depending on the companies.

The following Workflow is a Business Process that is focused on "After issuing the bill". Although it is the business process that is closed to the Accounting section, it is devised to "reduce the labor of inputting to the Accounting software / Cloud-accounting".

[Bill Issuance - Bookkeeping]



[Bill Issuance - Bookkeeping:'1. Confirmation' screen]

In this Business Process, it is assumed a company in which 'Unearned revenue' occurs often, and the environment such as the method of settlement or the Business Cloud platform are frequently changed. (i.e. A company that is difficult to introduce a core system.)

*- What is 'Unearned revenue?' Although the details should be asked to Accountants, it roughly is that whatever the judgement of taxation or the Aggregation of sales, "the time when handing over of assets or provision of service has occurred" must be the reference.

Specifically, 1) Generation of Bill PDF, 2) submitting by Email or postal, 3) registration of account data, 4) payment confirmation, will follow after throwing the billing data.

Notably, is that the data are processed into the accounting system-friendly format. That is,
  • 'Receipt voucher' that indicates of
  • 'Journal voucher' that indicates the transfer the 'Unearned revenue' to 'Earned revenue'
will be output. It would be probably connected to "Cloud-based Accounting system" by API, in the near future...

[Issuance Date processing] screen

[Title set] screen

[for Bookkeeping] setting screen

[for Bookkeeping] Script sample
// == Retrieving ==
//mytable : com.questetra.bpms.core.model.formdata.ListArray;
var mytable = data.get("13"); // Retrieving Table type Data

//startDay : com.questetra.bpms.util.AddableDate;
var startDay = data.get("8"); //Bill Issuance Date (date)

var charged = data.get("21"); // Retrieving Total Due
var company = data.get("4"); // Retrieving Billing Company Name
var companyabst = company + " " + mytable.get(0, 0) + ""; // Company Name+Description

// == Calculating ==
var months = mytable.get(0, 1);

var remainder = charged % months; // Remainder of division of Total by applied month (1st line, 2nd column)
var monthlyCharge = Math.floor( charged / months ); // Division of Total by applied month (1st line, 2nd column)
var monthlyCharge2 = monthlyCharge + 1;

// == Updating ==
var formatter1 = new java.text.SimpleDateFormat("yyyy-MM-dd");
var formatter2 = new java.text.SimpleDateFormat("GGGGyyyy-MM", new java.util.Locale("ja", "JP", "JP"));

var bookkeepingText = ""; 
// 「2015-04-01, Sales, Kyoto Univ. Inc. Website Operation, 10000, 0」
// 「2015-04-01, Cash, Kyoto Univ. Inc. Website Operation, 10000, 0」
// 
// 「2015-04-30, A/R, Kyoto Univ. Inc. Website Operation, 10000, 0」
// 「2015-05-31, Cash, Kyoto Univ. Inc. Website Operation, 10000, 0」
bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", Sales, " + companyabst + ", " + charged + ", 0 \n"; 
bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", Cash, " + companyabst + ", " + charged + ", 0 \n\n"; 
bookkeepingText += formatter1.format(startDay.getLastDateInMonth());
bookkeepingText += ", A/R, " + companyabst + ", " + charged + ", 0 \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(1).getLastDateInMonth());
bookkeepingText += ", Cash, " + companyabst + ", " + charged + ", 0 \n"; 
retVal.put("27", bookkeepingText ); // ●Lump-sum payment●  Date, Accounts title , Description, Receipt, Payment

bookkeepingText = "";
// 「2015-04-01, Unearned revenue, Kyoto Univ. Inc. Website Operation, 10000, 0」
// 「2015-04-01, Unearned revenue, Kyoto Univ. Inc. Website Operation April, 2015, 0, 3334」
// 「2015-04-01, Sales, Kyoto Univ. Inc. Website Operation April, 2015, 3334, 0」
// 「2015-05-01, Unearned revenue, Kyoto Univ. Inc. Website Operation May, 2015, 0, 3333」
// 「2015-05-01, Sales, Kyoto Univ. Inc. Website Operation Masy, 2015, 3333, 0」
// 「2015-06-01, Unearned revenue, Kyoto Univ. Inc. Website Operation June, 2015, 0, 3333」
// 「2015-06-01, Sales, Kyoto Univ. Inc. Website Operation June, 2015, 3333, 0」

bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", Unearned revenue, " + companyabst + ", " + charged + ", 0 \n"; 

var i=0;
for (i=0; i<months; i++){
if (i<remainder){
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", Unearned revenue, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", 0, " + monthlyCharge2 + " \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", Sales, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", " + monthlyCharge2 + ",0 \n"; 
}else{
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", Unearned revenue, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", 0, " + monthlyCharge + " \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", Sales, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", " + monthlyCharge + ",0 \n"; 
}
}
retVal.put("28", bookkeepingText ); // ●Journal Entry●  Date, Accounts title , Description, Debitor, Creditor

[Data Items List]


[Free Download]
<Similar Models>
<<Related Artiles>>


[Japanese Entry (ε’Œζ–‡θ¨˜δΊ‹)]