diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a603fd242ccfd8d8a92e0d67ea6f474e07bcf0f3..304924fe15031408867150d1e3520ded5c0f08a8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,15 +4,14 @@ How to contribute to Dolibarr Bug reports and feature requests -------------------------------- -*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum). +<a name=not-a-support-forum></a>*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum). -**NEW** - -Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). +Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). 1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem. 2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request. -3. Report with as much detail as possible ([Use screenshots or even screencasts whenever possible](https://help.github.com/articles/issue-attachments)). +4. Tell us the version you are using! +3. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible). We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr). @@ -41,9 +40,45 @@ Choose your base branch accordingly. ### General rules Please don't edit the ChangeLog file. A project manager will update it from your commit messages. -### Commits +### <a name=commits></a>Commits Use clear commit messages with the following structure: +``` +[KEYWORD] [ISSUENUM] DESC + +LONGDESC +``` + +#### Keyword +In uppercase to appear in ChangeLog when generated. + +The keyword can be ommitted if your commit does not fit in any of the following categories: +- Fix: for a bug fix +- Close: for closing a referenced feature request +- New: for an unreferenced new feature (Opening a feature request and using close is prefered) + +#### Issuenum +If your commit fixes a referenced bug or feature request. + +In the form of a # followed by the GitHub issue number. + +#### Desc +A short description of the commit content. + +This should ideally be less than 50 characters. + +#### LongDesc +A long description of the commit content. + +You can really go to town here and explain in depth what you've been doing. + +Feel free to express technical details, use cases or anything relevant to the current commit. + +This section can span multiple lines. + +Try to keep lines under 72 characters. + +#### Samples <pre> FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog) or @@ -57,8 +92,10 @@ Long description (Can span accross multiple lines). </pre> ### Pull Requests -When submitting a pull request, use same rule than Commits. With upper case keyword to appear into ChangeLog. +When submitting a pull request, use same rule as [Commits](#commits) for the message. +If your pull request only contains one commit, GitHub will be smart enough to fill it for you. +Otherwise, please be a bit verbose about what you're providing. ### Resources [Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) @@ -67,18 +104,18 @@ Translations ------------ The source language (en_US) is maintained in the repository. See the [Code](#code) section above. -All other translations are managed online at [Transifex](https://www.transifex.com/projects/p/dolibarr). +All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/). Join an existing translation team or create your own and translate into the interface. Your translations will be available in the next major release. ### Resources -[Translator documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) +[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation) Documentation ------------- The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php). -*You need to create an account before being able to edit.* +*Note*: to help prevent spam, you need to create an account before being able to edit. diff --git a/dev/cliparts/commons.svg b/dev/cliparts/commons.svg new file mode 100644 index 0000000000000000000000000000000000000000..1abca065694d8abb7bf0b6bede10660d13a4898d --- /dev/null +++ b/dev/cliparts/commons.svg @@ -0,0 +1,2058 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="commons.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="3.7437097" + inkscape:cx="394.58694" + inkscape:cy="927.47511" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" /> + <defs + id="defs4"> + <linearGradient + id="linearGradient3301"> + <stop + id="stop3303" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop3305" + style="stop-color:#cdc8c9" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient2290"> + <stop + id="stop2292" + style="stop-color:#575b4e" + offset="0" /> + <stop + id="stop2294" + style="stop-color:#32352c" + offset="1" /> + </linearGradient> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4043"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4045" /> + <feColorMatrix + id="feColorMatrix4715" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4717" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4719" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4721" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4723" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4047"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4049" /> + <feColorMatrix + id="feColorMatrix4725" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4727" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4729" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4731" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4733" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4051"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4053" /> + <feColorMatrix + id="feColorMatrix4735" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4737" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4739" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4741" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4743" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4055"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4057" /> + <feColorMatrix + id="feColorMatrix4745" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4747" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4749" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4751" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4753" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4059"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4061" /> + <feColorMatrix + id="feColorMatrix4755" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4757" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4759" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4761" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4763" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4063"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4065" /> + <feColorMatrix + id="feColorMatrix4765" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4767" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4769" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4771" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4773" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4067"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4069" /> + <feColorMatrix + id="feColorMatrix4775" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4777" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4779" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4781" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4783" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4071"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4073" /> + <feColorMatrix + id="feColorMatrix4785" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4787" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4789" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4791" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4793" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4075"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4077" /> + <feColorMatrix + id="feColorMatrix4795" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4797" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4799" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4801" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4803" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4079"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4081" /> + <feColorMatrix + id="feColorMatrix4805" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4807" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4809" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4811" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4813" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4083"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4085" /> + <feColorMatrix + id="feColorMatrix4815" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4817" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4819" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4821" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4823" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4087"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4089" /> + <feColorMatrix + id="feColorMatrix4825" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4827" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4829" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4831" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4833" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4091"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4093" /> + <feColorMatrix + id="feColorMatrix4835" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4837" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4839" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4841" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4843" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4095"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4097" /> + <feColorMatrix + id="feColorMatrix4845" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4847" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4849" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4851" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4853" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4099"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4101" /> + <feColorMatrix + id="feColorMatrix4855" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4857" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4859" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4861" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4863" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4103"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4105" /> + <feColorMatrix + id="feColorMatrix4865" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4867" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4869" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4871" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4873" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4107"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4109" /> + <feColorMatrix + id="feColorMatrix4875" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4877" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4879" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4881" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4883" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4111"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4113" /> + <feColorMatrix + id="feColorMatrix4885" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4887" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4889" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4891" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4893" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4115"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4117" /> + <feColorMatrix + id="feColorMatrix4895" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4897" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4899" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4901" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4903" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4119"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4121" /> + <feColorMatrix + id="feColorMatrix4905" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4907" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4909" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4911" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4913" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4123"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4125" /> + <feColorMatrix + id="feColorMatrix4915" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4917" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4919" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4921" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4923" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4127"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4129" /> + <feColorMatrix + id="feColorMatrix4925" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4927" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4929" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4931" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4933" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4131"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4133" /> + <feColorMatrix + id="feColorMatrix4935" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4937" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4939" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4941" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4943" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4135"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4137" /> + <feColorMatrix + id="feColorMatrix4945" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4947" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4949" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4951" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4953" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4139"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4141" /> + <feColorMatrix + id="feColorMatrix4955" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4957" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4959" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4961" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4963" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4143"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4145" /> + <feColorMatrix + id="feColorMatrix4965" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4967" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4969" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4971" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4973" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4147"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4149" /> + <feColorMatrix + id="feColorMatrix4975" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4977" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4979" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4981" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4983" /> + </filter> + <filter + color-interpolation-filters="sRGB" + inkscape:menu-tooltip="Increase or decrease lightness and contrast" + inkscape:menu="Color" + height="1" + width="1" + y="0" + x="0" + inkscape:label="Lightness-Contrast" + id="filter4151"> + <feColorMatrix + result="fbSourceGraphic" + values="0" + type="saturate" + id="feColorMatrix4153" /> + <feColorMatrix + id="feColorMatrix4985" + values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" + in="fbSourceGraphic" + result="fbSourceGraphicAlpha" /> + <feFlood + in="fbSourceGraphic" + flood-color="rgb(128,128,128)" + flood-opacity="0" + result="result1" + id="feFlood4987" /> + <feBlend + result="result2" + mode="normal" + in2="fbSourceGraphic" + id="feBlend4989" /> + <feComposite + result="result3" + operator="arithmetic" + k2="1" + in2="fbSourceGraphic" + id="feComposite4991" /> + <feComposite + operator="in" + in2="fbSourceGraphic" + id="feComposite4993" /> + </filter> + <linearGradient + id="linearGradient2290-873"> + <stop + id="stop5537" + style="stop-color:#595f49" + offset="0" /> + <stop + id="stop5539" + style="stop-color:#32362a" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient3301-174"> + <stop + id="stop5569" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop5571" + style="stop-color:#cfc5c8" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient3301-538"> + <stop + id="stop5621" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop5623" + style="stop-color:#cfc5c8" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient2290-629"> + <stop + id="stop5627" + style="stop-color:#595f49" + offset="0" /> + <stop + id="stop5629" + style="stop-color:#32362a" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient2290-873-789"> + <stop + id="stop6406" + style="stop-color:#5b6344" + offset="0" /> + <stop + id="stop6408" + style="stop-color:#333827" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient2290-629-99"> + <stop + id="stop6434" + style="stop-color:#5b6344" + offset="0" /> + <stop + id="stop6436" + style="stop-color:#333827" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient3301-174-110"> + <stop + id="stop6470" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop6472" + style="stop-color:#d1c2c6" + offset="1" /> + </linearGradient> + <linearGradient + id="linearGradient3301-538-48"> + <stop + id="stop6482" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop6484" + style="stop-color:#d1c2c6" + offset="1" /> + </linearGradient> + <linearGradient + y2="609.51" + x2="302.86" + y1="366.65" + x1="302.86" + gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" + gradientUnits="userSpaceOnUse" + id="linearGradient4018-809-142-461" + xlink:href="#linearGradient6715-910-452-648" + inkscape:collect="always" /> + <linearGradient + id="linearGradient6715-910-452-648" + y2="609.51" + gradientUnits="userSpaceOnUse" + x2="302.86" + gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" + y1="366.65" + x1="302.86" + inkscape:collect="always"> + <stop + id="stop7364" + style="stop-color:#000000;stop-opacity:0" + offset="0" /> + <stop + id="stop7366" + style="stop-color:#000000" + offset=".5" /> + <stop + id="stop7368" + style="stop-color:#000000;stop-opacity:0" + offset="1" /> + </linearGradient> + <radialGradient + r="117.14" + cy="486.65" + cx="605.71" + gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)" + gradientUnits="userSpaceOnUse" + id="radialGradient4020-921-903-925" + xlink:href="#linearGradient5060-178-894-114" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5060-178-894-114" + inkscape:collect="always"> + <stop + id="stop7372" + style="stop-color:#000000" + offset="0" /> + <stop + id="stop7374" + style="stop-color:#000000;stop-opacity:0" + offset="1" /> + </linearGradient> + <radialGradient + r="117.14" + cy="486.65" + cx="605.71" + gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)" + gradientUnits="userSpaceOnUse" + id="radialGradient4022-96-722-645" + xlink:href="#linearGradient5060-460-114-794" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5060-460-114-794" + inkscape:collect="always"> + <stop + id="stop7378" + style="stop-color:#000000" + offset="0" /> + <stop + id="stop7380" + style="stop-color:#000000;stop-opacity:0" + offset="1" /> + </linearGradient> + <radialGradient + r="17.5" + cy="36.812" + cx="25.375" + gradientTransform="matrix(1,0,0,0.45357,0,20.115)" + gradientUnits="userSpaceOnUse" + id="radialGradient4016-299-617-898" + xlink:href="#radialGradient1415-35-218-227" + inkscape:collect="always" /> + <radialGradient + id="radialGradient1415-35-218-227" + gradientUnits="userSpaceOnUse" + cy="36.812" + cx="25.375" + gradientTransform="matrix(1,0,0,0.45357,0,20.115)" + r="17.5" + inkscape:collect="always"> + <stop + id="stop7384" + style="stop-color:#000000" + offset="0" /> + <stop + id="stop7386" + style="stop-color:#000000;stop-opacity:0" + offset="1" /> + </radialGradient> + <linearGradient + y2="29.719" + x2="14.844" + y1="29.719" + x1="7.8705" + gradientTransform="matrix(1.9894275,0,0,1.6124079,326.90889,61.942025)" + gradientUnits="userSpaceOnUse" + id="linearGradient3993-332-664-477" + xlink:href="#linearGradient2290-873-789-138" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2290-873-789-138"> + <stop + id="stop7390" + style="stop-color:#636144" + offset="0" /> + <stop + id="stop7392" + style="stop-color:#383727" + offset="1" /> + </linearGradient> + <linearGradient + gradientTransform="matrix(1.9206676,0,0,1.6124079,327.22094,61.61627)" + y2="26.093" + x2="30.13" + y1="26.093" + x1="16.353" + gradientUnits="userSpaceOnUse" + id="linearGradient3990-904-452-173" + xlink:href="#linearGradient1482-781-381-431" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1482-781-381-431" + y2="26.093" + gradientUnits="userSpaceOnUse" + x2="30.13" + y1="26.093" + x1="16.353" + inkscape:collect="always"> + <stop + id="stop7396" + style="stop-color:#3c382a" + offset="0" /> + <stop + id="stop7398" + style="stop-color:#786f52" + offset="1" /> + </linearGradient> + <linearGradient + y2="30.566" + x2="38.416" + y1="39.052" + x1="22.55" + gradientUnits="userSpaceOnUse" + id="linearGradient4014-537-71-46" + xlink:href="#linearGradient1423-931-498-227" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1423-931-498-227" + y2="30.566" + gradientUnits="userSpaceOnUse" + x2="38.416" + y1="39.052" + x1="22.55" + inkscape:collect="always"> + <stop + id="stop7402" + style="stop-color:#2c463c" + offset="0" /> + <stop + id="stop7404" + style="stop-color:#6fa493" + offset=".5" /> + <stop + id="stop7406" + style="stop-color:#284137" + offset="1" /> + </linearGradient> + <linearGradient + y2="30.917" + x2="33.904" + y1="35.303" + x1="23.661" + gradientUnits="userSpaceOnUse" + id="linearGradient4012-958-624-527" + xlink:href="#linearGradient1425-184-436-936" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1425-184-436-936" + y2="30.917" + gradientUnits="userSpaceOnUse" + x2="33.904" + y1="35.303" + x1="23.661" + inkscape:collect="always"> + <stop + id="stop7410" + style="stop-color:#9a798b" + offset="0" /> + <stop + id="stop7412" + style="stop-color:#caded6" + offset=".5" /> + <stop + id="stop7414" + style="stop-color:#946b83" + offset="1" /> + </linearGradient> + <linearGradient + y2="29.719" + x2="14.844" + y1="29.719" + x1="7.8705" + gradientTransform="matrix(1.9686844,0,0,1.6124079,327.09044,61.616268)" + gradientUnits="userSpaceOnUse" + id="linearGradient3983-23-564-355" + xlink:href="#linearGradient2290-629-99-410" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2290-629-99-410"> + <stop + id="stop7418" + style="stop-color:#636144" + offset="0" /> + <stop + id="stop7420" + style="stop-color:#383727" + offset="1" /> + </linearGradient> + <linearGradient + gradientTransform="matrix(1.9206676,0,0,1.6124079,327.22094,61.61627)" + y2="57.125" + x2="35.888" + y1="16.125" + x1="16.667" + gradientUnits="userSpaceOnUse" + id="linearGradient3977-245-360-122" + xlink:href="#linearGradient1469-774-680-510" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1469-774-680-510" + y2="57.125" + gradientUnits="userSpaceOnUse" + x2="35.888" + y1="16.125" + x1="16.667" + inkscape:collect="always"> + <stop + id="stop7424" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop7426" + style="stop-color:#ffffff;stop-opacity:0" + offset="1" /> + </linearGradient> + <radialGradient + r="4.625" + cy="23.672" + cx="16.875" + gradientTransform="matrix(1,0,0,1.0135,0,-0.3049)" + gradientUnits="userSpaceOnUse" + id="radialGradient4008-272-475-622" + xlink:href="#radialGradient1431-457-720-402" + inkscape:collect="always" /> + <radialGradient + id="radialGradient1431-457-720-402" + gradientUnits="userSpaceOnUse" + cy="23.672" + cx="16.875" + gradientTransform="matrix(1,0,0,1.0135,0,-0.3049)" + r="4.625" + inkscape:collect="always"> + <stop + id="stop7430" + style="stop-color:#8c637b" + offset="0" /> + <stop + id="stop7432" + style="stop-color:#000000" + offset="1" /> + </radialGradient> + <linearGradient + y2="27.073" + x2="18.422" + y1="18.849" + x1="12.836" + gradientUnits="userSpaceOnUse" + id="linearGradient4010-13-206-770" + xlink:href="#linearGradient1433-902-718-214" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1433-902-718-214" + y2="27.073" + gradientUnits="userSpaceOnUse" + x2="18.422" + y1="18.849" + x1="12.836" + inkscape:collect="always"> + <stop + id="stop7436" + style="stop-color:#010000" + offset="0" /> + <stop + id="stop7438" + style="stop-color:#a38395" + offset="1" /> + </linearGradient> + <radialGradient + r="1.75" + cy="22.688" + cx="14.75" + gradientTransform="matrix(1,0,0,1.0357,0,-0.81027)" + gradientUnits="userSpaceOnUse" + id="radialGradient4006-332-943-671" + xlink:href="#radialGradient2824-387-578-214" + inkscape:collect="always" /> + <radialGradient + id="radialGradient2824-387-578-214" + gradientUnits="userSpaceOnUse" + cy="22.688" + cx="14.75" + gradientTransform="matrix(1,0,0,1.0357,0,-0.81027)" + r="1.75" + inkscape:collect="always"> + <stop + id="stop7442" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop7444" + style="stop-color:#ffffff;stop-opacity:0" + offset="1" /> + </radialGradient> + <linearGradient + gradientTransform="matrix(1.9206676,0,0,1.6124079,327.22095,61.616268)" + y2="12.847" + x2="29.395" + y1="9.4122" + x1="29.395" + gradientUnits="userSpaceOnUse" + id="linearGradient3969-54-102-383" + xlink:href="#linearGradient1461-63-76-600" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1461-63-76-600" + y2="12.847" + gradientUnits="userSpaceOnUse" + x2="29.395" + y1="9.4122" + x1="29.395" + inkscape:collect="always"> + <stop + id="stop7448" + style="stop-color:#636144" + offset="0" /> + <stop + id="stop7450" + style="stop-color:#121610" + offset="1" /> + </linearGradient> + <linearGradient + y2="30.191" + x2="6.5596" + y1="29.374" + x1="6.5596" + gradientTransform="matrix(2.8383625,0,0,3.1961149,362.88197,-21.596877)" + gradientUnits="userSpaceOnUse" + id="linearGradient3964-53-485-97" + xlink:href="#linearGradient3301-174-110-76" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3301-174-110-76"> + <stop + id="stop7454" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop7456" + style="stop-color:#d1c2ca" + offset="1" /> + </linearGradient> + <linearGradient + y2="24.701" + x2="7.9151" + y1="30.817" + x1="7.9151" + gradientTransform="matrix(2.5322081,0,0,1.2466976,363.15086,38.687829)" + gradientUnits="userSpaceOnUse" + id="linearGradient3966-710-670-446" + xlink:href="#linearGradient1458-906-752-598" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1458-906-752-598" + y2="24.701" + gradientUnits="userSpaceOnUse" + x2="7.9151" + gradientTransform="matrix(1.3184,0,0,0.77319,18.707,-14.22)" + y1="30.817" + x1="7.9151" + inkscape:collect="always"> + <stop + id="stop7460" + style="stop-color:#eeebeb" + offset="0" /> + <stop + id="stop7462" + style="stop-color:#ae93a3" + offset="1" /> + </linearGradient> + <linearGradient + y2="30.191" + x2="6.5596" + y1="29.374" + x1="6.5596" + gradientTransform="matrix(1.2584982,0,0,3.0611564,355.91955,4.2919439)" + gradientUnits="userSpaceOnUse" + id="linearGradient3959-358-405-821" + xlink:href="#linearGradient3301-538-48-57" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3301-538-48-57"> + <stop + id="stop7466" + style="stop-color:#ffffff" + offset="0" /> + <stop + id="stop7468" + style="stop-color:#d1c2ca" + offset="1" /> + </linearGradient> + </defs> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Calque 1"> + <g + id="g8014" + style="opacity:0.27956992" + transform="matrix(0.99771798,0,0,1.0176646,-1.1510876,-0.81544515)" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879"> + <path + id="path2629" + sodipodi:rx="1.75" + sodipodi:ry="1.8125" + style="color:#000000;fill:#ffffff;filter:url(#filter4151)" + sodipodi:type="arc" + d="M 16.5,22.6875 C 16.5,23.688516 15.716498,24.5 14.75,24.5 13.783502,24.5 13,23.688516 13,22.6875 c 0,-1.001016 0.783502,-1.8125 1.75,-1.8125 0.966498,0 1.75,0.811484 1.75,1.8125 z" + transform="matrix(0.87603572,0,0,0.73543535,365.14025,95.249691)" + sodipodi:cy="22.6875" + sodipodi:cx="14.75" /> + <g + id="g6707" + transform="matrix(0.04710822,0,0,0.03364773,413.9391,121.78327)" + style="filter:url(#filter4147)"> + <rect + id="rect6709" + style="opacity:0.40206;color:#000000;fill:url(#linearGradient4018-809-142-461)" + height="478.35999" + width="1339.6" + y="-150.7" + x="-1559.3" /> + <path + inkscape:connector-curvature="0" + id="path6711" + sodipodi:nodetypes="cccc" + style="opacity:0.40206;color:#000000;fill:url(#radialGradient4020-921-903-925)" + d="m -219.62,-150.68 v 478.33 c 142.88,0.9 345.4,-107.17 345.4,-239.2 0,-132.02 -159.44,-239.13 -345.4,-239.13 z" /> + <path + inkscape:connector-curvature="0" + id="path6713" + sodipodi:nodetypes="cccc" + style="opacity:0.40206;color:#000000;fill:url(#radialGradient4022-96-722-645)" + d="m -1559.3,-150.68 v 478.33 c -142.8,0.9 -345.4,-107.17 -345.4,-239.2 0,-132.02 159.5,-239.13 345.4,-239.13 z" /> + </g> + <path + id="path2664" + sodipodi:rx="17.5" + sodipodi:ry="7.9375" + style="color:#000000;fill:url(#radialGradient4016-299-617-898);display:block;filter:url(#filter4143)" + sodipodi:type="arc" + d="m 42.875,36.8125 c 0,4.38376 -7.835017,7.9375 -17.5,7.9375 -9.664983,0 -17.5,-3.55374 -17.5,-7.9375 0,-4.38376 7.835017,-7.9375 17.5,-7.9375 9.664983,0 17.5,3.55374 17.5,7.9375 z" + transform="matrix(1.3313876,0,0,1.307695,353.93744,77.67053)" + sodipodi:cy="36.8125" + sodipodi:cx="25.375" /> + <path + inkscape:connector-curvature="0" + id="path2608" + sodipodi:nodetypes="csscssscssc" + style="color:#000000;fill:url(#linearGradient3993-332-664-477);stroke:#2c2325;stroke-width:3.51960182;display:block;filter:url(#filter4139)" + d="m 344.37789,92.124638 c -6.66722,0 -12.06044,1.805896 -12.06044,4.031019 0,0.253148 0.30154,0.464373 0.43521,0.704622 -0.0196,0.08062 -0.18649,0.06611 -0.18649,0.151567 0,0 -0.24872,26.301594 -0.24872,26.554754 0,2.22512 5.39322,4.03102 12.06044,4.03102 6.66703,0 12.06026,-1.8059 12.06026,-4.03102 l -0.24777,-26.554754 c 0,-0.08546 -0.1671,-0.07095 -0.18823,-0.151567 0.13445,-0.240249 0.436,-0.451474 0.436,-0.704622 0,-2.225123 -5.39323,-4.031019 -12.06026,-4.031019 z" /> + <path + inkscape:connector-curvature="0" + id="path8417" + sodipodi:nodetypes="ccccccccczcc" + style="color:#000000;fill:url(#linearGradient3990-904-452-173);stroke:#2c2325;stroke-width:1.75980091;display:block;filter:url(#filter4135)" + d="m 331.33675,123.93261 h 77.10136 c 2.13386,0.16285 4.26196,-1.85427 4.26196,-2.99423 V 92.482592 c -0.19398,-1.791385 -7.62313,-3.908477 -9.36901,-4.07133 H 398.66 l -5.61604,-4.974278 h -20.27649 l -6.59749,4.888821 c 0,0 -12.92033,0.340218 -22.93469,1.88168 -10.01552,1.53985 -12.17319,4.171298 -12.17319,6.125537 l 0.27446,27.599588 z" /> + <path + inkscape:connector-curvature="0" + id="path2300" + sodipodi:nodetypes="cccc" + style="color:#000000;fill:#404735;display:block;filter:url(#filter4131)" + d="m 392.3143,84.040024 2.61787,6.107801 3.58972,-0.732033 -6.20759,-5.375768 z" /> + <path + id="path2302" + sodipodi:rx="1.9697975" + sodipodi:ry="1.9697975" + style="color:#000000;fill:#58634d;stroke:#af9da2;stroke-width:0.7956;display:block;filter:url(#filter4127)" + sodipodi:type="arc" + d="m 43.133513,33.908371 c 0,1.087889 -0.881909,1.969797 -1.969798,1.969797 -1.087889,0 -1.969797,-0.881908 -1.969797,-1.969797 0,-1.087889 0.881908,-1.969798 1.969797,-1.969798 1.087889,0 1.969798,0.881909 1.969798,1.969798 z" + transform="matrix(2.4140872,0,0,2.0266354,304.77411,45.451879)" + sodipodi:cy="33.908371" + sodipodi:cx="41.163715" /> + <path + id="path2280" + sodipodi:rx="10.142858" + sodipodi:ry="10.142858" + style="color:#000000;fill:url(#linearGradient4014-537-71-46);display:block;filter:url(#filter4123)" + sodipodi:type="arc" + d="m 40.714286,33.57143 c 0,5.601746 -4.541112,10.142858 -10.142858,10.142858 -5.601745,0 -10.142857,-4.541112 -10.142857,-10.142858 0,-5.601745 4.541112,-10.142857 10.142857,-10.142857 5.601746,0 10.142858,4.541112 10.142858,10.142857 z" + transform="matrix(2.079891,0,0,1.7460765,320.84337,54.544731)" + sodipodi:cy="33.57143" + sodipodi:cx="30.571428" /> + <path + id="path2278" + sodipodi:rx="10.142858" + sodipodi:ry="10.142858" + style="color:#000000;fill:url(#linearGradient4012-958-624-527);display:block;filter:url(#filter4119)" + sodipodi:type="arc" + d="m 40.714286,33.57143 c 0,5.601746 -4.541112,10.142858 -10.142858,10.142858 -5.601745,0 -10.142857,-4.541112 -10.142857,-10.142858 0,-5.601745 4.541112,-10.142857 10.142857,-10.142857 5.601746,0 10.142858,4.541112 10.142858,10.142857 z" + transform="matrix(2.079891,0,0,1.7460765,321.16125,57.59186)" + sodipodi:cy="33.57143" + sodipodi:cx="30.571428" /> + <path + inkscape:connector-curvature="0" + id="path7949" + sodipodi:nodetypes="csscssscssc" + style="color:#000000;fill:url(#linearGradient3983-23-564-355);display:block;filter:url(#filter4115)" + d="m 344.37789,91.798932 c -6.59787,0 -11.93502,1.805896 -11.93502,4.031019 0,0.253148 0.29827,0.464374 0.43061,0.704622 -0.0194,0.08062 -0.18458,0.06611 -0.18458,0.151567 0,0 -0.24603,26.3016 -0.24603,26.55475 0,2.22513 5.33715,4.03102 11.93502,4.03102 6.59788,0 11.93541,-1.80589 11.93541,-4.03102 l -0.24584,-26.55475 c 0,-0.08546 -0.16518,-0.07095 -0.18438,-0.151567 0.13061,-0.240248 0.43022,-0.451474 0.43022,-0.704622 0,-2.225123 -5.33753,-4.031019 -11.93541,-4.031019 z" /> + <path + inkscape:connector-curvature="0" + id="path2298" + sodipodi:nodetypes="ccccc" + style="color:#000000;fill:#808a6a;display:block;filter:url(#filter4111)" + d="m 373.78561,84.447964 -1.45586,5.862715 -0.67991,1.95585 -5.3337,-3.339296 7.46947,-4.479269 z" /> + <path + inkscape:connector-curvature="0" + id="path2276" + sodipodi:nodetypes="ccccccc" + style="color:#000000;fill:#a3b39d;display:block;filter:url(#filter4107)" + d="m 363.77126,106.75564 9.43239,-13.837698 h 21.53453 l 9.29411,11.472288 -9.10012,-14.079551 h -22.69846 l -8.46245,16.444961 z" /> + <path + inkscape:connector-curvature="0" + id="path7953" + sodipodi:nodetypes="cssssccc" + style="color:#000000;fill:#929579;display:block;filter:url(#filter4103)" + d="m 366.23355,88.825651 c 0,0 -23.32651,1.028716 -31.0303,4.434122 -1.63602,0.723971 -2.85757,1.356034 -2.85757,2.325092 0,2.225125 5.42416,4.880765 11.86127,4.880765 6.43654,0 11.52439,-2.410554 11.52439,-4.635679 0,-0.507908 -0.34572,-1.014205 -0.84125,-1.462454 l 16.56576,-2.921683 -5.2223,-2.620163 z" /> + <path + inkscape:connector-curvature="0" + id="path2683" + sodipodi:nodetypes="ccsccscccccccc" + style="color:#000000;fill:none;stroke:url(#linearGradient3977-245-360-122);stroke-width:1.75980091;display:block;filter:url(#filter4099)" + d="m 374.37911,84.967159 -7.52326,4.503455 c 0,0 -12.37871,0.701397 -21.60559,2.120317 -9.22823,1.420531 -11.94732,2.957156 -12.1874,4.858185 l 0.43425,26.753084 c 0.56852,1.87199 6.20395,3.34251 11.96308,3.34251 5.7595,0 10.56694,-2.57985 11.13546,-4.45185 l 50.87464,0.20154 c 2.8061,0.05 3.32467,-1.1303 3.32467,-2.17997 V 93.222687 c 0,-1.148034 -5.45662,-3.005528 -7.06613,-3.155482 l -5.63332,0.101582 -6.22489,-5.201628 h -17.49151 z" /> + <path + id="path8415" + sodipodi:rx="10.142858" + sodipodi:ry="10.142858" + style="color:#000000;fill:#283938;display:block;filter:url(#filter4095)" + sodipodi:type="arc" + d="m 40.714286,33.57143 c 0,5.601746 -4.541112,10.142858 -10.142858,10.142858 -5.601745,0 -10.142857,-4.541112 -10.142857,-10.142858 0,-5.601745 4.541112,-10.142857 10.142857,-10.142857 5.601746,0 10.142858,4.541112 10.142858,10.142857 z" + transform="matrix(2.079891,0,0,1.7460765,321.36119,59.086723)" + sodipodi:cy="33.57143" + sodipodi:cx="30.571428" /> + <path + id="path2589" + sodipodi:rx="4.125" + sodipodi:ry="4.1875" + style="color:#000000;fill:url(#radialGradient4008-272-475-622);stroke:url(#linearGradient4010-13-206-770);stroke-width:0.59631002;filter:url(#filter4091)" + sodipodi:type="arc" + d="m 19.875,22.5625 c 0,2.312692 -1.846825,4.1875 -4.125,4.1875 -2.278175,0 -4.125,-1.874808 -4.125,-4.1875 0,-2.312692 1.846825,-4.1875 4.125,-4.1875 2.278175,0 4.125,1.874808 4.125,4.1875 z" + transform="matrix(3.2209596,0,0,2.704008,333.92101,56.697618)" + sodipodi:cy="22.5625" + sodipodi:cx="15.75" /> + <path + id="path2599" + sodipodi:rx="1.75" + sodipodi:ry="1.8125" + style="color:#000000;fill:#ffffff;fill-opacity:0.52866002;filter:url(#filter4087)" + sodipodi:type="arc" + d="M 16.5,22.6875 C 16.5,23.688516 15.716498,24.5 14.75,24.5 13.783502,24.5 13,23.688516 13,22.6875 c 0,-1.001016 0.783502,-1.8125 1.75,-1.8125 0.966498,0 1.75,0.811484 1.75,1.8125 z" + transform="matrix(3.2209596,0,0,2.704008,336.64526,55.603484)" + sodipodi:cy="22.6875" + sodipodi:cx="14.75" /> + <path + id="path8405" + sodipodi:rx="1.75" + sodipodi:ry="1.8125" + style="color:#000000;fill:url(#radialGradient4006-332-943-671);filter:url(#filter4083)" + sodipodi:type="arc" + d="M 16.5,22.6875 C 16.5,23.688516 15.716498,24.5 14.75,24.5 13.783502,24.5 13,23.688516 13,22.6875 c 0,-1.001016 0.783502,-1.8125 1.75,-1.8125 0.966498,0 1.75,0.811484 1.75,1.8125 z" + transform="matrix(0.79271716,0,0,0.6654891,379.9452,108.34708)" + sodipodi:cy="22.6875" + sodipodi:cx="14.75" /> + <path + inkscape:connector-curvature="0" + id="path1507" + sodipodi:nodetypes="ccccccccc" + style="color:#000000;fill:url(#linearGradient3969-54-102-383);display:block;filter:url(#filter4079)" + d="m 369.90395,86.727908 5.62756,-3.419917 1.74588,-3.910088 h 12.22313 l 2.52184,4.724355 5.43357,3.908476 -4.85161,-17.589758 -19.01269,-6.44e-4 -3.68768,16.286932 z" /> + <rect + id="rect3297" + style="color:#000000;fill:url(#linearGradient3964-53-485-97);stroke:url(#linearGradient3966-710-670-446);stroke-width:1.75980091;filter:url(#filter4075)" + rx="2.8877237" + ry="2.4242551" + height="7.390955" + width="17.916946" + y="69.092522" + x="374.237" /> + <path + id="path2288" + sodipodi:rx="6.0714288" + sodipodi:ry="2.5" + style="color:#000000;fill:#323328;display:block;filter:url(#filter4071)" + sodipodi:type="arc" + d="m 14.857143,38.214287 c 0,1.380712 -2.718271,2.5 -6.0714289,2.5 -3.3531575,0 -6.0714287,-1.119288 -6.0714287,-2.5 0,-1.380712 2.7182712,-2.5 6.0714287,-2.5 3.3531579,0 6.0714289,1.119288 6.0714289,2.5 z" + transform="matrix(0.69036478,0,0,0.89382218,342.00741,61.734063)" + sodipodi:cy="38.214287" + sodipodi:cx="8.7857141" /> + <path + inkscape:connector-curvature="0" + id="path2312" + sodipodi:nodetypes="czcccsc" + style="color:#000000;fill:#c5cabc;display:block;filter:url(#filter4067)" + d="m 332.41329,95.881548 c -0.26025,2.878158 4.69392,6.256142 11.8993,6.257762 7.32581,0.002 11.23436,-3.521498 11.62234,-6.615717 l 8.73135,-2.768504 -9.89527,1.628532 c 0.19398,3.094211 -3.26898,6.175529 -10.44862,6.080389 -7.84862,-0.10642 -10.70868,-2.668535 -11.9091,-4.582462 z" /> + <rect + id="rect2282" + style="color:#000000;fill:url(#linearGradient3959-358-405-821);stroke:#4c3d42;stroke-width:1.75980091;filter:url(#filter4063)" + rx="1.3356707" + ry="1.1213007" + height="7.0787935" + width="7.9442654" + y="91.150742" + x="360.95364" /> + <path + id="path2612" + sodipodi:rx="1.75" + sodipodi:ry="1.8125" + style="color:#000000;fill:#ffffff;filter:url(#filter4059)" + sodipodi:type="arc" + d="M 16.5,22.6875 C 16.5,23.688516 15.716498,24.5 14.75,24.5 13.783502,24.5 13,23.688516 13,22.6875 c 0,-1.001016 0.783502,-1.8125 1.75,-1.8125 0.966498,0 1.75,0.811484 1.75,1.8125 z" + transform="matrix(0.74875307,0,0,0.62858108,335.77273,81.589164)" + sodipodi:cy="22.6875" + sodipodi:cx="14.75" /> + <path + id="path2641" + sodipodi:rx="1.625" + sodipodi:ry="0.6875" + style="color:#000000;fill:#c8bfc2;fill-opacity:0.52866002;display:block;filter:url(#filter4055)" + sodipodi:type="arc" + d="m 42.25,20.5625 c 0,0.379696 -0.727537,0.6875 -1.625,0.6875 -0.897463,0 -1.625,-0.307804 -1.625,-0.6875 0,-0.379696 0.727537,-0.6875 1.625,-0.6875 0.897463,0 1.625,0.307804 1.625,0.6875 z" + transform="matrix(1.9946133,0,0,2.6385443,324.94016,41.122564)" + sodipodi:cy="20.5625" + sodipodi:cx="40.625" /> + <path + id="path2639" + sodipodi:rx="1.625" + sodipodi:ry="0.6875" + style="color:#000000;fill:#5e4c51;display:block;filter:url(#filter4051)" + sodipodi:type="arc" + d="m 42.25,20.5625 c 0,0.379696 -0.727537,0.6875 -1.625,0.6875 -0.897463,0 -1.625,-0.307804 -1.625,-0.6875 0,-0.379696 0.727537,-0.6875 1.625,-0.6875 0.897463,0 1.625,0.307804 1.625,0.6875 z" + transform="matrix(1.9946133,0,0,2.6385443,325.0602,41.727218)" + sodipodi:cy="20.5625" + sodipodi:cx="40.625" /> + <path + inkscape:connector-curvature="0" + id="path2650" + sodipodi:nodetypes="cs" + style="color:#000000;fill:none;stroke:#816b71;stroke-width:1.75980091;display:block;filter:url(#filter4047)" + d="m 371.91681,107.44413 c 4.99949,-5.42898 16.81736,-6.76082 23.57619,-1.67852" /> + <path + inkscape:connector-curvature="0" + id="path2668" + style="color:#000000;fill:#ffffff;filter:url(#filter4043)" + d="m 384.12435,112.05905 c -3.11148,0 -5.58915,2.20577 -5.58915,4.91139 0,0.61916 0.47248,1.03678 0.7145,1.58177 0.24392,0.029 0.39757,0.2193 0.64918,0.2193 3.10572,0 5.59107,-2.15742 5.59107,-4.85658 0,-0.63529 -0.52819,-1.08031 -0.7798,-1.63821 -0.22088,-0.0226 -0.35724,-0.21767 -0.5858,-0.21767 z" /> + </g> + <path + transform="matrix(0.70970535,0,0,0.72487497,289.90468,8.1459463)" + d="m 214.28571,137.36218 a 101.42857,99.285713 0 1 1 -202.857144,0 101.42857,99.285713 0 1 1 202.857144,0 z" + sodipodi:ry="99.285713" + sodipodi:rx="101.42857" + sodipodi:cy="137.36218" + sodipodi:cx="112.85714" + id="path2996" + style="fill:none;stroke:#dbdbdb;stroke-width:8.42921066;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:type="arc" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879" /> + <path + d="m 150,192.36218 a 3.5714285,10 0 1 1 -7.14285,0 3.5714285,10 0 1 1 7.14285,0 z" + sodipodi:ry="10" + sodipodi:rx="3.5714285" + sodipodi:cy="192.36218" + sodipodi:cx="146.42857" + id="path2998" + style="opacity:0.55199998;fill:#e8dad4;fill-opacity:0.43137255;stroke:none" + sodipodi:type="arc" /> + <rect + transform="matrix(0.743975,-0.66820745,0.77306797,0.63432319,0,0)" + y="327.93024" + x="81.318336" + height="0.7751227" + width="143.95984" + id="rect3777" + style="fill:none;stroke:#dbdbdb;stroke-width:5.06745768;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879" /> + </g> +</svg> diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 812acf5c92380b91d4cc80522312d00aa0809ec4..01957fcedf523f25be94adb2c47778ceb2ef84b4 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; @@ -120,6 +121,7 @@ $paymentsupplierstatic = new PaiementFourn($db); $societestatic = new Societe($db); $userstatic = new User($db); $chargestatic = new ChargeSociales($db); +$paymentdonstatic = new PaymentDonation($db); $paymentvatstatic = new TVA($db); $paymentsalstatic = new PaymentSalary($db); @@ -133,7 +135,8 @@ if ($result) { $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef")); $accountancy_account_salary = (! empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) ? $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT : $langs->trans("CodeNotDef")); $accountancy_account_pay_vat = (! empty($conf->global->ACCOUNTING_VAT_PAY_ACCOUNT) ? $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT : $langs->trans("CodeNotDef")); - + $accountancy_account_pay_donation = (! empty($conf->global->DONATION_ACCOUNTINGACCOUNT) ? $conf->global->DONATION_ACCOUNTINGACCOUNT : $langs->trans("CodeNotDef")); + $tabpay = array (); $tabbq = array (); $tabtp = array (); @@ -174,95 +177,100 @@ if ($result) { // get_url may return -1 which is not traversable if (is_array($links)) { - - foreach ( $links as $key => $val ) - { - $tabtype[$obj->rowid] = $links[$key]['type']; - - if ($links[$key]['type'] == 'payment') - { - $paymentstatic->id = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2); - } - else if ($links[$key]['type'] == 'payment_supplier') + foreach ( $links as $key => $val ) { - $paymentsupplierstatic->id = $links[$key]['url_id']; - $paymentsupplierstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2); - } - else if ($links[$key]['type'] == 'company') - { - $societestatic->id = $links[$key]['url_id']; - $societestatic->name = $links[$key]['label']; - $tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30); - $tabtp[$obj->rowid][$compta_soc] += $obj->amount; - } - else if ($links[$key]['type'] == 'user') - { - $userstatic->id = $links[$key]['url_id']; - $userstatic->name = $links[$key]['label']; - $tabpay[$obj->rowid]["soclib"] = $userstatic->getNomUrl(1, '', 30); - // $tabtp[$obj->rowid][$compta_user] += $obj->amount; - } - else if ($links[$key]['type'] == 'sc') - { - $chargestatic->id = $links[$key]['url_id']; - $chargestatic->ref = $links[$key]['url_id']; - - $tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2); - if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { - if ($reg[1] == 'socialcontribution') - $reg[1] = 'SocialContribution'; - $chargestatic->lib = $langs->trans($reg[1]); + $tabtype[$obj->rowid] = $links[$key]['type']; + + if ($links[$key]['type'] == 'payment') + { + $paymentstatic->id = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2); + } + else if ($links[$key]['type'] == 'payment_supplier') + { + $paymentsupplierstatic->id = $links[$key]['url_id']; + $paymentsupplierstatic->ref = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2); } - else + else if ($links[$key]['type'] == 'company') { - $chargestatic->lib = $links[$key]['label']; + $societestatic->id = $links[$key]['url_id']; + $societestatic->name = $links[$key]['label']; + $tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30); + $tabtp[$obj->rowid][$compta_soc] += $obj->amount; } - $chargestatic->ref = $chargestatic->lib; - $tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30); + else if ($links[$key]['type'] == 'user') + { + $userstatic->id = $links[$key]['url_id']; + $userstatic->name = $links[$key]['label']; + $tabpay[$obj->rowid]["soclib"] = $userstatic->getNomUrl(1, '', 30); + // $tabtp[$obj->rowid][$compta_user] += $obj->amount; + } + else if ($links[$key]['type'] == 'sc') + { + $chargestatic->id = $links[$key]['url_id']; + $chargestatic->ref = $links[$key]['url_id']; + + $tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2); + if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { + if ($reg[1] == 'socialcontribution') + $reg[1] = 'SocialContribution'; + $chargestatic->lib = $langs->trans($reg[1]); + } + else + { + $chargestatic->lib = $links[$key]['label']; + } + $chargestatic->ref = $chargestatic->lib; + $tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30); - $sqlmid = 'SELECT cchgsoc.accountancy_code'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; - $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; + $sqlmid = 'SELECT cchgsoc.accountancy_code'; + $sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc "; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id"; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid"; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; + $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; - dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) + dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); + $resultmid = $db->query($sqlmid); + if ($resultmid) + { + $objmid = $db->fetch_object($resultmid); + $tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount; + } + } + else if ($links[$key]['type'] == 'payment_donation') { - $objmid = $db->fetch_object($resultmid); - $tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount; + $paymentdonstatic->id = $links[$key]['url_id']; + $paymentdonstatic->fk_donation = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentDonation"); + $tabtp[$obj->rowid][$accountancy_account_pay_donation] += $obj->amount; } + else if ($links[$key]['type'] == 'payment_vat') + { + $paymentvatstatic->id = $links[$key]['url_id']; + $paymentvatstatic->ref = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentVat"); + $tabtp[$obj->rowid][$accountancy_account_pay_vat] += $obj->amount; + } + else if ($links[$key]['type'] == 'payment_salary') + { + $paymentsalstatic->id = $links[$key]['url_id']; + $paymentsalstatic->ref = $links[$key]['url_id']; + $paymentsalstatic->label = $links[$key]['label']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); + $tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount; + } + else if ($links[$key]['type'] == 'banktransfert') + { + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); + $tabtp[$obj->rowid][$cpttva] += $obj->amount; + } + /*else { + $tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount; + }*/ } - else if ($links[$key]['type'] == 'payment_vat') - { - $paymentvatstatic->id = $links[$key]['url_id']; - $paymentvatstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentVat"); - $tabtp[$obj->rowid][$accountancy_account_pay_vat] += $obj->amount; - } - else if ($links[$key]['type'] == 'payment_salary') - { - $paymentsalstatic->id = $links[$key]['url_id']; - $paymentsalstatic->ref = $links[$key]['url_id']; - $paymentsalstatic->label = $links[$key]['label']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); - $tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount; - } - else if ($links[$key]['type'] == 'banktransfert') - { - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); - $tabtp[$obj->rowid][$cpttva] += $obj->amount; - } - /*else { - $tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount; - }*/ - } - } $tabbq[$obj->rowid][$compta_bank] += $obj->amount; diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 2f495e60bf7de3f29177ed8d7f03ea1a99fe272e..d89360631db949513b746927604b1326240a3861 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -195,9 +195,10 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_MEMBER,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } if (! empty($moreforfilter)) { @@ -209,7 +210,7 @@ if ($resql) print '</div>'; } - print '<table class="liste">'; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Name")." / ".$langs->trans("Company"),$_SERVER["PHP_SELF"],"d.lastname",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/adherents/stats/byproperties.php b/htdocs/adherents/stats/byproperties.php index 6f5edf529d9f456a8ce83afbd91e54c5f4b3a7aa..dcf77a2dbad45a68218403f4f859bf176f708ca5 100644 --- a/htdocs/adherents/stats/byproperties.php +++ b/htdocs/adherents/stats/byproperties.php @@ -116,7 +116,7 @@ else } // Print array -print '<table class="border" width="100%">'; +print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print '<td align="center">'.$langs->trans("Nature").'</td>'; print '<td align="center">'.$langs->trans("NbOfMembers").'</td>'; diff --git a/htdocs/adherents/stats/geo.php b/htdocs/adherents/stats/geo.php index 3b2ca4c3ecd931f1776630324cd850452e024a4d..f8b6a54f7b72e2fcc7492e067de14b9bfea31677 100644 --- a/htdocs/adherents/stats/geo.php +++ b/htdocs/adherents/stats/geo.php @@ -282,7 +282,7 @@ if (count($arrayjs) && $mode == 'memberbycountry') if ($mode) { // Print array / Affiche le tableau - print '<table class="border" width="100%">'; + print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print '<td align="center">'.$label.'</td>'; if ($label2) print '<td align="center">'.$label2.'</td>'; diff --git a/htdocs/adherents/stats/index.php b/htdocs/adherents/stats/index.php index a3c8fd69aad80f520255665e82cb472bea14279d..43b994adafeb62f4a1374e56c25e4fff10acd564 100644 --- a/htdocs/adherents/stats/index.php +++ b/htdocs/adherents/stats/index.php @@ -167,8 +167,8 @@ print '<br><br>'; $data = $stats->getAllByYear(); -print '<table class="border" width="100%">'; -print '<tr height="24">'; +print '<table class="noborder">'; +print '<tr class="liste_titre" height="24">'; print '<td align="center">'.$langs->trans("Year").'</td>'; print '<td align="center">'.$langs->trans("NbOfSubscriptions").'</td>'; print '<td align="center">'.$langs->trans("AmountTotal").'</td>'; @@ -176,14 +176,15 @@ print '<td align="center">'.$langs->trans("AmountAverage").'</td>'; print '</tr>'; $oldyear=0; +$var=false; foreach ($data as $val) { $year = $val['year']; - print $avg; while ($oldyear > $year+1) { // If we have empty year $oldyear--; - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center">'; print '<a href="month.php?year='.$oldyear.'&mode='.$mode.'">'; print $oldyear; @@ -194,7 +195,8 @@ foreach ($data as $val) print '<td align="right">0</td>'; print '</tr>'; } - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center">'; //print '<a href="month.php?year='.$year.'">'; print $year; diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index 75102ed9f501975bff74974f2cba563213099016..b2fe0ac404be4baaa6b880d9175952625982954c 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -168,7 +168,7 @@ if (! $rowid && $action != 'create' && $action != 'edit') print load_fiche_titre($langs->trans("MembersTypes")); - dol_fiche_head(''); + //dol_fiche_head(''); $sql = "SELECT d.rowid, d.libelle, d.cotisation, d.vote"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; @@ -211,7 +211,7 @@ if (! $rowid && $action != 'create' && $action != 'edit') dol_print_error($db); } - dol_fiche_end(); + //dol_fiche_end(); /* * Hotbar diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index eb78ead387b8ce0f51c2d0898cfc0ab509ca9803..b9660c8a04d56b2c491598dcfe1a7e33e33c3afe 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -380,7 +380,7 @@ if ($action == 'edit' || $action == 'updateedit') print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=companylogo&file='.urlencode('/thumbs/'.$mysoc->logo_mini).'">'; } } else { - print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">'; + print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">'; } print '</td></tr></table>'; print '</td></tr>'; @@ -769,7 +769,7 @@ else } else { - print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">'; + print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.png">'; } print '</td></tr></table>'; diff --git a/htdocs/asterisk/wrapper.php b/htdocs/asterisk/wrapper.php index e0f115e31c51119a75ae4ab39e2cecd16b076c13..f168de78b6edcc504b46799c2b5cc0ac2575f221 100644 --- a/htdocs/asterisk/wrapper.php +++ b/htdocs/asterisk/wrapper.php @@ -112,6 +112,34 @@ $strMaxRetry = "2"; llxHeader(); +$sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid"; +$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")"; +$sql.= " AND (s.phone='".$db->escape($called)."'"; +$sql.= " OR sp.phone='".$db->escape($called)."'"; +$sql.= " OR sp.phone_perso='".$db->escape($called)."'"; +$sql.= " OR sp.phone_mobile='".$db->escape($called)."')"; +$sql.= $db->plimit(1); + +dol_syslog('click to dial search information with phone '.$called, LOG_DEBUG); +$resql = $db->query($sql); +if ($resql) +{ + $obj = $db->fetch_object($resql); + if ($obj) + { + $found = $obj->name; + } else { + $found = $notfound; + } + $db->free($resql); +} +else +{ + dol_print_error($db,'Error'); + $found = 'Error'; +} + $number=strtolower($called); $pos=strpos($number,"local"); if (! empty($number)) @@ -120,7 +148,7 @@ if (! empty($number)) { $errno=0; $errstr=0; - $strCallerId = "Dolibarr <".strtolower($caller).">"; + $strCallerId = "Dolibarr call $found <".strtolower($number).">"; $oSocket = @fsockopen($strHost, $port, $errno, $errstr, 10); if (!$oSocket) { diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 9b61da3e1965197e898b09cab67efa0818c6184d..acee9c383743e9769b9dc129e45453f50dd85a9d 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -220,7 +220,7 @@ class ActionComm extends CommonObject $this->userassigned[$tmpid]=array('id'=>$tmpid); } - if (is_object($this->contact) && $this->contact->id > 0 && ! ($this->contactid > 0)) $this->contactid = $this->contact->id; // For backward compatibility. Using this->contact->xx is deprecated + if (is_object($this->contact) && isset($this->contact->id) && $this->contact->id > 0 && ! ($this->contactid > 0)) $this->contactid = $this->contact->id; // For backward compatibility. Using this->contact->xx is deprecated $userownerid=$this->userownerid; diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php index 2e78045b3085cf840d44f9975ae86e16b17eb06e..ae7ed58b29c49760a76bd406d317c89a0f9cb2e9 100644 --- a/htdocs/comm/askpricesupplier/list.php +++ b/htdocs/comm/askpricesupplier/list.php @@ -242,7 +242,6 @@ if ($result) print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'; $i = 0; - print '<table class="liste" width="100%">'; $moreforfilter=''; @@ -250,25 +249,32 @@ if ($result) if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.='</div>'; } - if (! empty($moreforfilter)) - { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="10">'; - print $moreforfilter; - print '</td></tr>'; - } - - print '<tr class="liste_titre">'; + if (! empty($moreforfilter)) + { + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; + } + + + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Company'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AskPriceSupplierDate'),$_SERVER["PHP_SELF"],'p.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); diff --git a/htdocs/comm/list.php b/htdocs/comm/list.php index fcc1783daf5fc493ce03e51c7bc7f9212bbef90c..1cc0f2fa9682be60e2b860734cdcc9c7edf8b80d 100644 --- a/htdocs/comm/list.php +++ b/htdocs/comm/list.php @@ -193,15 +193,18 @@ if ($result) $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(2,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='</div>'; } if ($moreforfilter) { @@ -213,7 +216,7 @@ if ($result) print '</div>'; } - print '<table class="liste">'."\n"; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index f595ad8aec0d4b2341804a997e065953c1e01775..7d1539ff0f52dd53fe6f60c271a66f867fb5f445 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -265,7 +265,6 @@ if ($result) if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; $i = 0; - print '<table class="liste" width="100%">'; $moreforfilter=''; @@ -298,12 +297,13 @@ if ($result) } if (! empty($moreforfilter)) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="10">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; print $moreforfilter; - print '</td></tr>'; + print '</div>'; } + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'p.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index e99c7122a10dc2a867b7045ab3e4fe5b330eae19..5b45020b7e1a45db4a852ee0a56ab4d6067f5778 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -234,7 +234,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; // Show filter box print '<form name="stats" method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="mode" value="'.$mode.'">'; - print '<table class="border" width="100%">'; + print '<table class="noborder" width="100%">'; print '<tr class="liste_titre"><td class="liste_titre" colspan="2">'.$langs->trans("Filter").'</td></tr>'; // Company print '<tr><td align="left">'.$langs->trans("ThirdParty").'</td><td align="left">'; @@ -262,8 +262,8 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '<br><br>'; //} -print '<table class="border" width="100%">'; -print '<tr height="24">'; +print '<table class="noborder" width="100%">'; +print '<tr class="liste_titre" height="24">'; print '<td align="center">'.$langs->trans("Year").'</td>'; print '<td align="center">'.$langs->trans("NbOfProposals").'</td>'; print '<td align="center">%</td>'; @@ -274,13 +274,15 @@ print '<td align="center">%</td>'; print '</tr>'; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while (! empty($year) && $oldyear > $year+1) { // If we have empty year $oldyear--; - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>'; print '<td align="right">0</td>'; print '<td align="right"></td>'; @@ -290,7 +292,7 @@ foreach ($data as $val) print '<td align="right"></td>'; print '</tr>'; } - print '<tr height="24">'; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>'; print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right" style="'.(($val['nb_diff'] >= 0) ? 'color: green;':'color: red;').'">'.round($val['nb_diff']).'</td>'; diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 670d170de9787ae22b757e2be4c345906bc76433..2282b39420e21664b17a7db66a6d99f7b5f2e8c5 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -359,15 +359,18 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_CUSTOMER,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='</div>'; } if ($moreforfilter) { @@ -379,7 +382,7 @@ if ($resql) print '</div>'; } - print '<table class="liste">'; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,'',$sortfield,$sortorder); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index c4ea9cbf83841a50c537ac3bebefee74267cadb4..29d58eaf46759b7d68e2934fc7f0b5d38ab762c6 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -273,15 +273,15 @@ if ($resql) $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300'); $moreforfilter.='</div>'; } - // If the user can view prospects other than his' - if ($user->rights->societe->client->voir || $socid) + // If the user can view other users + if ($user->rights->user->user->lire) { $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='</div>'; } - // If the user can view prospects other than his' + // If the user can view categories or products if ($conf->categorie->enabled && $user->rights->produit->lire) { include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; @@ -301,7 +301,7 @@ if ($resql) print '</div>'; } - print '<table class="liste">'; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomerOrder'),$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index c4d48d8f72e05a407446e1dbb0529a3bc4833b59..04cfad1732df6826764710216e3363083e89310d 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -250,7 +250,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; // Show filter box print '<form name="stats" method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="mode" value="'.$mode.'">'; - print '<table class="border" width="100%">'; + print '<table class="noborder" width="100%">'; print '<tr class="liste_titre"><td class="liste_titre" colspan="2">'.$langs->trans("Filter").'</td></tr>'; // Company print '<tr><td align="left">'.$langs->trans("ThirdParty").'</td><td align="left">'; @@ -275,8 +275,8 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '<br><br>'; //} -print '<table class="border" width="100%">'; -print '<tr height="24">'; +print '<table class="noborder" width="100%">'; +print '<tr class="liste_titre" height="24">'; print '<td align="center">'.$langs->trans("Year").'</td>'; print '<td align="center">'.$langs->trans("NbOfOrders").'</td>'; print '<td align="center">%</td>'; @@ -287,13 +287,15 @@ print '<td align="center">%</td>'; print '</tr>'; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while (! empty($year) && $oldyear > $year+1) { // If we have empty year $oldyear--; - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>'; print '<td align="right">0</td>'; @@ -305,7 +307,8 @@ foreach ($data as $val) print '</tr>'; } - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>'; print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right" style="'.(($val['nb_diff'] >= 0) ? 'color: green;':'color: red;').'">'.round($val['nb_diff']).'</td>'; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 5c19e054fd092e4b812cc726d01b1d0f2f9c29c4..c736d4cd0032ebf057b11a5b40b44a65f878a9e5 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2973,16 +2973,16 @@ else if ($id > 0 || ! empty($ref)) print '<td rowspan="' . $nbrows . '" colspan="2" valign="top">'; - print '<table class="nobordernopadding" width="100%">'; + print '<table class="nobordernopadding paymenttable" width="100%">'; // List of payments already done print '<tr class="liste_titre">'; - print '<td>' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>'; - print '<td>' . $langs->trans('Type') . '</td>'; + print '<td class="liste_titre">' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '</td>'; + print '<td class="liste_titre">' . $langs->trans('Type') . '</td>'; if (! empty($conf->banque->enabled)) - print '<td align="right">' . $langs->trans('BankAccount') . '</td>'; - print '<td align="right">' . $langs->trans('Amount') . '</td>'; - print '<td width="18"> </td>'; + print '<td class="liste_titre" align="right">' . $langs->trans('BankAccount') . '</td>'; + print '<td class="liste_titre" align="right">' . $langs->trans('Amount') . '</td>'; + print '<td class="liste_titre" width="18"> </td>'; print '</tr>'; $var = true; @@ -3033,7 +3033,7 @@ else if ($id > 0 || ! empty($ref)) $i ++; } } else { - print '<tr ' . $bc [$var] . '><td colspan="' . $nbcols . '">' . $langs->trans("None") . '</td><td></td><td></td></tr>'; + print '<tr ' . $bc[false] . '><td colspan="' . $nbcols . '">' . $langs->trans("None") . '</td><td></td><td></td></tr>'; } // } $db->free($result); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index b507f5284dde7624536500229437d4e0a128853b..e4993eacb888e71399f6c1fd58081f1d0aa51d20 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -275,7 +275,6 @@ if ($resql) $i = 0; print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'."\n"; - print '<table class="liste" width="100%">'; // If the user can view prospects other than his' $moreforfilter=''; @@ -308,12 +307,16 @@ if ($resql) if ($moreforfilter) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="11">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; print $moreforfilter; - print '</td></tr>'; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; } + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'f.facnumber','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index 72276b7706926717f7521a9a4803954c6f84be8a..b78b31d1a02f6136ac027e4c80a1400617cb5275 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -616,32 +616,38 @@ if ($resql) } $i = 0; - print '<table class="liste" width="100%">'; // If the user can view prospects other than his' $moreforfilter=''; if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.='</div>'; } - if ($moreforfilter) + if (! empty($moreforfilter)) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="13">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; print $moreforfilter; - print '</td></tr>'; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; } - print '<tr class="liste_titre">'; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","",$param,'align="center"',$sortfield,$sortorder); diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index f61e92687f6816fb4c988d6068a42f5af25febaa..2b7e17d93696889a44e3138c94c8b62137ce735e 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -234,7 +234,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; // Show filter box print '<form name="stats" method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="mode" value="'.$mode.'">'; - print '<table class="border" width="100%">'; + print '<table class="noborder" width="100%">'; print '<tr class="liste_titre"><td class="liste_titre" colspan="2">'.$langs->trans("Filter").'</td></tr>'; // Company print '<tr><td>'.$langs->trans("ThirdParty").'</td><td>'; @@ -259,8 +259,8 @@ print '<div class="fichecenter"><div class="fichethirdleft">'; print '<br><br>'; //} -print '<table class="border" width="100%">'; -print '<tr height="24">'; +print '<table class="noborder" width="100%">'; +print '<tr class="liste_titre" height="24">'; print '<td align="center">'.$langs->trans("Year").'</td>'; print '<td align="center">'.$langs->trans("NumberOfBills").'</td>'; print '<td align="center">%</td>'; @@ -271,13 +271,15 @@ print '<td align="center">%</td>'; print '</tr>'; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while ($year && $oldyear > $year+1) { // If we have empty year $oldyear--; - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>'; print '<td align="right">0</td>'; print '<td align="right"></td>'; @@ -287,7 +289,8 @@ foreach ($data as $val) print '<td align="right"></td>'; print '</tr>'; } - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>'; print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right" style="'.(($val['nb_diff'] >= 0) ? 'color: green;':'color: red;').'">'.round($val['nb_diff']).'</td>'; diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index d44aef51dcedadcc7fcd63c1ae4e3c5faa588ec4..c322863efc1ac2db0a21682380f069eb520eea48 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -117,7 +117,7 @@ if ($resql) print_barre_liste($langs->trans("MenuChequeDeposits"), $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num); print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'; - print '<table class="liste" width="100%">'; + print '<table class="liste">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"bc.number","",$params,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"dp","",$params,'align="center"',$sortfield,$sortorder); @@ -148,42 +148,52 @@ if ($resql) print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print "</td></tr>\n"; - $var=true; - while ($i < min($num,$limit)) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print "<tr ".$bc[$var].">"; - - // Num ref cheque - print '<td width="80">'; - $checkdepositstatic->id=$objp->rowid; - $checkdepositstatic->ref=($objp->ref?$objp->ref:$objp->rowid); - $checkdepositstatic->statut=$objp->statut; - print $checkdepositstatic->getNomUrl(1); - print '</td>'; - - // Date - print '<td align="center">'.dol_print_date($db->jdate($objp->dp),'day').'</td>'; // TODO Use date hour - - // Bank - print '<td>'; - if ($objp->bid) print '<a href="'.DOL_URL_ROOT.'/compta/bank/account.php?account='.$objp->bid.'">'.img_object($langs->trans("ShowAccount"),'account').' '.$objp->label.'</a>'; - else print ' '; - print '</td>'; - - // Number of cheques - print '<td align="right">'.$objp->nbcheque.'</td>'; - - // Amount - print '<td align="right">'.price($objp->amount).'</td>'; - - // Statut - print '<td align="right">'; - print $checkdepositstatic->LibStatut($objp->statut,5); - print "</td></tr>\n"; - $i++; - } + if ($num > 0) + { + $var=true; + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "<tr ".$bc[$var].">"; + + // Num ref cheque + print '<td width="80">'; + $checkdepositstatic->id=$objp->rowid; + $checkdepositstatic->ref=($objp->ref?$objp->ref:$objp->rowid); + $checkdepositstatic->statut=$objp->statut; + print $checkdepositstatic->getNomUrl(1); + print '</td>'; + + // Date + print '<td align="center">'.dol_print_date($db->jdate($objp->dp),'day').'</td>'; // TODO Use date hour + + // Bank + print '<td>'; + if ($objp->bid) print '<a href="'.DOL_URL_ROOT.'/compta/bank/account.php?account='.$objp->bid.'">'.img_object($langs->trans("ShowAccount"),'account').' '.$objp->label.'</a>'; + else print ' '; + print '</td>'; + + // Number of cheques + print '<td align="right">'.$objp->nbcheque.'</td>'; + + // Amount + print '<td align="right">'.price($objp->amount).'</td>'; + + // Statut + print '<td align="right">'; + print $checkdepositstatic->LibStatut($objp->statut,5); + print "</td></tr>\n"; + $i++; + } + } + else + { + $var=!$var; + print "<tr ".$bc[$var].">"; + print '<td colspan="6">'.$langs->trans("None")."</td>"; + print '</tr>'; + } print "</table>"; print "</form>\n"; } @@ -192,6 +202,6 @@ else dol_print_error($db); } -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 45c9d0b526b3ba806a86c79d295d1db8658274f4..35d0f838ff957ca74982088d20e1b55cb70841b3 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -906,7 +906,7 @@ class Paiement extends CommonObject if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.$this->ref.$linkend; + if ($withpicto != 2) $result.=$link.($this->ref?$this->ref:$this->id).$linkend; return $result; } diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 8231f607ef7a7459760e5c193bcadd444b70e1ce..6e3d31364ce9214376d25997893a91d51e6b45d2 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -305,6 +305,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 385ac1f140c94cda64dbb3157381b58f715c2093..cb8151cf33c337912029d6eed20f6ebb37c21d00 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -280,7 +280,7 @@ if ($modecompta == 'CREANCES-DETTES') { $sortorder ); } else { - print '<td colspan="1"></td>'; + print_liste_field_titre(''); } print_liste_field_titre( $langs->trans("AmountTTC"), diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 7b9cfdd791379566611276da215eb9f3a525dd36..dade07fd0e387d7cfe89fa740060602a22e10f70 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -350,7 +350,7 @@ if ($modecompta == 'CREANCES-DETTES') { $sortorder ); } else { - print '<td colspan="1"></td>'; + print_liste_field_titre(''); } print_liste_field_titre( $langs->trans("AmountTTC"), diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 649179c10826f5fb692dc2a06979a702e3c8ee18..4082ebbae8086c083013b56032117314c2a4ff18 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -288,9 +288,10 @@ if ($result) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; - $moreforfilter.=$langs->trans('Categories'). ': '; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_CONTACT,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } if ($moreforfilter) { @@ -299,7 +300,7 @@ if ($result) print '</div>'; } - print '<table class="liste">'; + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; // Ligne des titres print '<tr class="liste_titre">'; diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 5615eaf76a4da85d0582fba362b1d6e4c8454a5d..f7363984fb8f5494fa102550594bf8cf506fdfa9 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1407,26 +1407,19 @@ else print '<td align="right" class="nowrap">'; if ($user->rights->contrat->creer && count($arrayothercontracts) && ($object->statut >= 0)) { - print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=move&rowid='.$objp->rowid.'">'; + print '<a style="padding-left: 5px;" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=move&rowid='.$objp->rowid.'">'; print img_picto($langs->trans("MoveToAnotherContract"),'uparrow'); print '</a>'; } - else { - print ' '; - } if ($user->rights->contrat->creer && ($object->statut >= 0)) { - print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=editline&rowid='.$objp->rowid.'">'; + print '<a style="padding-left: 5px;" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=editline&rowid='.$objp->rowid.'">'; print img_edit(); print '</a>'; } - else { - print ' '; - } if ( $user->rights->contrat->creer && ($object->statut >= 0)) { - print ' '; - print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=deleteline&rowid='.$objp->rowid.'">'; + print '<a style="padding-left: 5px;" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=deleteline&rowid='.$objp->rowid.'">'; print img_delete(); print '</a>'; } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 97d20e2acb18a4d3ca360c95f5613e09c9976a16..9619713859ae817c24a812128ab4adf2f6577f93 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -49,8 +49,10 @@ $search_ref_supplier=GETPOST('search_ref_supplier','alpha'); $sall=GETPOST('sall'); $search_status=GETPOST('search_status'); $socid=GETPOST('socid'); +$search_user=GETPOST('search_user','int'); +$search_sale=GETPOST('search_sale','int'); +$search_product_category=GETPOST('search_product_category','int'); -$search_sale = GETPOST('search_sale','int'); $optioncss = GETPOST('optioncss','alpha'); if (! $sortfield) $sortfield="c.rowid"; @@ -69,7 +71,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_name=""; $search_contract=""; $search_ref_supplier=""; - $search_sale=""; + $search_user=''; + $search_sale=''; + $search_product_category=''; $sall=""; $search_status=""; } @@ -82,6 +86,7 @@ if ($search_status == '') $search_status=1; */ $now=dol_now(); +$form=new Form($db); $formother = new FormOther($db); $socstatic = new Societe($db); @@ -99,8 +104,15 @@ $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= ", ".MAIN_DB_PREFIX."contrat as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat"; +if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=cd.fk_product'; +if ($search_user > 0) +{ + $sql.=", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.=", ".MAIN_DB_PREFIX."c_type_contact as tc"; +} $sql.= " WHERE c.fk_soc = s.rowid "; -$sql.= " AND c.entity = ".$conf->entity; +$sql.= ' AND c.entity IN ('.getEntity('contract', 1).')'; +if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category; if ($socid) $sql.= " AND s.rowid = ".$db->escape($socid); if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -122,6 +134,7 @@ if ($search_sale > 0) if ($sall) { $sql .= natural_search(array('s.nom', 'cd.label', 'cd.description'), $sall); } +if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='contrat' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; $sql.= " GROUP BY c.rowid, c.ref, c.datec, c.date_contrat, c.statut, c.ref_supplier, s.nom, s.rowid"; $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($conf->liste_limit + 1, $offset); @@ -136,26 +149,47 @@ if ($resql) print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; - print '<table class="liste" width="100%">'; // If the user can view prospects other than his' $moreforfilter=''; if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } - - if ($moreforfilter) + // If the user can view other users + if ($user->rights->user->user->lire) + { + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + $moreforfilter.='</div>'; + } + // If the user can view categories of products + if ($conf->categorie->enabled && $user->rights->produit->lire) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1); + $moreforfilter.='</div>'; + } + + if (! empty($moreforfilter)) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="9">'; - print $moreforfilter; - print '</td></tr>'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; } + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; $param='&search_contract='.$search_contract; @@ -171,10 +205,11 @@ if ($resql) //print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","$param",'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateContract"), $_SERVER["PHP_SELF"], "c.date_contrat","","$param",'align="center"',$sortfield,$sortorder); //print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","$param",'align="center"',$sortfield,$sortorder); - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(0,3).'</td>'; - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(4,3,0).'</td>'; - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(4,3,1).'</td>'; - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(5,3).'</td>'; + print_liste_field_titre($staticcontratligne->LibStatut(0,3), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(4,3,0), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(4,3,1), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(5,3), '', '', '', '', 'width="16"'); + print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; @@ -190,7 +225,8 @@ if ($resql) print '</td>'; print '<td class="liste_titre"> </td>'; //print '<td class="liste_titre"> </td>'; - print '<td colspan="5" class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; + print '<td class="liste_titre" colspan="5"></td>'; + print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print "</td></tr>\n"; @@ -250,6 +286,7 @@ if ($resql) print '<td align="center">'.($obj->nb_running>0?$obj->nb_running:'').'</td>'; print '<td align="center">'.($obj->nb_expired>0?$obj->nb_expired:'').'</td>'; print '<td align="center">'.($obj->nb_closed>0 ?$obj->nb_closed:'').'</td>'; + print '<td></td>'; print "</tr>\n"; $i++; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8cc9eaa09a0b503968cb35ac3cc62c437413c428..4aea23291c2bf2e5c75fd29bd60ac14293f1770b 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4591,34 +4591,36 @@ class Form { global $conf, $langs; + $out = ''; + // Add code for jquery to use multiselect if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; - print '<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> + $out.='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' --> <script type="text/javascript"> function formatResult(record) {'."\n"; if ($elemtype == 'category') { - print ' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; + $out.=' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; } else { - print 'return record.text;'; + $out.='return record.text;'; } - print ' }; + $out.= ' }; function formatSelection(record) {'."\n"; if ($elemtype == 'category') { - print ' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; + $out.=' //return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> <a href="'.DOL_URL_ROOT.'/categories/viewcat.php?type=0&id=\'+record.id+\'">\'+record.text+\'</a></span>\'; return \'<span><img src="'.DOL_URL_ROOT.'/theme/eldy/img/object_category.png'.'"> \'+record.text+\'</span>\';'; } else { - print 'return record.text;'; + $out.='return record.text;'; } - print ' }; + $out.= ' }; $(document).ready(function () { $(\'#'.$htmlname.'\').'.$tmpplugin.'({ dir: \'ltr\', @@ -4636,7 +4638,7 @@ class Form // Try also magic suggest // Add data-role="none" to disable jmobile decoration - $out = '<select data-role="none" id="'.$htmlname.'" class="multiselect'.($morecss?' '.$morecss:'').'" multiple name="'.$htmlname.'[]"'.($moreattrib?' '.$moreattrib:'').($width?' style="width: '.(preg_match('/%/',$width)?$width:$width.'px').'"':'').'>'."\n"; + $out .= '<select data-role="none" id="'.$htmlname.'" class="multiselect'.($morecss?' '.$morecss:'').'" multiple name="'.$htmlname.'[]"'.($moreattrib?' '.$moreattrib:'').($width?' style="width: '.(preg_match('/%/',$width)?$width:$width.'px').'"':'').'>'."\n"; if (is_array($array) && ! empty($array)) { if ($value_as_key) $array=array_combine($array, $array); @@ -4665,6 +4667,84 @@ class Form } + /** + * Show a multiselect form from an array. + * + * @param string $htmlname Name of select + * @param array $array Array with array to show + * @return string HTML multiselect string + * @see selectarray + */ + static function multiSelectArrayWithCheckbox($htmlname, $array) + { + $lis=''; + $liststring=''; + + foreach($array as $key => $val) + { + if (isset($val['cond']) && ! $val['cond']) continue; + if ($val['label']) + { + $lis.='<li><input type="checkbox" value="'.$key.'"'.($val['checked']?' checked="checked"':'').'/>'.dol_escape_htmltag($val['label']).'</li>'; + $liststring.=$key.','; + } + } + + + $out ='<!-- Component multiSelectArrayWithCheckbox '.$htmlname.' --> + + <dl class="dropdown"> + + <dt> + <a href="#"> + '.img_picto('','list').' + <input type="hidden" class="'.$htmlname.'" name="'.$htmlname.'" value="'.$liststring.'"> + </a> + </dt> + + <dd> + <div class="multiselectcheckbox'.$htmlname.'"> + <ul> + '.$lis.' + </ul> + </div> + </dd> + </dl> + + <script type="text/javascript"> + $(".dropdown dt a").on(\'click\', function () { + $(".dropdown dd ul").slideToggle(\'fast\'); + }); + + $(".dropdown dd ul li a").on(\'click\', function () { + $(".dropdown dd ul").hide(); + }); + + function getSelectedValue(id) { + return $("#" + id).find("dt a span.value").html(); + } + + $(document).bind(\'click\', function (e) { + var $clicked = $(e.target); + if (!$clicked.parents().hasClass("dropdown")) $(".dropdown dd ul").hide(); + }); + + $(\'.multiselectcheckbox'.$htmlname.' input[type="checkbox"]\').on(\'click\', function () { + + var title = $(this).val() + ","; + + if ($(this).is(\':checked\')) { + $(\'.'.$htmlname.'\').val(title + $(\'.'.$htmlname.'\').val()); + } + else { + $(\'.'.$htmlname.'\').val( $(\'.'.$htmlname.'\').val().replace(title, \'\') ) + } + }); + </script> + + '; + return $out; + } /** * Render list of categories linked to object with id $id and type $type @@ -5202,8 +5282,8 @@ class Form } else { - $nophoto='/public/theme/common/nophoto.jpg'; - if (in_array($modulepart,array('userphoto','contact'))) // For module that are "physical" users + $nophoto='/public/theme/common/nophoto.png'; + if (in_array($modulepart,array('userphoto','contact'))) // For module thar are "physical" users { $nophoto='/public/theme/common/user_anonymous.png'; if ($object->gender == 'man') $nophoto='/public/theme/common/user_man.png'; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index aba1876577750c18b364e15b71a495f1260bc2b2..d7fbaedfebade00789f9810f87045ef48d673813 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -632,40 +632,6 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print "</tr>\n"; - print '<tr class="liste_titre">'; - // Name - Position - print '<td class="liste_titre">'; - print '<input type="text" class="flat" name="search_name" size="20" value="'.$search_name.'">'; - print '</td>'; - - // Address / Phone - print '<td>'; - //print '<input type="text" class="flat" name="search_addressphone" size="20" value="'.$search_addressphone.'">'; - print '</td>'; - - // Email - print '<td> </td>'; - - // Status - print '<td class="liste_titre maxwidthonsmartphone">'; - print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0,1),'1'=>$contactstatic->LibStatut(1,1)),$search_status); - print '</td>'; - - // Add to agenda - if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) - { - $colspan++; - print '<td> </td>'; - } - - // Edit - print '<td class="liste_titre" align="right">'; - print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; - print '</td>'; - - print "</tr>"; - - $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.civility, p.poste, p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut "; $sql .= ", p.civility as civility_id, p.address, p.zip, p.town"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p"; @@ -683,6 +649,39 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') $var=true; if ($num) { + print '<tr class="liste_titre">'; + // Name - Position + print '<td class="liste_titre">'; + print '<input type="text" class="flat" name="search_name" size="20" value="'.$search_name.'">'; + print '</td>'; + + // Address / Phone + print '<td>'; + //print '<input type="text" class="flat" name="search_addressphone" size="20" value="'.$search_addressphone.'">'; + print '</td>'; + + // Email + print '<td> </td>'; + + // Status + print '<td class="liste_titre maxwidthonsmartphone">'; + print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0,1),'1'=>$contactstatic->LibStatut(1,1)),$search_status); + print '</td>'; + + // Add to agenda + if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) + { + $colspan++; + print '<td> </td>'; + } + + // Edit + print '<td class="liste_titre" align="right">'; + print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; + print '</td>'; + + print "</tr>"; + $i=0; while ($i < $num) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 443749dd271c2806292805e4808106dbc654d500..7f4a1b8d8559aa3a871f263321e6c352561aeb0f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -915,7 +915,7 @@ function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='') else if (in_array($object->country_code,array('ES','TR'))) // ES: title firstname name \n address lines \n zip town \n state \n country { $ret .= ($ret ? $sep : '' ).$object->zip; - $ret .= ($object->town?' '.$object->town:''); + $ret .= ($object->town?(($object->zip?' ':'').$object->town):''); if ($object->state && in_array($object->country_code,$countriesusingstate)) { $ret.="\n".$object->state; @@ -925,10 +925,10 @@ function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='') else // Other: title firstname name \n address lines \n zip town \n country { $ret .= ($ret ? $sep : '' ).$object->zip; - $ret .= ($object->town?' '.$object->town:''); + $ret .= ($object->town?(($object->zip?' ':'').$object->town):''); if ($object->state && in_array($object->country_code,$countriesusingstate)) { - $ret.=", ".$object->state; + $ret.=($ret?", ":'').$object->state; } } if (! is_object($outputlangs)) $outputlangs=$langs; @@ -2680,7 +2680,8 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m $sortorder=strtoupper($sortorder); $out=''; - + $sortimg=''; + $tag='th'; if ($thead==2) $tag='div'; @@ -2689,25 +2690,33 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="'.$prefix.'liste_titre_sel" '. $moreattrib.'>'; else $out.= '<'.$tag.' class="'.$prefix.'liste_titre" '. $moreattrib.'>'; - if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $options=preg_replace('/sortfield=([a-zA-Z0-9,\s\.]+)/i','',$moreparam); $options=preg_replace('/sortorder=([a-zA-Z0-9,\s\.]+)/i','',$options); $options=preg_replace('/&+/i','&',$options); if (! preg_match('/^&/',$options)) $options='&'.$options; - if ($sortorder == 'DESC' ) $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'; - if ($sortorder == 'ASC' ) $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'; + if ($field != $sortfield) + { + if ($sortorder == 'DESC') $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'; + if ($sortorder == 'ASC' || ! $sortorder) $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'; + } + else + { + if ($sortorder == 'DESC' || ! $sortorder) $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'; + if ($sortorder == 'ASC') $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'; + } } $out.=$name; - if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $out.='</a>'; } - if (empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $options=preg_replace('/sortfield=([a-zA-Z0-9,\s\.]+)/i','',$moreparam); $options=preg_replace('/sortorder=([a-zA-Z0-9,\s\.]+)/i','',$options); @@ -2715,27 +2724,33 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if (! preg_match('/^&/',$options)) $options='&'.$options; //print " "; - $out.= '<img width="2" src="'.DOL_URL_ROOT.'/theme/common/transparent.png" alt=""><span class="nowrap">'; + $sortimg.= '<img width="2" src="'.DOL_URL_ROOT.'/theme/common/transparent.png" alt="">'; + $sortimg.= '<span class="nowrap">'; if (! $sortorder || $field != $sortfield) { - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",0).'</a>'; - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",0).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",0).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",0).'</a>'; } else { if ($sortorder == 'DESC' ) { - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",0).'</a>'; - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",1).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",0).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",1).'</a>'; + $sortimg.= img_up("Z-A",0); } if ($sortorder == 'ASC' ) { - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",1).'</a>'; - $out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",0).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=asc&begin='.$begin.$options.'">'.img_down("A-Z",1).'</a>'; + //$out.= '<a href="'.$file.'?sortfield='.$field.'&sortorder=desc&begin='.$begin.$options.'">'.img_up("Z-A",0).'</a>'; + $sortimg.= img_down("A-Z",0); } } - $out.= '</span>'; + $sortimg.= '</span>'; } + + $out.=$sortimg; + $out.='</'.$tag.'>'; return $out; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index cb62b63377ff82a2441afb7b55845822f8190678..10b97265a9311143571c6a27de6bbad5ba11d882 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -355,7 +355,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '<div class="inline-block" style="margin-top: 10px; margin-bottom: 10px; margin-right: 20px; margin-left: 20px;">'; $file=$dirtheme."/".$subdir."/thumb.png"; $url=$urltheme."/".$subdir."/thumb.png"; - if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg"; + if (! file_exists($file)) $url=DOL_URL_ROOT.'/public/theme/common/nophoto.png'; print '<a href="'.$_SERVER["PHP_SELF"].($edit?'?action=edit&theme=':'?theme=').$subdir.(GETPOST("optioncss")?'&optioncss='.GETPOST("optioncss",'alpha',1):'').($fuser?'&id='.$fuser->id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">'; if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive"); else $title=$langs->trans("ShowPreview"); diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index 12ea7aa7b082d667fa3745f6e3ffe83dcc5e2f0f..542f53c24b7958ef1bb13073672474c94e83df4a 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -270,7 +270,11 @@ class doc_generic_invoice_odt extends ModelePDFFactures { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else { + $socobject = $object->client; + // if we have a BILLING contact and we dont use it as recipient we store the contact object for later use + $contactobject = $object->contact; + } } else { @@ -344,8 +348,12 @@ class doc_generic_invoice_odt extends ModelePDFFactures $array_objet=$this->get_substitutionarray_object($object,$outputlangs); $array_propal=is_object($propal_object)?$this->get_substitutionarray_object($propal_object,$outputlangs,'propal'):array(); $array_other=$this->get_substitutionarray_other($outputlangs); + // retrieve contact information for use in invoice as contact_xxx tags + $array_thirdparty_contact = array(); + if ($usecontact) + $array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact'); - $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_propal,$array_other); + $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_propal,$array_other,$array_thirdparty_contact); complete_substitutions_array($tmparray, $outputlangs, $object); // Call the ODTSubstitution hook $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); diff --git a/htdocs/core/modules/modWebServicesClient.class.php b/htdocs/core/modules/modWebServicesClient.class.php index dd13d8920dbc41a54b0bbb7ebae6a70c6d6c4e58..307f3420640a3bbc1586dfe76accbd5a40e3e674 100644 --- a/htdocs/core/modules/modWebServicesClient.class.php +++ b/htdocs/core/modules/modWebServicesClient.class.php @@ -18,7 +18,7 @@ /** * \defgroup webservices Module webservices * \brief Module to enable client for supplier WebServices - * \file htdocs/core/modules/modSyncSupplierWebServices.class.php + * \file htdocs/core/modules/modWebServicesClient.class.php * \ingroup webservices * \brief File to describe client for supplier webservices module */ diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 80ec0ba6fe0a47e08ef5f75b6033e476f2598065..d6773eb2c80aa567462c4159bba6e869e6722e80 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -288,9 +288,9 @@ class doc_generic_proposal_odt extends ModelePDFPropales dol_mkdir($conf->propal->dir_temp); - // If BILLING contact defined on invoice, we use it + // If CUSTOMER contact defined on proposal, we use it $usecontact=false; - $arrayidcontact=$object->getIdContact('external','BILLING'); + $arrayidcontact=$object->getIdContact('external','CUSTOMER'); if (count($arrayidcontact) > 0) { $usecontact=true; @@ -302,13 +302,16 @@ class doc_generic_proposal_odt extends ModelePDFPropales { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else { + $socobject = $object->client; + // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use + $contactobject = $object->contact; + } } else { $socobject=$object->client; } - // Make substitution $substitutionarray=array( '__FROM_NAME__' => $this->emetteur->name, @@ -369,8 +372,12 @@ class doc_generic_proposal_odt extends ModelePDFPropales $array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs); $array_objet=$this->get_substitutionarray_object($object,$outputlangs); $array_other=$this->get_substitutionarray_other($outputlangs); + // retrieve contact information for use in proposal as contact_xxx tags + $array_thirdparty_contact = array(); + if ($usecontact) + $array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact'); - $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other); + $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact); complete_substitutions_array($tmparray, $outputlangs, $object); // Call the ODTSubstitution hook $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php index 5693031c630ce365492d93c8325774cd51c22855..8fb3385091955433e3cbf7b70ebf2b62ff05f7f6 100644 --- a/htdocs/fourn/list.php +++ b/htdocs/fourn/list.php @@ -195,9 +195,10 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_SUPPLIER,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } if ($moreforfilter) { @@ -209,8 +210,8 @@ if ($resql) print '</div>'; } - print '<table class="liste">'; - + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,'valign="middle"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Zip"),$_SERVER["PHP_SELF"],"s.zip","",$param,'valign="middle"',$sortfield,$sortorder); diff --git a/htdocs/install/filelist.xml b/htdocs/install/filelist.xml index fb931f9fcdc5f889508aae9f9b69e1f46ac9a0fc..6e5416e24811b16dafb00f38a3e1e26d23098cae 100644 --- a/htdocs/install/filelist.xml +++ b/htdocs/install/filelist.xml @@ -6873,7 +6873,7 @@ <md5file name="modCashDesk.class.php">69982f8171837cd8669bfe9c2f08dc8f</md5file> <md5file name="modLdap.class.php">ddf6dfeb77c98411b4d5434f20c24483</md5file> <md5file name="modFacture.class.php">c23010fa68c5996cb5977f84a6bb7ceb</md5file> -<md5file name="modSyncSupplierWebServices.class.php">90a300e9bd857966226c68dca8660456</md5file> +<md5file name="modWebServicesClient.class.php">822961d86ae558588632b3b08c085b89</md5file> <md5file name="index.html">d41d8cd98f00b204e9800998ecf8427e</md5file> <md5file name="modIncoterm.class.php">b4e9f07aa5268af49d3bb9429719b201</md5file> <md5file name="modFTP.class.php">8293bd60fe13ac64c22f8500b346821c</md5file> diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 68e6143c48c6f26a8d39de814c72e86d5773b7a6..d973a3d41ef86373e984aedb665f19daed306603 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -281,8 +281,6 @@ else print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; - print '<table class="liste" width="100%">'; - // Filter on categories $moreforfilter=''; $colspan=6; @@ -294,19 +292,23 @@ else if (! empty($conf->categorie->enabled)) { - $moreforfilter.=$langs->trans('Categories'). ': '; + $moreforfilter.='<div class="divsearchfield">'; + $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ',1); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } if ($moreforfilter) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="'.$colspan.'">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; print $moreforfilter; - print '</td></tr>'; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; } // Lignes des titres + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index 8bd2096af69aa1b81f3f694de45da85f37e89506..cee05f69340459b8f0e54ae10f1705898e73e419 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -215,27 +215,35 @@ if ($resql) print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; - print '<table class="liste" width="100%">'; - // Filter on categories $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ'); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } + + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans("StockTooLow").' <input type="checkbox" name="toolowstock" value="1"'.($toolowstock?' checked':'').'>'; - if ($moreforfilter) - { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="9">'; - print $moreforfilter; - print '</td></tr>'; - } + $moreforfilter.='</div>'; + + if (! empty($moreforfilter)) + { + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; + } + $param="&tosell=$tosell&tobuy=$tobuy".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref"; - + + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + // Lignes des titres print "<tr class=\"liste_titre\">"; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/product/reassortlot.php b/htdocs/product/reassortlot.php index 86410df8a00d523ede3eb41913aa7507a308b4e6..d7f5905fbd31085086f17366aaa32c8582d58c88 100644 --- a/htdocs/product/reassortlot.php +++ b/htdocs/product/reassortlot.php @@ -227,27 +227,32 @@ if ($resql) print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; print '<input type="hidden" name="type" value="'.$type.'">'; - print '<table class="liste" width="100%">'; - // Filter on categories $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ'); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } //$moreforfilter.=$langs->trans("StockTooLow").' <input type="checkbox" name="toolowstock" value="1"'.($toolowstock?' checked':'').'>'; - if ($moreforfilter) - { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="11">'; - print $moreforfilter; - print '</td></tr>'; - } + + if (! empty($moreforfilter)) + { + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; + } + $param="&tosell=$tosell&tobuy=$tobuy".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref&batch=$batch&eatby=$eatby&sellby=$sellby"; + print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'; + // Lignes des titres print "<tr class=\"liste_titre\">"; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index 9491b18da1e15c8ab0585ab72d8b0a9f9d91aea4..f90235a143fadb1ee411c536becf4888609d5142 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -188,7 +188,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("CustomersOrders"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,$totalrecords,''); - print '<div class="liste_titre">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print '<div class="divsearchfield">'; print $langs->trans('Period').' ('.$langs->trans("OrderDate") .') - '; print $langs->trans('Month') . ':<input class="flat" type="text" size="4" name="search_month" value="' . $search_month . '"> '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -197,9 +198,10 @@ if ($id > 0 || ! empty($ref)) print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print '</div>'; print '</div>'; + print '</div>'; $i = 0; - print '<table class="noborder" width="100%">'; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"c.rowid","",$option,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$option,'',$sortfield,$sortorder); diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index e7a803c299c5e02c14ff044b0271c3eec4297efd..3d117a7f40a8d089fd7e38c6336ba73782d75d6d 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -198,7 +198,8 @@ if ($id > 0 || ! empty($ref)) { } print_barre_liste($langs->trans("SuppliersOrders"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '<div class="liste_titre">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print '<div class="divsearchfield">'; print $langs->trans('Period') . ' (' . $langs->trans("OrderDate") . ') - '; print $langs->trans('Month') . ':<input class="flat" type="text" size="4" name="search_month" value="' . $search_month . '"> '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -207,9 +208,10 @@ if ($id > 0 || ! empty($ref)) { print '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; print '</div>'; print '</div>'; + print '</div>'; $i = 0; - print '<table class="noborder" width="100%">'; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/product/stats/contrat.php b/htdocs/product/stats/contrat.php index 84417c013b72ab590fa760063d3eae8e16510f89..9d4d7d53abc9a444a41ea6414fa76d284b621e8f 100644 --- a/htdocs/product/stats/contrat.php +++ b/htdocs/product/stats/contrat.php @@ -147,7 +147,7 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("Contrats"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,0,''); $i = 0; - print "<table class=\"noborder\" width=\"100%\">"; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"c.rowid","","&id=".$product->id,'',$sortfield,$sortorder); @@ -155,9 +155,9 @@ if ($id > 0 || ! empty($ref)) print_liste_field_titre($langs->trans("CustomerCode"),$_SERVER["PHP_SELF"],"s.code_client","","&id=".$product->id,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"c.date_contrat","","&id=".$product->id,'align="center"',$sortfield,$sortorder); //print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"c.amount","","&id=".$product->id,'align="right"',$sortfield,$sortorder); - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(0,3).'</td>'; - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(4,3).'</td>'; - print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(5,3).'</td>'; + print_liste_field_titre($staticcontratligne->LibStatut(0,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($staticcontratligne->LibStatut(4,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($staticcontratligne->LibStatut(5,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; $contratstatic=new Contrat($db); diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index 2a79b97e399868c6942cdee4f5429d6800a1a84f..6fb09bffa8b3ebeb0fa95f908001fb968b2f738c 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -22,7 +22,7 @@ /** * \file htdocs/product/stats/facture.php * \ingroup product service facture - * \brief Page des stats des factures clients pour un produit + * \brief Page of invoice statistics for a product */ require '../../main.inc.php'; @@ -128,7 +128,8 @@ if ($id > 0 || ! empty($ref)) print '</div>'; - if ($user->rights->facture->lire) { + if ($user->rights->facture->lire) + { $sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client,"; $sql.= " f.facnumber, d.total_ht as total_ht,"; $sql.= " f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty"; @@ -189,7 +190,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("CustomersInvoices"),$page,$_SERVER["PHP_SELF"],"&id=".$product->id,$sortfield,$sortorder,'',$num,$totalrecords,''); - print '<div class="liste_titre">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print '<div class="divsearchfield">'; print $langs->trans('Period').' ('.$langs->trans("DateInvoice") .') - '; print $langs->trans('Month') . ':<input class="flat" type="text" size="4" name="search_month" value="' . $search_month . '"> '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -198,9 +200,10 @@ if ($id > 0 || ! empty($ref)) print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">'; print '</div>'; print '</div>'; + print '</div>'; $i = 0; - print '<table class="noborder" width="100%">'; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"s.rowid","",$option,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$option,'',$sortfield,$sortorder); diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index 9b56cee75523b948fa351654c19a501434fe4bfa..677bff934a73345b0c4a9c33e082ee5ce646c899 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -190,7 +190,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("SuppliersInvoices"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '<div class="liste_titre">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print '<div class="divsearchfield">'; print $langs->trans('Period') . ' (' . $langs->trans("DateInvoice") . ') - '; print $langs->trans('Month') . ':<input class="flat" type="text" size="4" name="search_month" value="' . $search_month . '"> '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -199,9 +200,10 @@ if ($id > 0 || ! empty($ref)) print '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; print '</div>'; print '</div>'; + print '</div>'; $i = 0; - print '<table class="noborder" width="100%">'; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "s.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index 690f9c8c4214882988f8ad26ea4b37e057b67f62..295487344fdb60a9938d17680facceb7f28f20a3 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -191,7 +191,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '<div class="liste_titre">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; + print '<div class="divsearchfield">'; print $langs->trans('Period') . ' (' . $langs->trans("DatePropal") . ') - '; print $langs->trans('Month') . ':<input class="flat" type="text" size="4" name="search_month" value="' . $search_month . '"> '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -200,9 +201,10 @@ if ($id > 0 || ! empty($ref)) print '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; print '</div>'; print '</div>'; + print '</div>'; $i = 0; - print '<table class="noborder" width="100%">'; + print '<table class="tagtable liste listwithfilterbefore" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 8e98bf9e93f326fa5a9e98da9c605299a14daa20..16fac9bb1bd7fc23d5014cc216ab9544b350cc1c 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -274,15 +274,18 @@ if ($resql) if (! empty($moreforfilter)) { print '<div class="liste_titre liste_titre_bydiv centpercent">'; + //print '<tr class="liste_titre">'; + //print '<td class="liste_titre" colspan="'.$colspan.'">'; print $moreforfilter; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '</div>'; - } + //print '</td></tr>'; + } - print '<table class="liste">'; - + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index 42d367ce8331d00cb48413f2441a17418a5b1f27..d28d7d6f14abb508f2f1706326230144fa225385 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -269,7 +269,8 @@ dol_fiche_head($head,'byyear',$langs->trans("Statistics"), 0, ''); print '<div class="fichecenter"><div class="fichethirdleft">'; print '<form name="stats" method="POST" action="'.$_SERVER["PHP_SELF"].'">'; -print '<table class="border" width="100%">'; + +print '<table class="noborder" width="100%">'; print '<tr class="liste_titre"><td class="liste_titre" colspan="2">'.$langs->trans("Filter").'</td></tr>'; // Company print '<tr><td>'.$langs->trans("ThirdParty").'</td><td>'; @@ -293,8 +294,8 @@ print '</table>'; print '</form>'; print '<br><br>'; -print '<table class="border" width="100%">'; -print '<tr height="24">'; +print '<table class="noborder" width="100%">'; +print '<tr class="liste_titre" height="24">'; print '<td align="center">'.$langs->trans("Year").'</td>'; print '<td align="center">'.$langs->trans("NbOfProjects").'</td>'; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) @@ -305,13 +306,15 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) print '</tr>'; $oldyear=0; +$var=true; foreach ($data_all_year as $val) { $year = $val['year']; while ($year && $oldyear > $year+1) { // If we have empty year $oldyear--; - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>'; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { @@ -321,7 +324,8 @@ foreach ($data_all_year as $val) print '<td align="right">0</td>'; print '</tr>'; } - print '<tr height="24">'; + $var=!$var; + print '<tr '.$bc[$var].' height="24">'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>'; print '<td align="right">'.$val['nb'].'</td>'; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php index 082fbdd8d7b26188be048ff10a448b03cd8d386b..39484f05014d200843798fe7d7fef222d2ae8010 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/index.php @@ -141,7 +141,7 @@ if (! empty($moreforfilter)) print '</div>'; } -print '<table class="liste">'; +print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'" id="tablelines3">'; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Project").'</td>'; print '<td>'.$langs->trans("ProjectStatus").'</td>'; diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index d31b10ff5ef9632c32431021e169be07e59adc9f..2801ebb8855dff6914aab1df857d4069c7f7018a 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -146,9 +146,7 @@ $nav.='</form>'; print_barre_liste('Title of my list', 3, $_SERVER["PHP_SELF"], '', '', '', 'Text in middle', 20, 5000, '', 0, $nav); -?> -<table class="liste noborder tagtable centpercent" id="tablelines3"> -<?php + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('This is a select list for a filter A'). ': '; $cate_arbo = array('field1'=>'value1a into the select list A','field2'=>'value2a'); @@ -175,11 +173,15 @@ $moreforfilter.='</div>'; if (! empty($moreforfilter)) { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="10">'; + print '<div class="liste_titre liste_titre_bydiv centpercent">'; print $moreforfilter; - print '</td></tr>'; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '</div>'; } + +print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'" id="tablelines3">'; ?> <tr class="liste_titre"> <?php print getTitleFieldOfList($langs->trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> @@ -188,7 +190,9 @@ if (! empty($moreforfilter)) </tr> <tr class="pair"><td><?php echo $productspecimen->getNomUrl(1); ?></td><td align="right">b1</td><td class="tdlineupdown" align="left">c1</td></tr> <tr class="impair"><td>a2</td><td align="right">b2</td><td class="tdlineupdown" align="left">c2</td></tr> -</table> +<?php +print '</table>'; +?> <br> diff --git a/htdocs/public/theme/common/nophoto.jpg b/htdocs/public/theme/common/nophoto.jpg deleted file mode 100644 index 14eeb1cf01fcd037f612061d53c9bf18d61be901..0000000000000000000000000000000000000000 Binary files a/htdocs/public/theme/common/nophoto.jpg and /dev/null differ diff --git a/htdocs/public/theme/common/nophoto.png b/htdocs/public/theme/common/nophoto.png new file mode 100644 index 0000000000000000000000000000000000000000..bce088ef784902b7f05b0a8fdcc9c141ab5a2341 Binary files /dev/null and b/htdocs/public/theme/common/nophoto.png differ diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index a5792642a64f29327090c055cf9f54d4cdafd9e2..501e54cce11cabc02f7a437b59bf4c8b458cf3b0 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -208,9 +208,9 @@ $title=$langs->trans("ListOfThirdParties"); $sql = "SELECT s.rowid, s.nom as name, s.barcode, s.town, s.datec, s.code_client, s.code_fournisseur, "; $sql.= " st.libelle as stcomm, s.prefix_comm, s.client, s.fournisseur, s.canvas, s.status as status,"; -$sql.= " s.siren as idprof1, s.siret as idprof2, ape as idprof3, idprof4 as idprof4"; -$sql.= ",s.fk_pays"; -$sql.= ",typent.code as typent_code"; +$sql.= " s.siren as idprof1, s.siret as idprof2, ape as idprof3, idprof4 as idprof4,"; +$sql.= " s.fk_pays, s.tms as date_update, s.datec as date_creation,"; +$sql.= " typent.code as typent_code"; // We'll need these fields in order to filter by sale (including the case where the user can only see his prospects) if ($search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We'll need these fields in order to filter by categ @@ -321,22 +321,18 @@ if ($resql) $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categories::TYPE_CUSTOMER,$search_categ,'search_categ'); - $moreforfilter.=' '; + $moreforfilter.='</div>'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='<div class="divsearchfield">'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$htmlother->select_salesrepresentatives($search_sale,'search_sale',$user); - } - if ($moreforfilter) - { - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="8">'; - print $moreforfilter; - print '</td></tr>'; + $moreforfilter.='</div>'; } */ if (! empty($moreforfilter)) @@ -349,10 +345,29 @@ if ($resql) print '</div>'; } - print '<table class="liste">'; + // Define list of fields to show into list + $arrayfields=array( + 's.nom'=>array('label'=>$langs->trans("Company"), 'checked'=>1), + 's.barcode'=>array('label'=>$langs->trans("BarCode"), 'checked'=>1, 'cond'=>(! empty($conf->barcode->enabled))), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>1), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>1), + 's.siren'=>array('label'=>$langs->trans("ProfId1Short"), 'checked'=>1), + 's.siret'=>array('label'=>$langs->trans("ProfId2Short"), 'checked'=>1), + 's.ape'=>array('label'=>$langs->trans("ProfId3Short"), 'checked'=>1), + 's.idprof4'=>array('label'=>$langs->trans("ProfId4Short"), 'checked'=>1), + 's.status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>200), + 's.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 's.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + ); + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) + { + $selectotherfields=$form->multiSelectArrayWithCheckbox('selectotherfields', $arrayfields); + } + + print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">'; - // Lines of titles - print '<tr class="liste_titre">'; + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); if (! empty($conf->barcode->enabled)) print_liste_field_titre($langs->trans("BarCode"), $_SERVER["PHP_SELF"], "s.barcode",$param,'','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Town"),$_SERVER["PHP_SELF"],"s.town","",$param,'',$sortfield,$sortorder); @@ -367,7 +382,7 @@ if ($resql) $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($selectotherfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "</tr>\n"; // Fields title search @@ -376,18 +391,19 @@ if ($resql) print '<input type="hidden" name="sortfield" value="'.$sortfield.'">'; print '<input type="hidden" name="sortorder" value="'.$sortorder.'">'; if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only; - print '<input class="flat" type="text" name="search_nom" size="8" value="'.htmlspecialchars($search_nom).'">'; + + print '<input class="flat" type="text" name="search_nom" size="8" value="'.dol_escape_htmltag($search_nom).'">'; print '</td>'; // Barcode if (! empty($conf->barcode->enabled)) { print '<td class="liste_titre">'; - print '<input class="flat" type="text" name="sbarcode" size="6" value="'.htmlspecialchars($sbarcode).'">'; + print '<input class="flat" type="text" name="sbarcode" size="6" value="'.dol_escape_htmltag($sbarcode).'">'; print '</td>'; } // Town print '<td class="liste_titre">'; - print '<input class="flat" size="8" type="text" name="search_town" value="'.htmlspecialchars($search_town).'">'; + print '<input class="flat" size="8" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).'">'; print '</td>'; //Country print '<td class="liste_titre" align="center">'; @@ -399,19 +415,19 @@ if ($resql) print '</td>'; // IdProf1 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.htmlspecialchars($search_idprof1).'">'; + print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.dol_escape_htmltag($search_idprof1).'">'; print '</td>'; // IdProf2 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.htmlspecialchars($search_idprof2).'">'; + print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.dol_escape_htmltag($search_idprof2).'">'; print '</td>'; // IdProf3 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.htmlspecialchars($search_idprof3).'">'; + print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.dol_escape_htmltag($search_idprof3).'">'; print '</td>'; // IdProf4 print '<td class="liste_titre">'; - print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.htmlspecialchars($search_idprof4).'">'; + print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.dol_escape_htmltag($search_idprof4).'">'; print '</td>'; // Type (customer/prospect/supplier) print '<td class="liste_titre" align="middle">'; diff --git a/htdocs/theme/eldy/img/list.png b/htdocs/theme/eldy/img/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f5df34a3bc9f8393c23f35e25fb7b18b4b51654b Binary files /dev/null and b/htdocs/theme/eldy/img/list.png differ diff --git a/htdocs/theme/eldy/img/sort_asc.png b/htdocs/theme/eldy/img/sort_asc.png index aca0f6eb77aa8b601a073daa9a94bfa9bd5cc7e8..82b250c72bd73cedf7196138285647383a216300 100644 Binary files a/htdocs/theme/eldy/img/sort_asc.png and b/htdocs/theme/eldy/img/sort_asc.png differ diff --git a/htdocs/theme/eldy/img/sort_desc.png b/htdocs/theme/eldy/img/sort_desc.png index 57c1ad0fcb41a2dac762e6d46dc4556590002172..a5aa5f4e506530874aa5814fa5aa354c5b8f4f72 100644 Binary files a/htdocs/theme/eldy/img/sort_desc.png and b/htdocs/theme/eldy/img/sort_desc.png differ diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index d768f446a0d25ac6c4b8e4fc1f90c74c736716fb..98713d0a77a6afced1f816e0c8327b7ba3d2d614 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -452,8 +452,10 @@ textarea.centpercent { div.divsearchfield { float: <?php print $left; ?>; margin-<?php print $right; ?>: 12px; - margin-top: 1px; - margin-bottom: 2px; + margin-<?php print $left; ?>: 2px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 2px; } div.confirmmessage { padding-top: 6px; @@ -535,7 +537,7 @@ td.showDragHandle { float: none; vertical-align: top; } -#id-right { /* This must stay id-right ant not be replaced with echo $right */ +#id-right { /* This must stay id-right and not be replaced with echo $right */ width: 100%; } #id-left { @@ -613,7 +615,7 @@ div.arearef { margin-bottom: 10px; } div.heightref { - min-height: 74px; + min-height: 80px; } div.divphotoref { padding-right: 10px; @@ -625,12 +627,14 @@ div.statusref { margin-bottom: 10px; } img.photoref { - height: 68px; - width: 68px; border: 1px solid #CCC; -moz-box-shadow: 3px 3px 4px #DDD; -webkit-box-shadow: 3px 3px 4px #DDD; box-shadow: 3px 3px 4px #DDD; + padding: 4px; + height: 80px; + width: 80px; + object-fit: contain } .underrefbanner { border-bottom: 2px solid #888; @@ -1592,9 +1596,11 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); margin-bottom: 0 0.2em 0 0.2em !important; + border-right: 1px solid #AAA !important; border-left: 1px solid #AAA !important; border-top: 1px solid #BBB !important; + -moz-border-radius:4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; @@ -1924,10 +1930,12 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { border: 1px solid #E0E0E0; - border-collapse: collapse; + border-collapse: collapse !important; padding: 1px 2px 1px 3px; /* t r b l */ } - +table.borderplus { + border: 1px solid #BBB; +} .border tbody tr, .border tbody tr td { height: 20px; } @@ -1966,7 +1974,7 @@ td.border, div.tagtable div div.border { /* Main boxes */ -table.noborder, table.formdoc, div.noborder { +table.liste, table.noborder, table.formdoc, div.noborder { width: 100%; border-collapse: separate !important; @@ -1994,25 +2002,28 @@ table.noborder, table.formdoc, div.noborder { -webkit-box-shadow: 2px 2px 4px #CCC; box-shadow: 2px 2px 4px #CCC; - -moz-border-radius: 0.2em; +/* -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; - border-radius: 0.2em; + border-radius: 0.2em;*/ } -table.noborder tr, div.noborder form { +table.liste tr, table.noborder tr, div.noborder form { border-top-color: #FEFEFE; border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; - border-left-color: #BBBBBB; + border-left-color: #BBB; border-left-style: solid; min-height: 20px; } -table.noborder th, table.noborder td, div.noborder form, div.noborder form div { +table.liste th, table.noborder th { + padding: 10px 2px 10px 3px; /* t r b l */ +} +table.liste td, table.noborder td, div.noborder form, div.noborder form div { padding: 5px 2px 5px 3px; /* t r b l */ } @@ -2040,42 +2051,12 @@ td.borderright { } -/* For lists */ - -table.liste { - width: 100%; - - border-collapse: collapse; -/* border-top-color: #FEFEFE; - border-top-width: 1px; - border-top-color: #CCC; - border-top-style: solid; -*/ - - border-right-width: 1px; - border-right-color: #CCC; - border-right-style: solid; - -/* - border-bottom-width: 1px; - border-bottom-color: #BBBBBB; - border-bottom-style: solid; -*/ - border-left-width: 1px; - border-left-color: #CCC; - border-left-style: solid; - - margin-bottom: 2px; - margin-top: 0px; - - -moz-box-shadow: 0px 3px 4px #CCC; - -webkit-box-shadow: 0px 3px 4px #CC; - box-shadow: 0px 3px 4px #CCC; -} -table.liste td { - padding-right: 2px; +/* For table with no filter before */ +table.listwithfilterbefore { + border-top: none !important; } + .tagtable, .table-border { display: table; } .tagtr, .table-border-row { display: table-row; } .tagtd, .table-border-col, .table-key-border-col, .table-val-border-col { display: table-cell; } @@ -2323,27 +2304,28 @@ div.liste_titre { div.liste_titre { min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height does not work either for div */ - padding-left: 3px; padding-top: 2px; padding-bottom: 2px; border-right-width: 1px; - border-right-color: #CCC; + border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; - border-left-color: #CCC; + border-left-color: #BBB; border-left-style: solid; border-top-width: 1px; - border-top-color: #CCC; + border-top-color: #BBB; border-top-style: solid; } div.liste_titre_bydiv { box-shadow: none; border-collapse: collapse; display: table; - padding: 2px 2px 2px 0; + padding: 2px 0px 2px 0; + box-shadow: 2px 2px 4px #CCC; + width: calc(100% - 1px); /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { @@ -2436,6 +2418,10 @@ div.tabBar .noborder { box-shadow: 0px 0px 0px #DDD !important; } +#tablelines tr.liste_titre td, .paymenttable tr.liste_titre td, .margintable tr.liste_titre td, .tableforservicepart1 tr.liste_titre td { + border-bottom: 1px solid #AAA !important; +} + /* * Boxes @@ -3424,7 +3410,7 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-color: #FFF !important; border-radius: inherit !important; } -.paging_full_numbers a.paginate_button_disabled:hover { +.paging_full_numbers a.paginate_button_disabled:hover, .paging_full_numbers a.disabled:hover { background-color: #FFF !important; } .paginate_button, .paginate_active { @@ -3452,7 +3438,9 @@ div.dataTables_length { div.dataTables_length select { background: #fff; } - +.dataTables_wrapper .dataTables_paginate { + padding-top: 0px !important; +} /* ============================================================================== */ /* Select2 */ @@ -3549,6 +3537,62 @@ a span.select2-chosen } +/* ============================================================================== */ +/* Multiselect with checkbox */ +/* ============================================================================== */ + +dl.dropdown { + margin:0px; + padding:0px; +} +.dropdown dd, .dropdown dt { + margin:0px; + padding:0px; +} +.dropdown ul { + margin: -1px 0 0 0; + text-align: left; +} +.dropdown dd { + position:relative; +} +.dropdown dt a { + display:block; + overflow: hidden; + border:0; +} +.dropdown dt a span, .multiSel span { + cursor:pointer; + display:inline-block; + padding: 0 3px 2px 0; +} +.dropdown dd ul { + background-color: #FFF; + border: 1px solid #888; + display:none; + right:0px; /* pop is align on right */ + padding: 2px 15px 2px 5px; + position:absolute; + top:2px; + list-style:none; + max-height: 200px; + overflow: auto; +} +.dropdown span.value { + display:none; +} +.dropdown dd ul li { + white-space: nowrap; + font-weight: normal; +} +.dropdown dd ul li a { + padding:5px; + display:block; +} +.dropdown dd ul li a:hover { + background-color:#fff; +} + /* ============================================================================== */ /* JMobile */ diff --git a/htdocs/theme/md/img/list.png b/htdocs/theme/md/img/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f5df34a3bc9f8393c23f35e25fb7b18b4b51654b Binary files /dev/null and b/htdocs/theme/md/img/list.png differ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 0db79b5470aabf5de208e00ed27417998a66452a..65c65bdfd98840199c9e76b555040c31ab193ef3 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -251,6 +251,7 @@ input, textarea, select { border:solid 1px rgba(0,0,0,.3); border-top:solid 1px rgba(0,0,0,.3); border-bottom:solid 1px rgba(0,0,0,.2); + background-color: #FFF; /* box-shadow: 1px 1px 1px rgba(0,0,0,.2) inset;*/ padding:4px; margin-left:1px; @@ -456,6 +457,10 @@ textarea.centpercent { div.divsearchfield { float: <?php print $left; ?>; margin-<?php print $right; ?>: 12px; + margin-<?php print $left; ?>: 2px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 2px; } div.confirmmessage { padding-top: 6px; @@ -1551,9 +1556,9 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); - border-right: 1px solid #CCCCCC; - border-left: 1px solid #f4f4f4; - border-top: 1px solid #D8D8D8; + border-right: 1px solid #AAA !important; + border-left: 1px solid #AAA !important; + border-top: 1px solid #BBB !important; -moz-border-radius:3px 3px 0px 0px; -webkit-border-radius:3px 3px 0px 0px; @@ -1788,7 +1793,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { border: 1px solid #f4f4f4; - border-collapse: collapse; + border-collapse: collapse !important; padding: 1px 2px 1px 3px; /* t r b l */ } @@ -1822,7 +1827,7 @@ td.border, div.tagtable div div.border { /* Main boxes */ -table.noborder, table.formdoc, div.noborder { +table.liste, table.noborder, table.formdoc, div.noborder { width: 100%; border-collapse: separate !important; @@ -1856,6 +1861,9 @@ table.noborder tr, div.noborder form { height: 26px; } +table.liste th, table.noborder th { + padding: 5px 2px 5px 3px; /* t r b l */ +} table.noborder th, table.noborder td, div.noborder form, div.noborder form div { padding: 1px 2px 1px 3px; /* t r b l */ } @@ -1883,35 +1891,9 @@ td.borderright { border-right-style: solid !important; } -/* For lists */ - -table.liste { - width: 100%; - border-collapse: collapse; - border-top-color: #FEFEFE; - - border-right-width: 1px; - border-right-color: #CCC; - border-right-style: solid; - -/* - border-bottom-width: 1px; - border-bottom-color: #BBBBBB; - border-bottom-style: solid; -*/ - border-left-width: 1px; - border-left-color: #CCC; - border-left-style: solid; - - margin-bottom: 2px; - margin-top: 0px; - - -moz-box-shadow: 0px 3px 4px #CCC; - -webkit-box-shadow: 0px 3px 4px #CC; - box-shadow: 0px 3px 4px #CCC; -} -table.liste td { - padding-right: 2px; +/* For table with no filter before */ +table.listwithfilterbefore { + border-top: none !important; } .tagtable, .table-border { display: table; } @@ -2050,6 +2032,9 @@ div.pagination li.pagination .active { div.pagination li.paginationafterarrows { margin-left: 10px; } +.paginationatbottom { + margin-top: 9px; +} /* Prepare to remove class pair - impair .noborder > tbody > tr:nth-child(even) td { @@ -2139,6 +2124,29 @@ div.liste_titre .tagtd { } div.liste_titre { min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height doe not work either for div */ + + padding-top: 2px; + padding-bottom: 2px; + + border-right-width: 1px; + border-right-color: #BBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #BBB; + border-left-style: solid; + + border-top-width: 1px; + border-top-color: #BBB; + border-top-style: solid; +} +div.liste_titre_bydiv { + box-shadow: none; + border-collapse: collapse; + display: table; + padding: 2px 0px 2px 0; + box-shadow: 2px 2px 4px #CCC; + width: calc(100% - 1px); /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { @@ -2236,6 +2244,10 @@ div.tabBar .noborder { box-shadow: 0px 0px 0px #f4f4f4 !important; } +#tablelines tr.liste_titre td, .paymenttable tr.liste_titre td, .margintable tr.liste_titre td, .tableforservicepart1 tr.liste_titre td { + border-bottom: 1px solid #AAA !important; +} + /* * Boxes @@ -2425,7 +2437,12 @@ td.legendLabel { padding: 2px 2px 2px 0 !important; } margin-bottom: 2px; margin-top: 2px; } -.photointooltip { +.photowithmargin { +/* -webkit-box-shadow: 0px 0px 3px #777; + -moz-box-shadow: 0px 0px 3px #777; + box-shadow: 0px 0px 3px #777;*/ +} +.photointoolitp { margin-top: 8px; float: left; /*text-align: center; */ @@ -3221,7 +3238,7 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-color: #FFF !important; border-radius: inherit !important; } -.paging_full_numbers a.paginate_button_disabled:hover { +.paging_full_numbers a.paginate_button_disabled:hover, .paging_full_numbers a.disabled:hover { background-color: #FFF !important; } .paginate_button, .paginate_active { @@ -3242,10 +3259,26 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-image: none; } +div.dataTables_length { + float: right !important; + padding-left: 8px; +} +div.dataTables_length select { + background: #fff; +} +.dataTables_wrapper .dataTables_paginate { + padding-top: 0px !important; +} + + /* ============================================================================== */ /* Select2 */ /* ============================================================================== */ +.selectoptiondisabledwhite { + background: #FFFFFF !important; +} + .select2-choice, .select2-drop.select2-drop-above.select2-drop-active, .select2-container-active .select2-choice, @@ -3333,6 +3366,63 @@ a span.select2-chosen } +/* ============================================================================== */ +/* Multiselect with checkbox */ +/* ============================================================================== */ + +dl.dropdown { + margin:0px; + padding:0px; +} +.dropdown dd, .dropdown dt { + margin:0px; + padding:0px; +} +.dropdown ul { + margin: -1px 0 0 0; + text-align: left; +} +.dropdown dd { + position:relative; +} +.dropdown dt a { + display:block; + overflow: hidden; + border:0; +} +.dropdown dt a span, .multiSel span { + cursor:pointer; + display:inline-block; + padding: 0 3px 2px 0; +} +.dropdown dd ul { + background-color: #FFF; + border: 1px solid #888; + display:none; + right:0px; /* pop is align on right */ + padding: 2px 15px 2px 5px; + position:absolute; + top:2px; + list-style:none; + max-height: 200px; + overflow: auto; +} +.dropdown span.value { + display:none; +} +.dropdown dd ul li { + white-space: nowrap; + font-weight: normal; +} +.dropdown dd ul li a { + padding:5px; + display:block; +} +.dropdown dd ul li a:hover { + background-color:#fff; +} + + /* ============================================================================== */ /* JMobile */ /* ============================================================================== */ @@ -3559,7 +3649,7 @@ border-top-right-radius: 6px; #tooltip { position: absolute; width: <?php print dol_size(350,'width'); ?>px; - } + } } @media only screen and (max-width: 570px) { @@ -3573,7 +3663,7 @@ border-top-right-radius: 6px; #tooltip { position: absolute; width: <?php print dol_size(300,'width'); ?>px; - } + } } diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index f9f2b54b2929c525ee46df956bb8d9b42635f90b..3f3d7cc27df0ce794ae8eb9ba6b8ee5f9b8005e6 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -173,7 +173,7 @@ else // Open and return file // This test is to avoid error images when image is not available (for example thumbs). if (! dol_is_file($original_file)) { - $original_file=DOL_DOCUMENT_ROOT.'/public/theme/common/nophoto.jpg'; + $original_file=DOL_DOCUMENT_ROOT.'/public/theme/common/nophoto.png'; /*$error='Error: File '.$_GET["file"].' does not exists or filesystems permissions are not allowed'; dol_print_error(0,$error); print $error; diff --git a/test/phpunit/ModulesTest.php b/test/phpunit/ModulesTest.php index 3c8b96ffe2addff8bd2fb662f86ddb56f524a141..9210ae1a46a50c1928b1a8f387a2be73a684e087 100755 --- a/test/phpunit/ModulesTest.php +++ b/test/phpunit/ModulesTest.php @@ -133,7 +133,7 @@ class ModulesTest extends PHPUnit_Framework_TestCase 'Facture','Fckeditor','Ficheinter','Fournisseur','FTP','GeoIPMaxmind','Gravatar','Holiday','Import','Label','Ldap', 'Mailing','MailmanSpip','Margin', 'Notification','OpenSurvey','Paybox','Paypal','Prelevement','Product','ProductBatch','Projet','Propale', - 'Salaries','Service','Skype','Societe','Stock','SyncSupplierWebServices','Syslog','Tax','User','WebServices','Workflow'); + 'Salaries','Service','Skype','Societe','Stock','WebServicesClient','Syslog','Tax','User','WebServices','Workflow'); foreach($modulelist as $modlabel) { require_once(DOL_DOCUMENT_ROOT.'/core/modules/mod'.$modlabel.'.class.php');