diff --git a/admin/import.php b/admin/import.php index ef81bae..9889949 100644 --- a/admin/import.php +++ b/admin/import.php @@ -1,4 +1,19 @@ . + */ require '../config.php'; diff --git a/class/nomenclature.class.php b/class/nomenclature.class.php index 6543ac7..ff203fd 100644 --- a/class/nomenclature.class.php +++ b/class/nomenclature.class.php @@ -1,4 +1,19 @@ . + */ if (!class_exists('TObjetStd')) { @@ -1179,10 +1194,10 @@ function addMvtStock($qty, $fk_warehouse_to_make, $fk_warehouse_needed, $use_sub } /** - * Renvoi la quantité potentiellement fabricable du produit final par rapport au stock théorique ou reel des composants + * Compute the quantity that can be manufactured based on component stock. * - * @param string $attr_stock attribut d'un objet Product (stock_theorique | stock_reel) - * @return float + * @param string $attr_stock Attribute name on Product (stock_theorique | stock_reel) + * @return float|null Quantity that can be made or null when no components found */ public function getQtyManufacturable($attr_stock='stock_theorique') { diff --git a/class/techatm.class.php b/class/techatm.class.php index 3e96287..1e9b5e5 100644 --- a/class/techatm.class.php +++ b/class/techatm.class.php @@ -148,7 +148,7 @@ public static function getLastModuleVersionUrl($moduleDescriptor){ /** - * @param $url + * @param type $url Description * @return false|object */ public function getJsonData($url){ @@ -170,7 +170,7 @@ public function getJsonData($url){ } /** - * @param $url + * @param type $url Description * @return false|string */ public function getContents($url){ diff --git a/config.default.php b/config.default.php index e0b3ce6..0e0702e 100644 --- a/config.default.php +++ b/config.default.php @@ -1,5 +1,20 @@ . + */ + if(is_file('../main.inc.php'))$dir = '../'; else if(is_file('../../../main.inc.php'))$dir = '../../../'; else $dir = '../../'; @@ -27,5 +42,5 @@ exit; } - + diff --git a/config.php b/config.php index 115dfc9..18e99a4 100644 --- a/config.php +++ b/config.php @@ -1,4 +1,19 @@ . + */ require(__DIR__.'/config.default.php'); diff --git a/core/modules/modnomenclature.class.php b/core/modules/modnomenclature.class.php index 6fec908..64acaf1 100644 --- a/core/modules/modnomenclature.class.php +++ b/core/modules/modnomenclature.class.php @@ -61,7 +61,7 @@ function __construct($db) $this->description = "Description of module nomenclature"; // Possible values for version are: 'development', 'experimental', 'dolibarr' or version - $this->version = '4.13.0'; + $this->version = '4.13.1'; // Url to the file with your last numberversion of this module require_once __DIR__ . '/../../class/techatm.class.php'; @@ -77,25 +77,6 @@ function __construct($db) // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' $this->picto='nomenclature.svg@nomenclature'; - // Defined all module parts (triggers, login, substitutions, menus, css, etc...) - // for default path (eg: /nomenclature/core/xxxxx) (0=disable, 1=enable) - // for specific path of parts (eg: /nomenclature/core/modules/barcode) - // for specific css file (eg: /nomenclature/css/nomenclature.css.php) - //$this->module_parts = array( - // 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers) - // 'login' => 0, // Set this to 1 if module has its own login method directory (core/login) - // 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions) - // 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus) - // 'theme' => 0, // Set this to 1 if module has its own theme directory (theme) - // 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl) - // 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode) - // 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx) - // 'css' => array('/nomenclature/css/nomenclature.css.php'), // Set this to relative path of css file if module has its own css file - // 'js' => array('/nomenclature/js/nomenclature.js'), // Set this to relative path of js file if module must load a js on all pages - // 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module - // 'dir' => array('output' => 'othermodulename'), // To force the default directories names - // 'workflow' => array('WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2'=>array('enabled'=>'isModEnabled("module1") && isModEnabled("module2")', 'picto'=>'yourpicto@nomenclature')) // Set here all workflow context managed by module - // ); $this->module_parts = array( 'hooks'=>array( 'propalcard' @@ -123,48 +104,15 @@ function __construct($db) $this->depends = array(); // List of modules id that must be enabled if this module is enabled $this->requiredby = array(); // List of modules id to disable if this one is disabled $this->conflictwith = array(); // List of modules id this module is in conflict with - $this->phpmin = array(7,0); // Minimum version of PHP required by module + $this->phpmin = array(7,4); // Minimum version of PHP required by module $this->need_dolibarr_version = array(17,0); // Minimum version of Dolibarr required by module $this->langfiles = array("nomenclature@nomenclature"); - // Constants - // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) - // Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',1), - // 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1) - // ); $this->const[] = array('NOMENCLATURE_USE_TIME_BEFORE_LAUNCH','chaine','1','',0,'current'); $this->const[] = array('NOMENCLATURE_USE_TIME_PREPARE','chaine','1','',0,'current'); $this->const[] = array('NOMENCLATURE_USE_TIME_DOING','chaine','1','',0,'current'); $this->const[] = array('NOMENCLATURE_CLOSE_ON_APPLY_NOMENCLATURE_PRICE','chaine','1','',0,'current'); - //array('NOMENCLATURE_COEF_FOURNITURE','chaine','1.1','Coef. de frais généraux (stockage, appro, ...) sur Fourniture',1), - //array('NOMENCLATURE_COEF_CONSOMMABLE','chaine','1.05','Coef. de frais généraux (stockage, appro, ...) sur consmmable',1), - //array('NOMENCLATURE_COEF_MARGE','chaine','20','Coef. de marge sur prix de vente (en %)',1), - - // Array to add new pages in new tabs - // Example: $this->tabs = array('objecttype:+tabname1:Title1:mylangfile@nomenclature:$user->rights->nomenclature->read:/nomenclature/mynewtab1.php?id=__ID__', // To add a new tab identified by code tabname1 - // 'objecttype:+tabname2:Title2:mylangfile@nomenclature:$user->rights->othermodule->read:/nomenclature/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2 - // 'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname - // where objecttype can be - // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) - // 'contact' to add a tab in contact view - // 'contract' to add a tab in contract view - // 'group' to add a tab in group view - // 'intervention' to add a tab in intervention view - // 'invoice' to add a tab in customer invoice view - // 'invoice_supplier' to add a tab in supplier invoice view - // 'member' to add a tab in fundation member view - // 'opensurveypoll' to add a tab in opensurvey poll view - // 'order' to add a tab in customer order view - // 'order_supplier' to add a tab in supplier order view - // 'payment' to add a tab in payment view - // 'payment_supplier' to add a tab in supplier payment view - // 'product' to add a tab in product view - // 'propal' to add a tab in propal view - // 'project' to add a tab in project view - // 'stock' to add a tab in stock view - // 'thirdparty' to add a tab in third party view - // 'user' to add a tab in user view $this->tabs = array( 'product:+nomenclature:Nomenclature:nomenclature@nomenclature:$user->hasRight("nomenclature","read"):/nomenclature/nomenclature.php?fk_product=__ID__' ,'thirdparty:+nomenclaturecoef:Coefficient:nomenclature@nomenclature:$user->hasRight("nomenclature","tiers","updatecoef"):/nomenclature/nomenclature_coef.php?socid=__ID__&fiche=tiers' @@ -185,21 +133,6 @@ function __construct($db) $conf->nomenclature->enabled=0; } $this->dictionaries=array(); - /* Example: - if (! isModEnabled("nomenclature")) $conf->nomenclature->enabled=0; // This is to avoid warnings - $this->dictionaries=array( - 'langs'=>'mylangfile@nomenclature', - 'tabname'=>array(MAIN_DB_PREFIX."table1",MAIN_DB_PREFIX."table2",MAIN_DB_PREFIX."table3"), // List of tables we want to see into dictonnary editor - 'tablib'=>array("Table1","Table2","Table3"), // Label of tables - 'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'), // Request to select fields - 'tabsqlsort'=>array("label ASC","label ASC","label ASC"), // Sort order - 'tabfield'=>array("code,label","code,label","code,label"), // List of fields (result of select to show dictionary) - 'tabfieldvalue'=>array("code,label","code,label","code,label"), // List of fields (list of fields to edit a record) - 'tabfieldinsert'=>array("code,label","code,label","code,label"), // List of fields (list of fields for insert) - 'tabrowid'=>array("rowid","rowid","rowid"), // Name of columns with primary key (try to always name it 'rowid') - 'tabcond'=>array(isModEnabled("nomenclature"),isModEnabled("nomenclature"),isModEnabled("nomenclature")) // Condition to show each dictionary - ); - */ // Boxes // Add here list of php file(s) stored in core/boxes that contains class to show a box. @@ -260,23 +193,6 @@ function __construct($db) $this->menu = array(); // List of menus to add $r=0; - // Add here entries to declare new menus - // - // Example to declare a new Top Menu entry and its Left menu entry: - // $this->menu[$r]=array( 'fk_menu'=>0, // Put 0 if this is a top menu - // 'type'=>'top', // This is a Top menu entry - // 'titre'=>'nomenclature top menu', - // 'mainmenu'=>'nomenclature', - // 'leftmenu'=>'nomenclature', - // 'url'=>'/nomenclature/pagetop.php', - // 'langs'=>'mylangfile@nomenclature', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - // 'position'=>100, - // 'enabled'=>'isModEnabled("nomenclature")', // Define condition to show or hide menu entry. Use 'isModEnabled("nomenclature")' if entry must be visible if module is enabled. - // 'perms'=>'1', // Use 'perms'=>'$user->hasRight("nomenclature", "level1", "level2")' if you want your menu with a permission rules - // 'target'=>'', - // 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both - // $r++; - // // Example to declare a Left Menu entry into an existing Top menu entry: $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=products', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'left', // This is a Left menu entry @@ -309,19 +225,6 @@ function __construct($db) // Exports $r=1; - // Example: - // $this->export_code[$r]=$this->rights_class.'_'.$r; - // $this->export_label[$r]='CustomersInvoicesAndInvoiceLines'; // Translation key (used only if key ExportDataset_xxx_z not found) - // $this->export_enabled[$r]='1'; // Condition to show export in list (ie: '$user->id==3'). Set to 1 to always show when module is enabled. - // $this->export_permission[$r]=array(array("facture","facture","export")); - // $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.price'=>"LineUnitPrice",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.total_ht'=>"LineTotalHT",'fd.total_tva'=>"LineTotalTVA",'fd.total_ttc'=>"LineTotalTTC",'fd.date_start'=>"DateStart",'fd.date_end'=>"DateEnd",'fd.fk_product'=>'ProductId','p.ref'=>'ProductRef'); - // $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.price'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.fk_product'=>'product','p.ref'=>'product'); - // $this->export_sql_start[$r]='SELECT DISTINCT '; - // $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'facturedet as fd, '.MAIN_DB_PREFIX.'societe as s)'; - // $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)'; - // $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture'; - // $this->export_sql_order[$r] .=' ORDER BY s.nom'; - // $r++; } /** diff --git a/core/triggers/interface_50_modnomenclature_nomenclaturetrigger.class.php b/core/triggers/interface_50_modnomenclature_nomenclaturetrigger.class.php index 16cf3d2..8ba12d9 100644 --- a/core/triggers/interface_50_modnomenclature_nomenclaturetrigger.class.php +++ b/core/triggers/interface_50_modnomenclature_nomenclaturetrigger.class.php @@ -48,13 +48,13 @@ public function __construct($db) $this->db = $db; $this->name = preg_replace('/^Interface/i', '', get_class($this)); - $this->family = "demo"; + $this->family = "ATM Consulting - GPAO"; $this->description = "Triggers of this module are empty functions." . "They have no effect." . "They are provided for tutorial purpose only."; // 'development', 'experimental', 'dolibarr' or version $this->version = 'development'; - $this->picto = 'nomenclature@nomenclature'; + $this->picto = 'nomenclature@nomenclature.png'; } /** @@ -101,17 +101,16 @@ public function getVersion() /** * Function called when a Dolibarrr business event is done. - * All functions "run_trigger" are triggered if file - * is inside directory core/triggers + * All functions "run_trigger" are triggered if file is inside directory core/triggers. * - * @param string $action Event action code - * @param Object $object Object - * @param User $user Object user - * @param Translate $langs Object langs - * @param conf $conf Object conf - * @return int <0 if KO, 0 if no triggered ran, >0 if OK + * @param string $action Event action code + * @param Object $object Target object of the event + * @param User $user Current user + * @param Translate $langs Translation handler + * @param Conf $conf Global conf object + * @return int <0 if KO, 0 if no trigger ran, >0 if OK */ - public function run_trigger($action, $object, $user, $langs, $conf) { + public function runTrigger($action, $object, $user, $langs, $conf) { // Put here code you want to execute when a Dolibarr business events occurs. // Data and type of action are stored into $object and $action // Users @@ -551,7 +550,7 @@ private function _setPrice(&$PDOdb, &$object,$fk_parent,$object_type) { $propal = new Propal($db); $propal->fetch($fk_parent); $propalBuyPrice = !empty($n->totalPRCMO / $object->qty) ? $n->totalPRCMO / $object->qty : $object->pa_ht; - + $propal->updateline($object->id,$sell_price_to_use,$object->qty,$object->remise_percent,$object->tva_tx,$object->localtax1_tx,$object->localtax2_tx,$object->desc,'HT',0,0,0,0,$object->fk_fournprice, $propalBuyPrice, $object->label, $object->product_type, $object->date_start, $object->date_end, 0, $object->fk_unit); diff --git a/js/nomenclature.js.php b/js/nomenclature.js.php index 9b5e07b..5ff4392 100644 --- a/js/nomenclature.js.php +++ b/js/nomenclature.js.php @@ -1,4 +1,19 @@ . + */ define('INC_FROM_CRON_SCRIPT',true); if (!defined("NOCSRFCHECK")) define("NOSCRFCHECK", 1); if (!defined('NOTOKENRENEWAL')) { diff --git a/js/searchproductcategory.js.php b/js/searchproductcategory.js.php index a9bc39c..d09df82 100644 --- a/js/searchproductcategory.js.php +++ b/js/searchproductcategory.js.php @@ -1,4 +1,19 @@ . + */ if (!defined('NOTOKENRENEWAL')) { define('NOTOKENRENEWAL', 1); } diff --git a/massUpdate.php b/massUpdate.php index 5993972..7b37a18 100644 --- a/massUpdate.php +++ b/massUpdate.php @@ -1,4 +1,19 @@ . + */ require 'config.php'; diff --git a/nomenclature-detail.php b/nomenclature-detail.php index f5f2ee4..0364890 100644 --- a/nomenclature-detail.php +++ b/nomenclature-detail.php @@ -1,4 +1,19 @@ . + */ require 'config.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/order.lib.php'; diff --git a/nomenclature-speed.php b/nomenclature-speed.php index b13e496..83b75f0 100644 --- a/nomenclature-speed.php +++ b/nomenclature-speed.php @@ -1,4 +1,19 @@ . + */ require 'config.php'; dol_include_once('/nomenclature/class/nomenclature.class.php'); diff --git a/nomenclature.php b/nomenclature.php index 918ba6e..abb325f 100644 --- a/nomenclature.php +++ b/nomenclature.php @@ -1,4 +1,19 @@ . + */ require 'config.php'; dol_include_once('/product/class/product.class.php'); diff --git a/nomenclature_coef.php b/nomenclature_coef.php index 4082f37..d239b70 100644 --- a/nomenclature_coef.php +++ b/nomenclature_coef.php @@ -1,4 +1,19 @@ . + */ require 'config.php'; dol_include_once('/nomenclature/class/nomenclature.class.php'); diff --git a/prod_ajax.php b/prod_ajax.php index 1e425de..ba48ae6 100644 --- a/prod_ajax.php +++ b/prod_ajax.php @@ -1,4 +1,19 @@ . + */ if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php diff --git a/script/create_coeff_extrafields.php b/script/create_coeff_extrafields.php index 0ce4a4a..ae29f58 100644 --- a/script/create_coeff_extrafields.php +++ b/script/create_coeff_extrafields.php @@ -1,4 +1,19 @@ . + */ require '../config.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; diff --git a/script/delete_orphelin.php b/script/delete_orphelin.php index df482c7..03dbb69 100644 --- a/script/delete_orphelin.php +++ b/script/delete_orphelin.php @@ -1,4 +1,19 @@ . + */ require '../config.php'; dol_include_once('/nomenclature/class/nomenclature.class.php'); diff --git a/script/delete_propal_duplicates.php b/script/delete_propal_duplicates.php index a21e5b1..c57e58d 100644 --- a/script/delete_propal_duplicates.php +++ b/script/delete_propal_duplicates.php @@ -1,4 +1,19 @@ . + */ require_once __DIR__ . '/../config.php'; require_once __DIR__ . '/../class/nomenclature.class.php'; diff --git a/script/interface.php b/script/interface.php index a2351ba..b519b8d 100644 --- a/script/interface.php +++ b/script/interface.php @@ -1,4 +1,19 @@ . + */ if (!defined("NOCSRFCHECK")) define("NOSCRFCHECK", 1); if (!defined('NOTOKENRENEWAL')) {