Merge branch 'develop' into patch-17
This commit is contained in:
commit
88059a52d8
12
.github/workflows/stale-issues.yml
vendored
12
.github/workflows/stale-issues.yml
vendored
@ -3,21 +3,23 @@ name: "Close stale issues (bugs and feature requests)"
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: "0 20 * * *"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v1
|
- uses: Dolibarr/stale@master
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-issue-message: 'This issue is stale because it has been open 1 year with no activity. If this is a bug, please comment to confirm it is still present on latest stable version. if this is a feature request, please comment to notify the request is still relevant and not yet covered by latest stable version. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
stale-issue-message: 'This issue is stale because it has been open 1 year with no activity. If this is a bug, please comment to confirm it is still present on latest stable version. if this is a feature request, please comment to notify the request is still relevant and not yet covered by latest stable version. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
||||||
stale-issue-label: 'Issue Stale (automatic label)'
|
stale-issue-label: 'Issue Stale (automatic label)'
|
||||||
exempt-issue-label: 'Priority High / Blocking'
|
exempt-issue-label: 'Priority High / Blocking'
|
||||||
days-before-stale: 365
|
days-before-stale: 365
|
||||||
days-before-close: 10
|
days-before-close: 15
|
||||||
|
operations-per-run: 50
|
||||||
#stale-pr-message: 'This PR is stale because it has been open 1 year with no activity. If this PR is still mergeable (no conflict, nor Continuous Integration errors), please comment to confirm this merge is still expected. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
#stale-pr-message: 'This PR is stale because it has been open 1 year with no activity. If this PR is still mergeable (no conflict, nor Continuous Integration errors), please comment to confirm this merge is still expected. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
||||||
#stale-pr-label: 'PR Stale (automatic label)'
|
stale-pr-label: 'PR Stale (automatic label)'
|
||||||
#exempt-pr-label: 'Priority Top Strategic'
|
stale-pr-message:
|
||||||
|
exempt-pr-label: 'Priority Top Strategic'
|
||||||
|
|
||||||
@ -3,6 +3,7 @@
|
|||||||
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
|
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
|
||||||
|
|
||||||
# We use dist: xenial to have php 5.6+ available
|
# We use dist: xenial to have php 5.6+ available
|
||||||
|
os: linux
|
||||||
dist: xenial
|
dist: xenial
|
||||||
sudo: required
|
sudo: required
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ env:
|
|||||||
global:
|
global:
|
||||||
# Set to true for very verbose output
|
# Set to true for very verbose output
|
||||||
- DEBUG=false
|
- DEBUG=false
|
||||||
matrix:
|
jobs:
|
||||||
# MariaDB overrides MySQL installation so it's not possible to test both yet
|
# MariaDB overrides MySQL installation so it's not possible to test both yet
|
||||||
#- DB=mariadb
|
#- DB=mariadb
|
||||||
- DB=mysql
|
- DB=mysql
|
||||||
@ -53,7 +54,7 @@ env:
|
|||||||
# See https://github.com/DracoBlue/travis-ci-nginx-php-fpm-test
|
# See https://github.com/DracoBlue/travis-ci-nginx-php-fpm-test
|
||||||
#- WS=nginx
|
#- WS=nginx
|
||||||
|
|
||||||
matrix:
|
jobs:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- php: nightly
|
- php: nightly
|
||||||
|
|||||||
@ -18,8 +18,9 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests
|
* Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests
|
||||||
with HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing
|
with HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing
|
||||||
the HTML into content (in such a case, sanitize data later)
|
the HTML into content (in such a case, sanitize data later)
|
||||||
|
* Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless.
|
||||||
|
* Reference of object including a "/" are no more allowed. It is never used by default but to support setup that introduced it, the "/" will be replaced
|
||||||
|
by a "_" automatically when a reference is generated.
|
||||||
|
|
||||||
***** ChangeLog for 11.0.1 compared to 11.0.0 *****
|
***** ChangeLog for 11.0.1 compared to 11.0.0 *****
|
||||||
FIX: advanced target emailing sql and ergonomy.
|
FIX: advanced target emailing sql and ergonomy.
|
||||||
|
|||||||
@ -45,9 +45,12 @@ Dolibarr working. It is here only to build Dolibarr packages, and those
|
|||||||
generated packages will not contains this "build" directory.
|
generated packages will not contains this "build" directory.
|
||||||
|
|
||||||
|
|
||||||
We can find in "build", following sub-directories:
|
You can find in "build", following sub-directories:
|
||||||
|
|
||||||
* debian:
|
* composer
|
||||||
|
To test an upgrade of a lib.
|
||||||
|
|
||||||
|
* debian
|
||||||
To build Debian package.
|
To build Debian package.
|
||||||
|
|
||||||
* dmg:
|
* dmg:
|
||||||
|
|||||||
@ -1,20 +1,24 @@
|
|||||||
README (English)
|
README (English)
|
||||||
##################################################
|
##################################################
|
||||||
OBS Package tools
|
OBS Package tools
|
||||||
|
OBE - openSUSE Build Service
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
This directory contains files to explain how to publish
|
This directory contains an instruction to explain
|
||||||
a package onto OBS
|
how to publish a package onto OBS.
|
||||||
|
|
||||||
|
|
||||||
# Create a project onto OBS
|
# Create a project onto OBS
|
||||||
#----------------------------------
|
---------------------------
|
||||||
https://build.opensuse.org
|
https://build.opensuse.org
|
||||||
|
|
||||||
Packaging rules: http://en.opensuse.org/Portal:Packaging
|
|
||||||
|
# Packaging rules:
|
||||||
|
------------------
|
||||||
|
https://en.opensuse.org/Portal:Packaging
|
||||||
|
|
||||||
Add attributes:
|
Add attributes:
|
||||||
OBS:Screenshots URL of screenshot http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
OBS:Screenshots URL of screenshot https://www.dolibarr.org/images/dolibarr_screenshot1.png
|
||||||
OBS:QualityCategory Development|Testing|Stable|Private
|
OBS:QualityCategory Development|Testing|Stable|Private
|
||||||
OBS:Maintained 1
|
OBS:Maintained 1
|
||||||
|
|
||||||
@ -28,22 +32,24 @@ To submit a snapshot for building, we should have a service file with content
|
|||||||
</service>
|
</service>
|
||||||
</services>
|
</services>
|
||||||
|
|
||||||
How to have such a service file created automatically ?
|
|
||||||
|
|
||||||
Go into project you want to update. It mught be:
|
# How to have such a service file created automatically ?
|
||||||
|
---------------------------------------------------------
|
||||||
|
Go into project you want to update. It might be:
|
||||||
- openSUSE Build Service > Projects > Application:ERP:Dolibarr > dolibarr
|
- openSUSE Build Service > Projects > Application:ERP:Dolibarr > dolibarr
|
||||||
- or your private project
|
- or your private project
|
||||||
|
|
||||||
Once logged, click on "Add file" in section "Source Files", then select mode "Upload From: Remote URL"
|
Once logged, click on "Add file" in section "Source Files", then select mode "Upload From: Remote URL"
|
||||||
Keep empty for "Filename", choose "Remote URL" and enter into last field, URL that should looks like this:
|
Keep empty for "Filename", choose "Remote URL" and enter into last field, URL that should looks like this:
|
||||||
http://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-0.4.src.rpm
|
https://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-0.4.src.rpm
|
||||||
|
|
||||||
Then add into Advanded - Attributes
|
Then add into Advanded - Attributes
|
||||||
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
OBS:Screenshots https://www.dolibarr.org/images/dolibarr_screenshot1.png
|
||||||
OBS:QualityCategory Stable|Testing|Development|Private
|
OBS:QualityCategory Stable|Testing|Development|Private
|
||||||
|
|
||||||
|
|
||||||
# Move project into official directory
|
# Move project into official directory
|
||||||
|
--------------------------------------
|
||||||
- Enter a bug to ask to be a maintener of a category or to add a new one.
|
- Enter a bug to ask to be a maintener of a category or to add a new one.
|
||||||
For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category
|
For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category
|
||||||
https://build.opensuse.org/project/show/Application:ERP
|
https://build.opensuse.org/project/show/Application:ERP
|
||||||
|
|||||||
@ -11,4 +11,4 @@ objectclass: dcObject
|
|||||||
objectClass: organization
|
objectClass: organization
|
||||||
objectClass: top
|
objectClass: top
|
||||||
dc: my-domain
|
dc: my-domain
|
||||||
o: Mon organisation
|
o: my organisation
|
||||||
|
|||||||
@ -12,4 +12,4 @@ objectclass: dcObject
|
|||||||
objectClass: organization
|
objectClass: organization
|
||||||
objectClass: top
|
objectClass: top
|
||||||
dc: my-domain
|
dc: my-domain
|
||||||
o: Mon organisation
|
o: my organisation
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
* Page with licence compatibility
|
* Page with license compatibility
|
||||||
https://www.gnu.org/licenses/quick-guide-gplv3.fr.html
|
https://www.gnu.org/licenses/quick-guide-gplv3.fr.html
|
||||||
|
|
||||||
* FAQ on GPL licence
|
* FAQ on GPL license
|
||||||
https://www.fsf.org/licensing/licenses/gpl-faq.html
|
https://www.fsf.org/licensing/licenses/gpl-faq.html
|
||||||
|
|
||||||
* Questions/Answers on Fork for using Dolibarr as a SaaS
|
* Questions/Answers on Fork for using Dolibarr as a SaaS
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
To test a SEPA file:
|
To test a SEPA file:
|
||||||
http://www.mesfluxdepaiement.fr/testez-vos-fichiers-sepa
|
https://www.mesfluxdepaiement.fr/testez-vos-fichiers-sepa
|
||||||
|
|||||||
@ -1,13 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!ELEMENT ruleset (description,exclude-pattern*,rule+)>
|
<!ELEMENT ruleset (description,arg*,exclude-pattern*,rule+)>
|
||||||
<!ATTLIST ruleset name CDATA "">
|
<!ATTLIST ruleset name CDATA "">
|
||||||
<!ELEMENT description (#PCDATA)>
|
<!ELEMENT description (#PCDATA)>
|
||||||
|
<!ELEMENT arg (#PCDATA)>
|
||||||
|
<!ATTLIST arg name CDATA "">
|
||||||
|
<!ATTLIST arg value CDATA "">
|
||||||
<!ELEMENT exclude-pattern (#PCDATA)>
|
<!ELEMENT exclude-pattern (#PCDATA)>
|
||||||
<!ATTLIST exclude-pattern type CDATA "">
|
<!ATTLIST exclude-pattern type CDATA "">
|
||||||
<!ELEMENT rule (properties*,severity*)>
|
<!ELEMENT rule (properties*,severity*,exclude*)>
|
||||||
<!ATTLIST rule ref CDATA "">
|
<!ATTLIST rule ref CDATA "">
|
||||||
<!ELEMENT properties (property+)>
|
<!ELEMENT properties (property+)>
|
||||||
<!ELEMENT property (#PCDATA)>
|
<!ELEMENT property (#PCDATA)>
|
||||||
<!ATTLIST property name CDATA "">
|
<!ATTLIST property name CDATA "">
|
||||||
<!ATTLIST property value CDATA "">
|
<!ATTLIST property value CDATA "">
|
||||||
<!ELEMENT severity (#PCDATA)>
|
<!ELEMENT severity (#PCDATA)>
|
||||||
|
<!ELEMENT exclude (#PCDATA)>
|
||||||
|
<!ATTLIST exclude name CDATA "">
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
<!DOCTYPE ruleset SYSTEM "ruleset.dtd">
|
<!DOCTYPE ruleset SYSTEM "ruleset.dtd">
|
||||||
<ruleset name="Dolibarr">
|
<ruleset name="Dolibarr">
|
||||||
<description>Dolibarr coding standard.</description>
|
<description>Dolibarr coding standard.</description>
|
||||||
|
<arg name="tab-width" value="4"/>
|
||||||
|
|
||||||
<exclude-pattern type="relative">build/html</exclude-pattern>
|
<exclude-pattern type="relative">build/html</exclude-pattern>
|
||||||
<exclude-pattern type="relative">build/aps</exclude-pattern>
|
<exclude-pattern type="relative">build/aps</exclude-pattern>
|
||||||
@ -188,7 +189,6 @@
|
|||||||
<!-- Disabled as this does not support tab -->
|
<!-- Disabled as this does not support tab -->
|
||||||
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
||||||
|
|
||||||
<arg name="tab-width" value="4"/>
|
|
||||||
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="indent" value="4"/>
|
<property name="indent" value="4"/>
|
||||||
|
|||||||
215
dev/setup/eclipse/PSR-12 [built-in].xml
Normal file
215
dev/setup/eclipse/PSR-12 [built-in].xml
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<profiles>
|
||||||
|
<profile name="PSR-12 [built-in]">
|
||||||
|
<setting id="indentationChar" value="	"/>
|
||||||
|
<setting id="insert_space_after_opening_paren_in_declare" value="false"/>
|
||||||
|
<setting id="insert_space_before_closing_paren_in_declare" value="false"/>
|
||||||
|
<setting id="insert_space_before_opening_paren_in_declare" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.core.formatter.insert_new_line_in_function_invoke" value="3"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_allocation_expression_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_allocation_expression_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_allocation_expression_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_method_invocation_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_method_invocation_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_arguments_in_method_invocation_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_assignment_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_assignment_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_assignment_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_binary_expression_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_binary_expression_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_binary_expression_line_wrap_policy" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_compact_if_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_compact_if_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_compact_if_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_conditional_expression_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_conditional_expression_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_conditional_expression_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_expressions_in_array_initializer_force_split" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_expressions_in_array_initializer_indent_policy" value="2"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_expressions_in_array_initializer_line_wrap_policy" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_parameters_in_method_declaration_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_parameters_in_method_declaration_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_parameters_in_method_declaration_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superclass_in_type_declaration_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superclass_in_type_declaration_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superclass_in_type_declaration_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superinterfaces_in_type_declaration_force_split" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superinterfaces_in_type_declaration_indent_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.alignment_for_superinterfaces_in_type_declaration_line_wrap_policy" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.blank_lines_before_field" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.blank_lines_before_member_type" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.blank_lines_before_method" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.blank_lines_between_type_declarations" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.brace_position_for_block" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.brace_position_for_lambda_function_declaration" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.brace_position_for_method_declaration" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.brace_position_for_switch" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.brace_position_for_type_declaration" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_block_comments" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_header" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_html" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_javadoc_comments" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_line_comments" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.format_source_code" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.indent_parameter_description" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.indent_root_tags" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.insert_new_line_before_root_tags" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.insert_new_line_for_parameter" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.keep_empty_line_for_empty_description" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.line_length" value="1000"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.never_format_unknown_tags" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.continuation_indentation" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.continuation_indentation_for_array_initializer" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.disabling_tag" value="@formatter:off"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.enabling_tag" value="@formatter:on"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.format_guardian_clause_on_one_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_breaks_compare_to_cases" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_empty_lines" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_heredocs" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_statements_compare_to_block" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_statements_compare_to_body" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.indentation.size" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_before_catch_in_try_statement" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_before_else_in_if_statement" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_before_finally_in_try_statement" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_before_while_in_do_statement" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_in_empty_block" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_in_empty_method_body" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_new_line_in_empty_type_declaration" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_arrow_in_array_creation" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_arrow_in_field_access" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_arrow_in_foreach" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_arrow_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_arrow_in_yield" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_assignment_operator" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_binary_operator" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_closing_brace_in_block" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_closing_paren_in_cast" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_colon_in_conditional" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_coloncolon_in_field_access" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_coloncolon_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_array_creation" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_echo" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_for_inits" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_global" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_list" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_multiple_constant_declarations" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_static" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_comma_in_superinterfaces" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_array_creation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_cast" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_catch" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_for" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_foreach" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_if" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_list" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_switch" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_opening_paren_in_while" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_postfix_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_prefix_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_question_in_conditional" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_reference_symbol_in_referenced_expression" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_semicolon_in_for" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_after_unary_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_arrow_in_array_creation" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_arrow_in_field_access" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_arrow_in_foreach" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_arrow_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_arrow_in_yield" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_assignment_operator" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_binary_operator" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_array_creation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_cast" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_catch" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_for" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_foreach" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_if" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_list" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_switch" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_closing_paren_in_while" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_colon_in_case" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_colon_in_conditional" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_colon_in_default" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_coloncolon_in_field_access" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_coloncolon_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_array_creation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_echo" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_for_inits" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_global" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_list" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_multiple_constant_declarations" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_static" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_comma_in_superinterfaces" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_brace_in_block" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_brace_in_switch" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_array_creation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_catch" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_for" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_foreach" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_if" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_list" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_switch" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_opening_paren_in_while" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_postfix_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_prefix_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_question_in_conditional" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_semicolon" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_semicolon_in_for" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_before_unary_operator" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_between_brackets_in_array_type_reference" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.join_lines_in_comments" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.keep_else_statement_on_same_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.keep_elseif_statement_on_same_line" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.keep_imple_if_on_one_line" value="true"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.keep_then_statement_on_same_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.keep_trailing_comma_in_list" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.lineSplit" value="200"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_after_namespace" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_after_use_statements" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_at_end_of_class_body" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_before_namespace" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_before_use_statements" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_between_namespaces" value="1"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_blank_lines_between_use_statements" value="0"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.number_of_empty_lines_to_preserve" value="3"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.put_empty_statement_on_new_line" value="false"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.tabulation.size" value="4"/>
|
||||||
|
<setting id="org.eclipse.php.formatter.core.formatter.use_on_off_tags" value="false"/>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
@ -3,9 +3,10 @@ README (English)
|
|||||||
This directory contains tools to generate translation files for a new
|
This directory contains tools to generate translation files for a new
|
||||||
languages or to update translation files for existing languages.
|
languages or to update translation files for existing languages.
|
||||||
See Dolibarr Wiki page:
|
See Dolibarr Wiki page:
|
||||||
http://wiki.dolibarr.org/index.php/Translator_documentation
|
https://wiki.dolibarr.org/index.php/Translator_documentation
|
||||||
For more information on how to use them.
|
For more information on how to use them.
|
||||||
|
|
||||||
|
for Linux OS:
|
||||||
To install transifex client:
|
To install transifex client:
|
||||||
sudo pip install --upgrade transifex-client
|
sudo pip install --upgrade transifex-client
|
||||||
|
|
||||||
|
|||||||
@ -1,17 +1,25 @@
|
|||||||
|
comparison of terms
|
||||||
|
|
||||||
|
|
||||||
Term Dolibarr SAP Odoo ...
|
Dolibarr SAP ERP Odoo
|
||||||
----------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Thirdparty Contact partner Partner/Contact (company)
|
Thirdparty Contact partner Partner/Contact (company)
|
||||||
Contact/address Contact person Partner/Contact (individual)
|
Contact/address Contact person Partner/Contact (individual)
|
||||||
|
|
||||||
Financial ?? Invoicing
|
Financial Finance (FI) Accounting
|
||||||
|
Accounting
|
||||||
|
|
||||||
|
|
||||||
Income / Expense ?? Profit / Loss
|
Income / Expense ?? Profit / Loss
|
||||||
Balance ?? Net profit
|
Balance ?? Net profit
|
||||||
Subledger account Subledger account ??
|
Subledger account Subledger account ??
|
||||||
|
|
||||||
|
CRM Sales & Distribution Sales
|
||||||
|
Proposal ?? Quotation
|
||||||
|
|
||||||
Proposal ?? Quotation Proposal is ok but proposition looks better (proposal is for a detailed proposition). We can say also "business proposition or business proposal".
|
|
||||||
Indian are using "Quotation".
|
|
||||||
|
Proposal is ok but proposition looks better (proposal is for a detailed proposition).
|
||||||
|
We can say also "business proposition or business proposal".
|
||||||
|
In India they are using "Quotation".
|
||||||
|
|
||||||
|
|||||||
12
doc/user/README-DE.md
Normal file
12
doc/user/README-DE.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
README (german)
|
||||||
|
LiesMich (deutsch)
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
Benutzeranleitung
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Alle Dolibarr-Informationen sind online verfuegbar ueber die Webseiten:
|
||||||
|
https://www.dolibarr.de
|
||||||
|
oder
|
||||||
|
https://www.dolibarr.org
|
||||||
|
https://wiki.dolibarr.org
|
||||||
@ -45,7 +45,8 @@ $search_label = GETPOST('search_label', 'alpha');
|
|||||||
$search_labelshort = GETPOST('search_labelshort', 'alpha');
|
$search_labelshort = GETPOST('search_labelshort', 'alpha');
|
||||||
$search_accountparent = GETPOST('search_accountparent', 'alpha');
|
$search_accountparent = GETPOST('search_accountparent', 'alpha');
|
||||||
$search_pcgtype = GETPOST('search_pcgtype', 'alpha');
|
$search_pcgtype = GETPOST('search_pcgtype', 'alpha');
|
||||||
$search_pcgsubtype = GETPOST('search_pcgsubtype', 'alpha');
|
|
||||||
|
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->socid > 0) accessforbidden();
|
if ($user->socid > 0) accessforbidden();
|
||||||
@ -69,7 +70,6 @@ $arrayfields = array(
|
|||||||
'aa.labelshort'=>array('label'=>$langs->trans("LabelToShow"), 'checked'=>1),
|
'aa.labelshort'=>array('label'=>$langs->trans("LabelToShow"), 'checked'=>1),
|
||||||
'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>1),
|
'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>1),
|
||||||
'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>1, 'help'=>'PcgtypeDesc'),
|
||||||
'aa.pcg_subtype'=>array('label'=>$langs->trans("Pcgsubtype"), 'checked'=>0, 'help'=>'PcgtypeDesc'),
|
|
||||||
'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1)
|
'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -101,14 +101,11 @@ if (empty($reshook))
|
|||||||
$search_labelshort = "";
|
$search_labelshort = "";
|
||||||
$search_accountparent = "";
|
$search_accountparent = "";
|
||||||
$search_pcgtype = "";
|
$search_pcgtype = "";
|
||||||
$search_pcgsubtype = "";
|
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
}
|
}
|
||||||
|
if ((GETPOST('valid_change_chart', 'alpha') && GETPOST('chartofaccounts', 'int') > 0) // explicit click on button 'Change and load' with js on
|
||||||
if (GETPOST('change_chart', 'alpha') && (GETPOST('valid_change_chart', 'int') || empty($conf->use_javascript_ajax)))
|
|| (GETPOST('chartofaccounts', 'int') > 0 && GETPOST('chartofaccounts', 'int') != $conf->global->CHARTOFACCOUNTS)) // a submit of form is done and chartofaccounts combo has been modified
|
||||||
{
|
{
|
||||||
$chartofaccounts = GETPOST('chartofaccounts', 'int');
|
|
||||||
|
|
||||||
if ($chartofaccounts > 0)
|
if ($chartofaccounts > 0)
|
||||||
{
|
{
|
||||||
// Get language code for this $chartofaccounts
|
// Get language code for this $chartofaccounts
|
||||||
@ -195,7 +192,7 @@ if ($action == 'delete') {
|
|||||||
|
|
||||||
$pcgver = $conf->global->CHARTOFACCOUNTS;
|
$pcgver = $conf->global->CHARTOFACCOUNTS;
|
||||||
|
|
||||||
$sql = "SELECT aa.rowid, aa.fk_pcg_version, aa.pcg_type, aa.pcg_subtype, aa.account_number, aa.account_parent , aa.label, aa.labelshort, aa.active, ";
|
$sql = "SELECT aa.rowid, aa.fk_pcg_version, aa.pcg_type, aa.account_number, aa.account_parent , aa.label, aa.labelshort, aa.active, ";
|
||||||
$sql .= " a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2";
|
$sql .= " a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as aa";
|
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_account as aa";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version AND aa.entity = ".$conf->entity;
|
||||||
@ -241,7 +238,6 @@ if (strlen(trim($search_label))) $sql .= natural_search("aa.label", $search_la
|
|||||||
if (strlen(trim($search_labelshort))) $sql .= natural_search("aa.labelshort", $search_labelshort);
|
if (strlen(trim($search_labelshort))) $sql .= natural_search("aa.labelshort", $search_labelshort);
|
||||||
if (strlen(trim($search_accountparent)) && $search_accountparent != '-1') $sql .= natural_search("aa.account_parent", $search_accountparent, 2);
|
if (strlen(trim($search_accountparent)) && $search_accountparent != '-1') $sql .= natural_search("aa.account_parent", $search_accountparent, 2);
|
||||||
if (strlen(trim($search_pcgtype))) $sql .= natural_search("aa.pcg_type", $search_pcgtype);
|
if (strlen(trim($search_pcgtype))) $sql .= natural_search("aa.pcg_type", $search_pcgtype);
|
||||||
if (strlen(trim($search_pcgsubtype))) $sql .= natural_search("aa.pcg_subtype", $search_pcgsubtype);
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
@ -274,23 +270,17 @@ if ($resql)
|
|||||||
if ($search_labelshort) $param .= '&search_labelshort='.urlencode($search_labelshort);
|
if ($search_labelshort) $param .= '&search_labelshort='.urlencode($search_labelshort);
|
||||||
if ($search_accountparent > 0 || $search_accountparent == '0') $param .= '&search_accountparent='.urlencode($search_accountparent);
|
if ($search_accountparent > 0 || $search_accountparent == '0') $param .= '&search_accountparent='.urlencode($search_accountparent);
|
||||||
if ($search_pcgtype) $param .= '&search_pcgtype='.urlencode($search_pcgtype);
|
if ($search_pcgtype) $param .= '&search_pcgtype='.urlencode($search_pcgtype);
|
||||||
if ($search_pcgsubtype) $param .= '&search_pcgsubtype='.urlencode($search_pcgsubtype);
|
|
||||||
if ($optioncss != '') $param .= '&optioncss='.$optioncss;
|
if ($optioncss != '') $param .= '&optioncss='.$optioncss;
|
||||||
|
|
||||||
if (!empty($conf->use_javascript_ajax))
|
if (!empty($conf->use_javascript_ajax))
|
||||||
{
|
{
|
||||||
print '<!-- Add javascript to update a flag when we select "Change plan" -->
|
print '<!-- Add javascript to reload page when we click "Change plan" -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$("#searchFormList").on("submit", function (e) {
|
$("#change_chart").on("click", function (e) {
|
||||||
console.log("chartofaccounts focus = "+$("#chartofaccounts").is(":focus"));
|
console.log("chartofaccounts seleted = "+$("#chartofaccounts").val());
|
||||||
console.log("change_chart focus = "+$("#change_chart").is(":focus"));
|
// reload page
|
||||||
if ($("#change_chart").is(":focus"))
|
window.location.href = "'.$_SERVER["PHP_SELF"].'?valid_change_chart=1&chartofaccounts="+$("#chartofaccounts").val();
|
||||||
{
|
|
||||||
console.log("We set valid_change_chart to 1");
|
|
||||||
$("#valid_change_chart").val(1);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>';
|
</script>';
|
||||||
@ -337,8 +327,7 @@ if ($resql)
|
|||||||
else dol_print_error($db);
|
else dol_print_error($db);
|
||||||
print "</select>";
|
print "</select>";
|
||||||
print ajax_combobox("chartofaccounts");
|
print ajax_combobox("chartofaccounts");
|
||||||
print '<input type="submit" class="button" name="change_chart" id="change_chart" value="'.dol_escape_htmltag($langs->trans("ChangeAndLoad")).'">';
|
print '<input type="'.(empty($conf->use_javascript_ajax)?'submit':'button').'" class="button" name="change_chart" id="change_chart" value="'.dol_escape_htmltag($langs->trans("ChangeAndLoad")).'">';
|
||||||
print '<input type="hidden" name="valid_change_chart" id="valid_change_chart" value="0">';
|
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -363,7 +352,6 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgtype" value="'.$search_pcgtype.'"></td>';
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgtype" value="'.$search_pcgtype.'"></td>';
|
||||||
if (!empty($arrayfields['aa.pcg_subtype']['checked'])) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_pcgsubtype" value="'.$search_pcgsubtype.'"></td>';
|
|
||||||
if (!empty($arrayfields['aa.active']['checked'])) print '<td class="liste_titre"> </td>';
|
if (!empty($arrayfields['aa.active']['checked'])) print '<td class="liste_titre"> </td>';
|
||||||
print '<td class="liste_titre maxwidthsearch">';
|
print '<td class="liste_titre maxwidthsearch">';
|
||||||
$searchpicto = $form->showFilterAndCheckAddButtons($massactionbutton ? 1 : 0, 'checkforselect', 1);
|
$searchpicto = $form->showFilterAndCheckAddButtons($massactionbutton ? 1 : 0, 'checkforselect', 1);
|
||||||
@ -377,7 +365,6 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['aa.labelshort']['checked'])) print_liste_field_titre($arrayfields['aa.labelshort']['label'], $_SERVER["PHP_SELF"], "aa.labelshort", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['aa.labelshort']['checked'])) print_liste_field_titre($arrayfields['aa.labelshort']['label'], $_SERVER["PHP_SELF"], "aa.labelshort", "", $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['aa.account_parent']['checked'])) print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
|
if (!empty($arrayfields['aa.account_parent']['checked'])) print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
|
||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help']);
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help']);
|
||||||
if (!empty($arrayfields['aa.pcg_subtype']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_subtype']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_subtype', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_subtype']['help']);
|
|
||||||
if (!empty($arrayfields['aa.active']['checked'])) print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['aa.active']['checked'])) print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder);
|
||||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -454,15 +441,6 @@ if ($resql)
|
|||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chart of accounts subtype
|
|
||||||
if (!empty($arrayfields['aa.pcg_subtype']['checked']))
|
|
||||||
{
|
|
||||||
print "<td>";
|
|
||||||
print $obj->pcg_subtype;
|
|
||||||
print "</td>\n";
|
|
||||||
if (!$i) $totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Activated or not
|
// Activated or not
|
||||||
if (!empty($arrayfields['aa.active']['checked']))
|
if (!empty($arrayfields['aa.active']['checked']))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -92,7 +92,6 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
$object->pcg_subtype = GETPOST('pcg_subtype', 'alpha');
|
|
||||||
$object->account_number = $account_number;
|
$object->account_number = $account_number;
|
||||||
$object->account_parent = $account_parent;
|
$object->account_parent = $account_parent;
|
||||||
$object->account_category = GETPOST('account_category', 'alpha');
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
@ -158,7 +157,6 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
|||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
$object->pcg_subtype = GETPOST('pcg_subtype', 'alpha');
|
|
||||||
$object->account_number = $account_number;
|
$object->account_number = $account_number;
|
||||||
$object->account_parent = $account_parent;
|
$object->account_parent = $account_parent;
|
||||||
$object->account_category = GETPOST('account_category', 'alpha');
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
@ -260,12 +258,6 @@ if ($action == 'create') {
|
|||||||
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type']) ?GETPOST('pcg_type', 'alpha') : $object->pcg_type).'">';
|
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type']) ?GETPOST('pcg_type', 'alpha') : $object->pcg_type).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Chart of accounts subtype
|
|
||||||
print '<tr><td>'.$langs->trans("Pcgsubtype").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype']) ?GETPOST('pcg_subtype', 'alpha') : $object->pcg_subtype).'">';
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
@ -329,12 +321,6 @@ elseif ($id > 0 || $ref) {
|
|||||||
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type']) ?GETPOST('pcg_type', 'alpha') : $object->pcg_type).'">';
|
print '<input type="text" name="pcg_type" value="'.dol_escape_htmltag(isset($_POST['pcg_type']) ?GETPOST('pcg_type', 'alpha') : $object->pcg_type).'">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Chart of accounts subtype
|
|
||||||
print '<tr><td>'.$langs->trans("Pcgsubtype").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
print '<input type="text" name="pcg_subtype" value="'.dol_escape_htmltag(isset($_POST['pcg_subtype']) ?GETPOST('pcg_subtype', 'alpha') : $object->pcg_subtype).'">';
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
@ -383,10 +369,6 @@ elseif ($id > 0 || $ref) {
|
|||||||
print '<tr><td>'.$langs->trans("Pcgtype").'</td>';
|
print '<tr><td>'.$langs->trans("Pcgtype").'</td>';
|
||||||
print '<td colspan="2">'.$object->pcg_type.'</td></tr>';
|
print '<td colspan="2">'.$object->pcg_type.'</td></tr>';
|
||||||
|
|
||||||
// Chart of accounts subtype
|
|
||||||
print '<tr><td>'.$langs->trans("Pcgsubtype").'</td>';
|
|
||||||
print '<td colspan="2">'.$object->pcg_subtype.'</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|||||||
@ -677,9 +677,6 @@ if ($id)
|
|||||||
}
|
}
|
||||||
if ($fieldlist[$field] == 'pcg_type') {
|
if ($fieldlist[$field] == 'pcg_type') {
|
||||||
$valuetoshow = $langs->trans("Pcg_type");
|
$valuetoshow = $langs->trans("Pcg_type");
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'pcg_subtype') {
|
|
||||||
$valuetoshow = $langs->trans("Pcg_subtype");
|
|
||||||
}
|
}
|
||||||
if ($fieldlist[$field] == 'type_template') {
|
if ($fieldlist[$field] == 'type_template') {
|
||||||
$valuetoshow = $langs->trans("TypeOfTemplate");
|
$valuetoshow = $langs->trans("TypeOfTemplate");
|
||||||
|
|||||||
@ -161,6 +161,7 @@ print '<input type="hidden" name="action" value="update">';
|
|||||||
// Define main accounts for thirdparty
|
// Define main accounts for thirdparty
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre"><td>'.$langs->trans("ThirdParties").' | '.$langs->trans("Users").'</td><td></td></tr>';
|
||||||
|
|
||||||
foreach ($list_account_main as $key) {
|
foreach ($list_account_main as $key) {
|
||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
@ -180,15 +181,6 @@ foreach ($list_account_main as $key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
print "</table>\n";
|
|
||||||
|
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
// Define default accounts
|
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
|
||||||
|
|
||||||
foreach ($list_account as $key) {
|
foreach ($list_account as $key) {
|
||||||
$reg=array();
|
$reg=array();
|
||||||
if (preg_match('/---(.*)---/', $key, $reg)) {
|
if (preg_match('/---(.*)---/', $key, $reg)) {
|
||||||
|
|||||||
@ -134,13 +134,13 @@ if ($action == 'update') {
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
$title = $langs->trans('ConfigAccountingExpert');
|
$title = $langs->trans('ExportOptions');
|
||||||
llxHeader('', $title);
|
llxHeader('', $title);
|
||||||
|
|
||||||
|
|
||||||
$linkback = '';
|
$linkback = '';
|
||||||
// $linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php?restore_lastsearch_values=1">' . $langs->trans("BackToModuleList") . '</a>';
|
// $linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php?restore_lastsearch_values=1">' . $langs->trans("BackToModuleList") . '</a>';
|
||||||
print load_fiche_titre($langs->trans('ConfigAccountingExpert'), $linkback, 'accountancy');
|
print load_fiche_titre($langs->trans('ExportOptions'), $linkback, 'accountancy');
|
||||||
|
|
||||||
|
|
||||||
print "\n".'<script type="text/javascript" language="javascript">'."\n";
|
print "\n".'<script type="text/javascript" language="javascript">'."\n";
|
||||||
|
|||||||
@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
@ -538,6 +539,7 @@ if ($action == 'export_file' && $user->rights->accounting->mouvements->export) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$formother = new FormOther($db);
|
$formother = new FormOther($db);
|
||||||
|
$formfile = new FormFile($db);
|
||||||
|
|
||||||
$title_page = $langs->trans("Bookkeeping");
|
$title_page = $langs->trans("Bookkeeping");
|
||||||
|
|
||||||
@ -914,7 +916,69 @@ while ($i < min($num, $limit))
|
|||||||
// Document ref
|
// Document ref
|
||||||
if (!empty($arrayfields['t.doc_ref']['checked']))
|
if (!empty($arrayfields['t.doc_ref']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nowrap">'.$line->doc_ref.'</td>';
|
if ($line->doc_type == 'customer_invoice')
|
||||||
|
{
|
||||||
|
$langs->loadLangs(array('bills'));
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
|
$objectstatic = new Facture($db);
|
||||||
|
$objectstatic->fetch($line->fk_doc);
|
||||||
|
//$modulepart = 'facture';
|
||||||
|
|
||||||
|
$filename = dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$filedir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id;
|
||||||
|
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
|
||||||
|
}
|
||||||
|
elseif ($line->doc_type == 'supplier_invoice')
|
||||||
|
{
|
||||||
|
$langs->loadLangs(array('bills'));
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
|
$objectstatic = new FactureFournisseur($db);
|
||||||
|
$objectstatic->fetch($line->fk_doc);
|
||||||
|
//$modulepart = 'invoice_supplier';
|
||||||
|
|
||||||
|
$filename = dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$subdir = get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
|
||||||
|
}
|
||||||
|
elseif ($line->doc_type == 'expense_report')
|
||||||
|
{
|
||||||
|
$langs->loadLangs(array('trips'));
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
|
$objectstatic = new ExpenseReport($db);
|
||||||
|
$objectstatic->fetch($line->fk_doc);
|
||||||
|
//$modulepart = 'expensereport';
|
||||||
|
|
||||||
|
$filename=dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$filedir=$conf->expensereport->dir_output . '/' . dol_sanitizeFileName($line->doc_ref);
|
||||||
|
$urlsource=$_SERVER['PHP_SELF'].'?id='.$objectstatic->id;
|
||||||
|
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Other type
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
|
||||||
|
print '<table class="nobordernopadding"><tr class="nocellnopadd">';
|
||||||
|
// Picto + Ref
|
||||||
|
print '<td class="nobordernopadding nowrap">';
|
||||||
|
|
||||||
|
if($line->doc_type == 'customer_invoice' || $line->doc_type == 'supplier_invoice' || $line->doc_type == 'expense_report')
|
||||||
|
{
|
||||||
|
print $objectstatic->getNomUrl(1, '', 0, 0, '', 0, -1, 1);
|
||||||
|
print $documentlink;
|
||||||
|
} else {
|
||||||
|
print $line->doc_ref;
|
||||||
|
}
|
||||||
|
print '</td></tr></table>';
|
||||||
|
|
||||||
|
print "</td>\n";
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,11 +53,6 @@ class AccountancySystem
|
|||||||
*/
|
*/
|
||||||
public $pcg_type;
|
public $pcg_type;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string pcg subtype
|
|
||||||
*/
|
|
||||||
public $pcg_subtype;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy System numero
|
* @var string Accountancy System numero
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -90,11 +90,6 @@ class AccountingAccount extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $pcg_type;
|
public $pcg_type;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string pcg subtype
|
|
||||||
*/
|
|
||||||
public $pcg_subtype;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string account number
|
* @var string account number
|
||||||
*/
|
*/
|
||||||
@ -167,7 +162,7 @@ class AccountingAccount extends CommonObject
|
|||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
if ($rowid || $account_number) {
|
if ($rowid || $account_number) {
|
||||||
$sql = "SELECT a.rowid as rowid, a.datec, a.tms, a.fk_pcg_version, a.pcg_type, a.pcg_subtype, a.account_number, a.account_parent, a.label, a.labelshort, a.fk_accounting_category, a.fk_user_author, a.fk_user_modif, a.active";
|
$sql = "SELECT a.rowid as rowid, a.datec, a.tms, a.fk_pcg_version, a.pcg_type, a.account_number, a.account_parent, a.label, a.labelshort, a.fk_accounting_category, a.fk_user_author, a.fk_user_modif, a.active";
|
||||||
$sql .= ", ca.label as category_label";
|
$sql .= ", ca.label as category_label";
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as a";
|
$sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as a";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_accounting_category as ca ON a.fk_accounting_category = ca.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_accounting_category as ca ON a.fk_accounting_category = ca.rowid";
|
||||||
@ -198,7 +193,6 @@ class AccountingAccount extends CommonObject
|
|||||||
$this->tms = $obj->tms;
|
$this->tms = $obj->tms;
|
||||||
$this->fk_pcg_version = $obj->fk_pcg_version;
|
$this->fk_pcg_version = $obj->fk_pcg_version;
|
||||||
$this->pcg_type = $obj->pcg_type;
|
$this->pcg_type = $obj->pcg_type;
|
||||||
$this->pcg_subtype = $obj->pcg_subtype;
|
|
||||||
$this->account_number = $obj->account_number;
|
$this->account_number = $obj->account_number;
|
||||||
$this->account_parent = $obj->account_parent;
|
$this->account_parent = $obj->account_parent;
|
||||||
$this->label = $obj->label;
|
$this->label = $obj->label;
|
||||||
@ -240,8 +234,6 @@ class AccountingAccount extends CommonObject
|
|||||||
$this->fk_pcg_version = trim($this->fk_pcg_version);
|
$this->fk_pcg_version = trim($this->fk_pcg_version);
|
||||||
if (isset($this->pcg_type))
|
if (isset($this->pcg_type))
|
||||||
$this->pcg_type = trim($this->pcg_type);
|
$this->pcg_type = trim($this->pcg_type);
|
||||||
if (isset($this->pcg_subtype))
|
|
||||||
$this->pcg_subtype = trim($this->pcg_subtype);
|
|
||||||
if (isset($this->account_number))
|
if (isset($this->account_number))
|
||||||
$this->account_number = trim($this->account_number);
|
$this->account_number = trim($this->account_number);
|
||||||
if (isset($this->label))
|
if (isset($this->label))
|
||||||
@ -253,10 +245,6 @@ class AccountingAccount extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->pcg_type = 'XXXXXX';
|
$this->pcg_type = 'XXXXXX';
|
||||||
}
|
}
|
||||||
if (empty($this->pcg_subtype) || $this->pcg_subtype == '-1')
|
|
||||||
{
|
|
||||||
$this->pcg_subtype = 'XXXXXX';
|
|
||||||
}
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
// Put here code to add control on parameters values
|
// Put here code to add control on parameters values
|
||||||
|
|
||||||
@ -266,7 +254,6 @@ class AccountingAccount extends CommonObject
|
|||||||
$sql .= ", entity";
|
$sql .= ", entity";
|
||||||
$sql .= ", fk_pcg_version";
|
$sql .= ", fk_pcg_version";
|
||||||
$sql .= ", pcg_type";
|
$sql .= ", pcg_type";
|
||||||
$sql .= ", pcg_subtype";
|
|
||||||
$sql .= ", account_number";
|
$sql .= ", account_number";
|
||||||
$sql .= ", account_parent";
|
$sql .= ", account_parent";
|
||||||
$sql .= ", label";
|
$sql .= ", label";
|
||||||
@ -279,7 +266,6 @@ class AccountingAccount extends CommonObject
|
|||||||
$sql .= ", " . $conf->entity;
|
$sql .= ", " . $conf->entity;
|
||||||
$sql .= ", " . (empty($this->fk_pcg_version) ? 'NULL' : "'" . $this->db->escape($this->fk_pcg_version) . "'");
|
$sql .= ", " . (empty($this->fk_pcg_version) ? 'NULL' : "'" . $this->db->escape($this->fk_pcg_version) . "'");
|
||||||
$sql .= ", " . (empty($this->pcg_type) ? 'NULL' : "'" . $this->db->escape($this->pcg_type) . "'");
|
$sql .= ", " . (empty($this->pcg_type) ? 'NULL' : "'" . $this->db->escape($this->pcg_type) . "'");
|
||||||
$sql .= ", " . (empty($this->pcg_subtype) ? 'NULL' : "'" . $this->db->escape($this->pcg_subtype) . "'");
|
|
||||||
$sql .= ", " . (empty($this->account_number) ? 'NULL' : "'" . $this->db->escape($this->account_number) . "'");
|
$sql .= ", " . (empty($this->account_number) ? 'NULL' : "'" . $this->db->escape($this->account_number) . "'");
|
||||||
$sql .= ", " . (empty($this->account_parent) ? 0 : (int) $this->account_parent);
|
$sql .= ", " . (empty($this->account_parent) ? 0 : (int) $this->account_parent);
|
||||||
$sql .= ", " . (empty($this->label) ? "''" : "'" . $this->db->escape($this->label) . "'");
|
$sql .= ", " . (empty($this->label) ? "''" : "'" . $this->db->escape($this->label) . "'");
|
||||||
@ -341,17 +327,12 @@ class AccountingAccount extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->pcg_type = 'XXXXXX';
|
$this->pcg_type = 'XXXXXX';
|
||||||
}
|
}
|
||||||
if (empty($this->pcg_subtype) || $this->pcg_subtype == '-1')
|
|
||||||
{
|
|
||||||
$this->pcg_subtype = 'XXXXXX';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = "UPDATE " . MAIN_DB_PREFIX . "accounting_account ";
|
$sql = "UPDATE " . MAIN_DB_PREFIX . "accounting_account ";
|
||||||
$sql .= " SET fk_pcg_version = " . ($this->fk_pcg_version ? "'" . $this->db->escape($this->fk_pcg_version) . "'" : "null");
|
$sql .= " SET fk_pcg_version = " . ($this->fk_pcg_version ? "'" . $this->db->escape($this->fk_pcg_version) . "'" : "null");
|
||||||
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
|
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
|
||||||
$sql .= " , pcg_subtype = " . ($this->pcg_subtype ? "'" . $this->db->escape($this->pcg_subtype) . "'" : "null");
|
|
||||||
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
||||||
$sql .= " , account_parent = " . (int) $this->account_parent;
|
$sql .= " , account_parent = " . (int) $this->account_parent;
|
||||||
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
|
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
|
||||||
|
|||||||
@ -760,7 +760,7 @@ if (! $error && $action == 'writebookkeeping') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (price2num($totaldebit) != price2num($totalcredit))
|
if (price2num($totaldebit, 'MT') != price2num($totalcredit, 'MT'))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$errorforline++;
|
$errorforline++;
|
||||||
|
|||||||
@ -355,7 +355,7 @@ if ($action == 'writebookkeeping') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Protection against a bug on line before
|
// Protection against a bug on line before
|
||||||
if (price2num($totaldebit) != price2num($totalcredit))
|
if (price2num($totaldebit, 'MT') != price2num($totalcredit, 'MT'))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$errorforline++;
|
$errorforline++;
|
||||||
|
|||||||
@ -513,7 +513,7 @@ if ($action == 'writebookkeeping') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Protection against a bug on lines before
|
// Protection against a bug on lines before
|
||||||
if (!$errorforline && (price2num($totaldebit) != price2num($totalcredit)))
|
if (! $errorforline && (price2num($totaldebit, 'MT') != price2num($totalcredit, 'MT')))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$errorforline++;
|
$errorforline++;
|
||||||
|
|||||||
@ -471,7 +471,7 @@ if ($action == 'writebookkeeping') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Protection against a bug on lines before
|
// Protection against a bug on lines before
|
||||||
if (!$errorforline && (price2num($totaldebit) != price2num($totalcredit)))
|
if (! $errorforline && (price2num($totaldebit, 'MT') != price2num($totalcredit, 'MT')))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
$errorforline++;
|
$errorforline++;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -75,7 +75,7 @@ if ($id)
|
|||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
|
||||||
|
|
||||||
dol_banner_tab($object, 'rowid', $linkback);
|
dol_banner_tab($object, 'id', $linkback);
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
print '<div class="fichecenter">';
|
||||||
|
|
||||||
|
|||||||
@ -66,7 +66,7 @@ llxHeader('', $langs->trans("ClickToDialSetup"), $wikihelp);
|
|||||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print load_fiche_titre($langs->trans("ClickToDialSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("ClickToDialSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
print $langs->trans("ClickToDialDesc")."<br>\n";
|
print '<span class="opacitymedium">'.$langs->trans("ClickToDialDesc")."</span><br>\n";
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<form method="post" action="clicktodial.php">';
|
print '<form method="post" action="clicktodial.php">';
|
||||||
|
|||||||
@ -414,7 +414,7 @@ print '<table class="noborder centpercent">';
|
|||||||
print '<tr class="liste_titre"><th class="titlefield wordbreak">'.$langs->trans("CompanyInfo").'</th><th>'.$langs->trans("Value").'</th></tr>'."\n";
|
print '<tr class="liste_titre"><th class="titlefield wordbreak">'.$langs->trans("CompanyInfo").'</th><th>'.$langs->trans("Value").'</th></tr>'."\n";
|
||||||
|
|
||||||
// Name
|
// Name
|
||||||
print '<tr class="oddeven"><td class="fieldrequired"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
print '<tr class="oddeven"><td class="fieldrequired wordbreak"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
||||||
print '<input name="nom" id="name" class="minwidth200" value="'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_NOM ? $conf->global->MAIN_INFO_SOCIETE_NOM : GETPOST("nom", 'nohtml')).'"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'></td></tr>'."\n";
|
print '<input name="nom" id="name" class="minwidth200" value="'.dol_escape_htmltag($conf->global->MAIN_INFO_SOCIETE_NOM ? $conf->global->MAIN_INFO_SOCIETE_NOM : GETPOST("nom", 'nohtml')).'"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'></td></tr>'."\n";
|
||||||
|
|
||||||
// Address
|
// Address
|
||||||
@ -478,36 +478,36 @@ if (!empty($conf->barcode->enabled)) {
|
|||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
print '<tr class="oddeven"><td><label for="logo">'.$form->textwithpicto($langs->trans("Logo"), 'png, jpg').'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="logo">'.$form->textwithpicto($langs->trans("Logo"), 'png, jpg').'</label></td><td>';
|
||||||
print '<table width="100%" class="nobordernopadding"><tr class="nocellnopadd"><td valign="middle" class="nocellnopadd">';
|
print '<div class="centpertent nobordernopadding valignmiddle "><div class="inline-block marginrightonly">';
|
||||||
print '<input type="file" class="flat minwidth200" name="logo" id="logo" accept="image/*">';
|
print '<input type="file" class="flat minwidth200" name="logo" id="logo" accept="image/*">';
|
||||||
print '</td><td class="nocellnopadd right" valign="middle">';
|
print '</div><div class="inline-block valignmiddle marginrightonly">';
|
||||||
if (!empty($mysoc->logo_mini)) {
|
if (!empty($mysoc->logo_mini)) {
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogo">'.img_delete($langs->trans("Delete")).'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogo">'.img_delete($langs->trans("Delete")).'</a>';
|
||||||
if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) {
|
if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) {
|
||||||
print ' ';
|
print '</div><div class="inline-block valignmiddle">';
|
||||||
print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_mini).'">';
|
print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_mini).'">';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
|
print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
|
||||||
}
|
}
|
||||||
print '</td></tr></table>';
|
print '</div>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Logo (squarred)
|
// Logo (squarred)
|
||||||
print '<tr class="oddeven"><td><label for="logo_squarred">'.$form->textwithpicto($langs->trans("LogoSquarred"), 'png, jpg').'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="logo_squarred">'.$form->textwithpicto($langs->trans("LogoSquarred"), 'png, jpg').'</label></td><td>';
|
||||||
print '<table width="100%" class="nobordernopadding"><tr class="nocellnopadd"><td valign="middle" class="nocellnopadd">';
|
print '<div class="centpertent nobordernopadding valignmiddle"><div class="inline-block marginrightonly">';
|
||||||
print '<input type="file" class="flat minwidth200" name="logo_squarred" id="logo_squarred" accept="image/*">';
|
print '<input type="file" class="flat minwidth200" name="logo_squarred" id="logo_squarred" accept="image/*">';
|
||||||
print '</td><td class="nocellnopadd right" valign="middle">';
|
print '</div><div class="inline-block valignmiddle marginrightonly">';
|
||||||
if (!empty($mysoc->logo_squarred_mini)) {
|
if (!empty($mysoc->logo_squarred_mini)) {
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogosquarred">'.img_delete($langs->trans("Delete")).'</a>';
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=removelogosquarred">'.img_delete($langs->trans("Delete")).'</a>';
|
||||||
if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) {
|
if (file_exists($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) {
|
||||||
print ' ';
|
print '</div><div class="inline-block valignmiddle marginrightonly">';
|
||||||
print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini).'">';
|
print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini).'">';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
|
print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">';
|
||||||
}
|
}
|
||||||
print '</td></tr></table>';
|
print '</div>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Note
|
// Note
|
||||||
|
|||||||
@ -201,14 +201,14 @@ print '<div class="div-table-responsive-no-min">';
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '')."\n";
|
print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '')."\n";
|
||||||
print '<td>'.$langs->trans("Value").'</td>';
|
print getTitleFieldOfList("Value", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder);
|
||||||
print '<td>'.$langs->trans("Comment").'</td>';
|
print getTitleFieldOfList("Comment", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder);
|
||||||
print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
||||||
if (! empty($conf->multicompany->enabled) && !$user->entity)
|
if (! empty($conf->multicompany->enabled) && !$user->entity)
|
||||||
{
|
{
|
||||||
print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
||||||
}
|
}
|
||||||
print '<td class="center">'.$langs->trans("Action").'</td>';
|
print getTitleFieldOfList("Action", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -87,7 +87,10 @@ if ($action == 'edit')
|
|||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
$tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
|
$tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
|
||||||
$label = $langs->trans($key);
|
$label = $langs->trans($key);
|
||||||
if ($key == 'DAV_RESTICT_ON_IP') $label = $langs->trans("RESTRICT_ON_IP");
|
if ($key == 'DAV_RESTICT_ON_IP') {
|
||||||
|
$label = $langs->trans("RESTRICT_ON_IP");
|
||||||
|
$label .= ' '.$langs->trans("Example").': '.$langs->trans("IPListExample");
|
||||||
|
}
|
||||||
print $form->textwithpicto($label, $tooltiphelp);
|
print $form->textwithpicto($label, $tooltiphelp);
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($key == 'DAV_ALLOW_PRIVATE_DIR')
|
if ($key == 'DAV_ALLOW_PRIVATE_DIR')
|
||||||
@ -124,7 +127,10 @@ else
|
|||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
$tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
|
$tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
|
||||||
$label = $langs->trans($key);
|
$label = $langs->trans($key);
|
||||||
if ($key == 'DAV_RESTICT_ON_IP') $label = $langs->trans("RESTRICT_ON_IP");
|
if ($key == 'DAV_RESTICT_ON_IP') {
|
||||||
|
$label = $langs->trans("RESTRICT_ON_IP");
|
||||||
|
$label .= ' '.$langs->trans("Example").': '.$langs->trans("IPListExample");
|
||||||
|
}
|
||||||
print $form->textwithpicto($label, $tooltiphelp);
|
print $form->textwithpicto($label, $tooltiphelp);
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
if ($key == 'DAV_ALLOW_PRIVATE_DIR')
|
if ($key == 'DAV_ALLOW_PRIVATE_DIR')
|
||||||
|
|||||||
@ -231,7 +231,9 @@ if ($action == 'confirm_collect')
|
|||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$formfile = new FormFile($db);
|
$formfile = new FormFile($db);
|
||||||
|
|
||||||
llxHeader('', 'EmailCollector', '');
|
$help_url="EN:Module_EMail_Collector|FR:Module_Collecteur_de_courrier_électronique|ES:Module_EMail_Collector";
|
||||||
|
|
||||||
|
llxHeader('', 'EmailCollector', $help_url);
|
||||||
|
|
||||||
// Example : Adding jquery code
|
// Example : Adding jquery code
|
||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
@ -573,6 +575,18 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
'recordevent'=>'RecordEvent');
|
'recordevent'=>'RecordEvent');
|
||||||
if ($conf->projet->enabled) $arrayoftypes['project'] = 'CreateLeadAndThirdParty';
|
if ($conf->projet->enabled) $arrayoftypes['project'] = 'CreateLeadAndThirdParty';
|
||||||
if ($conf->ticket->enabled) $arrayoftypes['ticket'] = 'CreateTicketAndThirdParty';
|
if ($conf->ticket->enabled) $arrayoftypes['ticket'] = 'CreateTicketAndThirdParty';
|
||||||
|
|
||||||
|
// support hook for add action
|
||||||
|
$parameters = array( 'arrayoftypes' => $arrayoftypes ) ;
|
||||||
|
$res = $hookmanager->executeHooks('addMoreActionsEmailCollector', $parameters, $object, $action);
|
||||||
|
|
||||||
|
if($res)
|
||||||
|
$arrayoftypes = $hookmanager->resArray;
|
||||||
|
else
|
||||||
|
foreach($hookmanager->resArray as $k=>$desc)
|
||||||
|
$arrayoftypes[$k]=$desc;
|
||||||
|
|
||||||
|
|
||||||
print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', 'maxwidth300');
|
print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', 'maxwidth300');
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
print '<input type="text" name="operationparam">';
|
print '<input type="text" name="operationparam">';
|
||||||
|
|||||||
@ -170,10 +170,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
$now = dol_now();
|
$help_url="EN:Module_EMail_Collector|FR:Module_Collecteur_de_courrier_électronique|ES:Module_EMail_Collector";
|
||||||
|
|
||||||
//$help_url="EN:Module_EmailCollector|FR:Module_EmailCollector_FR|ES:Módulo_EmailCollector";
|
|
||||||
$help_url = '';
|
|
||||||
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("EmailCollector"));
|
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("EmailCollector"));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -58,6 +58,13 @@ if (GETPOST('cancel', 'alpha'))
|
|||||||
$action='';
|
$action='';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert action set_XXX and del_XXX to set var (this is used when no javascript on for ajax_constantonoff)
|
||||||
|
$regs = array();
|
||||||
|
if (preg_match('/^(set|del)_([A-Z_]+)$/', $action, $regs)) {
|
||||||
|
if ($regs[1] == 'set') dolibarr_set_const($db, $regs[2], 1, 'chaine', 0, '', $conf->entity);
|
||||||
|
else dolibarr_del_const($db, $regs[2], $conf->entity);
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'removebackgroundlogin' && ! empty($conf->global->MAIN_LOGIN_BACKGROUND))
|
if ($action == 'removebackgroundlogin' && ! empty($conf->global->MAIN_LOGIN_BACKGROUND))
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV+1, 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV+1, 'chaine', 0, '', $conf->entity);
|
||||||
@ -81,15 +88,15 @@ if ($action == 'removebackgroundlogin' && ! empty($conf->global->MAIN_LOGIN_BACK
|
|||||||
|
|
||||||
if ($action == 'update')
|
if ($action == 'update')
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", $_POST["MAIN_LANG_DEFAULT"], 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", GETPOST("MAIN_LANG_DEFAULT", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV+1, 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV+1, 'chaine', 0, '', $conf->entity);
|
||||||
//dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["MAIN_MULTILANGS"], 'chaine', 0, '', $conf->entity);
|
//dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["MAIN_MULTILANGS"], 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"], 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_THEME", GETPOST("main_theme", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
$val=GETPOST('THEME_TOPMENU_DISABLE_IMAGE');
|
/*$val=GETPOST('THEME_TOPMENU_DISABLE_IMAGE');
|
||||||
if (! $val) dolibarr_del_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', $conf->entity);
|
if (! $val) dolibarr_del_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', $conf->entity);
|
||||||
else dolibarr_set_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', GETPOST('THEME_TOPMENU_DISABLE_IMAGE'), 'chaine', 0, '', $conf->entity);
|
else dolibarr_set_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', GETPOST('THEME_TOPMENU_DISABLE_IMAGE'), 'chaine', 0, '', $conf->entity);*/
|
||||||
|
|
||||||
$val=(implode(',', (colorStringToArray(GETPOST('THEME_ELDY_BACKBODY'), array()))));
|
$val=(implode(',', (colorStringToArray(GETPOST('THEME_ELDY_BACKBODY'), array()))));
|
||||||
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKBODY', $conf->entity);
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKBODY', $conf->entity);
|
||||||
@ -141,25 +148,27 @@ if ($action == 'update')
|
|||||||
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_USE_CHECKED', $conf->entity);
|
if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_USE_CHECKED', $conf->entity);
|
||||||
else dolibarr_set_const($db, "THEME_ELDY_USE_CHECKED", $val, 'chaine', 0, '', $conf->entity);
|
else dolibarr_set_const($db, "THEME_ELDY_USE_CHECKED", $val, 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"], 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", GETPOST("main_size_liste_limit", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_SIZE_SHORTLIST_LIMIT", $_POST["main_size_shortliste_limit"], 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_SIZE_SHORTLIST_LIMIT", GETPOST("main_size_shortliste_limit", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["MAIN_DISABLE_JAVASCRIPT"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", $_POST["MAIN_BUTTON_HIDE_UNAUTHORIZED"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_START_WEEK", $_POST["MAIN_START_WEEK"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", $_POST["MAIN_DEFAULT_WORKING_DAYS"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"], 'chaine', 0, '', $conf->entity);
|
|
||||||
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"], 'chaine', 0, '', $conf->entity);
|
|
||||||
|
|
||||||
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", $_POST["MAIN_HELPCENTER_DISABLELINK"], 'chaine', 0, '', 0); // Param for all entities
|
//dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", GETPOST("MAIN_DISABLE_JAVASCRIPT", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", GETPOST("MAIN_BUTTON_HIDE_UNAUTHORIZED", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]), 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_START_WEEK", GETPOST("MAIN_START_WEEK", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"], 'chaine', 0, '', 0); // Param for all entities
|
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", GETPOST("MAIN_DEFAULT_WORKING_DAYS", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"], 'chaine', 0, '', $conf->entity);
|
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", GETPOST("MAIN_DEFAULT_WORKING_HOURS", 'int'), 'chaine', 0, '', $conf->entity);
|
||||||
|
//dolibarr_set_const($db, "MAIN_SHOW_LOGO", GETPOST("MAIN_SHOW_LOGO", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", GETPOST("MAIN_FIRSTNAME_NAME_POSITION", 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
|
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", GETPOST('MAIN_HELPCENTER_DISABLELINK', 'aZ09'), 'chaine', 0, '', 0); // Param for all entities
|
||||||
|
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr(GETPOST("main_motd", 'none')), 'chaine', 0, '', $conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr(GETPOST("main_home", 'none')), 'chaine', 0, '', $conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", GETPOST("MAIN_HELP_DISABLELINK", 'aZ09'), 'chaine', 0, '', 0); // Param for all entities
|
||||||
|
dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", GETPOST('MAIN_BUGTRACK_ENABLELINK', 'aZ09'), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
$varforimage='imagebackground'; $dirforimage=$conf->mycompany->dir_output.'/logos/';
|
$varforimage='imagebackground'; $dirforimage=$conf->mycompany->dir_output.'/logos/';
|
||||||
if ($_FILES[$varforimage]["tmp_name"])
|
if ($_FILES[$varforimage]["tmp_name"])
|
||||||
{
|
{
|
||||||
|
$reg = array();
|
||||||
if (preg_match('/([^\\/:]+)$/i', $_FILES[$varforimage]["name"], $reg))
|
if (preg_match('/([^\\/:]+)$/i', $_FILES[$varforimage]["name"], $reg))
|
||||||
{
|
{
|
||||||
$original_file=$reg[1];
|
$original_file=$reg[1];
|
||||||
@ -248,7 +257,7 @@ print '</tr>';
|
|||||||
|
|
||||||
// Multilingual GUI
|
// Multilingual GUI
|
||||||
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans("EnableMultilangInterface").'</td><td>';
|
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans("EnableMultilangInterface").'</td><td>';
|
||||||
print ajax_constantonoff('MAIN_MULTILANGS');
|
print ajax_constantonoff("MAIN_MULTILANGS", array(), $conf->entity, 0, 0, 1, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -267,7 +276,7 @@ print '</tr>';
|
|||||||
|
|
||||||
// Disable javascript and ajax
|
// Disable javascript and ajax
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DisableJavascript").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DisableJavascript").'</td><td>';
|
||||||
print $form->selectyesno('MAIN_DISABLE_JAVASCRIPT', isset($conf->global->MAIN_DISABLE_JAVASCRIPT)?$conf->global->MAIN_DISABLE_JAVASCRIPT:0, 1);
|
print ajax_constantonoff("MAIN_DISABLE_JAVASCRIPT", array(), $conf->entity, 0, 0, 1, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -25,6 +25,8 @@
|
|||||||
* \file htdocs/api/admin/explorer.php
|
* \file htdocs/api/admin/explorer.php
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Luracast\Restler\Routes;
|
||||||
|
|
||||||
require_once '../../main.inc.php';
|
require_once '../../main.inc.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.'/api/class/api.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/api/class/api.class.php';
|
||||||
|
|||||||
@ -96,7 +96,7 @@ llxHeader();
|
|||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print load_fiche_titre($langs->trans("ApiSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("ApiSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
print $langs->trans("ApiDesc")."<br>\n";
|
print '<span class="opacitymedium">'.$langs->trans("ApiDesc")."</span><br>\n";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
@ -130,7 +130,9 @@ print '<td> </td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("RESTRICT_API_ON_IP").'</td>';
|
print '<td>'.$langs->trans("RESTRICT_ON_IP");
|
||||||
|
print ' '.$langs->trans("Example").': '.$langs->trans("IPListExample");
|
||||||
|
print '</td>';
|
||||||
print '<td><input type="text" name="API_RESTRICT_ON_IP" value="'.dol_escape_htmltag($conf->global->API_RESTRICT_ON_IP).'"></td>';
|
print '<td><input type="text" name="API_RESTRICT_ON_IP" value="'.dol_escape_htmltag($conf->global->API_RESTRICT_ON_IP).'"></td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="submit" class="button" name="save" value="'.dol_escape_htmltag($langs->trans("Save")).'"></td>';
|
print '<input type="submit" class="button" name="save" value="'.dol_escape_htmltag($langs->trans("Save")).'"></td>';
|
||||||
|
|||||||
@ -80,7 +80,18 @@ class Documents extends DolibarrApi
|
|||||||
//--- Finds and returns the document
|
//--- Finds and returns the document
|
||||||
$entity = $conf->entity;
|
$entity = $conf->entity;
|
||||||
|
|
||||||
$check_access = dol_check_secure_access_document($modulepart, $original_file, $entity, DolibarrApiAccess::$user, '', 'read');
|
// Special cases that need to use get_exdir to get real dir of object
|
||||||
|
// If future, all object should use this to define path of documents.
|
||||||
|
/*
|
||||||
|
$tmpreldir = '';
|
||||||
|
if ($modulepart == 'supplier_invoice') {
|
||||||
|
$tmpreldir = get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier');
|
||||||
|
}
|
||||||
|
|
||||||
|
$relativefile = $tmpreldir.dol_sanitizeFileName($object->ref); */
|
||||||
|
$relativefile = $original_file;
|
||||||
|
|
||||||
|
$check_access = dol_check_secure_access_document($modulepart, $relativefile, $entity, DolibarrApiAccess::$user, '', 'read');
|
||||||
$accessallowed = $check_access['accessallowed'];
|
$accessallowed = $check_access['accessallowed'];
|
||||||
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
||||||
$original_file = $check_access['original_file'];
|
$original_file = $check_access['original_file'];
|
||||||
@ -146,7 +157,18 @@ class Documents extends DolibarrApi
|
|||||||
//--- Finds and returns the document
|
//--- Finds and returns the document
|
||||||
$entity = $conf->entity;
|
$entity = $conf->entity;
|
||||||
|
|
||||||
$check_access = dol_check_secure_access_document($modulepart, $original_file, $entity, DolibarrApiAccess::$user, '', 'write');
|
// Special cases that need to use get_exdir to get real dir of object
|
||||||
|
// If future, all object should use this to define path of documents.
|
||||||
|
/*
|
||||||
|
$tmpreldir = '';
|
||||||
|
if ($modulepart == 'supplier_invoice') {
|
||||||
|
$tmpreldir = get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier');
|
||||||
|
}
|
||||||
|
|
||||||
|
$relativefile = $tmpreldir.dol_sanitizeFileName($object->ref); */
|
||||||
|
$relativefile = $original_file;
|
||||||
|
|
||||||
|
$check_access = dol_check_secure_access_document($modulepart, $relativefile, $entity, DolibarrApiAccess::$user, '', 'write');
|
||||||
$accessallowed = $check_access['accessallowed'];
|
$accessallowed = $check_access['accessallowed'];
|
||||||
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
||||||
$original_file = $check_access['original_file'];
|
$original_file = $check_access['original_file'];
|
||||||
@ -228,7 +250,7 @@ class Documents extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Return the list of documents of a dedicated element (from its ID or Ref)
|
* Return the list of documents of a dedicated element (from its ID or Ref)
|
||||||
*
|
*
|
||||||
* @param string $modulepart Name of module or area concerned ('thirdparty', 'member', 'proposal', 'order', 'invoice', 'shipment', 'project', ...)
|
* @param string $modulepart Name of module or area concerned ('thirdparty', 'member', 'proposal', 'order', 'invoice', 'supplier_invoice', 'shipment', 'project', ...)
|
||||||
* @param int $id ID of element
|
* @param int $id ID of element
|
||||||
* @param string $ref Ref of element
|
* @param string $ref Ref of element
|
||||||
* @param string $sortfield Sort criteria ('','fullname','relativename','name','date','size')
|
* @param string $sortfield Sort criteria ('','fullname','relativename','name','date','size')
|
||||||
@ -369,6 +391,24 @@ class Documents extends DolibarrApi
|
|||||||
|
|
||||||
$upload_dir = $conf->facture->dir_output."/".get_exdir(0, 0, 0, 1, $object, 'invoice');
|
$upload_dir = $conf->facture->dir_output."/".get_exdir(0, 0, 0, 1, $object, 'invoice');
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'facture_fournisseur' || $modulepart == 'supplier_invoice')
|
||||||
|
{
|
||||||
|
$modulepart = 'supplier_invoice';
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
|
|
||||||
|
if (!DolibarrApiAccess::$user->rights->fournisseur->facture->lire) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
$object = new FactureFournisseur($this->db);
|
||||||
|
$result = $object->fetch($id, $ref);
|
||||||
|
if (!$result) {
|
||||||
|
throw new RestException(404, 'Invoice not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$upload_dir = $conf->fournisseur->dir_output."/facture/".get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier').dol_sanitizeFileName($object->ref);
|
||||||
|
}
|
||||||
elseif ($modulepart == 'produit' || $modulepart == 'product')
|
elseif ($modulepart == 'produit' || $modulepart == 'product')
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
@ -401,6 +441,22 @@ class Documents extends DolibarrApi
|
|||||||
|
|
||||||
$upload_dir = $conf->agenda->dir_output.'/'.dol_sanitizeFileName($object->ref);
|
$upload_dir = $conf->agenda->dir_output.'/'.dol_sanitizeFileName($object->ref);
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'expensereport')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
|
|
||||||
|
if (!DolibarrApiAccess::$user->rights->expensereport->read && !DolibarrApiAccess::$user->rights->expensereport->read) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
$object = new ExpenseReport($this->db);
|
||||||
|
$result = $object->fetch($id, $ref);
|
||||||
|
if (!$result) {
|
||||||
|
throw new RestException(404, 'Expense report not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$upload_dir = $conf->expensereport->dir_output.'/'.dol_sanitizeFileName($object->ref);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new RestException(500, 'Modulepart '.$modulepart.' not implemented yet.');
|
throw new RestException(500, 'Modulepart '.$modulepart.' not implemented yet.');
|
||||||
@ -432,8 +488,9 @@ class Documents extends DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Upload a file.
|
* Upload a file.
|
||||||
*
|
*
|
||||||
* Test sample 1: { "filename": "mynewfile.txt", "modulepart": "facture", "ref": "FA1701-001", "subdir": "", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
|
* Test sample for invoice: { "filename": "mynewfile.txt", "modulepart": "invoice", "ref": "FA1701-001", "subdir": "", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
|
||||||
* Test sample 2: { "filename": "mynewfile.txt", "modulepart": "medias", "ref": "", "subdir": "image/mywebsite", "filecontent": "Y29udGVudCB0ZXh0Cg==", "fileencoding": "base64", "overwriteifexists": "0" }.
|
* Test sample for supplier invoice: { "filename": "mynewfile.txt", "modulepart": "supplier_invoice", "ref": "FA1701-001", "subdir": "", "filecontent": "content text", "fileencoding": "", "overwriteifexists": "0" }.
|
||||||
|
* Test sample for medias file: { "filename": "mynewfile.txt", "modulepart": "medias", "ref": "", "subdir": "image/mywebsite", "filecontent": "Y29udGVudCB0ZXh0Cg==", "fileencoding": "base64", "overwriteifexists": "0" }.
|
||||||
*
|
*
|
||||||
* @param string $filename Name of file to create ('FA1705-0123.txt')
|
* @param string $filename Name of file to create ('FA1705-0123.txt')
|
||||||
* @param string $modulepart Name of module or area concerned by file upload ('facture', 'project', 'project_task', ...)
|
* @param string $modulepart Name of module or area concerned by file upload ('facture', 'project', 'project_task', ...)
|
||||||
@ -489,6 +546,13 @@ class Documents extends DolibarrApi
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
$object = new Facture($this->db);
|
$object = new Facture($this->db);
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'facture_fournisseur' || $modulepart == 'supplier_invoice')
|
||||||
|
{
|
||||||
|
$modulepart = 'supplier_invoice';
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
|
$object = new FactureFournisseur($this->db);
|
||||||
|
}
|
||||||
elseif ($modulepart == 'project')
|
elseif ($modulepart == 'project')
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
@ -523,6 +587,11 @@ class Documents extends DolibarrApi
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
$object = new Product($this->db);
|
$object = new Product($this->db);
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'expensereport')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
|
$object = new ExpenseReport($this->db);
|
||||||
|
}
|
||||||
// TODO Implement additional moduleparts
|
// TODO Implement additional moduleparts
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -548,6 +617,12 @@ class Documents extends DolibarrApi
|
|||||||
throw new RestException(404, 'The object '.$modulepart." with ref '".$ref."' was not found.");
|
throw new RestException(404, 'The object '.$modulepart." with ref '".$ref."' was not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special cases that need to use get_exdir to get real dir of object
|
||||||
|
// If future, all object should use this to define path of documents.
|
||||||
|
if ($modulepart == 'supplier_invoice') {
|
||||||
|
$tmpreldir = get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier');
|
||||||
|
}
|
||||||
|
|
||||||
$relativefile = $tmpreldir.dol_sanitizeFileName($object->ref);
|
$relativefile = $tmpreldir.dol_sanitizeFileName($object->ref);
|
||||||
|
|
||||||
$tmp = dol_check_secure_access_document($modulepart, $relativefile, $entity, DolibarrApiAccess::$user, $ref, 'write');
|
$tmp = dol_check_secure_access_document($modulepart, $relativefile, $entity, DolibarrApiAccess::$user, $ref, 'write');
|
||||||
@ -643,7 +718,18 @@ class Documents extends DolibarrApi
|
|||||||
//--- Finds and returns the document
|
//--- Finds and returns the document
|
||||||
$entity = $conf->entity;
|
$entity = $conf->entity;
|
||||||
|
|
||||||
$check_access = dol_check_secure_access_document($modulepart, $original_file, $entity, DolibarrApiAccess::$user, '', 'read');
|
// Special cases that need to use get_exdir to get real dir of object
|
||||||
|
// If future, all object should use this to define path of documents.
|
||||||
|
/*
|
||||||
|
$tmpreldir = '';
|
||||||
|
if ($modulepart == 'supplier_invoice') {
|
||||||
|
$tmpreldir = get_exdir($object->id, 2, 0, 0, $object, 'invoice_supplier');
|
||||||
|
}
|
||||||
|
|
||||||
|
$relativefile = $tmpreldir.dol_sanitizeFileName($object->ref); */
|
||||||
|
$relativefile = $original_file;
|
||||||
|
|
||||||
|
$check_access = dol_check_secure_access_document($modulepart, $relativefile, $entity, DolibarrApiAccess::$user, '', 'read');
|
||||||
$accessallowed = $check_access['accessallowed'];
|
$accessallowed = $check_access['accessallowed'];
|
||||||
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
$sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals'];
|
||||||
$original_file = $check_access['original_file'];
|
$original_file = $check_access['original_file'];
|
||||||
|
|||||||
@ -554,6 +554,70 @@ class Setup extends DolibarrApi
|
|||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of Expense Report types.
|
||||||
|
*
|
||||||
|
* @param string $sortfield Sort field
|
||||||
|
* @param string $sortorder Sort order
|
||||||
|
* @param int $limit Number of items per page
|
||||||
|
* @param int $page Page number (starting from zero)
|
||||||
|
* @param string $module To filter on module
|
||||||
|
* @param int $active Event's type is active or not {@min 0} {@max 1}
|
||||||
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.code:like:'A%') and (t.active:>=:0)"
|
||||||
|
* @return array List of expense report types
|
||||||
|
*
|
||||||
|
* @url GET dictionary/expensereport_types
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
public function getListOfExpenseReportsTypes($sortfield = "code", $sortorder = 'ASC', $limit = 100, $page = 0, $module = '', $active = 1, $sqlfilters = '')
|
||||||
|
{
|
||||||
|
$list = array();
|
||||||
|
|
||||||
|
$sql = "SELECT id, code, label, accountancy_code, active, module, position";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_type_fees as t";
|
||||||
|
$sql .= " WHERE t.active = ".$active;
|
||||||
|
if ($module) $sql .= " AND t.module LIKE '%".$this->db->escape($module)."%'";
|
||||||
|
// Add sql filters
|
||||||
|
if ($sqlfilters)
|
||||||
|
{
|
||||||
|
if (!DolibarrApi::_checkFilters($sqlfilters))
|
||||||
|
{
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
||||||
|
}
|
||||||
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
||||||
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$sql .= $this->db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
|
if ($limit) {
|
||||||
|
if ($page < 0) {
|
||||||
|
$page = 0;
|
||||||
|
}
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
$sql .= $this->db->plimit($limit, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
$num = $this->db->num_rows($result);
|
||||||
|
$min = min($num, ($limit <= 0 ? $num : $limit));
|
||||||
|
for ($i = 0; $i < $min; $i++) {
|
||||||
|
$list[] = $this->db->fetch_object($result);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new RestException(503, 'Error when retrieving list of expense report types : '.$this->db->lasterror());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of contacts types.
|
* Get the list of contacts types.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -278,6 +278,7 @@ dol_htmloutput_errors($mesg);
|
|||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||||
print '<input type="hidden" name="mode" value="label">';
|
print '<input type="hidden" name="mode" value="label">';
|
||||||
print '<input type="hidden" name="action" value="builddoc">';
|
print '<input type="hidden" name="action" value="builddoc">';
|
||||||
|
print '<input type="hidden" name="token" value="'.newtoken().'">';
|
||||||
|
|
||||||
print '<div class="tagtable">';
|
print '<div class="tagtable">';
|
||||||
|
|
||||||
|
|||||||
@ -520,7 +520,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '<table class="border centpercent tableforfield">'."\n";
|
print '<table class="border centpercent tableforfield">'."\n";
|
||||||
|
|
||||||
// Common attributes
|
// Common attributes
|
||||||
$keyforbreak = 'efficiency';
|
$keyforbreak = 'duration';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
|
||||||
|
|
||||||
// Other attributes
|
// Other attributes
|
||||||
|
|||||||
@ -95,7 +95,7 @@ class BOM extends CommonObject
|
|||||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-1, 'position'=>60, 'notnull'=>-1,),
|
||||||
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp'),
|
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:1:(finished IS NULL or finished <> 0)', 'label'=>'Product', 'enabled'=>1, 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'help'=>'ProductBOMHelp'),
|
||||||
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
|
'qty' => array('type'=>'real', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'default'=>1, 'position'=>55, 'notnull'=>1, 'isameasure'=>'1', 'css'=>'maxwidth75imp'),
|
||||||
'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLoss'),
|
//'efficiency' => array('type'=>'real', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>-1, 'default'=>1, 'position'=>100, 'notnull'=>0, 'css'=>'maxwidth50imp', 'help'=>'ValueOfMeansLossForProductProduced'),
|
||||||
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
'duration' => array('type'=>'duration', 'label'=>'EstimatedDuration', 'enabled'=>1, 'visible'=>-1, 'position'=>101, 'notnull'=>-1, 'css'=>'maxwidth50imp', 'help'=>'EstimatedDurationDesc'),
|
||||||
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'enabled'=>1, 'visible'=>-1, 'position'=>102),
|
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'enabled'=>1, 'visible'=>-1, 'position'=>102),
|
||||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>-2, 'position'=>161, 'notnull'=>-1,),
|
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>-2, 'position'=>161, 'notnull'=>-1,),
|
||||||
@ -561,7 +561,7 @@ class BOM extends CommonObject
|
|||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = dol_sanitizeFileName($num);
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element;
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element;
|
||||||
@ -1056,7 +1056,7 @@ class BOMLine extends CommonObjectLine
|
|||||||
'qty' => array('type'=>'double(24,8)', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'position'=>100, 'notnull'=>1, 'isameasure'=>'1',),
|
'qty' => array('type'=>'double(24,8)', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>1, 'position'=>100, 'notnull'=>1, 'isameasure'=>'1',),
|
||||||
'qty_frozen' => array('type'=>'smallint', 'label'=>'QuantityFrozen', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>105, 'css'=>'maxwidth50imp', 'help'=>'QuantityConsumedInvariable'),
|
'qty_frozen' => array('type'=>'smallint', 'label'=>'QuantityFrozen', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>105, 'css'=>'maxwidth50imp', 'help'=>'QuantityConsumedInvariable'),
|
||||||
'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'),
|
'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'),
|
||||||
//'efficiency' => array('type'=>'double(24,8)', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'position'=>110, 'notnull'=>1, 'css'=>'maxwidth50imp', 'help'=>'ValueOfEfficiencyConsumedMeans'),
|
'efficiency' => array('type'=>'double(24,8)', 'label'=>'ManufacturingEfficiency', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'position'=>110, 'notnull'=>1, 'css'=>'maxwidth50imp', 'help'=>'ValueOfEfficiencyConsumedMeans'),
|
||||||
'position' => array('type'=>'integer', 'label'=>'Rank', 'enabled'=>1, 'visible'=>0, 'default'=>0, 'position'=>200, 'notnull'=>1,),
|
'position' => array('type'=>'integer', 'label'=>'Rank', 'enabled'=>1, 'visible'=>0, 'default'=>0, 'position'=>200, 'notnull'=>1,),
|
||||||
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>1000, 'notnull'=>-1,),
|
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>1000, 'notnull'=>-1,),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -98,11 +98,11 @@ if (!empty($conf->product->enabled) || !empty($conf->service->enabled))
|
|||||||
if (!empty($conf->global->ENTREPOT_EXTRA_STATUS))
|
if (!empty($conf->global->ENTREPOT_EXTRA_STATUS))
|
||||||
{
|
{
|
||||||
// hide products in closed warehouse, but show products for internal transfer
|
// hide products in closed warehouse, but show products for internal transfer
|
||||||
$form->select_produits(GETPOST('idprod'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, 'warehouseopen,warehouseinternal', GETPOST('combinations', 'array'));
|
$form->select_produits(GETPOST('idprod', 'int'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, 'warehouseopen,warehouseinternal', GETPOST('combinations', 'array'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$form->select_produits(GETPOST('idprod'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, '', GETPOST('combinations', 'array'));
|
$form->select_produits(GETPOST('idprod', 'int'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, $statustoshow, 2, '', 1, array(), $buyer->id, '1', 0, 'maxwidth500', 0, '', GETPOST('combinations', 'array'));
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '</span>';
|
echo '</span>';
|
||||||
@ -128,11 +128,10 @@ $coldisplay++;
|
|||||||
print '<td class="bordertop nobottom linecoldisablestockchange right"><input type="checkbox" name="disable_stock_change" id="disable_stock_change" class="flat right" value="1"'.(GETPOST("disable_stock_change", 'alpha') ? ' checked="checked"' : '').'">';
|
print '<td class="bordertop nobottom linecoldisablestockchange right"><input type="checkbox" name="disable_stock_change" id="disable_stock_change" class="flat right" value="1"'.(GETPOST("disable_stock_change", 'alpha') ? ' checked="checked"' : '').'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
//$coldisplay++;
|
$coldisplay++;
|
||||||
//print '<td class="bordertop nobottom nowrap linecollost right">';
|
print '<td class="bordertop nobottom nowrap linecollost right">';
|
||||||
//print '<input type="text" size="1" name="efficiency" id="efficiency" class="flat right" value="'.(GETPOSTISSET("efficiency")?GETPOST("efficiency", 'alpha'):1).'">';
|
print '<input type="text" size="1" name="efficiency" id="efficiency" class="flat right" value="'.(GETPOSTISSET("efficiency")?GETPOST("efficiency", 'alpha'):1).'">';
|
||||||
//print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|
||||||
$coldisplay += $colspan;
|
$coldisplay += $colspan;
|
||||||
print '<td class="bordertop nobottom linecoledit center valignmiddle" colspan="'.$colspan.'">';
|
print '<td class="bordertop nobottom linecoledit center valignmiddle" colspan="'.$colspan.'">';
|
||||||
@ -141,7 +140,7 @@ print '</td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if (is_object($objectline)) {
|
if (is_object($objectline)) {
|
||||||
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1);
|
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@ -124,9 +124,9 @@ $coldisplay++;
|
|||||||
print '<td class="nobottom linecoldisablestockchange right"><input type="checkbox" name="disable_stock_change" id="disable_stock_change" class="flat right" value="1"'.(GETPOSTISSET('disablestockchange')?(GETPOST("disable_stock_change", 'int')?' checked="checked"':''):($line->disable_stock_change?' checked="checked"':'')).'">';
|
print '<td class="nobottom linecoldisablestockchange right"><input type="checkbox" name="disable_stock_change" id="disable_stock_change" class="flat right" value="1"'.(GETPOSTISSET('disablestockchange')?(GETPOST("disable_stock_change", 'int')?' checked="checked"':''):($line->disable_stock_change?' checked="checked"':'')).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
//$coldisplay++;
|
$coldisplay++;
|
||||||
//print '<td class="nobottom nowrap linecollost right">';
|
print '<td class="nobottom nowrap linecollost right">';
|
||||||
//print '<input type="text" size="1" name="efficiency" id="efficiency" class="flat right" value="'.$line->efficiency.'"></td>';
|
print '<input type="text" size="1" name="efficiency" id="efficiency" class="flat right" value="'.$line->efficiency.'"></td>';
|
||||||
|
|
||||||
$coldisplay+=$colspan;
|
$coldisplay+=$colspan;
|
||||||
print '<td class="nobottom linecoledit center valignmiddle" colspan="'.$colspan.'">';
|
print '<td class="nobottom linecoledit center valignmiddle" colspan="'.$colspan.'">';
|
||||||
@ -138,7 +138,7 @@ print '</td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if (is_object($objectline)) {
|
if (is_object($objectline)) {
|
||||||
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1);
|
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n";
|
print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n";
|
||||||
|
|||||||
@ -66,7 +66,7 @@ print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('QtyFro
|
|||||||
print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('DisableStockChange'), $langs->trans('DisableStockChangeHelp')).'</td>';
|
print '<td class="linecolqty right">'.$form->textwithpicto($langs->trans('DisableStockChange'), $langs->trans('DisableStockChangeHelp')).'</td>';
|
||||||
|
|
||||||
// Efficiency
|
// Efficiency
|
||||||
//print '<td class="linecollost right">'.$form->textwithpicto($langs->trans('ManufacturingEfficiency'), $langs->trans('XXX')).'</td>';
|
print '<td class="linecollost right">'.$form->textwithpicto($langs->trans('ManufacturingEfficiency'), $langs->trans('ValueOfMeansLoss')).'</td>';
|
||||||
|
|
||||||
print '<td class="linecoledit"></td>'; // No width to allow autodim
|
print '<td class="linecoledit"></td>'; // No width to allow autodim
|
||||||
|
|
||||||
|
|||||||
@ -98,10 +98,10 @@ $coldisplay++;
|
|||||||
echo $line->disable_stock_change ? yn($line->disable_stock_change) : ''; // Yes, it is a quantity, not a price, but we just want the formating role of function price
|
echo $line->disable_stock_change ? yn($line->disable_stock_change) : ''; // Yes, it is a quantity, not a price, but we just want the formating role of function price
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
//print '<td class="linecolqty nowrap right">';
|
print '<td class="linecolefficiency nowrap right">';
|
||||||
//$coldisplay++;
|
$coldisplay++;
|
||||||
//echo $line->efficiency;
|
echo $line->efficiency;
|
||||||
//print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines' ) {
|
if ($this->status == 0 && ($object_rights->write) && $action != 'selectlines' ) {
|
||||||
print '<td class="linecoledit center">';
|
print '<td class="linecoledit center">';
|
||||||
@ -156,7 +156,7 @@ print '</tr>';
|
|||||||
//Line extrafield
|
//Line extrafield
|
||||||
if (!empty($extrafields))
|
if (!empty($extrafields))
|
||||||
{
|
{
|
||||||
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1);
|
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
||||||
|
|||||||
@ -65,7 +65,7 @@ function printDropdownBookmarksList()
|
|||||||
|
|
||||||
// Url to list bookmark
|
// Url to list bookmark
|
||||||
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
||||||
$listbtn.= '<span class="fa fa-list"></span> '.$langs->trans('Bookmarks').'</a>';
|
$listbtn .= '<span class="fa fa-list paddingright"></span>'.$langs->trans('Bookmarks').'</a>';
|
||||||
|
|
||||||
// Url to go on create new bookmark page
|
// Url to go on create new bookmark page
|
||||||
$newbtn = '';
|
$newbtn = '';
|
||||||
@ -74,7 +74,7 @@ function printDropdownBookmarksList()
|
|||||||
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url);
|
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url);
|
||||||
$urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url);
|
$urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url);
|
||||||
$newbtn .= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >';
|
$newbtn .= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >';
|
||||||
$newbtn.= img_picto('', 'bookmark').' '.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>';
|
$newbtn .= img_picto('', 'bookmark', '', false, 0, 0, '', 'paddingright').dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$bookmarkList = '<div id="dropdown-bookmarks-list" >';
|
$bookmarkList = '<div id="dropdown-bookmarks-list" >';
|
||||||
|
|||||||
@ -167,7 +167,8 @@ class Categorie extends CommonObject
|
|||||||
'member' => 'adherent',
|
'member' => 'adherent',
|
||||||
'contact' => 'socpeople',
|
'contact' => 'socpeople',
|
||||||
'user' => 'user',
|
'user' => 'user',
|
||||||
'account' => 'bank_account',
|
'account' => 'bank_account', // old for bank account
|
||||||
|
'bank_account' => 'bank_account',
|
||||||
'project' => 'projet',
|
'project' => 'projet',
|
||||||
'warehouse'=> 'entrepot',
|
'warehouse'=> 'entrepot',
|
||||||
'actioncomm' => 'actioncomm',
|
'actioncomm' => 'actioncomm',
|
||||||
@ -774,7 +775,7 @@ class Categorie extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Return list of fetched instance of elements having this category
|
* Return list of fetched instance of elements having this category
|
||||||
*
|
*
|
||||||
* @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member')
|
* @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member', ...)
|
||||||
* @param int $onlyids Return only ids of objects (consume less memory)
|
* @param int $onlyids Return only ids of objects (consume less memory)
|
||||||
* @param int $limit Limit
|
* @param int $limit Limit
|
||||||
* @param int $offset Offset
|
* @param int $offset Offset
|
||||||
@ -1957,4 +1958,56 @@ class Categorie extends CommonObject
|
|||||||
|
|
||||||
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables, 1);
|
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the addtional SQL JOIN query for filtering a list by a category
|
||||||
|
*
|
||||||
|
* @param string $type The category type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param string $rowIdName The name of the row id inside the whole sql query (e.g. "e.rowid")
|
||||||
|
* @return string A additional SQL JOIN query
|
||||||
|
*/
|
||||||
|
public static function getFilterJoinQuery($type, $rowIdName)
|
||||||
|
{
|
||||||
|
return " LEFT JOIN ".MAIN_DB_PREFIX."categorie_".$type." as cp"
|
||||||
|
. " ON ".$rowIdName." = cp.fk_".$type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the addtional SQL SELECT query for filtering a list by a category
|
||||||
|
*
|
||||||
|
* @param string $type The category type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param string $rowIdName The name of the row id inside the whole sql query (e.g. "e.rowid")
|
||||||
|
* @param Array $searchList A list with the selected categories
|
||||||
|
* @return string A additional SQL SELECT query
|
||||||
|
*/
|
||||||
|
public static function getFilterSelectQuery($type, $rowIdName, $searchList)
|
||||||
|
{
|
||||||
|
if (empty($searchList) && !is_array($searchList))
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($searchList as $searchCategory)
|
||||||
|
{
|
||||||
|
if (intval($searchCategory) == -2)
|
||||||
|
{
|
||||||
|
$searchCategorySqlList[] = " cp.fk_categorie IS NULL";
|
||||||
|
}
|
||||||
|
elseif (intval($searchCategory) > 0)
|
||||||
|
{
|
||||||
|
$searchCategorySqlList[] = " ".$rowIdName
|
||||||
|
." IN (SELECT fk_".$type." FROM ".MAIN_DB_PREFIX."categorie_".$type
|
||||||
|
." WHERE fk_categorie = ".$searchCategory.")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($searchCategorySqlList))
|
||||||
|
{
|
||||||
|
return " AND (".implode(' AND ', $searchCategorySqlList).")";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -182,23 +182,13 @@ foreach ($fulltree as $key => $val)
|
|||||||
$li = $categstatic->getNomUrl(1, '', 60);
|
$li = $categstatic->getNomUrl(1, '', 60);
|
||||||
$desc = dol_htmlcleanlastbr($val['description']);
|
$desc = dol_htmlcleanlastbr($val['description']);
|
||||||
|
|
||||||
|
$counter = '';
|
||||||
|
|
||||||
if($conf->global->CATEGORY_SHOW_COUNTS)
|
if($conf->global->CATEGORY_SHOW_COUNTS)
|
||||||
{
|
{
|
||||||
// we need only a count of the elements, so it is enough to consume only the id's from the database
|
// we need only a count of the elements, so it is enough to consume only the id's from the database
|
||||||
if ($type == Categorie::TYPE_PRODUCT) $elements = $categstatic->getObjectsInCateg("product", 1);
|
$elements = $categstatic->getObjectsInCateg($type, 1);
|
||||||
if ($type == Categorie::TYPE_SUPPLIER) $elements = $categstatic->getObjectsInCateg("supplier", 1);
|
$counter = "<td class='left' width='40px;'>".(is_countable($elements) ? count($elements) : '0')."</td>";
|
||||||
if ($type == Categorie::TYPE_CUSTOMER) $elements = $categstatic->getObjectsInCateg("customer", 1);
|
|
||||||
if ($type == Categorie::TYPE_MEMBER) $elements = $categstatic->getObjectsInCateg("member", 1);
|
|
||||||
if ($type == Categorie::TYPE_CONTACT) $elements = $categstatic->getObjectsInCateg("contact", 1);
|
|
||||||
if ($type == Categorie::TYPE_ACCOUNT) $elements = $categstatic->getObjectsInCateg("account", 1);
|
|
||||||
if ($type == Categorie::TYPE_PROJECT) $elements = $categstatic->getObjectsInCateg("project", 1);
|
|
||||||
if ($type == Categorie::TYPE_USER) $elements = $categstatic->getObjectsInCateg("user", 1);
|
|
||||||
|
|
||||||
$counter = "<td class='left' width='40px;'>".count($elements)."</td>";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$counter = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$data[] = array(
|
$data[] = array(
|
||||||
|
|||||||
@ -666,7 +666,7 @@ if ($object->id > 0)
|
|||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last proposals
|
* Latest proposals
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->propal->enabled) && $user->rights->propal->lire)
|
if (!empty($conf->propal->enabled) && $user->rights->propal->lire)
|
||||||
{
|
{
|
||||||
@ -738,7 +738,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last orders
|
* Latest orders
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->commande->enabled) && $user->rights->commande->lire)
|
if (!empty($conf->commande->enabled) && $user->rights->commande->lire)
|
||||||
{
|
{
|
||||||
@ -824,7 +824,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last shipments
|
* Latest shipments
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->expedition->enabled) && $user->rights->expedition->lire)
|
if (!empty($conf->expedition->enabled) && $user->rights->expedition->lire)
|
||||||
{
|
{
|
||||||
@ -897,7 +897,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last linked contracts
|
* Latest linked contracts
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire)
|
if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire)
|
||||||
{
|
{
|
||||||
@ -967,7 +967,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last interventions
|
* Latest interventions
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire)
|
if (!empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire)
|
||||||
{
|
{
|
||||||
@ -1028,7 +1028,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Last invoices templates
|
* Latest invoices templates
|
||||||
*/
|
*/
|
||||||
if (!empty($conf->facture->enabled) && $user->rights->facture->lire)
|
if (!empty($conf->facture->enabled) && $user->rights->facture->lire)
|
||||||
{
|
{
|
||||||
@ -1063,7 +1063,7 @@ if ($object->id > 0)
|
|||||||
print '<table class="noborder centpercent lastrecordtable">';
|
print '<table class="noborder centpercent lastrecordtable">';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LatestCustomerTemplateInvoices", ($num <= $MAXLIST ? "" : $MAXLIST)).'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->id.'">'.$langs->trans("AllCustomerTemplateInvoices").'<span class="badge marginleftonlyshort">'.$num.'</span></a></td>';
|
print '<td colspan="4"><table width="100%" class="nobordernopadding"><tr><td>'.$langs->trans("LatestCustomerTemplateInvoices", ($num <= $MAXLIST ? "" : $MAXLIST)).'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.'/compta/facture/invoicetemplate_list.php?socid='.$object->id.'">'.$langs->trans("AllCustomerTemplateInvoices").'<span class="badge marginleftonlyshort">'.$num.'</span></a></td>';
|
||||||
print '</tr></table></td>';
|
print '</tr></table></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2020 Thibault FOUCART <support@ptibogxiv.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -63,12 +64,67 @@ class Proposals extends DolibarrApi
|
|||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function get($id, $contact_list = 1)
|
public function get($id, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch($id, '', '', '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an proposal object by ref
|
||||||
|
*
|
||||||
|
* Return an array with proposal informations
|
||||||
|
*
|
||||||
|
* @param string $ref Ref of object
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @url GET ref/{ref}
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
public function getByRef($ref, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch('', $ref, '', '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an proposal object by ref_ext
|
||||||
|
*
|
||||||
|
* Return an array with proposal informations
|
||||||
|
*
|
||||||
|
* @param string $ref_ext External reference of object
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @url GET ref_ext/{ref_ext}
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
public function getByRefExt($ref_ext, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch('', '', $ref_ext, '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an proposal object
|
||||||
|
*
|
||||||
|
* Return an array with proposal informations
|
||||||
|
*
|
||||||
|
* @param int $id ID of order
|
||||||
|
* @param string $ref Ref of object
|
||||||
|
* @param string $ref_ext External reference of object
|
||||||
|
* @param string $ref_int Internal reference of other objec
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
private function _fetch($id, $ref = '', $ref_ext = '', $ref_int = '', $contact_list = 1)
|
||||||
{
|
{
|
||||||
if(! DolibarrApiAccess::$user->rights->propal->lire) {
|
if(! DolibarrApiAccess::$user->rights->propal->lire) {
|
||||||
throw new RestException(401);
|
throw new RestException(401);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->propal->fetch($id);
|
$result = $this->propal->fetch($id, $ref, $ref_ext, $ref_int);
|
||||||
if( ! $result ) {
|
if( ! $result ) {
|
||||||
throw new RestException(404, 'Commercial Proposal not found');
|
throw new RestException(404, 'Commercial Proposal not found');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1803,7 +1803,7 @@ class Propal extends CommonObject
|
|||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = dol_sanitizeFileName($num);
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
||||||
$sql .= " SET ref = '".$this->db->escape($num)."',";
|
$sql .= " SET ref = '".$this->db->escape($num)."',";
|
||||||
|
|||||||
@ -69,6 +69,11 @@ $search_societe = GETPOST('search_societe', 'alpha');
|
|||||||
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
||||||
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
||||||
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
||||||
|
$search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha');
|
||||||
|
$search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha');
|
||||||
|
$search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha');
|
||||||
|
$search_multicurrency_montant_vat = GETPOST('search_multicurrency_montant_vat', 'alpha');
|
||||||
|
$search_multicurrency_montant_ttc = GETPOST('search_multicurrency_montant_ttc', 'alpha');
|
||||||
$search_login = GETPOST('search_login', 'alpha');
|
$search_login = GETPOST('search_login', 'alpha');
|
||||||
$search_product_category = GETPOST('search_product_category', 'int');
|
$search_product_category = GETPOST('search_product_category', 'int');
|
||||||
$search_town = GETPOST('search_town', 'alpha');
|
$search_town = GETPOST('search_town', 'alpha');
|
||||||
@ -162,8 +167,15 @@ $arrayfields = array(
|
|||||||
'p.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
'p.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
||||||
'p.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
'p.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
||||||
'p.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
'p.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
||||||
'p.total_ht_invoiced'=>array('label'=>"AmountInvoicedHT", 'checked'=>0, 'enabled'=>$conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT),
|
'p.total_ht_invoiced'=>array('label'=>"AmountInvoicedHT", 'checked'=>0, 'enabled'=>! empty($conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT)),
|
||||||
'p.total_invoiced'=>array('label'=>"AmountInvoicedTTC", 'checked'=>0, 'enabled'=>$conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT),
|
'p.total_invoiced'=>array('label'=>"AmountInvoicedTTC", 'checked'=>0, 'enabled'=>! empty($conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT)),
|
||||||
|
'p.multicurrency_code'=>array('label'=>'Currency', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'p.multicurrency_tx'=>array('label'=>'CurrencyRate', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'p.multicurrency_total_ht'=>array('label'=>'MulticurrencyAmountHT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'p.multicurrency_total_vat'=>array('label'=>'MulticurrencyAmountVAT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'p.multicurrency_total_ttc'=>array('label'=>'MulticurrencyAmountTTC', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'p.multicurrency_total_ht_invoiced'=>array('label'=>'MulticurrencyAmountInvoicedHT', 'checked'=>0, 'enabled'=>! empty($conf->multicurrency->enabled) && ! empty($conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT)),
|
||||||
|
'p.multicurrency_total_invoiced'=>array('label'=>'MulticurrencyAmountInvoicedTTC', 'checked'=>0, 'enabled'=>! empty($conf->multicurrency->enabled) && ! empty($conf->global->PROPOSAL_SHOW_INVOICED_AMOUNT)),
|
||||||
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>10),
|
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>10),
|
||||||
'sale_representative'=>array('label'=>"SaleRepresentativesOfThirdParty", 'checked'=>1),
|
'sale_representative'=>array('label'=>"SaleRepresentativesOfThirdParty", 'checked'=>1),
|
||||||
'p.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
'p.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
||||||
@ -209,6 +221,11 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_montant_ht = '';
|
$search_montant_ht = '';
|
||||||
$search_montant_vat = '';
|
$search_montant_vat = '';
|
||||||
$search_montant_ttc = '';
|
$search_montant_ttc = '';
|
||||||
|
$search_multicurrency_code = '';
|
||||||
|
$search_multicurrency_tx = '';
|
||||||
|
$search_multicurrency_montant_ht = '';
|
||||||
|
$search_multicurrency_montant_vat = '';
|
||||||
|
$search_multicurrency_montant_ttc = '';
|
||||||
$search_login = '';
|
$search_login = '';
|
||||||
$search_product_category = '';
|
$search_product_category = '';
|
||||||
$search_town = '';
|
$search_town = '';
|
||||||
@ -269,6 +286,7 @@ $sql .= " typent.code as typent_code,";
|
|||||||
$sql .= " ava.rowid as availability,";
|
$sql .= " ava.rowid as availability,";
|
||||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||||
$sql .= ' p.rowid, p.entity, p.note_private, p.total_ht, p.tva as total_vat, p.total as total_ttc, p.localtax1, p.localtax2, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,p.date_livraison as ddelivery,';
|
$sql .= ' p.rowid, p.entity, p.note_private, p.total_ht, p.tva as total_vat, p.total as total_ttc, p.localtax1, p.localtax2, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,p.date_livraison as ddelivery,';
|
||||||
|
$sql .= ' p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva as multicurrency_total_vat, p.multicurrency_total_ttc,';
|
||||||
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
||||||
$sql .= ' p.note_public, p.note_private,';
|
$sql .= ' p.note_public, p.note_private,';
|
||||||
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
||||||
@ -326,6 +344,11 @@ if ($search_login) $sql .= natural_search("u.login", $search_login);
|
|||||||
if ($search_montant_ht != '') $sql .= natural_search("p.total_ht", $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql .= natural_search("p.total_ht", $search_montant_ht, 1);
|
||||||
if ($search_montant_vat != '') $sql .= natural_search("p.tva", $search_montant_vat, 1);
|
if ($search_montant_vat != '') $sql .= natural_search("p.tva", $search_montant_vat, 1);
|
||||||
if ($search_montant_ttc != '') $sql .= natural_search("p.total", $search_montant_ttc, 1);
|
if ($search_montant_ttc != '') $sql .= natural_search("p.total", $search_montant_ttc, 1);
|
||||||
|
if ($search_multicurrency_code != '') $sql .= ' AND p.multicurrency_code = "' . $db->escape($search_multicurrency_code) . '"';
|
||||||
|
if ($search_multicurrency_tx != '') $sql .= natural_search('p.multicurrency_tx', $search_multicurrency_tx, 1);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $sql .= natural_search('p.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $sql .= natural_search('p.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $sql .= natural_search('p.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
|
||||||
if ($sall) {
|
if ($sall) {
|
||||||
$sql .= natural_search(array_keys($fieldstosearchall), $sall);
|
$sql .= natural_search(array_keys($fieldstosearchall), $sall);
|
||||||
}
|
}
|
||||||
@ -428,6 +451,11 @@ if ($resql)
|
|||||||
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
||||||
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
||||||
if ($search_montant_ht) $param .= '&search_montant_ht='.urlencode($search_montant_ht);
|
if ($search_montant_ht) $param .= '&search_montant_ht='.urlencode($search_montant_ht);
|
||||||
|
if ($search_multicurrency_code != '') $param .= '&search_multicurrency_code='.urlencode($search_multicurrency_code);
|
||||||
|
if ($search_multicurrency_tx != '') $param .= '&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $param .= '&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $param .= '&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $param .= '&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
|
||||||
if ($search_login) $param .= '&search_login='.urlencode($search_login);
|
if ($search_login) $param .= '&search_login='.urlencode($search_login);
|
||||||
if ($search_town) $param .= '&search_town='.urlencode($search_town);
|
if ($search_town) $param .= '&search_town='.urlencode($search_town);
|
||||||
if ($search_zip) $param .= '&search_zip='.urlencode($search_zip);
|
if ($search_zip) $param .= '&search_zip='.urlencode($search_zip);
|
||||||
@ -677,6 +705,53 @@ if ($resql)
|
|||||||
print '<td class="liste_titre right">';
|
print '<td class="liste_titre right">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
// Currency
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print $form->selectMultiCurrency($search_multicurrency_code, 'search_multicurrency_code', 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
// Currency rate
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht_invoiced']['checked']))
|
||||||
|
{
|
||||||
|
// Amount invoiced
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_invoiced']['checked']))
|
||||||
|
{
|
||||||
|
// Amount invoiced
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['u.login']['checked']))
|
if (!empty($arrayfields['u.login']['checked']))
|
||||||
{
|
{
|
||||||
// Author
|
// Author
|
||||||
@ -750,6 +825,13 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.total_ttc']['label'], $_SERVER["PHP_SELF"], 'p.total', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.total_ttc']['label'], $_SERVER["PHP_SELF"], 'p.total', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.total_ht_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.total_ht_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_ht_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.total_ht_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.total_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.total_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.total_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_code']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_code']['label'], $_SERVER['PHP_SELF'], 'p.multicurrency_code', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_tx']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_tx']['label'], $_SERVER['PHP_SELF'], 'p.multicurrency_tx', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_total_ht']['label'], $_SERVER['PHP_SELF'], 'p.multicurrency_total_ht', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_vat']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_total_vat']['label'], $_SERVER['PHP_SELF'], 'p.multicurrency_total_tva', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_total_ttc']['label'], $_SERVER['PHP_SELF'], 'p.multicurrency_total_ttc', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_total_ht_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_invoiced']['checked'])) print_liste_field_titre($arrayfields['p.multicurrency_total_invoiced']['label'], $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder);
|
if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['sale_representative']['checked'])) print_liste_field_titre($arrayfields['sale_representative']['label'], $_SERVER["PHP_SELF"], "", "", "$param", '', $sortfield, $sortorder);
|
if (!empty($arrayfields['sale_representative']['checked'])) print_liste_field_titre($arrayfields['sale_representative']['label'], $_SERVER["PHP_SELF"], "", "", "$param", '', $sortfield, $sortorder);
|
||||||
// Extra fields
|
// Extra fields
|
||||||
@ -790,6 +872,29 @@ if ($resql)
|
|||||||
$projectstatic->ref = $obj->project_ref;
|
$projectstatic->ref = $obj->project_ref;
|
||||||
$projectstatic->title = $obj->project_label;
|
$projectstatic->title = $obj->project_label;
|
||||||
|
|
||||||
|
$totalInvoicedHT = 0;
|
||||||
|
$totalInvoicedTTC = 0;
|
||||||
|
$multicurrency_totalInvoicedHT = 0;
|
||||||
|
$multicurrency_totalInvoicedTTC = 0;
|
||||||
|
|
||||||
|
$TInvoiceData = $objectstatic->InvoiceArrayList($obj->rowid);
|
||||||
|
|
||||||
|
if (!empty($TInvoiceData))
|
||||||
|
{
|
||||||
|
foreach ($TInvoiceData as $invoiceData)
|
||||||
|
{
|
||||||
|
$invoice = new Facture($db);
|
||||||
|
$invoice->fetch($invoiceData->facid);
|
||||||
|
|
||||||
|
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS) && $invoice->type == Facture::TYPE_DEPOSIT) continue;
|
||||||
|
|
||||||
|
$totalInvoicedHT += $invoice->total_ht;
|
||||||
|
$totalInvoicedTTC += $invoice->total_ttc;
|
||||||
|
$multicurrency_totalInvoicedHT += $invoice->multicurrency_total_ht;
|
||||||
|
$multicurrency_totalInvoicedTTC += $invoice->multicurrency_total_ttc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
if (!empty($arrayfields['p.ref']['checked']))
|
if (!empty($arrayfields['p.ref']['checked']))
|
||||||
@ -975,46 +1080,66 @@ if ($resql)
|
|||||||
$totalarray['val']['p.total_ttc'] += $obj->total_ttc;
|
$totalarray['val']['p.total_ttc'] += $obj->total_ttc;
|
||||||
}
|
}
|
||||||
// Amount invoiced
|
// Amount invoiced
|
||||||
if (!empty($arrayfields['p.total_ht_invoiced']['checked'])) {
|
if (!empty($arrayfields['p.total_ht_invoiced']['checked']))
|
||||||
$totalInvoiced = 0;
|
{
|
||||||
$p = new Propal($db);
|
print '<td class="nowrap right">'.price($totalInvoicedHT)."</td>\n";
|
||||||
$TInvoiceData = $p->InvoiceArrayList($obj->rowid);
|
|
||||||
|
|
||||||
if (!empty($TInvoiceData)) {
|
|
||||||
foreach ($TInvoiceData as $invoiceData) {
|
|
||||||
$invoice = new Facture($db);
|
|
||||||
$invoice->fetch($invoiceData->facid);
|
|
||||||
|
|
||||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS) && $invoice->type == Facture::TYPE_DEPOSIT) continue;
|
|
||||||
$totalInvoiced += $invoice->total_ht;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<td class="nowrap right">'.price($totalInvoiced)."</td>\n";
|
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_ht_invoiced';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_ht_invoiced';
|
||||||
$totalarray['val']['p.total_ht_invoiced'] += $obj->total_ht_invoiced;
|
$totalarray['val']['p.total_ht_invoiced'] += $totalInvoicedHT;
|
||||||
}
|
}
|
||||||
// Amount invoiced
|
// Amount invoiced
|
||||||
if (!empty($arrayfields['p.total_invoiced']['checked'])) {
|
if (!empty($arrayfields['p.total_invoiced']['checked']))
|
||||||
$totalInvoiced = 0;
|
{
|
||||||
$p = new Propal($db);
|
print '<td class="nowrap right">'.price($totalInvoicedTTC)."</td>\n";
|
||||||
$TInvoiceData = $p->InvoiceArrayList($obj->rowid);
|
|
||||||
|
|
||||||
if (!empty($TInvoiceData)) {
|
|
||||||
foreach ($TInvoiceData as $invoiceData) {
|
|
||||||
$invoice = new Facture($db);
|
|
||||||
$invoice->fetch($invoiceData->facid);
|
|
||||||
|
|
||||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS) && $invoice->type == Facture::TYPE_DEPOSIT) continue;
|
|
||||||
$totalInvoiced += $invoice->total_ttc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<td class="nowrap right">'.price($totalInvoiced)."</td>\n";
|
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_invoiced';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_invoiced';
|
||||||
$totalarray['val']['p.total_invoiced'] += $obj->total_invoiced;
|
$totalarray['val']['p.total_invoiced'] += $totalInvoicedTTC;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Currency
|
||||||
|
if (!empty($arrayfields['p.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">'.$obj->multicurrency_code . ' - ' . $langs->trans('Currency' . $obj->multicurrency_code)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Currency rate
|
||||||
|
if (!empty($arrayfields['p.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
$form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount HT
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ht)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount VAT
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_vat)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount TTC
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ttc)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount invoiced
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_ht_invoiced']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap right">'.price($multicurrency_totalInvoicedHT)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount invoiced
|
||||||
|
if (!empty($arrayfields['p.multicurrency_total_invoiced']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap right">'.price($multicurrency_totalInvoicedTTC)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$userstatic->id = $obj->fk_user_author;
|
$userstatic->id = $obj->fk_user_author;
|
||||||
|
|||||||
@ -111,6 +111,7 @@ if ($action == 'confirm_split' && GETPOST("confirm") == 'yes')
|
|||||||
$newdiscount1->description = $discount->description.' (1)';
|
$newdiscount1->description = $discount->description.' (1)';
|
||||||
$newdiscount2->description = $discount->description.' (2)';
|
$newdiscount2->description = $discount->description.' (2)';
|
||||||
}
|
}
|
||||||
|
|
||||||
$newdiscount1->fk_user = $discount->fk_user;
|
$newdiscount1->fk_user = $discount->fk_user;
|
||||||
$newdiscount2->fk_user = $discount->fk_user;
|
$newdiscount2->fk_user = $discount->fk_user;
|
||||||
$newdiscount1->fk_soc = $discount->fk_soc;
|
$newdiscount1->fk_soc = $discount->fk_soc;
|
||||||
@ -121,7 +122,7 @@ if ($action == 'confirm_split' && GETPOST("confirm") == 'yes')
|
|||||||
$newdiscount2->datec = $discount->datec;
|
$newdiscount2->datec = $discount->datec;
|
||||||
$newdiscount1->tva_tx = $discount->tva_tx;
|
$newdiscount1->tva_tx = $discount->tva_tx;
|
||||||
$newdiscount2->tva_tx = $discount->tva_tx;
|
$newdiscount2->tva_tx = $discount->tva_tx;
|
||||||
$newdiscount1->amount_ttc = $_POST["amount_ttc_1"];
|
$newdiscount1->amount_ttc = $amount_ttc_1;
|
||||||
$newdiscount2->amount_ttc = price2num($discount->amount_ttc - $newdiscount1->amount_ttc);
|
$newdiscount2->amount_ttc = price2num($discount->amount_ttc - $newdiscount1->amount_ttc);
|
||||||
$newdiscount1->amount_ht = price2num($newdiscount1->amount_ttc / (1 + $newdiscount1->tva_tx / 100), 'MT');
|
$newdiscount1->amount_ht = price2num($newdiscount1->amount_ttc / (1 + $newdiscount1->tva_tx / 100), 'MT');
|
||||||
$newdiscount2->amount_ht = price2num($newdiscount2->amount_ttc / (1 + $newdiscount2->tva_tx / 100), 'MT');
|
$newdiscount2->amount_ht = price2num($newdiscount2->amount_ttc / (1 + $newdiscount2->tva_tx / 100), 'MT');
|
||||||
|
|||||||
@ -112,6 +112,10 @@ $permissionnote = $usercancreate; // Used by the include of actions_setnotes.i
|
|||||||
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
|
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
|
||||||
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
||||||
|
|
||||||
|
if (!empty($conf->expedition->enabled) && $conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER = 1){
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $object->warehouse_id = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $object->warehouse_id = $user->fk_warehouse;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
|
|||||||
@ -384,7 +384,7 @@ class Commande extends CommonOrder
|
|||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = dol_sanitizeFileName($num);
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."commande";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."commande";
|
||||||
|
|||||||
@ -74,8 +74,14 @@ $socid = GETPOST('socid', 'int');
|
|||||||
$search_user = GETPOST('search_user', 'int');
|
$search_user = GETPOST('search_user', 'int');
|
||||||
$search_sale = GETPOST('search_sale', 'int');
|
$search_sale = GETPOST('search_sale', 'int');
|
||||||
$search_total_ht = GETPOST('search_total_ht', 'alpha');
|
$search_total_ht = GETPOST('search_total_ht', 'alpha');
|
||||||
|
$search_total_vat = GETPOST('search_total_vat', 'alpha');
|
||||||
$search_total_ttc = GETPOST('search_total_ttc', 'alpha');
|
$search_total_ttc = GETPOST('search_total_ttc', 'alpha');
|
||||||
$search_warehouse = GETPOST('search_warehouse', 'int');
|
$search_warehouse = GETPOST('search_warehouse', 'int');
|
||||||
|
$search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha');
|
||||||
|
$search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha');
|
||||||
|
$search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha');
|
||||||
|
$search_multicurrency_montant_vat = GETPOST('search_multicurrency_montant_vat', 'alpha');
|
||||||
|
$search_multicurrency_montant_ttc = GETPOST('search_multicurrency_montant_ttc', 'alpha');
|
||||||
$search_login = GETPOST('search_login', 'alpha');
|
$search_login = GETPOST('search_login', 'alpha');
|
||||||
$search_categ_cus = trim(GETPOST("search_categ_cus", 'int'));
|
$search_categ_cus = trim(GETPOST("search_categ_cus", 'int'));
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
@ -142,6 +148,11 @@ $arrayfields = array(
|
|||||||
'c.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
'c.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
||||||
'c.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
'c.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
||||||
'c.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
'c.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
||||||
|
'c.multicurrency_code'=>array('label'=>'Currency', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'c.multicurrency_tx'=>array('label'=>'CurrencyRate', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'c.multicurrency_total_ht'=>array('label'=>'MulticurrencyAmountHT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'c.multicurrency_total_vat'=>array('label'=>'MulticurrencyAmountVAT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
|
'c.multicurrency_total_ttc'=>array('label'=>'MulticurrencyAmountTTC', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1)),
|
||||||
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>10),
|
'u.login'=>array('label'=>"Author", 'checked'=>1, 'position'=>10),
|
||||||
'c.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
'c.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
||||||
'c.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>500),
|
'c.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>500),
|
||||||
@ -198,6 +209,11 @@ if (empty($reshook))
|
|||||||
$search_total_ht = '';
|
$search_total_ht = '';
|
||||||
$search_total_vat = '';
|
$search_total_vat = '';
|
||||||
$search_total_ttc = '';
|
$search_total_ttc = '';
|
||||||
|
$search_multicurrency_code = '';
|
||||||
|
$search_multicurrency_tx = '';
|
||||||
|
$search_multicurrency_montant_ht = '';
|
||||||
|
$search_multicurrency_montant_vat = '';
|
||||||
|
$search_multicurrency_montant_ttc = '';
|
||||||
$search_login = '';
|
$search_login = '';
|
||||||
$search_dateorder_start = '';
|
$search_dateorder_start = '';
|
||||||
$search_dateorder_end = '';
|
$search_dateorder_end = '';
|
||||||
@ -251,6 +267,7 @@ $sql .= ' s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.
|
|||||||
$sql .= " typent.code as typent_code,";
|
$sql .= " typent.code as typent_code,";
|
||||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||||
$sql .= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
|
$sql .= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
|
||||||
|
$sql .= ' c.fk_multicurrency, c.multicurrency_code, c.multicurrency_tx, c.multicurrency_total_ht, c.multicurrency_total_tva as multicurrency_total_vat, c.multicurrency_total_ttc,';
|
||||||
$sql .= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,';
|
$sql .= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,';
|
||||||
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
||||||
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,";
|
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,";
|
||||||
@ -328,8 +345,14 @@ if ($search_company) $sql .= natural_search('s.nom', $search_company);
|
|||||||
if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$search_sale;
|
if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$search_sale;
|
||||||
if ($search_user > 0) $sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user;
|
if ($search_user > 0) $sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user;
|
||||||
if ($search_total_ht != '') $sql .= natural_search('c.total_ht', $search_total_ht, 1);
|
if ($search_total_ht != '') $sql .= natural_search('c.total_ht', $search_total_ht, 1);
|
||||||
|
if ($search_total_vat != '') $sql .= natural_search('c.tva', $search_total_vat, 1);
|
||||||
if ($search_total_ttc != '') $sql .= natural_search('c.total_ttc', $search_total_ttc, 1);
|
if ($search_total_ttc != '') $sql .= natural_search('c.total_ttc', $search_total_ttc, 1);
|
||||||
if ($search_warehouse != '') $sql .= natural_search('c.fk_warehouse', $search_warehouse, 1);
|
if ($search_warehouse != '') $sql .= natural_search('c.fk_warehouse', $search_warehouse, 1);
|
||||||
|
if ($search_multicurrency_code != '') $sql .= ' AND c.multicurrency_code = "' . $db->escape($search_multicurrency_code) . '"';
|
||||||
|
if ($search_multicurrency_tx != '') $sql .= natural_search('c.multicurrency_tx', $search_multicurrency_tx, 1);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $sql .= natural_search('c.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $sql .= natural_search('c.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $sql .= natural_search('c.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
|
||||||
if ($search_login) $sql .= natural_search("u.login", $search_login);
|
if ($search_login) $sql .= natural_search("u.login", $search_login);
|
||||||
if ($search_project_ref != '') $sql .= natural_search("p.ref", $search_project_ref);
|
if ($search_project_ref != '') $sql .= natural_search("p.ref", $search_project_ref);
|
||||||
if ($search_project != '') $sql .= natural_search("p.title", $search_project);
|
if ($search_project != '') $sql .= natural_search("p.title", $search_project);
|
||||||
@ -428,6 +451,11 @@ if ($resql)
|
|||||||
if ($search_total_ttc != '') $param .= '&search_total_ttc='.urlencode($search_total_ttc);
|
if ($search_total_ttc != '') $param .= '&search_total_ttc='.urlencode($search_total_ttc);
|
||||||
if ($search_warehouse != '') $param .= '&search_warehouse='.urlencode($search_warehouse);
|
if ($search_warehouse != '') $param .= '&search_warehouse='.urlencode($search_warehouse);
|
||||||
if ($search_login) $param .= '&search_login='.urlencode($search_login);
|
if ($search_login) $param .= '&search_login='.urlencode($search_login);
|
||||||
|
if ($search_multicurrency_code != '') $param .= '&search_multicurrency_code='.urlencode($search_multicurrency_code);
|
||||||
|
if ($search_multicurrency_tx != '') $param .= '&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $param .= '&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $param .= '&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $param .= '&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
|
||||||
if ($search_project_ref >= 0) $param .= "&search_project_ref=".urlencode($search_project_ref);
|
if ($search_project_ref >= 0) $param .= "&search_project_ref=".urlencode($search_project_ref);
|
||||||
if ($search_town != '') $param .= '&search_town='.urlencode($search_town);
|
if ($search_town != '') $param .= '&search_town='.urlencode($search_town);
|
||||||
if ($search_zip != '') $param .= '&search_zip='.urlencode($search_zip);
|
if ($search_zip != '') $param .= '&search_zip='.urlencode($search_zip);
|
||||||
@ -708,6 +736,41 @@ if ($resql)
|
|||||||
print '<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.'">';
|
print '<input class="flat" type="text" size="5" name="search_total_ttc" value="'.$search_total_ttc.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['c.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
// Currency
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print $form->selectMultiCurrency($search_multicurrency_code, 'search_multicurrency_code', 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['c.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
// Currency rate
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['u.login']['checked']))
|
if (!empty($arrayfields['u.login']['checked']))
|
||||||
{
|
{
|
||||||
// Author
|
// Author
|
||||||
@ -786,6 +849,11 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'], $_SERVER["PHP_SELF"], 'c.total_ht', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'], $_SERVER["PHP_SELF"], 'c.total_ht', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['c.total_vat']['checked'])) print_liste_field_titre($arrayfields['c.total_vat']['label'], $_SERVER["PHP_SELF"], 'c.tva', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_vat']['checked'])) print_liste_field_titre($arrayfields['c.total_vat']['label'], $_SERVER["PHP_SELF"], 'c.tva', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'], $_SERVER["PHP_SELF"], 'c.total_ttc', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'], $_SERVER["PHP_SELF"], 'c.total_ttc', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
|
if (!empty($arrayfields['c.multicurrency_code']['checked'])) print_liste_field_titre($arrayfields['c.multicurrency_code']['label'], $_SERVER['PHP_SELF'], 'c.multicurrency_code', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.multicurrency_tx']['checked'])) print_liste_field_titre($arrayfields['c.multicurrency_tx']['label'], $_SERVER['PHP_SELF'], 'c.multicurrency_tx', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ht']['checked'])) print_liste_field_titre($arrayfields['c.multicurrency_total_ht']['label'], $_SERVER['PHP_SELF'], 'c.multicurrency_total_ht', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_vat']['checked'])) print_liste_field_titre($arrayfields['c.multicurrency_total_vat']['label'], $_SERVER['PHP_SELF'], 'c.multicurrency_total_tva', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.multicurrency_total_ttc']['label'], $_SERVER['PHP_SELF'], 'c.multicurrency_total_ttc', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder);
|
if (!empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||||
|
|
||||||
// Extra fields
|
// Extra fields
|
||||||
@ -1108,6 +1176,40 @@ if ($resql)
|
|||||||
$totalarray['val']['c.total_ttc'] += $obj->total_ttc;
|
$totalarray['val']['c.total_ttc'] += $obj->total_ttc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Currency
|
||||||
|
if (!empty($arrayfields['c.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">'.$obj->multicurrency_code . ' - ' . $langs->trans('Currency' . $obj->multicurrency_code)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Currency rate
|
||||||
|
if (!empty($arrayfields['c.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
$form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount HT
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ht)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount VAT
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_vat)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount TTC
|
||||||
|
if (!empty($arrayfields['c.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ttc)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
$userstatic->id = $obj->fk_user_author;
|
$userstatic->id = $obj->fk_user_author;
|
||||||
$userstatic->login = $obj->login;
|
$userstatic->login = $obj->login;
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
|
|
||||||
$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta"));
|
$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips"));
|
||||||
|
|
||||||
$date_start = GETPOST('date_start', 'alpha');
|
$date_start = GETPOST('date_start', 'alpha');
|
||||||
$date_startDay = GETPOST('date_startday', 'int');
|
$date_startDay = GETPOST('date_startday', 'int');
|
||||||
@ -66,6 +66,13 @@ if (!$sortorder) $sortorder = "DESC";
|
|||||||
$arrayfields = array(
|
$arrayfields = array(
|
||||||
'type'=>array('label'=>"Type", 'checked'=>1),
|
'type'=>array('label'=>"Type", 'checked'=>1),
|
||||||
'date'=>array('label'=>"Date", 'checked'=>1),
|
'date'=>array('label'=>"Date", 'checked'=>1),
|
||||||
|
'date_due'=>array('label'=>"DateDue", 'checked'=>1),
|
||||||
|
'ref'=>array('label'=>"Ref", 'checked'=>1),
|
||||||
|
'documents'=>array('label'=>"Documents", 'checked'=>1),
|
||||||
|
'paid'=>array('label'=>"Paid", 'checked'=>1),
|
||||||
|
'total_ht'=>array('label'=>"TotalHT", 'checked'=>1),
|
||||||
|
'total_ttc'=>array('label'=>"TotalTTC", 'checked'=>1),
|
||||||
|
'total_vat'=>array('label'=>"TotalVAT", 'checked'=>1),
|
||||||
//...
|
//...
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -120,49 +127,66 @@ if (($action == "searchfiles" || $action == "dl")) {
|
|||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
|
$sql = '';
|
||||||
|
|
||||||
$wheretail = " '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
$wheretail = " '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
||||||
|
|
||||||
// Customer invoices
|
// Customer invoices
|
||||||
$sql = "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, total as total_ht, total_ttc, tva as total_vat, fk_soc, t.datef as date, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
if (GETPOST('selectinvoices')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total as total_ht, t.total_ttc, t.tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
||||||
$sql .= " WHERE datef between ".$wheretail;
|
$sql .= " WHERE datef between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT;
|
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT;
|
||||||
$sql .= " UNION ALL";
|
}
|
||||||
// Vendor invoices
|
// Vendor invoices
|
||||||
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paye as paid, total_ht, total_ttc, total_tva as total_vat, fk_soc, datef as date, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
if (GETPOST('selectsupplierinvoices')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
||||||
$sql .= " WHERE datef between ".$wheretail;
|
$sql .= " WHERE datef between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
||||||
$sql .= " UNION ALL";
|
}
|
||||||
// Expense reports
|
// Expense reports
|
||||||
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, total_ht, total_ttc, total_tva as total_vat, fk_user_author as fk_soc, date_fin as date, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
if (GETPOST('selectexpensereports')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= " SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, t.fk_user_author as fk_soc, t.date_fin as date, t.date_fin as date_due, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
$sql .= " FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
||||||
$sql .= " WHERE date_fin between ".$wheretail;
|
$sql .= " WHERE date_fin between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
||||||
$sql .= " UNION ALL";
|
}
|
||||||
// Donations
|
// Donations
|
||||||
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, datedon as date, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
if (GETPOST('selectdonations')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, t.datedon as date, t.datedon as date_due, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
|
$sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
|
||||||
$sql .= " WHERE datedon between ".$wheretail;
|
$sql .= " WHERE datedon between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT;
|
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT;
|
||||||
$sql .= " UNION ALL";
|
}
|
||||||
// Paiements of salaries
|
// Paiements of salaries
|
||||||
$sql .= " SELECT t.rowid as id, t.entity, t.ref as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, datep as date, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
if (GETPOST('selectpaymentsofsalaries')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= " SELECT t.rowid as id, t.entity, t.ref as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
$sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
||||||
$sql .= " WHERE datep between ".$wheretail;
|
$sql .= " WHERE datep between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
||||||
$sql .= " UNION ALL";
|
}
|
||||||
// Social contributions
|
// Social contributions
|
||||||
$sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, paye as paid, amount as total_ht, amount as total_ttc, 0 as total_tva, 0 as fk_soc, date_creation as date, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum";
|
if (GETPOST('selectsocialcontributions')) {
|
||||||
|
if (! empty($sql)) $sql .= " UNION ALL";
|
||||||
|
$sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_tva, 0 as fk_soc, t.date_creation as date, t.date_ech as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t";
|
||||||
$sql .= " WHERE date_creation between ".$wheretail;
|
$sql .= " WHERE date_creation between ".$wheretail;
|
||||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||||
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
|
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sql) {
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
@ -238,13 +262,13 @@ if (($action == "searchfiles" || $action == "dl")) {
|
|||||||
$files = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1);
|
$files = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1);
|
||||||
//var_dump($upload_dir);
|
//var_dump($upload_dir);
|
||||||
//var_dump($files);
|
//var_dump($files);
|
||||||
|
|
||||||
if (count($files) < 1)
|
if (count($files) < 1)
|
||||||
{
|
{
|
||||||
$nofile = array();
|
$nofile = array();
|
||||||
$nofile['id'] = $objd->id;
|
$nofile['id'] = $objd->id;
|
||||||
$nofile['entity'] = $objd->entity;
|
$nofile['entity'] = $objd->entity;
|
||||||
$nofile['date'] = $db->idate($objd->date);
|
$nofile['date'] = $db->idate($objd->date);
|
||||||
|
$nofile['date_due'] = $db->idate($objd->date_due);
|
||||||
$nofile['paid'] = $objd->paid;
|
$nofile['paid'] = $objd->paid;
|
||||||
$nofile['amount_ht'] = $objd->total_ht;
|
$nofile['amount_ht'] = $objd->total_ht;
|
||||||
$nofile['amount_ttc'] = $objd->total_ttc;
|
$nofile['amount_ttc'] = $objd->total_ttc;
|
||||||
@ -266,6 +290,7 @@ if (($action == "searchfiles" || $action == "dl")) {
|
|||||||
$file['id'] = $objd->id;
|
$file['id'] = $objd->id;
|
||||||
$file['entity'] = $objd->entity;
|
$file['entity'] = $objd->entity;
|
||||||
$file['date'] = $db->idate($objd->date);
|
$file['date'] = $db->idate($objd->date);
|
||||||
|
$file['date_due'] = $db->idate($objd->date_due);
|
||||||
$file['paid'] = $objd->paid;
|
$file['paid'] = $objd->paid;
|
||||||
$file['amount_ht'] = $objd->total_ht;
|
$file['amount_ht'] = $objd->total_ht;
|
||||||
$file['amount_ttc'] = $objd->total_ttc;
|
$file['amount_ttc'] = $objd->total_ttc;
|
||||||
@ -305,6 +330,11 @@ if (($action == "searchfiles" || $action == "dl")) {
|
|||||||
|
|
||||||
$db->free($resd);
|
$db->free($resd);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
setEventMessages($langs->trans("ErrorSelectAtLeastOne"), null, 'errors');
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -336,12 +366,14 @@ if ($result && $action == "dl" && !$error)
|
|||||||
$log .= ','.$langs->transnoentitiesnoconv("Entity");
|
$log .= ','.$langs->transnoentitiesnoconv("Entity");
|
||||||
}
|
}
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("Date");
|
$log .= ','.$langs->transnoentitiesnoconv("Date");
|
||||||
|
$log .= ','.$langs->transnoentitiesnoconv("DateDue");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("Ref");
|
$log .= ','.$langs->transnoentitiesnoconv("Ref");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("TotalHT");
|
$log .= ','.$langs->transnoentitiesnoconv("TotalHT");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("TotalTTC");
|
$log .= ','.$langs->transnoentitiesnoconv("TotalTTC");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("TotalVAT");
|
$log .= ','.$langs->transnoentitiesnoconv("TotalVAT");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("Paid");
|
$log .= ','.$langs->transnoentitiesnoconv("Paid");
|
||||||
$log .= ',filename,item_id';
|
$log .= ','.$langs->transnoentitiesnoconv("Document");
|
||||||
|
$log .= ','.$langs->transnoentitiesnoconv("ItemID");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("ThirdParty");
|
$log .= ','.$langs->transnoentitiesnoconv("ThirdParty");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("Code");
|
$log .= ','.$langs->transnoentitiesnoconv("Code");
|
||||||
$log .= ','.$langs->transnoentitiesnoconv("Country");
|
$log .= ','.$langs->transnoentitiesnoconv("Country");
|
||||||
@ -362,23 +394,25 @@ if ($result && $action == "dl" && !$error)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$log .= $file['item'];
|
$log .= '"'.$langs->trans($file['item']).'"';
|
||||||
if (!empty($conf->multicompany->enabled) && is_object($mc))
|
if (!empty($conf->multicompany->enabled) && is_object($mc))
|
||||||
{
|
{
|
||||||
$log .= ','.(empty($arrayofentities[$file['entity']]) ? $file['entity'] : $arrayofentities[$file['entity']]);
|
$log .= ',"'.(empty($arrayofentities[$file['entity']]) ? $file['entity'] : $arrayofentities[$file['entity']]).'"';
|
||||||
}
|
}
|
||||||
$log .= ','.dol_print_date($file['date'], 'dayrfc');
|
$log .= ','.dol_print_date($file['date'], 'dayrfc');
|
||||||
$log .= ','.$file['ref'];
|
$log .= ','.dol_print_date($file['date_due'], 'dayrfc');
|
||||||
|
$log .= ',"'.$file['ref'].'"';
|
||||||
$log .= ','.$file['amount_ht'];
|
$log .= ','.$file['amount_ht'];
|
||||||
$log .= ','.$file['amount_ttc'];
|
$log .= ','.$file['amount_ttc'];
|
||||||
$log .= ','.$file['amount_vat'];
|
$log .= ','.$file['amount_vat'];
|
||||||
$log .= ','.$file['paid'];
|
$log .= ','.$file['paid'];
|
||||||
$log .= ','.$file["name"];
|
$log .= ',"'.$file["name"].'"';
|
||||||
$log .= ','.$file['fk'];
|
$log .= ','.$file['fk'];
|
||||||
$log .= ','.$file['thirdparty_name'];
|
$log .= ',"'.$file['thirdparty_name'].'"';
|
||||||
$log .= ','.$file['thirdparty_code'];
|
$log .= ',"'.$file['thirdparty_code'].'"';
|
||||||
$log .= ','.$file['country_code'];
|
$log .= ',"'.$file['country_code'].'"';
|
||||||
$log .= ',"'.$file['vatnum'].'"'."\n";
|
$log .= ',"'.$file['vatnum'].'"';
|
||||||
|
$log .= "\n";
|
||||||
}
|
}
|
||||||
$zip->addFromString('transactions.csv', $log);
|
$zip->addFromString('transactions.csv', $log);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
@ -406,6 +440,8 @@ if ($result && $action == "dl" && !$error)
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
|
$invoice = new Facture($db);
|
||||||
|
$supplier_invoice = new FactureFournisseur($db);
|
||||||
|
|
||||||
$title = $langs->trans("ComptaFiles").' - '.$langs->trans("List");
|
$title = $langs->trans("ComptaFiles").' - '.$langs->trans("List");
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
@ -431,7 +467,7 @@ print ' - '.$form->selectDate($date_stop, 'date_stop', 0, 0, 0, "", 1, 1, 0)."\n
|
|||||||
if (!empty($conf->multicompany->enabled) && is_object($mc))
|
if (!empty($conf->multicompany->enabled) && is_object($mc))
|
||||||
{
|
{
|
||||||
$mc->getInfo($conf->entity);
|
$mc->getInfo($conf->entity);
|
||||||
print '<span class="marginleftonly marginrightonly">('.$langs->trans("Entity").' : ';
|
print '<span class="marginleftonly marginrightonly'.(empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)?' opacitymedium':'').'">('.$langs->trans("Entity").' : ';
|
||||||
print "<td>";
|
print "<td>";
|
||||||
if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
|
if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
|
||||||
print $mc->select_entities(GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $mc->id, 'search_entity', '', false, false, false, false, true);
|
print $mc->select_entities(GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $mc->id, 'search_entity', '', false, false, false, false, true);
|
||||||
@ -442,6 +478,21 @@ if (!empty($conf->multicompany->enabled) && is_object($mc))
|
|||||||
print ")</span>\n";
|
print ")</span>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
$listofchoices = array(
|
||||||
|
'selectinvoices'=>array('label'=>'Invoices', 'lang'=>'bills'),
|
||||||
|
'selectsupplierinvoices'=>array('label'=>'BillsSuppliers', 'lang'=>'bills'),
|
||||||
|
'selectexpensereports'=>array('label'=>'ExpenseReports', 'lang'=>'trips'),
|
||||||
|
'selectdonations'=>array('label'=>'Donations', 'lang'=>'donation'),
|
||||||
|
'selectpaymentsofsalaries'=>array('label'=>'SalariesPayments', 'lang'=>'salaries'),
|
||||||
|
'selectsocialcontributions'=>array('label'=>'SocialContributions')
|
||||||
|
);
|
||||||
|
foreach($listofchoices as $choice => $val) {
|
||||||
|
$checked = (((! GETPOSTISSET('search') && $action != 'searchfiles') || GETPOST($choice))?' checked="checked"':'');
|
||||||
|
print '<div class="paddingleft inline-block marginrightonly"><input type="checkbox" name="'.$choice.'" value="1"'.$checked.'> '.$langs->trans($val['label']).'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<input class="button" type="submit" name="search" value="'.$langs->trans("Search").'">';
|
print '<input class="button" type="submit" name="search" value="'.$langs->trans("Search").'">';
|
||||||
|
|
||||||
print '</form>'."\n";
|
print '</form>'."\n";
|
||||||
@ -457,7 +508,9 @@ if (!empty($date_start) && !empty($date_stop))
|
|||||||
$param .= '&date_stopday='.GETPOST('date_stopday', 'int');
|
$param .= '&date_stopday='.GETPOST('date_stopday', 'int');
|
||||||
$param .= '&date_stopmonth='.GETPOST('date_stopmonth', 'int');
|
$param .= '&date_stopmonth='.GETPOST('date_stopmonth', 'int');
|
||||||
$param .= '&date_stopyear='.GETPOST('date_stopyear', 'int');
|
$param .= '&date_stopyear='.GETPOST('date_stopyear', 'int');
|
||||||
|
foreach($listofchoices as $choice => $val) {
|
||||||
|
$param.='&'.$choice.'='.(GETPOST($choice, 'int')?1:0);
|
||||||
|
}
|
||||||
print '<form name="dl" action="?action=dl" method="POST" >'."\n";
|
print '<form name="dl" action="?action=dl" method="POST" >'."\n";
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
|
||||||
@ -465,14 +518,9 @@ if (!empty($date_start) && !empty($date_stop))
|
|||||||
|
|
||||||
print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />';
|
print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />';
|
||||||
print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
|
print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
|
||||||
|
foreach($listofchoices as $choice => $val) {
|
||||||
//print '<input type="hidden" name="date_stopDay" value="'.dol_print_date($date_stop, '%d').'" />';
|
print '<input type="hidden" name="'.$choice.'" value="'.GETPOST($choice).'">';
|
||||||
//print '<input type="hidden" name="date_stopMonth" value="'.dol_print_date($date_stop, '%m').'" />';
|
}
|
||||||
//print '<input type="hidden" name="date_stopYear" value="'.dol_print_date($date_stop, '%Y').'" />';
|
|
||||||
|
|
||||||
//print '<input type="hidden" name="date_startDay" value="'.dol_print_date($date_start, '%d').'" />';
|
|
||||||
//print '<input type="hidden" name="date_startMonth" value="'.dol_print_date($date_start, '%m').'" />';
|
|
||||||
//print '<input type="hidden" name="date_startYear" value="'.dol_print_date($date_start, '%m').'" />';
|
|
||||||
|
|
||||||
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
|
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
|
||||||
print '</form>'."\n";
|
print '</form>'."\n";
|
||||||
@ -484,7 +532,8 @@ if (!empty($date_start) && !empty($date_stop))
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "item", "", $param, '', $sortfield, $sortorder, 'nowrap ');
|
print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "item", "", $param, '', $sortfield, $sortorder, 'nowrap ');
|
||||||
print_liste_field_titre($arrayfields['date']['label'], $_SERVER["PHP_SELF"], "date", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
print_liste_field_titre($arrayfields['date']['label'], $_SERVER["PHP_SELF"], "date", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||||
print '<td>'.$langs->trans("Ref").'</td>';
|
print_liste_field_titre($arrayfields['date_due']['label'], $_SERVER["PHP_SELF"], "date_due", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||||
|
print_liste_field_titre($arrayfields['ref']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'nowraponall ');
|
||||||
print '<td>'.$langs->trans("Document").'</td>';
|
print '<td>'.$langs->trans("Document").'</td>';
|
||||||
print '<td>'.$langs->trans("Paid").'</td>';
|
print '<td>'.$langs->trans("Paid").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("TotalHT").'</td>';
|
print '<td align="right">'.$langs->trans("TotalHT").'</td>';
|
||||||
@ -529,8 +578,26 @@ if (!empty($date_start) && !empty($date_stop))
|
|||||||
print dol_print_date($data['date'], 'day');
|
print dol_print_date($data['date'], 'day');
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
|
// Date
|
||||||
|
print '<td class="center">';
|
||||||
|
print dol_print_date($data['date_due'], 'day');
|
||||||
|
print "</td>\n";
|
||||||
|
|
||||||
// Ref
|
// Ref
|
||||||
print '<td aling="left">'.$data['ref'].'</td>';
|
print '<td class="nowraponall">';
|
||||||
|
|
||||||
|
if ($data['item'] == 'Invoice') {
|
||||||
|
$invoice->id = $data['id'];
|
||||||
|
$invoice->ref = $data['ref'];
|
||||||
|
print $invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0);
|
||||||
|
} elseif ($data['item'] == 'SupplierInvoice') {
|
||||||
|
$supplier_invoice->id = $data['id'];
|
||||||
|
$supplier_invoice->ref = $data['ref'];
|
||||||
|
print $supplier_invoice->getNomUrl(1, '', 0, 0, '', 0, 0, 0);
|
||||||
|
} else {
|
||||||
|
print $data['ref'];
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
// File link
|
// File link
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -584,6 +651,7 @@ if (!empty($date_start) && !empty($date_stop))
|
|||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
|
print '<td></td>';
|
||||||
print '<td align="right">'.price(price2num($totalET, 'MT')).'</td>';
|
print '<td align="right">'.price(price2num($totalET, 'MT')).'</td>';
|
||||||
print '<td align="right">'.price(price2num($totalIT, 'MT')).'</td>';
|
print '<td align="right">'.price(price2num($totalIT, 'MT')).'</td>';
|
||||||
print '<td align="right">'.price(price2num($totalVAT, 'MT')).'</td>';
|
print '<td align="right">'.price(price2num($totalVAT, 'MT')).'</td>';
|
||||||
|
|||||||
@ -137,9 +137,9 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
$modulepart = 'bank';
|
$modulepart = 'bank';
|
||||||
$permission = $user->rights->banque->modifier;
|
$permission = $user->rights->banque->modifier;
|
||||||
$permtoedit = $user->rights->banque->modifier;
|
$permtoedit = $user->rights->banque->modifier;
|
||||||
$param = '&id='.$object->id.'&num='.$num;
|
$param = '&id='.$object->id.'&num='.urlencode($num);
|
||||||
$uri = '&num='.$num;
|
$moreparam = '&num='.urlencode($num);;
|
||||||
$relativepathwithnofile = $id."/statement/".$num."/";
|
$relativepathwithnofile = $id."/statement/".dol_sanitizeFileName($num)."/";
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -1337,6 +1337,10 @@ class Account extends CommonObject
|
|||||||
$label .= '<br><b>'.$langs->trans('AccountAccounting').':</b> '.length_accountg($this->account_number);
|
$label .= '<br><b>'.$langs->trans('AccountAccounting').':</b> '.length_accountg($this->account_number);
|
||||||
$label .= '<br><b>'.$langs->trans('AccountancyJournal').':</b> '.$this->accountancy_journal;
|
$label .= '<br><b>'.$langs->trans('AccountancyJournal').':</b> '.$this->accountancy_journal;
|
||||||
}
|
}
|
||||||
|
if (isset($this->status)) {
|
||||||
|
$label .= '<br><b>'.$langs->trans("Status").":</b> ".$this->getLibStatut(5);
|
||||||
|
}
|
||||||
|
|
||||||
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
|
||||||
|
|
||||||
$url = DOL_URL_ROOT.'/compta/bank/card.php?id='.$this->id;
|
$url = DOL_URL_ROOT.'/compta/bank/card.php?id='.$this->id;
|
||||||
|
|||||||
@ -255,13 +255,14 @@ else
|
|||||||
$px1->draw($file, $fileurl);
|
$px1->draw($file, $fileurl);
|
||||||
|
|
||||||
$show1 = $px1->show();
|
$show1 = $px1->show();
|
||||||
unset($graph_datas);
|
|
||||||
unset($px1);
|
$px1 = null;
|
||||||
unset($datas);
|
$graph_datas =null;
|
||||||
unset($datamin);
|
$datas = null;
|
||||||
unset($dataall);
|
$datamin = null;
|
||||||
unset($labels);
|
$dataall = null;
|
||||||
unset($amounts);
|
$labels = null;
|
||||||
|
$amounts = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Graph Balance for the year
|
// Graph Balance for the year
|
||||||
@ -392,13 +393,13 @@ else
|
|||||||
|
|
||||||
$show2 = $px2->show();
|
$show2 = $px2->show();
|
||||||
|
|
||||||
unset($px2);
|
$px2 = null;
|
||||||
unset($graph_datas);
|
$graph_datas =null;
|
||||||
unset($datas);
|
$datas = null;
|
||||||
unset($datamin);
|
$datamin = null;
|
||||||
unset($dataall);
|
$dataall = null;
|
||||||
unset($labels);
|
$labels = null;
|
||||||
unset($amounts);
|
$amounts = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Graph 3 - Balance for all time line
|
// Graph 3 - Balance for all time line
|
||||||
@ -460,7 +461,7 @@ else
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$datas[$i] = '' +$solde + $subtotal;
|
$datas[$i] = 0 + $solde + $subtotal;
|
||||||
}
|
}
|
||||||
$datamin[$i] = $object->min_desired;
|
$datamin[$i] = $object->min_desired;
|
||||||
$dataall[$i] = $object->min_allowed;
|
$dataall[$i] = $object->min_allowed;
|
||||||
@ -505,13 +506,13 @@ else
|
|||||||
|
|
||||||
$show3 = $px3->show();
|
$show3 = $px3->show();
|
||||||
|
|
||||||
unset($px3);
|
$px3 = null;
|
||||||
unset($graph_datas);
|
$graph_datas =null;
|
||||||
unset($datas);
|
$datas = null;
|
||||||
unset($datamin);
|
$datamin = null;
|
||||||
unset($dataall);
|
$dataall = null;
|
||||||
unset($labels);
|
$labels = null;
|
||||||
unset($amounts);
|
$amounts = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tableau 4a - Credit/Debit
|
// Tableau 4a - Credit/Debit
|
||||||
@ -634,10 +635,10 @@ else
|
|||||||
|
|
||||||
$show4 = $px4->show();
|
$show4 = $px4->show();
|
||||||
|
|
||||||
unset($graph_datas);
|
$px4 = null;
|
||||||
unset($px4);
|
$graph_datas = null;
|
||||||
unset($debits);
|
$debits = null;
|
||||||
unset($credits);
|
$credits = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tableau 4b - Credit/Debit
|
// Tableau 4b - Credit/Debit
|
||||||
@ -742,10 +743,10 @@ else
|
|||||||
|
|
||||||
$show5 = $px5->show();
|
$show5 = $px5->show();
|
||||||
|
|
||||||
unset($graph_datas);
|
$px5 = null;
|
||||||
unset($px5);
|
$graph_datas = null;
|
||||||
unset($debits);
|
$debits = null;
|
||||||
unset($credits);
|
$credits = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -49,7 +49,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
|||||||
$langs->loadLangs(array("banks", "categories", "companies", "bills", "trips", "donations", "loan"));
|
$langs->loadLangs(array("banks", "categories", "companies", "bills", "trips", "donations", "loan"));
|
||||||
|
|
||||||
$action = GETPOST('action', 'alpha');
|
$action = GETPOST('action', 'alpha');
|
||||||
$id = GETPOST('account', 'int');
|
$id = GETPOST('account', 'int') ? GETPOST('account', 'int') : GETPOST('id', 'int');
|
||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
$dvid = GETPOST('dvid', 'alpha');
|
$dvid = GETPOST('dvid', 'alpha');
|
||||||
$numref = GETPOST('num', 'alpha');
|
$numref = GETPOST('num', 'alpha');
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
|
/* Copyright (C) 2020 Thibault FOUCART <support@ptibogxiv.net>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -62,12 +63,67 @@ class Invoices extends DolibarrApi
|
|||||||
* @throws RestException
|
* @throws RestException
|
||||||
*/
|
*/
|
||||||
public function get($id, $contact_list = 1)
|
public function get($id, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch($id, '', '', '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an invoice object by ref
|
||||||
|
*
|
||||||
|
* Return an array with invoice informations
|
||||||
|
*
|
||||||
|
* @param string $ref Ref of object
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @url GET ref/{ref}
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
public function getByRef($ref, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch('', $ref, '', '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an invoice object by ref_ext
|
||||||
|
*
|
||||||
|
* Return an array with invoice informations
|
||||||
|
*
|
||||||
|
* @param string $ref_ext External reference of object
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @url GET ref_ext/{ref_ext}
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
public function getByRefExt($ref_ext, $contact_list = 1)
|
||||||
|
{
|
||||||
|
return $this->_fetch('', '', $ref_ext, '', $contact_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of an invoice object
|
||||||
|
*
|
||||||
|
* Return an array with invoice informations
|
||||||
|
*
|
||||||
|
* @param int $id ID of order
|
||||||
|
* @param string $ref Ref of object
|
||||||
|
* @param string $ref_ext External reference of object
|
||||||
|
* @param string $ref_int Internal reference of other objec
|
||||||
|
* @param int $contact_list 0: Returned array of contacts/addresses contains all properties, 1: Return array contains just id
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
private function _fetch($id, $ref = '', $ref_ext = '', $ref_int = '', $contact_list = 1)
|
||||||
{
|
{
|
||||||
if (!DolibarrApiAccess::$user->rights->facture->lire) {
|
if (!DolibarrApiAccess::$user->rights->facture->lire) {
|
||||||
throw new RestException(401);
|
throw new RestException(401);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->invoice->fetch($id);
|
$result = $this->invoice->fetch($id, $ref, $ref_ext, $ref_int);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
throw new RestException(404, 'Invoice not found');
|
throw new RestException(404, 'Invoice not found');
|
||||||
}
|
}
|
||||||
@ -592,6 +648,7 @@ class Invoices extends DolibarrApi
|
|||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*
|
*
|
||||||
|
* @throws RestException 304
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
* @throws RestException 400
|
* @throws RestException 400
|
||||||
@ -1098,6 +1155,7 @@ class Invoices extends DolibarrApi
|
|||||||
* @url POST {id}/usediscount/{discountid}
|
* @url POST {id}/usediscount/{discountid}
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
|
*
|
||||||
* @throws RestException 400
|
* @throws RestException 400
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
@ -1144,6 +1202,7 @@ class Invoices extends DolibarrApi
|
|||||||
* @url POST {id}/usecreditnote/{discountid}
|
* @url POST {id}/usecreditnote/{discountid}
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
|
*
|
||||||
* @throws RestException 400
|
* @throws RestException 400
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
@ -1239,6 +1298,7 @@ class Invoices extends DolibarrApi
|
|||||||
* @url POST {id}/payments
|
* @url POST {id}/payments
|
||||||
*
|
*
|
||||||
* @return int Payment ID
|
* @return int Payment ID
|
||||||
|
*
|
||||||
* @throws RestException 400
|
* @throws RestException 400
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 404
|
* @throws RestException 404
|
||||||
@ -1358,6 +1418,7 @@ class Invoices extends DolibarrApi
|
|||||||
* @url POST /paymentsdistributed
|
* @url POST /paymentsdistributed
|
||||||
*
|
*
|
||||||
* @return int Payment ID
|
* @return int Payment ID
|
||||||
|
*
|
||||||
* @throws RestException 400
|
* @throws RestException 400
|
||||||
* @throws RestException 401
|
* @throws RestException 401
|
||||||
* @throws RestException 403
|
* @throws RestException 403
|
||||||
|
|||||||
@ -477,7 +477,7 @@ class Facture extends CommonInvoice
|
|||||||
$this->fk_project = GETPOST('projectid', 'int') > 0 ? ((int) GETPOST('projectid', 'int')) : $_facrec->fk_project;
|
$this->fk_project = GETPOST('projectid', 'int') > 0 ? ((int) GETPOST('projectid', 'int')) : $_facrec->fk_project;
|
||||||
$this->note_public = GETPOST('note_public', 'none') ? GETPOST('note_public', 'none') : $_facrec->note_public;
|
$this->note_public = GETPOST('note_public', 'none') ? GETPOST('note_public', 'none') : $_facrec->note_public;
|
||||||
$this->note_private = GETPOST('note_private', 'none') ? GETPOST('note_private', 'none') : $_facrec->note_private;
|
$this->note_private = GETPOST('note_private', 'none') ? GETPOST('note_private', 'none') : $_facrec->note_private;
|
||||||
$this->modelpdf = GETPOST('model', 'alpha') ? GETPOST('model', 'apha') : $_facrec->modelpdf;
|
$this->modelpdf = GETPOST('model', 'alpha') ? GETPOST('model', 'alpha') : $_facrec->modelpdf;
|
||||||
$this->cond_reglement_id = GETPOST('cond_reglement_id', 'int') > 0 ? ((int) GETPOST('cond_reglement_id', 'int')) : $_facrec->cond_reglement_id;
|
$this->cond_reglement_id = GETPOST('cond_reglement_id', 'int') > 0 ? ((int) GETPOST('cond_reglement_id', 'int')) : $_facrec->cond_reglement_id;
|
||||||
$this->mode_reglement_id = GETPOST('mode_reglement_id', 'int') > 0 ? ((int) GETPOST('mode_reglement_id', 'int')) : $_facrec->mode_reglement_id;
|
$this->mode_reglement_id = GETPOST('mode_reglement_id', 'int') > 0 ? ((int) GETPOST('mode_reglement_id', 'int')) : $_facrec->mode_reglement_id;
|
||||||
$this->fk_account = GETPOST('fk_account') > 0 ? ((int) GETPOST('fk_account')) : $_facrec->fk_account;
|
$this->fk_account = GETPOST('fk_account') > 0 ? ((int) GETPOST('fk_account')) : $_facrec->fk_account;
|
||||||
@ -1253,6 +1253,14 @@ class Facture extends CommonInvoice
|
|||||||
$line->date_start = $object->lines[$i]->date_start;
|
$line->date_start = $object->lines[$i]->date_start;
|
||||||
$line->date_end = $object->lines[$i]->date_end;
|
$line->date_end = $object->lines[$i]->date_end;
|
||||||
|
|
||||||
|
// Multicurrency
|
||||||
|
$line->fk_multicurrency = $object->lines[$i]->fk_multicurrency;
|
||||||
|
$line->multicurrency_code = $object->lines[$i]->multicurrency_code;
|
||||||
|
$line->multicurrency_subprice = $object->lines[$i]->multicurrency_subprice;
|
||||||
|
$line->multicurrency_total_ht = $object->lines[$i]->multicurrency_total_ht;
|
||||||
|
$line->multicurrency_total_tva = $object->lines[$i]->multicurrency_total_tva;
|
||||||
|
$line->multicurrency_total_ttc = $object->lines[$i]->multicurrency_total_ttc;
|
||||||
|
|
||||||
$line->fk_fournprice = $object->lines[$i]->fk_fournprice;
|
$line->fk_fournprice = $object->lines[$i]->fk_fournprice;
|
||||||
$marginInfos = getMarginInfos($object->lines[$i]->subprice, $object->lines[$i]->remise_percent, $object->lines[$i]->tva_tx, $object->lines[$i]->localtax1_tx, $object->lines[$i]->localtax2_tx, $object->lines[$i]->fk_fournprice, $object->lines[$i]->pa_ht);
|
$marginInfos = getMarginInfos($object->lines[$i]->subprice, $object->lines[$i]->remise_percent, $object->lines[$i]->tva_tx, $object->lines[$i]->localtax1_tx, $object->lines[$i]->localtax2_tx, $object->lines[$i]->fk_fournprice, $object->lines[$i]->pa_ht);
|
||||||
$line->pa_ht = $marginInfos[0];
|
$line->pa_ht = $marginInfos[0];
|
||||||
@ -1267,6 +1275,7 @@ class Facture extends CommonInvoice
|
|||||||
|
|
||||||
$this->socid = $object->socid;
|
$this->socid = $object->socid;
|
||||||
$this->fk_project = $object->fk_project;
|
$this->fk_project = $object->fk_project;
|
||||||
|
$this->fk_account = $object->fk_account;
|
||||||
$this->cond_reglement_id = $object->cond_reglement_id;
|
$this->cond_reglement_id = $object->cond_reglement_id;
|
||||||
$this->mode_reglement_id = $object->mode_reglement_id;
|
$this->mode_reglement_id = $object->mode_reglement_id;
|
||||||
$this->availability_id = $object->availability_id;
|
$this->availability_id = $object->availability_id;
|
||||||
@ -1388,6 +1397,9 @@ class Facture extends CommonInvoice
|
|||||||
if (!empty($this->total_ttc))
|
if (!empty($this->total_ttc))
|
||||||
$label .= '<br><b>'.$langs->trans('AmountTTC').':</b> '.price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
$label .= '<br><b>'.$langs->trans('AmountTTC').':</b> '.price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if ($moretitle) $label .= ' - '.$moretitle;
|
if ($moretitle) $label .= ' - '.$moretitle;
|
||||||
|
if (isset($this->statut) && isset($this->alreadypaid)) {
|
||||||
|
$label .= '<br><b>'.$langs->trans("Status").":</b> ".$this->getLibStatut(5, $this->alreadypaid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$linkclose = ($target ? ' target="'.$target.'"' : '');
|
$linkclose = ($target ? ' target="'.$target.'"' : '');
|
||||||
@ -2410,12 +2422,23 @@ class Facture extends CommonInvoice
|
|||||||
* @param string $force_number Reference to force on invoice
|
* @param string $force_number Reference to force on invoice
|
||||||
* @param int $idwarehouse Id of warehouse to use for stock decrease if option to decreasenon stock is on (0=no decrease)
|
* @param int $idwarehouse Id of warehouse to use for stock decrease if option to decreasenon stock is on (0=no decrease)
|
||||||
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
|
* @param int $batch_rule [=0] 0 not decrement batch, else batch rule to use
|
||||||
|
* 1=take in batches ordered by sellby and eatby dates
|
||||||
* @return int <0 if KO, 0=Nothing done because invoice is not a draft, >0 if OK
|
* @return int <0 if KO, 0=Nothing done because invoice is not a draft, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function validate($user, $force_number = '', $idwarehouse = 0, $notrigger = 0)
|
public function validate($user, $force_number = '', $idwarehouse = 0, $notrigger = 0, $batch_rule = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
$productStatic = null;
|
||||||
|
$warehouseStatic = null;
|
||||||
|
if ($batch_rule > 0) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/product/class/productbatch.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/product/stock/class/entrepot.class.php';
|
||||||
|
$productStatic = new Product($this->db);
|
||||||
|
$warehouseStatic = new Entrepot($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
@ -2507,7 +2530,7 @@ class Facture extends CommonInvoice
|
|||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = dol_sanitizeFileName($num);
|
||||||
|
|
||||||
if ($num)
|
if ($num)
|
||||||
{
|
{
|
||||||
@ -2557,12 +2580,95 @@ class Facture extends CommonInvoice
|
|||||||
$mouvP = new MouvementStock($this->db);
|
$mouvP = new MouvementStock($this->db);
|
||||||
$mouvP->origin = &$this;
|
$mouvP->origin = &$this;
|
||||||
// We decrease stock for product
|
// We decrease stock for product
|
||||||
if ($this->type == self::TYPE_CREDIT_NOTE) $result = $mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, 0, $langs->trans("InvoiceValidatedInDolibarr", $num));
|
if ($this->type == self::TYPE_CREDIT_NOTE) {
|
||||||
else $result = $mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarr", $num));
|
$result = $mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, 0, $langs->trans("InvoiceValidatedInDolibarr", $num));
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->error = $mouvP->error;
|
$this->error = $mouvP->error;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$is_batch_line = false;
|
||||||
|
if ($batch_rule > 0) {
|
||||||
|
$productStatic->fetch($this->lines[$i]->fk_product);
|
||||||
|
if ($productStatic->hasbatch()) {
|
||||||
|
$is_batch_line = true;
|
||||||
|
$product_qty_remain = $this->lines[$i]->qty;
|
||||||
|
|
||||||
|
$sortfield = null;
|
||||||
|
$sortorder = null;
|
||||||
|
// find all batch order by sellby (DLC) and eatby dates (DLUO) first
|
||||||
|
if ($batch_rule == Productbatch::BATCH_RULE_SELLBY_EATBY_DATES_FIRST) {
|
||||||
|
$sortfield = 'pl.sellby,pl.eatby,pb.qty,pl.rowid';
|
||||||
|
$sortorder = 'ASC,ASC,ASC,ASC';
|
||||||
|
}
|
||||||
|
|
||||||
|
$resBatchList = Productbatch::findAllForProduct($this->db, $productStatic->id, $idwarehouse, (!empty($conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER) ? null : 0), $sortfield, $sortorder);
|
||||||
|
if (!is_array($resBatchList)) {
|
||||||
|
$error++;
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
$batchList = $resBatchList;
|
||||||
|
if (empty($batchList)) {
|
||||||
|
$error++;
|
||||||
|
$langs->load('errors');
|
||||||
|
$warehouseStatic->fetch($idwarehouse);
|
||||||
|
$this->error = $langs->trans('ErrorBatchNoFoundForProductInWarehouse', $productStatic->label, $warehouseStatic->ref);
|
||||||
|
dol_syslog(__METHOD__ . ' Error: ' . $langs->transnoentitiesnoconv('ErrorBatchNoFoundForProductInWarehouse', $productStatic->label, $warehouseStatic->ref), LOG_ERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($batchList as $batch) {
|
||||||
|
if ($batch->qty <= 0) continue; // try to decrement only batches have positive quantity first
|
||||||
|
|
||||||
|
// enough quantity in this batch
|
||||||
|
if ($batch->qty >= $product_qty_remain) {
|
||||||
|
$product_batch_qty = $product_qty_remain;
|
||||||
|
} // not enough (take all in batch)
|
||||||
|
else {
|
||||||
|
$product_batch_qty = $batch->qty;
|
||||||
|
}
|
||||||
|
$result = $mouvP->livraison($user, $productStatic->id, $idwarehouse, $product_batch_qty, $this->lines[$i]->subprice, $langs->trans('InvoiceValidatedInDolibarr', $num), '', '', '', $batch->batch);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
$this->error = $mouvP->error;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$product_qty_remain -= $product_batch_qty;
|
||||||
|
// all product quantity was decremented
|
||||||
|
if ($product_qty_remain <= 0) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error && $product_qty_remain > 0) {
|
||||||
|
if ($conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER) {
|
||||||
|
// take in the first batch
|
||||||
|
$batch = $batchList[0];
|
||||||
|
$result = $mouvP->livraison($user, $productStatic->id, $idwarehouse, $product_qty_remain, $this->lines[$i]->subprice, $langs->trans('InvoiceValidatedInDolibarr', $num), '', '', '', $batch->batch);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
$this->error = $mouvP->error;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
$langs->load('errors');
|
||||||
|
$warehouseStatic->fetch($idwarehouse);
|
||||||
|
$this->error = $langs->trans('ErrorBatchNoFoundEnoughQuantityForProductInWarehouse', $productStatic->label, $warehouseStatic->ref);
|
||||||
|
dol_syslog(__METHOD__ . ' Error: ' . $langs->transnoentitiesnoconv('ErrorBatchNoFoundEnoughQuantityForProductInWarehouse', $productStatic->label, $warehouseStatic->ref), LOG_ERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$is_batch_line) {
|
||||||
|
$result = $mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarr", $num));
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
$this->error = $mouvP->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,10 +33,7 @@ require '../../main.inc.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
if (!empty($conf->projet->enabled)) {
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
//require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php';
|
|
||||||
}
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php';
|
||||||
@ -54,6 +51,8 @@ $cancel = GETPOST('cancel', 'alpha');
|
|||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'invoicetemplatelist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'invoicetemplatelist'; // To manage different context of search
|
||||||
|
|
||||||
|
$socid = GETPOST('socid', 'int');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$id = (GETPOST('facid', 'int') ?GETPOST('facid', 'int') : GETPOST('id', 'int'));
|
$id = (GETPOST('facid', 'int') ?GETPOST('facid', 'int') : GETPOST('id', 'int'));
|
||||||
$lineid = GETPOST('lineid', 'int');
|
$lineid = GETPOST('lineid', 'int');
|
||||||
@ -62,7 +61,6 @@ if ($user->socid) $socid = $user->socid;
|
|||||||
$objecttype = 'facture_rec';
|
$objecttype = 'facture_rec';
|
||||||
if ($action == "create" || $action == "add") $objecttype = '';
|
if ($action == "create" || $action == "add") $objecttype = '';
|
||||||
$result = restrictedArea($user, 'facture', $id, $objecttype);
|
$result = restrictedArea($user, 'facture', $id, $objecttype);
|
||||||
$projectid = GETPOST('projectid', 'int');
|
|
||||||
|
|
||||||
$search_ref = GETPOST('search_ref');
|
$search_ref = GETPOST('search_ref');
|
||||||
$search_societe = GETPOST('search_societe');
|
$search_societe = GETPOST('search_societe');
|
||||||
@ -146,6 +144,13 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count
|
|||||||
$object->fields = dol_sort_array($object->fields, 'position');
|
$object->fields = dol_sort_array($object->fields, 'position');
|
||||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||||
|
|
||||||
|
if ($socid > 0) {
|
||||||
|
$tmpthirdparty = new Societe($db);
|
||||||
|
$res = $tmpthirdparty->fetch($socid);
|
||||||
|
if ($res > 0) $search_societe = $tmpthirdparty->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -218,6 +223,7 @@ $today = dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray['
|
|||||||
/*
|
/*
|
||||||
* List mode
|
* List mode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$sql = "SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre as title, f.total, f.tva as total_vat, f.total_ttc, f.frequency, f.unit_frequency,";
|
$sql = "SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre as title, f.total, f.tva as total_vat, f.total_ttc, f.frequency, f.unit_frequency,";
|
||||||
$sql .= " f.nb_gen_done, f.nb_gen_max, f.date_last_gen, f.date_when, f.suspended,";
|
$sql .= " f.nb_gen_done, f.nb_gen_max, f.date_last_gen, f.date_when, f.suspended,";
|
||||||
$sql .= " f.datec, f.tms,";
|
$sql .= " f.datec, f.tms,";
|
||||||
@ -243,6 +249,7 @@ if (!$user->rights->societe->client->voir && !$socid) {
|
|||||||
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||||
}
|
}
|
||||||
if ($search_ref) $sql .= natural_search('f.titre', $search_ref);
|
if ($search_ref) $sql .= natural_search('f.titre', $search_ref);
|
||||||
|
if ($socid) $sql .= ' AND s.rowid = '.(int) $socid;
|
||||||
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
||||||
if ($search_montant_ht != '') $sql .= natural_search('f.total', $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql .= natural_search('f.total', $search_montant_ht, 1);
|
||||||
if ($search_montant_vat != '') $sql .= natural_search('f.tva', $search_montant_vat, 1);
|
if ($search_montant_vat != '') $sql .= natural_search('f.tva', $search_montant_vat, 1);
|
||||||
@ -286,7 +293,7 @@ if ($resql)
|
|||||||
$param = '';
|
$param = '';
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage);
|
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage);
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
|
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
|
||||||
if ($socid) $param .= '&socid='.urlencode($socid);
|
if ($socid > 0) $param .= '&socid='.urlencode($socid);
|
||||||
if ($search_day) $param .= '&search_day='.urlencode($search_day);
|
if ($search_day) $param .= '&search_day='.urlencode($search_day);
|
||||||
if ($search_month) $param .= '&search_month='.urlencode($search_month);
|
if ($search_month) $param .= '&search_month='.urlencode($search_month);
|
||||||
if ($search_year) $param .= '&search_year='.urlencode($search_year);
|
if ($search_year) $param .= '&search_year='.urlencode($search_year);
|
||||||
@ -299,12 +306,11 @@ if ($resql)
|
|||||||
if ($search_montant_vat != '') $param .= '&search_montant_vat='.urlencode($search_montant_vat);
|
if ($search_montant_vat != '') $param .= '&search_montant_vat='.urlencode($search_montant_vat);
|
||||||
if ($search_montant_ttc != '') $param .= '&search_montant_ttc='.urlencode($search_montant_ttc);
|
if ($search_montant_ttc != '') $param .= '&search_montant_ttc='.urlencode($search_montant_ttc);
|
||||||
if ($search_payment_mode != '') $param .= '&search_payment_mode='.urlencode($search_payment_mode);
|
if ($search_payment_mode != '') $param .= '&search_payment_mode='.urlencode($search_payment_mode);
|
||||||
if ($search_payment_type != '') $param .= '&search_payment_type='.urlencode($search_payment_type);
|
if ($search_payment_term != '') $param .= '&search_payment_term='.urlencode($search_payment_term);
|
||||||
if ($search_recurring != '' && $search_recurrning != '-1') $param .= '&search_recurring='.urlencode($search_recurring);
|
if ($search_recurring != '' && $search_recurrning != '-1') $param .= '&search_recurring='.urlencode($search_recurring);
|
||||||
if ($search_frequency > 0) $param .= '&search_frequency='.urlencode($search_frequency);
|
if ($search_frequency > 0) $param .= '&search_frequency='.urlencode($search_frequency);
|
||||||
if ($search_unit_frequency != '') $param .= '&search_unit_frequency='.urlencode($search_unit_frequency);
|
if ($search_unit_frequency != '') $param .= '&search_unit_frequency='.urlencode($search_unit_frequency);
|
||||||
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
|
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
|
||||||
if ($option) $param .= "&option=".urlencode($option);
|
|
||||||
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
@ -326,12 +332,16 @@ if ($resql)
|
|||||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||||
print '<input type="hidden" name="viewstatut" value="'.$viewstatut.'">';
|
print '<input type="hidden" name="viewstatut" value="'.$viewstatut.'">';
|
||||||
|
|
||||||
print_barre_liste($langs->trans("RepeatableInvoices"), $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit);
|
$title = $langs->trans("RepeatableInvoices");
|
||||||
|
|
||||||
|
print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'invoicing', 0, '', '', $limit);
|
||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'</span><br><br>';
|
print '<span class="opacitymedium">'.$langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'</span><br><br>';
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
|
$moreforfilter = '';
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||||
|
|
||||||
@ -467,7 +477,6 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
if (!empty($arrayfields['f.titre']['checked'])) print_liste_field_titre($arrayfields['f.titre']['label'], $_SERVER['PHP_SELF'], "f.titre", "", $param, "", $sortfield, $sortorder);
|
if (!empty($arrayfields['f.titre']['checked'])) print_liste_field_titre($arrayfields['f.titre']['label'], $_SERVER['PHP_SELF'], "f.titre", "", $param, "", $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER['PHP_SELF'], "s.nom", "", $param, "", $sortfield, $sortorder);
|
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER['PHP_SELF'], "s.nom", "", $param, "", $sortfield, $sortorder);
|
||||||
@ -527,21 +536,21 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
if (!empty($arrayfields['f.total']['checked']))
|
if (!empty($arrayfields['f.total']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="right">'.price($objp->total).'</td>'."\n";
|
print '<td class="nowrap right">'.price($objp->total).'</td>'."\n";
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.total';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.total';
|
||||||
$totalarray['val']['f.total'] += $objp->total;
|
$totalarray['val']['f.total'] += $objp->total;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['f.tva']['checked']))
|
if (!empty($arrayfields['f.tva']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="right">'.price($objp->total_vat).'</td>'."\n";
|
print '<td class="nowrap right">'.price($objp->total_vat).'</td>'."\n";
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.tva';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.tva';
|
||||||
$totalarray['val']['f.tva'] += $objp->total_vat;
|
$totalarray['val']['f.tva'] += $objp->total_vat;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['f.total_ttc']['checked']))
|
if (!empty($arrayfields['f.total_ttc']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="right">'.price($objp->total_ttc).'</td>'."\n";
|
print '<td class="nowrap right">'.price($objp->total_ttc).'</td>'."\n";
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.total_ttc';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'f.total_ttc';
|
||||||
$totalarray['val']['f.total_ttc'] += $objp->total_ttc;
|
$totalarray['val']['f.total_ttc'] += $objp->total_ttc;
|
||||||
|
|||||||
@ -87,6 +87,11 @@ $search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
|||||||
$search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha');
|
$search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha');
|
||||||
$search_montant_localtax2 = GETPOST('search_montant_localtax2', 'alpha');
|
$search_montant_localtax2 = GETPOST('search_montant_localtax2', 'alpha');
|
||||||
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
||||||
|
$search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha');
|
||||||
|
$search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha');
|
||||||
|
$search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha');
|
||||||
|
$search_multicurrency_montant_vat = GETPOST('search_multicurrency_montant_vat', 'alpha');
|
||||||
|
$search_multicurrency_montant_ttc = GETPOST('search_multicurrency_montant_ttc', 'alpha');
|
||||||
$search_status = GETPOST('search_status', 'intcomma');
|
$search_status = GETPOST('search_status', 'intcomma');
|
||||||
$search_paymentmode = GETPOST('search_paymentmode', 'int');
|
$search_paymentmode = GETPOST('search_paymentmode', 'int');
|
||||||
$search_paymentterms = GETPOST('search_paymentterms', 'int');
|
$search_paymentterms = GETPOST('search_paymentterms', 'int');
|
||||||
@ -183,6 +188,13 @@ $arrayfields = array(
|
|||||||
'f.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0, 'position'=>130),
|
'f.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0, 'position'=>130),
|
||||||
'dynamount_payed'=>array('label'=>"Received", 'checked'=>0, 'position'=>140),
|
'dynamount_payed'=>array('label'=>"Received", 'checked'=>0, 'position'=>140),
|
||||||
'rtp'=>array('label'=>"Rest", 'checked'=>0, 'position'=>150), // Not enabled by default because slow
|
'rtp'=>array('label'=>"Rest", 'checked'=>0, 'position'=>150), // Not enabled by default because slow
|
||||||
|
'f.multicurrency_code'=>array('label'=>'Currency', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>160),
|
||||||
|
'f.multicurrency_tx'=>array('label'=>'CurrencyRate', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>170),
|
||||||
|
'f.multicurrency_total_ht'=>array('label'=>'MulticurrencyAmountHT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>180),
|
||||||
|
'f.multicurrency_total_vat'=>array('label'=>'MulticurrencyAmountVAT', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>190),
|
||||||
|
'f.multicurrency_total_ttc'=>array('label'=>'MulticurrencyAmountTTC', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>200),
|
||||||
|
'multicurrency_dynamount_payed'=>array('label'=>'MulticurrencyAlreadyPaid', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>210),
|
||||||
|
'multicurrency_rtp'=>array('label'=>'MulticurrencyRemainderToPay', 'checked'=>0, 'enabled'=>(empty($conf->multicurrency->enabled) ? 0 : 1), 'position'=>220), // Not enabled by default because slow
|
||||||
'f.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
'f.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
||||||
'f.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>500),
|
'f.tms'=>array('label'=>"DateModificationShort", 'checked'=>0, 'position'=>500),
|
||||||
'f.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
'f.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
||||||
@ -236,6 +248,11 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter',
|
|||||||
$search_montant_localtax1 = '';
|
$search_montant_localtax1 = '';
|
||||||
$search_montant_localtax2 = '';
|
$search_montant_localtax2 = '';
|
||||||
$search_montant_ttc = '';
|
$search_montant_ttc = '';
|
||||||
|
$search_multicurrency_code = '';
|
||||||
|
$search_multicurrency_tx = '';
|
||||||
|
$search_multicurrency_montant_ht = '';
|
||||||
|
$search_multicurrency_montant_vat = '';
|
||||||
|
$search_multicurrency_montant_ttc = '';
|
||||||
$search_status = '';
|
$search_status = '';
|
||||||
$search_paymentmode = '';
|
$search_paymentmode = '';
|
||||||
$search_paymentterms = '';
|
$search_paymentterms = '';
|
||||||
@ -383,6 +400,7 @@ $sql = 'SELECT';
|
|||||||
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
||||||
$sql .= ' f.rowid as id, f.ref, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.fk_cond_reglement, f.total as total_ht, f.tva as total_vat, f.total_ttc,';
|
$sql .= ' f.rowid as id, f.ref, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.fk_cond_reglement, f.total as total_ht, f.tva as total_vat, f.total_ttc,';
|
||||||
$sql .= ' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,';
|
$sql .= ' f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,';
|
||||||
|
$sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,';
|
||||||
$sql .= ' f.datef as df, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,';
|
$sql .= ' f.datef as df, f.date_lim_reglement as datelimite, f.module_source, f.pos_source,';
|
||||||
$sql .= ' f.paye as paye, f.fk_statut, f.close_code,';
|
$sql .= ' f.paye as paye, f.fk_statut, f.close_code,';
|
||||||
$sql .= ' f.datec as date_creation, f.tms as date_update, f.date_closing as date_closing,';
|
$sql .= ' f.datec as date_creation, f.tms as date_update, f.date_closing as date_closing,';
|
||||||
@ -394,7 +412,7 @@ $sql .= " country.code as country_code,";
|
|||||||
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label";
|
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label";
|
||||||
// We need dynamount_payed to be able to sort on status (value is surely wrong because we can count several lines several times due to other left join or link with contacts. But what we need is just 0 or > 0)
|
// We need dynamount_payed to be able to sort on status (value is surely wrong because we can count several lines several times due to other left join or link with contacts. But what we need is just 0 or > 0)
|
||||||
// TODO Better solution to be able to sort on already payed or remain to pay is to store amount_payed in a denormalized field.
|
// TODO Better solution to be able to sort on already payed or remain to pay is to store amount_payed in a denormalized field.
|
||||||
if (!$sall) $sql .= ', SUM(pf.amount) as dynamount_payed';
|
if (!$sall) $sql .= ', SUM(pf.amount) as dynamount_payed, SUM(pf.multicurrency_amount) as multicurrency_dynamount_payed';
|
||||||
if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc";
|
if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc";
|
||||||
// Add fields from extrafields
|
// Add fields from extrafields
|
||||||
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
|
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
@ -459,6 +477,11 @@ if ($search_montant_vat != '') $sql .= natural_search('f.tva', $search_montant_v
|
|||||||
if ($search_montant_localtax1 != '') $sql .= natural_search('f.localtax1', $search_montant_localtax1, 1);
|
if ($search_montant_localtax1 != '') $sql .= natural_search('f.localtax1', $search_montant_localtax1, 1);
|
||||||
if ($search_montant_localtax2 != '') $sql .= natural_search('f.localtax2', $search_montant_localtax2, 1);
|
if ($search_montant_localtax2 != '') $sql .= natural_search('f.localtax2', $search_montant_localtax2, 1);
|
||||||
if ($search_montant_ttc != '') $sql .= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
if ($search_montant_ttc != '') $sql .= natural_search('f.total_ttc', $search_montant_ttc, 1);
|
||||||
|
if ($search_multicurrency_code != '') $sql .= ' AND f.multicurrency_code = "' . $db->escape($search_multicurrency_code) . '"';
|
||||||
|
if ($search_multicurrency_tx != '') $sql .= natural_search('f.multicurrency_tx', $search_multicurrency_tx, 1);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $sql .= natural_search('f.multicurrency_total_ht', $search_multicurrency_montant_ht, 1);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $sql .= natural_search('f.multicurrency_total_tva', $search_multicurrency_montant_vat, 1);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $sql .= natural_search('f.multicurrency_total_ttc', $search_multicurrency_montant_ttc, 1);
|
||||||
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
||||||
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
||||||
if ($search_status != '-1' && $search_status != '')
|
if ($search_status != '-1' && $search_status != '')
|
||||||
@ -591,6 +614,11 @@ if ($resql)
|
|||||||
if ($search_montant_localtax1 != '') $param .= '&search_montant_localtax1='.urlencode($search_montant_localtax1);
|
if ($search_montant_localtax1 != '') $param .= '&search_montant_localtax1='.urlencode($search_montant_localtax1);
|
||||||
if ($search_montant_localtax2 != '') $param .= '&search_montant_localtax2='.urlencode($search_montant_localtax2);
|
if ($search_montant_localtax2 != '') $param .= '&search_montant_localtax2='.urlencode($search_montant_localtax2);
|
||||||
if ($search_montant_ttc != '') $param .= '&search_montant_ttc='.urlencode($search_montant_ttc);
|
if ($search_montant_ttc != '') $param .= '&search_montant_ttc='.urlencode($search_montant_ttc);
|
||||||
|
if ($search_multicurrency_code != '') $param .= '&search_multicurrency_code='.urlencode($search_multicurrency_code);
|
||||||
|
if ($search_multicurrency_tx != '') $param .= '&search_multicurrency_tx='.urlencode($search_multicurrency_tx);
|
||||||
|
if ($search_multicurrency_montant_ht != '') $param .= '&search_multicurrency_montant_ht='.urlencode($search_multicurrency_montant_ht);
|
||||||
|
if ($search_multicurrency_montant_vat != '') $param .= '&search_multicurrency_montant_vat='.urlencode($search_multicurrency_montant_vat);
|
||||||
|
if ($search_multicurrency_montant_ttc != '') $param .= '&search_multicurrency_montant_ttc='.urlencode($search_multicurrency_montant_ttc);
|
||||||
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
|
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
|
||||||
if ($search_paymentmode > 0) $param .= '&search_paymentmode='.urlencode($search_paymentmode);
|
if ($search_paymentmode > 0) $param .= '&search_paymentmode='.urlencode($search_paymentmode);
|
||||||
if ($search_paymentterms > 0) $param .= '&search_paymentterms='.urlencode($search_paymentterms);
|
if ($search_paymentterms > 0) $param .= '&search_paymentterms='.urlencode($search_paymentterms);
|
||||||
@ -878,13 +906,11 @@ if ($resql)
|
|||||||
print '<input class="flat" type="text" size="4" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).'">';
|
print '<input class="flat" type="text" size="4" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($arrayfields['f.retained_warranty']['checked']))
|
if (!empty($arrayfields['f.retained_warranty']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre" align="right">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($arrayfields['dynamount_payed']['checked']))
|
if (!empty($arrayfields['dynamount_payed']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre right">';
|
print '<td class="liste_titre right">';
|
||||||
@ -895,6 +921,51 @@ if ($resql)
|
|||||||
print '<td class="liste_titre right">';
|
print '<td class="liste_titre right">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['f.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
// Currency
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print $form->selectMultiCurrency($search_multicurrency_code, 'search_multicurrency_code', 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['f.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
// Currency rate
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_tx" value="'.dol_escape_htmltag($search_multicurrency_tx).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ht" value="'.dol_escape_htmltag($search_multicurrency_montant_ht).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_vat" value="'.dol_escape_htmltag($search_multicurrency_montant_vat).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
// Amount
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '<input class="flat" type="text" size="4" name="search_multicurrency_montant_ttc" value="'.dol_escape_htmltag($search_multicurrency_montant_ttc).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['multicurrency_dynamount_payed']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['multicurrency_rtp']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre right">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['f.date_closing']['checked']))
|
if (!empty($arrayfields['f.date_closing']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
@ -961,6 +1032,13 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['f.retained_warranty']['checked'])) print_liste_field_titre($arrayfields['f.retained_warranty']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'align="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['f.retained_warranty']['checked'])) print_liste_field_titre($arrayfields['f.retained_warranty']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'align="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['dynamount_payed']['checked'])) print_liste_field_titre($arrayfields['dynamount_payed']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['dynamount_payed']['checked'])) print_liste_field_titre($arrayfields['dynamount_payed']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['rtp']['checked'])) print_liste_field_titre($arrayfields['rtp']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['rtp']['checked'])) print_liste_field_titre($arrayfields['rtp']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['f.multicurrency_code']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_code']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_code', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['f.multicurrency_tx']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_tx']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_tx', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ht']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_total_ht']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_total_ht', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_vat']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_total_vat']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_total_tva', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ttc']['checked'])) print_liste_field_titre($arrayfields['f.multicurrency_total_ttc']['label'], $_SERVER['PHP_SELF'], 'f.multicurrency_total_ttc', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['multicurrency_dynamount_payed']['checked'])) print_liste_field_titre($arrayfields['multicurrency_dynamount_payed']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['multicurrency_rtp']['checked'])) print_liste_field_titre($arrayfields['multicurrency_rtp']['label'], $_SERVER['PHP_SELF'], '', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
// Extra fields
|
// Extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||||
// Hook fields
|
// Hook fields
|
||||||
@ -994,6 +1072,11 @@ if ($resql)
|
|||||||
$facturestatic->total_ht = $obj->total_ht;
|
$facturestatic->total_ht = $obj->total_ht;
|
||||||
$facturestatic->total_tva = $obj->total_vat;
|
$facturestatic->total_tva = $obj->total_vat;
|
||||||
$facturestatic->total_ttc = $obj->total_ttc;
|
$facturestatic->total_ttc = $obj->total_ttc;
|
||||||
|
$facturestatic->multicurrency_code = $obj->multicurrency_code;
|
||||||
|
$facturestatic->multicurrency_tx = $obj->multicurrency_tx;
|
||||||
|
$facturestatic->multicurrency_total_ht = $obj->multicurrency_total_ht;
|
||||||
|
$facturestatic->multicurrency_total_tva = $obj->multicurrency_total_vat;
|
||||||
|
$facturestatic->multicurrency_total_ttc = $obj->multicurrency_total_ttc;
|
||||||
$facturestatic->statut = $obj->fk_statut;
|
$facturestatic->statut = $obj->fk_statut;
|
||||||
$facturestatic->close_code = $obj->close_code;
|
$facturestatic->close_code = $obj->close_code;
|
||||||
$facturestatic->total_ttc = $obj->total_ttc;
|
$facturestatic->total_ttc = $obj->total_ttc;
|
||||||
@ -1031,16 +1114,27 @@ if ($resql)
|
|||||||
$totaldeposits = $facturestatic->getSumDepositsUsed();
|
$totaldeposits = $facturestatic->getSumDepositsUsed();
|
||||||
$totalpay = $paiement + $totalcreditnotes + $totaldeposits;
|
$totalpay = $paiement + $totalcreditnotes + $totaldeposits;
|
||||||
$remaintopay = price2num($facturestatic->total_ttc - $totalpay);
|
$remaintopay = price2num($facturestatic->total_ttc - $totalpay);
|
||||||
|
$multicurrency_paiement = $facturestatic->getSommePaiement(1);
|
||||||
|
$multicurrency_totalcreditnotes = $facturestatic->getSumCreditNotesUsed(1);
|
||||||
|
$multicurrency_totaldeposits = $facturestatic->getSumDepositsUsed(1);
|
||||||
|
$multicurrency_totalpay = $multicurrency_paiement + $multicurrency_totalcreditnotes + $multicurrency_totaldeposits;
|
||||||
|
$multicurrency_remaintopay = price2num($facturestatic->multicurrency_total_ttc - $multicurrency_totalpay);
|
||||||
|
|
||||||
if ($facturestatic->statut == Facture::STATUS_CLOSED && $facturestatic->close_code == 'discount_vat') { // If invoice closed with discount for anticipated payment
|
if ($facturestatic->statut == Facture::STATUS_CLOSED && $facturestatic->close_code == 'discount_vat') { // If invoice closed with discount for anticipated payment
|
||||||
$remaintopay = 0;
|
$remaintopay = 0;
|
||||||
|
$multicurrency_remaintopay = 0;
|
||||||
}
|
}
|
||||||
if ($facturestatic->type == Facture::TYPE_CREDIT_NOTE && $obj->paye == 1) { // If credit note closed, we take into account the amount not yet consummed
|
if ($facturestatic->type == Facture::TYPE_CREDIT_NOTE && $obj->paye == 1) { // If credit note closed, we take into account the amount not yet consummed
|
||||||
$remaincreditnote = $discount->getAvailableDiscounts($obj->fk_soc, '', 'rc.fk_facture_source='.$facturestatic->id);
|
$remaincreditnote = $discount->getAvailableDiscounts($thirdpartystatic, '', 'rc.fk_facture_source='.$facturestatic->id);
|
||||||
$remaintopay = -$remaincreditnote;
|
$remaintopay = -$remaincreditnote;
|
||||||
$totalpay = price2num($facturestatic->total_ttc - $remaintopay);
|
$totalpay = price2num($facturestatic->total_ttc - $remaintopay);
|
||||||
|
$multicurrency_remaincreditnote = $discount->getAvailableDiscounts($thirdpartystatic, '', 'rc.fk_facture_source='.$facturestatic->id, 0, 0, 1);
|
||||||
|
$multicurrency_remaintopay = -$multicurrency_remaincreditnote;
|
||||||
|
$multicurrency_totalpay = price2num($facturestatic->multicurrency_total_ttc - $multicurrency_remaintopay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$facturestatic->alreadypaid = $paiement;
|
||||||
|
|
||||||
print '<tr class="oddeven"';
|
print '<tr class="oddeven"';
|
||||||
if ($contextpage == 'poslist')
|
if ($contextpage == 'poslist')
|
||||||
{
|
{
|
||||||
@ -1304,6 +1398,55 @@ if ($resql)
|
|||||||
$totalarray['val']['rtp'] += $remaintopay;
|
$totalarray['val']['rtp'] += $remaintopay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Currency
|
||||||
|
if (!empty($arrayfields['f.multicurrency_code']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">'.$obj->multicurrency_code . ' - ' . $langs->trans('Currency' . $obj->multicurrency_code)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Currency rate
|
||||||
|
if (!empty($arrayfields['f.multicurrency_tx']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
$form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code);
|
||||||
|
print "</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount HT
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ht']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ht)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount VAT
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_vat']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_vat)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Amount TTC
|
||||||
|
if (!empty($arrayfields['f.multicurrency_total_ttc']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.price($obj->multicurrency_total_ttc)."</td>\n";
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['multicurrency_dynamount_payed']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">'.(!empty($multicurrency_totalpay) ?price($multicurrency_totalpay, 0, $langs) : ' ').'</td>'; // TODO Use a denormalized field
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pending amount
|
||||||
|
if (!empty($arrayfields['multicurrency_rtp']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="right nowrap">';
|
||||||
|
print (!empty($multicurrency_remaintopay) ? price($multicurrency_remaintopay, 0, $langs) : ' ');
|
||||||
|
print '</td>'; // TODO Use a denormalized field
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
// Extra fields
|
// Extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
|
|||||||
@ -455,7 +455,7 @@ if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->
|
|||||||
$sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_tva, ff.total_ttc, ff.tms, ff.paye";
|
$sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_tva, ff.total_ttc, ff.tms, ff.paye";
|
||||||
$sql .= ", s.nom as name";
|
$sql .= ", s.nom as name";
|
||||||
$sql .= ", s.rowid as socid";
|
$sql .= ", s.rowid as socid";
|
||||||
$sql .= ", s.code_fournisseur, s.code_compta_fournisseur";
|
$sql .= ", s.code_fournisseur, s.code_compta_fournisseur, s.email";
|
||||||
$sql .= ", SUM(pf.amount) as am";
|
$sql .= ", SUM(pf.amount) as am";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff";
|
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn";
|
||||||
@ -503,10 +503,14 @@ if (!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->
|
|||||||
|
|
||||||
$thirdpartystatic->id = $obj->socid;
|
$thirdpartystatic->id = $obj->socid;
|
||||||
$thirdpartystatic->name = $obj->name;
|
$thirdpartystatic->name = $obj->name;
|
||||||
|
$thirdpartystatic->email = $obj->email;
|
||||||
|
$thirdpartystatic->country_id = 0;
|
||||||
|
$thirdpartystatic->country_code = '';
|
||||||
|
$thirdpartystatic->client = 0;
|
||||||
$thirdpartystatic->fournisseur = 1;
|
$thirdpartystatic->fournisseur = 1;
|
||||||
//$thirdpartystatic->code_client = $obj->code_client;
|
$thirdpartystatic->code_client = '';
|
||||||
$thirdpartystatic->code_fournisseur = $obj->code_fournisseur;
|
$thirdpartystatic->code_fournisseur = $obj->code_fournisseur;
|
||||||
//$thirdpartystatic->code_compta = $obj->code_compta;
|
$thirdpartystatic->code_compta = '';
|
||||||
$thirdpartystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
|
$thirdpartystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
|
||||||
|
|
||||||
print '<tr class="oddeven nowraponall"><td>';
|
print '<tr class="oddeven nowraponall"><td>';
|
||||||
|
|||||||
@ -67,8 +67,7 @@ if (!$sortorder) $sortorder = 'ASC';
|
|||||||
|
|
||||||
// Date range
|
// Date range
|
||||||
$year = GETPOST('year', 'int');
|
$year = GETPOST('year', 'int');
|
||||||
if (empty($year))
|
if (empty($year)) {
|
||||||
{
|
|
||||||
$year_current = strftime("%Y", dol_now());
|
$year_current = strftime("%Y", dol_now());
|
||||||
$month_current = strftime("%m", dol_now());
|
$month_current = strftime("%m", dol_now());
|
||||||
$year_start = $year_current;
|
$year_start = $year_current;
|
||||||
@ -114,7 +113,7 @@ $tmps = dol_getdate($date_start);
|
|||||||
$year_start = $tmps['year'];
|
$year_start = $tmps['year'];
|
||||||
$tmpe = dol_getdate($date_end);
|
$tmpe = dol_getdate($date_end);
|
||||||
$year_end = $tmpe['year'];
|
$year_end = $tmpe['year'];
|
||||||
$nbofyear = ($year_end - $start_year) + 1;
|
$nbofyear = ($year_end - $year_start) + 1;
|
||||||
//var_dump("year_start=".$year_start." year_end=".$year_end." nbofyear=".$nbofyear." date_start=".dol_print_date($date_start, 'dayhour')." date_end=".dol_print_date($date_end, 'dayhour'));
|
//var_dump("year_start=".$year_start." year_end=".$year_end." nbofyear=".$nbofyear." date_start=".dol_print_date($date_start, 'dayhour')." date_end=".dol_print_date($date_end, 'dayhour'));
|
||||||
|
|
||||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES' or 'BOOKKEEPING')
|
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES' or 'BOOKKEEPING')
|
||||||
@ -193,17 +192,21 @@ if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING')
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show report array
|
// Show report array
|
||||||
$param = '&modecompta='.$modecompta;
|
$param = '&modecompta='.urlencode($modecompta).'&showaccountdetail='.urlencode($showaccountdetail);
|
||||||
if ($date_startday) $param .= '&date_startday='.$date_startday;
|
if ($date_startday) $param .= '&date_startday='.$date_startday;
|
||||||
if ($date_startmonth) $param .= '&date_startmonth='.$date_startmonth;
|
if ($date_startmonth) $param .= '&date_startmonth='.$date_startmonth;
|
||||||
if ($date_startyear) $param .= '&date_startyear='.$date_startyear;
|
if ($date_startyear) $param .= '&date_startyear='.$date_startyear;
|
||||||
if ($date_endday) $param .= '&date_endday='.$date_endday;
|
if ($date_endday) $param .= '&date_endday='.$date_endday;
|
||||||
if ($date_endmonth) $param .= '&date_endmonth='.$date_endmonth;
|
if ($date_endmonth) $param .= '&date_endmonth='.$date_endmonth;
|
||||||
if ($date_endyear) $param .= '&date_endyear='.$date_startyear;
|
if ($date_endyear) $param .= '&date_endyear='.$date_endyear;
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
|
if ($modecompta == 'BOOKKEEPING') {
|
||||||
print_liste_field_titre("PredefinedGroups", $_SERVER["PHP_SELF"], 'f.thirdparty_code,f.rowid', '', $param, '', $sortfield, $sortorder, 'width200 ');
|
print_liste_field_titre("PredefinedGroups", $_SERVER["PHP_SELF"], 'f.thirdparty_code,f.rowid', '', $param, '', $sortfield, $sortorder, 'width200 ');
|
||||||
|
} else {
|
||||||
|
print_liste_field_titre("", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'width200 ');
|
||||||
|
}
|
||||||
print_liste_field_titre('');
|
print_liste_field_titre('');
|
||||||
if ($modecompta == 'BOOKKEEPING')
|
if ($modecompta == 'BOOKKEEPING')
|
||||||
{
|
{
|
||||||
@ -243,7 +246,7 @@ if ($modecompta == 'BOOKKEEPING')
|
|||||||
$sql .= " AND f.entity = ".$conf->entity;
|
$sql .= " AND f.entity = ".$conf->entity;
|
||||||
if (!empty($date_start) && !empty($date_end))
|
if (!empty($date_start) && !empty($date_end))
|
||||||
$sql .= " AND f.doc_date >= '".$db->idate($date_start)."' AND f.doc_date <= '".$db->idate($date_end)."'";
|
$sql .= " AND f.doc_date >= '".$db->idate($date_start)."' AND f.doc_date <= '".$db->idate($date_end)."'";
|
||||||
$sql .= " GROUP BY pcg_type, pcg_subtype, name, socid";
|
$sql .= " GROUP BY pcg_type, name, socid";
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
$oldpcgtype = '';
|
$oldpcgtype = '';
|
||||||
|
|||||||
@ -279,7 +279,7 @@ if ($action == 'create')
|
|||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans("BankAccount").'</td><td>';
|
print '<tr><td class="fieldrequired">'.$langs->trans("BankAccount").'</td><td>';
|
||||||
$form->select_comptes($_POST["accountid"], "accountid", 0, "courant=1", 1); // Affiche liste des comptes courant
|
$form->select_comptes(GETPOST("accountid", 'int'), "accountid", 0, "courant=1", 2); // List of bank account available
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -70,8 +70,8 @@ if (!$sortfield) $sortfield = "name";
|
|||||||
$object = new Tva($db);
|
$object = new Tva($db);
|
||||||
if ($id > 0) $object->fetch($id);
|
if ($id > 0) $object->fetch($id);
|
||||||
|
|
||||||
$upload_dir = $conf->tax->dir_output.'/'.dol_sanitizeFileName($object->ref);
|
$upload_dir = $conf->tax->dir_output.'/vat/'.dol_sanitizeFileName($object->ref);
|
||||||
$modulepart = 'tax';
|
$modulepart = 'tax-vat';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -144,7 +144,6 @@ if ($object->id)
|
|||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
$modulepart = 'tax';
|
|
||||||
$permission = $user->rights->tax->charges->creer;
|
$permission = $user->rights->tax->charges->creer;
|
||||||
$permtoedit = $user->rights->fournisseur->facture->creer;
|
$permtoedit = $user->rights->fournisseur->facture->creer;
|
||||||
$param = '&id='.$object->id;
|
$param = '&id='.$object->id;
|
||||||
|
|||||||
@ -314,9 +314,9 @@ class Contact extends CommonObject
|
|||||||
// Clean parameters
|
// Clean parameters
|
||||||
$this->lastname = $this->lastname ?trim($this->lastname) : trim($this->name);
|
$this->lastname = $this->lastname ?trim($this->lastname) : trim($this->name);
|
||||||
$this->firstname = trim($this->firstname);
|
$this->firstname = trim($this->firstname);
|
||||||
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->lastname = ucwords($this->lastname);
|
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->lastname = ucwords(strtolower($this->lastname));
|
||||||
if (!empty($conf->global->MAIN_ALL_TO_UPPER)) $this->lastname = strtoupper($this->lastname);
|
if (!empty($conf->global->MAIN_ALL_TO_UPPER)) $this->lastname = strtoupper($this->lastname);
|
||||||
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->firstname = ucwords($this->firstname);
|
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->firstname = ucwords(strtolower($this->firstname));
|
||||||
if (empty($this->socid)) $this->socid = 0;
|
if (empty($this->socid)) $this->socid = 0;
|
||||||
if (empty($this->priv)) $this->priv = 0;
|
if (empty($this->priv)) $this->priv = 0;
|
||||||
if (empty($this->statut)) $this->statut = 0; // This is to convert '' into '0' to avoid bad sql request
|
if (empty($this->statut)) $this->statut = 0; // This is to convert '' into '0' to avoid bad sql request
|
||||||
@ -427,9 +427,9 @@ class Contact extends CommonObject
|
|||||||
$this->entity = ((isset($this->entity) && is_numeric($this->entity)) ? $this->entity : $conf->entity);
|
$this->entity = ((isset($this->entity) && is_numeric($this->entity)) ? $this->entity : $conf->entity);
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->lastname = ucwords($this->lastname);
|
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->lastname = ucwords(strtolower($this->lastname));
|
||||||
if (!empty($conf->global->MAIN_ALL_TO_UPPER)) $this->lastname = strtoupper($this->lastname);
|
if (!empty($conf->global->MAIN_ALL_TO_UPPER)) $this->lastname = strtoupper($this->lastname);
|
||||||
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->firstname = ucwords($this->firstname);
|
if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->firstname = ucwords(strtolower($this->firstname));
|
||||||
|
|
||||||
$this->lastname = trim($this->lastname) ?trim($this->lastname) : trim($this->lastname);
|
$this->lastname = trim($this->lastname) ?trim($this->lastname) : trim($this->lastname);
|
||||||
$this->firstname = trim($this->firstname);
|
$this->firstname = trim($this->firstname);
|
||||||
|
|||||||
@ -1704,7 +1704,7 @@ else
|
|||||||
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
||||||
$line = new ContratLigne($db);
|
$line = new ContratLigne($db);
|
||||||
$line->fetch_optionals($objp->rowid);
|
$line->fetch_optionals($objp->rowid);
|
||||||
print $line->showOptionals($extrafields, 'view', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1);
|
print $line->showOptionals($extrafields, 'view', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Line in mode update
|
// Line in mode update
|
||||||
@ -1794,7 +1794,7 @@ else
|
|||||||
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
||||||
$line = new ContratLigne($db);
|
$line = new ContratLigne($db);
|
||||||
$line->fetch_optionals($objp->rowid);
|
$line->fetch_optionals($objp->rowid);
|
||||||
print $line->showOptionals($extrafields, 'edit', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1);
|
print $line->showOptionals($extrafields, 'edit', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -517,7 +517,7 @@ class Contrat extends CommonObject
|
|||||||
{
|
{
|
||||||
$num = $this->ref;
|
$num = $this->ref;
|
||||||
}
|
}
|
||||||
$this->newref = $num;
|
$this->newref = dol_sanitizeFileName($num);
|
||||||
|
|
||||||
if ($num)
|
if ($num)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -741,7 +741,7 @@ while ($i < min($num, $limit))
|
|||||||
// Date
|
// Date
|
||||||
if (!empty($arrayfields['c.date_contrat']['checked']))
|
if (!empty($arrayfields['c.date_contrat']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="center">'.dol_print_date($db->jdate($obj->date_contrat), 'day', 'tzuser').'</td>';
|
print '<td class="center">'.dol_print_date($db->jdate($obj->date_contrat), 'day', 'tzserver').'</td>';
|
||||||
}
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
|
|||||||
@ -128,6 +128,13 @@ if ($action == 'update' && !empty($permissiontoadd))
|
|||||||
if ($object->fields[$key]['type'] == 'duration') {
|
if ($object->fields[$key]['type'] == 'duration') {
|
||||||
if (!GETPOSTISSET($key.'hour') || !GETPOSTISSET($key.'min')) continue; // The field was not submited to be edited
|
if (!GETPOSTISSET($key.'hour') || !GETPOSTISSET($key.'min')) continue; // The field was not submited to be edited
|
||||||
}
|
}
|
||||||
|
elseif ($object->fields[$key]['type'] == 'boolean') {
|
||||||
|
if (!GETPOSTISSET($key)) {
|
||||||
|
$object->$key = 0; // use 0 instead null if the field is defined as not null
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (!GETPOSTISSET($key)) continue; // The field was not submited to be edited
|
if (!GETPOSTISSET($key)) continue; // The field was not submited to be edited
|
||||||
}
|
}
|
||||||
|
|||||||
@ -183,7 +183,8 @@ if ($action == 'add')
|
|||||||
(GETPOST('entitycurrentorall', 'alpha')?0:''),
|
(GETPOST('entitycurrentorall', 'alpha')?0:''),
|
||||||
GETPOST('langfile', 'alpha'),
|
GETPOST('langfile', 'alpha'),
|
||||||
1,
|
1,
|
||||||
(GETPOST('totalizable', 'alpha')?1:0)
|
(GETPOST('totalizable', 'alpha')?1:0),
|
||||||
|
(GETPOST('printable', 'alpha')?1:0)
|
||||||
);
|
);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
@ -352,7 +353,8 @@ if ($action == 'update')
|
|||||||
(GETPOST('entitycurrentorall', 'alpha')?0:''),
|
(GETPOST('entitycurrentorall', 'alpha')?0:''),
|
||||||
GETPOST('langfile'),
|
GETPOST('langfile'),
|
||||||
1,
|
1,
|
||||||
(GETPOST('totalizable', 'alpha')?1:0)
|
(GETPOST('totalizable', 'alpha')?1:0),
|
||||||
|
(GETPOST('printable', 'alpha')?1:0)
|
||||||
);
|
);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -86,7 +86,7 @@ class box_boms extends ModeleBoxes
|
|||||||
|
|
||||||
if ($user->rights->bom->read)
|
if ($user->rights->bom->read)
|
||||||
{
|
{
|
||||||
$sql = "SELECT p.ref as product_ref";
|
$sql = "SELECT p.ref as product_ref, p.tobuy, p.tosell";
|
||||||
$sql.= ", c.rowid";
|
$sql.= ", c.rowid";
|
||||||
$sql.= ", c.date_creation";
|
$sql.= ", c.date_creation";
|
||||||
$sql.= ", c.tms";
|
$sql.= ", c.tms";
|
||||||
@ -109,11 +109,15 @@ class box_boms extends ModeleBoxes
|
|||||||
while ($line < $num) {
|
while ($line < $num) {
|
||||||
$objp = $this->db->fetch_object($result);
|
$objp = $this->db->fetch_object($result);
|
||||||
$datem=$this->db->jdate($objp->tms);
|
$datem=$this->db->jdate($objp->tms);
|
||||||
|
|
||||||
$bomstatic->id = $objp->rowid;
|
$bomstatic->id = $objp->rowid;
|
||||||
$bomstatic->ref = $objp->ref;
|
$bomstatic->ref = $objp->ref;
|
||||||
$bomstatic->id = $objp->socid;
|
$bomstatic->id = $objp->socid;
|
||||||
$bomstatic->status = $objp->status;
|
$bomstatic->status = $objp->status;
|
||||||
|
|
||||||
$productstatic->ref = $objp->product_ref;
|
$productstatic->ref = $objp->product_ref;
|
||||||
|
$productstatic->status = $objp->tobuy;
|
||||||
|
$productstatic->status_buy = $objp->tosell;
|
||||||
|
|
||||||
$this->info_box_contents[$line][] = array(
|
$this->info_box_contents[$line][] = array(
|
||||||
'td' => 'class="nowraponall"',
|
'td' => 'class="nowraponall"',
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2018 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
* Copyright (C) 2018 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
|
* Copyright (C) 2020 Ferran Marcet <fmarcet@2byte.es>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -83,6 +84,7 @@ class box_contacts extends ModeleBoxes
|
|||||||
if ($user->rights->societe->lire && $user->rights->societe->contact->lire)
|
if ($user->rights->societe->lire && $user->rights->societe->contact->lire)
|
||||||
{
|
{
|
||||||
$sql = "SELECT sp.rowid as id, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc, sp.statut as status";
|
$sql = "SELECT sp.rowid as id, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc, sp.statut as status";
|
||||||
|
|
||||||
$sql .= ", sp.address, sp.zip, sp.town, sp.phone, sp.phone_perso, sp.phone_mobile, sp.email as spemail";
|
$sql .= ", sp.address, sp.zip, sp.town, sp.phone, sp.phone_perso, sp.phone_mobile, sp.email as spemail";
|
||||||
$sql .= ", s.nom as socname, s.name_alias, s.email as semail";
|
$sql .= ", s.nom as socname, s.name_alias, s.email as semail";
|
||||||
$sql .= ", s.client, s.fournisseur, s.code_client, s.code_fournisseur";
|
$sql .= ", s.client, s.fournisseur, s.code_client, s.code_fournisseur";
|
||||||
|
|||||||
@ -91,7 +91,7 @@ class box_services_contracts extends ModeleBoxes
|
|||||||
$sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,";
|
$sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,";
|
||||||
$sql.= " c.rowid, c.ref, c.statut as contract_status, c.ref_customer, c.ref_supplier,";
|
$sql.= " c.rowid, c.ref, c.statut as contract_status, c.ref_customer, c.ref_supplier,";
|
||||||
$sql.= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,";
|
$sql.= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,";
|
||||||
$sql.= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity";
|
$sql.= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity, p.tobuy, p.tosell";
|
||||||
$sql.= " FROM (".MAIN_DB_PREFIX."societe as s";
|
$sql.= " FROM (".MAIN_DB_PREFIX."societe as s";
|
||||||
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contrat as c ON s.rowid = c.fk_soc";
|
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contrat as c ON s.rowid = c.fk_soc";
|
||||||
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
|
$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
|
||||||
@ -165,6 +165,9 @@ class box_services_contracts extends ModeleBoxes
|
|||||||
$productstatic->ref=$objp->product_ref;
|
$productstatic->ref=$objp->product_ref;
|
||||||
$productstatic->entity=$objp->pentity;
|
$productstatic->entity=$objp->pentity;
|
||||||
$productstatic->label=$objp->plabel;
|
$productstatic->label=$objp->plabel;
|
||||||
|
$productstatic->status = $objp->tosell;
|
||||||
|
$productstatic->status_buy = $objp->tobuy;
|
||||||
|
|
||||||
$text = $productstatic->getNomUrl(1, '', 20);
|
$text = $productstatic->getNomUrl(1, '', 20);
|
||||||
if ($objp->plabel)
|
if ($objp->plabel)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -127,6 +127,7 @@ class box_task extends ModeleBoxes
|
|||||||
$boxcontent .= '<button type="submit" class="button">'.$langs->trans("Refresh").'</button>';
|
$boxcontent .= '<button type="submit" class="button">'.$langs->trans("Refresh").'</button>';
|
||||||
$boxcontent .= '</form>'."\n";
|
$boxcontent .= '</form>'."\n";
|
||||||
$boxcontent .= '</div>'."\n";
|
$boxcontent .= '</div>'."\n";
|
||||||
|
if (! empty($conf->use_javascript_ajax)) {
|
||||||
$boxcontent .= '<script type="text/javascript" language="javascript">
|
$boxcontent .= '<script type="text/javascript" language="javascript">
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
jQuery("#idsubimg'.$this->boxcode.'").click(function() {
|
jQuery("#idsubimg'.$this->boxcode.'").click(function() {
|
||||||
@ -136,6 +137,7 @@ class box_task extends ModeleBoxes
|
|||||||
</script>';
|
</script>';
|
||||||
// set cookie by js
|
// set cookie by js
|
||||||
$boxcontent .= '<script>date = new Date(); date.setTime(date.getTime()+(30*86400000)); document.cookie = "'.$cookie_name.'='.$filterValue.'; expires= " + date.toGMTString() + "; path=/ "; </script>';
|
$boxcontent .= '<script>date = new Date(); date.setTime(date.getTime()+(30*86400000)); document.cookie = "'.$cookie_name.'='.$filterValue.'; expires= " + date.toGMTString() + "; path=/ "; </script>';
|
||||||
|
}
|
||||||
$this->info_box_contents[0][] = array(
|
$this->info_box_contents[0][] = array(
|
||||||
'tr'=>'class="nohover showiffilter'.$this->boxcode.' hideobject"',
|
'tr'=>'class="nohover showiffilter'.$this->boxcode.' hideobject"',
|
||||||
'td' => 'class="nohover"',
|
'td' => 'class="nohover"',
|
||||||
|
|||||||
@ -49,6 +49,10 @@ abstract class CommonDocGenerator
|
|||||||
*/
|
*/
|
||||||
protected $db;
|
protected $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Extrafields object
|
||||||
|
*/
|
||||||
|
public $extrafieldsCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -532,14 +536,16 @@ abstract class CommonDocGenerator
|
|||||||
*
|
*
|
||||||
* @param Object $line Object line
|
* @param Object $line Object line
|
||||||
* @param Translate $outputlangs Lang object to use for output
|
* @param Translate $outputlangs Lang object to use for output
|
||||||
|
* @param int $linenumber The number of the line for the substitution of "object_line_pos"
|
||||||
* @return array Return a substitution array
|
* @return array Return a substitution array
|
||||||
*/
|
*/
|
||||||
public function get_substitutionarray_lines($line, $outputlangs)
|
public function get_substitutionarray_lines($line, $outputlangs, $linenumber = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$resarray = array(
|
$resarray = array(
|
||||||
|
'line_pos' => $linenumber,
|
||||||
'line_fulldesc'=>doc_getlinedesc($line, $outputlangs),
|
'line_fulldesc'=>doc_getlinedesc($line, $outputlangs),
|
||||||
'line_product_ref'=>$line->product_ref,
|
'line_product_ref'=>$line->product_ref,
|
||||||
'line_product_ref_fourn'=>$line->ref_fourn, // for supplier doc lines
|
'line_product_ref_fourn'=>$line->ref_fourn, // for supplier doc lines
|
||||||
@ -788,6 +794,8 @@ abstract class CommonDocGenerator
|
|||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
if (is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
foreach($extrafields->attributes[$object->table_element]['label'] as $key=>$label)
|
foreach($extrafields->attributes[$object->table_element]['label'] as $key=>$label)
|
||||||
{
|
{
|
||||||
if($extrafields->attributes[$object->table_element]['type'][$key] == 'price')
|
if($extrafields->attributes[$object->table_element]['type'][$key] == 'price')
|
||||||
@ -864,6 +872,7 @@ abstract class CommonDocGenerator
|
|||||||
|
|
||||||
$array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key => $object->array_options['options_'.$key]));
|
$array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key => $object->array_options['options_'.$key]));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $array_to_fill;
|
return $array_to_fill;
|
||||||
}
|
}
|
||||||
@ -1074,7 +1083,7 @@ abstract class CommonDocGenerator
|
|||||||
* @param float $curY curent Y position
|
* @param float $curY curent Y position
|
||||||
* @param string $colKey the column key
|
* @param string $colKey the column key
|
||||||
* @param string $columnText column text
|
* @param string $columnText column text
|
||||||
* @return int new rank on success and -1 on error
|
* @return null
|
||||||
*/
|
*/
|
||||||
public function printStdColumnContent($pdf, &$curY, $colKey, $columnText = '')
|
public function printStdColumnContent($pdf, &$curY, $colKey, $columnText = '')
|
||||||
{
|
{
|
||||||
@ -1096,6 +1105,221 @@ abstract class CommonDocGenerator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get extrafield content for pdf writeHtmlCell compatibility
|
||||||
|
* usage for PDF line columns and object note block
|
||||||
|
*
|
||||||
|
* @param object $object common object
|
||||||
|
* @param string $extrafieldKey the extrafield key
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getExtrafieldContent($object, $extrafieldKey)
|
||||||
|
{
|
||||||
|
global $hookmanager;
|
||||||
|
|
||||||
|
if(empty($object->table_element)){ return; }
|
||||||
|
|
||||||
|
$extrafieldsKeyPrefix = "options_";
|
||||||
|
|
||||||
|
// Cleanup extrafield key to remove prefix if present
|
||||||
|
$pos = strpos($extrafieldKey, $extrafieldsKeyPrefix);
|
||||||
|
if($pos===0){
|
||||||
|
$extrafieldKey = substr($extrafieldKey, strlen($extrafieldsKeyPrefix));
|
||||||
|
}
|
||||||
|
|
||||||
|
$extrafieldOptionsKey = $extrafieldsKeyPrefix.$extrafieldKey;
|
||||||
|
|
||||||
|
|
||||||
|
// Load extrafiels if not allready does
|
||||||
|
if(empty($this->extrafieldsCache)){ $this->extrafieldsCache = new ExtraFields($this->db); }
|
||||||
|
if(empty($this->extrafieldsCache->attributes[$object->table_element])){ $this->extrafieldsCache->fetch_name_optionals_label($object->table_element); }
|
||||||
|
$extrafields = $this->extrafieldsCache;
|
||||||
|
|
||||||
|
$extrafieldOutputContent = $extrafields->showOutputField($extrafieldKey, $object->array_options[$extrafieldOptionsKey], '', $object->table_element);
|
||||||
|
|
||||||
|
// TODO : allow showOutputField to be pdf public friendly, ex: in a link to object, clean getNomUrl to remove link and images... like a getName methode ...
|
||||||
|
if($extrafields->attributes[$object->table_element]['type'][$extrafieldKey] == 'link'){
|
||||||
|
// for lack of anything better we cleanup all html tags
|
||||||
|
$extrafieldOutputContent = dol_string_nohtmltag($extrafieldOutputContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
$parameters = array(
|
||||||
|
'object' => $object,
|
||||||
|
'extrafields' => $extrafields,
|
||||||
|
'extrafieldKey' => $extrafieldKey,
|
||||||
|
'extrafieldOutputContent' =>& $extrafieldOutputContent
|
||||||
|
);
|
||||||
|
$reshook = $hookmanager->executeHooks('getPDFExtrafieldContent', $parameters, $this); // Note that $action and $object may have been modified by hook
|
||||||
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
if ($reshook)
|
||||||
|
{
|
||||||
|
$extrafieldOutputContent = $hookmanager->resPrint;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $extrafieldOutputContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* display extrafields columns content
|
||||||
|
*
|
||||||
|
* @param object $object line of common object
|
||||||
|
* @param Translate $outputlangs Output language
|
||||||
|
* @param array $params array of additionals parameters
|
||||||
|
* @return double max y value
|
||||||
|
*/
|
||||||
|
public function getExtrafieldsInHtml($object, $outputlangs, $params = array())
|
||||||
|
{
|
||||||
|
global $hookmanager;
|
||||||
|
|
||||||
|
if(empty($object->table_element)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load extrafiels if not allready does
|
||||||
|
if(empty($this->extrafieldsCache)){ $this->extrafieldsCache = new ExtraFields($this->db); }
|
||||||
|
if(empty($this->extrafieldsCache->attributes[$object->table_element])){ $this->extrafieldsCache->fetch_name_optionals_label($object->table_element); }
|
||||||
|
$extrafields = $this->extrafieldsCache;
|
||||||
|
|
||||||
|
$defaultParams = array(
|
||||||
|
'style' => '',
|
||||||
|
'display' => 'auto', // auto, table, list
|
||||||
|
|
||||||
|
'table' => array(
|
||||||
|
'maxItemsInRow' => 2,
|
||||||
|
'cellspacing' => 0,
|
||||||
|
'cellpadding' => 0,
|
||||||
|
'border' => 0,
|
||||||
|
'labelcolwidth' => '25%',
|
||||||
|
'arrayOfLineBreakType' => array('text', 'html')
|
||||||
|
),
|
||||||
|
|
||||||
|
'list' => array(
|
||||||
|
'separator' => '<br/>'
|
||||||
|
),
|
||||||
|
|
||||||
|
'auto' => array(
|
||||||
|
'list' => 0, // 0 for default
|
||||||
|
'table' => 4 // if there more than x extrafield to display
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$params = $params + $defaultParams;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var $extrafields ExtraFields
|
||||||
|
*/
|
||||||
|
|
||||||
|
$html = '';
|
||||||
|
$fields = array();
|
||||||
|
|
||||||
|
if (is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label)
|
||||||
|
{
|
||||||
|
// Enable extrafield ?
|
||||||
|
$enabled = !empty($extrafields->attributes[$object->table_element]['printable'][$key]);
|
||||||
|
|
||||||
|
if(empty($enabled)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$field = new stdClass();
|
||||||
|
$field->rank = intval($extrafields->attributes[$object->table_element]['pos'][$key]);
|
||||||
|
$field->content = $this->getExtrafieldContent($object, $key);
|
||||||
|
$field->label = $outputlangs->transnoentities($label);
|
||||||
|
$field->type = $extrafields->attributes[$object->table_element]['type'][$key];
|
||||||
|
|
||||||
|
$fields[] = $field;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($fields))
|
||||||
|
{
|
||||||
|
// Sort extrafields by rank
|
||||||
|
uasort($fields, function ($a, $b) {
|
||||||
|
return ($a->rank > $b->rank) ? -1 : 1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// define some HTML content with style
|
||||||
|
$html.= '<style>'.$params['style'].'</style>';
|
||||||
|
|
||||||
|
// auto select display format
|
||||||
|
if($params['display'] == 'auto') {
|
||||||
|
$lastNnumbItems = 0;
|
||||||
|
foreach ($params['auto'] as $display => $numbItems){
|
||||||
|
if($lastNnumbItems <= $numbItems && count($fields) > $numbItems){
|
||||||
|
$lastNnumbItems = $numbItems;
|
||||||
|
$params['display'] = $display;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($params['display'] == 'list') {
|
||||||
|
// Display in list format
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$html .= !empty($html)?$params['list']['separator']:'';
|
||||||
|
$html .= '<strong>' . $field->label . ' : </strong>';
|
||||||
|
$html .= $field->content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif($params['display'] == 'table') {
|
||||||
|
// Display in table format
|
||||||
|
$html .= '<table class="extrafield-table" cellspacing="' . $params['table']['cellspacing'] . '" cellpadding="' . $params['table']['cellpadding'] . '" border="' . $params['table']['border'] . '">';
|
||||||
|
|
||||||
|
$html .= "<tr>";
|
||||||
|
$itemsInRow = 0;
|
||||||
|
$maxItemsInRow = $params['table']['maxItemsInRow'];
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
//$html.= !empty($html)?'<br/>':'';
|
||||||
|
if ($itemsInRow >= $maxItemsInRow) {
|
||||||
|
// start a new line
|
||||||
|
$html .= "</tr><tr>";
|
||||||
|
$itemsInRow = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// for some type we need line break
|
||||||
|
if (in_array($field->type, $params['table']['arrayOfLineBreakType'])) {
|
||||||
|
if ($itemsInRow > 0) {
|
||||||
|
// close table row and empty cols
|
||||||
|
for ($i = $itemsInRow; $i <= $maxItemsInRow; $i++) {
|
||||||
|
$html .= "<td ></td><td></td>";
|
||||||
|
}
|
||||||
|
$html .= "</tr>";
|
||||||
|
|
||||||
|
// start a new line
|
||||||
|
$html .= "<tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$itemsInRow = $maxItemsInRow;
|
||||||
|
$html .= '<td colspan="' . ($maxItemsInRow * 2 - 1) . '">';
|
||||||
|
$html .= '<strong>' . $field->label . ' :</strong> ';
|
||||||
|
$html .= $field->content;
|
||||||
|
$html .= "</td>";
|
||||||
|
} else {
|
||||||
|
$itemsInRow++;
|
||||||
|
$html .= '<td width="'.$params['table']['labelcolwidth'].'" class="extrafield-label">';
|
||||||
|
$html .= '<strong>' . $field->label . ' :</strong>';
|
||||||
|
$html .= "</td>";
|
||||||
|
|
||||||
|
|
||||||
|
$html .= '<td class="extrafield-content">';
|
||||||
|
$html .= $field->content;
|
||||||
|
$html .= "</td>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$html .= "</tr>";
|
||||||
|
|
||||||
|
$html .= '</table>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get column status from column key
|
* get column status from column key
|
||||||
@ -1167,4 +1391,81 @@ abstract class CommonDocGenerator
|
|||||||
}
|
}
|
||||||
return $this->tabTitleHeight;
|
return $this->tabTitleHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define Array Column Field for extrafields
|
||||||
|
*
|
||||||
|
* @param object $object common object det
|
||||||
|
* @param Translate $outputlangs langs
|
||||||
|
* @param int $hidedetails Do not show line details
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function defineColumnExtrafield($object, $outputlangs, $hidedetails = 0)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
if(!empty($hidedetails)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(empty($object->table_element)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load extrafiels if not allready does
|
||||||
|
if(empty($this->extrafieldsCache)){ $this->extrafieldsCache = new ExtraFields($this->db); }
|
||||||
|
if(empty($this->extrafieldsCache->attributes[$object->table_element])){ $this->extrafieldsCache->fetch_name_optionals_label($object->table_element); }
|
||||||
|
$extrafields = $this->extrafieldsCache;
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($extrafields->attributes[$object->table_element]) && is_array($extrafields->attributes[$object->table_element]['label'])) {
|
||||||
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label)
|
||||||
|
{
|
||||||
|
// Dont display separator yet even is set to be displayed (not compatible yet)
|
||||||
|
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable extrafield ?
|
||||||
|
$enabled = !empty($extrafields->attributes[$object->table_element]['printable'][$key]);
|
||||||
|
|
||||||
|
|
||||||
|
// Load language if required
|
||||||
|
if (!empty($extrafields->attributes[$object->table_element]['langfile'][$key])) $outputlangs->load($extrafields->attributes[$object->table_element]['langfile'][$key]);
|
||||||
|
|
||||||
|
// TODO : add more extrafield customisation capacities for PDF like width, rank...
|
||||||
|
|
||||||
|
// set column definition
|
||||||
|
$def = array(
|
||||||
|
'rank' => intval($extrafields->attributes[$object->table_element]['pos'][$key]),
|
||||||
|
'width' => 25, // in mm
|
||||||
|
'status' => boolval($enabled),
|
||||||
|
'title' => array(
|
||||||
|
'label' => $outputlangs->transnoentities($label)
|
||||||
|
),
|
||||||
|
'content' => array(
|
||||||
|
'align' => 'C'
|
||||||
|
),
|
||||||
|
'border-left' => true, // add left line separator
|
||||||
|
);
|
||||||
|
|
||||||
|
$alignTypeRight = array('double', 'int', 'price');
|
||||||
|
if(in_array($extrafields->attributes[$object->table_element]['type'][$key], $alignTypeRight)){
|
||||||
|
$def['content']['align'] = 'R';
|
||||||
|
}
|
||||||
|
|
||||||
|
$alignTypeLeft = array('text', 'html');
|
||||||
|
if(in_array($extrafields->attributes[$object->table_element]['type'][$key], $alignTypeLeft)){
|
||||||
|
$def['content']['align'] = 'L';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// for extrafields we use rank of extrafield to place it on PDF
|
||||||
|
$this->insertNewColumnDef("options_".$key, $def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3369,6 +3369,9 @@ abstract class CommonObject
|
|||||||
elseif ($objecttype == 'subscription') {
|
elseif ($objecttype == 'subscription') {
|
||||||
$classpath = 'adherents/class'; $module = 'adherent';
|
$classpath = 'adherents/class'; $module = 'adherent';
|
||||||
}
|
}
|
||||||
|
elseif ($objecttype == 'contact') {
|
||||||
|
$module = 'societe';
|
||||||
|
}
|
||||||
|
|
||||||
// Set classfile
|
// Set classfile
|
||||||
$classfile = strtolower($subelement); $classname = ucfirst($subelement);
|
$classfile = strtolower($subelement); $classname = ucfirst($subelement);
|
||||||
@ -3391,6 +3394,9 @@ abstract class CommonObject
|
|||||||
elseif ($objecttype == 'subscription') {
|
elseif ($objecttype == 'subscription') {
|
||||||
$classfile = 'subscription'; $classname = 'Subscription';
|
$classfile = 'subscription'; $classname = 'Subscription';
|
||||||
}
|
}
|
||||||
|
elseif ($objecttype == 'project' || $objecttype == 'projet') {
|
||||||
|
$classpath = 'projet/class'; $classfile = 'project'; $classname = 'Project';
|
||||||
|
}
|
||||||
|
|
||||||
// Here $module, $classfile and $classname are set
|
// Here $module, $classfile and $classname are set
|
||||||
if ($conf->$module->enabled && (($element != $this->element) || $alsosametype))
|
if ($conf->$module->enabled && (($element != $this->element) || $alsosametype))
|
||||||
|
|||||||
@ -681,15 +681,11 @@ class Conf
|
|||||||
$this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on.
|
$this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($this->global->MAIN_EXTRAFIELDS_IN_ONE_TD)) $this->global->MAIN_EXTRAFIELDS_IN_ONE_TD = 1;
|
|
||||||
|
|
||||||
if (!isset($this->global->MAIN_USE_OLD_TITLE_BUTTON)) $this->global->MAIN_USE_OLD_TITLE_BUTTON = 0;
|
if (!isset($this->global->MAIN_USE_OLD_TITLE_BUTTON)) $this->global->MAIN_USE_OLD_TITLE_BUTTON = 0;
|
||||||
|
|
||||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_SRV)) $this->global->MAIN_MODULE_DOLISTORE_API_SRV = 'https://www.dolistore.com';
|
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_SRV)) $this->global->MAIN_MODULE_DOLISTORE_API_SRV = 'https://www.dolistore.com';
|
||||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_KEY)) $this->global->MAIN_MODULE_DOLISTORE_API_KEY = 'dolistorecatalogpublickey1234567';
|
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_KEY)) $this->global->MAIN_MODULE_DOLISTORE_API_KEY = 'dolistorecatalogpublickey1234567';
|
||||||
|
|
||||||
if (! isset($this->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) $this->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN = 1;
|
|
||||||
|
|
||||||
// If we are in develop mode, we activate the option MAIN_SECURITY_CSRF_WITH_TOKEN to 1 if not already defined.
|
// If we are in develop mode, we activate the option MAIN_SECURITY_CSRF_WITH_TOKEN to 1 if not already defined.
|
||||||
if (!isset($this->global->MAIN_SECURITY_CSRF_WITH_TOKEN) && $this->global->MAIN_FEATURES_LEVEL >= 2) $this->global->MAIN_SECURITY_CSRF_WITH_TOKEN = 1;
|
if (!isset($this->global->MAIN_SECURITY_CSRF_WITH_TOKEN) && $this->global->MAIN_FEATURES_LEVEL >= 2) $this->global->MAIN_SECURITY_CSRF_WITH_TOKEN = 1;
|
||||||
|
|
||||||
|
|||||||
@ -504,15 +504,16 @@ class DiscountAbsolute
|
|||||||
* @param string $filter Filtre autre
|
* @param string $filter Filtre autre
|
||||||
* @param int $maxvalue Filter on max value for discount
|
* @param int $maxvalue Filter on max value for discount
|
||||||
* @param int $discount_type 0 => customer discount, 1 => supplier discount
|
* @param int $discount_type 0 => customer discount, 1 => supplier discount
|
||||||
|
* @param int $multicurrency Return multicurrency_amount instead of amount
|
||||||
* @return int <0 if KO, amount otherwise
|
* @return int <0 if KO, amount otherwise
|
||||||
*/
|
*/
|
||||||
public function getAvailableDiscounts($company = '', $user = '', $filter = '', $maxvalue = 0, $discount_type = 0)
|
public function getAvailableDiscounts($company = '', $user = '', $filter = '', $maxvalue = 0, $discount_type = 0, $multicurrency = 0)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::getAvailableDiscounts discount_type=".$discount_type, LOG_DEBUG);
|
dol_syslog(get_class($this)."::getAvailableDiscounts discount_type=".$discount_type, LOG_DEBUG);
|
||||||
|
|
||||||
$sql = "SELECT SUM(rc.amount_ttc) as amount";
|
$sql = "SELECT SUM(rc.amount_ttc) as amount, SUM(rc.multicurrency_amount_ttc) as multicurrency_amount";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
|
$sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
|
||||||
$sql .= " WHERE rc.entity = ".$conf->entity;
|
$sql .= " WHERE rc.entity = ".$conf->entity;
|
||||||
$sql .= " AND rc.discount_type=".intval($discount_type);
|
$sql .= " AND rc.discount_type=".intval($discount_type);
|
||||||
@ -535,6 +536,11 @@ class DiscountAbsolute
|
|||||||
//print 'zz'.$obj->amount;
|
//print 'zz'.$obj->amount;
|
||||||
//$obj = $this->db->fetch_object($resql);
|
//$obj = $this->db->fetch_object($resql);
|
||||||
//}
|
//}
|
||||||
|
if ($multicurrency)
|
||||||
|
{
|
||||||
|
return $obj->amount_multicurrency;
|
||||||
|
}
|
||||||
|
|
||||||
return $obj->amount;
|
return $obj->amount;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -604,14 +610,14 @@ class DiscountAbsolute
|
|||||||
$sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount';
|
$sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount';
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f';
|
$sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f';
|
||||||
$sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.$invoice->id;
|
$sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.$invoice->id;
|
||||||
$sql .= ' AND (f.type = 2 OR f.type = 0)'; // Find discount coming from credit note or excess received
|
$sql .= ' AND f.type IN (' . $invoice::TYPE_STANDARD . ', ' . $invoice::TYPE_CREDIT_NOTE . ', ' . $invoice::TYPE_SITUATION . ')'; // Find discount coming from credit note or excess received
|
||||||
}
|
}
|
||||||
elseif ($invoice->element == 'invoice_supplier')
|
elseif ($invoice->element == 'invoice_supplier')
|
||||||
{
|
{
|
||||||
$sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount';
|
$sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount';
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f';
|
$sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f';
|
||||||
$sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.$invoice->id;
|
$sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.$invoice->id;
|
||||||
$sql .= ' AND (f.type = 2 OR f.type = 0)'; // Find discount coming from credit note or excess paid
|
$sql .= ' AND f.type IN (' . $invoice::TYPE_STANDARD . ', ' . $invoice::TYPE_CREDIT_NOTE . ')'; // Find discount coming from credit note or excess paid
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -90,7 +90,7 @@ class DolEditor
|
|||||||
{
|
{
|
||||||
$content = dol_htmlentitiesbr($content); // If content is not HTML, we convert to HTML.
|
$content = dol_htmlentitiesbr($content); // If content is not HTML, we convert to HTML.
|
||||||
}
|
}
|
||||||
if ($this->tool == 'fckeditor')
|
/*if ($this->tool == 'fckeditor')
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/includes/fckeditor/fckeditor.php';
|
require_once DOL_DOCUMENT_ROOT.'/includes/fckeditor/fckeditor.php';
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ class DolEditor
|
|||||||
$this->editor->Config['CustomConfigurationsPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/fckconfig.js';
|
$this->editor->Config['CustomConfigurationsPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/fckconfig.js';
|
||||||
$this->editor->Config['SkinPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/';
|
$this->editor->Config['SkinPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/';
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Define some properties
|
// Define some properties
|
||||||
if (in_array($this->tool, array('textarea', 'ckeditor', 'ace')))
|
if (in_array($this->tool, array('textarea', 'ckeditor', 'ace')))
|
||||||
|
|||||||
@ -951,7 +951,11 @@ class DolGraph
|
|||||||
$this->stringtoshow .= '<div class="nographyettext">'.$langs->trans("NotEnoughDataYet").'</div>';
|
$this->stringtoshow .= '<div class="nographyettext">'.$langs->trans("NotEnoughDataYet").'</div>';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->stringtoshow .= '<div id="placeholder_'.$tag.'" style="width:'.$this->width.'px;height:'.$this->height.'px;" class="dolgraph'.(empty($this->cssprefix) ? '' : ' dolgraph'.$this->cssprefix).' center"></div>'."\n";
|
|
||||||
|
// Start the div that will contains all the graph
|
||||||
|
$dolxaxisvertical='';
|
||||||
|
if (count($this->data) > 20) $dolxaxisvertical='dol-xaxis-vertical';
|
||||||
|
$this->stringtoshow .= '<div id="placeholder_'.$tag.'" style="width:'.$this->width.'px;height:'.$this->height.'px;" class="dolgraph'.(empty($dolxaxisvertical)?'':' '.$dolxaxisvertical).(empty($this->cssprefix) ? '' : ' dolgraph'.$this->cssprefix).' center"></div>'."\n";
|
||||||
|
|
||||||
$this->stringtoshow .= '<script id="'.$tag.'">'."\n";
|
$this->stringtoshow .= '<script id="'.$tag.'">'."\n";
|
||||||
$this->stringtoshow .= '$(function () {'."\n";
|
$this->stringtoshow .= '$(function () {'."\n";
|
||||||
|
|||||||
@ -49,6 +49,8 @@
|
|||||||
* <dol_print_object_tax> Print object total tax
|
* <dol_print_object_tax> Print object total tax
|
||||||
* <dol_print_object_local_tax> Print object local tax
|
* <dol_print_object_local_tax> Print object local tax
|
||||||
* <dol_print_object_total> Print object total
|
* <dol_print_object_total> Print object total
|
||||||
|
* <dol_print_order_lines_printer1> Print order lines for Printer1
|
||||||
|
* <dol_print_order_lines_printer2> Print order lines for Printer2
|
||||||
* <dol_print_payment> Print payment method
|
* <dol_print_payment> Print payment method
|
||||||
*
|
*
|
||||||
* Code which can be placed everywhere
|
* Code which can be placed everywhere
|
||||||
@ -188,6 +190,8 @@ class dolReceiptPrinter extends Printer
|
|||||||
'dol_print_object_local_tax',
|
'dol_print_object_local_tax',
|
||||||
'dol_print_object_total',
|
'dol_print_object_total',
|
||||||
'dol_print_object_number',
|
'dol_print_object_number',
|
||||||
|
'dol_print_order_lines_printer1',
|
||||||
|
'dol_print_order_lines_printer2',
|
||||||
'dol_value_customer_firstname',
|
'dol_value_customer_firstname',
|
||||||
'dol_value_customer_lastname',
|
'dol_value_customer_lastname',
|
||||||
'dol_value_customer_mail',
|
'dol_value_customer_mail',
|
||||||
@ -720,6 +724,28 @@ class dolReceiptPrinter extends Printer
|
|||||||
case 'DOL_BEEP':
|
case 'DOL_BEEP':
|
||||||
$this->printer->getPrintConnector() -> write("\x1e");
|
$this->printer->getPrintConnector() -> write("\x1e");
|
||||||
break;
|
break;
|
||||||
|
case 'DOL_PRINT_ORDER_LINES_PRINTER1':
|
||||||
|
foreach ($object->lines as $line) {
|
||||||
|
if ($line->special_code==1)
|
||||||
|
{
|
||||||
|
$spacestoadd = $nbcharactbyline - strlen($line->ref) - strlen($line->qty) - 10 - 1;
|
||||||
|
$spaces = str_repeat(' ', $spacestoadd);
|
||||||
|
$this->printer->text($line->ref.$spaces.$line->qty.' '.str_pad(price($line->total_ttc), 10, ' ', STR_PAD_LEFT)."\n");
|
||||||
|
$this->printer->text(strip_tags(htmlspecialchars_decode($line->desc))."\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'DOL_PRINT_ORDER_LINES_PRINTER2':
|
||||||
|
foreach ($object->lines as $line) {
|
||||||
|
if ($line->special_code==2)
|
||||||
|
{
|
||||||
|
$spacestoadd = $nbcharactbyline - strlen($line->ref) - strlen($line->qty) - 10 - 1;
|
||||||
|
$spaces = str_repeat(' ', $spacestoadd);
|
||||||
|
$this->printer->text($line->ref.$spaces.$line->qty.' '.str_pad(price($line->total_ttc), 10, ' ', STR_PAD_LEFT)."\n");
|
||||||
|
$this->printer->text(strip_tags(htmlspecialchars_decode($line->desc))."\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$this->printer->text($vals[$tplline]['tag']);
|
$this->printer->text($vals[$tplline]['tag']);
|
||||||
$this->printer->text($vals[$tplline]['value']);
|
$this->printer->text($vals[$tplline]['value']);
|
||||||
|
|||||||
@ -225,9 +225,10 @@ class ExtraFields
|
|||||||
* @param string $langfile Language file
|
* @param string $langfile Language file
|
||||||
* @param string $enabled Condition to have the field enabled or not
|
* @param string $enabled Condition to have the field enabled or not
|
||||||
* @param int $totalizable Is a measure. Must show a total on lists
|
* @param int $totalizable Is a measure. Must show a total on lists
|
||||||
|
* @param int $printable Is extrafield displayed on PDF
|
||||||
* @return int <=0 if KO, >0 if OK
|
* @return int <=0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique = 0, $required = 0, $default_value = '', $param = '', $alwayseditable = 0, $perms = '', $list = '-1', $help = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0)
|
public function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique = 0, $required = 0, $default_value = '', $param = '', $alwayseditable = 0, $perms = '', $list = '-1', $help = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0, $printable = 0)
|
||||||
{
|
{
|
||||||
if (empty($attrname)) return -1;
|
if (empty($attrname)) return -1;
|
||||||
if (empty($label)) return -1;
|
if (empty($label)) return -1;
|
||||||
@ -245,7 +246,7 @@ class ExtraFields
|
|||||||
if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate')
|
if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate')
|
||||||
{
|
{
|
||||||
// Add declaration of field into table
|
// Add declaration of field into table
|
||||||
$result2 = $this->create_label($attrname, $label, $type, $pos, $size, $elementtype, $unique, $required, $param, $alwayseditable, $perms, $list, $help, $default_value, $computed, $entity, $langfile, $enabled, $totalizable);
|
$result2 = $this->create_label($attrname, $label, $type, $pos, $size, $elementtype, $unique, $required, $param, $alwayseditable, $perms, $list, $help, $default_value, $computed, $entity, $langfile, $enabled, $totalizable, $printable);
|
||||||
$err2 = $this->errno;
|
$err2 = $this->errno;
|
||||||
if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS'))
|
if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS'))
|
||||||
{
|
{
|
||||||
@ -374,9 +375,11 @@ class ExtraFields
|
|||||||
* @param string $langfile Language file
|
* @param string $langfile Language file
|
||||||
* @param string $enabled Condition to have the field enabled or not
|
* @param string $enabled Condition to have the field enabled or not
|
||||||
* @param int $totalizable Is a measure. Must show a total on lists
|
* @param int $totalizable Is a measure. Must show a total on lists
|
||||||
|
* @param int $printable Is extrafield displayed on PDF
|
||||||
* @return int <=0 if KO, >0 if OK
|
* @return int <=0 if KO, >0 if OK
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private function create_label($attrname, $label = '', $type = '', $pos = 0, $size = 0, $elementtype = 'member', $unique = 0, $required = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '-1', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0)
|
private function create_label($attrname, $label = '', $type = '', $pos = 0, $size = 0, $elementtype = 'member', $unique = 0, $required = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '-1', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0, $printable = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $user;
|
global $conf, $user;
|
||||||
@ -390,6 +393,7 @@ class ExtraFields
|
|||||||
if (empty($required)) $required = 0;
|
if (empty($required)) $required = 0;
|
||||||
if (empty($unique)) $unique = 0;
|
if (empty($unique)) $unique = 0;
|
||||||
if (empty($alwayseditable)) $alwayseditable = 0;
|
if (empty($alwayseditable)) $alwayseditable = 0;
|
||||||
|
if (empty($totalizable)) $totalizable = 0;
|
||||||
|
|
||||||
if (!empty($attrname) && preg_match("/^\w[a-zA-Z0-9-_]*$/", $attrname) && !is_numeric($attrname))
|
if (!empty($attrname) && preg_match("/^\w[a-zA-Z0-9-_]*$/", $attrname) && !is_numeric($attrname))
|
||||||
{
|
{
|
||||||
@ -421,6 +425,7 @@ class ExtraFields
|
|||||||
$sql .= " perms,";
|
$sql .= " perms,";
|
||||||
$sql .= " langs,";
|
$sql .= " langs,";
|
||||||
$sql .= " list,";
|
$sql .= " list,";
|
||||||
|
$sql .= " printable,";
|
||||||
$sql .= " fielddefault,";
|
$sql .= " fielddefault,";
|
||||||
$sql .= " fieldcomputed,";
|
$sql .= " fieldcomputed,";
|
||||||
$sql .= " fk_user_author,";
|
$sql .= " fk_user_author,";
|
||||||
@ -444,6 +449,7 @@ class ExtraFields
|
|||||||
$sql .= " ".($perms ? "'".$this->db->escape($perms)."'" : "null").",";
|
$sql .= " ".($perms ? "'".$this->db->escape($perms)."'" : "null").",";
|
||||||
$sql .= " ".($langfile ? "'".$this->db->escape($langfile)."'" : "null").",";
|
$sql .= " ".($langfile ? "'".$this->db->escape($langfile)."'" : "null").",";
|
||||||
$sql .= " '".$this->db->escape($list)."',";
|
$sql .= " '".$this->db->escape($list)."',";
|
||||||
|
$sql .= " '".$this->db->escape($printable)."',";
|
||||||
$sql .= " ".($default ? "'".$this->db->escape($default)."'" : "null").",";
|
$sql .= " ".($default ? "'".$this->db->escape($default)."'" : "null").",";
|
||||||
$sql .= " ".($computed ? "'".$this->db->escape($computed)."'" : "null").",";
|
$sql .= " ".($computed ? "'".$this->db->escape($computed)."'" : "null").",";
|
||||||
$sql .= " ".(is_object($user) ? $user->id : 0).",";
|
$sql .= " ".(is_object($user) ? $user->id : 0).",";
|
||||||
@ -451,7 +457,7 @@ class ExtraFields
|
|||||||
$sql .= "'".$this->db->idate(dol_now())."',";
|
$sql .= "'".$this->db->idate(dol_now())."',";
|
||||||
$sql .= " ".($enabled ? "'".$this->db->escape($enabled)."'" : "1").",";
|
$sql .= " ".($enabled ? "'".$this->db->escape($enabled)."'" : "1").",";
|
||||||
$sql .= " ".($help ? "'".$this->db->escape($help)."'" : "null").",";
|
$sql .= " ".($help ? "'".$this->db->escape($help)."'" : "null").",";
|
||||||
$sql .= " ".($totalizable ? '1' : '0');
|
$sql .= " ".($totalizable ? 'TRUE' : 'FALSE');
|
||||||
$sql .= ')';
|
$sql .= ')';
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::create_label", LOG_DEBUG);
|
dol_syslog(get_class($this)."::create_label", LOG_DEBUG);
|
||||||
@ -590,9 +596,11 @@ class ExtraFields
|
|||||||
* @param string $langfile Language file
|
* @param string $langfile Language file
|
||||||
* @param string $enabled Condition to have the field enabled or not
|
* @param string $enabled Condition to have the field enabled or not
|
||||||
* @param int $totalizable Is extrafield totalizable on list
|
* @param int $totalizable Is extrafield totalizable on list
|
||||||
|
* @param int $printable Is extrafield displayed on PDF
|
||||||
* @return int >0 if OK, <=0 if KO
|
* @return int >0 if OK, <=0 if KO
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function update($attrname, $label, $type, $length, $elementtype, $unique = 0, $required = 0, $pos = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0)
|
public function update($attrname, $label, $type, $length, $elementtype, $unique = 0, $required = 0, $pos = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0, $printable = 0)
|
||||||
{
|
{
|
||||||
if ($elementtype == 'thirdparty') $elementtype = 'societe';
|
if ($elementtype == 'thirdparty') $elementtype = 'societe';
|
||||||
if ($elementtype == 'contact') $elementtype = 'socpeople';
|
if ($elementtype == 'contact') $elementtype = 'socpeople';
|
||||||
@ -642,7 +650,7 @@ class ExtraFields
|
|||||||
{
|
{
|
||||||
if ($label)
|
if ($label)
|
||||||
{
|
{
|
||||||
$result = $this->update_label($attrname, $label, $type, $length, $elementtype, $unique, $required, $pos, $param, $alwayseditable, $perms, $list, $help, $default, $computed, $entity, $langfile, $enabled, $totalizable);
|
$result = $this->update_label($attrname, $label, $type, $length, $elementtype, $unique, $required, $pos, $param, $alwayseditable, $perms, $list, $help, $default, $computed, $entity, $langfile, $enabled, $totalizable, $printable);
|
||||||
}
|
}
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
@ -700,13 +708,15 @@ class ExtraFields
|
|||||||
* @param string $langfile Language file
|
* @param string $langfile Language file
|
||||||
* @param string $enabled Condition to have the field enabled or not
|
* @param string $enabled Condition to have the field enabled or not
|
||||||
* @param int $totalizable Is extrafield totalizable on list
|
* @param int $totalizable Is extrafield totalizable on list
|
||||||
|
* @param int $printable Is extrafield displayed on PDF
|
||||||
* @return int <=0 if KO, >0 if OK
|
* @return int <=0 if KO, >0 if OK
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private function update_label($attrname, $label, $type, $size, $elementtype, $unique = 0, $required = 0, $pos = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '0', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0)
|
private function update_label($attrname, $label, $type, $size, $elementtype, $unique = 0, $required = 0, $pos = 0, $param = '', $alwayseditable = 0, $perms = '', $list = '0', $help = '', $default = '', $computed = '', $entity = '', $langfile = '', $enabled = '1', $totalizable = 0, $printable = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $user;
|
global $conf, $user;
|
||||||
dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms.", ".$list.", ".$default.", ".$computed.", ".$entity.", ".$langfile.", ".$enabled.", ".$totalizable);
|
dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms.", ".$list.", ".$default.", ".$computed.", ".$entity.", ".$langfile.", ".$enabled.", ".$totalizable.", ".$printable);
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
if ($elementtype == 'thirdparty') $elementtype = 'societe';
|
if ($elementtype == 'thirdparty') $elementtype = 'societe';
|
||||||
@ -771,6 +781,7 @@ class ExtraFields
|
|||||||
$sql .= " alwayseditable,";
|
$sql .= " alwayseditable,";
|
||||||
$sql .= " param,";
|
$sql .= " param,";
|
||||||
$sql .= " list,";
|
$sql .= " list,";
|
||||||
|
$sql .= " printable,";
|
||||||
$sql .= " totalizable,";
|
$sql .= " totalizable,";
|
||||||
$sql .= " fielddefault,";
|
$sql .= " fielddefault,";
|
||||||
$sql .= " fieldcomputed,";
|
$sql .= " fieldcomputed,";
|
||||||
@ -794,7 +805,8 @@ class ExtraFields
|
|||||||
$sql .= " '".$this->db->escape($alwayseditable)."',";
|
$sql .= " '".$this->db->escape($alwayseditable)."',";
|
||||||
$sql .= " '".$this->db->escape($params)."',";
|
$sql .= " '".$this->db->escape($params)."',";
|
||||||
$sql .= " '".$this->db->escape($list)."', ";
|
$sql .= " '".$this->db->escape($list)."', ";
|
||||||
$sql .= " ".$totalizable.",";
|
$sql .= " '".$this->db->escape($printable)."', ";
|
||||||
|
$sql .= " ".($totalizable ? 'TRUE' : 'FALSE').",";
|
||||||
$sql .= " ".(($default != '') ? "'".$this->db->escape($default)."'" : "null").",";
|
$sql .= " ".(($default != '') ? "'".$this->db->escape($default)."'" : "null").",";
|
||||||
$sql .= " ".($computed ? "'".$this->db->escape($computed)."'" : "null").",";
|
$sql .= " ".($computed ? "'".$this->db->escape($computed)."'" : "null").",";
|
||||||
$sql .= " ".$user->id.",";
|
$sql .= " ".$user->id.",";
|
||||||
@ -871,7 +883,7 @@ class ExtraFields
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// We should not have several time this request. If we have, there is some optimization to do by calling a simple $extrafields->fetch_optionals() in top of code and not into subcode
|
// We should not have several time this request. If we have, there is some optimization to do by calling a simple $extrafields->fetch_optionals() in top of code and not into subcode
|
||||||
$sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,totalizable,fielddefault,fieldcomputed,entity,enabled,help";
|
$sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,langs,list,printable,totalizable,fielddefault,fieldcomputed,entity,enabled,help";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."extrafields";
|
$sql .= " FROM ".MAIN_DB_PREFIX."extrafields";
|
||||||
//$sql.= " WHERE entity IN (0,".$conf->entity.")"; // Filter is done later
|
//$sql.= " WHERE entity IN (0,".$conf->entity.")"; // Filter is done later
|
||||||
if ($elementtype) $sql .= " WHERE elementtype = '".$elementtype."'"; // Filed with object->table_element
|
if ($elementtype) $sql .= " WHERE elementtype = '".$elementtype."'"; // Filed with object->table_element
|
||||||
@ -933,7 +945,8 @@ class ExtraFields
|
|||||||
$this->attributes[$tab->elementtype]['perms'][$tab->name] = (strlen($tab->perms) == 0 ? 1 : $tab->perms);
|
$this->attributes[$tab->elementtype]['perms'][$tab->name] = (strlen($tab->perms) == 0 ? 1 : $tab->perms);
|
||||||
$this->attributes[$tab->elementtype]['langfile'][$tab->name] = $tab->langs;
|
$this->attributes[$tab->elementtype]['langfile'][$tab->name] = $tab->langs;
|
||||||
$this->attributes[$tab->elementtype]['list'][$tab->name] = $tab->list;
|
$this->attributes[$tab->elementtype]['list'][$tab->name] = $tab->list;
|
||||||
$this->attributes[$tab->elementtype]['totalizable'][$tab->name] = $tab->totalizable;
|
$this->attributes[$tab->elementtype]['printable'][$tab->name] = $tab->printable;
|
||||||
|
$this->attributes[$tab->elementtype]['totalizable'][$tab->name] = ($tab->totalizable ? 1 : 0);
|
||||||
$this->attributes[$tab->elementtype]['entityid'][$tab->name] = $tab->entity;
|
$this->attributes[$tab->elementtype]['entityid'][$tab->name] = $tab->entity;
|
||||||
$this->attributes[$tab->elementtype]['enabled'][$tab->name] = $tab->enabled;
|
$this->attributes[$tab->elementtype]['enabled'][$tab->name] = $tab->enabled;
|
||||||
$this->attributes[$tab->elementtype]['help'][$tab->name] = $tab->help;
|
$this->attributes[$tab->elementtype]['help'][$tab->name] = $tab->help;
|
||||||
|
|||||||
@ -177,6 +177,7 @@ class HookManager
|
|||||||
'getFormatedCustomerRef',
|
'getFormatedCustomerRef',
|
||||||
'getFormatedSupplierRef',
|
'getFormatedSupplierRef',
|
||||||
'getIdProfUrl',
|
'getIdProfUrl',
|
||||||
|
'getInputIdProf',
|
||||||
'moveUploadedFile',
|
'moveUploadedFile',
|
||||||
'moreHtmlStatus',
|
'moreHtmlStatus',
|
||||||
'pdf_build_address',
|
'pdf_build_address',
|
||||||
|
|||||||
@ -2400,9 +2400,10 @@ class Form
|
|||||||
* @param string $selected Preselected value
|
* @param string $selected Preselected value
|
||||||
* @param int $hidepriceinlabel Hide price in label
|
* @param int $hidepriceinlabel Hide price in label
|
||||||
* @param string $filterkey Filter key to highlight
|
* @param string $filterkey Filter key to highlight
|
||||||
|
* @param int $novirtualstock Do not load virtual stock, even if slow option STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO is on.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function constructProductListOption(&$objp, &$opt, &$optJson, $price_level, $selected, $hidepriceinlabel = 0, $filterkey = '')
|
protected function constructProductListOption(&$objp, &$opt, &$optJson, $price_level, $selected, $hidepriceinlabel = 0, $filterkey = '', $novirtualstock = 0)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user, $db;
|
global $langs, $conf, $user, $db;
|
||||||
|
|
||||||
@ -2639,7 +2640,7 @@ class Form
|
|||||||
}
|
}
|
||||||
$outval .= $langs->transnoentities("Stock").':'.$objp->stock;
|
$outval .= $langs->transnoentities("Stock").':'.$objp->stock;
|
||||||
$outval .= '</span>';
|
$outval .= '</span>';
|
||||||
if (!empty($conf->global->STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO)) // Warning, this option may slow down combo list generation
|
if (empty($novirtualstock) && !empty($conf->global->STOCK_SHOW_VIRTUAL_STOCK_IN_PRODUCTS_COMBO)) // Warning, this option may slow down combo list generation
|
||||||
{
|
{
|
||||||
$langs->load("stocks");
|
$langs->load("stocks");
|
||||||
|
|
||||||
@ -6693,8 +6694,10 @@ class Form
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
jQuery(document).ready(function () {
|
jQuery(document).ready(function () {
|
||||||
$(\'.multiselectcheckbox'.$htmlname.' input[type="checkbox"]\').on(\'click\', function () {
|
$(\'.multiselectcheckbox'.$htmlname.' input[type="checkbox"]\').on(\'click\', function () {
|
||||||
console.log("A new field was added/removed")
|
console.log("A new field was added/removed, we edit field input[name=formfilteraction]");
|
||||||
$("input:hidden[name=formfilteraction]").val(\'listafterchangingselectedfields\')
|
|
||||||
|
$("input:hidden[name=formfilteraction]").val(\'listafterchangingselectedfields\'); // Update field so we know we changed something on selected fields after POST
|
||||||
|
|
||||||
var title = $(this).val() + ",";
|
var title = $(this).val() + ",";
|
||||||
if ($(this).is(\':checked\')) {
|
if ($(this).is(\':checked\')) {
|
||||||
$(\'.'.$htmlname.'\').val(title + $(\'.'.$htmlname.'\').val());
|
$(\'.'.$htmlname.'\').val(title + $(\'.'.$htmlname.'\').val());
|
||||||
@ -6703,8 +6706,10 @@ class Form
|
|||||||
$(\'.'.$htmlname.'\').val( $(\'.'.$htmlname.'\').val().replace(title, \'\') )
|
$(\'.'.$htmlname.'\').val( $(\'.'.$htmlname.'\').val().replace(title, \'\') )
|
||||||
}
|
}
|
||||||
// Now, we submit page
|
// Now, we submit page
|
||||||
$(this).parents(\'form:first\').submit();
|
//$(this).parents(\'form:first\').submit();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -7070,7 +7075,6 @@ class Form
|
|||||||
jQuery(".linkto").click(function() {
|
jQuery(".linkto").click(function() {
|
||||||
console.log("We choose to show/hide link for rel="+jQuery(this).attr(\'rel\'));
|
console.log("We choose to show/hide link for rel="+jQuery(this).attr(\'rel\'));
|
||||||
jQuery("#"+jQuery(this).attr(\'rel\')+"list").toggle();
|
jQuery("#"+jQuery(this).attr(\'rel\')+"list").toggle();
|
||||||
jQuery(this).toggle();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -59,16 +59,17 @@ class FormAdmin
|
|||||||
* @param int $forcecombo Force to use combo box (so no ajax beautify effect)
|
* @param int $forcecombo Force to use combo box (so no ajax beautify effect)
|
||||||
* @param int $multiselect Make the combo a multiselect
|
* @param int $multiselect Make the combo a multiselect
|
||||||
* @param array $onlykeys Show only the following keys (opposite of $filter)
|
* @param array $onlykeys Show only the following keys (opposite of $filter)
|
||||||
|
* @param int $mainlangonly 1=Show only main languages ('fr_FR' no' fr_BE', 'es_ES' not 'es_MX', ...)
|
||||||
* @return string Return HTML select string with list of languages
|
* @return string Return HTML select string with list of languages
|
||||||
*/
|
*/
|
||||||
public function select_language($selected = '', $htmlname = 'lang_id', $showauto = 0, $filter = null, $showempty = '', $showwarning = 0, $disabled = 0, $morecss = '', $showcode = 0, $forcecombo = 0, $multiselect = 0, $onlykeys = array())
|
public function select_language($selected = '', $htmlname = 'lang_id', $showauto = 0, $filter = null, $showempty = '', $showwarning = 0, $disabled = 0, $morecss = '', $showcode = 0, $forcecombo = 0, $multiselect = 0, $onlykeys = array(), $mainlangonly = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_DEFAULT_LANGUAGE_FILTER)) $filter[$conf->global->MAIN_DEFAULT_LANGUAGE_FILTER] = 1;
|
if (!empty($conf->global->MAIN_DEFAULT_LANGUAGE_FILTER)) $filter[$conf->global->MAIN_DEFAULT_LANGUAGE_FILTER] = 1;
|
||||||
|
|
||||||
$langs_available=$langs->get_available_languages(DOL_DOCUMENT_ROOT, 12);
|
$langs_available=$langs->get_available_languages(DOL_DOCUMENT_ROOT, 12, 0, $mainlangonly);
|
||||||
|
|
||||||
$out='';
|
$out='';
|
||||||
|
|
||||||
@ -95,21 +96,28 @@ class FormAdmin
|
|||||||
{
|
{
|
||||||
$valuetoshow=$value;
|
$valuetoshow=$value;
|
||||||
if ($showcode == 1) $valuetoshow=$key.' - '.$value;
|
if ($showcode == 1) $valuetoshow=$key.' - '.$value;
|
||||||
if ($showcode == 2) $valuetoshow=$value.' ('.$key.')';
|
if ($showcode == 2) {
|
||||||
|
if ($mainlangonly) $valuetoshow=$value.' ('.preg_replace('/[_-].*$/', '', $key).')';
|
||||||
|
else $valuetoshow=$value.' ('.$key.')';
|
||||||
|
}
|
||||||
|
|
||||||
if ($filter && is_array($filter) && array_key_exists($key, $filter)) {
|
$keytouse = $key;
|
||||||
|
if ($mainlangonly) $keytouse = preg_replace('/[_-].*$/', '', $key);
|
||||||
|
|
||||||
|
if ($filter && is_array($filter) && array_key_exists($keytouse, $filter)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($onlykeys && is_array($onlykeys) && ! array_key_exists($key, $onlykeys)) {
|
if ($onlykeys && is_array($onlykeys) && ! array_key_exists($keytouse, $onlykeys)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($selected == $key)
|
|
||||||
|
if ($selected == $keytouse)
|
||||||
{
|
{
|
||||||
$out.= '<option value="'.$key.'" selected>'.$valuetoshow.'</option>';
|
$out.= '<option value="'.$keytouse.'" selected>'.$valuetoshow.'</option>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$out.= '<option value="'.$key.'">'.$valuetoshow.'</option>';
|
$out.= '<option value="'.$keytouse.'">'.$valuetoshow.'</option>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$out.= '</select>';
|
$out.= '</select>';
|
||||||
|
|||||||
58
htdocs/core/class/html.formcategory.class.php
Normal file
58
htdocs/core/class/html.formcategory.class.php
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/core/class/html.formcategory.class.php
|
||||||
|
* \ingroup core
|
||||||
|
* \brief File of class to build HTML component for category filtering
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||||
|
|
||||||
|
class FormCategory extends Form
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Return a HTML filter box for a list filter view
|
||||||
|
*
|
||||||
|
* @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE)
|
||||||
|
* @param Array $preSelected A list with the elements that should pre-selected
|
||||||
|
* @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list"))
|
||||||
|
*/
|
||||||
|
public function getFilterBox($type, $preSelected)
|
||||||
|
{
|
||||||
|
// phpcs:enable
|
||||||
|
global $langs;
|
||||||
|
|
||||||
|
if (empty($preSelected) || !is_array($preSelected))
|
||||||
|
{
|
||||||
|
$preSelected = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$htmlName = "search_category_".$type."_list";
|
||||||
|
|
||||||
|
$categoryArray = $this->select_all_categories($type, "", "", 64, 0, 1);
|
||||||
|
$categoryArray[-2] = "- ".$langs->trans('NotCategorized')." -";
|
||||||
|
|
||||||
|
$filter = '';
|
||||||
|
$filter .= '<div class="divsearchfield">';
|
||||||
|
$filter .= $langs->trans('Categories').": ";
|
||||||
|
$filter .= Form::multiselectarray($htmlName, $categoryArray, $preSelected, 0, 0, "minwidth300");
|
||||||
|
$filter .= "</div>";
|
||||||
|
|
||||||
|
return $filter;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -249,8 +249,7 @@ class FormCompany extends Form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!empty($selected) && $selected == $obj->rowid)
|
if (!empty($selected) && $selected == $obj->rowid)
|
||||||
|| (empty($selected) && !empty($conf->global->MAIN_FORCE_DEFAULT_STATE_ID) && $conf->global->MAIN_FORCE_DEFAULT_STATE_ID == $obj->rowid))
|
|
||||||
{
|
{
|
||||||
$out .= '<option value="'.$obj->rowid.'" selected>';
|
$out .= '<option value="'.$obj->rowid.'" selected>';
|
||||||
}
|
}
|
||||||
@ -455,9 +454,10 @@ class FormCompany extends Form
|
|||||||
* @param int $country_codeid 0=list for all countries, otherwise list only country requested
|
* @param int $country_codeid 0=list for all countries, otherwise list only country requested
|
||||||
* @param string $filter Add a SQL filter on list
|
* @param string $filter Add a SQL filter on list
|
||||||
* @param string $htmlname HTML name of select
|
* @param string $htmlname HTML name of select
|
||||||
|
* @param string $morecss More CSS
|
||||||
* @return string String with HTML select
|
* @return string String with HTML select
|
||||||
*/
|
*/
|
||||||
public function select_juridicalstatus($selected = '', $country_codeid = 0, $filter = '', $htmlname = 'forme_juridique_code')
|
public function select_juridicalstatus($selected = '', $country_codeid = 0, $filter = '', $htmlname = 'forme_juridique_code', $morecss = '')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs, $user;
|
global $conf, $langs, $user;
|
||||||
@ -479,7 +479,7 @@ class FormCompany extends Form
|
|||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$out .= '<div id="particulier2" class="visible">';
|
$out .= '<div id="particulier2" class="visible">';
|
||||||
$out .= '<select class="flat minwidth200" name="'.$htmlname.'" id="'.$htmlname.'">';
|
$out .= '<select class="flat minwidth200'.($morecss?' '.$morecss:'').'" name="'.$htmlname.'" id="'.$htmlname.'">';
|
||||||
if ($country_codeid) $out .= '<option value="0"> </option>'; // When country_codeid is set, we force to add an empty line because it does not appears from select. When not set, we already get the empty line from select.
|
if ($country_codeid) $out .= '<option value="0"> </option>'; // When country_codeid is set, we force to add an empty line because it does not appears from select. When not set, we already get the empty line from select.
|
||||||
|
|
||||||
$num = $this->db->num_rows($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
@ -832,7 +832,7 @@ class FormCompany extends Form
|
|||||||
public function get_input_id_prof($idprof, $htmlname, $preselected, $country_code, $morecss = 'maxwidth100onsmartphone quatrevingtpercent')
|
public function get_input_id_prof($idprof, $htmlname, $preselected, $country_code, $morecss = 'maxwidth100onsmartphone quatrevingtpercent')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs;
|
global $conf, $langs, $hookmanager;
|
||||||
|
|
||||||
$formlength = 0;
|
$formlength = 0;
|
||||||
if (empty($conf->global->MAIN_DISABLEPROFIDRULES)) {
|
if (empty($conf->global->MAIN_DISABLEPROFIDRULES)) {
|
||||||
@ -865,7 +865,16 @@ class FormCompany extends Form
|
|||||||
$maxlength = $formlength;
|
$maxlength = $formlength;
|
||||||
if (empty($formlength)) { $formlength = 24; $maxlength = 128; }
|
if (empty($formlength)) { $formlength = 24; $maxlength = 128; }
|
||||||
|
|
||||||
$out = '<input type="text" '.($morecss ? 'class="'.$morecss.'" ' : '').'name="'.$htmlname.'" id="'.$htmlname.'" maxlength="'.$maxlength.'" value="'.$selected.'">';
|
$out = '';
|
||||||
|
|
||||||
|
// Execute hook getInputIdProf to complete or replace $out
|
||||||
|
$parameters=array('formlength'=>$formlength, 'selected'=>$preselected, 'idprof'=>$idprof, 'htmlname'=>$htmlname, 'country_code'=>$country_code);
|
||||||
|
$reshook=$hookmanager->executeHooks('getInputIdProf', $parameters);
|
||||||
|
if (empty($reshook))
|
||||||
|
{
|
||||||
|
$out .= '<input type="text" '.($morecss ? 'class="'.$morecss.'" ' : '').'name="'.$htmlname.'" id="'.$htmlname.'" maxlength="'.$maxlength.'" value="'.$selected.'">';
|
||||||
|
}
|
||||||
|
$out .= $hookmanager->resPrint;
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1099,7 +1099,7 @@ class FormFile
|
|||||||
if ($disablecrop == -1)
|
if ($disablecrop == -1)
|
||||||
{
|
{
|
||||||
$disablecrop = 1;
|
$disablecrop = 1;
|
||||||
if (in_array($modulepart, array('bank', 'bom', 'expensereport', 'holiday', 'member', 'mrp', 'project', 'product', 'produit', 'propal', 'service', 'societe', 'tax', 'ticket', 'user'))) $disablecrop = 0;
|
if (in_array($modulepart, array('bank', 'bom', 'expensereport', 'holiday', 'member', 'mrp', 'project', 'product', 'produit', 'propal', 'service', 'societe', 'tax', 'tax-vat', 'ticket', 'user'))) $disablecrop = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define relative path used to store the file
|
// Define relative path used to store the file
|
||||||
@ -1121,6 +1121,8 @@ class FormFile
|
|||||||
$relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir);
|
$relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir);
|
||||||
$relativedir = preg_replace('/^[\\/]/', '', $relativedir);
|
$relativedir = preg_replace('/^[\\/]/', '', $relativedir);
|
||||||
}
|
}
|
||||||
|
// For example here $upload_dir = '/pathtodocuments/commande/SO2001-123/'
|
||||||
|
// For example here $upload_dir = '/pathtodocuments/tax/vat/1'
|
||||||
|
|
||||||
$hookmanager->initHooks(array('formfile'));
|
$hookmanager->initHooks(array('formfile'));
|
||||||
$parameters = array(
|
$parameters = array(
|
||||||
|
|||||||
@ -742,7 +742,7 @@ class FormOther
|
|||||||
if (!is_array($arrayofcolors) || count($arrayofcolors) < 1)
|
if (!is_array($arrayofcolors) || count($arrayofcolors) < 1)
|
||||||
{
|
{
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
if (empty($conf->dol_use_jmobile))
|
if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax))
|
||||||
{
|
{
|
||||||
$out .= '<link rel="stylesheet" media="screen" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css" />';
|
$out .= '<link rel="stylesheet" media="screen" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/jpicker/css/jPicker-1.1.6.css" />';
|
||||||
$out .= '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/jpicker/jpicker-1.1.6.js"></script>';
|
$out .= '<script type="text/javascript" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/jpicker/jpicker-1.1.6.js"></script>';
|
||||||
@ -788,7 +788,7 @@ class FormOther
|
|||||||
}
|
}
|
||||||
else // In most cases, this is not used. We used instead function with no specific list of colors
|
else // In most cases, this is not used. We used instead function with no specific list of colors
|
||||||
{
|
{
|
||||||
if (empty($conf->dol_use_jmobile))
|
if (empty($conf->dol_use_jmobile) && !empty($conf->use_javascript_ajax))
|
||||||
{
|
{
|
||||||
$out .= '<link rel="stylesheet" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/colorpicker/jquery.colorpicker.css" type="text/css" media="screen" />';
|
$out .= '<link rel="stylesheet" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/colorpicker/jquery.colorpicker.css" type="text/css" media="screen" />';
|
||||||
$out .= '<script src="'.DOL_URL_ROOT.'/includes/jquery/plugins/colorpicker/jquery.colorpicker.js" type="text/javascript"></script>';
|
$out .= '<script src="'.DOL_URL_ROOT.'/includes/jquery/plugins/colorpicker/jquery.colorpicker.js" type="text/javascript"></script>';
|
||||||
|
|||||||
@ -269,7 +269,15 @@ class FormWebsite
|
|||||||
|
|
||||||
$valueforoption = '<span class="opacitymedium">['.$valpage->type_container.' '.sprintf("%03d", $valpage->id).']</span> ';
|
$valueforoption = '<span class="opacitymedium">['.$valpage->type_container.' '.sprintf("%03d", $valpage->id).']</span> ';
|
||||||
$valueforoption .= $valpage->pageurl.' - '.$valpage->title;
|
$valueforoption .= $valpage->pageurl.' - '.$valpage->title;
|
||||||
if ($website->fk_default_home && $key == $website->fk_default_home) $valueforoption .= ' <span class="opacitymedium">('.$langs->trans("HomePage").')</span>';
|
if ($website->otherlang) { // If there is alternative lang for this web site, we show the language code
|
||||||
|
if ($valpage->lang) {
|
||||||
|
$valueforoption .= ' <span class="opacitymedium">('.$valpage->lang.')</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($website->fk_default_home && $key == $website->fk_default_home) {
|
||||||
|
//$valueforoption .= ' <span class="opacitymedium">('.$langs->trans("HomePage").')</span>';
|
||||||
|
$valueforoption .= ' <span class="opacitymedium fa fa-home"></span>';
|
||||||
|
}
|
||||||
|
|
||||||
$out .= '<option value="'.$key.'"';
|
$out .= '<option value="'.$key.'"';
|
||||||
if ($pageid > 0 && $pageid == $key) $out .= ' selected'; // To preselect a value
|
if ($pageid > 0 && $pageid == $key) $out .= ' selected'; // To preselect a value
|
||||||
|
|||||||
@ -102,7 +102,7 @@ class Menubase
|
|||||||
/**
|
/**
|
||||||
* @var string Key for menu translation
|
* @var string Key for menu translation
|
||||||
* @deprecated
|
* @deprecated
|
||||||
* @see title
|
* @see $title
|
||||||
*/
|
*/
|
||||||
public $titre;
|
public $titre;
|
||||||
|
|
||||||
|
|||||||
@ -282,7 +282,7 @@ class Translate
|
|||||||
* and split the rest until a line feed.
|
* and split the rest until a line feed.
|
||||||
* This is more efficient than fgets + explode + trim by a factor of ~2.
|
* This is more efficient than fgets + explode + trim by a factor of ~2.
|
||||||
*/
|
*/
|
||||||
while ($line = fscanf($fp, "%[^= ]%*[ =]%[^\n]"))
|
while ($line = fscanf($fp, "%[^= ]%*[ =]%[^\n\r]"))
|
||||||
{
|
{
|
||||||
if (isset($line[1]))
|
if (isset($line[1]))
|
||||||
{
|
{
|
||||||
@ -764,28 +764,62 @@ class Translate
|
|||||||
* @param string $langdir Directory to scan
|
* @param string $langdir Directory to scan
|
||||||
* @param integer $maxlength Max length for each value in combo box (will be truncated)
|
* @param integer $maxlength Max length for each value in combo box (will be truncated)
|
||||||
* @param int $usecode 1=Show code instead of country name for language variant, 2=Show only code
|
* @param int $usecode 1=Show code instead of country name for language variant, 2=Show only code
|
||||||
|
* @param int $mainlangonly 1=Show only main languages ('fr_FR' no' fr_BE', 'es_ES' not 'es_MX', ...)
|
||||||
* @return array List of languages
|
* @return array List of languages
|
||||||
*/
|
*/
|
||||||
public function get_available_languages($langdir = DOL_DOCUMENT_ROOT, $maxlength = 0, $usecode = 0)
|
public function get_available_languages($langdir = DOL_DOCUMENT_ROOT, $maxlength = 0, $usecode = 0, $mainlangonly = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
$this->load("languages");
|
||||||
|
|
||||||
// We scan directory langs to detect available languages
|
// We scan directory langs to detect available languages
|
||||||
$handle = opendir($langdir."/langs");
|
$handle = opendir($langdir."/langs");
|
||||||
$langs_available = array();
|
$langs_available = array();
|
||||||
while ($dir = trim(readdir($handle)))
|
while ($dir = trim(readdir($handle)))
|
||||||
{
|
{
|
||||||
if (preg_match('/^[a-z]+_[A-Z]+/i', $dir))
|
$regs = array();
|
||||||
|
if (preg_match('/^([a-z]+)_([A-Z]+)/i', $dir, $regs))
|
||||||
{
|
{
|
||||||
$this->load("languages");
|
// We must keep only main languages
|
||||||
|
if ($mainlangonly) {
|
||||||
|
$arrayofspecialmainlanguages = array(
|
||||||
|
'en'=>'en_US',
|
||||||
|
'sq'=>'sq_AL',
|
||||||
|
'ar'=>'ar_SA',
|
||||||
|
'eu'=>'eu_ES',
|
||||||
|
'bn'=>'bn_DB',
|
||||||
|
'bs'=>'bs_BA',
|
||||||
|
'ca'=>'ca_ES',
|
||||||
|
'zh'=>'zh_TW',
|
||||||
|
'cs'=>'cs_CZ',
|
||||||
|
'da'=>'da_DK',
|
||||||
|
'et'=>'et_EE',
|
||||||
|
'ka'=>'ka_GE',
|
||||||
|
'el'=>'el_GR',
|
||||||
|
'he'=>'he_IL',
|
||||||
|
'kn'=>'kn_IN',
|
||||||
|
'km'=>'km_KH',
|
||||||
|
'ko'=>'ko_KR',
|
||||||
|
'lo'=>'lo_LA',
|
||||||
|
'nb'=>'nb_NO',
|
||||||
|
'fa'=>'fa_IR',
|
||||||
|
'sr'=>'sr_RS',
|
||||||
|
'sl'=>'sl_SI',
|
||||||
|
'uk'=>'uk_UA',
|
||||||
|
'vi'=>'vi_VN'
|
||||||
|
);
|
||||||
|
if (strtolower($regs[1]) != strtolower($regs[2]) && ! in_array($dir, $arrayofspecialmainlanguages)) continue;
|
||||||
|
}
|
||||||
|
// We must keep only languages into MAIN_LANGUAGES_ALLOWED
|
||||||
if (!empty($conf->global->MAIN_LANGUAGES_ALLOWED) && !in_array($dir, explode(',', $conf->global->MAIN_LANGUAGES_ALLOWED))) continue;
|
if (!empty($conf->global->MAIN_LANGUAGES_ALLOWED) && !in_array($dir, explode(',', $conf->global->MAIN_LANGUAGES_ALLOWED))) continue;
|
||||||
|
|
||||||
if ($usecode == 2)
|
if ($usecode == 2)
|
||||||
{
|
{
|
||||||
$langs_available[$dir] = $dir;
|
$langs_available[$dir] = $dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($usecode == 1 || !empty($conf->global->MAIN_SHOW_LANGUAGE_CODE))
|
if ($usecode == 1 || !empty($conf->global->MAIN_SHOW_LANGUAGE_CODE))
|
||||||
{
|
{
|
||||||
$langs_available[$dir] = $dir.': '.dol_trunc($this->trans('Language_'.$dir), $maxlength);
|
$langs_available[$dir] = $dir.': '.dol_trunc($this->trans('Language_'.$dir), $maxlength);
|
||||||
@ -794,6 +828,9 @@ class Translate
|
|||||||
{
|
{
|
||||||
$langs_available[$dir] = $this->trans('Language_'.$dir);
|
$langs_available[$dir] = $this->trans('Language_'.$dir);
|
||||||
}
|
}
|
||||||
|
if ($mainlangonly) {
|
||||||
|
$langs_available[$dir] = str_replace(' (United States)', '', $langs_available[$dir]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $langs_available;
|
return $langs_available;
|
||||||
|
|||||||
@ -80,15 +80,15 @@ $arrayoftype = array(
|
|||||||
'contact' => array('label' => 'Contacts', 'ObjectClassName' => 'Contact', 'enabled' => $conf->societe->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"),
|
'contact' => array('label' => 'Contacts', 'ObjectClassName' => 'Contact', 'enabled' => $conf->societe->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"),
|
||||||
'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => $conf->contrat->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", 'langs'=>'contract'),
|
'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => $conf->contrat->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", 'langs'=>'contract'),
|
||||||
'invoice' => array('label' => 'Invoices', 'ObjectClassName' => 'Facture', 'enabled' => $conf->facture->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"),
|
'invoice' => array('label' => 'Invoices', 'ObjectClassName' => 'Facture', 'enabled' => $conf->facture->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"),
|
||||||
'invoice_template'=>array('label' => 'PredefinedInvoices', 'ObjectClassName' => 'FactureRec', 'enabled' => $conf->facture->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/compta/class/facturerec.class.php"),
|
'invoice_template'=>array('label' => 'PredefinedInvoices', 'ObjectClassName' => 'FactureRec', 'enabled' => $conf->facture->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/compta/class/facturerec.class.php", 'langs'=>'bills'),
|
||||||
'bom' => array('label' => 'BOM', 'ObjectClassName' => 'Bom', 'enabled' => $conf->bom->enabled),
|
'bom' => array('label' => 'BOM', 'ObjectClassName' => 'Bom', 'enabled' => $conf->bom->enabled),
|
||||||
'mo' => array('label' => 'MO', 'ObjectClassName' => 'Mo', 'enabled' => $conf->mo->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/mrp/class/mo.class.php"),
|
'mo' => array('label' => 'MO', 'ObjectClassName' => 'Mo', 'enabled' => $conf->mrp->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/mrp/class/mo.class.php"),
|
||||||
'ticket' => array('label' => 'Ticket', 'ObjectClassName' => 'Ticket', 'enabled' => $conf->ticket->enabled),
|
'ticket' => array('label' => 'Ticket', 'ObjectClassName' => 'Ticket', 'enabled' => $conf->ticket->enabled),
|
||||||
'member' => array('label' => 'Adherent', 'ObjectClassName' => 'Adherent', 'enabled' => $conf->adherent->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", 'langs'=>'members'),
|
'member' => array('label' => 'Adherent', 'ObjectClassName' => 'Adherent', 'enabled' => $conf->adherent->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", 'langs'=>'members'),
|
||||||
'cotisation' => array('label' => 'Subscriptions', 'ObjectClassName' => 'Subscription', 'enabled' => $conf->adherent->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/adherents/class/subscription.class.php", 'langs'=>'members'),
|
'cotisation' => array('label' => 'Subscriptions', 'ObjectClassName' => 'Subscription', 'enabled' => $conf->adherent->enabled, 'ClassPath' => DOL_DOCUMENT_ROOT."/adherents/class/subscription.class.php", 'langs'=>'members'),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Complete $arrayoftype
|
// Complete $arrayoftype by external modules
|
||||||
$parameters = array('objecttype'=>$objecttype, 'tabfamily'=>$tabfamily);
|
$parameters = array('objecttype'=>$objecttype, 'tabfamily'=>$tabfamily);
|
||||||
$reshook = $hookmanager->executeHooks('loadDataForCustomReports', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
$reshook = $hookmanager->executeHooks('loadDataForCustomReports', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
@ -114,9 +114,6 @@ elseif (is_array($hookmanager->resArray)) {
|
|||||||
|
|
||||||
if ($objecttype) {
|
if ($objecttype) {
|
||||||
try {
|
try {
|
||||||
if ($arrayoftype[$objecttype]['langs']) {
|
|
||||||
$langs->load($arrayoftype[$objecttype]['langs']);
|
|
||||||
}
|
|
||||||
if ($arrayoftype[$objecttype]['ClassPath']) {
|
if ($arrayoftype[$objecttype]['ClassPath']) {
|
||||||
include_once $arrayoftype[$objecttype]['ClassPath'];
|
include_once $arrayoftype[$objecttype]['ClassPath'];
|
||||||
} else {
|
} else {
|
||||||
@ -211,6 +208,9 @@ foreach ($arrayoftype as $key => $val) {
|
|||||||
if (dol_eval($val['enabled'], 1)) {
|
if (dol_eval($val['enabled'], 1)) {
|
||||||
$newarrayoftype[$key] = $arrayoftype[$key];
|
$newarrayoftype[$key] = $arrayoftype[$key];
|
||||||
}
|
}
|
||||||
|
if ($val['langs']) {
|
||||||
|
$langs->load($val['langs']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
print $form->selectarray('objecttype', $newarrayoftype, $objecttype, 0, 0, 0, '', 1, 0, 0, '', '', 1);
|
print $form->selectarray('objecttype', $newarrayoftype, $objecttype, 0, 0, 0, '', 1, 0, 0, '', '', 1);
|
||||||
if (empty($conf->use_javascript_ajax)) print '<input type="submit" class="button" name="changeobjecttype" value="'.$langs->trans("Refresh").'">';
|
if (empty($conf->use_javascript_ajax)) print '<input type="submit" class="button" name="changeobjecttype" value="'.$langs->trans("Refresh").'">';
|
||||||
@ -269,9 +269,9 @@ foreach ($object->fields as $key => $val) {
|
|||||||
if (preg_match('/^pass/', $key)) continue;
|
if (preg_match('/^pass/', $key)) continue;
|
||||||
if (in_array($val['type'], array('html', 'text'))) continue;
|
if (in_array($val['type'], array('html', 'text'))) continue;
|
||||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||||
$arrayofxaxis['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Year").')', 'position' => $val['position']);
|
$arrayofxaxis['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Year").')', 'position' => $val['position'].'-y');
|
||||||
$arrayofxaxis['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Month").')', 'position' => $val['position']);
|
$arrayofxaxis['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Month").')', 'position' => $val['position'].'-m');
|
||||||
$arrayofxaxis['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Day").')', 'position' => $val['position']);
|
$arrayofxaxis['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' ('.$langs->trans("Day").')', 'position' => $val['position'].'-d');
|
||||||
} else {
|
} else {
|
||||||
$arrayofxaxis['t.'.$key] = array('label' => $val['label'], 'position' => (int) $val['position']);
|
$arrayofxaxis['t.'.$key] = array('label' => $val['label'], 'position' => (int) $val['position']);
|
||||||
}
|
}
|
||||||
@ -279,13 +279,12 @@ foreach ($object->fields as $key => $val) {
|
|||||||
// Add measure from extrafields
|
// Add measure from extrafields
|
||||||
if ($object->isextrafieldmanaged) {
|
if ($object->isextrafieldmanaged) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key])) {
|
|
||||||
$arrayofxaxis['te.'.$key] = array('label' => $extrafields->attributes[$object->table_element]['label'][$key], 'position' => (int) $extrafields->attributes[$object->table_element]['pos'][$key]);
|
$arrayofxaxis['te.'.$key] = array('label' => $extrafields->attributes[$object->table_element]['label'][$key], 'position' => (int) $extrafields->attributes[$object->table_element]['pos'][$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
$arrayofxaxis = dol_sort_array($arrayofxaxis, 'position');
|
$arrayofxaxis = dol_sort_array($arrayofxaxis, 'position', 'asc', 1);
|
||||||
$arrayofxaxislabel = array();
|
$arrayofxaxislabel = array();
|
||||||
foreach ($arrayofxaxis as $key => $val) {
|
foreach ($arrayofxaxis as $key => $val) {
|
||||||
$arrayofxaxislabel[$key] = $val['label'];
|
$arrayofxaxislabel[$key] = $val['label'];
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user