diff --git a/ChangeLog b/ChangeLog index ffb51bd26c3..7e8ce042bf3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,234 @@ English Dolibarr ChangeLog -------------------------------------------------------------- + +***** ChangeLog for 12.0 compared to 11.0 ***** +For users: + +NEW: Module MO (Manufacturing Order) is available as stable module. +NEW: Receipt printer module moved from 'development' to 'experimental' +NEW: Add option MAIN_VIEW_LINE_NUMBER_IN_LIST for some lists. +NEW: add numbering module for TakePOS module +NEW: 2 new options when creating an invoice from time spent on a project : by period or by task +NEW: Accountancy add column thirdparty on binding page +NEW: Accountancy - Add Export for Fiducial Winfic eWinfic WinSis Compta +NEW: Accountancy - Add Export LD compta version 10 +NEW: Accountancy - Add mode intra & export for product or service bought +NEW: Accountancy - Add possibility to manage a short alternative label for account - Use to simplify accountancy +NEW: Accountancy - General ledger - Add an option to search not reconciled lines +NEW: Add accountancy code of thirdparty in contact and supplier export +NEW: add a link to notes in members list +NEW: add a parameter to group same products in TakePOS +NEW: add a parameter to sort product by label in TakePOS +NEW: Add a profil to import contact categories +NEW: Add company extrafields into order export +NEW: add const CASHDESK_FORCE_DECREASE_STOCK to force batch decrementation +NEW: add const TAKEPOS_NUMPAD_USE_PAYMENT_ICON to use icons on payment buttons +NEW: add csv separator setup in module admin +NEW: add dedicated substitutions keys for extrafields of type date and datetime +NEW: add default warehouse for dispatch +NEW: Add due date in feature "Export accounting documents" +NEW: Add duration information for fichinter +NEW: Start support of Dark theme into ELDY theme +NEW: Add field author public alias for blog post on website module +NEW: Add "finished" field on product list +NEW: Add French association chart of accounts 2018 +NEW: Add French farm chart of accounts 2014 +NEW: Add French foundation chart of accounts 2018 +NEW: add global reduction in cash desk +NEW: Add graph type 'piesemicircle' +NEW: Add hook getInputIdProf. Better solution for #13228 +NEW: Add hook on margin list page +NEW: add icon on payment buttons in cash desk +NEW: Add include various payments and loans in accounting report with simplfified accountancy +NEW: Add invoice stat graph and categ search +NEW: Addition of delivery times in substitution variables +NEW: add member to validate on dashboard +NEW: Add method to add social network sharing buttons on blog posts +NEW: add multicurrency columns to document lists +NEW: add numbering module for cash desk +NEW: add Opening Balance column to balance.php +NEW: add opportunity status in project stats +NEW: Add option PDF_USE_ALSO_LANGUAGE_CODE to generate PDF in 2 languages +NEW: Add option to hide all inactive users into combo list of users. +NEW: add PDF certificate if present on document folder +NEW: add product if only one found +NEW: Add product on key "Enter" in search bar +NEW: add professional ID 1 in sepamandate document +NEW: Add Project Ref Column on list of social/fiscal contributions +NEW: add Project Ref in events export +NEW: add public and private notes in propal list +NEW: Add social networks of the company +NEW: Add sorting for contacts of ... pages +NEW: Add subtitution variables for url of document in backoffice +NEW: Add tel and fax in warehouse card +NEW: add total of value in product stat +NEW: add total weighted amount in project list +NEW: add units in product list +NEW: add VAT ID in sepamandate document +NEW: add VAT rates in free zone for product/service in TakePOS +NEW: add weighted amount on project/opportunity +NEW: add width and height measures in product list +NEW: add WYSiWYG on member type's description +NEW: [Allow constants values to be overridden by environment variables] +NEW: Allow custom module class origine type in Mouvementstock +NEW: allow display extrafields on pdf +NEW: Allow extrafields on pdf : extend to line desc +NEW: allow time consumed to be linked to another task +NEW: Another way to navigate between pages for some lists +NEW: Add author column in the client/supplier invoice lists and into order list +NEW: bank account tags for invoice ODT template +NEW: Bar Restaurant tab and Auto order +NEW: better filter on shipment list as other list +NEW: Better php module view admin +NEW: Bookkeeping - Add link to document & pdf +NEW: Bookmarks are now in top menu bar +NEW: Can check all events in one click in setup of audited events +NEW: Can create an deposit from order using a percentage of qty. +NEW: Can edit option PDF_USE_ALSO_LANGUAGE_CODE from PDF setup page +NEW: Can enter and edit stripe credit card using the Stripe card ID +NEW: Can filter on donation status in list +NEW: Can replace a string into all pages in website module +NEW: Can select several fields to personalize list before submit. +NEW: Can select which element to export in export accounting documents. +NEW: can update contact in import model +NEW: Cash Fence in TakePOS +NEW: Categories and subcategories sorted by label in TakePOS +NEW: Categories for actioncomm +NEW: Category filter for bank and warehouse list +NEW: Chart of accounts to Ecuador +NEW: class tool for converting units +NEW: Close #13011 Add button create thirdparty when creating intervention +NEW: Colorful theme for TakePOS +NEW: columns units in product list +NEW: compatibility of translabel with more dict +NEW: Confirm file delete on fracture card +NEW: "contact_civility" for ODT templates +NEW: CUPS printing compatibility for TakePOS +NEW: Customer command list - Add date start & date end +NEW: display weight in shipment list +NEW: Documentation about PHP support in Dolibarr +NEW: Donation - Update FR CERFA to 11580*04 +NEW: Easier way to setup the different types of tax. Better visibility. +NEW: enable put for agendaevents api +NEW: Expedition list - Add date start & date end +NEW: Experiment supplier packaging with option PRODUCT_USE_SUPPLIER_PACKAGING: Using price according to the minimum quantity +NEW: Export module, add extrafields for Contract and Contract line +NEW: Extend retained warranty to be available for all invoices +NEW: filter by product on supplier order API +NEW: French new regions +NEW: get documents for categories with RESP API +NEW: get proposal by ref with API +NEW: Hidden option MAIN_TEMP_DIR +NEW: hook and data id +NEW: hook on ics generation to add more events in eventarray +NEW: hook on product load stats +NEW: If $dolibarr_main_force_https is set, the flag 'secure' on session +NEW: ignore dir for apple pay with stripe +NEW: Invoice list - Add date start & date end +NEW: invoice list: enable multicurrency columns +NEW: labels on reduction buttons in cash desk +NEW: Minimum sell prices taking into account in TakePOS +NEW: monthly view to enter time +NEW: Multiple sales in TakePOS +NEW: multiselect categorie client stats facturation +NEW: no confirm discard ticket if paid +NEW: not show linked table on add message action +NEW: only auto print paid ticket in cash desk +NEW: only show units columns in product list (not in service list) +NEW: order list: enable multicurrency columns +NEW: Overwrite tpl with module_part['tpl'] is deprecated. USe hooks +NEW: possibility to defined rounding rules by currency +NEW: possibility to show society info when print page +NEW: Povide a RSS Feed for blogposts +NEW: PRODUCT_SHOW_ORIGIN_IN_COMBO +NEW: Project task list, add column selector and extrafields +NEW: Propal list - Add date start & date end +NEW: propal list: enable multicurrency columns +NEW: RECEIPT_PRINTER_NB_CHARACT_BY_LINE and FIX: product label +NEW: Restore version of application on main screen (for screenshots) +NEW: Salaries list - Add date start & date end +NEW: search on key code "enter" if defined in TakePOS +NEW: set payment method on paid ticket in TakePOS +NEW: Show active widget state of a RSS feed +NEW: Show count of each category elements in category card +NEW: Show creator, last update user of category/tag in the information tab +NEW: Show list of users in the user category card +NEW: show messages on ticket card +NEW: show "New category" button in top of sub categories list +NEW: show project label in project index +NEW: Show units of products in stocks and hide total units if content is of diffents units +NEW: sorting elements on project overview +NEW: special option MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION to store in document line created form other documents lines the id of original lines and origin class line rather than origin object id and origin object type +NEW: stats invoice graph with 3 bars (3 years instead of 2) +NEW: supplier invoice list: enable multicurrency columns +NEW: supplier order list: enable multicurrency columns +NEW: supplier proposal list: enable multicurrency columns +NEW: Support of tag {line_pos} for line numbers for tables in ODT templates +NEW: Support some HTML contents into ODT documents +NEW: Parameters for Bar Restaurant are grouped in same tab +NEW: Takepos : Sort products by reference +NEW: Takepos supplements are supported. +NEW: The info_admin() can show text after click on other text +NEW: The module selection uses a KanBan view by default. +NEW: tooltip for Unit_type and scale in "Dictionary setup - Measuring Units" +NEW: tooltip notes with first public note and then private note +NEW: Tree view for sub-categories +NEW: Truncate columns names when too long and show full title as popup +NEW: upload odt models for invoices, order, proposal, thirdparties and shipments. +NEW: Use native --convert-to feature to convert to pdf +NEW: Add user on order list +NEW: Various payment list - Add search date start & date end & subledger account +NEW: visu FROM day TO day in permonth view +NEW: Website logs are now into a separated log file. +NEW: X-Axis on graph are shown verticaly when there is a lot of values. +NEW: Can force ref of a variant product + +For developers or integrators: + +NEW: Add a method $form->widgetForTranslation to allow any field of a form to be entered into different languages. +NEW: Add API to get types of expense reports +NEW: API filter bankaccounts by category +NEW: API filter contacts by category +NEW: API filter members by category +NEW: API filter projects by category +NEW: API filter thirdpartie by category +NEW: API filter thirdparty by category +NEW: API filter user by category +NEW: API filter warehouses by categorie +NEW: api for get user's documents +NEW: api invoice get by ref +NEW: API to update purchase price. +NEW: Move engine to build charts from jflot to chart.js +NEW: Upgrade ace to 1.4.8 - Upgrade select2 to 4.0.13 +NEW: Upgrade Stripe library to 6.43.1 +NEW: Bookkeeping by account - Add selectfields & hook +NEW: Can force position of legend of graph on right (instead of top) +NEW: Can change destination of "Back to list" using a "backtolist" parameter +NEW: add more category types from hook + +WARNING: + +Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: +* PHP 5.5 is no more supported. Minimum PHP is now 5.6+. +* Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests with + HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing + the HTML code of content (in such a case, sanitize data later) +* Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless. +* Reference of object including a "/" are no more allowed. It is never used by default but to support setup that introduced it, the "/" will be replaced + by a "_" automatically when a reference (with a custom numbering mask that use it) is generated. +* Library jflot (replace with chartjs) was removed. +* Library geoip (replaced with geoip2) was removed. +* Hidden constant COMMANDE_VALID_AFTER_CLOSE_PROPAL was renamed into ORDER_VALID_AFTER_CLOSE_PROPAL. +* Object field ref_int is deprecated and set to 'not used', method to fetch object by only ref_int is not supported anymore. +* UserGroup class has been refactored with new architecture. Triggers of class UserGroup are now USERGROUP_CREATE, USERGROUP_MODIFY, USERGROUP_DELETE +* A new way to navigate between pages in list is available. To use it (not mandatory), you must: + - replace line $page = GETPOST('page', 'int') with $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); + - remove input field in form '';' + - add parameter $pagenavastextinput to value 1 when calling print_barre_liste() + + + ***** ChangeLog for 11.0.4 compared to 11.0.3 ***** FIX: #13749 FIX: #7594 Expense report multi pagebreak @@ -80,33 +308,6 @@ FIX: Wrong Sql on getListOfTowns api method FIX: wrong user right's name to top menu "commercial" FIX: XSS Vulnerability reported by Mehmet Kelepçe / Gais Cyber Security -***** ChangeLog for 12.0.0 compared to 11.0.0 ***** -For Users: -NEW: Module MO (Manufacturing Order) is available as stable module. -NEW: Add option MAIN_VIEW_LINE_NUMBER_IN_LIST for some lists. - -For Developers or integrators: -* A new way to navigate between pages in list is available. To use it, you must - - replace $page = GETPOST('page', 'int') with $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); - - remove input field in form '';' - - add parameter $pagenavastextinput to value 1 when calling print_barre_liste -* UserGroup class has been refactored with new architecture. Triggers of class UserGroup are now USERGROUP_CREATE, USERGROUP_MODIFY, USERGROUP_DELETE - -WARNING: - -Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: -* PHP 5.5 is no more supported. Minimum PHP is now 5.6+. -* Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests - with HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing - the HTML into content (in such a case, sanitize data later) -* Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless. -* Reference of object including a "/" are no more allowed. It is never used by default but to support setup that introduced it, the "/" will be replaced - by a "_" automatically when a reference (with a custom numbering mask that use it) is generated. -* Library jflot (replace with chartjs) and geoip (replaced with geoip2) were removed. -* Hidden constant COMMANDE_VALID_AFTER_CLOSE_PROPAL were renamed into ORDER_VALID_AFTER_CLOSE_PROPAL. -* Object field ref_int is deprecated and set to not used, object fetch by only ref_int is not supported anymore. - - ***** ChangeLog for 11.0.3 compared to 11.0.2 ***** FIX: unit price for selected supplier products not set. NaN was used. FIX: use bad var to check if total is positive for each VAT rate when validating an invoice diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 6cb34192845..bf8353da5c9 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -301,6 +301,9 @@ if ($search_email) $sql .= natural_search("d.email", $search_email); if ($search_town) $sql .= natural_search("d.town", $search_town); if ($search_zip) $sql .= natural_search("d.zip", $search_zip); if ($search_state) $sql .= natural_search("state.nom", $search_state); +if ($search_phone) $sql .= natural_search("d.phone", $search_phone); +if ($search_phone_perso) $sql .= natural_search("d.phone_perso", $search_phone_perso); +if ($search_phone_mobile) $sql .= natural_search("d.phone_mobile", $search_phone_mobile); if ($search_country) $sql .= " AND d.country IN (".$search_country.')'; if ($filter == 'uptodate') $sql .= " AND (datefin >= '".$db->idate($now)."' OR t.subscription = 0)"; if ($filter == 'outofdate') $sql .= " AND ((datefin IS NULL OR datefin < '".$db->idate($now)."') AND t.subscription = 1)"; diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index c0f1991835b..ab2889368cd 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -1198,7 +1198,7 @@ if ($mode == 'develop') print ''."\n"; print ''; //span class="fa fa-bug"> - //print ''; + //print ''; print '
'; print ''; print ''.$langs->trans("TryToUseTheModuleBuilder", $langs->transnoentitiesnoconv("ModuleBuilder")).''; @@ -1208,7 +1208,7 @@ if ($mode == 'develop') print ''."\n"; $url = 'https://partners.dolibarr.org'; print ''; - print''; + print''; print ''; print ''.$langs->trans("DoliPartnersDesc").''; print ''.$url.''; diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 7c9d91d79e7..21cd3b6393e 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -82,7 +82,7 @@ class Asset extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1), 'amount_ht' => array('type'=>'double(24,8)', 'label'=>'AmountHTShort', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1, 'isameasure'=>'1', 'help'=>"Help text",), 'amount_vat' => array('type'=>'double(24,8)', 'label'=>'AmountVAT', 'visible'=>1, 'enabled'=>1, 'position'=>40, 'notnull'=>-1, 'isameasure'=>'1', 'help'=>"Help text",), - 'fk_asset_type' => array('type'=>'integer:AssetType:asset/class/asset_type.class.php', 'label'=>'AssetsType', 'visible'=>1, 'enabled'=>1, 'position'=>50, 'notnull'=>1, 'index'=>1, 'searchall'=>1, 'help'=>"LinkToThirparty",), + 'fk_asset_type' => array('type'=>'integer:AssetType:asset/class/asset_type.class.php', 'label'=>'AssetsType', 'visible'=>1, 'enabled'=>1, 'position'=>50, 'notnull'=>1, 'index'=>1, 'searchall'=>1), 'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>90, 'notnull'=>-1,), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'visible'=>-1, 'enabled'=>1, 'position'=>91, 'notnull'=>-1,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'visible'=>-1, 'enabled'=>1, 'position'=>92, 'notnull'=>-1,), diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 86e0b84b655..790487b4032 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -91,7 +91,7 @@ class BOM extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'1',), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'autofocusoncreate'=>1), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,), 'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp'), 'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'), diff --git a/htdocs/categories/info.php b/htdocs/categories/info.php index 644886c7387..bef54f9dd6b 100644 --- a/htdocs/categories/info.php +++ b/htdocs/categories/info.php @@ -60,10 +60,10 @@ llxHeader('', $langs->trans('Categories'), ''); //$object->info($object->id); -$head = categories_prepare_head($object, $type); - $title = Categorie::$MAP_TYPE_TITLE_AREA[$type]; +$head = categories_prepare_head($object, $type); + dol_fiche_head($head, 'info', $langs->trans($title), -1, 'category'); $backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type); $linkback = ''.$langs->trans("BackToList").''; @@ -78,14 +78,21 @@ $morehtmlref .= ''; dol_banner_tab($object, 'label', $linkback, ($user->socid ? 0 : 1), 'label', 'label', $morehtmlref, '&type='.$type, 0, '', '', 1); +print '
'; + print '
'; print '
'; print '
'; -print ''; + +print '
'; +print ''; + +print '
'; dol_print_object_info($object); -print '
'; +print '
'; + print '
'; dol_fiche_end(); diff --git a/htdocs/categories/photos.php b/htdocs/categories/photos.php index 07e5d56d268..6b20105f797 100644 --- a/htdocs/categories/photos.php +++ b/htdocs/categories/photos.php @@ -144,7 +144,7 @@ if ($object->id) print '
'; print '
'; - print ''; + print '
'; // Description print '
'; diff --git a/htdocs/categories/traduction.php b/htdocs/categories/traduction.php index c3f87e404b7..b06a24c995f 100644 --- a/htdocs/categories/traduction.php +++ b/htdocs/categories/traduction.php @@ -22,7 +22,7 @@ /** * \file htdocs/product/traduction.php * \ingroup product - * \brief Page de traduction des produits + * \brief Page of translation of products */ require '../main.inc.php'; @@ -167,12 +167,12 @@ $cancel != $langs->trans("Cancel") && * View */ -llxHeader("", "", $langs->trans("Translation")); - $form = new Form($db); $formadmin = new FormAdmin($db); $formother = new FormOther($db); +llxHeader("", "", $langs->trans("Translation")); + $title = Categorie::$MAP_TYPE_TITLE_AREA[$type]; $head = categories_prepare_head($object, $type); @@ -194,8 +194,7 @@ $object->next_prev_filter = ' type = '.$object->type; $object->ref = $object->label; $morehtmlref = '
'.$langs->trans("Root").' >> '; $ways = $object->print_all_ways(" >> ", '', 1); -foreach ($ways as $way) -{ +foreach ($ways as $way) { $morehtmlref .= $way."
\n"; } $morehtmlref .= '
'; @@ -207,7 +206,7 @@ print '
'; print '
'; print '
'; -print ''; +print '
'; // Description print '
'; diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 803b4ae34ab..958b77e42e8 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -241,7 +241,7 @@ print '
'; print '
'; print '
'; -print ''; +print '
'; // Description print ''; } - // Si origin du ticket + // If ticket created from another object if (isset($this->param['origin']) && $this->param['originid'] > 0) { // Parse element/subelement (ex: project_task) $element = $subelement = $this->param['origin']; @@ -225,7 +225,7 @@ class FormTicket if ($this->withthreadid > 0) { $subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withthreadid.' : '.$this->topic_title.''; } - print ''; + print ''; print ''; } } diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 4b0a2d5b131..ec8e91f5419 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -802,7 +802,10 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel print ''; // Ref - print ''; + print ''; + // Label print ''; // Date start diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e3059ade21e..2d8996523fe 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3167,7 +3167,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'object_phoning', 'object_phoning_mobile', 'object_phoning_fax', 'object_email', 'object_website', 'off', 'on', 'order', 'paiment', 'play', 'playdisabled', 'poll', 'printer', 'product', 'propal', 'projecttask', 'stock', 'resize', 'service', 'stats', 'trip', - 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'vcard', 'wrench', + 'setup', 'sign-out', 'split', 'stripe-s', 'switch_off', 'switch_on', 'tools', 'unlink', 'uparrow', 'user', 'vcard', 'wrench', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'home', 'companies', 'products', 'commercial', 'invoicing', 'preview', 'project', 'projectpub', 'supplier_invoice', 'hrm', 'members', 'ticket', 'generic', @@ -3181,7 +3181,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (in_array($pictowithouttext, array('object_generic', 'note', 'off', 'on', 'object_bookmark', 'bookmark', 'vcard'))) { $fa = 'far'; } - if (in_array($pictowithouttext, array('skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp'))) { + if (in_array($pictowithouttext, array('skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'stripe-s', 'youtube', 'google-plus-g', 'whatsapp'))) { $fa = 'fab'; } @@ -3262,24 +3262,24 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ // Add CSS $arrayconvpictotomorcess = array( - 'action'=>'bg-infobox-action', 'account'=>'bg-infobox-bank_account', 'accountancy'=>'bg-infobox-bank_account', + 'action'=>'infobox-action', 'account'=>'infobox-bank_account', 'accountancy'=>'infobox-bank_account', 'bank_account'=>'bg-infobox-bank_account', - 'bill'=>'bg-infobox-commande', 'billa'=>'bg-infobox-commande', 'billd'=>'bg-infobox-commande', - 'cash-register'=>'bg-infobox-bank_account', 'contract'=>'bg-infobox-contrat', 'check'=>'font-status4', 'conversation'=>'bg-infobox-contrat', - 'donation'=>'bg-infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'bg-infobox-action', - 'hrm'=>'bg-infobox-adherent', 'group'=>'bg-infobox-adherent', 'intervention'=>'bg-infobox-contrat', - 'multicurrency'=>'bg-infobox-bank_account', - 'members'=>'bg-infobox-adherent', 'member'=>'bg-infobox-adherent', 'money-bill-alt'=>'bg-infobox-bank_account', - 'order'=>'bg-infobox-commande', - 'user'=>'bg-infobox-adherent', 'users'=>'bg-infobox-adherent', + 'bill'=>'infobox-commande', 'billa'=>'infobox-commande', 'billd'=>'infobox-commande', + 'cash-register'=>'infobox-bank_account', 'contract'=>'infobox-contrat', 'check'=>'font-status4', 'conversation'=>'infobox-contrat', + 'donation'=>'infobox-commande', 'dollyrevert'=>'flip', 'ecm'=>'infobox-action', + 'hrm'=>'infobox-adherent', 'group'=>'infobox-adherent', 'intervention'=>'infobox-contrat', + 'multicurrency'=>'infobox-bank_account', + 'members'=>'infobox-adherent', 'member'=>'infobox-adherent', 'money-bill-alt'=>'infobox-bank_account', + 'order'=>'infobox-commande', + 'user'=>'infobox-adherent', 'users'=>'infobox-adherent', 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', - 'holiday'=>'bg-infobox-holiday', 'invoice'=>'bg-infobox-commande', - 'payment'=>'bg-infobox-bank_account', 'poll'=>'bg-infobox-adherent', 'project'=>'bg-infobox-project', 'projecttask'=>'bg-infobox-project', 'propal'=>'bg-infobox-propal', - 'resource'=>'bg-infobox-action', - 'supplier_invoice'=>'bg-infobox-order_supplier', 'supplier_invoicea'=>'bg-infobox-order_supplier', 'supplier_invoiced'=>'bg-infobox-order_supplier', - 'supplier_order'=>'bg-infobox-order_supplier', 'supplier_proposal'=>'bg-infobox-supplier_proposal', - 'ticket'=>'bg-infobox-contrat', 'title_accountancy'=>'bg-infobox-bank_account', 'title_hrm'=>'bg-infobox-holiday', 'trip'=>'bg-infobox-expensereport', 'title_agenda'=>'bg-infobox-action', - //'title_setup'=>'bg-infobox-action', 'tools'=>'bg-infobox-action', + 'holiday'=>'infobox-holiday', 'invoice'=>'infobox-commande', + 'payment'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'project'=>'infobox-project', 'projecttask'=>'infobox-project', 'propal'=>'infobox-propal', + 'resource'=>'infobox-action', + 'supplier_invoice'=>'infobox-order_supplier', 'supplier_invoicea'=>'infobox-order_supplier', 'supplier_invoiced'=>'infobox-order_supplier', + 'supplier_order'=>'infobox-order_supplier', 'supplier_proposal'=>'infobox-supplier_proposal', + 'ticket'=>'infobox-contrat', 'title_accountancy'=>'infobox-bank_account', 'title_hrm'=>'infobox-holiday', 'trip'=>'infobox-expensereport', 'title_agenda'=>'infobox-action', + //'title_setup'=>'infobox-action', 'tools'=>'infobox-action', 'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode' ); if (!empty($arrayconvpictotomorcess[$pictowithouttext])) { diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index c7f5a7b7330..ce346c0d26e 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -279,7 +279,7 @@ if (!function_exists('dol_loginfunction')) // Set jquery theme $dol_loginmesg = (!empty($_SESSION["dol_loginmesg"]) ? $_SESSION["dol_loginmesg"] : ''); - $favicon = DOL_URL_ROOT.'/theme/dolibarr_logo_256x256.png'; + $favicon = DOL_URL_ROOT.'/theme/dolibarr_256x256_color.png'; if (!empty($mysoc->logo_squarred_mini)) $favicon = DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini); if (!empty($conf->global->MAIN_FAVICON_URL)) $favicon = $conf->global->MAIN_FAVICON_URL; diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 1864ca27bea..f3a4f738927 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -559,7 +559,7 @@ function getStructuredData($type, $data = array()) if ($type == 'software') { - $ret = ''."\n"; + $ret = ''."\n"; $ret .= ''."\n"; } elseif ($type == 'blogpost') @@ -684,7 +685,7 @@ function getStructuredData($type, $data = array()) } elseif ($type == 'product') { - $ret = ''."\n"; + $ret = ''."\n"; $ret .= '
'; diff --git a/htdocs/commande/info.php b/htdocs/commande/info.php index 6de602c22d4..9b45bf66312 100644 --- a/htdocs/commande/info.php +++ b/htdocs/commande/info.php @@ -20,7 +20,7 @@ /** * \file htdocs/commande/info.php * \ingroup commande - * \brief Page des informations d'une commande + * \brief Sale Order info page */ require '../main.inc.php'; diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 93065219248..c64797b801c 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -89,6 +89,8 @@ if ($mode == 'sconly') $param = '&mode=sconly'; if ($sortfield) $param .= '&sortfield='.$sortfield; if ($sortorder) $param .= '&sortorder='.$sortorder; +$totalnboflines = 0; +$num = 0; print '
'; if ($optioncss != '') print ''; @@ -99,14 +101,15 @@ print ''; print ''; print ''; +$nav = ''; if ($mode != 'sconly') { - $center = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 1); + $nav = ($year ? ''.img_previous($langs->trans("Previous"), 'class="valignbottom"')." ".$langs->trans("Year").' '.$year.' '.img_next($langs->trans("Next"), 'class="valignbottom"')."" : ""); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 1); } else { - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $totalnboflines, 'object_payment', 0, '', '', $limit, 0); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'object_payment', 0, $nav, '', $limit, 0); } if ($year) $param .= '&year='.$year; diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index f4a433c013d..dcd95445ddd 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -88,7 +88,9 @@ class box_produits_alerte_stock extends ModeleBoxes if (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire) { - $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity,"; + $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,"; $sql .= " SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") as total_stock"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; @@ -103,8 +105,10 @@ class box_produits_alerte_stock extends ModeleBoxes $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; } - $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity"; - $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; + $sql .= " GROUP BY p.rowid, p.ref, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.barcode, p.seuil_stock_alerte, p.entity,"; + $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,"; + $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export"; + $sql .= " HAVING SUM(".$this->db->ifsql("s.reel IS NULL", "0", "s.reel").") < p.seuil_stock_alerte"; $sql .= $this->db->order('p.seuil_stock_alerte', 'DESC'); $sql .= $this->db->plimit($max, 0); @@ -142,6 +146,15 @@ class box_produits_alerte_stock extends ModeleBoxes $productstatic->type = $objp->fk_product_type; $productstatic->label = $objp->label; $productstatic->entity = $objp->entity; + $productstatic->barcode = $objp->barcode; + $productstatic->status = $objp->tosell; + $productstatic->status_buy = $objp->tobuy; + $productstatic->accountancy_code_sell = $objp->accountancy_code_sell; + $productstatic->accountancy_code_sell_intra = $objp->accountancy_code_sell_intra; + $productstatic->accountancy_code_sell_export = $objp->accountancy_code_sell_export; + $productstatic->accountancy_code_buy = $objp->accountancy_code_buy; + $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra; + $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export; $this->info_box_contents[$line][] = array( 'td' => '', diff --git a/htdocs/core/boxes/box_shipments.php b/htdocs/core/boxes/box_shipments.php index 278ad974cf5..8908f52640c 100644 --- a/htdocs/core/boxes/box_shipments.php +++ b/htdocs/core/boxes/box_shipments.php @@ -133,7 +133,7 @@ class box_shipments extends ModeleBoxes $societestatic->logo = $objp->logo; $this->info_box_contents[$line][] = array( - 'td' => '', + 'td' => 'class="nowraponall"', 'text' => $shipmentstatic->getNomUrl(1), 'asis' => 1, ); @@ -145,7 +145,7 @@ class box_shipments extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => '', + 'td' => 'class="nowraponall"', 'text' => $orderstatic->getNomUrl(1), 'asis' => 1, ); diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index df80aab7a1f..72d45f2467c 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -218,8 +218,8 @@ abstract class CommonDocGenerator 'company_idprof6'=>$object->idprof6, 'company_note_public'=>$object->note_public, 'company_note_private'=>$object->note_private, - 'company_default_bank_iban'=>$object->bank_account->iban, - 'company_default_bank_bic'=>$object->bank_account->bic + 'company_default_bank_iban'=>(is_object($object->bank_account) ? $object->bank_account->iban : ''), + 'company_default_bank_bic'=>(is_object($object->bank_account) ? $object->bank_account->bic : '') ); // Retrieve extrafields diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f3f1b9eaee3..4fcac1979b7 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6046,6 +6046,7 @@ abstract class CommonObject $computed = $this->fields[$key]['computed']; $unique = $this->fields[$key]['unique']; $required = $this->fields[$key]['required']; + $autofocusoncreate = $this->fields[$key]['autofocusoncreate']; $langfile = $this->fields[$key]['langfile']; $list = $this->fields[$key]['list']; @@ -6122,19 +6123,19 @@ abstract class CommonObject { $tmp = explode(',', $size); $newsize = $tmp[0]; - $out = ''; + $out = ''; } elseif (in_array($type, array('real'))) { - $out = ''; + $out = ''; } elseif (preg_match('/varchar/', $type)) { - $out = ''; + $out = ''; } elseif (in_array($type, array('mail', 'phone', 'url'))) { - $out = ''; + $out = ''; } elseif ($type == 'text') { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 10d6fedf0e0..ad87949d4e9 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -1,9 +1,7 @@ * Copyright (C) 2003 Xavier Dutoit - * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2004-2020 Laurent Destailleur * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2006 Jean Heimburger * diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index da41a02491b..a8654f6bfc5 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -175,7 +175,7 @@ class FormTicket print '
'.img_object($langs->trans("ShowProject"), ($obj->public ? 'projectpub' : 'project'))." ".$obj->ref.''; + print $projecttmp->getNomUrl(1); + print ''.$obj->title.'