<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Commissions</title><link>https://sourceforge.net/p/weberp-github/wiki/Commissions/</link><description>Recent changes to Commissions</description><atom:link href="https://sourceforge.net/p/weberp-github/wiki/Commissions/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 15 Oct 2024 09:20:28 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/weberp-github/wiki/Commissions/feed" rel="self" type="application/rss+xml"/><item><title>Commissions modified by Tim Schofield</title><link>https://sourceforge.net/p/weberp-github/wiki/Commissions/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="synopsis"&gt;Synopsis&lt;/h1&gt;
&lt;p&gt;To write a sales commission system which expands the current minimal &lt;br/&gt;
commission functionality. The system will allow for multiple breakpoints&lt;br/&gt;
with varying rates, to allow for multiple commission records by stock &lt;br/&gt;
category, area, length of time being a customer, and currency. It will &lt;br/&gt;
automatically create sales commission accruals, provide reports of sales &lt;br/&gt;
commissions outstanding, and statements for each sales person, finally &lt;br/&gt;
creating an invoice to the sales person. The system should be easily &lt;br/&gt;
extendible to allow different methods of commission calculation to be&lt;br/&gt;
added.&lt;/p&gt;
&lt;h1 id="files"&gt;Files&lt;/h1&gt;
&lt;h2 id="files-changed"&gt;Files changed:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SalesPeople.php&lt;/li&gt;
&lt;li&gt;CompanyPreferences.php&lt;/li&gt;
&lt;li&gt;Suppliers.php&lt;/li&gt;
&lt;li&gt;ConfirmDispatch_Invoice.php&lt;/li&gt;
&lt;li&gt;Credit_invoice.php&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="new-files"&gt;New Files:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;sql/updates/196.php&lt;/li&gt;
&lt;li&gt;SalesCommissionRates.php&lt;/li&gt;
&lt;li&gt;SalesCommissionReports.php&lt;/li&gt;
&lt;li&gt;SalesCommissionStatements.php&lt;/li&gt;
&lt;li&gt;SalesCommissionTypes.php&lt;/li&gt;
&lt;li&gt;includes/CommissionFunctions.php&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="details"&gt;Details&lt;/h1&gt;
&lt;h2 id="companypreferencesphp"&gt;CompanyPreferences.php&lt;/h2&gt;
&lt;p&gt;Amend the file to create an extra field for a GL code to store the sales &lt;br/&gt;
commission accruals in.&lt;br/&gt;
&lt;img alt="Company preferences" rel="nofollow" src="https://www.kwamoja.org/images/CompanyPreferences.png"/&gt;&lt;/p&gt;
&lt;h2 id="suppliersphp"&gt;Suppliers.php&lt;/h2&gt;
&lt;p&gt;Amend the file to add an extra field to hold the sales person code, if and &lt;br/&gt;
only if this is an account referring to a sales person.&lt;br/&gt;
&lt;img alt="Suppliers" rel="nofollow" src="https://www.kwamoja.org/images/Suppliers1.png"/&gt;&lt;/p&gt;
&lt;h2 id="salescommissiontypesphp"&gt;SalesCommissionTypes.php&lt;/h2&gt;
&lt;p&gt;Populates the salescommissiontypes table which holds the names of all the &lt;br/&gt;
commission calculation algorithms that have been set up.&lt;br/&gt;
&lt;img alt="SalesCommissionTypes.php" rel="nofollow" src="https://www.kwamoja.org/images/SalesCommissionTypes.png"/&gt;&lt;/p&gt;
&lt;h2 id="salespeoplephp"&gt;SalesPeople.php&lt;/h2&gt;
&lt;p&gt;Remove the commissionrate1, commissionrate2, and the breakpoint fields from &lt;br/&gt;
the salesman table.&lt;br/&gt;
Add in a field to store the general ledger expense code where the commission &lt;br/&gt;
for this sales person  will be posted.&lt;br/&gt;
Add in a field to define the sales period which this person receives&lt;br/&gt;
commission on. The choices are Monthly/Quarterly/Annually though adding &lt;br/&gt;
other periods would not be hard.&lt;br/&gt;
Add in a field for the commission calculation method for this sales person. The&lt;br/&gt;
choices are those created in the SalesCommissionTypes.php script.&lt;br/&gt;
&lt;img alt="SalesPerson.php" rel="nofollow" src="https://www.kwamoja.org/images/SalesPerson.png"/&gt;&lt;/p&gt;
&lt;h2 id="salescommissionratesphp"&gt;SalesCommissionRates.php&lt;/h2&gt;
&lt;p&gt;New script to populate the table storing the commission rates and breakpoints&lt;br/&gt;
for each salesperson/currency/stockcategory/area/daysactive combination. The table is created&lt;br/&gt;
as:&lt;br/&gt;
&lt;code&gt;CREATE TABLE&lt;/code&gt;salescommissionrates&lt;code&gt;(&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;salespersoncode` varchar(4) NOT NULL DEFAULT '',`&lt;/code&gt;categoryid&lt;code&gt;char(6) NOT NULL DEFAULT '',&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;area` char(3) NOT NULL DEFAULT '',`&lt;/code&gt;startfrom&lt;code&gt;double NOT NULL DEFAULT '0',&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;daysactive` int(11) NOT NULL DEFAULT '0',`&lt;/code&gt;rate&lt;code&gt;double NOT NULL DEFAULT '0',&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;`currency&lt;/code&gt; char(3) NOT NULL DEFAULT '',&lt;code&gt;&lt;/code&gt;PRIMARY KEY (&lt;code&gt;salespersoncode&lt;/code&gt;,&lt;code&gt;categoryid&lt;/code&gt;,&lt;code&gt;startfrom&lt;/code&gt;),&lt;code&gt;&lt;/code&gt;KEY &lt;code&gt;salespersoncode&lt;/code&gt; (&lt;code&gt;salespersoncode&lt;/code&gt;)&lt;code&gt;&lt;/code&gt;)`&lt;br/&gt;
&lt;img alt="SalesCommissionRates.php" rel="nofollow" src="https://www.kwamoja.org/images/SalesCommissionRates.png"/&gt;&lt;/p&gt;
&lt;h2 id="includescommissionfunctionsphp"&gt;includes/CommissionFunctions.php&lt;/h2&gt;
&lt;p&gt;The CalculateCommission() function will be in the includes/CommissionFunctions.php&lt;br/&gt;
script so that it is accessible to both the invoicing and the credit note&lt;br/&gt;
scripts.&lt;br/&gt;
NB This means that the system would be able to be changed to accrue the &lt;br/&gt;
commission on order or payment in the future if required.&lt;/p&gt;
&lt;p&gt;This function delegates the calculation of the commission to individual functions &lt;br/&gt;
for each of the calculation methods.&lt;/p&gt;
&lt;p&gt;New functions can easily be created if companies have different methods.&lt;/p&gt;
&lt;p&gt;An example is the StockCategoryCommission function:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;function StockCategoryCommission ($SalesPerson,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;$StockID,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;$Currency,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;$Value,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;$Period) {&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;If there is no commission period for this sales person they do not get&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;commission so straight away return zero.&lt;/code&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;there&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;may&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;need&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;probably&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;includes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;DateFunctions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;Check&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;exists&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;currency&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;combination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;there&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;isn&lt;/span&gt;&lt;span class="s1"&gt;'t return zero.`&lt;/span&gt;

&lt;span class="s1"&gt;`If there is a record for this person/currency combination then we need to `&lt;/span&gt;
&lt;span class="s1"&gt;`check if there are specific records for this stock category`&lt;/span&gt;

&lt;span class="s1"&gt;`If there is only one record returned for this salesperson/currency/category `&lt;/span&gt;
&lt;span class="s1"&gt;`combination then there is no need to go further as the commission due is `&lt;/span&gt;
&lt;span class="s1"&gt;`just the value of this transaction multiplied by the commission rate so `&lt;/span&gt;
&lt;span class="s1"&gt;`just return that amount.`&lt;/span&gt;

&lt;span class="s1"&gt;`If there is more than one records returned then at least two records exist `&lt;/span&gt;
&lt;span class="s1"&gt;`for this specific stock category, so next we need to ascertain the `&lt;/span&gt;
&lt;span class="s1"&gt;`commission period for this transaction.`&lt;/span&gt;

&lt;span class="s1"&gt;`Use a new function GetCommissionPeriods() to return an array of financial`&lt;/span&gt;
&lt;span class="s1"&gt;`periods for the commission period used for this sales person.`&lt;/span&gt;

&lt;span class="s1"&gt;`Now we get the total value of relevant transactions for this commission `&lt;/span&gt;
&lt;span class="s1"&gt;`period so for each financial period in the list of commission periods we `&lt;/span&gt;
&lt;span class="s1"&gt;`obtain the total value of invoiced/credited sales so far in this `&lt;/span&gt;
&lt;span class="s1"&gt;`salesperson/currency/category group`&lt;/span&gt;

&lt;span class="s1"&gt;`Now we cycle through the commission rates for this person/currency/category `&lt;/span&gt;
&lt;span class="s1"&gt;`adding up the commission as we go`&lt;/span&gt;

&lt;span class="s1"&gt;`First read the rates and quantity breaks into an array. Then we cycle `&lt;/span&gt;
&lt;span class="s1"&gt;`through the Breakpoint/rates array calculating the commission along the way`&lt;/span&gt;
&lt;span class="s1"&gt;`and return the commission to pay for this transaction.`&lt;/span&gt;

&lt;span class="s1"&gt;`If we have got this far tthen there is a record for this person/currency `&lt;/span&gt;
&lt;span class="s1"&gt;`combination but not for this category.`&lt;/span&gt;
&lt;span class="s1"&gt;`So, check if there is an "ALL" categories record`&lt;/span&gt;

&lt;span class="s1"&gt;`If there isn'&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;an&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"ALL"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;have&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reached&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;far&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;there&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cannot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;zero&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;there&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;only&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"ALL"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;returned&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;salesperson&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;currency&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;combination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;there&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;no&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;need&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;go&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;further&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;due&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;just&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;transaction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;multiplied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;just&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reach&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;here&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;least&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;two&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;records&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exist&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;need&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ascertain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;Use&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GetCommissionPeriods&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;an&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;financial&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;periods&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;used&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;relevant&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;financial&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;periods&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;obtain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;invoiced&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;credited&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sales&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;far&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;salesperson&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;currency&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;group&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cycle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;through&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;currency&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;adding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;go&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="k"&gt;First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;read&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quantity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;breaks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;into&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;an&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;Then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;we&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cycle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;through&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Breakpoint&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;calculating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;along&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;way&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;commission&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="confirmdispatch_invoicephpcredit_invoicephp"&gt;ConfirmDispatch_Invoice.php/Credit_invoice.php&lt;/h2&gt;
&lt;p&gt;As the system is designed to accrue the commission at the point where the&lt;br/&gt;
invoice or credit note is raised, then in these two scripts the &lt;br/&gt;
CalculateCommission() function is called. &lt;br/&gt;
If there is commission to pay then generate an entry in the new salescommissions&lt;br/&gt;
table:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CREATE TABLE salescommissions (&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;type smallint(6) NOT NULL DEFAULT 10,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;transno int(11) NOT NULL DEFAULT 0,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;salespersoncode varchar(4) NOT NULL DEFAULT '',&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;paid int(1) NOT NULL DEFAULT 0,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;amount double NOT NULL DEFAULT 0.0,&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;PRIMARY KEY (type, transno),&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;KEY (salespersoncode),&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;KEY (paid)&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Also a journal is done to debit the relevant sales commission expense account&lt;br/&gt;
and to credit the sales commission accruals account. A new systype record &lt;br/&gt;
will be needed for "Sales commission accruals".&lt;br/&gt;
If there is no commission for a transaction then no transactions are written&lt;br/&gt;
to ensure we don't get masses of zero transactions.&lt;/p&gt;
&lt;h2 id="salescommissionreportsphp"&gt;SalesCommissionReports.php&lt;/h2&gt;
&lt;p&gt;This inquiry/report will show outstanding and/or paid commissions by sales &lt;br/&gt;
person, or over all sales people by user defined periods.&lt;br/&gt;
This may end up being more than one script.&lt;br/&gt;
&lt;img alt="SalesCommissionReports.php" rel="nofollow" src="https://www.kwamoja.org/images/SalesCommissionReports.png"/&gt;&lt;br/&gt;
&lt;img alt="SalesCommissionReports.php" rel="nofollow" src="https://www.kwamoja.org/images/SalesCommissionReports2.png"/&gt;&lt;/p&gt;
&lt;h2 id="salescommissionstatementsphp"&gt;SalesCommissionStatements.php&lt;/h2&gt;
&lt;p&gt;This will provide a statement of unpaid commission for a given salesperson &lt;br/&gt;
for a given period.&lt;br/&gt;
This script will also have the option to create a purchase invoice for the &lt;br/&gt;
commission (if a supplier account was assigned to this sales person in &lt;br/&gt;
Suppliers.php - see above) and when the invoice is raised the transaction &lt;br/&gt;
will be marked as paid in the salescommissions table. If no suppliers account &lt;br/&gt;
is assigned then the transactions are marked as paid, and when the payment is &lt;br/&gt;
made to the sales person (either via a payroll journal or a GL payment) the&lt;br/&gt;
opposite entry must be made to clear the accrual.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tim Schofield</dc:creator><pubDate>Tue, 15 Oct 2024 09:20:28 -0000</pubDate><guid>https://sourceforge.net21a49cfafa0cea059961d45fb6915cf62e4cec99</guid></item></channel></rss>