Merge branch 'develop' of github.com:atm-maxime/dolibarr into new_modimport_update_option
@ -257,7 +257,7 @@ script:
|
|||||||
# Ensure we catch errors
|
# Ensure we catch errors
|
||||||
set -e
|
set -e
|
||||||
# Exclusions are defined in the ruleset.xml file
|
# Exclusions are defined in the ruleset.xml file
|
||||||
phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/codesniffer/ruleset.xml --encoding=utf-8 .
|
phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 .
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
|||||||
123
ChangeLog
@ -24,69 +24,96 @@ Dolibarr better:
|
|||||||
- Function delete of class Facture (invoice) need the object $user as first parameter. Also you must
|
- Function delete of class Facture (invoice) need the object $user as first parameter. Also you must
|
||||||
check you make a fetch on object before calling the delete.
|
check you make a fetch on object before calling the delete.
|
||||||
- The old driver of "mysql" has been removed. Dolibarr use the new one (mysqli) by default.
|
- The old driver of "mysql" has been removed. Dolibarr use the new one (mysqli) by default.
|
||||||
|
- Remove not used function calculate_byte(). Use dol_print_size() instead.
|
||||||
|
- Function pdf_getTotalQty is now deprecated. Not used by Dolibarr core.
|
||||||
|
- Method expensereport->delete(id, user) has been replaced with ->delete(user)
|
||||||
|
Method warehouse->delete(id) has been replace with ->delete(user)
|
||||||
|
This is to follow good practice to make a fetch on object before deleting it.
|
||||||
|
- The form to add a product to a draft proposal/order/invoice from the product card is hidden by default.
|
||||||
|
It was not commonly used and usage generates some problems (cost price for margin calculation not entered, vat setting).
|
||||||
|
Set constant PRODUCT_ADD_FORM_ADD_TO to retrieve it.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 4.0.1 compared to 4.0.0 *****
|
||||||
|
FIX #2853
|
||||||
|
FIX #2991
|
||||||
|
FIX #3128
|
||||||
|
FIX: #5699
|
||||||
|
FIX #5734
|
||||||
|
FIX : #5776
|
||||||
|
FIX alignement of intervention status
|
||||||
|
FIX Clean of search fields
|
||||||
|
FIX Creation of donation should go back on card after creation
|
||||||
|
FIX Date visible on project overview
|
||||||
|
FIX Execute a dedicated job from its id may results of launching other jobs too.
|
||||||
|
FIX: Failed to export contact categories with contact extra fields
|
||||||
|
FIX inversion customer/supplier price
|
||||||
|
FIX link "back to list" was not visible.
|
||||||
|
FIX Lost filter on opportunities
|
||||||
|
FIX Mandatory field payment term was not css highlighted.
|
||||||
|
FIX Menu users not visible on dolidroid.
|
||||||
|
FIX SEC for HTB23302
|
||||||
|
FIX The email test sender in email setup was broken
|
||||||
|
FIX Translation of "Name" is not a good choice for floow-up.
|
||||||
|
FIX Update of maxnbrun on job list failed.
|
||||||
|
FIX Value of payment term and project are not set on correct default value when invoice generated from template.
|
||||||
|
FIX: vat dictionary should allow enter and edit multiple values for localtaxes, separated by: (ex -19:-15)
|
||||||
|
|
||||||
***** ChangeLog for 4.0.0 compared to 3.9.* *****
|
***** ChangeLog for 4.0.0 compared to 3.9.* *****
|
||||||
For users:
|
For users:
|
||||||
NEW: Add reccuring invoice feature and automatic generation of invoices.
|
NEW: Add recurring invoice feature and automatic generation of invoices.
|
||||||
NEW: Add module "Loan" as stable.
|
NEW: Add module "Loan" as stable.
|
||||||
NEW: Add module "Supplier commercial proposal" (price request) is set to stable status.
|
NEW: Add module "Supplier commercial proposal" (price request) with stable status.
|
||||||
NEW: Experimental module Accountancy Expert
|
NEW: Can select dynamicaly number of lines to show on page on product, shipment, contact, orders, thirdparties.
|
||||||
NEW: Experimental module Multicurency
|
NEW: Can select fields to show on list also for list of customer orders, supplier orders, shipments, proposals and invoices.
|
||||||
NEW: Show into badge on tab head the number of dedicated contacts for all objects.
|
NEW: Show into badge on tab head, the number of dedicated contacts for all objects.
|
||||||
NEW: Add a checkbox to select/unselect all lines on page that support mass actions (like invoice list page)
|
NEW: Add a checkbox to select/unselect all lines on page that support mass actions (like invoice list page)
|
||||||
NEW: Add a new method for margin calculation. Added margin on "cost price" to margin on WAP price and margin on "best supplier price".
|
NEW: Add a new method for margin calculation. Added margin on "cost price" in addition to margin on WAP price and margin on "best supplier price".
|
||||||
NEW: Add an explanation message on shipment page to explain you can't make shipment if order is not validated
|
NEW: Add an explanation message on shipment page to explain you can't make shipment if order is not validated
|
||||||
NEW: Add date_rum into table of thirdparty bank account.
|
NEW: Add date_rum into table of thirdparty bank account.
|
||||||
NEW: The probability of lead/opportunity can be defined per lead.
|
NEW: The probability of lead/opportunity can be defined per lead.
|
||||||
NEW: Added Malta VAT into migration script
|
NEW: Added Malta VAT into migration script
|
||||||
NEW: #4972 Translated Charges sociales (type 0) and Charges sociales (type 1) in reports page
|
|
||||||
NEW: Add Expense report into accountancy report
|
NEW: Add Expense report into accountancy report
|
||||||
NEW: Add Expense report to approve into workboard
|
NEW: Add Expense report to approve into workboard
|
||||||
NEW: Selection of boxes is move on top of home page
|
NEW: Selection of boxes is moved on top of home page
|
||||||
NEW: Add filter on a keyword, status and nature into list of modules
|
NEW: Add filter on a keyword, status and nature into list of modules.
|
||||||
NEW: Add hidden option BANK_DISABLE_CHECK_DEPOSIT to disable check deposit feature.
|
NEW: Add hidden option BANK_DISABLE_CHECK_DEPOSIT to disable check deposit feature.
|
||||||
NEW: Add option MAIN_PUBLIC_NOTE_IN_ADDRESS
|
NEW: Add hidden option MAIN_PUBLIC_NOTE_IN_ADDRESS
|
||||||
NEW: add html id/class to locate value in the DOM html
|
|
||||||
NEW: Add index on invoice status
|
NEW: Add index on invoice status
|
||||||
NEW: Add constant MAIN_LOGTOHTML to 0 into other setup by default to save time when we need to make debug on hosted instance.
|
NEW: Add constant MAIN_LOGTOHTML to 0 into setup by default to save time when we need to make debug on hosted instance.
|
||||||
NEW: Add list of billed
|
NEW: Add list of billed
|
||||||
NEW: Add minimum stock and desired stock into import/export profiles.
|
NEW: Add minimum stock and desired stock into import/export profiles.
|
||||||
NEW: Add state into thirdparty export fields
|
NEW: Add state into thirdparty export fields.
|
||||||
NEW: Add more trackable events (create, submit and receive supplier order).
|
NEW: Add more trackable events (create, submit and receive supplier order).
|
||||||
NEW: Add option MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN
|
NEW: Add hidden option MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN
|
||||||
NEW: Add picto on module list to show warning and if module is an external module.
|
NEW: Add picto on module list to show warning and if module is an external module.
|
||||||
NEW: add product type filter on turnover report
|
NEW: Add product type filter on turnover report
|
||||||
NEW: Add state into list of fields available for personalized fields of thirdparties
|
NEW: Add state into list of fields available for personalized fields of thirdparties
|
||||||
NEW: Add statistics for interventions module
|
NEW: Add statistics for interventions module
|
||||||
NEW: Add statistics on number of projets on home page
|
NEW: Add statistics on number of projets on home page
|
||||||
NEW: Add stats and late records into dashboard for supplier proposals.
|
NEW: Add statistics and late records into dashboard for supplier proposals.
|
||||||
NEW: Add the admin info on combo of type of contact
|
NEW: Add the admin info on combo of type of contact
|
||||||
NEW: Add the event BILL_PAYED to list of supported events for module notification.
|
NEW: Add the event BILL_PAYED to the list of supported events for module notification.
|
||||||
NEW: Add total weight and volume on PDF
|
NEW: Add total weight and volume on PDF.
|
||||||
NEW: Add hidden option to hide column qty ordered on shipments.
|
NEW: Add hidden option to hide column qty ordered on shipments.
|
||||||
NEW: Add view of virtual stock into product list (when appropriate)
|
NEW: Add view of virtual stock into product list (when appropriate).
|
||||||
NEW: Add warning on tasks when they are late (add also the warning tolerance parameter)
|
NEW: Add warning on tasks when they are late (add also the warning tolerance parameter).
|
||||||
NEW: Add weight/volume for one product into shipment export
|
NEW: Add weight/volume for one product into shipment export.
|
||||||
NEW: Add width and height on product card
|
NEW: Add width and height on product card
|
||||||
NEW: allow a document to be linked to project from another customer on config
|
NEW: allow a document to be linked to project of another customer by config setup.
|
||||||
NEW: allow project to be shared across entities (for multicompany module)
|
NEW: allow project to be shared across entities (for multicompany module).
|
||||||
NEW: All variant of ckeditor config can be tested into the setup page of module.
|
NEW: All variant of ckeditor config can be tested into the setup page of module.
|
||||||
NEW: Can change dynamically number of records visible into lists.
|
NEW: Can change dynamically number of records visible into lists.
|
||||||
NEW: Can change type of extrafields for some combinations.
|
NEW: Can change type of extrafields (for some combinations only).
|
||||||
NEW: Can define number of first and last line into import wizard.
|
NEW: Can define number of first and last line to import into import wizard.
|
||||||
NEW: Can edit next execution date of a cron job.
|
NEW: Can edit next execution date of a cron job.
|
||||||
NEW: Can edit value date of a vat payment after recording it.
|
NEW: Can edit value date of a vat payment after recording it.
|
||||||
NEW: Can filter modules on publisher
|
NEW: Can filter modules on publisher.
|
||||||
NEW: Can filter on employee status when building emailing from users
|
NEW: Can filter on employee status when building emailing from users.
|
||||||
NEW: Can reopen an closed shipment
|
NEW: Can reopen an closed shipment.
|
||||||
NEW: Can search on shipments into the quick search box
|
NEW: Can search on shipments into the quick search box.
|
||||||
NEW: Can select dynamicaly number of lines to show on page on product, shipment, contact, orders, thirdparties
|
NEW: Can select language from a combo list on page to overwrite a translation.
|
||||||
NEW: Can select fields to show on supplier orders list.
|
|
||||||
NEW: Can select fields to show on list also for list of customer orders, shipments and invoices.
|
|
||||||
NEW: Can select fields to show on proposal lists.
|
|
||||||
NEW: Can select language from combo list on page to overwrite a translation
|
|
||||||
NEW: Can select number of lines on page list for projects and tasks.
|
NEW: Can select number of lines on page list for projects and tasks.
|
||||||
NEW: Can use ^ and $ (to say start with or end with like regex syntax) into search fields when search field is text. Bonus: ^$ can filter all lines with field not defined.
|
NEW: Can use ^ and $ (to say start with or end with like regex syntax) into search fields when search field is text. Bonus: ^$ can filter all lines with field not defined.
|
||||||
NEW: Clean and enhance code for cron engine
|
NEW: Clean and enhance code for cron engine
|
||||||
@ -108,32 +135,35 @@ NEW: Into GED module, filename is truncated only if there is not enough space in
|
|||||||
NEW: Introduce a predefined job to run database backup
|
NEW: Introduce a predefined job to run database backup
|
||||||
NEW: Introduce option MAIN_WEIGHT_DEFAULT_UNIT and MAIN_VOLUME_DEFAULT_UNIT to force output unit for weight and volume.
|
NEW: Introduce option MAIN_WEIGHT_DEFAULT_UNIT and MAIN_VOLUME_DEFAULT_UNIT to force output unit for weight and volume.
|
||||||
NEW: Introduce position of records into dictionnary of type of contacts
|
NEW: Introduce position of records into dictionnary of type of contacts
|
||||||
NEW: Link on user in leave context reach to leave tab.
|
NEW: Link on a user in leave page reach to leave tab of user.
|
||||||
NEW: List of user in agenda view per user show photo thumb
|
NEW: List of user in agenda view per user show photo thumb.
|
||||||
NEW: Margins module - Check/update buying price on invoice lines
|
NEW: Margins module - Check/update buying price on invoice lines
|
||||||
NEW: Merge all admin tools (system and module admin tools) into same entry "Admin tools", so now things are clear: All features restricted to an admin user is inside "setup" (for setup) or "admin tools" (for action tools) instead of 3 different entries.
|
NEW: Merge all admin tools (system and module admin tools) into same entry "Admin tools", so now things are clear: All features restricted to an admin user is inside "setup" (for setup) or "admin tools" (for action tools) instead of 3 different entries.
|
||||||
NEW: Merge all boxes "related objects" into one. This save a lot of room on most card and avoid often horizontal scoll.
|
NEW: Merge all boxes "related objects" into one. This save a lot of room on most card and avoid often horizontal scoll.
|
||||||
NEW: Moved code that deals with bank categories to BankCateg. Created BankCateg::fetchAll function
|
NEW: Moved code that deals with bank categories to BankCateg. Created BankCateg::fetchAll function
|
||||||
NEW: Move Expense report menu from module to menu files
|
NEW: Move HRM dictionary from module to core dictionaries.
|
||||||
NEW: Move HRM dictionary from module to core dictionaries
|
|
||||||
NEW: Mutualize code to manage email substitution variables. Show available variables into page to edit email templates.
|
NEW: Mutualize code to manage email substitution variables. Show available variables into page to edit email templates.
|
||||||
NEW: Mutualize code: Use one call of function "addThumbs", when possible, to generate thumbs files instead of several call of "vignette" function.
|
NEW: Mutualize code: Use one call of function "addThumbs", when possible, to generate thumbs files instead of several call of "vignette" function.
|
||||||
NEW: On translation admin page, admin can overwrite a translation value.
|
NEW: On translation admin page, admin can overwrite a translation value.
|
||||||
NEW: Option MAIN_LIST_FILTER_ON_DAY is supported on proposal list
|
NEW: Option MAIN_LIST_FILTER_ON_DAY is supported on proposal list.
|
||||||
NEW: Add reputation field for price supplier
|
NEW: Add reputation field for price supplier.
|
||||||
NEW: Rest API token is no more reset at each call. We can reset it with param reset=1 on login call.
|
|
||||||
NEW: Selection of fields is available on member list.
|
NEW: Selection of fields is available on member list.
|
||||||
NEW: Show a badge with number of withdraw requests done on the withdraw tab of invoice.
|
NEW: Show a badge with number of withdraw requests done on the withdraw tab of invoice.
|
||||||
NEW: Add option to show detail per warehouse into reassort
|
NEW: Add option to show detail per warehouse into reassort.
|
||||||
NEW: Show total number of modules into the module list
|
NEW: Show total number of modules into the module list.
|
||||||
NEW: Survey system has now a status like other objects. You can close or reopen a survey.
|
NEW: Survey system has now a status like other objects. You can close or reopen a survey.
|
||||||
NEW: The note on time spent can be entered when using the view per day.
|
NEW: The note on time spent can be entered when using the "view per day".
|
||||||
NEW: Use ellipsis truncation on too large left menu text
|
NEW: Use ellipsis truncation on too large left menu text.
|
||||||
NEW: When a new field to show into lists is selected, the form is automatically submited and field added.
|
NEW: When a new field to show into lists is selected, the form is automatically submited and field added.
|
||||||
NEW: When creating a template invoice from a draft invoice, if there is link to contract on draft invoice, link is kept on template invoice.
|
NEW: When creating a template invoice from a draft invoice, if there is link to contract on draft invoice, link is kept on template invoice.
|
||||||
NEW: When emailing is not sent completely, show progression.
|
NEW: When emailing is not sent completely, show progression.
|
||||||
|
NEW: Experimental module Accountancy Expert.
|
||||||
|
NEW: Experimental module Multicurency
|
||||||
|
|
||||||
For developers:
|
For developers:
|
||||||
|
NEW: Add entity field in llx_societe_remise_except and llx_societe_remise.
|
||||||
|
NEW: Rest API token is no more reset at each call. We can reset it with param reset=1 on login call.
|
||||||
|
NEW: Add html id/class to locate value in the DOM html
|
||||||
NEW: Add a css class style called 'reposition', so when clicking on a link with this class will move scrollbarr to be placed at same page location.
|
NEW: Add a css class style called 'reposition', so when clicking on a link with this class will move scrollbarr to be placed at same page location.
|
||||||
NEW: TimeZone can be supplied to mktime
|
NEW: TimeZone can be supplied to mktime
|
||||||
NEW: hook in shipment card
|
NEW: hook in shipment card
|
||||||
@ -153,8 +183,9 @@ NEW: Removed deprecated CommonObject::client property. Please use CommonObject::
|
|||||||
NEW: Removed unused FormOrder::selectSourcesCommande function
|
NEW: Removed unused FormOrder::selectSourcesCommande function
|
||||||
NEW: Renamed ActionComm::add function to ActionComm::create
|
NEW: Renamed ActionComm::add function to ActionComm::create
|
||||||
NEW: Rename Form::select_date to Form::selectDate and Form::form_date to Form::formDate
|
NEW: Rename Form::select_date to Form::selectDate and Form::form_date to Form::formDate
|
||||||
NEW: Rename path for generiN
|
NEW: Rename path for generic media files
|
||||||
NEW: More phpunit tests. Include some REST API into automatic tests.
|
NEW: More phpunit tests. Include some REST API into automatic tests.
|
||||||
|
NEW: Move Expense report menu from module to menu files.
|
||||||
|
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
|
|||||||
@ -25,7 +25,7 @@ OpenSuse, Mandriva ou Mageia).
|
|||||||
Vous pouvez les télécharger depuis la rubrique *download* du portail officiel:
|
Vous pouvez les télécharger depuis la rubrique *download* du portail officiel:
|
||||||
https://www.dolibarr.org/
|
https://www.dolibarr.org/
|
||||||
|
|
||||||
Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (Mysql),
|
Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (MariaDb/MySql/PostgreSql),
|
||||||
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
||||||
|
|
||||||
- Copier le répertoire "dolibarr" et son contenu dans la racine de votre serveur
|
- Copier le répertoire "dolibarr" et son contenu dans la racine de votre serveur
|
||||||
@ -117,8 +117,8 @@ Voir fichier ChangeLog.
|
|||||||
- Application simple à utiliser.
|
- Application simple à utiliser.
|
||||||
- Plusieurs thèmes visuels.
|
- Plusieurs thèmes visuels.
|
||||||
- Code simple et facilement personnalisable.
|
- Code simple et facilement personnalisable.
|
||||||
- Requiert PHP et Mysql ou Postgresql (Voir versions exactes sur http://wiki.dolibarr.org/index.php/Prérequis).
|
- Requiert PHP et MariaDb, Mysql ou Postgresql (Voir versions exactes sur http://wiki.dolibarr.org/index.php/Prérequis).
|
||||||
- Compatible avec toutes les offres Cloud du marché respectant les prérequis MySQL et PHP ou Postgresql.
|
- Compatible avec toutes les offres Cloud du marché respectant les prérequis de base de données et PHP.
|
||||||
- Export PDF de tous les éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
|
- Export PDF de tous les éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,7 @@ If you have low technical skills and you're looking to install Dolibarr ERP/CRM
|
|||||||
|
|
||||||
### Advanced setup
|
### Advanced setup
|
||||||
|
|
||||||
You can use a Web server and a supported database (MySQL recommended) to install the standard version.
|
You can use a Web server and a supported database (MariaDb, MySql or Postgresql) to install the standard version.
|
||||||
|
|
||||||
- Uncompress the downloaded archive
|
- Uncompress the downloaded archive
|
||||||
- Copy directory "dolibarr" and all its files inside your web server root, or copy directory anywhere and set up your web server to use "dolibarr/htdocs" as root for a new web server virtual host (second choice need to be server administrator)
|
- Copy directory "dolibarr" and all its files inside your web server root, or copy directory anywhere and set up your web server to use "dolibarr/htdocs" as root for a new web server virtual host (second choice need to be server administrator)
|
||||||
@ -119,7 +119,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
- Can manage several currencies by adding external module multi-currency.
|
- Can manage several currencies by adding external module multi-currency.
|
||||||
- Very user friendly and easy to use
|
- Very user friendly and easy to use
|
||||||
- Highly customizable: enable only the modules you need, add user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one)
|
- Highly customizable: enable only the modules you need, add user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one)
|
||||||
- Works with PHP 5.3+ and MySQL 4.1+ or PostgreSQL 8.1. (See requirements on the [Wiki](http://wiki.dolibarr.org/index.php/Prerequisite))
|
- Works with PHP 5.3+ and MariaDB 5.0.3+, MySQL 5.0.3+ or PostgreSQL 8.1.4+ (See requirements on the [Wiki](http://wiki.dolibarr.org/index.php/Prerequisite))
|
||||||
- Compatible with all Cloud solutions that match MySQL, PHP or PostgreSQL prerequisites.
|
- Compatible with all Cloud solutions that match MySQL, PHP or PostgreSQL prerequisites.
|
||||||
- An easy to understand, maintain and code interfaces with your own information system (PHP with no heavy framework; trigger and hook architecture)
|
- An easy to understand, maintain and code interfaces with your own information system (PHP with no heavy framework; trigger and hook architecture)
|
||||||
- Support for country specific features:
|
- Support for country specific features:
|
||||||
|
|||||||
@ -1,78 +0,0 @@
|
|||||||
README (French)
|
|
||||||
################################
|
|
||||||
Building packages
|
|
||||||
################################
|
|
||||||
|
|
||||||
Les sous repertoires du repertoire "build" contiennent tous les fichiers
|
|
||||||
requis pour packager Dolibarr de maniere automatisee.
|
|
||||||
On trouve plusieurs outils:
|
|
||||||
|
|
||||||
- Pour construire un package Dolibarr complet, il suffit de
|
|
||||||
> Editer la version dans le fichier makepack-dolibarr.pl
|
|
||||||
> Lancer la commande perl makepack-dolibarr.pl
|
|
||||||
|
|
||||||
- Pour construire un package d'une traduction, il suffit de lancer le script
|
|
||||||
> perl makepack-dolibarrlang.pl
|
|
||||||
|
|
||||||
- Pour construire un package d'un theme, il suffit de lancer le script
|
|
||||||
> perl makepack-dolibarrtheme.pl
|
|
||||||
|
|
||||||
- Pour construire un package d'un module, il suffit de lancer le script
|
|
||||||
> perl makepack-dolibarrmodule.pl
|
|
||||||
|
|
||||||
- Pour construire un package DoliWamp autoexe:
|
|
||||||
> Installer InnoSetup (http://www.jrsoftware.org)
|
|
||||||
> Installer WampServer dans "C:\Program Files\Wamp" (http://www.wampserver.com)
|
|
||||||
> Installer les addon WampServer afin d'y mettre les versions:
|
|
||||||
Apache2.2.6, Mysql5.0.45, Php5.2.5
|
|
||||||
> Modifier dans le fichier build/exe/doliwamp.iss la variable SourceDir
|
|
||||||
afin d'y mettre le repository Dolibarr.
|
|
||||||
> Modifier AppVerName et OutputBaseFilename.
|
|
||||||
> Lancer innosetup, ouvrir le fichier build/exe/doliwamp.iss et cliquer sur
|
|
||||||
le bouton "Compile". Le fichier .exe sera fabrique dans le repertoire build.
|
|
||||||
|
|
||||||
- Pour generer la documentation developpeur, lancer le script
|
|
||||||
> perl dolybarr-doxygen-build.pl
|
|
||||||
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
Le repertoire build et tout ce qu'il contient n'est absolument pas requis
|
|
||||||
pour faire fonctionner Dolibarr. Ils ne servent qu'a la generation des
|
|
||||||
packages. Certains packages, une fois construit, n'incluent par le repertoire
|
|
||||||
"build".
|
|
||||||
|
|
||||||
On trouve dans le repertoire "build", les sous-repertoires utilises par
|
|
||||||
l'outil makepack-dolibarr.pl:
|
|
||||||
|
|
||||||
* deb:
|
|
||||||
Fichier de config pour construire un package Debian.
|
|
||||||
|
|
||||||
* rpm:
|
|
||||||
Fichier de config pour construire un package Redhat ou Mandrake.
|
|
||||||
|
|
||||||
* tgz:
|
|
||||||
Fichier de config pour construire un package tgz.
|
|
||||||
|
|
||||||
* exe:
|
|
||||||
Fichier de config pour construire un package exe pour Windows des sources
|
|
||||||
ou pour construire l'assistant d'installation complet DoliWamp.
|
|
||||||
|
|
||||||
* zip:
|
|
||||||
Fichier de config pour construire un package zip.
|
|
||||||
|
|
||||||
* live:
|
|
||||||
Fichier pour fabriquer un live CD de demo de Dolibarr.
|
|
||||||
|
|
||||||
* patch:
|
|
||||||
Fichier exemple de generation de fichier patch pour diffusion d'une
|
|
||||||
modification de Dolibarr.
|
|
||||||
|
|
||||||
* doap:
|
|
||||||
Fichier descriptif DOAP pour promouvoir/decrire la version de Dolibarr.
|
|
||||||
|
|
||||||
* pad:
|
|
||||||
Fichier descriptif PAD pour promouvoir/decrire la version de Dolibarr.
|
|
||||||
|
|
||||||
* dmg:
|
|
||||||
Fichier de config pour construire un package dmg DoliMamp pour Mac OS X
|
|
||||||
@ -26,11 +26,11 @@ Depends: libapache2-mod-php5 | libapache2-mod-php5filter | php5-cgi | php5-fpm |
|
|||||||
# Misc dependencies
|
# Misc dependencies
|
||||||
# fonts-dejavu-core | ttf-dejavu-core,
|
# fonts-dejavu-core | ttf-dejavu-core,
|
||||||
xdg-utils,
|
xdg-utils,
|
||||||
mysql-server,
|
virtual-mysql-client,
|
||||||
mysql-client,
|
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
${perl:Depends}
|
${perl:Depends}
|
||||||
Recommends: apache2 | lighttpd | httpd
|
Recommends: apache2 | lighttpd | httpd,
|
||||||
|
virtual-mysql-server
|
||||||
Suggests: www-browser, php5-geoip
|
Suggests: www-browser, php5-geoip
|
||||||
Description: Web based software to manage a company or foundation
|
Description: Web based software to manage a company or foundation
|
||||||
Dolibarr ERP & CRM is an easy to use open source/free software package for
|
Dolibarr ERP & CRM is an easy to use open source/free software package for
|
||||||
|
|||||||
@ -32,11 +32,33 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once($path."../htdocs/master.inc.php");
|
||||||
|
require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
|
||||||
|
|
||||||
// Main
|
|
||||||
|
/*
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (empty($argv[1]))
|
||||||
|
{
|
||||||
|
print "Usage: ".$script_file." release=x.y.z\n";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
parse_str($argv[1]);
|
parse_str($argv[1]);
|
||||||
|
|
||||||
|
if ($release != DOL_VERSION)
|
||||||
|
{
|
||||||
|
print 'Error: release is not version declared into filefunc.in.php.'."\n";
|
||||||
|
exit -1;
|
||||||
|
}
|
||||||
|
|
||||||
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
$outputfile=dirname(__FILE__).'/../htdocs/install/filelist.xml';
|
$outputdir=dirname(__FILE__).'/../htdocs/install';
|
||||||
|
print 'Delete current files '.$outputdir.'/filelist*.xml'."\n";
|
||||||
|
dol_delete_file($outputdir.'/filelist*.xml',0,1,1);
|
||||||
|
|
||||||
|
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
||||||
$fp = fopen($outputfile,'w');
|
$fp = fopen($outputfile,'w');
|
||||||
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
||||||
@ -317,8 +317,13 @@ print "\n";
|
|||||||
if ($CHOOSEDTARGET{'-CHKSUM'})
|
if ($CHOOSEDTARGET{'-CHKSUM'})
|
||||||
{
|
{
|
||||||
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filecheck_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filecheck_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
||||||
$ret=`php $SOURCE/build/generate_filecheck_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
$ret=`php $SOURCE/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
||||||
print $ret."\n";
|
print $ret."\n";
|
||||||
|
# Copy to final dir
|
||||||
|
$NEWDESTI=$DESTI;
|
||||||
|
print "Copy \"$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml\" to $NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml\n";
|
||||||
|
use File::Copy qw(copy);
|
||||||
|
copy "$SOURCE/htdocs/install/filelist-$MAJOR.$MINOR.$BUILD.xml", "$NEWDESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -603,7 +608,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'TGZ')
|
if ($target eq 'TGZ')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/standard');
|
mkdir($DESTI.'/standard');
|
||||||
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
||||||
@ -635,7 +640,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'XZ')
|
if ($target eq 'XZ')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/standard');
|
mkdir($DESTI.'/standard');
|
||||||
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
||||||
@ -672,7 +677,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'ZIP')
|
if ($target eq 'ZIP')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/standard');
|
mkdir($DESTI.'/standard');
|
||||||
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
|
||||||
@ -713,7 +718,7 @@ if ($nboftargetok) {
|
|||||||
if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; }
|
if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; }
|
||||||
if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; }
|
if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; }
|
||||||
if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; }
|
if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; }
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/'.$subdir);
|
mkdir($DESTI.'/'.$subdir);
|
||||||
if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; }
|
if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; }
|
||||||
@ -799,7 +804,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'DEB')
|
if ($target eq 'DEB')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/package_debian-ubuntu');
|
mkdir($DESTI.'/package_debian-ubuntu');
|
||||||
if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; }
|
if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; }
|
||||||
@ -1002,7 +1007,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'APS')
|
if ($target eq 'APS')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/package_aps');
|
mkdir($DESTI.'/package_aps');
|
||||||
if (-d $DESTI.'/package_aps') { $NEWDESTI=$DESTI.'/package_aps'; }
|
if (-d $DESTI.'/package_aps') { $NEWDESTI=$DESTI.'/package_aps'; }
|
||||||
@ -1088,7 +1093,7 @@ if ($nboftargetok) {
|
|||||||
if ($target eq 'EXEDOLIWAMP')
|
if ($target eq 'EXEDOLIWAMP')
|
||||||
{
|
{
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
if ($NEWPUBLISH =~ /stable/)
|
if ($NEWDESTI =~ /stable/)
|
||||||
{
|
{
|
||||||
mkdir($DESTI.'/package_windows');
|
mkdir($DESTI.'/package_windows');
|
||||||
if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; }
|
if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; }
|
||||||
@ -1132,6 +1137,7 @@ if ($nboftargetok) {
|
|||||||
|
|
||||||
print "\nList of files to publish (BUILD=$BUILD)\n";
|
print "\nList of files to publish (BUILD=$BUILD)\n";
|
||||||
%filestoscansf=(
|
%filestoscansf=(
|
||||||
|
"$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"=>'signatures',
|
||||||
"$DESTI/package_rpm_generic/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)',
|
"$DESTI/package_rpm_generic/$FILENAMERPM"=>'Dolibarr installer for Fedora-Redhat-Mandriva-Opensuse (DoliRpm)',
|
||||||
"$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)',
|
"$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'Dolibarr installer for Debian-Ubuntu (DoliDeb)',
|
||||||
"$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'none',
|
"$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'none',
|
||||||
@ -1140,6 +1146,7 @@ if ($nboftargetok) {
|
|||||||
"$DESTI/standard/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM'
|
"$DESTI/standard/$FILENAMETGZ.zip"=>'Dolibarr ERP-CRM'
|
||||||
);
|
);
|
||||||
%filestoscanstableasso=(
|
%filestoscanstableasso=(
|
||||||
|
"$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"=>'signatures',
|
||||||
"$DESTI/package_rpm_generic/$FILENAMERPM"=>'package_rpm_generic',
|
"$DESTI/package_rpm_generic/$FILENAMERPM"=>'package_rpm_generic',
|
||||||
"$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'package_debian-ubuntu',
|
"$DESTI/package_debian-ubuntu/${FILENAMEDEB}_all.deb"=>'package_debian-ubuntu',
|
||||||
"$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'package_debian-ubuntu',
|
"$DESTI/package_debian-ubuntu/${FILENAMEDEBSHORT}.orig.tar.gz"=>'package_debian-ubuntu',
|
||||||
|
|||||||
@ -2,14 +2,22 @@
|
|||||||
"name": "dolibarr/dolibarr",
|
"name": "dolibarr/dolibarr",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business",
|
"description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business",
|
||||||
"keywords": ["erp","crm","invoice","sme","proposal","order","stock"],
|
"keywords": [
|
||||||
"homepage": "http://www.dolibarr.org",
|
"erp",
|
||||||
|
"crm",
|
||||||
|
"invoice",
|
||||||
|
"sme",
|
||||||
|
"proposal",
|
||||||
|
"order",
|
||||||
|
"stock",
|
||||||
|
"agenda"
|
||||||
|
],
|
||||||
|
"homepage": "https://www.dolibarr.org",
|
||||||
"license": "GPL-3.0+",
|
"license": "GPL-3.0+",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/Dolibarr/dolibarr/issues",
|
"issues": "https://github.com/Dolibarr/dolibarr/issues",
|
||||||
"forum": "http://www.dolibarr.org/forum",
|
"forum": "https://www.dolibarr.org/forum",
|
||||||
"wiki": "http://wiki.dolibarr.org",
|
"wiki": "https://wiki.dolibarr.org",
|
||||||
"irc": "irc://chat.freenode.net/dolibarr",
|
|
||||||
"source": "https://github.com/Dolibarr/dolibarr"
|
"source": "https://github.com/Dolibarr/dolibarr"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
@ -47,7 +55,6 @@
|
|||||||
"ext-soap": "Native SOAP",
|
"ext-soap": "Native SOAP",
|
||||||
"ext-zip": "ODT and Excel support",
|
"ext-zip": "ODT and Excel support",
|
||||||
"ext-xml": "Excel support",
|
"ext-xml": "Excel support",
|
||||||
"firephp/firephp-core": "Logging to Firebug console support",
|
"firephp/firephp-core": "Logging to Firebug console support"
|
||||||
"raven/raven": "Sentry logging server support"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ provided with a standard release.
|
|||||||
|
|
||||||
|
|
||||||
There is also some documentation on Dolibarr Wiki:
|
There is also some documentation on Dolibarr Wiki:
|
||||||
http://wiki.dolibarr.org/
|
https://wiki.dolibarr.org/
|
||||||
and
|
and
|
||||||
http://www.dolibarr.org/html_doxygen/index.html
|
https://doxygen.dolibarr.org/
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
@ -2,24 +2,32 @@ README (English)
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
This directory contains PHP script samples that can be used to start a development on Dolibarr.
|
This directory contains PHP script samples that can be used to start a development on Dolibarr.
|
||||||
|
|
||||||
build_class_from_table.php:
|
|
||||||
|
*** build_class_from_table.php:
|
||||||
|
|
||||||
This is the script to use to generate PHP code of a PHP POJO class
|
This is the script to use to generate PHP code of a PHP POJO class
|
||||||
object, a PHP script that use this POJO. This script use the files
|
object, a PHP script that use this POJO. This script use the files
|
||||||
skeleton_*.php to build its generated code.
|
skeleton_*.php to build its generated code.
|
||||||
|
|
||||||
|
|
||||||
modMyModule.class.php:
|
*** modMyModule.class.php:
|
||||||
|
|
||||||
Is a sample of module descriptor that you can use if you want to build a new module/plugin for
|
Is a sample of module descriptor that you can use if you want to build a new module/plugin for
|
||||||
Dolibarr.
|
Dolibarr.
|
||||||
|
|
||||||
|
|
||||||
skeleton_script.php:
|
*** skeleton_script.php:
|
||||||
|
|
||||||
Is a sample you can use as an example if you need to build a script to run on command line
|
Is a sample you can use as an example if you need to build a script to run on command line
|
||||||
|
|
||||||
skeleton_page.php:
|
|
||||||
|
*** skeleton_page.php:
|
||||||
|
|
||||||
Is a sample you can use as an example if you need to build an HTML page to include in Dolibarr GUI.
|
Is a sample you can use as an example if you need to build an HTML page to include in Dolibarr GUI.
|
||||||
|
|
||||||
skeleton_class.class.php:
|
|
||||||
|
*** skeleton_class.class.php:
|
||||||
|
|
||||||
Is a sample you can use as an example if you need to build a class file to access a new table required by a Dolibarr development.
|
Is a sample you can use as an example if you need to build a class file to access a new table required by a Dolibarr development.
|
||||||
However it is better to run the build_class_from_table.php script that accepts a table name as a parameter and will uses the description table within database and the skeleton_class.class.php file to generate full code for your class file.
|
However it is better to run the build_class_from_table.php script that accepts a table name as a parameter and will uses the description table within database and the skeleton_class.class.php file to generate full code for your class file.
|
||||||
After running this script, the class to access your table (insert a record, update, delete and select) is directly finished and can be used by your module's code.
|
After running this script, the class to access your table (insert a record, update, delete and select) is directly finished and can be used by your module's code.
|
||||||
|
|||||||
@ -62,7 +62,7 @@ class modMyModule extends DolibarrModules
|
|||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->description = "Description of module MyModule";
|
$this->description = "Description of module MyModule";
|
||||||
$this->descriptionlong = "A very lon description. Can be a full HTML content";
|
$this->descriptionlong = "A very long description. Can be a full HTML content";
|
||||||
$this->editor_name = 'Editor name';
|
$this->editor_name = 'Editor name';
|
||||||
$this->editor_url = 'http://www.dolibarr.org';
|
$this->editor_url = 'http://www.dolibarr.org';
|
||||||
|
|
||||||
@ -105,9 +105,9 @@ class modMyModule extends DolibarrModules
|
|||||||
|
|
||||||
// Dependencies
|
// Dependencies
|
||||||
$this->hidden = false; // A condition to hide module
|
$this->hidden = false; // A condition to hide module
|
||||||
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
|
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
|
||||||
$this->requiredby = array(); // List of modules id to disable if this one is disabled
|
$this->requiredby = array(); // List of module ids to disable if this one is disabled
|
||||||
$this->conflictwith = array(); // List of modules id this module is in conflict with
|
$this->conflictwith = array(); // List of module class names as string this module is in conflict with
|
||||||
$this->phpmin = array(5,0); // Minimum version of PHP required by module
|
$this->phpmin = array(5,0); // Minimum version of PHP required by module
|
||||||
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
|
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
|
||||||
$this->langfiles = array("mylangfile@mymodule");
|
$this->langfiles = array("mylangfile@mymodule");
|
||||||
|
|||||||
@ -59,25 +59,27 @@ $myparam = GETPOST('myparam','alpha');
|
|||||||
$search_field1=GETPOST("search_field1");
|
$search_field1=GETPOST("search_field1");
|
||||||
$search_field2=GETPOST("search_field2");
|
$search_field2=GETPOST("search_field2");
|
||||||
|
|
||||||
|
if (empty($action) && empty($id) && empty($ref)) $action='view';
|
||||||
|
|
||||||
// Protection if external user
|
// Protection if external user
|
||||||
if ($user->societe_id > 0)
|
if ($user->societe_id > 0)
|
||||||
{
|
{
|
||||||
//accessforbidden();
|
//accessforbidden();
|
||||||
}
|
}
|
||||||
|
//$result = restrictedArea($user, 'mymodule', $id);
|
||||||
|
|
||||||
if (empty($action) && empty($id) && empty($ref)) $action='list';
|
|
||||||
|
|
||||||
// Load object if id or ref is provided as parameter
|
$object = new Skeleton_Class($db);
|
||||||
$object=new Skeleton_Class($db);
|
$extrafields = new ExtraFields($db);
|
||||||
if (($id > 0 || ! empty($ref)) && $action != 'add')
|
|
||||||
{
|
// fetch optionals attributes and labels
|
||||||
$result=$object->fetch($id,$ref);
|
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
if ($result < 0) dol_print_error($db);
|
|
||||||
}
|
// Load object
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
|
||||||
|
|
||||||
// Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array
|
// Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array
|
||||||
$hookmanager->initHooks(array('skeleton'));
|
$hookmanager->initHooks(array('skeleton'));
|
||||||
$extrafields = new ExtraFields($db);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -281,8 +283,13 @@ if (($id || $ref) && $action == 'edit')
|
|||||||
|
|
||||||
|
|
||||||
// Part to show record
|
// Part to show record
|
||||||
if ($id && (empty($action) || $action == 'view' || $action == 'delete'))
|
if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create')))
|
||||||
{
|
{
|
||||||
|
$res = $object->fetch_optionals($object->id, $extralabels);
|
||||||
|
|
||||||
|
$head = commande_prepare_head($object);
|
||||||
|
dol_fiche_head($head, 'order', $langs->trans("CustomerOrder"), 0, 'order');
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("MyModule"));
|
print load_fiche_titre($langs->trans("MyModule"));
|
||||||
|
|
||||||
dol_fiche_head();
|
dol_fiche_head();
|
||||||
@ -293,7 +300,7 @@ if ($id && (empty($action) || $action == 'view' || $action == 'delete'))
|
|||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="border centpercent">'."\n";
|
print '<table class="border centpercent">'."\n";
|
||||||
// print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input class="flat" type="text" size="36" name="label" value="'.$label.'"></td></tr>';
|
// print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td>'.$object->label.'</td></tr>';
|
||||||
// LIST_OF_TD_LABEL_FIELDS_VIEW
|
// LIST_OF_TD_LABEL_FIELDS_VIEW
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
|
|||||||
@ -181,6 +181,16 @@ class Skeleton_Class extends CommonObject
|
|||||||
$this->prop2 = $obj->field2;
|
$this->prop2 = $obj->field2;
|
||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Retrieve all extrafields for invoice
|
||||||
|
// fetch optionals attributes and labels
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
$extrafields=new ExtraFields($this->db);
|
||||||
|
$extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true);
|
||||||
|
$this->fetch_optionals($this->id,$extralabels);
|
||||||
|
|
||||||
|
// $this->fetch_lines();
|
||||||
|
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
|
|
||||||
if ($numrows) {
|
if ($numrows) {
|
||||||
@ -355,6 +365,8 @@ class Skeleton_Class extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If you need to delete child tables to, you can insert them here
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element;
|
$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element;
|
||||||
$sql .= ' WHERE rowid=' . $this->id;
|
$sql .= ' WHERE rowid=' . $this->id;
|
||||||
@ -427,8 +439,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a link to the user card (with optionaly the picto)
|
* Return a link to the object card (with optionaly the picto)
|
||||||
* Use this->id,this->lastname, this->firstname
|
|
||||||
*
|
*
|
||||||
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
|
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
|
||||||
* @param string $option On what the link point to
|
* @param string $option On what the link point to
|
||||||
@ -451,7 +462,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
$label.= '<div width="100%">';
|
$label.= '<div width="100%">';
|
||||||
$label.= '<b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
|
$label.= '<b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
|
||||||
|
|
||||||
$link = '<a href="'.DOL_URL_ROOT.'/mymodule/card.php?id='.$this->id.'"';
|
$link = '<a href="'.DOL_URL_ROOT.'/mymodule/'.$this->table_name.'_card.php?id='.$this->id.'"';
|
||||||
$link.= ($notooltip?'':' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip'.($morecss?' '.$morecss:'').'"');
|
$link.= ($notooltip?'':' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip'.($morecss?' '.$morecss:'').'"');
|
||||||
$link.= '>';
|
$link.= '>';
|
||||||
$linkend='</a>';
|
$linkend='</a>';
|
||||||
@ -477,13 +488,13 @@ class Skeleton_Class extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renvoi le libelle d'un status donne
|
* Return the status
|
||||||
*
|
*
|
||||||
* @param int $status Id status
|
* @param int $status Id status
|
||||||
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
* @param int $mode 0=long label, 1=short label, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
|
||||||
* @return string Label of status
|
* @return string Label of status
|
||||||
*/
|
*/
|
||||||
function LibStatut($status,$mode=0)
|
static function LibStatut($status,$mode=0)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
|||||||
@ -256,11 +256,11 @@ if ($resql)
|
|||||||
|
|
||||||
$arrayofselected=is_array($toselect)?$toselect:array();
|
$arrayofselected=is_array($toselect)?$toselect:array();
|
||||||
|
|
||||||
$params='';
|
$param='';
|
||||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
|
||||||
if ($search_field1 != '') $params.= '&search_field1='.urlencode($search_field1);
|
if ($search_field1 != '') $param.= '&search_field1='.urlencode($search_field1);
|
||||||
if ($search_field2 != '') $params.= '&search_field2='.urlencode($search_field2);
|
if ($search_field2 != '') $param.= '&search_field2='.urlencode($search_field2);
|
||||||
if ($optioncss != '') $param.='&optioncss='.$optioncss;
|
if ($optioncss != '') $param.='&optioncss='.$optioncss;
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
foreach ($search_array_options as $key => $val)
|
foreach ($search_array_options as $key => $val)
|
||||||
@ -286,7 +286,7 @@ if ($resql)
|
|||||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit);
|
||||||
|
|
||||||
if ($sall)
|
if ($sall)
|
||||||
{
|
{
|
||||||
@ -319,8 +319,8 @@ if ($resql)
|
|||||||
// Fields title
|
// Fields title
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
// LIST_OF_TD_TITLE_FIELDS
|
// LIST_OF_TD_TITLE_FIELDS
|
||||||
//if (! empty($arrayfields['t.field1']['checked'])) print_liste_field_titre($arrayfields['t.field1']['label'],$_SERVER['PHP_SELF'],'t.field1','',$params,'',$sortfield,$sortorder);
|
//if (! empty($arrayfields['t.field1']['checked'])) print_liste_field_titre($arrayfields['t.field1']['label'],$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder);
|
||||||
//if (! empty($arrayfields['t.field2']['checked'])) print_liste_field_titre($arrayfields['t.field2']['label'],$_SERVER['PHP_SELF'],'t.field2','',$params,'',$sortfield,$sortorder);
|
//if (! empty($arrayfields['t.field2']['checked'])) print_liste_field_titre($arrayfields['t.field2']['label'],$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
||||||
// Extra fields
|
// Extra fields
|
||||||
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
|
||||||
{
|
{
|
||||||
|
|||||||
BIN
doc/images/dolibarr_screenshot1_1280x800.jpg
Normal file
|
After Width: | Height: | Size: 234 KiB |
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/account.php
|
* \file htdocs/accountancy/admin/account.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief List accounting account
|
* \brief List accounting account
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/card.php
|
* \file htdocs/accountancy/admin/card.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief Card of accounting account
|
* \brief Card of accounting account
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -43,13 +43,13 @@ $rowid = GETPOST('rowid', 'int');
|
|||||||
$cancel = GETPOST('cancel');
|
$cancel = GETPOST('cancel');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (! $user->admin)
|
|
||||||
accessforbidden();
|
|
||||||
|
|
||||||
$object = new AccountingAccount($db);
|
$object = new AccountingAccount($db);
|
||||||
|
|
||||||
// Action
|
// Action
|
||||||
if ($action == 'add') {
|
if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
||||||
|
{
|
||||||
if (! $cancel) {
|
if (! $cancel) {
|
||||||
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
||||||
|
|
||||||
@ -69,10 +69,10 @@ if ($action == 'add') {
|
|||||||
$account_number = clean_account(GETPOST('account_number'));
|
$account_number = clean_account(GETPOST('account_number'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('account_category') <= 0) {
|
if (GETPOST('account_parent') <= 0) {
|
||||||
$account_parent = '';
|
$account_parent = 0;
|
||||||
} else {
|
} else {
|
||||||
$account_parent = GETPOST('account_category','int');
|
$account_parent = GETPOST('account_parent','int');
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
@ -97,8 +97,8 @@ if ($action == 'add') {
|
|||||||
}
|
}
|
||||||
header("Location: account.php");
|
header("Location: account.php");
|
||||||
exit;
|
exit;
|
||||||
} else if ($action == 'edit') {
|
} else if ($action == 'edit' && $user->rights->accounting->chartofaccount) {
|
||||||
if (! GETPOST('cancel', 'alpha')) {
|
if (! $cancel) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
||||||
@ -119,10 +119,10 @@ if ($action == 'add') {
|
|||||||
$account_number = clean_account(GETPOST('account_number'));
|
$account_number = clean_account(GETPOST('account_number'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('account_category') <= 0) {
|
if (GETPOST('account_parent') <= 0) {
|
||||||
$account_parent = '';
|
$account_parent = 0;
|
||||||
} else {
|
} else {
|
||||||
$account_parent = GETPOST('account_category','int');
|
$account_parent = GETPOST('account_parent','int');
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
@ -145,7 +145,7 @@ if ($action == 'add') {
|
|||||||
header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id);
|
header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
} else if ($action == 'delete') {
|
} else if ($action == 'delete' && $user->rights->accounting->chartofaccount) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
if (! empty($object->id)) {
|
if (! empty($object->id)) {
|
||||||
@ -165,7 +165,9 @@ if ($action == 'add') {
|
|||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
llxheader('', $langs->trans('AccountAccounting'));
|
$title = $langs->trans('AccountAccounting') ." - ". $langs->trans('Card');
|
||||||
|
$helpurl = '';
|
||||||
|
llxheader('', $title, $helpurl);
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$htmlacc = new FormVentilation($db);
|
$htmlacc = new FormVentilation($db);
|
||||||
@ -184,7 +186,7 @@ if ($action == 'create') {
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
print '<tr><td width="25%"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
|
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
|
||||||
print '<td><input name="account_number" size="30" value="' . $object->account_number . '"</td></tr>';
|
print '<td><input name="account_number" size="30" value="' . $object->account_number . '"</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
@ -247,7 +249,7 @@ if ($action == 'create') {
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
print '<tr><td width="25%"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
|
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
|
||||||
print '<td><input name="account_number" size="30" value="' . $object->account_number . '"</td></tr>';
|
print '<td><input name="account_number" size="30" value="' . $object->account_number . '"</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
@ -299,7 +301,7 @@ if ($action == 'create') {
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
|
print '<tr><td class="titlefield">' . $langs->trans("AccountNumber") . '</td>';
|
||||||
print '<td>' . $object->account_number . '</td>';
|
print '<td>' . $object->account_number . '</td>';
|
||||||
print '<td align="right" width="25%">' . $linkback . '</td></tr>';
|
print '<td align="right" width="25%">' . $linkback . '</td></tr>';
|
||||||
|
|
||||||
@ -327,14 +329,14 @@ if ($action == 'create') {
|
|||||||
print '<td colspan="2">' . $object->pcg_subtype . '</td></tr>';
|
print '<td colspan="2">' . $object->pcg_subtype . '</td></tr>';
|
||||||
|
|
||||||
// Active
|
// Active
|
||||||
print '<tr><td>' . $langs->trans("Activated") . '</td>';
|
print '<tr><td>' . $langs->trans("Status") . '</td>';
|
||||||
print '<td colspan="2">';
|
print '<td colspan="2">';
|
||||||
|
print $object->getLibStatut(4);
|
||||||
if (empty($object->active)) {
|
/*if (empty($object->active)) {
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
} else {
|
} else {
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
}
|
}*/
|
||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -348,13 +350,13 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
if ($user->admin) {
|
if (! empty($user->rights->accounting->chartofaccount)) {
|
||||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $id . '">' . $langs->trans('Modify') . '</a>';
|
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $id . '">' . $langs->trans('Modify') . '</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Modify') . '</a>';
|
print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Modify') . '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user->admin) {
|
if (! empty($user->rights->accounting->chartofaccount)) {
|
||||||
print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>';
|
print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Delete') . '</a>';
|
print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Delete') . '</a>';
|
||||||
|
|||||||
@ -81,6 +81,9 @@ if ($action == 'update') {
|
|||||||
if (! dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
if (! dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
|
if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
|
||||||
|
dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,12 +16,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/fiscalyear.php
|
* \file htdocs/accountancy/admin/fiscalyear.php
|
||||||
* \ingroup fiscal year
|
* \ingroup Advanced accountancy
|
||||||
* \brief Setup page to configure fiscal year
|
* \brief Setup page to configure fiscal year
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
|
||||||
|
|
||||||
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/fiscalyear.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/fiscalyear.class.php';
|
||||||
|
|
||||||
@ -45,9 +45,9 @@ $langs->load("compta");
|
|||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id > 0)
|
if ($user->societe_id > 0)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
if (! $user->rights->accounting->fiscalyear)
|
if (! $user->rights->mouvements->lire) // If we can read accounting records, we shoul be able to see fiscal year.
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
// List of status
|
// List of status
|
||||||
@ -65,6 +65,7 @@ $errors = array ();
|
|||||||
|
|
||||||
$object = new Fiscalyear($db);
|
$object = new Fiscalyear($db);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -80,8 +81,8 @@ $max = 100;
|
|||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
$title = $langs->trans('FiscalYears');
|
$title = $langs->trans('FiscalYears');
|
||||||
|
$helpurl = "";
|
||||||
llxHeader('', $title, LOG_ERR);
|
llxHeader('', $title, $helpurl);
|
||||||
|
|
||||||
$sql = "SELECT f.rowid, f.label, f.date_start, f.date_end, f.statut, f.entity";
|
$sql = "SELECT f.rowid, f.label, f.date_start, f.date_end, f.statut, f.entity";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_fiscalyear as f";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_fiscalyear as f";
|
||||||
@ -94,7 +95,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
|||||||
{
|
{
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= $db->plimit($limit+1, $offset);
|
$sql.= $db->plimit($limit+1, $offset);
|
||||||
|
|
||||||
@ -102,12 +103,12 @@ $result = $db->query($sql);
|
|||||||
if ($result) {
|
if ($result) {
|
||||||
$var = false;
|
$var = false;
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$title = $langs->trans('FiscalYears');
|
$title = $langs->trans('FiscalYears');
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_generic', 0, '', '', $limit, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_generic', 0, '', '', $limit, 1);
|
||||||
|
|
||||||
// Load attribute_label
|
// Load attribute_label
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -117,10 +118,10 @@ if ($result) {
|
|||||||
print '<td>' . $langs->trans("DateEnd") . '</td>';
|
print '<td>' . $langs->trans("DateEnd") . '</td>';
|
||||||
print '<td align="right">' . $langs->trans("Statut") . '</td>';
|
print '<td align="right">' . $langs->trans("Statut") . '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if ($num) {
|
if ($num) {
|
||||||
$fiscalyearstatic = new Fiscalyear($db);
|
$fiscalyearstatic = new Fiscalyear($db);
|
||||||
|
|
||||||
while ( $i < $num && $i < $max ) {
|
while ( $i < $num && $i < $max ) {
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$fiscalyearstatic->id = $obj->rowid;
|
$fiscalyearstatic->id = $obj->rowid;
|
||||||
@ -137,7 +138,6 @@ if ($result) {
|
|||||||
} else {
|
} else {
|
||||||
print '<tr ' . $bc[$var] . '><td colspan="5" class="opacitymedium">' . $langs->trans("None") . '</td></tr>';
|
print '<tr ' . $bc[$var] . '><td colspan="5" class="opacitymedium">' . $langs->trans("None") . '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
@ -147,7 +147,14 @@ dol_fiche_end();
|
|||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
print '<a class="butAction" href="fiscalyear_card.php?action=create">' . $langs->trans("NewFiscalYear") . '</a>';
|
if (! empty($user->rights->accounting->fiscalyear))
|
||||||
|
{
|
||||||
|
print '<a class="butAction" href="fiscalyear_card.php?action=create">' . $langs->trans("NewFiscalYear") . '</a>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<a class="butActionRefused" href="#">' . $langs->trans("NewFiscalYear") . '</a>';
|
||||||
|
}
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -16,8 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/fiscalyear_card.php
|
* \file htdocs/accountancy/admin/fiscalyear_card.php
|
||||||
* \brief Page to show a fiscal year
|
* \ingroup Advanced accountancy
|
||||||
|
* \brief Page to show a fiscal year
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
|
|
||||||
@ -28,7 +29,9 @@ $langs->load("admin");
|
|||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (! $user->admin)
|
if ($user->societe_id > 0)
|
||||||
|
accessforbidden();
|
||||||
|
if (empty($user->rights->accounting->fiscalyear))
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
@ -71,13 +74,13 @@ if ($action == 'confirm_delete' && $confirm == "yes") {
|
|||||||
else if ($action == 'add') {
|
else if ($action == 'add') {
|
||||||
if (! GETPOST('cancel', 'alpha')) {
|
if (! GETPOST('cancel', 'alpha')) {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$object->date_start = $date_start;
|
$object->date_start = $date_start;
|
||||||
$object->date_end = $date_end;
|
$object->date_end = $date_end;
|
||||||
$object->label = GETPOST('label', 'alpha');
|
$object->label = GETPOST('label', 'alpha');
|
||||||
$object->statut = GETPOST('statut', 'int');
|
$object->statut = GETPOST('statut', 'int');
|
||||||
$object->datec = dol_now();
|
$object->datec = dol_now();
|
||||||
|
|
||||||
if (empty($object->date_start) && empty($object->date_end)) {
|
if (empty($object->date_start) && empty($object->date_end)) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
@ -86,20 +89,20 @@ else if ($action == 'add') {
|
|||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors');
|
||||||
$error ++;
|
$error ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$id = $object->create($user);
|
$id = $object->create($user);
|
||||||
|
|
||||||
if ($id > 0) {
|
if ($id > 0) {
|
||||||
$db->commit();
|
$db->commit();
|
||||||
|
|
||||||
header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id);
|
header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id);
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
@ -116,12 +119,12 @@ else if ($action == 'add') {
|
|||||||
else if ($action == 'update') {
|
else if ($action == 'update') {
|
||||||
if (! GETPOST('cancel', 'alpha')) {
|
if (! GETPOST('cancel', 'alpha')) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
$object->date_start = empty($_POST["fiscalyear"]) ? '' : $date_start;
|
$object->date_start = empty($_POST["fiscalyear"]) ? '' : $date_start;
|
||||||
$object->date_end = empty($_POST["fiscalyearend"]) ? '' : $date_end;
|
$object->date_end = empty($_POST["fiscalyearend"]) ? '' : $date_end;
|
||||||
$object->label = GETPOST('label', 'alpha');
|
$object->label = GETPOST('label', 'alpha');
|
||||||
$object->statut = GETPOST('statut', 'int');
|
$object->statut = GETPOST('statut', 'int');
|
||||||
|
|
||||||
$result = $object->update($user);
|
$result = $object->update($user);
|
||||||
|
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
@ -136,108 +139,112 @@ else if ($action == 'update') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader();
|
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Card");
|
||||||
|
$helpurl = "";
|
||||||
|
llxHeader("",$title,$helpurl);
|
||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
if ($action == 'create')
|
if ($action == 'create')
|
||||||
{
|
{
|
||||||
print load_fiche_titre($langs->trans("NewFiscalYear"));
|
print load_fiche_titre($langs->trans("NewFiscalYear"));
|
||||||
|
|
||||||
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
|
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
print '<input type="hidden" name="action" value="add">';
|
print '<input type="hidden" name="action" value="add">';
|
||||||
|
|
||||||
dol_fiche_head();
|
dol_fiche_head();
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("Label") . '</td><td><input name="label" size="32" value="' . GETPOST("label") . '"></td></tr>';
|
print '<tr><td class="titlefieldcreate fieldrequired">' . $langs->trans("Label") . '</td><td><input name="label" size="32" value="' . GETPOST("label") . '"></td></tr>';
|
||||||
|
|
||||||
// Date start
|
// Date start
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("DateStart") . '</td><td>';
|
print '<tr><td class="fieldrequired">' . $langs->trans("DateStart") . '</td><td>';
|
||||||
print $form->select_date(($date_start ? $date_start : ''), 'fiscalyear');
|
print $form->select_date(($date_start ? $date_start : ''), 'fiscalyear');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date end
|
// Date end
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("DateEnd") . '</td><td>';
|
print '<tr><td class="fieldrequired">' . $langs->trans("DateEnd") . '</td><td>';
|
||||||
print $form->select_date(($date_end ? $date_end : - 1), 'fiscalyearend');
|
print $form->select_date(($date_end ? $date_end : - 1), 'fiscalyearend');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Statut
|
// Statut
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="fieldrequired">' . $langs->trans("Status") . '</td>';
|
print '<td class="fieldrequired">' . $langs->trans("Status") . '</td>';
|
||||||
print '<td class="valeur">';
|
print '<td class="valeur">';
|
||||||
print $form->selectarray('statut', $statut2label, GETPOST('statut'));
|
print $form->selectarray('statut', $statut2label, GETPOST('statut'));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<div class="center">';
|
print '<div class="center">';
|
||||||
print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">';
|
print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">';
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
|
print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else if ($id) {
|
} else if ($id) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
$head = fiscalyear_prepare_head($object);
|
$head = fiscalyear_prepare_head($object);
|
||||||
|
|
||||||
if ($action == 'edit') {
|
if ($action == 'edit') {
|
||||||
dol_fiche_head($head, 'card', $langs->trans("FiscalYearCard"), 0, 'cron');
|
dol_fiche_head($head, 'card', $langs->trans("Fiscalyear"), 0, 'cron');
|
||||||
|
|
||||||
print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
|
print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
|
||||||
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
|
||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
print '<input type="hidden" name="id" value="' . $id . '">';
|
print '<input type="hidden" name="id" value="' . $id . '">';
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
print "<tr>";
|
print "<tr>";
|
||||||
print '<td class="titlefield">' . $langs->trans("Ref") . '</td><td>';
|
print '<td class="titlefieldcreate titlefield">' . $langs->trans("Ref") . '</td><td>';
|
||||||
print $object->ref;
|
print $object->ref;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("Label") . '</td><td>';
|
print '<tr><td class="fieldrequired">' . $langs->trans("Label") . '</td><td>';
|
||||||
print '<input name="label" class="flat" size="32" value="' . $object->label . '">';
|
print '<input name="label" class="flat" size="32" value="' . $object->label . '">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date start
|
// Date start
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("DateStart") . '</td><td>';
|
print '<tr><td class="fieldrequired">' . $langs->trans("DateStart") . '</td><td>';
|
||||||
print $form->select_date($object->date_start ? $object->date_start : - 1, 'fiscalyear');
|
print $form->select_date($object->date_start ? $object->date_start : - 1, 'fiscalyear');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date end
|
// Date end
|
||||||
print '<tr><td class="fieldrequired">' . $langs->trans("DateEnd") . '</td><td>';
|
print '<tr><td class="fieldrequired">' . $langs->trans("DateEnd") . '</td><td>';
|
||||||
print $form->select_date($object->date_end ? $object->date_end : - 1, 'fiscalyearend');
|
print $form->select_date($object->date_end ? $object->date_end : - 1, 'fiscalyearend');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Statut
|
// Statut
|
||||||
print '<tr><td>' . $langs->trans("Statut") . '</td><td>';
|
print '<tr><td>' . $langs->trans("Statut") . '</td><td>';
|
||||||
print $form->selectarray('statut', $statut2label, $object->statut);
|
print $form->selectarray('statut', $statut2label, $object->statut);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<br><div class="center">';
|
print '<br><div class="center">';
|
||||||
print '<input type="submit" class="button" value="' . $langs->trans("Save") . '">';
|
print '<input type="submit" class="button" value="' . $langs->trans("Save") . '">';
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<input type="submit" name="cancel" class="button" value="' . $langs->trans("Cancel") . '">';
|
print '<input type="submit" name="cancel" class="button" value="' . $langs->trans("Cancel") . '">';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
@ -246,59 +253,61 @@ if ($action == 'create')
|
|||||||
if ($action == 'delete') {
|
if ($action == 'delete') {
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"] . "?id=" . $id, $langs->trans("DeleteFiscalYear"), $langs->trans("ConfirmDeleteFiscalYear"), "confirm_delete");
|
print $form->formconfirm($_SERVER["PHP_SELF"] . "?id=" . $id, $langs->trans("DeleteFiscalYear"), $langs->trans("ConfirmDeleteFiscalYear"), "confirm_delete");
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_fiche_head($head, 'card', $langs->trans("FiscalYearCard"), 0, 'cron');
|
dol_fiche_head($head, 'card', $langs->trans("Fiscalyear"), 0, 'cron');
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
$linkback = '<a href="' . DOL_URL_ROOT . '/accountancy/admin/fiscalyear.php">' . $langs->trans("BackToList") . '</a>';
|
$linkback = '<a href="' . DOL_URL_ROOT . '/accountancy/admin/fiscalyear.php">' . $langs->trans("BackToList") . '</a>';
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
print '<tr><td width="25%">' . $langs->trans("Ref") . '</td><td width="50%">';
|
print '<tr><td class="titlefield">' . $langs->trans("Ref") . '</td><td width="50%">';
|
||||||
print $object->ref;
|
print $object->ref;
|
||||||
print '</td><td width="25%">';
|
print '</td><td>';
|
||||||
print $linkback;
|
print $linkback;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td valign="top">';
|
print '<tr><td valign="top">';
|
||||||
print $form->editfieldkey("Label", 'label', $object->label, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'alpha:32');
|
print $form->editfieldkey("Label", 'label', $object->label, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'alpha:32');
|
||||||
print '</td><td colspan="2">';
|
print '</td><td colspan="2">';
|
||||||
print $form->editfieldval("Label", 'label', $object->label, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'alpha:32');
|
print $form->editfieldval("Label", 'label', $object->label, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'alpha:32');
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
|
|
||||||
// Date start
|
// Date start
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print $form->editfieldkey("DateStart", 'date_start', $object->date_start, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
print $form->editfieldkey("DateStart", 'date_start', $object->date_start, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
||||||
print '</td><td colspan="2">';
|
print '</td><td colspan="2">';
|
||||||
print $form->editfieldval("DateStart", 'date_start', $object->date_start, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
print $form->editfieldval("DateStart", 'date_start', $object->date_start, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date end
|
// Date end
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print $form->editfieldkey("DateEnd", 'date_end', $object->date_end, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
print $form->editfieldkey("DateEnd", 'date_end', $object->date_end, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
||||||
print '</td><td colspan="2">';
|
print '</td><td colspan="2">';
|
||||||
print $form->editfieldval("DateEnd", 'date_end', $object->date_end, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
print $form->editfieldval("DateEnd", 'date_end', $object->date_end, $object, $conf->global->MAIN_EDIT_ALSO_INLINE, 'datepicker');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Statut
|
// Statut
|
||||||
print '<tr><td>' . $langs->trans("Status") . '</td><td colspan="2">' . $object->getLibStatut(4) . '</td></tr>';
|
print '<tr><td>' . $langs->trans("Status") . '</td><td colspan="2">' . $object->getLibStatut(4) . '</td></tr>';
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
|
if (! empty($user->rights->accounting->fiscalyear))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Barre d'actions
|
||||||
|
*/
|
||||||
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
|
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=edit&id=' . $id . '">' . $langs->trans('Modify') . '</a>';
|
||||||
|
|
||||||
|
print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>';
|
||||||
|
|
||||||
/*
|
print '</div>';
|
||||||
* Barre d'actions
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
print '<div class="tabsAction">';
|
|
||||||
|
|
||||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=edit&id=' . $id . '">' . $langs->trans('Modify') . '</a>';
|
|
||||||
|
|
||||||
print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>';
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -16,11 +16,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/admin/fiscalyear_card.php
|
* \file htdocs/accountancy/admin/fiscalyear_info.php
|
||||||
* \brief Page to show info of a fiscal year
|
* \ingroup Advanced accountancy
|
||||||
|
* \brief Page to show info of a fiscal year
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
|
||||||
|
|
||||||
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/fiscalyear.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/fiscalyear.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/fiscalyear.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/fiscalyear.class.php';
|
||||||
@ -29,27 +30,31 @@ $langs->load("admin");
|
|||||||
$langs->load("compta");
|
$langs->load("compta");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (! $user->admin)
|
if ($user->societe_id > 0)
|
||||||
|
accessforbidden();
|
||||||
|
if (! $user->rights->accounting->fiscalyear)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
|
|
||||||
// View
|
// View
|
||||||
llxHeader();
|
$title = $langs->trans("Fiscalyear") . " - " . $langs->trans("Info");
|
||||||
|
$helpurl = "";
|
||||||
|
llxHeader("",$title,$helpurl);
|
||||||
|
|
||||||
if ($id) {
|
if ($id) {
|
||||||
$object = new Fiscalyear($db);
|
$object = new Fiscalyear($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$object->info($id);
|
$object->info($id);
|
||||||
|
|
||||||
$head = fiscalyear_prepare_head($object);
|
$head = fiscalyear_prepare_head($object);
|
||||||
|
|
||||||
dol_fiche_head($head, 'info', $langs->trans("FiscalYearCard"), 0, 'cron');
|
dol_fiche_head($head, 'info', $langs->trans("Fiscalyear"), 0, 'cron');
|
||||||
|
|
||||||
print '<table width="100%"><tr><td>';
|
print '<table width="100%"><tr><td>';
|
||||||
dol_print_object_info($object);
|
dol_print_object_info($object);
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -168,6 +168,18 @@ if ($action == 'setmanagezero') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'setdisabledirectinput') {
|
||||||
|
$setdisabledirectinput = GETPOST('value', 'int');
|
||||||
|
$res = dolibarr_set_const($db, "BANK_DISABLE_DIRECT_INPUT", $setdisabledirectinput, 'yesno', 0, '', $conf->entity);
|
||||||
|
if (! $res > 0)
|
||||||
|
$error ++;
|
||||||
|
if (! $error) {
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'mesgs');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
@ -342,6 +354,20 @@ if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) {
|
|||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
$var = ! $var;
|
||||||
|
print "<tr " . $bc[$var] . ">";
|
||||||
|
print '<td width="80%">' . $langs->trans("BANK_DISABLE_DIRECT_INPUT") . '</td>';
|
||||||
|
if (! empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
|
||||||
|
print '<td align="center" colspan="2"><a href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=0">';
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
print '</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td align="center" colspan="2"><a href="' . $_SERVER['PHP_SELF'] . '?action=setdisabledirectinput&value=1">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a></td>';
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|||||||
@ -65,7 +65,7 @@ $formventilation = new FormVentilation($db);
|
|||||||
$formother = new FormOther($db);
|
$formother = new FormOther($db);
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_accountancy_code_start = '';
|
$search_accountancy_code_start = '';
|
||||||
$search_accountancy_code_end = '';
|
$search_accountancy_code_end = '';
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
* Copyright (C) 2013-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -19,8 +19,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/bookkeeping/list.php
|
* \file htdocs/accountancy/bookkeeping/list.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief List operation of book keeping
|
* \brief List operation of book keeping
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -276,7 +276,7 @@ if ($result < 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'delmouv') {
|
if ($action == 'delmouv') {
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?mvt_num=' . GETPOST('mvt_num'), $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvt'), 'delmouvconfirm', '', 0, 1);
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?mvt_num=' . GETPOST('mvt_num'), $langs->trans('DeleteMvt'), $langs->trans('ConfirmDeleteMvtPartial'), 'delmouvconfirm', '', 0, 1);
|
||||||
print $formconfirm;
|
print $formconfirm;
|
||||||
}
|
}
|
||||||
if ($action == 'delbookkeepingyear') {
|
if ($action == 'delbookkeepingyear') {
|
||||||
|
|||||||