diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index d9d5c25dd016367072bc00953bf528449511019c..c973d11550f7dbf4337f2ecbbbac93991104d500 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -78,7 +78,7 @@ $hookmanager->initHooks(array('admin')); // Put here declaration of dictionaries properties // Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this. -$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,29,0,7,17,24,28,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,25,0,26,0,31,0); +$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,29,0,7,17,24,28,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,25,0,26,0,31,32,0); // Name of SQL tables of dictionaries $tabname=array(); @@ -113,6 +113,7 @@ $tabname[28]= MAIN_DB_PREFIX."c_holiday_types"; $tabname[29]= MAIN_DB_PREFIX."c_lead_status"; $tabname[30]= MAIN_DB_PREFIX."c_format_cards"; $tabname[31]= MAIN_DB_PREFIX."accounting_system"; +$tabname[32]= MAIN_DB_PREFIX."c_accountancy_category"; // Dictionary labels $tablib=array(); @@ -147,6 +148,7 @@ $tablib[28]= "DictionaryHolidayTypes"; $tablib[29]= "DictionaryOpportunityStatus"; $tablib[30]= "DictionaryFormatCards"; $tablib[31]= "DictionaryAccountancysystem"; +$tablib[32]= "DictionaryAccountancyCategory"; // Requests to extract data $tabsql=array(); @@ -181,6 +183,7 @@ $tabsql[28]= "SELECT h.rowid as rowid, h.code, h.label, h.affect, h.delay, h.new $tabsql[29]= "SELECT rowid as rowid, code, label, percent, position, active FROM ".MAIN_DB_PREFIX."c_lead_status"; $tabsql[30]= "SELECT rowid, code, name, paper_size, orientation, metric, leftmargin, topmargin, nx, ny, spacex, spacey, width, height, font_size, custom_x, custom_y, active FROM ".MAIN_DB_PREFIX."c_format_cards"; $tabsql[31]= "SELECT s.rowid as rowid, pcg_version, s.fk_pays as country_id, c.code as country_code, c.label as country, s.label, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s, ".MAIN_DB_PREFIX."c_country as c WHERE s.fk_pays=c.rowid and c.active=1"; +$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range, a.position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accountancy_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1"; // Criteria to sort dictionaries $tabsqlsort=array(); @@ -215,6 +218,7 @@ $tabsqlsort[28]="country ASC, code ASC"; $tabsqlsort[29]="position ASC"; $tabsqlsort[30]="code ASC"; $tabsqlsort[31]="pcg_version ASC"; +$tabsqlsort[32]="code ASC, label ASC"; // Nom des champs en resultat de select pour affichage du dictionnaire $tabfield=array(); @@ -249,6 +253,7 @@ $tabfield[28]= "code,label,affect,delay,newByMonth,country_id,country"; $tabfield[29]= "code,label,percent,position"; $tabfield[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfield[31]= "pcg_version,country_id,country,label"; +$tabfield[32]= "code,label,range,position,country_id,country"; // Nom des champs d'edition pour modification d'un enregistrement $tabfieldvalue=array(); @@ -283,6 +288,7 @@ $tabfieldvalue[28]= "code,label,affect,delay,newByMonth,country"; $tabfieldvalue[29]= "code,label,percent,position"; $tabfieldvalue[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfieldvalue[31]= "pcg_version,country,label"; +$tabfieldvalue[32]= "code,label,range,position,country"; // Nom des champs dans la table pour insertion d'un enregistrement $tabfieldinsert=array(); @@ -317,6 +323,7 @@ $tabfieldinsert[28]= "code,label,affect,delay,newByMonth,fk_country"; $tabfieldinsert[29]= "code,label,percent,position"; $tabfieldinsert[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfieldinsert[31]= "pcg_version,fk_pays,label"; +$tabfieldinsert[32]= "code,label,range,position,fk_country"; // Nom du rowid si le champ n'est pas de type autoincrement // Example: "" if id field is "rowid" and has autoincrement on @@ -353,6 +360,7 @@ $tabrowid[28]= ""; $tabrowid[29]= ""; $tabrowid[30]= ""; $tabrowid[31]= ""; +$tabrowid[32]= ""; // Condition to show dictionary in setup page $tabcond=array(); @@ -387,6 +395,7 @@ $tabcond[28]= ! empty($conf->holiday->enabled); $tabcond[29]= ! empty($conf->projet->enabled); $tabcond[30]= ! empty($conf->label->enabled); $tabcond[31]= ! empty($conf->accounting->enabled); +$tabcond[32]= ! empty($conf->accounting->enabled); // List of help for fields $tabhelp=array(); @@ -420,6 +429,8 @@ $tabhelp[27] = array('code'=>$langs->trans("EnterAnyCode")); $tabhelp[28] = array('affect'=>$langs->trans("FollowedByACounter"),'delay'=>$langs->trans("MinimumNoticePeriod"), 'newByMonth'=>$langs->trans("NbAddedAutomatically")); $tabhelp[29] = array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList")); $tabhelp[30] = array('code'=>$langs->trans("EnterAnyCode"), 'name'=>$langs->trans("LabelName"), 'paper_size'=>$langs->trans("LabelPaperSize")); +$tabhelp[31] = array('pcg_version'=>$langs->trans("EnterAnyCode")); +$tabhelp[32] = array('code'=>$langs->trans("EnterAnyCode")); // List of check for fields (NOT USED YET) $tabfieldcheck=array(); @@ -454,6 +465,7 @@ $tabfieldcheck[28] = array(); $tabfieldcheck[29] = array(); $tabfieldcheck[30] = array(); $tabfieldcheck[31] = array(); +$tabfieldcheck[32] = array(); // Complete all arrays with entries found into modules complete_dictionary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond,$tabhelp,$tabfieldcheck); @@ -470,6 +482,7 @@ if ($id == 11) $langs->load("propal"); $langs->load("bills"); $langs->load("interventions"); + $langs->load("accountancy"); $elementList = array( '' => '', 'societe' => $langs->trans('ThirdParty'), @@ -544,7 +557,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $ok=1; foreach ($listfield as $f => $value) { - if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory + if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes','DictionaryRevenueStamp','DictionaryAccountancysystem','DictionaryAccountancyCategory'))) continue; // For some pages, country is not mandatory if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType','DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue; if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue; @@ -962,6 +975,7 @@ if ($id) if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); } if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } + if ($fieldlist[$field]=='range') { $valuetoshow=$langs->trans("Range"); } if ($id == 2) // Special cas for state page { @@ -1129,6 +1143,7 @@ if ($id) if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); } if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } + if ($fieldlist[$field]=='range') { $valuetoshow=$langs->trans("Range"); } // Affiche nom du champ if ($showfield) diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 8d25cd8233db82d376202a497c252ba94489f16b..3fa7d67c7ec39de51fd6615ad52072299e2eafb5 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -324,4 +324,16 @@ ALTER TABLE llx_product_lang ADD COLUMN import_key varchar(14) DEFAULT NULL; ALTER TABLE llx_actioncomm MODIFY COLUMN elementtype varchar(255) DEFAULT NULL; -DELETE FROM llx_menu where module='expensereport'; \ No newline at end of file +DELETE FROM llx_menu where module='expensereport'; + +CREATE TABLE llx_c_accountancy_category ( + rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, + code varchar(16) NOT NULL, + label varchar(255) NOT NULL, + range varchar(255) NOT NULL, + position integer DEFAULT 0, + fk_country integer DEFAULT NULL, -- This category is dedicated to a country + active integer DEFAULT 1 +) ENGINE=innodb; + +ALTER TABLE llx_c_accountancy_category ADD UNIQUE INDEX uk_c_accountancy_category(code); \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_c_accountancy_category.key.sql b/htdocs/install/mysql/tables/llx_c_accountancy_category.key.sql new file mode 100644 index 0000000000000000000000000000000000000000..3a3a0fe4294da9413bcffe8c652296174eadcae0 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_accountancy_category.key.sql @@ -0,0 +1,19 @@ +-- =================================================================== +-- Copyright (C) 2015-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- =================================================================== + +ALTER TABLE llx_c_accountancy_category ADD UNIQUE INDEX uk_c_accountancy_category(code); diff --git a/htdocs/install/mysql/tables/llx_c_accountancy_category.sql b/htdocs/install/mysql/tables/llx_c_accountancy_category.sql new file mode 100644 index 0000000000000000000000000000000000000000..4a8d57148190e698917a6629dfaf0cb92374eea2 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_accountancy_category.sql @@ -0,0 +1,27 @@ +-- =================================================================== +-- Copyright (C) 2015-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- =================================================================== + +CREATE TABLE llx_c_accountancy_category ( + rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, + code varchar(16) NOT NULL, + label varchar(255) NOT NULL, + range varchar(255) NOT NULL, + position integer DEFAULT 0, + fk_country integer DEFAULT NULL, -- This category is dedicated to a country + active integer DEFAULT 1 +) ENGINE=innodb; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index d0d13aa35fcf34c8821f2b018786840c0e4e49d1..cb3e19dbf79cddd3cfd5512b400132f042c85c9c 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -176,4 +176,7 @@ Options=Options OptionModeProductSell=Mode sales OptionModeProductBuy=Mode purchases OptionModeProductSellDesc=Show all products with no accounting account defined for sales. -OptionModeProductBuyDesc=Show all products with no accounting account defined for purchases. \ No newline at end of file +OptionModeProductBuyDesc=Show all products with no accounting account defined for purchases. + +## Dictionary +Range=Range of accounting account \ No newline at end of file diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 9860b3506da16b41eaeb18d1c94b8c65c3990864..b98081154852d73d7c7c0019e34a19c4bb24288f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -831,7 +831,7 @@ DictionaryStaff=Staff DictionaryAvailability=Delivery delay DictionaryOrderMethods=Ordering methods DictionarySource=Origin of proposals/orders -DictionaryAccountancyplan=Chart of accounts +DictionaryAccountancyCategory=Accounting categories DictionaryAccountancysystem=Models for chart of accounts DictionaryEMailTemplates=Emails templates DictionaryUnits=Units