Compare commits

...

111 Commits
7.0.2 ... 2.9.0

Author SHA1 Message Date
Regis Houssin
223ef4b268 Fix: bad sql request 2011-01-21 18:26:20 +00:00
Regis Houssin
e5ade4df2b Fix: bad conversion if records is a float number 2010-11-06 19:01:59 +00:00
Regis Houssin
97de42742c Fix: bad conversion if records is a float number 2010-11-06 18:31:33 +00:00
Regis Houssin
d20a950349 Fix: bad conversion if records is a float number 2010-11-06 18:27:35 +00:00
Regis Houssin
68ffff7c19 Fix: error when creating an invoice from a project 2010-11-06 15:18:30 +00:00
Regis Houssin
f4e1484cb9 Fix: empty local tax 2010-11-05 23:48:46 +00:00
Laurent Destailleur
826bd7f2d1 Fix: Remove eclipse errors 2010-10-23 16:36:14 +00:00
Regis Houssin
e3a546e535 Fix: bad increment 2010-10-21 09:41:19 +00:00
Laurent Destailleur
c2d9fdb88f Fix: Fixed a very old bug making file attachment fails with some emails readers when using "mail php function". 2010-10-09 23:24:31 +00:00
Regis Houssin
bba65cb868 Fix: renaming of fk_adresse_livraison impossible with constraint 2010-10-07 09:56:44 +00:00
Laurent Destailleur
4dee91a1ec Fix: A fix to have new version of code able to run old migrate process 2010-10-06 09:39:59 +00:00
Laurent Destailleur
3604a798b0 Fix: A fix to have new version of code able to run old migrate process 2010-10-06 09:16:59 +00:00
Regis Houssin
cb5fde8c62 Fix: bad error management 2010-09-30 20:06:38 +00:00
Regis Houssin
6838247724 Fix: bad link if no payment 2010-09-30 19:41:04 +00:00
Laurent Destailleur
196cb74750 Fix: Rmoved deprecated link 2010-09-29 12:31:58 +00:00
Laurent Destailleur
ccc4e9193e Fix: Style with smartphone 2010-09-29 10:12:22 +00:00
Regis Houssin
329ab8a392 Fix: bad length of field with index in utf8 2010-09-28 06:10:56 +00:00
Regis Houssin
43b4ebdd23 Fix: bad date format
Fix: utf8
2010-09-27 06:58:44 +00:00
Regis Houssin
88f303b083 Fix: photo is lost after card update 2010-09-26 14:52:03 +00:00
Regis Houssin
2cc6df7eee Fix: bad sessiontimeout name 2010-09-25 15:42:54 +00:00
Regis Houssin
36208d4b16 Fix: Do not increase this as file+note must be small to allow index 2010-09-24 11:15:22 +00:00
Regis Houssin
84d7b5a099 Fix : issue for automatic customer and supplier increment code 2010-09-22 20:55:01 +00:00
Regis Houssin
dcf2fa243f Fix: Do not increase this as file+note must be small to allow index 2010-09-21 21:12:18 +00:00
Regis Houssin
4b4aeae842 Fix: best test 2010-09-21 19:09:10 +00:00
Laurent Destailleur
9906ca9707 Fix: mailman disabled 2010-09-19 14:47:02 +00:00
Laurent Destailleur
2f227d8229 Fix: Bad param 2010-09-19 13:34:53 +00:00
Laurent Destailleur
5479c56b94 Fix: Trad 2010-09-18 11:52:27 +00:00
Laurent Destailleur
709d19f494 Add argentina vat rate 2010-09-18 10:59:53 +00:00
Laurent Destailleur
504941e50e Fix: Look 2010-09-18 10:05:31 +00:00
Laurent Destailleur
026a7df6da Fix: Too many problems with triggers outside of standard dir. Only external module triggers must be in module dir. 2010-09-15 17:20:16 +00:00
Laurent Destailleur
fc50485d08 Fix: Too many problems with triggers outside of standard dir. Only external module triggers must be in module dir. 2010-09-15 16:07:27 +00:00
Laurent Destailleur
2638320ede Fix: Error in adding article 2010-09-15 15:31:44 +00:00
Laurent Destailleur
4b771e3750 Fix: Error in adding article 2010-09-15 14:36:44 +00:00
Laurent Destailleur
5b24b7cf46 Fix: Error when capital is not a number 2010-09-15 11:59:46 +00:00
Laurent Destailleur
d2b9d736cd Fix: Detection of country of bank account failed 2010-09-15 10:30:04 +00:00
Laurent Destailleur
d104ae3a27 Fix: Trad and sort on status 2010-09-12 18:07:42 +00:00
Laurent Destailleur
12d831b1ca Fix: Trad 2010-09-12 18:04:10 +00:00
Regis Houssin
3afd8d3893 Fix: bad position of title 2010-09-10 12:07:15 +00:00
Regis Houssin
da27f27f78 Fix: bad link 2010-09-09 21:43:47 +00:00
Regis Houssin
427f0ef325 Fix: missing id line 2010-09-08 22:24:31 +00:00
Regis Houssin
84b96126f1 Fix: bug #30981 2010-09-07 06:58:59 +00:00
Laurent Destailleur
83437a678f Fix: wrong variable 2010-09-06 13:24:07 +00:00
Laurent Destailleur
58ded3b529 Fix: Missing sentence in notification email 2010-09-04 23:56:46 +00:00
Laurent Destailleur
dc6d797a36 Fix: Bad field 2010-09-04 22:46:18 +00:00
Laurent Destailleur
97f22d05d6 Enable php_soap 2010-09-04 14:46:11 +00:00
Laurent Destailleur
725d98aaeb Fix: Update a lot of languages 2010-09-04 00:40:02 +00:00
Laurent Destailleur
013714e63c Trad: Update language 2010-09-04 00:17:15 +00:00
Laurent Destailleur
4119d9e933 Fix: client not loaded 2010-09-01 18:07:47 +00:00
Laurent Destailleur
69cc38dc8b Trad 2010-09-01 13:34:47 +00:00
Laurent Destailleur
b37d683c2d Trad 2010-09-01 12:22:37 +00:00
Laurent Destailleur
0d11642bc0 Fix: Remove not desired warning 2010-09-01 11:50:53 +00:00
Laurent Destailleur
3f60e2926e Fix: No error if no photo 2010-09-01 10:43:11 +00:00
Laurent Destailleur
c2b5fca8b6 Fix: Syntax error 2010-08-31 22:25:09 +00:00
Laurent Destailleur
2a8d5a7ef4 Fix: Error message 2010-08-31 21:42:38 +00:00
Laurent Destailleur
1d86f8cb66 Fix: Bad object 2010-08-31 20:50:37 +00:00
Laurent Destailleur
35ef0407a4 Fix: removed old themes 2010-08-30 07:52:55 +00:00
Laurent Destailleur
a31936d2b7 Fix: Some error on migration 2010-08-29 22:41:35 +00:00
Laurent Destailleur
22f97e86e1 Prepare backward compatibility of modules code 2010-08-29 18:01:46 +00:00
Laurent Destailleur
cfc6cdc4ef Fix: bug #30629 : Ajout de prix fournisseur avec quantité fractionné donne erreur 2010-08-28 23:56:24 +00:00
Laurent Destailleur
0ab9f39756 Fix: bug #29540 : check Vat Popup 2010-08-28 23:35:13 +00:00
Laurent Destailleur
e95ba9080f Fix: Bad url 2010-08-28 22:55:10 +00:00
Laurent Destailleur
045ac251fb Trad: Fix trad 2010-08-27 07:00:53 +00:00
Laurent Destailleur
cb33cdd6a2 Fix bug in translator tool 2010-08-27 06:46:57 +00:00
Laurent Destailleur
f28b3f8aba Fix: Show correct information 2010-08-26 22:33:38 +00:00
Laurent Destailleur
fe53a86868 Fix: Bad parameters order 2010-08-26 22:09:35 +00:00
Laurent Destailleur
1f065fd34a New: Add slovenian language sl_SL 2010-08-26 21:37:37 +00:00
Laurent Destailleur
e12c73d1e0 Fix: Wrong value 2010-08-26 15:58:14 +00:00
Laurent Destailleur
2b7ee9e8f4 Fix:error management 2010-08-26 14:02:39 +00:00
Laurent Destailleur
a5370c0f5a Fix: die error with php 4 2010-08-26 12:39:22 +00:00
Laurent Destailleur
d637e8b83c Wrong param 2010-08-26 12:23:16 +00:00
Laurent Destailleur
c58e63a843 Trad 2010-08-26 12:21:35 +00:00
Laurent Destailleur
6c6bd45acf Fix: Duplicate entry, wrong sort 2010-08-26 11:48:37 +00:00
Laurent Destailleur
020246b136 Doc 2010-08-24 10:10:31 +00:00
Laurent Destailleur
5735b65ed8 Trad 2010-08-23 18:28:36 +00:00
Laurent Destailleur
f441dbc99b Fix: Removed rubish content 2010-08-22 13:42:37 +00:00
Laurent Destailleur
3c2673e528 Fix in coloring negative amounts 2010-08-21 17:45:44 +00:00
Laurent Destailleur
ea8d8a1e28 Fix: Missing trad 2010-08-20 16:06:02 +00:00
Regis Houssin
d765d6d7d1 Fix: the name of a database can contain a hyphen 2010-08-20 11:58:28 +00:00
Laurent Destailleur
332b2fc4d7 Fix: Error when deleting lock file by doliwamp 2010-08-19 22:32:33 +00:00
Laurent Destailleur
fbb59da164 Fix: Error management on delete file 2010-08-18 20:26:51 +00:00
Laurent Destailleur
1432e8dda6 Doc 2010-08-18 07:45:44 +00:00
Laurent Destailleur
9ab758e1fc Fix: Reorder of boxes 2010-08-18 07:44:06 +00:00
Laurent Destailleur
8d8cf0cd21 Fix: Lost permission 2010-08-17 08:20:12 +00:00
Laurent Destailleur
c0b320176b Fix: Bad coding 2010-08-17 00:02:33 +00:00
Laurent Destailleur
a8c914b4cf Fix: Bad coding 2010-08-17 00:01:39 +00:00
Laurent Destailleur
2861d5b033 Fix: Bad old data 2010-08-15 22:17:22 +00:00
Laurent Destailleur
e1b9df9970 Fix: Minor look fix 2010-08-15 17:20:24 +00:00
Laurent Destailleur
47c6cff9c1 Fix: Correct bad old data 2010-08-15 17:17:26 +00:00
Laurent Destailleur
b86537f122 Fix: Error in download attached file on project 2010-08-14 02:22:32 +00:00
Laurent Destailleur
cd86d03d35 Fix: Use good payment type 2010-08-14 01:50:30 +00:00
Laurent Destailleur
9aa83f13d2 Fix: Use good payment type 2010-08-14 01:43:44 +00:00
Laurent Destailleur
fcf5723183 Fix break page on pdf for projects 2010-08-14 00:17:46 +00:00
Laurent Destailleur
382c74fec2 Fix: Error when creating 2 external rss boxes. 2010-08-13 23:34:23 +00:00
Laurent Destailleur
ff6916a5a3 Fix: Error on page when going from some link 2010-08-13 17:42:10 +00:00
Laurent Destailleur
5ab7a296e2 Fix: Removed duplicate button 2010-08-13 17:39:07 +00:00
Laurent Destailleur
81312671e7 Fix: Error in creating line 2010-08-12 22:43:17 +00:00
Laurent Destailleur
35b3f7ed8a Fix: Usage of numbering project ref 2010-08-12 18:51:01 +00:00
Laurent Destailleur
42763321e9 Remove deprecated file 2010-08-12 18:41:28 +00:00
Laurent Destailleur
85c24f4a5f file projects.lang was added on branch DOLIBARR_2_9_BRANCH on 2010-09-04 00:40:48 +0000 2010-08-09 20:45:45 +00:00
Laurent Destailleur
b8b16552ec file boxes.lang was added on branch DOLIBARR_2_9_BRANCH on 2010-09-04 00:40:48 +0000 2010-08-09 20:45:45 +00:00
Laurent Destailleur
8258dd432f file admin.lang was added on branch DOLIBARR_2_9_BRANCH on 2010-09-04 00:40:48 +0000 2010-08-09 20:45:45 +00:00
Laurent Destailleur
ce34028fcd Removed old code 2010-08-09 15:20:36 +00:00
Laurent Destailleur
344b2b38ea For 2.9.1 2010-08-06 16:51:26 +00:00
Laurent Destailleur
f71f33d2da Fix: sql error 2010-08-06 16:14:39 +00:00
Regis Houssin
75506b7794 !!! BUG in 2.9 release !!!
Fix: move llx_product_subproduct to composition module
2010-08-06 12:20:27 +00:00
Laurent Destailleur
c0103034b0 Fix: Use country code 2010-08-05 20:17:44 +00:00
Laurent Destailleur
76b87cd0bb Fix: Bad setup 2010-08-05 19:52:06 +00:00
Regis Houssin
a22bf3fb0a Fix: bad show price 2010-08-05 07:24:13 +00:00
Laurent Destailleur
795d08c14c Removed duplicate entry 2010-08-03 22:11:35 +00:00
Laurent Destailleur
bc954c1a77 file interface_modPhenix_Phenixsynchro.class.php was added on branch DOLIBARR_2_9_BRANCH on 2010-09-15 16:07:27 +0000 2010-05-13 16:32:13 +00:00
Laurent Destailleur
2ee7271c8e file interface_modWebcalendar_Webcalsynchro.class.php was added on branch DOLIBARR_2_9_BRANCH on 2010-09-15 16:07:27 +0000 2010-04-22 20:28:56 +00:00
565 changed files with 57903 additions and 13088 deletions

View File

@@ -1,9 +1,24 @@
English Dolibarr ChangeLog English Dolibarr ChangeLog
***** ChangeLog for 2.9.1 compared to 2.9 *****
For users:
- Fix: Only few bug fixes in GUI.
- Fix: Fix: Error when deleting lock file by doliwamp.
***** ChangeLog for 2.9 compared to 2.8 ***** ***** ChangeLog for 2.9 compared to 2.8 *****
For users: For users:
- New: Can join files on emailing campaigns. - New: POS module allow to choose which warehouse to use.
- New: Support "Department/State" field on company setup, contact,
bank account and members card.
- New: Can reopen a refused/canceled supplier order.
- New: Add Gant diagramm on project module.
- New: Add a new mode for automatic stock increase: Can be increased
on dispatching of products from a supplier order receipt.
- New: Can set a past delay to limit calendar export.
- New: Can attach files on emailing campaigns.
- New: Add statistics on trips and expenses module. - New: Add statistics on trips and expenses module.
- New: Can reopen a closed customer order. - New: Can reopen a closed customer order.
- New: Add module externalsite to add a web site/tools inside - New: Add module externalsite to add a web site/tools inside
@@ -13,10 +28,10 @@ For users:
- New: Can set accountancy code for product (buy and sell). - New: Can set accountancy code for product (buy and sell).
- New: Can filter third parties lists on categories. - New: Can filter third parties lists on categories.
- New: Can filter products and services lists on categories. - New: Can filter products and services lists on categories.
- New: Can use categories for members. - New: task #10202 : Support categories for members.
- New: Can build documents for third parties (Use ODT templates, need PHP 5.2+). - New: Can build documents for third parties (Using ODT templates, need PHP 5.2+).
- New: Support products property length and area. - New: Support new products properties: length and area.
- New: Add "payment due before" field in invoice exports - New: Add the "payment due before" field in invoice exports.
- New: Add feature to resize or crop image files (for products photos) - New: Add feature to resize or crop image files (for products photos)
- New: task #10113 : Show list of emailing on clicking on "number of mass emailing received" - New: task #10113 : Show list of emailing on clicking on "number of mass emailing received"
- New: Add default language for third parties and use it when multilang is enabled - New: Add default language for third parties and use it when multilang is enabled
@@ -25,19 +40,78 @@ For users:
- New: Move permission "see hidden categories" into "see hidden products/services". - New: Move permission "see hidden categories" into "see hidden products/services".
- New: Can delete several files at once in FTP module. - New: Can delete several files at once in FTP module.
- New: Add box "last contracts". - New: Add box "last contracts".
- New: Works even if Web hosting provider has disabled PHP "glob" function.
- New: Can now send supplier orders by email.
- New: task #10076 : Show content of message in notification module.
- New: Bank name is shown on invoice.
- New: IBAN value is called IFSC if country is India.
- New: Add option to choose to show firstname then name or name then firstname on PDF.
- New: Add company in fields exported by export of members tool.
- New: Reorganise bank menus.
- New: Bookmarks can be sorted on a particular order.
- New: Support spanish RE and IRPF taxes on invoices.
- New: Module category offers categories for foundation module.
- New: Can filter on category on third parties, products and members listings.
- New: A flag is visible before country labels.
- New: When activating a new module, permissions for admin user are set. This save
time when configuring Dolibarr.
- New: Dolibarr 2.9 is faster than 2.8.
- New: A lot of more predefined VAT values, states, regions for
miscelaneous contries.
- New: Enhance skin engine to make themes easier.
- New: Add images into menu "eldy".
- New: Auguria theme is now more modern.
- New: Update tools refers to www.dolibarr.org but also www.dolistore.com web site.
- New: Postgresql experimental support seems to work completely.
- New: Changes in Dolibarr core to allow to use cache servers (see Memcached module on
dolistore.com).
- New: Default choice for interactive confirm box is yes by default, and no only for
delete actions. This reduce number of clicks required to validate actions and
is still safe to dangerous actions.
- Fix: Durations are correctly shown for languages using PM/AM dates.
- Fix: A lot of fixes in Point of Sale module.
- Fix: Debug experimental module widthrawal.
- Fix: Format number was wrong for ar_AR language. - Fix: Format number was wrong for ar_AR language.
- Fix: Can change password if has only permission change password. - Fix: Can change password if user has only permission "change password".
- Fix: Project PDF document show the tasks. - Fix: Project PDF document shows all tasks.
- Fix: bug #29278 : SMTP fails with IP - Fix: bug #29278 : SMTP fails with IP instead of hostname.
- Fix: Default language on login page. - Fix: Default language on login page was wrong.
- Fix: Complete support of euros sign (even in PDF).
- Fix: Bad setup of phpMyAdmin for DoliWamp installer.
- Fix: Tracking number should be available on sending sheets.
- Fix: Stock value is not reset when product is transfered into other warehouse.
- Fix: A lot of not tracked bugs fixed.
- Fix: Some fixes in barcode management.
- Fix: Access to phpMyAdmin is now ok on new DoliWamp installation.
For tranlators:
- Fix: Major update of italian translation (it_IT).
- Fix: A lot of translation fixes in all languages.
- New: Added translations (sl_SL, is_IS).
- New: Add translations for the DoliWamp installer.
For developers: For developers:
- More comments in code. - More comments in code.
- Uniformize some code. - Uniformize some code.
- Delete all useless pre.inc.php files. - Delete all useless pre.inc.php files (this also increase speed).
- Fix W3C errors in page forging. - Fix W3C errors in page forging.
- Qual: Mutualize code of menu managers. - Qual: Mutualize code of menu managers.
- Better isolation of modules files and dolibarr core files. - Better isolation of modules files and dolibarr core files.
- Task #8682 : Remove functions unix_timestamp.
- The makepack tool now make pack with UID 500.
- More css class and div to output menu to allow more skins.
- Generated documentation can be build from Eclipse using Doxygen plugin.
- Snapshot is provided with PHPunit tests.
WARNING:
- A lot of class files (*.class.php) has moved into subdirectories. So If you use
or develop non official modules that includes Dolibarr classes, you will have to rename
path to thoose classes into the include function.
- Also, parameters of the "fetch()" method for class "User" has changed to reflect
other fetch methods.
- If you build a personalised themes, you must rename the style sheet into style.css.php.
- This version is also the last one to support PHP 4.*, Mysql 3.1, IE6.
Dolibarr 3.* will be supported with PHP 5+ and MySql 4.1+ only.
***** ChangeLog for 2.8.1 compared to 2.8 ***** ***** ChangeLog for 2.8.1 compared to 2.8 *****
@@ -69,9 +143,9 @@ For users:
- New: Add a default errors-to email for emailing module. - New: Add a default errors-to email for emailing module.
- New: Can filter on user on stock movement list. - New: Can filter on user on stock movement list.
- New: When creating a third party from a member, it is set as a new - New: When creating a third party from a member, it is set as a new
customer. customer.
- New: Can use {tttt} in numbering mask setup. It will be replaced - New: Can use {tttt} in numbering mask setup. It will be replaced
with third party type. with third party type.
- New: VAT number is stored in one field. This is more "international". - New: VAT number is stored in one field. This is more "international".
- New: task #9782 : Add possibility to delete a warehouse. - New: task #9782 : Add possibility to delete a warehouse.
- New: task #9640 : Add label for stock movements. - New: task #9640 : Add label for stock movements.

View File

@@ -4,7 +4,6 @@ Section: web
Priority: optional Priority: optional
Maintainer: Laurent Destailleur <eldy@users.sourceforge.net> Maintainer: Laurent Destailleur <eldy@users.sourceforge.net>
Package: dolibarr Package: dolibarr
Section: web
Architecture: all Architecture: all
Essential: no Essential: no
Depends: wwwconfig-common, apache2, libapache2-mod-php5, php5, php5-cgi, php5-curl, php5-gd, php5-imagick, php5-ldap, php5-mcrypt, php5-mysql, mysql-server, perl Depends: wwwconfig-common, apache2, libapache2-mod-php5, php5, php5-cgi, php5-curl, php5-gd, php5-imagick, php5-ldap, php5-mcrypt, php5-mysql, mysql-server, perl

View File

@@ -12,5 +12,5 @@ $force_install_databaserootlogin='__SUPERUSERLOGIN__';
$force_install_databaserootpass='__SUPERUSERPASSWORD__'; $force_install_databaserootpass='__SUPERUSERPASSWORD__';
$force_install_dolibarrlogin='admin'; $force_install_dolibarrlogin='admin';
$force_install_nophpinfo='1'; $force_install_nophpinfo='1';
$force_install_lockinstall='1'; $force_install_lockinstall='444';
?> ?>

View File

@@ -12,5 +12,5 @@ $force_install_databaserootlogin='root';
$force_install_databaserootpass='root'; $force_install_databaserootpass='root';
$force_install_dolibarrlogin='admin'; $force_install_dolibarrlogin='admin';
$force_install_nophpinfo='1'; $force_install_nophpinfo='1';
$force_install_lockinstall='1'; $force_install_lockinstall='444';
?> ?>

View File

@@ -0,0 +1,42 @@
[CustomMessages]
NameAndVersion=%1 version %2
AdditionalIcons=Ic<49>nes suppl<70>mentaires :
CreateDesktopIcon=Cr<43>er une ic<69>ne sur le &Bureau
CreateQuickLaunchIcon=Cr<43>er une ic<69>ne dans la barre de &Lancement rapide
ProgramOnTheWeb=Page d'accueil de %1
UninstallProgram=D<>sinstaller %1
LaunchProgram=Ex<45>cuter %1
AssocFileExtension=&Associer %1 avec l'extension de fichier %2
AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
YouWillInstallDoliWamp=Vous allez installer ou mettre <20> jour DoliWamp (Apache+Mysql+PHP+Dolibarr) sur votre ordinateur.
ThisAssistantInstallOrUpgrade=Cet assistant installe ou met <20> jour Dolibarr ERP-CRM et tous ses composants pr<70>requis (Apache, Mysql et PHP) optimis<69> pour une utilisation de Dolibarr.
IfYouHaveTechnicalKnowledge=Si vous avez des comp<6D>tences techniques et envisagez de partager votre Apache, Mysql et PHP avec d'autres applications que Dolibarr, vous ne devriez pas utiliser cet assistant mais faire plutot une installation manuelle de Dolibarr sur un socle Apache, Mysql et PHP existant.
ButIfYouLook=Mais si vous recherchez une installation cl<63> en main automatis<69>e, vous <20>tes sur la bonne voie...
DoYouWantToStart=Voulez-vous d<>marrer le processus d'installation/mise <20> jour ?
TechnicalParameters=Param<61>tres techniques
IfFirstInstall=S'il s'agit de la premi<6D>re installation, merci de sp<73>cifier ces quelques param<61>tres techniques. Si vous ne les comprennez pas, <20>tes non surs, ou proc<6F>dez <20> une mise <20> jour, laissez les champs avec les valeurs propos<6F>es par d<>faut.
; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS
SMTPServer=Serveur SMTP (le votre ou celui de votre FAI, premi<6D>re install uniquement) :
ApachePort=Port Apache (premi<6D>re install uniquement, le choix standard est 80) :
MySqlPort=Port Mysql (premi<6D>re install uniquement, le choix standard est 3306) :
MySqlPassword=Mot de passe du serveur et base MySql pour root (premi<6D>re install uniquement):
FailedToDeleteLock=Echec de la suppression du fichier %1/www/dolibarr/install.lock. Vous pouvez ignorer l'avertissement mais il est possible que vous deviez le supprimer manuellement plus tard. Dans ce cas, cela vous sera signal<61>. Cliquer sur OK pour continuer...
PortAlreadyInUse=Le port %1 semble d<>j<EFBFBD> utilis<69>. Il est recommand<6E> d'annuler pour revenir en arri<72>re et sp<73>cifier une autre valeur pour le port %2. Annuler le choix et choisir une autre valeur ?
FirefoxDetected=Firefox a <20>t<EFBFBD> d<>tect<63> sur votre ordinateur. Voulez-vous en faire votre navigateur par d<>faut pour Dolibarr ?
ChooseDefaultBrowser=Merci de choisir votre navigateur par d<>faut. Si vous n'<27>tes pas sur, cliquer simplement sur Ouvrir :
LaunchNow=Lancer Dolibarr maintenant
ProgramHasBeenRemoved=Les fichiers du programe Dolibarr ont <20>t<EFBFBD> supprim<69>s. Toutefois, tous vos fichiers de donn<6E>es sont toujours dans le r<>pertoire $1. Vous devez supprimer ce r<>pertoire manuellement pour avoir une d<>sinstallation compl<70>te.
DoliWampWillStartApacheMysql=L'installeur DoliWamp va maintenant d<>marrer ou red<65>marrer Apache et Mysql, ceci peut durer de quelques secondes <20> une minute apr<70>s cette confirmation. D<>marrer l'installation ou mise <20> jour du serveur web et base de donn<6E>es requis par Dolibarr ?

View File

@@ -18,13 +18,14 @@
; ----- Change this ----- ; ----- Change this -----
AppName=DoliWamp AppName=DoliWamp
; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta ; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
AppVerName=DoliWamp-2.9.0-alpha AppVerName=DoliWamp-2.9.0
; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta ; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
OutputBaseFilename=DoliWamp-2.9.0-alpha OutputBaseFilename=DoliWamp-2.9.0
; Define full path from wich all relative path are defined ; Define full path from wich all relative path are defined
; You must modify this to put here your dolibarr root directory ; You must modify this to put here your dolibarr root directory
SourceDir=D:\Mes developpements\dolibarr SourceDir=D:\Mes developpements\dolibarrold
; ----- End of change ; ----- End of change
;OutputManifestFile=build\doliwampbuild.log
AppId=doliwamp AppId=doliwamp
AppPublisher=NLTechno AppPublisher=NLTechno
AppPublisherURL=http://www.nltechno.com AppPublisherURL=http://www.nltechno.com
@@ -41,17 +42,40 @@ SolidCompression=yes
WizardImageFile=build\exe\doliwamp\doliwamp.bmp WizardImageFile=build\exe\doliwamp\doliwamp.bmp
WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp
SetupIconFile=doc\images\dolibarr.ico SetupIconFile=doc\images\dolibarr.ico
PrivilegesRequired=poweruser PrivilegesRequired=admin
DisableProgramGroupPage=yes DisableProgramGroupPage=yes
ChangesEnvironment=no ChangesEnvironment=no
CreateUninstallRegKey=yes CreateUninstallRegKey=yes
;UseSetupLdr=no
;UninstallDisplayIcon={app}\bidon ;UninstallDisplayIcon={app}\bidon
OutputDir=build OutputDir=build
ShowLanguageDialog=auto
ShowUndisplayableLanguages=no
;LanguageDetectionMethod=none
LanguageDetectionMethod=uilanguage
;SignedUninstaller=yes
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl,build\exe\doliwamp\Languages\MyEnglish.isl"
Name: "br"; MessagesFile: "compiler:Languages\Portuguese.isl,build\exe\doliwamp\Languages\MyBrazilianPortuguese.isl"
Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl,build\exe\doliwamp\Languages\MyCatalan.isl"
Name: "da"; MessagesFile: "compiler:Languages\Danish.isl,build\exe\doliwamp\Languages\MyDanish.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl,build\exe\doliwamp\Languages\MySpanish.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,build\exe\doliwamp\Languages\MyDutch.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl,build\exe\doliwamp\Languages\MyFinnish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl,build\exe\doliwamp\Languages\MyFrench.isl"
Name: "ge"; MessagesFile: "compiler:Languages\German.isl,build\exe\doliwamp\Languages\MyGerman.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl,build\exe\doliwamp\Languages\MyItalian.isl"
Name: "nb"; MessagesFile: "compiler:Languages\Norwegian.isl,build\exe\doliwamp\Languages\MyNorwegian.isl"
Name: "po"; MessagesFile: "compiler:Languages\Polish.isl,build\exe\doliwamp\Languages\MyPolish.isl"
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl,build\exe\doliwamp\Languages\MyPortuguese.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl,build\exe\doliwamp\Languages\MyRussian.isl"
Name: "sv"; MessagesFile: "compiler:Languages\Slovenian.isl,build\exe\doliwamp\Languages\MySlovenian.isl"
[Tasks] [Tasks]
;Name: "autostart"; Description: "Automatically launch DoliWamp server on startup. If you check this option, Services will be installed as automatic. Otherwise, services will be installed as manual and will start and stop with the service manager."; GroupDescription: "Auto Start:" ;Flags: unchecked; ;Name: "autostart"; Description: "Automatically launch DoliWamp server on startup. If you check this option, Services will be installed as automatic. Otherwise, services will be installed as manual and will start and stop with the service manager."; GroupDescription: "Auto Start:" ;Flags: unchecked;
Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Flags: unchecked Name: "quicklaunchicon"; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: "desktopicon"; Description: "Create a &Desktop icon"; GroupDescription: "Additional icons:"; Flags: unchecked Name: "desktopicon"; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Dirs] [Dirs]
Name: "{app}\logs" Name: "{app}\logs"
@@ -163,7 +187,7 @@ var value: String;
//procedures lancees au debut de l'installation //procedures lancees au debut de l'installation
function InitializeSetup(): Boolean; function InitializeSetup(): Boolean;
begin begin
Result := MsgBox('You will install or upgrade DoliWamp (Apache+Mysql+PHP+Dolibarr) on your computer.' #13#13 'This assistant installs or upgrades Dolibarr ERP-CRM and all required third party softwares (Apache, Mysql and PHP) optimized for a Dolibarr usage.' #13#13 'If you have technical knowledge and plan to share your Apache, Mysql and PHP with other projects than Dolibarr, you should not use this assistant and make a manual installation of Dolibarr on your existing Apache, Mysql and PHP installation.' #13#13 'But if you look for an automatic setup, you''re on the good way...' #13#13 'Do you want to start installation/upgrade process ?', mbConfirmation, MB_YESNO) = IDYES; Result := MsgBox(CustomMessage('YouWillInstallDoliWamp')+#13#13+CustomMessage('ThisAssistantInstallOrUpgrade')+#13#13+CustomMessage('IfYouHaveTechnicalKnowledge')+#13#13+CustomMessage('ButIfYouLook')+#13#13+CustomMessage('DoYouWantToStart'), mbConfirmation, MB_YESNO) = IDYES;
end; end;
procedure InitializeWizard(); procedure InitializeWizard();
@@ -230,24 +254,24 @@ begin
// Prepare an object calle "Page" of type wpInstalling. // Prepare an object calle "Page" of type wpInstalling.
// Object will be show later in NextButtonClick function. // Object will be show later in NextButtonClick function.
Page := CreateInputQueryPage(wpInstalling, Page := CreateInputQueryPage(wpInstalling,
'Technical parameters', '', CustomMessage('TechnicalParameters'), '',
'If first install, please specify some technical parameters. If you don''t understand, are not sure, or are doing an upgrade, just leave the default values.'); CustomMessage('IfFirstInstall'));
// TODO Add control differently if first install or update // TODO Add control differently if first install or update
if firstinstall if firstinstall
then then
begin begin
Page.Add('SMTP server (your own or ISP SMTP server, first install only) :', False); Page.Add(CustomMessage('SMTPServer'), False);
Page.Add('Apache port (first install only, common choice is 80) :', False); Page.Add(CustomMessage('ApachePort'), False);
Page.Add('Mysql port (first install only, common choice is 3306) :', False); Page.Add(CustomMessage('MySqlPort'), False);
Page.Add('Mysql server and database password you want for root (first install only):', False); Page.Add(CustomMessage('MySqlPassword'), False);
end end
else else
begin begin
Page.Add('SMTP server (your own or ISP SMTP server, first install only) :', False); Page.Add(CustomMessage('SMTPServer'), False);
Page.Add('Apache port (first install only, common choice is 80) :', False); Page.Add(CustomMessage('ApachePort'), False);
Page.Add('Mysql port (first install only, common choice is 3306) :', False); Page.Add(CustomMessage('MySqlPort'), False);
Page.Add('Mysql server and database password you want for root (first install only):', False); Page.Add(CustomMessage('MySqlPassword'), False);
end; end;
// Default values // Default values
@@ -293,7 +317,6 @@ begin
if CurPageID = Page.ID then if CurPageID = Page.ID then
begin begin
// This must be in if curpage.id = page.id, otherwise it is executed after each Next button // This must be in if curpage.id = page.id, otherwise it is executed after each Next button
//---------------------------------------------- //----------------------------------------------
@@ -343,12 +366,11 @@ begin
lockfile := pathWithSlashes+'/www/dolibarr/install.lock'; lockfile := pathWithSlashes+'/www/dolibarr/install.lock';
if FileExists (lockfile) and not DeleteFile(lockfile) then if FileExists (lockfile) and not DeleteFile(lockfile) then
begin begin
themessage := 'Failed to delete file '+pathWithSlashes+'/www/dolibarr/install.lock. You may have to remove it manually later when asked. Click OK to continue...'; themessage := FmtMessage(CustomMessage('FailedToDeleteLock'),[pathWithSlashes]);
MsgBox(themessage,mbInformation,MB_OK) MsgBox(themessage,mbInformation,MB_OK);
end end
// Check if parameters already defined in conf.php file // Check if parameters already defined in conf.php file
srcFile := pathWithSlashes+'/www/dolibarr/htdocs/conf/conf.php'; srcFile := pathWithSlashes+'/www/dolibarr/htdocs/conf/conf.php';
if not FileExists (srcFile) then if not FileExists (srcFile) then
@@ -393,7 +415,7 @@ begin
// paramok := False; // paramok := False;
// end; // end;
// end; // end;
if paramok then if paramok then
begin begin
// Test port Apache // Test port Apache
@@ -401,7 +423,7 @@ begin
//MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO) //MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO)
Exec(batFile, '-s localhost -p '+myporta, path+'\', SW_HIDE, ewWaitUntilTerminated, myResult); Exec(batFile, '-s localhost -p '+myporta, path+'\', SW_HIDE, ewWaitUntilTerminated, myResult);
//themessage := 'Le port '+myporta+' semble deja pris. Revenez en arriere pour choisir une autre valeur pour le port Apache.'; //themessage := 'Le port '+myporta+' semble deja pris. Revenez en arriere pour choisir une autre valeur pour le port Apache.';
themessage := 'Port '+myporta+' seems to be already in use. Go back to choose another value for Apache port. Cancel choice and choose another value ?'; themessage := FmtMessage(CustomMessage('PortAlreadyInUse'),[myporta,'Apache']);
if ((IntToStr(myResult) = '0') and (MsgBox(themessage,mbConfirmation,MB_YESNO) = IDYES)) then if ((IntToStr(myResult) = '0') and (MsgBox(themessage,mbConfirmation,MB_YESNO) = IDYES)) then
begin begin
paramok := False; paramok := False;
@@ -415,7 +437,7 @@ begin
//MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO) //MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO)
Exec(batFile, '-s localhost -p '+myport, path+'\', SW_HIDE, ewWaitUntilTerminated, myResult); Exec(batFile, '-s localhost -p '+myport, path+'\', SW_HIDE, ewWaitUntilTerminated, myResult);
//themessage := 'Le port '+myport+' semble deja pris. Revenez en arriere pour choisir une autre valeur pour le port MySQL.'; //themessage := 'Le port '+myport+' semble deja pris. Revenez en arriere pour choisir une autre valeur pour le port MySQL.';
themessage := 'Port '+myport+' seems to be already in use. Go back to choose another value for MySQL port. Cancel choice and choose another value ?'; themessage := FmtMessage(CustomMessage('PortAlreadyInUse'),[myport,'MySql']);
if ((IntToStr(myResult) = '0') and (MsgBox(themessage,mbConfirmation,MB_YESNO) = IDYES)) then if ((IntToStr(myResult) = '0') and (MsgBox(themessage,mbConfirmation,MB_YESNO) = IDYES)) then
begin begin
paramok := False; paramok := False;
@@ -469,37 +491,37 @@ begin
browser := 'iexplore.exe'; browser := 'iexplore.exe';
if FileExists (pfPath+'/Mozilla Firefox/firefox.exe') then if FileExists (pfPath+'/Mozilla Firefox/firefox.exe') then
begin begin
if MsgBox('Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?',mbConfirmation,MB_YESNO) = IDYES then if MsgBox(CustomMessage('FirefoxDetected'),mbConfirmation,MB_YESNO) = IDYES then
begin begin
browser := pfPath+'/Mozilla Firefox/firefox.exe'; browser := pfPath+'/Mozilla Firefox/firefox.exe';
end; end;
end; end;
if browser = 'iexplore.exe' then if browser = 'iexplore.exe' then
begin begin
GetOpenFileName('Please choose your default browser. If you are not sure, just click Open :', browser, winPath,'exe files (*.exe)|*.exe|All files (*.*)|*.*' ,'exe'); GetOpenFileName(CustomMessage('ChooseDefaultBrowser'), browser, winPath,'exe files (*.exe)|*.exe|All files (*.*)|*.*' ,'exe');
end; end;
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPBROWSER', browser); StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
LoadStringFromFile (srcFileH, srcContents); LoadStringFromFile (srcFileH, srcContents);
StringChange (srcContents, 'WAMPBROWSER', browser); StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFileH,srcContents, False); SaveStringToFile(destFileH,srcContents, False);
LoadStringFromFile (srcFileA, srcContents); LoadStringFromFile (srcFileA, srcContents);
StringChange (srcContents, 'WAMPBROWSER', browser); StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFileA,srcContents, False); SaveStringToFile(destFileA,srcContents, False);
end end
if MsgBox('DoliWamp installer will now start or restart Apache and Mysql, this may last from several seconds to one minute after this confirmation.' #13#13 'Start to install or upgrade the web server and database server required by Dolibarr ?',mbConfirmation,MB_YESNO) = IDYES then if MsgBox(CustomMessage('DoliWampWillStartApacheMysql'),mbConfirmation,MB_YESNO) = IDYES then
begin begin
@@ -515,8 +537,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//installDir et version de phpmyadmin //installDir et version de phpmyadmin
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPPHPMYADMINVERSION', phpmyadminVersion); StringChangeEx (srcContents, 'WAMPPHPMYADMINVERSION', phpmyadminVersion, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -535,8 +557,8 @@ begin
begin begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass); StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
SaveStringToFile(destFile, srcContents, False); SaveStringToFile(destFile, srcContents, False);
end end
@@ -556,7 +578,8 @@ begin
begin begin
// sinon on prends le fichier par defaut // sinon on prends le fichier par defaut
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass); StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -574,10 +597,10 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//installDir et version de php //installDir et version de php
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion); StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -597,8 +620,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//installDir et version de php //installDir et version de php
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPMYSQLPORT', myport); StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -616,22 +639,22 @@ begin
if not FileExists (destFile) then if not FileExists (destFile) then
begin begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion); StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFile, srcContents, False); SaveStringToFile(destFile, srcContents, False);
end end
else else
begin begin
RenameFile(destFile, destFile+'.old'); RenameFile(destFile, destFile+'.old');
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion); StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
StringChange (srcContents, 'WAMPAPACHEPORT', myporta); StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas); StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
SaveStringToFile(destFile, srcContents, False); SaveStringToFile(destFile, srcContents, False);
end end
@@ -650,10 +673,10 @@ begin
begin begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPMYSQLPORT', myport); StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass); StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -672,8 +695,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -692,8 +715,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -713,8 +736,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -733,9 +756,9 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPMYSQLPORT', myport); StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass); StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -753,10 +776,10 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPMYSQLPORT', myport); StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -774,10 +797,10 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion); StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
StringChange (srcContents, 'WAMPMYSQLPORT', myport); StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -795,8 +818,8 @@ begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
//version de apache et mysql //version de apache et mysql
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion); StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -812,8 +835,8 @@ begin
if not FileExists (destFile) and FileExists(srcFile) then if not FileExists (destFile) and FileExists(srcFile) then
begin begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPSMTP', mysmtp); StringChangeEx (srcContents, 'WAMPSMTP', mysmtp, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -827,8 +850,8 @@ begin
if not FileExists (destFile) and FileExists(srcFile) then if not FileExists (destFile) and FileExists(srcFile) then
begin begin
LoadStringFromFile (srcFile, srcContents); LoadStringFromFile (srcFile, srcContents);
StringChange (srcContents, 'WAMPROOT', pathWithSlashes); StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
StringChange (srcContents, 'WAMPSMTP', mysmtp); StringChangeEx (srcContents, 'WAMPSMTP', mysmtp, True);
SaveStringToFile(destFile,srcContents, False); SaveStringToFile(destFile,srcContents, False);
end end
@@ -925,13 +948,13 @@ begin
pathWithSlashes := path; pathWithSlashes := path;
StringChange (pathWithSlashes, '\','/'); StringChange (pathWithSlashes, '\','/');
MsgBox('Dolibarr program files have been removed. However, all your old data files are still in directory '+path+'. You must remove this directory manually for a complete uninstall.',mbInformation,MB_OK); MsgBox(FmtMessage(CustomMessage('ProgramHasBeenRemoved'),[path]),mbInformation,MB_OK);
end; end;
[Run] [Run]
; Launch Dolibarr in browser. This is run after Wizard because of postinstall flag ; Launch Dolibarr in browser. This is run after Wizard because of postinstall flag
Filename: "{app}\rundoliwamp.bat"; Description: "Launch Dolibarr now"; Flags: shellexec postinstall skipifsilent runhidden Filename: "{app}\rundoliwamp.bat"; Description: {cm:LaunchNow}; Flags: shellexec postinstall skipifsilent runhidden
[UninstallDelete] [UninstallDelete]

View File

@@ -12,5 +12,5 @@ $force_install_databaserootlogin='root';
$force_install_databaserootpass='WAMPMYSQLNEWPASSWORD'; $force_install_databaserootpass='WAMPMYSQLNEWPASSWORD';
$force_install_dolibarrlogin='admin'; $force_install_dolibarrlogin='admin';
$force_install_nophpinfo='1'; $force_install_nophpinfo='1';
$force_install_lockinstall='1'; $force_install_lockinstall='644';
?> ?>

View File

@@ -690,7 +690,7 @@ extension=php_pgsql.dll
;extension=php_pspell.dll ;extension=php_pspell.dll
extension=php_shmop.dll extension=php_shmop.dll
;extension=php_snmp.dll ;extension=php_snmp.dll
;extension=php_soap.dll extension=php_soap.dll
extension=php_sockets.dll extension=php_sockets.dll
extension=php_sqlite.dll extension=php_sqlite.dll
;extension=php_sybase_ct.dll ;extension=php_sybase_ct.dll

View File

@@ -14,10 +14,12 @@
class langAutoParser { class langAutoParser {
private $translatedFiles = array(); private $translatedFiles = array();
private $destLang = string; private $destLang = '';
private $refLang = string; private $refLang = '';
private $langDir = string; private $langDir = '';
private $limittofile = string; private $limittofile = '';
private $time;
private $time_end;
private $outputpagecode = 'UTF-8'; private $outputpagecode = 'UTF-8';
//private $outputpagecode = 'ISO-8859-1'; //private $outputpagecode = 'ISO-8859-1';
const DIR_SEPARATOR = '/'; const DIR_SEPARATOR = '/';
@@ -46,42 +48,77 @@ class langAutoParser {
if ($this->limittofile && $this->limittofile != $file) continue; if ($this->limittofile && $this->limittofile != $file) continue;
$counter++; $counter++;
$fileContent = null; $fileContent = null;
$this->translatedFiles = array();
$refPath = $this->langDir.$this->refLang.self::DIR_SEPARATOR.$file; $refPath = $this->langDir.$this->refLang.self::DIR_SEPARATOR.$file;
$destPath = $this->langDir.$this->destLang.self::DIR_SEPARATOR.$file; $fileContent = file($refPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
$fileContent = file($refPath,FILE_IGNORE_NEW_LINES | print "Processing file " . $file . ", with ".sizeof($fileContent)." lines<br>\n";
FILE_SKIP_EMPTY_LINES);
print "Processing file " . $file . ", found ".sizeof($fileContent)." records<br>\n"; // Define target dirs
// Check destination file presence $targetlangs=array($this->destLang);
if ( ! file_exists( $destPath ) ){ if ($this->destLang == 'all')
// No file presente generate file {
echo "File not found: " . $file . "<br>\n"; $targetlangs=array();
echo "Generating file " . $file . "<br>\n";
$this->createTranslationFile($destPath); // If we must process all languages
} $arraytmp=dol_dir_list($this->langDir,'directories',0);
// Translate lines foreach($arraytmp as $dirtmp)
$fileContentDest = file($destPath,FILE_IGNORE_NEW_LINES |
FILE_SKIP_EMPTY_LINES);
$newlines=0;
foreach($fileContent as $line){
$key = $this->getLineKey($line);
$value = $this->getLineValue($line);
if ($key && $value)
{ {
$newlines+=$this->translateFileLine($fileContentDest,$file,$key,$value); if ($dirtmp['name'] === $this->refLang) continue; // We discard source language
$tmppart=explode('_',$dirtmp['name']);
if (preg_match('/^en/i',$dirtmp['name'])) continue; // We discard en_* languages
if (preg_match('/^fr/i',$dirtmp['name'])) continue; // We discard fr_* languages
if (preg_match('/^es/i',$dirtmp['name'])) continue; // We discard es_* languages
if (preg_match('/ca_ES/i',$dirtmp['name'])) continue; // We discard es_CA language
if (preg_match('/pt_BR/i',$dirtmp['name'])) continue; // We discard pt_BR language
if (preg_match('/^\./i',$dirtmp['name'])) continue; // We discard files .*
if (preg_match('/^CVS/i',$dirtmp['name'])) continue; // We discard CVS
$targetlangs[]=$dirtmp['name'];
} }
//var_dump($targetlangs);
} }
$this->updateTranslationFile($destPath,$file); // Process translation of source file for each target languages
echo "New translated lines: " . $newlines . "<br>\n"; foreach($targetlangs as $mydestLang)
#if ($counter ==3) die('fim'); {
$this->translatedFiles = array();
$destPath = $this->langDir.$mydestLang.self::DIR_SEPARATOR.$file;
// Check destination file presence
if ( ! file_exists( $destPath ) ){
// No file present, we generate file
echo "File not found: " . $destPath . ". We generate it.<br>\n";
$this->createTranslationFile($destPath,$mydestLang);
}
else
{
echo "Updating file: " . $destPath . "<br>\n";
}
// Translate lines
$fileContentDest = file($destPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
$newlines=0;
foreach($fileContent as $line){
$key = $this->getLineKey($line);
$value = $this->getLineValue($line);
if ($key && $value)
{
$newlines+=$this->translateFileLine($fileContentDest,$file,$key,$value,$mydestLang);
}
}
$this->updateTranslationFile($destPath,$file);
echo "New translated lines: " . $newlines . "<br>\n";
#if ($counter ==3) die('fim');
}
} }
} }
private function updateTranslationFile($destPath,$file){ private function updateTranslationFile($destPath,$file)
{
$this->time_end = date('Y-m-d H:i:s');
if (count($this->translatedFiles[$file])>0){ if (count($this->translatedFiles[$file])>0)
{
$fp = fopen($destPath, 'a'); $fp = fopen($destPath, 'a');
fwrite($fp, "\r\n"); fwrite($fp, "\r\n");
fwrite($fp, "\r\n"); fwrite($fp, "\r\n");
@@ -90,16 +127,16 @@ FILE_SKIP_EMPTY_LINES);
foreach( $this->translatedFiles[$file] as $line) { foreach( $this->translatedFiles[$file] as $line) {
fwrite($fp, $line . "\r\n"); fwrite($fp, $line . "\r\n");
} }
fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->time.").\r\n"); fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->time_end.").\r\n");
fclose($fp); fclose($fp);
} }
return; return;
} }
private function createTranslationFile($path){ private function createTranslationFile($path,$mydestlang){
$fp = fopen($path, 'w+'); $fp = fopen($path, 'w+');
fwrite($fp, "/*\r\n"); fwrite($fp, "/*\r\n");
fwrite($fp, " * Language code: {$this->destLang}\r\n"); fwrite($fp, " * Language code: {$mydestlang}\r\n");
fwrite($fp, " * Automatic generated via autotranslator.php tool\r\n"); fwrite($fp, " * Automatic generated via autotranslator.php tool\r\n");
fwrite($fp, " * Generation date " . $this->time. "\r\n"); fwrite($fp, " * Generation date " . $this->time. "\r\n");
fwrite($fp, " */\r\n"); fwrite($fp, " */\r\n");
@@ -108,15 +145,17 @@ FILE_SKIP_EMPTY_LINES);
} }
/** /**
* Put in array translation of a key * Put in array translatedFiles[$file], line of a new tranlated pair
* *
* @param unknown_type $content Existing content of dest file * @param $content Existing content of dest file
* @param unknown_type $file File name translated (xxxx.lang) * @param $file Target file name translated (xxxx.lang)
* @param unknown_type $key Key to translate * @param $key Key to translate
* @param unknown_type $value Existing key in source file * @param $value Existing value in source file
* @return int 0=Nothing translated, 1=Record translated * @param string Language code (ie: fr_FR)
* @return int 0=Nothing translated, 1=Record translated
*/ */
private function translateFileLine($content,$file,$key,$value){ private function translateFileLine($content,$file,$key,$value,$mydestLang)
{
//print "key =".$key."\n"; //print "key =".$key."\n";
foreach( $content as $line ) { foreach( $content as $line ) {
@@ -125,16 +164,24 @@ FILE_SKIP_EMPTY_LINES);
// If translated return // If translated return
//print "destKey=".$destKey."\n"; //print "destKey=".$destKey."\n";
if ( trim($destKey) == trim($key) ) if ( trim($destKey) == trim($key) )
{ // Found already existing translation { // Found already existing translation (key already exits in dest file)
return 0; return 0;
} }
} }
// If not translated then translate
if ($this->outputpagecode == 'UTF-8') $val=$this->translateTexts(array($value),substr($this->refLang,0,2),substr($this->destLang,0,2));
else $val=utf8_decode($this->translateTexts(array($value),substr($this->refLang,0,2),substr($this->destLang,0,2)));
if ($key == 'CHARSET') $val=$this->outputpagecode; if ($key == 'CHARSET') $val=$this->outputpagecode;
else if (preg_match('/^Format/',$key)) $val=$value;
else if ($value=='-') $val=$value;
else
{
// If not translated then translate
if ($this->outputpagecode == 'UTF-8') $val=$this->translateTexts(array($value),substr($this->refLang,0,2),substr($mydestLang,0,2));
else $val=utf8_decode($this->translateTexts(array($value),substr($this->refLang,0,2),substr($mydestLang,0,2)));
}
$val=trim($val);
if (empty($val)) return 0;
$this->translatedFiles[$file][] = $key . '=' . $val ; $this->translatedFiles[$file][] = $key . '=' . $val ;
return 1; return 1;
@@ -162,8 +209,15 @@ FILE_SKIP_EMPTY_LINES);
return $files; return $files;
} }
private function translateTexts($src_texts = array(), $src_lang, /**
$dest_lang){ * Return translation of a value
*
* @param $src_texts Array with one value
* @param $src_lang
* @param $dest_lang
* @return string Value translated
*/
private function translateTexts($src_texts = array(), $src_lang, $dest_lang){
$tmp=explode('_',$src_lang); $tmp=explode('_',$src_lang);
if ($tmp[0] == $tmp[1]) $src_lang=$tmp[0]; if ($tmp[0] == $tmp[1]) $src_lang=$tmp[0];
@@ -175,9 +229,9 @@ $dest_lang){
$lang_pair = $src_lang.'|'.$dest_lang; $lang_pair = $src_lang.'|'.$dest_lang;
$src_texts_query = ""; $src_texts_query = "";
foreach ($src_texts as $src_text){ $src_text_to_translate=preg_replace('/%s/','SSSSS',join('',$src_texts));
$src_texts_query .= "&q=".urlencode($src_text);
} $src_texts_query .= "&q=".urlencode($src_text_to_translate);
$url = $url =
"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0".$src_texts_query."&langpair=".urlencode($lang_pair); "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0".$src_texts_query."&langpair=".urlencode($lang_pair);
@@ -185,6 +239,8 @@ $dest_lang){
// sendRequest // sendRequest
// note how referer is set manually // note how referer is set manually
//print "Url to translate: ".$url."\n";
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@@ -196,24 +252,16 @@ $dest_lang){
$json = json_decode($body, true); $json = json_decode($body, true);
if ($json['responseStatus'] != 200){ if ($json['responseStatus'] != 200){
print "Error: ".$json['responseStatus']." ".$url."\n";
return false; return false;
} }
$results = $json['responseData']; $rep=$json['responseData']['translatedText'];
$rep=preg_replace('/SSSSS/','%s',$rep);
$return_array = array(); //print "OK ".join('',$src_texts).' => '.$rep."\n";
foreach ($results as $result){ return $rep;
if ($result['responseStatus'] == 200){
$return_array[] = $result['responseData']['translatedText'];
} else {
$return_array[] = false;
}
}
//return translated text
#return $return_array;
return $json['responseData']['translatedText'];
} }
} }

View File

@@ -20,13 +20,13 @@
/** /**
* \file htdocs/adherents/cartes/carte.php * \file htdocs/adherents/cartes/carte.php
* \ingroup adherent * \ingroup member
* \brief Page to output members business cards * \brief Page to output members business cards
* \version $Id$ * \version $Id$
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/includes/modules/member/cards/modules_cards.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/member/cards/modules_cards.php");
@@ -94,7 +94,7 @@ if ($result)
$objp->ville, $objp->ville,
$objp->pays, $objp->pays,
$objp->email, $objp->email,
$objp->naiss, dol_print_date($objp->naiss,'day'),
$objp->type, $objp->type,
$objp->rowid, $objp->rowid,
$year, $year,

File diff suppressed because it is too large Load Diff

View File

@@ -30,12 +30,12 @@ require_once(DOL_DOCUMENT_ROOT."/lib/member.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent_type.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent_options.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/cotisation.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formcompany.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php");
$langs->load("companies"); $langs->load("companies");
$langs->load("bills"); $langs->load("bills");
@@ -144,7 +144,7 @@ if ($_POST['action'] == 'setsocid')
$thirdparty=new Societe($db); $thirdparty=new Societe($db);
$thirdparty->fetch($_POST["socid"]); $thirdparty->fetch($_POST["socid"]);
$error++; $error++;
$mesg='<div class="error">'.$langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->fullname,$othermember->login,$thirdparty->nom).'</div>'; $mesg='<div class="error">'.$langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->nom).'</div>';
} }
} }
@@ -212,6 +212,8 @@ if ($_REQUEST["action"] == 'confirm_sendinfo' && $_REQUEST["confirm"] == 'yes')
if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer) if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
$datenaiss=''; $datenaiss='';
if (isset($_POST["naissday"]) && $_POST["naissday"] if (isset($_POST["naissday"]) && $_POST["naissday"]
&& isset($_POST["naissmonth"]) && $_POST["naissmonth"] && isset($_POST["naissmonth"]) && $_POST["naissmonth"]
@@ -229,7 +231,6 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
$adh->civilite_id = trim($_POST["civilite_id"]); $adh->civilite_id = trim($_POST["civilite_id"]);
$adh->prenom = trim($_POST["prenom"]); $adh->prenom = trim($_POST["prenom"]);
$adh->nom = trim($_POST["nom"]); $adh->nom = trim($_POST["nom"]);
$adh->fullname = trim($adh->prenom.' '.$adh->nom);
$adh->login = trim($_POST["login"]); $adh->login = trim($_POST["login"]);
$adh->pass = trim($_POST["pass"]); $adh->pass = trim($_POST["pass"]);
@@ -237,7 +238,9 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
$adh->adresse = trim($_POST["adresse"]); $adh->adresse = trim($_POST["adresse"]);
$adh->cp = trim($_POST["cp"]); $adh->cp = trim($_POST["cp"]);
$adh->ville = trim($_POST["ville"]); $adh->ville = trim($_POST["ville"]);
$adh->pays_id = $_POST["pays"];
$adh->fk_departement = $_POST["departement_id"];
$adh->pays_id = $_POST["pays"];
$adh->phone = trim($_POST["phone"]); $adh->phone = trim($_POST["phone"]);
$adh->phone_perso = trim($_POST["phone_perso"]); $adh->phone_perso = trim($_POST["phone_perso"]);
@@ -251,7 +254,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
$adh->amount = $_POST["amount"]; $adh->amount = $_POST["amount"];
$adh->photo = $_FILES['photo']['name']; $adh->photo = ($_FILES['photo']['name']?$_FILES['photo']['name']:$adh->oldcopy->photo);
// Get status and public property // Get status and public property
$adh->statut = $_POST["statut"]; $adh->statut = $_POST["statut"];
@@ -284,7 +287,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
$result=$adh->update($user,0,$nosyncuser,$nosyncuserpass); $result=$adh->update($user,0,$nosyncuser,$nosyncuserpass);
if ($result >= 0 && ! sizeof($adh->errors)) if ($result >= 0 && ! sizeof($adh->errors))
{ {
if (isset($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name'])) if (!empty($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name']))
{ {
$dir= $conf->adherent->dir_output . '/' . get_exdir($adh->id,2,0,1); $dir= $conf->adherent->dir_output . '/' . get_exdir($adh->id,2,0,1);
@@ -293,7 +296,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
if (@is_dir($dir)) if (@is_dir($dir))
{ {
$newfile=$dir.'/'.$_FILES['photo']['name']; $newfile=$dir.'/'.$_FILES['photo']['name'];
if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1) > 0) if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1,0,$_FILES['photo']['error']) > 0)
{ {
$message .= '<div class="error">'.$langs->trans("ErrorFailedToSaveFile").'</div>'; $message .= '<div class="error">'.$langs->trans("ErrorFailedToSaveFile").'</div>';
} }
@@ -355,6 +358,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$adresse=$_POST["adresse"]; $adresse=$_POST["adresse"];
$cp=$_POST["cp"]; $cp=$_POST["cp"];
$ville=$_POST["ville"]; $ville=$_POST["ville"];
$departement_id=$_POST["departement_id"];
$pays_id=$_POST["pays_id"]; $pays_id=$_POST["pays_id"];
$phone=$_POST["phone"]; $phone=$_POST["phone"];
@@ -379,6 +383,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$adh->adresse = $adresse; $adh->adresse = $adresse;
$adh->cp = $cp; $adh->cp = $cp;
$adh->ville = $ville; $adh->ville = $ville;
$adh->fk_departement = $departement_id;
$adh->pays_id = $pays_id; $adh->pays_id = $pays_id;
$adh->phone = $phone; $adh->phone = $phone;
$adh->phone_perso = $phone_perso; $adh->phone_perso = $phone_perso;
@@ -466,7 +471,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
$crowid=$adh->cotisation($datecotisation, $cotisation); $crowid=$adh->cotisation($datecotisation, $cotisation);
// insertion dans la gestion banquaire si configure pour // insertion dans la gestion banquaire si configure pour
if ($global->conf->ADHERENT_BANK_USE) if ($conf->global->ADHERENT_BANK_USE)
{ {
$dateop=time(); $dateop=time();
$amount=$cotisation; $amount=$cotisation;
@@ -658,6 +663,8 @@ $htmlcompany = new FormCompany($db);
// fetch optionals attributes and labels // fetch optionals attributes and labels
$adho->fetch_name_optionals_label(); $adho->fetch_name_optionals_label();
$countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')';
if ($action == 'edit') if ($action == 'edit')
{ {
@@ -680,9 +687,24 @@ if ($action == 'edit')
$adht->fetch($adh->typeid); $adht->fetch($adh->typeid);
/* // We set pays_id, and pays_code label of the chosen country
* Affichage onglets if (isset($_POST["pays"]) || $adh->pays_id)
*/ {
$sql = "SELECT rowid, code, libelle from ".MAIN_DB_PREFIX."c_pays where rowid = ".(isset($_POST["pays"])?$_POST["pays"]:$adh->pays_id);
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
}
else
{
dol_print_error($db);
}
$adh->pays_id=$obj->rowid;
$adh->pays_code=$obj->code;
$adh->pays=$langs->trans("Country".$obj->code)?$langs->trans("Country".$obj->code):$obj->libelle;
}
$head = member_prepare_head($adh); $head = member_prepare_head($adh);
dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user'); dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user');
@@ -694,11 +716,11 @@ if ($action == 'edit')
if ($mesg) print '<div class="ok">'.$mesg.'</div>'; if ($mesg) print '<div class="ok">'.$mesg.'</div>';
$rowspan=15; $rowspan=17;
$rowspan+=sizeof($adho->attribute_label); $rowspan+=sizeof($adho->attribute_label);
if ($conf->societe->enabled) $rowspan++; if ($conf->societe->enabled) $rowspan++;
print '<form name="update" action="'.$_SERVER["PHP_SELF"].'" method="post" enctype="multipart/form-data">'; print '<form name="formsoc" action="'.$_SERVER["PHP_SELF"].'" method="post" enctype="multipart/form-data">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"update\">"; print "<input type=\"hidden\" name=\"action\" value=\"update\">";
print "<input type=\"hidden\" name=\"rowid\" value=\"$rowid\">"; print "<input type=\"hidden\" name=\"rowid\" value=\"$rowid\">";
@@ -713,20 +735,20 @@ if ($action == 'edit')
$morphys["phy"] = $langs->trans("Physical"); $morphys["phy"] = $langs->trans("Physical");
$morphys["mor"] = $langs->trans("Morale"); $morphys["mor"] = $langs->trans("Morale");
print '<tr><td><span class="fieldrequired">'.$langs->trans("Person").'</span></td><td colspan="2">'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Person").'</span></td><td colspan="2">';
$html->select_array("morphy", $morphys, $adh->morphy); $html->select_array("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy);
print "</td></tr>"; print "</td></tr>";
// Societe // Societe
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="2"><input type="text" name="societe" size="40" value="'.$adh->societe.'"></td></tr>'; print '<tr><td>'.$langs->trans("Company").'</td><td colspan="2"><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>';
// Civilite // Civilite
print '<tr><td width="20%">'.$langs->trans("UserTitle").'</td><td width="35%">'; print '<tr><td width="20%">'.$langs->trans("UserTitle").'</td><td width="35%">';
print $htmlcompany->select_civilite($adh->civilite_id); print $htmlcompany->select_civilite(isset($_POST["civilite_id"])?$_POST["civilite_id"]:$adh->civilite_id)."\n";
print '</td>'; print '</td>';
// Photo // Photo
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">'; print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
print $html->showphoto('memberphoto',$adh); print $html->showphoto('memberphoto',$adh)."\n";
if ($caneditfieldmember) if ($caneditfieldmember)
{ {
print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>'; print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
@@ -737,25 +759,25 @@ if ($action == 'edit')
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Nom // Name
print '<tr><td><span class="fieldrequired">'.$langs->trans("Lastname").'</span></td><td><input type="text" name="nom" size="40" value="'.$adh->nom.'"></td>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Lastname").'</span></td><td><input type="text" name="nom" size="40" value="'.(isset($_POST["nom"])?$_POST["nom"]:$adh->nom).'"></td>';
print '</tr>'; print '</tr>';
// Prenom // Firstname
print '<tr><td width="20%"><span class="fieldrequired">'.$langs->trans("Firstname").'</span></td><td><input type="text" name="prenom" size="40" value="'.$adh->prenom.'"></td>'; print '<tr><td width="20%"><span class="fieldrequired">'.$langs->trans("Firstname").'</span></td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>';
print '</tr>'; print '</tr>';
// Login // Login
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="login" size="30" value="'.$adh->login.'"></td></tr>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="login" size="30" value="'.(isset($_POST["login"])?$_POST["login"]:$adh->login).'"></td></tr>';
// Password // Password
print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td><input type="password" name="pass" size="30" value="'.$adh->pass.'"></td></tr>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Password").'</span></td><td><input type="password" name="pass" size="30" value="'.(isset($_POST["pass"])?$_POST["pass"]:$adh->pass).'"></td></tr>';
// Type // Type
print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>';
if ($user->rights->adherent->creer) if ($user->rights->adherent->creer)
{ {
$html->select_array("typeid", $adht->liste_array(), $adh->typeid); $html->select_array("typeid", $adht->liste_array(), (isset($_POST["typeid"])?$_POST["typeid"]:$adh->typeid));
} }
else else
{ {
@@ -766,36 +788,42 @@ if ($action == 'edit')
// Address // Address
print '<tr><td>'.$langs->trans("Address").'</td><td>'; print '<tr><td>'.$langs->trans("Address").'</td><td>';
print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.$adh->adresse.'</textarea></td></tr>'; print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.(isset($_POST["adresse"])?$_POST["adresse"]:$adh->adresse).'</textarea></td></tr>';
// Cp // Zip / Town
print '<tr><td>'.$langs->trans("Zip").'/'.$langs->trans("Town").'</td><td><input type="text" name="cp" size="6" value="'.$adh->cp.'"> <input type="text" name="ville" size="32" value="'.$adh->ville.'"></td></tr>'; print '<tr><td>'.$langs->trans("Zip").'/'.$langs->trans("Town").'</td><td><input type="text" name="cp" size="6" value="'.(isset($_POST["cp"])?$_POST["cp"]:$adh->cp).'"> <input type="text" name="ville" size="32" value="'.(isset($_POST["ville"])?$_POST["ville"]:$adh->ville).'"></td></tr>';
// Country // Country
print '<tr><td>'.$langs->trans("Country").'</td><td>'; print '<tr><td>'.$langs->trans("Country").'</td><td>';
$html->select_pays($adh->pays_code?$adh->pays_code:$mysoc->pays_code,'pays'); $html->select_pays(isset($_POST["pays"])?$_POST["pays"]:$adh->pays_id,'pays',$conf->use_javascript_ajax?' onChange="company_save_refresh_edit()"':'');
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
print '</td></tr>';
// State
print '<tr><td>'.$langs->trans('State').'</td><td>';
$htmlcompany->select_departement($adh->fk_departement,$adh->pays_code);
print '</td></tr>'; print '</td></tr>';
// Tel // Tel
print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.$adh->phone.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.(isset($_POST["phone"])?$_POST["phone"]:$adh->phone).'"></td></tr>';
// Tel perso // Tel perso
print '<tr><td>'.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.$adh->phone_perso.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.(isset($_POST["phone_perso"])?$_POST["phone_perso"]:$adh->phone_perso).'"></td></tr>';
// Tel mobile // Tel mobile
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.$adh->phone_mobile.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$adh->phone_mobile).'"></td></tr>';
// EMail // EMail
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED?'<span class="fieldrequired">':'').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED?'</span>':'').'</td><td><input type="text" name="email" size="40" value="'.$adh->email.'"></td></tr>'; print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED?'<span class="fieldrequired">':'').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED?'</span>':'').'</td><td><input type="text" name="email" size="40" value="'.(isset($_POST["email"])?$_POST["email"]:$adh->email).'"></td></tr>';
// Date naissance // Date naissance
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n"; print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
$html->select_date(($adh->naiss ? $adh->naiss : -1),'naiss','','',1,'update'); $html->select_date(($adh->naiss ? $adh->naiss : -1),'naiss','','',1,'formsoc');
print "</td></tr>\n"; print "</td></tr>\n";
// Profil public // Profil public
print "<tr><td>".$langs->trans("Public")."</td><td>\n"; print "<tr><td>".$langs->trans("Public")."</td><td>\n";
print $html->selectyesno("public",$adh->public,1); print $html->selectyesno("public",(isset($_POST["public"])?$_POST["public"]:$adh->public),1);
print "</td></tr>\n"; print "</td></tr>\n";
// Attributs supplementaires // Attributs supplementaires
@@ -831,7 +859,7 @@ if ($action == 'edit')
print '</td></tr>'; print '</td></tr>';
print '<tr><td colspan="3" align="center">'; print '<tr><td colspan="3" align="center">';
print '<input type="submit" class="button" name="submit" value="'.$langs->trans("Save").'">'; print '<input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
print ' &nbsp; &nbsp; &nbsp; '; print ' &nbsp; &nbsp; &nbsp; ';
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
print '</td></tr>'; print '</td></tr>';
@@ -850,6 +878,28 @@ if ($action == 'create')
/* Fiche creation */ /* Fiche creation */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
$adh->fk_departement = $_POST["departement_id"];
// We set pays_id, pays_code and label for the selected country
$adh->pays_id=$_POST["pays_id"]?$_POST["pays_id"]:$conf->global->MAIN_INFO_SOCIETE_PAYS;
if ($adh->pays_id)
{
$sql = "SELECT rowid, code, libelle";
$sql.= " FROM ".MAIN_DB_PREFIX."c_pays";
$sql.= " WHERE rowid = ".$adh->pays_id;
$resql=$db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
}
else
{
dol_print_error($db);
}
$adh->pays_id=$obj->rowid;
$adh->pays_code=$obj->code;
$adh->pays=$obj->libelle;
}
$adht = new AdherentType($db); $adht = new AdherentType($db);
@@ -861,37 +911,37 @@ if ($action == 'create')
} }
if ($mesg) print '<div class="ok">'.$mesg.'</div>'; if ($mesg) print '<div class="ok">'.$mesg.'</div>';
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="post" enctype="multipart/form-data">'; print '<form name="formsoc" action="'.$_SERVER["PHP_SELF"].'" method="post" enctype="multipart/form-data">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
// Moral-Physique // Moral-Physique
$morphys["phy"] = "Physique"; $morphys["phy"] = $langs->trans("Physical");
$morphys["mor"] = "Morale"; $morphys["mor"] = $langs->trans("Moral");
print '<tr><td><span class="fieldrequired">'.$langs->trans("Person")."</span></td><td>\n"; print '<tr><td><span class="fieldrequired">'.$langs->trans("Person")."</span></td><td>\n";
$html->select_array("morphy", $morphys, $adh->morphy, 1); $html->select_array("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$adh->morphy, 1);
print "</td>\n"; print "</td>\n";
// Company // Company
print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.$adh->societe.'"></td></tr>'; print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" size="40" value="'.(isset($_POST["societe"])?$_POST["societe"]:$adh->societe).'"></td></tr>';
// Civility // Civility
print '<tr><td>'.$langs->trans("UserTitle").'</td><td>'; print '<tr><td>'.$langs->trans("UserTitle").'</td><td>';
print $htmlcompany->select_civilite($adh->civilite_id,'civilite_id').'</td>'; print $htmlcompany->select_civilite(isset($_POST["civilite_id"])?$_POST["civilite_id"]:$adh->civilite_id,'civilite_id').'</td>';
print '</tr>'; print '</tr>';
// Nom // Nom
print '<tr><td><span class="fieldrequired">'.$langs->trans("Lastname").'</span></td><td><input type="text" name="nom" value="'.$adh->nom.'" size="40"></td>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Lastname").'</span></td><td><input type="text" name="nom" value="'.(isset($_POST["nom"])?$_POST["nom"]:$adh->nom).'" size="40"></td>';
print '</tr>'; print '</tr>';
// Prenom // Prenom
print '<tr><td><span class="fieldrequired">'.$langs->trans("Firstname").'</span></td><td><input type="text" name="prenom" size="40" value="'.$adh->prenom.'"></td>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Firstname").'</span></td><td><input type="text" name="prenom" size="40" value="'.(isset($_POST["prenom"])?$_POST["prenom"]:$adh->prenom).'"></td>';
print '</tr>'; print '</tr>';
// Login // Login
print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="member_login" size="40" value="'.$adh->login.'"></td></tr>'; print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td><td><input type="text" name="member_login" size="40" value="'.(isset($_POST["member_login"])?$_POST["member_login"]:$adh->login).'"></td></tr>';
// Mot de passe // Mot de passe
$generated_password=''; $generated_password='';
@@ -913,7 +963,7 @@ if ($action == 'create')
$listetype=$adht->liste_array(); $listetype=$adht->liste_array();
if (sizeof($listetype)) if (sizeof($listetype))
{ {
$html->select_array("typeid", $listetype, $typeid, 1); $html->select_array("typeid", $listetype, isset($_POST["typeid"])?$_POST["typeid"]:$typeid, 1);
} else { } else {
print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>'; print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>';
} }
@@ -921,31 +971,45 @@ if ($action == 'create')
// Address // Address
print '<tr><td valign="top">'.$langs->trans("Address").'</td><td>'; print '<tr><td valign="top">'.$langs->trans("Address").'</td><td>';
print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.$adh->adresse.'</textarea></td></tr>'; print '<textarea name="adresse" wrap="soft" cols="40" rows="2">'.(isset($_POST["adresse"])?$_POST["adresse"]:$adh->adresse).'</textarea></td></tr>';
// CP / Ville // CP / Ville
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td><input type="text" name="cp" size="8"> <input type="text" name="ville" size="32" value="'.$adh->ville.'"></td></tr>'; print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td><input type="text" name="cp" size="8" value="'.(isset($_POST["cp"])?$_POST["cp"]:$adh->cp).'"> <input type="text" name="ville" size="32" value="'.(isset($_POST["ville"])?$_POST["ville"]:$adh->ville).'"></td></tr>';
// Pays // Country
print '<tr><td>'.$langs->trans("Country").'</td><td>'; $adh->pays_id=$adh->pays_id?$adh->pays_id:$mysoc->pays_id;
$html->select_pays($adh->pays_id ? $adh->pays_id : $mysoc->pays_id,'pays_id'); print '<tr><td>'.$langs->trans("Country").'</td><td>';
print '</td></tr>'; $html->select_pays(isset($_POST["pays_id"])?$_POST["pays_id"]:$adh->pays_id,'pays_id',$conf->use_javascript_ajax?' onChange="company_save_refresh_create()"':'');
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
print '</td></tr>';
// State
print '<tr><td>'.$langs->trans('State').'</td><td colspan="3">';
if ($adh->pays_id)
{
$htmlcompany->select_departement(isset($_POST["departement_id"])?$_POST["departement_id"]:$adh->fk_departement,$adh->pays_code);
}
else
{
print $countrynotdefined;
}
print '</td></tr>';
// Tel pro // Tel pro
print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.$adh->phone.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhonePro").'</td><td><input type="text" name="phone" size="20" value="'.(isset($_POST["phone"])?$_POST["phone"]:$adh->phone).'"></td></tr>';
// Tel perso // Tel perso
print '<tr><td>'.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.$adh->phone_perso.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhonePerso").'</td><td><input type="text" name="phone_perso" size="20" value="'.(isset($_POST["phone_perso"])?$_POST["phone_perso"]:$adh->phone_perso).'"></td></tr>';
// Tel mobile // Tel mobile
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.$adh->phone_mobile.'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$adh->phone_mobile).'"></td></tr>';
// EMail // EMail
print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED?'<span class="fieldrequired">':'').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED?'</span>':'').'</td><td><input type="text" name="member_email" size="40" value="'.$adh->email.'"></td></tr>'; print '<tr><td>'.($conf->global->ADHERENT_MAIL_REQUIRED?'<span class="fieldrequired">':'').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED?'</span>':'').'</td><td><input type="text" name="member_email" size="40" value="'.(isset($_POST["member_email"])?$_POST["member_email"]:$adh->email).'"></td></tr>';
// Date naissance // Date naissance
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n"; print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
$html->select_date(($adh->naiss ? $adh->naiss : -1),'naiss','','',1,'add'); $html->select_date(($adh->naiss ? $adh->naiss : -1),'naiss','','',1,'formsoc');
print "</td></tr>\n"; print "</td></tr>\n";
// Profil public // Profil public
@@ -956,7 +1020,7 @@ if ($action == 'create')
// Attribut optionnels // Attribut optionnels
foreach($adho->attribute_label as $key=>$value) foreach($adho->attribute_label as $key=>$value)
{ {
print "<tr><td>$value</td><td><input type=\"text\" name=\"options_$key\" size=\"40\"></td></tr>\n"; print "<tr><td>".$value.'</td><td><input type="text" name="options_'.$key.'" size="40" value="'.(isset($_POST["options_".$key])?$_POST["options_".$key]:'').'"></td></tr>'."\n";
} }
/* /*
@@ -1112,7 +1176,7 @@ if ($rowid && $action != 'edit')
if ($ret == 'html') print '<br>'; if ($ret == 'html') print '<br>';
} }
$rowspan=14+sizeof($adho->attribute_label); $rowspan=15+sizeof($adho->attribute_label);
if ($conf->societe->enabled) $rowspan++; if ($conf->societe->enabled) $rowspan++;
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -1134,11 +1198,11 @@ if ($rowid && $action != 'edit')
print '<tr><td>'.$langs->trans("UserTitle").'</td><td class="valeur" colspan="2">'.$adh->getCivilityLabel().'&nbsp;</td>'; print '<tr><td>'.$langs->trans("UserTitle").'</td><td class="valeur" colspan="2">'.$adh->getCivilityLabel().'&nbsp;</td>';
print '</tr>'; print '</tr>';
// Nom // Name
print '<tr><td>'.$langs->trans("Lastname").'</td><td class="valeur" colspan="2">'.$adh->nom.'&nbsp;</td>'; print '<tr><td>'.$langs->trans("Lastname").'</td><td class="valeur" colspan="2">'.$adh->nom.'&nbsp;</td>';
print '</tr>'; print '</tr>';
// Prenom // Firstname
print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur" colspan="2">'.$adh->prenom.'&nbsp;</td></tr>'; print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur" colspan="2">'.$adh->prenom.'&nbsp;</td></tr>';
// Login // Login
@@ -1157,11 +1221,18 @@ if ($rowid && $action != 'edit')
// Address // Address
print '<tr><td>'.$langs->trans("Address").'</td><td class="valeur">'.nl2br($adh->adresse).'</td></tr>'; print '<tr><td>'.$langs->trans("Address").'</td><td class="valeur">'.nl2br($adh->adresse).'</td></tr>';
// CP / Ville // Zip / Town
print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td class="valeur">'.$adh->cp.' '.$adh->ville.'</td></tr>'; print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td class="valeur">'.$adh->cp.' '.$adh->ville.'</td></tr>';
// Pays // Country
print '<tr><td>'.$langs->trans("Country").'</td><td class="valeur">'.getCountryLabel($adh->pays_id).'</td></tr>'; print '<tr><td>'.$langs->trans("Country").'</td><td class="valeur">';
$img=picto_from_langcode($adh->pays_code);
if ($img) print $img.' ';
print getCountry($adh->pays_code);
print '</td></tr>';
// State
print '<tr><td>'.$langs->trans('State').'</td><td class="valeur">'.$adh->departement.'</td>';
// Tel pro. // Tel pro.
print '<tr><td>'.$langs->trans("PhonePro").'</td><td class="valeur">'.dol_print_phone($adh->phone,$adh->pays_code,0,$adh->fk_soc,1).'</td></tr>'; print '<tr><td>'.$langs->trans("PhonePro").'</td><td class="valeur">'.dol_print_phone($adh->phone,$adh->pays_code,0,$adh->fk_soc,1).'</td></tr>';
@@ -1307,11 +1378,12 @@ if ($rowid && $action != 'edit')
} }
// Envoi fiche par mail // Envoi fiche par mail
if ($adh->statut >= 1 && $adh->email) if ($adh->statut >= 1)
{ {
if ($user->rights->adherent->creer) if ($user->rights->adherent->creer)
{ {
print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=sendinfo\">".$langs->trans("SendCardByMail")."</a>\n"; if ($adh->email) print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=sendinfo\">".$langs->trans("SendCardByMail")."</a>\n";
else print "<a class=\"butActionRefused\" href=\"#\" title=\"".dol_escape_htmltag($langs->trans("NoEMail"))."\">".$langs->trans("SendCardByMail")."</a>\n";
} }
else else
{ {
@@ -1338,7 +1410,7 @@ if ($rowid && $action != 'edit')
if ($user->rights->societe->creer) if ($user->rights->societe->creer)
{ {
if ($adh->statut != -1) print '<a class="butAction" href="fiche.php?rowid='.$adh->id.'&amp;action=create_thirdparty">'.$langs->trans("CreateDolibarrThirdParty").'</a>'; if ($adh->statut != -1) print '<a class="butAction" href="fiche.php?rowid='.$adh->id.'&amp;action=create_thirdparty">'.$langs->trans("CreateDolibarrThirdParty").'</a>';
else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrLogin").'</a>'; else print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrThirdParty").'</a>';
} }
else else
{ {
@@ -1376,11 +1448,11 @@ if ($rowid && $action != 'edit')
$isinspip=$adh->is_in_spip(); $isinspip=$adh->is_in_spip();
if ($isinspip == 1) if ($isinspip == 1)
{ {
print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=del_spip\">Suppression dans Spip</a>\n"; print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=del_spip\">".$langs->trans("DeleteIntoSpip")."</a>\n";
} }
if ($isinspip == 0) if ($isinspip == 0)
{ {
print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=add_spip\">Ajout dans Spip</a>\n"; print "<a class=\"butAction\" href=\"fiche.php?rowid=$adh->id&action=add_spip\">".$langs->trans("AddIntoSpip")."</a>\n";
} }
if ($isinspip == -1) { if ($isinspip == -1) {
print '<br><font class="error">Failed to connect to SPIP: '.$adh->error.'</font>'; print '<br><font class="error">Failed to connect to SPIP: '.$adh->error.'</font>';

View File

@@ -0,0 +1,216 @@
<?php
/* Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file htdocs/admin/menus/menu.js.php
* \brief File for js menu
* \version $Id$
*/
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language
//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled to increase speed. Language code is found on url.
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1);
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1);
if (! defined('NOLOGIN')) define('NOLOGIN',1);
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1);
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1);
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
require_once("../../master.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions.lib.php");
if (! empty($_GET["lang"])) $langs->setDefaultLang($_GET["lang"]); // If language was forced on URL by the main.inc.php
$langs->load("main",0,1);
?>
// Tests pour navigateurs
var OPE = (window.opera) ? true : false;
var IE = (document.all && !OPE) ? true : false;
var MOZ = (!IE && !OPE) ? true : false;
// -----------------------------------------------------
// Fonction d'initialisation de l'arbre
function arbre() {
// Choix de la balise contenant le texte. <strong> par defaut.
balise = "STRONG";
// Presentation de l'arbre au depart : deployee ('yes') ou fermee ('no')
extend = "no";
// Textes du lien plier / deplier
plier_text = '<?php echo $langs->transnoentities("UndoExpandAll"); ?>';
plier_title = 'Replier tous les noeuds de l\'arbre'
deplier_text = '<?php echo $langs->transnoentities("ExpandAll"); ?>';
deplier_title = 'Deplier tous les noeuds de l\'arbre'
// Recuperation de tous les arbres de la page
uls = getElBy('ul','class','arbre');
for (uli=0;uli < uls.length;uli++)
{
ul = uls[uli];
linkSwitch(ul);
processULEL(ul);
plier(ul,'replier');
}
}
// -------------------------------------------------------
// Creation des liens plier /deplier tout
function linkSwitch(ul) {
var a=document.createElement('a');
a.setAttribute('href','#');
if (extend=='yes') {
a.appendChild(document.createTextNode(plier_text));
a.setAttribute('title',plier_title);
}
else {
a.appendChild(document.createTextNode(deplier_text));
a.setAttribute('title',deplier_title);
}
var parbre = document.createElement('p');
parbre.setAttribute('class','arbre-switch');
parbre.appendChild(a);
ul.parentNode.insertBefore(parbre,ul);
listenlink(ul);
}
// Gestion des Clics sur les liens plier / deplier tout
function listenlink(ul) {
var link = ul.previousSibling.childNodes[0];
link.onclick = function() {
if (this.childNodes[0].nodeValue == plier_text) {
plier(ul,'replier');
this.childNodes[0].nodeValue = deplier_text;
this.setAttribute('title',deplier_title);
}
else {
plier(ul,'deplier');
this.childNodes[0].nodeValue = plier_text;
this.setAttribute('title',plier_title);
}
return false;
}
}
// Action Plier / deplier tout
function plier(ul,act) {
for (var i=0; i < ul.childNodes.length; i++) {
var li = ul.childNodes[i];
if (li.nodeName == 'LI') {
for (var j=0; j < li.childNodes.length; j++) {
var child = li.childNodes[j];
if (child.nodeName==balise) {
var strong = child;
}
if (child.nodeName=='UL') {
if (act=='replier') {
child.className='hide';
strong.className='arbre-plier';
}
else {
child.className='';
strong.className='arbre-deplier';
}
var sub = child;
plier(sub,act);
}
}
}
}
}
// ---------------------------------------------------------
// Analyse de l'arbre
function processULEL(ul) {
if (!ul.childNodes || ul.childNodes.length == 0) return;
// Iterate LIs
for (var itemi=0;itemi < ul.childNodes.length;itemi++) {
var item = ul.childNodes[itemi];
if (item.nodeName == "LI") {
// Contenu des balises LI
var a;
var subul;
subul = "";
for (var sitemi=0;sitemi < item.childNodes.length;sitemi++) {
// Uniquement pour moz-firefox
if (MOZ) {item.style.background = "";}
// Enfants des li : balise ou sous-ul
var sitem = item.childNodes[sitemi];
switch (sitem.nodeName) {
case balise:
a = sitem;
break;
case "UL":
subul = sitem;
if (extend != "yes") {sitem.className = 'hide';}
processULEL(subul);
break;
}
}
if (subul) {
if (extend!="yes") {
a.className='arbre-plier';
}
else {
a.className='arbre-deplier';
subul.className='';
}
associateEL(a,subul);
}
}
}
}
// Swicth des noeuds
function associateEL(a,ul) {
a.onclick = function () {
this.className = (ul.className=='hide') ? 'arbre-deplier' : 'arbre-plier';
ul.className = (ul.className=='hide') ? '' : 'hide';
return false;
}
}
// -----------------------------------------------------
// Nom : GetElBy(tag,attr,val)
// By : Rui Nibau
// Date : aout 2005
// Func : Tableau des elements 'tag' dont l'attribut 'attr' a la valeur 'val'.
// -----------------------------------------------------
function getElBy(tag,attr,val) {
var dbRes = [];
var dbEl = document.getElementsByTagName(tag);
for (e=0; e < dbEl.length; e++) {
if (attr == 'class') {if (dbEl[e].className==val) {dbRes.push(dbEl[e]);}}
else {if (dbEl[e].getAttribute(attr)==val) {dbRes.push(dbEl[e]);}}
}
return dbRes;
}
// -----------------------------------------------------
// A l'affichage de la page, lancer la fonction arbre
window.onload = function() {
arbre();
}
function imgDel(id)
{
var delId='del'+id;
var imgDel = document.getElementById('del'+id);
if (imgDel != null) imgDel.style.display='block';
return true;
}

View File

@@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2009-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -30,23 +30,44 @@
* write = system,call,log,verbose,command,agent,user * write = system,call,log,verbose,command,agent,user
*/ */
// This is to make Dolibarr working with Plesk //if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs'); //if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1');
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1');
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1');
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
require_once("../master.inc.php"); // C'est un wrapper, donc header vierge
function llxHeader() {
print '<html>'."\n";
print '<head>'."\n";
print '<title>Asterisk redirection from Dolibarr...</title>'."\n";
print '</head>'."\n";
}
require_once("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
dol_syslog("Call Dolibarr Asterisk interface"); // Security check
if (! $conf->clicktodial->enabled)
// TODO Enable and test if module Asterisk is enabled {
accessforbidden();
exit;
}
$conf->global->ASTERISK_HOST="127.0.0.1"; // Define Asterisk setup
$conf->global->ASTERISK_TYPE="SIP/"; if (! isset($conf->global->ASTERISK_HOST)) $conf->global->ASTERISK_HOST="127.0.0.1";
$conf->global->ASTERISK_INDICATIF="0"; if (! isset($conf->global->ASTERISK_TYPE)) $conf->global->ASTERISK_TYPE="SIP/";
$conf->global->ASTERISK_PORT=5038; if (! isset($conf->global->ASTERISK_INDICATIF)) $conf->global->ASTERISK_INDICATIF="0";
if (! isset($conf->global->ASTERISK_PORT)) $conf->global->ASTERISK_PORT=5038;
if ($conf->global->ASTERISK_INDICATIF=='NONE') $conf->global->ASTERISK_INDICATIF='';
$login = $_GET['login']; $login = $_GET['login'];
$password = $_GET['password']; $password = $_GET['password'];
@@ -55,36 +76,29 @@ $called = $_GET['called'];
# Adresse IP du serveur Asterisk # Adresse IP du serveur Asterisk
$strHost = $conf->global->ASTERISK_HOST; $strHost = $conf->global->ASTERISK_HOST;
#Context ( generalement from-internal )
$strContext = "from-internal";
#Spécifiez le type d'extension par laquelle vous poste est connecte. #Spécifiez le type d'extension par laquelle vous poste est connecte.
#ex: SIP/, IAX2/, ZAP/, etc #ex: SIP/, IAX2/, ZAP/, etc
$channel = $conf->global->ASTERISK_TYPE; $channel = $conf->global->ASTERISK_TYPE;
#Indicatif de la ligne sortante
$prefix = $conf->global->ASTERISK_INDICATIF;
#Port
$port = $conf->global->ASTERISK_PORT;
#Context ( generalement from-internal )
$strContext = "from-internal";
#Delai d'attente avant de raccrocher #Delai d'attente avant de raccrocher
$strWaitTime = "30"; $strWaitTime = "30";
#Priority #Priority
$strPriority = "1"; $strPriority = "1";
#Nomber of try #Nomber of try
$strMaxRetry = "2"; $strMaxRetry = "2";
#Indicatif de la ligne sortante
$prefix = $conf->global->ASTERISK_INDICATIF;
#Port /*
$port = $conf->global->ASTERISK_PORT; * View
*/
print '<html>'."\n";
print '<head>'."\n";
print '<title>Asterisk redirection ...</title>'."\n";
print '</head>'."\n";
llxHeader();
$number=strtolower($called) ; $number=strtolower($called) ;
$pos=strpos ($number,"local"); $pos=strpos ($number,"local");
@@ -93,21 +107,25 @@ if (! empty($number))
if ($pos===false) : if ($pos===false) :
$errno=0 ; $errno=0 ;
$errstr=0 ; $errstr=0 ;
$strCallerId = "Dolibarr <$number>" ; $strCallerId = "Dolibarr <".strtolower($caller).">" ;
$oSocket = @fsockopen ($strHost, $port, $errno, $errstr, 10) ; $oSocket = @fsockopen ($strHost, $port, $errno, $errstr, 10) ;
if (!$oSocket) if (!$oSocket)
{ {
echo '<body>'."\n"; print '<body>'."\n";
$txt="Failed to execute fsockopen($strHost, $port, \$errno, \$errstr, 10)<br>\n"; $txt="Failed to execute fsockopen($strHost, $port, \$errno, \$errstr, 10)<br>\n";
echo $txt; print $txt;
dol_syslog($txt,LOG_ERR); dol_syslog($txt,LOG_ERR);
$txt=$errstr." (".$errno.")<br>\n"; $txt=$errstr." (".$errno.")<br>\n";
echo $txt; print $txt;
dol_syslog($txt,LOG_ERR); dol_syslog($txt,LOG_ERR);
print '</body>'."\n";
} }
else else
{ {
echo '<body onload="javascript:history.go(-1);">'."\n"; $txt="Call Asterisk dialer for caller: ".$caller.", called: ".$called." clicktodiallogin: ".$login;
dol_syslog($txt);
print '<body onload="javascript:history.go(-1);">'."\n";
print '<!-- '.$txt.' -->';
fputs($oSocket, "Action: login\r\n" ) ; fputs($oSocket, "Action: login\r\n" ) ;
fputs($oSocket, "Events: off\r\n" ) ; fputs($oSocket, "Events: off\r\n" ) ;
fputs($oSocket, "Username: $login\r\n" ) ; fputs($oSocket, "Username: $login\r\n" ) ;
@@ -122,9 +140,12 @@ if (! empty($number))
fputs($oSocket, "Action: Logoff\r\n\r\n" ) ; fputs($oSocket, "Action: Logoff\r\n\r\n" ) ;
sleep(2) ; sleep(2) ;
fclose($oSocket) ; fclose($oSocket) ;
print '</body>'."\n";
} }
endif ; endif ;
} }
else {
print 'Bad parameters in URL. Must be http://MYDOLIBARR/asterisk/wrapper.php?caller=99999&called=99999&login=xxxxx&password=xxxxx';
}
print '</body>'."\n";
print '</html>'."\n"; print '</html>'."\n";

View File

@@ -52,7 +52,7 @@ function printBoxesArea($user,$areacode)
print '<table width="100%" style="border-collapse: collapse; border: 0px; margin: 0px; padding: 0px;"><tr>'; print '<table width="100%" style="border-collapse: collapse; border: 0px; margin: 0px; padding: 0px;"><tr>';
// Affichage colonne gauche // Affichage colonne gauche
print '<td width="50%" valign="top">'."\n"; print '<td width="50%" valign="top" style="padding-right: 4px;">'."\n";
print "\n<!-- Box left container -->\n"; print "\n<!-- Box left container -->\n";
print '<div id="left">'."\n"; print '<div id="left">'."\n";
@@ -73,21 +73,21 @@ function printBoxesArea($user,$areacode)
} }
// If no box on left, we add an invisible empty box // If no box on left, we add an invisible empty box
if ($ii==0) // if ($ii==0)
{ // {
$emptybox=new ModeleBoxes($db); $emptybox=new ModeleBoxes($db);
$emptybox->box_id='A'; $emptybox->box_id='A';
$emptybox->info_box_head=array(); $emptybox->info_box_head=array();
$emptybox->info_box_contents=array(); $emptybox->info_box_contents=array();
$emptybox->showBox(array(),array()); $emptybox->showBox(array(),array());
} // }
print "</div>\n"; print "</div>\n";
print "<!-- End box container -->\n"; print "<!-- End box container -->\n";
print "</td>\n"; print "</td>\n";
// Affichage colonne droite // Affichage colonne droite
print '<td width="50%" valign="top">'; print '<td width="50%" valign="top" style="padding-right: 2px;">';
print "\n<!-- Box right container -->\n"; print "\n<!-- Box right container -->\n";
print '<div id="right">'."\n"; print '<div id="right">'."\n";
@@ -108,14 +108,14 @@ function printBoxesArea($user,$areacode)
} }
// If no box on right, we show add an invisible empty box // If no box on right, we show add an invisible empty box
if ($ii==0) // if ($ii==0)
{ // {
$emptybox=new ModeleBoxes($db); $emptybox=new ModeleBoxes($db);
$emptybox->box_id='B'; $emptybox->box_id='B';
$emptybox->info_box_head=array(); $emptybox->info_box_head=array();
$emptybox->info_box_contents=array(); $emptybox->info_box_contents=array();
$emptybox->showBox(array(),array()); $emptybox->showBox(array(),array());
} // }
print "</div>\n"; print "</div>\n";
print "<!-- End box container -->\n"; print "<!-- End box container -->\n";
@@ -349,7 +349,8 @@ class InfoBox
if (! $userid || $userid == 0) return 0; if (! $userid || $userid == 0) return 0;
$user = new User($this->db,$userid); $user = new User($this->db);
$user->id=$userid;
$this->db->begin(); $this->db->begin();

View File

@@ -7,7 +7,7 @@
CREATE TABLE `llx_tmp_caisse` ( CREATE TABLE `llx_tmp_caisse` (
`id` int(11) NOT NULL auto_increment, `id` int(11) NOT NULL auto_increment,
`fk_article` tinyint(4) NOT NULL, `fk_article` int(11) NOT NULL,
`qte` int(11) NOT NULL, `qte` int(11) NOT NULL,
`fk_tva` int(11) NOT NULL, `fk_tva` int(11) NOT NULL,
`remise_percent` int(11) NOT NULL, `remise_percent` int(11) NOT NULL,

View File

@@ -28,10 +28,10 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/categories/categorie.class.php"); require_once(DOL_DOCUMENT_ROOT."/categories/class/categorie.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/treeview.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/treeview.lib.php");
$type=isset($_GET['type'])?$_GET['type']:$_POST['type']; $type=isset($_GET['type'])?$_GET['type']:(isset($_POST['type'])?$_POST['type']:0);
if (!$user->rights->categorie->lire) accessforbidden(); if (!$user->rights->categorie->lire) accessforbidden();
@@ -122,7 +122,10 @@ print '<br>';
// Charge tableau des categories // Charge tableau des categories
$cate_arbo = $categstatic->get_full_arbo($_GET['type']); $cate_arbo = $categstatic->get_full_arbo($type);
// Define fulltree array
$fulltree=$cate_arbo;
@@ -133,8 +136,6 @@ print '<tr class="liste_titre"><td>'.$langs->trans("Categories").'</td><td colsp
$section=isset($_GET["section"])?$_GET["section"]:$_POST['section']; $section=isset($_GET["section"])?$_GET["section"]:$_POST['section'];
if (! $section) $section=0; if (! $section) $section=0;
// Define fulltree array
$fulltree=$cate_arbo;
// ----- This section will show a tree from a fulltree array ----- // ----- This section will show a tree from a fulltree array -----

View File

@@ -28,12 +28,12 @@
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php");
require_once(DOL_DOCUMENT_ROOT."/contact/contact.class.php"); require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
require_once(DOL_DOCUMENT_ROOT."/user/user.class.php"); require_once(DOL_DOCUMENT_ROOT."/user/class/user.class.php");
require_once(DOL_DOCUMENT_ROOT."/comm/action/cactioncomm.class.php"); require_once(DOL_DOCUMENT_ROOT."/comm/action/class/cactioncomm.class.php");
require_once(DOL_DOCUMENT_ROOT."/comm/action/actioncomm.class.php"); require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formactions.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formactions.class.php");
require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php"); require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php");
$langs->load("companies"); $langs->load("companies");
@@ -168,16 +168,16 @@ if ($_POST["action"] == 'add_action')
} }
$actioncomm->duree=(($_POST["dureehour"] * 60) + $_POST["dureemin"]) * 60; $actioncomm->duree=(($_POST["dureehour"] * 60) + $_POST["dureemin"]) * 60;
$usertodo=new User($db,$_POST["affectedto"]); $usertodo=new User($db);
if ($_POST["affectedto"] > 0) if ($_POST["affectedto"] > 0)
{ {
$usertodo->fetch(); $usertodo->fetch($_POST["affectedto"]);
} }
$actioncomm->usertodo = $usertodo; $actioncomm->usertodo = $usertodo;
$userdone=new User($db,$_POST["doneby"]); $userdone=new User($db);
if ($_POST["doneby"] > 0) if ($_POST["doneby"] > 0)
{ {
$userdone->fetch(); $userdone->fetch($_POST["doneby"]);
} }
$actioncomm->userdone = $userdone; $actioncomm->userdone = $userdone;
@@ -357,16 +357,16 @@ if ($_POST["action"] == 'update')
} }
// Users // Users
$usertodo=new User($db,$_POST["affectedto"]); $usertodo=new User($db);
if ($_POST["affectedto"]) if ($_POST["affectedto"])
{ {
$usertodo->fetch(); $usertodo->fetch($_POST["affectedto"]);
} }
$actioncomm->usertodo = $usertodo; $actioncomm->usertodo = $usertodo;
$userdone=new User($db,$_POST["doneby"]); $userdone=new User($db);
if ($_POST["doneby"]) if ($_POST["doneby"])
{ {
$userdone->fetch(); $userdone->fetch($_POST["doneby"]);
} }
$actioncomm->userdone = $userdone; $actioncomm->userdone = $userdone;
@@ -606,7 +606,11 @@ if ($_GET["id"])
$act = new ActionComm($db); $act = new ActionComm($db);
$result=$act->fetch($_GET["id"]); $result=$act->fetch($_GET["id"]);
if ($result < 0) dol_print_error($db,$act->error); if ($result < 0)
{
dol_print_error($db,$act->error);
exit;
}
$societe = new Societe($db); $societe = new Societe($db);
if ($act->societe->id) if ($act->societe->id)
@@ -615,10 +619,10 @@ if ($_GET["id"])
} }
$act->societe = $societe; $act->societe = $societe;
if ($act->author->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->author->id; $res=$tmpuser->fetch(); $act->author=$tmpuser; } if ($act->author->id > 0) { $tmpuser=new User($db); $res=$tmpuser->fetch($act->author->id); $act->author=$tmpuser; }
if ($act->usermod->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->usermod->id; $res=$tmpuser->fetch(); $act->usermod=$tmpuser; } if ($act->usermod->id > 0) { $tmpuser=new User($db); $res=$tmpuser->fetch($act->usermod->id); $act->usermod=$tmpuser; }
if ($act->usertodo->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->usertodo->id; $res=$tmpuser->fetch(); $act->usertodo=$tmpuser; } if ($act->usertodo->id > 0) { $tmpuser=new User($db); $res=$tmpuser->fetch($act->usertodo->id); $act->usertodo=$tmpuser; }
if ($act->userdone->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->userdone->id; $res=$tmpuser->fetch(); $act->userdone=$tmpuser; } if ($act->userdone->id > 0) { $tmpuser=new User($db); $res=$tmpuser->fetch($act->userdone->id); $act->userdone=$tmpuser; }
$contact = new Contact($db); $contact = new Contact($db);
if ($act->contact->id) if ($act->contact->id)
@@ -634,7 +638,7 @@ if ($_GET["id"])
$head=actions_prepare_head(); $head=actions_prepare_head();
dol_fiche_head($head, 'card', $langs->trans("Action"),0,'task'); dol_fiche_head($head, 'card', $langs->trans("Action"),0,'task');
$now=gmmktime(); $now=dol_now();
$delay_warning=$conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60; $delay_warning=$conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60;
// Confirmation suppression action // Confirmation suppression action
@@ -670,7 +674,7 @@ if ($_GET["id"])
// Company // Company
print '<tr><td>'.$langs->trans("Company").'</td>'; print '<tr><td>'.$langs->trans("Company").'</td>';
print '<td>'; print '<td>';
print $html->select_societes($act->societe->id,'socid',1,1); print $html->select_societes($act->societe->id,'socid','',1,1);
print '</td>'; print '</td>';
// Contact // Contact
@@ -773,7 +777,9 @@ if ($_GET["id"])
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
// Ref // Ref
print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td colspan="3">'.$act->id.'</td></tr>'; print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td colspan="3">';
print $html->showrefnav($act,'id','',1,'id','ref','');
print '</td></tr>';
// Type // Type
print '<tr><td>'.$langs->trans("Type").'</td><td colspan="3">'.$act->type.'</td></tr>'; print '<tr><td>'.$langs->trans("Type").'</td><td colspan="3">'.$act->type.'</td></tr>';

View File

@@ -27,8 +27,8 @@
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/contact/contact.class.php"); require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
require_once(DOL_DOCUMENT_ROOT."/comm/action/actioncomm.class.php"); require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/date.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/date.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php");
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php"); if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php");
@@ -50,12 +50,12 @@ if (! $sortfield) $sortfield="a.datec";
// Security check // Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:''; $socid = isset($_GET["socid"])?$_GET["socid"]:'';
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'agenda', $socid, '', 'myactions'); $result = restrictedArea($user, 'agenda', 0, '', 'myactions');
$canedit=1; $canedit=1;
if (! $user->rights->agenda->myactions->read) accessforbidden(); if (! $user->rights->agenda->myactions->read) accessforbidden();
if (! $user->rights->agenda->allactions->read) $canedit=0; if (! $user->rights->agenda->allactions->read) $canedit=0;
if (! $user->rights->agenda->allactions->read || $_GET["filter"]=='mine') if (! $user->rights->agenda->allactions->read || $_GET["filter"]=='mine') // If no permission to see all, we show only affected to me
{ {
$filtera=$user->id; $filtera=$user->id;
$filtert=$user->id; $filtert=$user->id;
@@ -70,6 +70,7 @@ $pid=! empty($_REQUEST["projectid"])?$_REQUEST["projectid"]:0;
$status=isset($_GET["status"])?$_GET["status"]:$_POST["status"]; $status=isset($_GET["status"])?$_GET["status"]:$_POST["status"];
$langs->load("other"); $langs->load("other");
$langs->load("commercial");
if (! isset($conf->global->AGENDA_MAX_EVENTS_DAY_VIEW)) $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW=3; if (! isset($conf->global->AGENDA_MAX_EVENTS_DAY_VIEW)) $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW=3;
@@ -187,29 +188,29 @@ $sql.= ' AND u.entity in (0,'.$conf->entity.')'; // To limit to entity
if ($pid) $sql.=" AND a.fk_project=".addslashes($pid); if ($pid) $sql.=" AND a.fk_project=".addslashes($pid);
if ($_GET["action"] == 'show_day') if ($_GET["action"] == 'show_day')
{ {
$sql.= ' AND ('; $sql.= " AND (";
$sql.= ' (datep BETWEEN '.$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year)); $sql.= " (datep BETWEEN '".$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year))."'";
$sql.= ' AND '.$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year)).')'; $sql.= " AND '".$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year))."')";
$sql.= ' OR '; $sql.= " OR ";
$sql.= ' (datep2 BETWEEN '.$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year)); $sql.= " (datep2 BETWEEN '".$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year))."'";
$sql.= ' AND '.$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year)).')'; $sql.= " AND '".$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year))."')";
$sql.= ' OR '; $sql.= " OR ";
$sql.= ' (datep < '.$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year)); $sql.= " (datep < '".$db->idate(dol_mktime(0,0,0,$month,$_GET["day"],$year))."'";
$sql.= ' AND datep2 > '.$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year)).')'; $sql.= " AND datep2 > '".$db->idate(dol_mktime(23,59,59,$month,$_GET["day"],$year))."')";
$sql.= ')'; $sql.= ')';
} }
else else
{ {
// To limit array // To limit array
$sql.= ' AND ('; $sql.= " AND (";
$sql.= ' (datep BETWEEN '.$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7)); // Start 7 days before $sql.= " (datep BETWEEN '".$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7))."'"; // Start 7 days before
$sql.= ' AND '.$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10)).')'; // End 7 days after + 3 to go from 28 to 31 $sql.= " AND '".$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10))."')"; // End 7 days after + 3 to go from 28 to 31
$sql.= ' OR '; $sql.= " OR ";
$sql.= ' (datep2 BETWEEN '.$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7)); $sql.= " (datep2 BETWEEN '".$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7))."'";
$sql.= ' AND '.$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10)).')'; $sql.= " AND '".$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10))."')";
$sql.= ' OR '; $sql.= " OR ";
$sql.= ' (datep < '.$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7)); $sql.= " (datep < '".$db->idate(dol_mktime(0,0,0,$month,1,$year)-(60*60*24*7))."'";
$sql.= ' AND datep2 > '.$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10)).')'; $sql.= " AND datep2 > '".$db->idate(dol_mktime(23,59,59,$month,28,$year)+(60*60*24*10))."')";
$sql.= ')'; $sql.= ')';
} }
if ($filtera > 0 || $filtert > 0 || $filterd > 0) if ($filtera > 0 || $filtert > 0 || $filterd > 0)
@@ -249,8 +250,7 @@ if ($resql)
$action->userdone->id=$obj->fk_user_done; $action->userdone->id=$obj->fk_user_done;
// Defined date_start_in_calendar and date_end_in_calendar property // Defined date_start_in_calendar and date_end_in_calendar property
// They are date start and end of action but modified to not be outside // They are date start and end of action but modified to not be outside calendar view.
// calendar view.
if ($action->percentage <= 0) if ($action->percentage <= 0)
{ {
$action->date_start_in_calendar=$action->datep; $action->date_start_in_calendar=$action->datep;
@@ -269,37 +269,43 @@ if ($resql)
$action->ponctuel=1; $action->ponctuel=1;
} }
if ($action->date_start_in_calendar < $firstdaytoshow) $action->date_start_in_calendar=$firstdaytoshow; // Check values
if ($action->date_end_in_calendar > $lastdaytoshow) $action->date_end_in_calendar=$lastdaytoshow; if ($action->date_end_in_calendar < $firstdaytoshow ||
$action->date_start_in_calendar > $lastdaytoshow)
// Add an entry in actionarray for each day
$daycursor=$action->date_start_in_calendar;
$annee = date('Y',$daycursor);
$mois = date('m',$daycursor);
$jour = date('d',$daycursor);
// Loop on each day covered by action to prepare an index to show on calendar
$loop=true; $j=0;
$daykey=dol_mktime(0,0,0,$mois,$jour,$annee);
do
{ {
//if ($action->id==408) print 'daykey='.$daykey.' '.$action->datep.' '.$action->datef.'<br>'; // This record is out of visible range
}
//if ($action->datef && $action->datef == $daykey && $action->datep < $action->datef) else
//{ // We discard such index. This means it's end of a range ending on last day + 1 at 00:00:00. {
//} if ($action->date_start_in_calendar < $firstdaytoshow) $action->date_start_in_calendar=$firstdaytoshow;
//else if ($action->date_end_in_calendar > $lastdaytoshow) $action->date_end_in_calendar=$lastdaytoshow;
//{
$actionarray[$daykey][]=$action; // Add an entry in actionarray for each day
$j++; $daycursor=$action->date_start_in_calendar;
//} $annee = date('Y',$daycursor);
$daykey+=60*60*24; $mois = date('m',$daycursor);
if ($daykey > $action->date_end_in_calendar) $loop=false; $jour = date('d',$daycursor);
// Loop on each day covered by action to prepare an index to show on calendar
$loop=true; $j=0;
$daykey=dol_mktime(0,0,0,$mois,$jour,$annee);
do
{
//if ($action->id==408) print 'daykey='.$daykey.' '.$action->datep.' '.$action->datef.'<br>';
$actionarray[$daykey][]=$action;
$j++;
$daykey+=60*60*24;
if ($daykey > $action->date_end_in_calendar) $loop=false;
}
while ($loop);
//print 'Event '.$i.' id='.$action->id.' (start='.dol_print_date($action->datep).'-end='.dol_print_date($action->datef);
//print ' startincalendar='.dol_print_date($action->date_start_in_calendar).'-endincalendar='.dol_print_date($action->date_end_in_calendar).') was added in '.$j.' different index key of array<br>';
} }
while ($loop);
$i++; $i++;
//print 'Event '.$i.' id='.$action->id.' (start='.dol_print_date($action->datep).'-end='.dol_print_date($action->datef).') was added in '.$j.' different index days in array<br>';
} }
} }
else else
@@ -323,10 +329,9 @@ if ($showbirthday)
{ {
$sql.= ' AND MONTH(birthday) = '.$month; $sql.= ' AND MONTH(birthday) = '.$month;
} }
// Sort on date
$sql.= ' ORDER BY birthday'; $sql.= ' ORDER BY birthday';
//print $sql;
dol_syslog("comm/action/index.php sql=".$sql, LOG_DEBUG);
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
@@ -406,14 +411,15 @@ if ($_GET["action"] != 'show_day') // View by month
} }
echo " </tr>\n"; echo " </tr>\n";
// In loops, tmpday contains day nb in current month (can be negative for days of previous month) // In loops, tmpday contains day nb in current month (can be zero or negative for days of previous month)
//var_dump($actionarray);
//print $tmpday;
for($iter_week = 0; $iter_week < 6 ; $iter_week++) for($iter_week = 0; $iter_week < 6 ; $iter_week++)
{ {
echo " <tr>\n"; echo " <tr>\n";
for($iter_day = 0; $iter_day < 7; $iter_day++) for($iter_day = 0; $iter_day < 7; $iter_day++)
{ {
/* Show days before the beginning of the current month /* Show days before the beginning of the current month (previous month) */
(previous month) */
if($tmpday <= 0) if($tmpday <= 0)
{ {
$style='cal_other_month'; $style='cal_other_month';
@@ -477,17 +483,17 @@ llxFooter('$Date$ - $Revision$');
/** /**
* \brief Show event of a particular day * Show event of a particular day
* *
* @param unknown_type $db Database handler * @param $db Database handler
* @param unknown_type $day Day * @param $day Day
* @param unknown_type $month Month * @param $month Month
* @param unknown_type $year Year * @param $year Year
* @param unknown_type $monthshown Month shown in calendar view * @param $monthshown Month shown in calendar view
* @param unknown_type $style Style to use for this day * @param $style Style to use for this day
* @param unknown_type $actionarray Array of actions * @param $actionarray Array of actions
* @param unknown_type $maxPrint Nb of actions to show each day on month view (0 means non limit) * @param $maxPrint Nb of actions to show each day on month view (0 means non limit)
* @param unknown_type nbofchartoshow Nb of characters to show for event line * @param nbofchartoshow Nb of characters to show for event line
*/ */
function show_day_events($db, $day, $month, $year, $monthshown, $style, &$actionarray, $maxPrint=0, $nbofchartoshow=14) function show_day_events($db, $day, $month, $year, $monthshown, $style, &$actionarray, $maxPrint=0, $nbofchartoshow=14)
{ {

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -26,9 +26,9 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT ."/core/notify.class.php"); require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php");
require_once(DOL_DOCUMENT_ROOT ."/commande/commande.class.php"); require_once(DOL_DOCUMENT_ROOT ."/commande/class/commande.class.php");
if (!$user->rights->commande->lire) accessforbidden(); if (!$user->rights->commande->lire) accessforbidden();
@@ -126,7 +126,7 @@ print '</td><td valign="top" width="70%" class="notopnoleftnoright">';
$max=5; $max=5;
$sql = "SELECT c.rowid, c.ref, c.fk_statut, c.facture, s.nom, s.rowid as socid,"; $sql = "SELECT c.rowid, c.ref, c.fk_statut, c.facture, s.nom, s.rowid as socid,";
$sql.= " ".$db->pdate("date_cloture")." as datec"; $sql.= " date_cloture as datec";
$sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; $sql.= " FROM ".MAIN_DB_PREFIX."commande as c";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@@ -162,7 +162,7 @@ if ($resql)
$commandestatic->ref=$obj->ref; $commandestatic->ref=$obj->ref;
print '<table class="nobordernopadding"><tr class="nocellnopadd">'; print '<table class="nobordernopadding"><tr class="nocellnopadd">';
print '<td width="90" class="nobordernopadding" nowrap="nowrap">'; print '<td width="94" class="nobordernopadding" nowrap="nowrap">';
print $commandestatic->getNomUrl(1); print $commandestatic->getNomUrl(1);
print '</td>'; print '</td>';
@@ -180,7 +180,7 @@ if ($resql)
print '</td>'; print '</td>';
print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>'; print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';
print '<td>'.dol_print_date($obj->datec).'</td>'; print '<td>'.dol_print_date($db->jdate($obj->datec)).'</td>';
print '<td align="right">'.$commandestatic->LibStatut($obj->fk_statut,$obj->facture,5).'</td>'; print '<td align="right">'.$commandestatic->LibStatut($obj->fk_statut,$obj->facture,5).'</td>';
print '</tr>'; print '</tr>';
$i++; $i++;
@@ -229,7 +229,7 @@ if ($conf->commande->enabled)
$commandestatic->ref=$obj->ref; $commandestatic->ref=$obj->ref;
print '<table class="nobordernopadding"><tr class="nocellnopadd">'; print '<table class="nobordernopadding"><tr class="nocellnopadd">';
print '<td width="90" class="nobordernopadding" nowrap="nowrap">'; print '<td width="94" class="nobordernopadding" nowrap="nowrap">';
print $commandestatic->getNomUrl(1); print $commandestatic->getNomUrl(1);
print '</td>'; print '</td>';
@@ -298,7 +298,7 @@ if ($conf->commande->enabled)
$commandestatic->ref=$obj->ref; $commandestatic->ref=$obj->ref;
print '<table class="nobordernopadding"><tr class="nocellnopadd">'; print '<table class="nobordernopadding"><tr class="nocellnopadd">';
print '<td width="90" class="nobordernopadding" nowrap="nowrap">'; print '<td width="94" class="nobordernopadding" nowrap="nowrap">';
print $commandestatic->getNomUrl(1); print $commandestatic->getNomUrl(1);
print '</td>'; print '</td>';

View File

@@ -1,9 +1,9 @@
<?php <?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org> * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copytight (C) 2004 Christophe Combelles <ccomb@free.fr> * Copytight (C) 2004 Christophe Combelles <ccomb@free.fr>
* Copytight (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copytight (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -29,12 +29,12 @@
require("./pre.inc.php"); // We use pre.inc.php to have a dynamic menu require("./pre.inc.php"); // We use pre.inc.php to have a dynamic menu
require_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php");
require_once(DOL_DOCUMENT_ROOT."/societe/societe.class.php"); require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/tva/tva.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/tva/class/tva.class.php");
require_once(DOL_DOCUMENT_ROOT."/fourn/facture/paiementfourn.class.php"); require_once(DOL_DOCUMENT_ROOT."/fourn/class/paiementfourn.class.php");
$langs->load("bills"); $langs->load("bills");
@@ -290,6 +290,8 @@ if ($account || $_GET["ref"])
/** /**
* Search form * Search form
*/ */
$param.='&amp;account='.$acct->id;
// Define transaction list navigation string // Define transaction list navigation string
$navig=''; $navig='';
@@ -297,7 +299,7 @@ if ($account || $_GET["ref"])
$nbpage=floor($total_lines/$viewline)+($total_lines % $viewline > 0?1:0); // Nombre de page total $nbpage=floor($total_lines/$viewline)+($total_lines % $viewline > 0?1:0); // Nombre de page total
if ($limitsql > $viewline) if ($limitsql > $viewline)
{ {
$navig.='<a href="account.php?account='.$acct->id.'&amp;page='.($page+1).$param.'">'.img_previous().'</a>'; $navig.='<a href="account.php?'.$param.'&amp;page='.($page+1).'">'.img_previous().'</a>';
} }
$navig.= ' Page '; $navig.= ' Page ';
$navig.='<input type="text" name="negpage" size="1" class="flat" value="'.($nbpage-$page).'">'; $navig.='<input type="text" name="negpage" size="1" class="flat" value="'.($nbpage-$page).'">';
@@ -311,7 +313,7 @@ if ($account || $_GET["ref"])
$navig.='/'.$nbpage.' '; $navig.='/'.$nbpage.' ';
if ($total_lines > $limitsql ) if ($total_lines > $limitsql )
{ {
$navig.= '<a href="account.php?account='.$acct->id.'&amp;page='.($page-1).$param.'">'.img_next().'</a>'; $navig.= '<a href="account.php?'.$param.'&amp;page='.($page-1).'">'.img_next().'</a>';
} }
$navig.='</form>'; $navig.='</form>';
@@ -344,13 +346,14 @@ if ($account || $_GET["ref"])
print '<input type="hidden" name="account" value="' . $acct->id . '">'; print '<input type="hidden" name="account" value="' . $acct->id . '">';
print '<tr>'; print '<tr>';
print '<td align="left" colspan="9"><b>'.$langs->trans("AddBankRecordLong").'</b></td>'; print '<td align="left" colspan="10"><b>'.$langs->trans("AddBankRecordLong").'</b></td>';
print '</tr>'; print '</tr>';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Date").'</td>'; print '<td>'.$langs->trans("Date").'</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td>'.$langs->trans("Type").'</td>'; print '<td>'.$langs->trans("Type").'</td>';
print '<td>'.$langs->trans("Numero").'</td>';
print '<td colspan="2">'.$langs->trans("Description").'</td>'; print '<td colspan="2">'.$langs->trans("Description").'</td>';
print '<td align=right>'.$langs->trans("Debit").'</td>'; print '<td align=right>'.$langs->trans("Debit").'</td>';
print '<td align=right>'.$langs->trans("Credit").'</td>'; print '<td align=right>'.$langs->trans("Credit").'</td>';
@@ -363,9 +366,10 @@ if ($account || $_GET["ref"])
print '</td>'; print '</td>';
print '<td nowrap="nowrap">'; print '<td nowrap="nowrap">';
$html->select_types_paiements((isset($_POST["operation"])?$_POST["operation"]:''),'operation','1,2',2,1); $html->select_types_paiements((isset($_POST["operation"])?$_POST["operation"]:''),'operation','1,2',2,1);
print '</td><td>';
print '<input name="num_chq" class="flat" type="text" size="4" value="'.(isset($_POST["num_chq"])?$_POST["num_chq"]:'').'"></td>'; print '<input name="num_chq" class="flat" type="text" size="4" value="'.(isset($_POST["num_chq"])?$_POST["num_chq"]:'').'"></td>';
print '<td colspan="2">'; print '<td colspan="2">';
print '<input name="label" class="flat" type="text" size="32" value="'.(isset($_POST["label"])?$_POST["label"]:'').'">'; print '<input name="label" class="flat" type="text" size="24" value="'.(isset($_POST["label"])?$_POST["label"]:'').'">';
if ($nbcategories) if ($nbcategories)
{ {
print '<br>'.$langs->trans("Category").': <select class="flat" name="cat1">'.$options.'</select>'; print '<br>'.$langs->trans("Category").': <select class="flat" name="cat1">'.$options.'</select>';
@@ -403,7 +407,7 @@ if ($account || $_GET["ref"])
else print '&nbsp;'; else print '&nbsp;';
print '</td></tr>'; print '</td></tr>';
print '<form action="'.$_SERVER["PHP_SELF"].'" name="search" method="POST">'; print '<form action="'.$_SERVER["PHP_SELF"].'?'.$param.'" name="search" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="search">'; print '<input type="hidden" name="action" value="search">';
print '<input type="hidden" name="account" value="' . $acct->id . '">'; print '<input type="hidden" name="account" value="' . $acct->id . '">';
@@ -461,15 +465,18 @@ if ($account || $_GET["ref"])
$sql.= " AND b.fk_account = ba.rowid"; $sql.= " AND b.fk_account = ba.rowid";
$sql.= " AND ba.entity = ".$conf->entity; $sql.= " AND ba.entity = ".$conf->entity;
$sql.= $sql_rech; $sql.= $sql_rech;
$sql.= $db->order("b.datev", "ASC"); $sql.= $db->order("b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day
$sql.= $db->plimit($limitsql, 0); $sql.= $db->plimit($limitsql, 0);
dol_syslog("account.php get transactions - sql=".$sql); dol_syslog("account.php get transactions - sql=".$sql);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$total = 0; $now=dol_now('tzserver');
$time = dol_now('tzserver'); $nows=dol_date('Ymd',$now);
//$html->load_cache_types_paiements();
//$html->cache_types_paiements
$var=true; $var=true;
@@ -479,16 +486,18 @@ if ($account || $_GET["ref"])
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$total = $total + $objp->amount; $total = price2num($total + $objp->amount,'MT');
if ($i >= ($nbline - $viewline)) if ($i >= ($nbline - $viewline))
{ {
$var=!$var; $var=!$var;
// Is it a transaction in future ? // Is it a transaction in future ?
if ($db->jdate($objp->do) > $time && !$sep) // Yes, we show a subtotal $dos=dol_date('Ymd',$db->jdate($objp->do));
//print "dos=".$dos." nows=".$nows;
if ($dos > $nows && !$sep) // Yes, we show a subtotal
{ {
$sep = 1 ; $sep = 1 ;
print '<tr class="liste_total"><td colspan="7">'; print '<tr class="liste_total"><td colspan="8">';
print $langs->trans("CurrentBalance"); print $langs->trans("CurrentBalance");
print '</td>'; print '</td>';
print "<td align=\"right\" nowrap><b>".price($total - $objp->amount)."</b></td>"; print "<td align=\"right\" nowrap><b>".price($total - $objp->amount)."</b></td>";
@@ -502,7 +511,12 @@ if ($account || $_GET["ref"])
print "<td nowrap>".dol_print_date($db->jdate($objp->dv),"day")."</td>\n"; print "<td nowrap>".dol_print_date($db->jdate($objp->dv),"day")."</td>\n";
print "<td nowrap>".$langs->trans($objp->fk_type)."</td>\n"; // Payment type
print "<td nowrap>";
$label=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$objp->fk_type;
if ($objp->fk_type == 'SOLD') $label='&nbsp;';
print $label;
print "</td>\n";
print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n"; print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n";
// Description // Description
@@ -565,11 +579,11 @@ if ($account || $_GET["ref"])
{ {
// Label generique car entre parentheses. On l'affiche en le traduisant // Label generique car entre parentheses. On l'affiche en le traduisant
if ($reg[1]=='paiement') $reg[1]='Payment'; if ($reg[1]=='paiement') $reg[1]='Payment';
print $langs->trans($reg[1]); print ' '.$langs->trans($reg[1]);
} }
else else
{ {
print $links[$key]['label']; print ' '.$links[$key]['label'];
} }
print '</a>'; print '</a>';
} }
@@ -680,7 +694,7 @@ if ($account || $_GET["ref"])
// Show total // Show total
if ($page == 0 && ! $mode_search) if ($page == 0 && ! $mode_search)
{ {
print '<tr class="liste_total"><td align="left" colspan="7">'; print '<tr class="liste_total"><td align="left" colspan="8">';
if ($sep) print '&nbsp;'; if ($sep) print '&nbsp;';
else print $langs->trans("CurrentBalance"); else print $langs->trans("CurrentBalance");
print '</td>'; print '</td>';

View File

@@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
$langs->load("banks"); $langs->load("banks");
$langs->load("companies"); $langs->load("companies");
@@ -38,7 +38,7 @@ $langs->load("companies");
llxHeader(); llxHeader();
$line = new AccountLine($db); $line = new AccountLine($db);
$line->fetch($_GET["rowid"], $user); $line->fetch($_GET["rowid"]);
$line->info($_GET["rowid"]); $line->info($_GET["rowid"]);

View File

@@ -2,7 +2,7 @@
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -20,13 +20,13 @@
*/ */
/** /**
\file htdocs/compta/deplacement/index.php * \file htdocs/compta/deplacement/index.php
\brief Page liste des deplacements * \brief Page liste des deplacements
\version $Id$ * \version $Id$
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/compta/tva/tva.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/tva/class/tva.class.php");
$langs->load("companies"); $langs->load("companies");
$langs->load("users"); $langs->load("users");
@@ -56,9 +56,9 @@ $pageprev = $page - 1;
$pagenext = $page + 1; $pagenext = $page + 1;
$sql = "SELECT s.nom, s.rowid as socid,"; // Ou $sql = "SELECT s.nom, s.rowid as socid,"; // Ou
$sql.= " d.rowid, d.type, ".$db->pdate("d.dated")." as dd, d.km, "; // Comment $sql.= " d.rowid, d.type, d.dated as dd, d.km, "; // Comment
$sql.= " u.name, u.firstname"; // Qui $sql.= " u.name, u.firstname"; // Qui
$sql.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u";
$sql.= ", ".MAIN_DB_PREFIX."deplacement as d"; $sql.= ", ".MAIN_DB_PREFIX."deplacement as d";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on d.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on d.fk_soc = s.rowid";
@@ -100,7 +100,7 @@ if ($resql)
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td><a href="fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowTrip"),"trip").' '.$objp->rowid.'</a></td>'; print '<td><a href="fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowTrip"),"trip").' '.$objp->rowid.'</a></td>';
print '<td>'.$langs->trans($objp->type).'</td>'; print '<td>'.$langs->trans($objp->type).'</td>';
print '<td>'.dol_print_date($objp->dd,'day').'</td>'; print '<td>'.dol_print_date($db->jdate($objp->dd),'day').'</td>';
if ($objp->socid) print '<td>'.$soc->getNomUrl(1).'</td>'; if ($objp->socid) print '<td>'.$soc->getNomUrl(1).'</td>';
else print '<td>&nbsp;</td>'; else print '<td>&nbsp;</td>';
print '<td align="left"><a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowUser"),"user").' '.$objp->firstname.' '.$objp->name.'</a></td>'; print '<td align="left"><a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowUser"),"user").' '.$objp->firstname.' '.$objp->name.'</a></td>';

View File

@@ -26,9 +26,9 @@
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/includes/modules/dons/modules_don.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/dons/modules_don.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT."/compta/dons/don.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/dons/class/don.class.php");
require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); require_once(DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/lib/project.lib.php'); if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/lib/project.lib.php');
$langs->load("companies"); $langs->load("companies");
@@ -250,7 +250,8 @@ if ($_GET["action"] == 'create')
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<tr><td class="fieldrequired">'.$langs->trans("Date").'</td><td>'.$donation_date; // Date
print '<tr><td class="fieldrequired">'.$langs->trans("Date").'</td><td>';
$html->select_date($donation_date?$donation_date:-1,'','','','',"add",1,1); $html->select_date($donation_date?$donation_date:-1,'','','','',"add",1,1);
print '</td>'; print '</td>';

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,8 @@
<!-- BEGIN PHP TEMPLATE --> <!-- BEGIN PHP TEMPLATE -->
<?php <?php
$langs->load("bills");
if ($somethingshown) { echo '<br>'; } if ($somethingshown) { echo '<br>'; }
if ($num > 1) print_titre($langs->trans("RelatedBills")); if ($num > 1) print_titre($langs->trans("RelatedBills"));
else print_titre($langs->trans("RelatedBill")); else print_titre($langs->trans("RelatedBill"));
@@ -33,7 +34,7 @@ else print_titre($langs->trans("RelatedBill"));
<td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td> <td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td>
<td align="right"><?php echo $langs->trans("Status"); ?></td> <td align="right"><?php echo $langs->trans("Status"); ?></td>
</tr> </tr>
<?php <?php
$var=true; $var=true;
for ($i = 0 ; $i < $num ; $i++) for ($i = 0 ; $i < $num ; $i++)
{ {
@@ -41,15 +42,14 @@ for ($i = 0 ; $i < $num ; $i++)
$var=!$var; $var=!$var;
?> ?>
<tr <?php echo $bc[$var]; ?> ><td> <tr <?php echo $bc[$var]; ?> ><td>
<a href="<?php echo DOL_URL_ROOT.'/compta/facture.php?facid='.$linkedObjectBlock->id.'">'.img_object($langs->trans("ShowBill"),"bill").' '.$linkedObjectBlock->ref; ?></a></td> <a href="<?php echo DOL_URL_ROOT.'/compta/facture.php?facid='.$linkedObjectBlock->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$linkedObjectBlock->ref; ?></a></td>
<td align="center"><?php echo dol_print_date($linkedObjectBlock->date,'day'); ?></td> <td align="center"><?php echo dol_print_date($linkedObjectBlock->date,'day'); ?></td>
<td align="right"><?php echo price($linkedObjectBlock->total_ht); ?></td> <td align="right"><?php echo price($linkedObjectBlock->total_ht); ?></td>
<td align="right"><?php echo $linkedObjectBlock->getLibStatut(3); ?></td> <td align="right"><?php echo $linkedObjectBlock->getLibStatut(3); ?></td>
</tr> </tr>
<?php <?php
$total = $total + $linkedObjectBlock->total_ht; $total = $total + $linkedObjectBlock->total_ht;
$i++; }
}
?> ?>
<tr class="liste_total"> <tr class="liste_total">
<td align="left" colspan="2"><?php echo $langs->trans("TotalHT"); ?></td> <td align="left" colspan="2"><?php echo $langs->trans("TotalHT"); ?></td>

View File

@@ -28,10 +28,10 @@
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT.'/paiement.class.php'); require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php');
require_once(DOL_DOCUMENT_ROOT.'/compta/facture/facture.class.php'); require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php');
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php"); require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php");
if ($conf->banque->enabled) require_once(DOL_DOCUMENT_ROOT.'/compta/bank/account.class.php'); if ($conf->banque->enabled) require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
$langs->load('bills'); $langs->load('bills');
$langs->load('banks'); $langs->load('banks');
@@ -169,8 +169,9 @@ print '<tr><td valign="top" width="140">'.$langs->trans('Ref').'</td><td colspan
// Date // Date
print '<tr><td valign="top" width="120">'.$langs->trans('Date').'</td><td colspan="3">'.dol_print_date($paiement->date,'day').'</td></tr>'; print '<tr><td valign="top" width="120">'.$langs->trans('Date').'</td><td colspan="3">'.dol_print_date($paiement->date,'day').'</td></tr>';
// Mode // Payment type (VIR, LIQ, ...)
print '<tr><td valign="top">'.$langs->trans('Mode').'</td><td colspan="3">'.$langs->trans("PaymentType".$paiement->type_code).'</td></tr>'; $labeltype=$langs->trans("PaymentType".$paiement->type_code)!=("PaymentType".$paiement->type_code)?$langs->trans("PaymentType".$paiement->type_code):$paiement->type_libelle;
print '<tr><td valign="top">'.$langs->trans('Mode').'</td><td colspan="3">'.$labeltype.'</td></tr>';
// Numero // Numero
//if ($paiement->montant) //if ($paiement->montant)

View File

@@ -24,8 +24,8 @@
*/ */
require('../main.inc.php'); require('../main.inc.php');
include_once(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php"); include_once(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
include_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); include_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
$langs->load("bills"); $langs->load("bills");
@@ -44,10 +44,12 @@ if ($user->societe_id > 0)
*/ */
if ($_POST["action"] == 'add_paiement') if ($_POST["action"] == 'add_paiement')
{ {
$error=0;
if ($_POST["cancel"]) if ($_POST["cancel"])
{ {
$loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid; $loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid;
Header("Location: $loc"); Header("Location: ".$loc);
exit; exit;
} }
@@ -63,12 +65,18 @@ if ($_POST["action"] == 'add_paiement')
$mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date"));
$error++; $error++;
} }
if ($conf->banque->enabled && ! $_POST["accountid"] > 0)
{
$mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit"));
$error++;
}
if (! $error) if (! $error)
{ {
$paiement_id = 0; $paymentid = 0;
// Read possible payments // Read possible payments
// FIXME add error message if no payment is defined
$amounts = array(); $amounts = array();
foreach ($_POST as $key => $value) foreach ($_POST as $key => $value)
{ {
@@ -90,9 +98,9 @@ if ($_POST["action"] == 'add_paiement')
$paiement->paiementtype = $_POST["paiementtype"]; $paiement->paiementtype = $_POST["paiementtype"];
$paiement->num_paiement = $_POST["num_paiement"]; $paiement->num_paiement = $_POST["num_paiement"];
$paiement->note = $_POST["note"]; $paiement->note = $_POST["note"];
$paiement_id = $paiement->create($user); $paymentid = $paiement->create($user);
if ($paiement_id > 0) if ($paymentid > 0)
{ {
// On determine le montant total du paiement // On determine le montant total du paiement
$total=0; $total=0;
@@ -108,7 +116,7 @@ if ($_POST["action"] == 'add_paiement')
$langs->load("banks"); $langs->load("banks");
$label = $langs->transnoentities("SocialContributionPayment"); $label = $langs->transnoentities("SocialContributionPayment");
$acc = new Account($db, $_POST["accountid"]); $acc = new Account($db, $_POST["accountid"]);
$bank_line_id = $acc->addline($paiement->datepaye, $paiement->paiementtype, $label, -abs($total), $paiement->num_paiement, '', $user); $bank_line_id = $acc->addline($paiement->datepaye, $paiement->paiementtype, $label, -$total, $paiement->num_paiement, '', $user);
// Mise a jour fk_bank dans llx_paiementcharge. On connait ainsi le paiement qui a genere l'ecriture bancaire // Mise a jour fk_bank dans llx_paiementcharge. On connait ainsi le paiement qui a genere l'ecriture bancaire
if ($bank_line_id > 0) if ($bank_line_id > 0)
@@ -125,7 +133,7 @@ if ($_POST["action"] == 'add_paiement')
$db->commit(); $db->commit();
$loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid; $loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid;
Header("Location: $loc"); Header("Location: ".$loc);
exit; exit;
} }
else { else {
@@ -136,7 +144,7 @@ if ($_POST["action"] == 'add_paiement')
else else
{ {
$db->rollback(); $db->rollback();
$mesg = "Failed to create payment: paiement_id=$paiement_id ".$db->error(); $mesg = "Failed to create payment: paiement_id=".$paymentid." ".$db->error();
} }
} }
@@ -208,13 +216,14 @@ if ($_GET["action"] == 'create')
print "<input type=\"hidden\" name=\"chid\" value=\"$chid\">"; print "<input type=\"hidden\" name=\"chid\" value=\"$chid\">";
print '<tr><td class="fieldrequired">'.$langs->trans("Date").'</td><td>'; print '<tr><td class="fieldrequired">'.$langs->trans("Date").'</td><td>';
$datepayment=empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; $datepaye = dol_mktime(12, 0 , 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]);
$datepayment=empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaye):0;
$html->select_date($datepayment,'','','','',"add_paiement",1,1); $html->select_date($datepayment,'','','','',"add_paiement",1,1);
print "</td>"; print "</td>";
print '<td>'.$langs->trans("Comments").'</td></tr>'; print '<td>'.$langs->trans("Comments").'</td></tr>';
print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>'; print '<tr><td class="fieldrequired">'.$langs->trans("PaymentMode").'</td><td>';
$html->select_types_paiements($charge->paiementtype, "paiementtype"); $html->select_types_paiements(isset($_POST["paiementtype"])?$_POST["paiementtype"]:$charge->paiementtype, "paiementtype");
print "</td>\n"; print "</td>\n";
print '<td rowspan="3" valign="top"><textarea name="comment" wrap="soft" cols="40" rows="'.ROWS_3.'"></textarea></td></tr>'; print '<td rowspan="3" valign="top"><textarea name="comment" wrap="soft" cols="40" rows="'.ROWS_3.'"></textarea></td></tr>';
@@ -222,7 +231,7 @@ if ($_GET["action"] == 'create')
print '<tr>'; print '<tr>';
print '<td class="fieldrequired">'.$langs->trans('AccountToCredit').'</td>'; print '<td class="fieldrequired">'.$langs->trans('AccountToCredit').'</td>';
print '<td>'; print '<td>';
$html->select_comptes($charge->accountid, "accountid", 0, "courant=1"); // Affiche liste des comptes courant $html->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$charge->accountid, "accountid", 0, "courant=1",1); // Affiche liste des comptes courant
print '</td></tr>'; print '</td></tr>';
print '<tr><td>'.$langs->trans('Numero'); print '<tr><td>'.$langs->trans('Numero');
@@ -235,7 +244,8 @@ if ($_GET["action"] == 'create')
$num = 1; $num = 1;
$i = 0; $i = 0;
print '<tr><td colspan="3">'; print '<tr><td colspan="3">';
print '<table class="noborder" width="100%">';
print '<table class="nobordernopadding" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
//print '<td>'.$langs->trans("SocialContribution").'</td>'; //print '<td>'.$langs->trans("SocialContribution").'</td>';
print '<td align="left">'.$langs->trans("DateDue").'</td>'; print '<td align="left">'.$langs->trans("DateDue").'</td>';

View File

@@ -0,0 +1,814 @@
<?php
/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file htdocs/compta/sociales/class/chargesociales.class.php
* \ingroup facture
* \brief Fichier de la classe des charges sociales
* \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
/** \class ChargeSociales
* \brief Classe permettant la gestion des paiements des charges
* La tva collectee n'est calculee que sur les factures payees.
*/
class ChargeSociales extends CommonObject
{
var $db;
var $error;
var $element='rowid';
var $table_element='chargesociales';
var $id;
var $date_ech;
var $lib;
var $type;
var $type_libelle;
var $amount;
var $paye;
var $periode;
function ChargeSociales($DB)
{
$this->db = $DB;
return 1;
}
/**
* \brief Retrouve et charge une charge sociale
* \return int 1 si trouve, 0 sinon
*/
function fetch($id)
{
$sql = "SELECT cs.rowid, cs.date_ech,";
$sql.= " cs.libelle as lib, cs.fk_type, cs.amount, cs.paye, cs.periode,";
$sql.= " c.libelle";
$sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as cs, ".MAIN_DB_PREFIX."c_chargesociales as c";
$sql.= " WHERE cs.fk_type = c.id";
$sql.= " AND cs.rowid = ".$id;
dol_syslog("ChargesSociales::fetch sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
if ($this->db->num_rows($resql))
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
$this->ref = $obj->rowid;
$this->date_ech = $this->db->jdate($obj->date_ech);
$this->lib = $obj->lib;
$this->type = $obj->fk_type;
$this->type_libelle = $obj->libelle;
$this->amount = $obj->amount;
$this->paye = $obj->paye;
$this->periode = $this->db->jdate($obj->periode);
return 1;
}
else
{
return 0;
}
$this->db->free($resql);
}
else
{
$this->error=$this->db->error();
return -1;
}
}
/**
* \brief Create a social contribution in database
* \param user User making creation
* \return int <0 if KO, id if OK
*/
function create($user)
{
// Nettoyage parametres
$newamount=price2num($this->amount,'MT');
// Validation parametres
if (! $newamount > 0)
{
$this->error="ErrorBadParameter";
return -2;
}
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."chargesociales (fk_type, libelle, date_ech, periode, amount)";
$sql.= " VALUES (".$this->type.",'".addslashes($this->lib)."',";
$sql.= " '".$this->db->idate($this->date_ech)."','".$this->db->idate($this->periode)."',";
$sql.= " ".price2num($newamount);
$sql.= ")";
dol_syslog("ChargesSociales::create sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$this->id=$this->db->last_insert_id(MAIN_DB_PREFIX."chargesociales");
//dol_syslog("ChargesSociales::create this->id=".$this->id);
$this->db->commit();
return $this->id;
}
else
{
$this->error=$this->db->error();
$this->db->rollback();
return -1;
}
}
/**
* \brief Efface un charge sociale
* \param user Utilisateur qui cree le paiement
* \return int <0 si erreur, >0 si ok
*/
function delete($user)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales where rowid='".$this->id."'";
dol_syslog("ChargesSociales::delete sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
return 1;
}
else
{
$this->error=$this->db->error();
return -1;
}
}
/**
* \brief Met a jour une charge sociale
* \param user Utilisateur qui modifie
* \return int <0 si erreur, >0 si ok
*/
function update($user)
{
$this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales";
$sql.= " SET libelle='".addslashes($this->lib)."',";
$sql.= " date_ech='".$this->db->idate($this->date_ech)."',";
$sql.= " periode='".$this->db->idate($this->periode)."'";
$sql.= " WHERE rowid=".$this->id;
dol_syslog("ChargesSociales::update sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$this->db->commit();
return 1;
}
else
{
$this->error=$this->db->error();
$this->db->rollback();
return -1;
}
}
function solde($year = 0)
{
$sql = "SELECT sum(f.amount) as amount";
$sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as f WHERE paye = 0";
if ($year) {
$sql .= " AND f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' ";
}
$result = $this->db->query($sql);
if ($result) {
if ($this->db->num_rows()) {
$obj = $this->db->fetch_object();
return $obj->amount;
} else {
return 0;
}
$this->db->free();
} else {
print $this->db->error();
return -1;
}
}
/**
* \brief Tag la charge comme payee completement
* \param rowid id de la ligne a modifier
*/
function set_paid($rowid)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales set paye=1 WHERE rowid = ".$rowid;
$return = $this->db->query( $sql);
}
/**
* \brief Retourne le libelle du statut d'une charge (impaye, payee)
* \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long
* \return string Libelle
*/
function getLibStatut($mode=0)
{
return $this->LibStatut($this->paye,$mode);
}
/**
* \brief Renvoi le libelle d'un statut donne
* \param statut Id statut
* \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* \return string Libelle du statut
*/
function LibStatut($statut,$mode=0)
{
global $langs;
$langs->load('customers');
if ($mode == 0)
{
if ($statut == 0) return $langs->trans("Unpaid");
if ($statut == 1) return $langs->trans("Paid");
}
if ($mode == 1)
{
if ($statut == 0) return $langs->trans("Unpaid");
if ($statut == 1) return $langs->trans("Paid");
}
if ($mode == 2)
{
if ($statut == 0) return img_picto($langs->trans("Unpaid"), 'statut1').' '.$langs->trans("Unpaid");
if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6').' '.$langs->trans("Paid");
}
if ($mode == 3)
{
if ($statut == 0) return img_picto($langs->trans("Unpaid"), 'statut1');
if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6');
}
if ($mode == 4)
{
if ($statut == 0) return img_picto($langs->trans("Unpaid"), 'statut1').' '.$langs->trans("Unpaid");
if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6').' '.$langs->trans("Paid");
}
if ($mode == 5)
{
if ($statut == 0) return $langs->trans("Unpaid").' '.img_picto($langs->trans("Unpaid"), 'statut1');
if ($statut == 1) return $langs->trans("Paid").' '.img_picto($langs->trans("Paid"), 'statut6');
}
return "Error, mode/status not found";
}
/**
* \brief Renvoie nom clicable (avec eventuellement le picto)
* \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul
* \param maxlen Longueur max libelle
* \return string Chaine avec URL
*/
function getNomUrl($withpicto=0,$maxlen=0)
{
global $langs;
$result='';
if (empty($this->ref)) $this->ref=$this->lib;
$lien = '<a href="'.DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$this->id.'">';
$lienfin='</a>';
if ($withpicto) $result.=($lien.img_object($langs->trans("ShowSocialContribution").': '.$this->lib,'bill').$lienfin.' ');
if ($withpicto && $withpicto != 2) $result.=' ';
if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin;
return $result;
}
/**
* \brief Return amount aof payments already done
* \return int Amount of payment already done, <0 if KO
*/
function getSommePaiement()
{
$table='paiementcharge';
$field='fk_charge';
$sql = 'SELECT sum(amount) as amount';
$sql.= ' FROM '.MAIN_DB_PREFIX.$table;
$sql.= ' WHERE '.$field.' = '.$this->id;
dol_syslog("ChargeSociales::getSommePaiement sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($resql);
$this->db->free($resql);
return $obj->amount;
}
else
{
return -1;
}
}
}
/** \class PaiementCharge
* \brief Classe permettant la gestion des paiements des charges
*/
class PaiementCharge extends CommonObject
{
var $db; //!< To store db handler
var $error; //!< To return error code (or message)
var $errors=array(); //!< To return several error codes (or messages)
var $element='paiementcharge'; //!< Id that identify managed objects
var $table_element='paiementcharge'; //!< Name of table without prefix where object is stored
var $id;
var $ref;
var $fk_charge;
var $datec='';
var $tms='';
var $datep='';
var $amount;
var $fk_typepaiement;
var $num_paiement;
var $note;
var $fk_bank;
var $fk_user_creat;
var $fk_user_modif;
/**
* \brief Constructor
* \param DB Database handler
*/
function Paiementcharge($DB)
{
$this->db = $DB;
return 1;
}
/**
* \brief Creation d'un paiement de charge sociale dans la base
* \param user Utilisateur qui cree le paiement
* \return int <0 si KO, id du paiement cree si OK
*/
function create($user)
{
global $conf, $langs;
$error=0;
// Validation parametres
if (! $this->datepaye)
{
$this->error='ErrorBadValueForParameters';
return -1;
}
$now=dol_now();
// Clean parameters
if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge);
if (isset($this->amount)) $this->amount=trim($this->amount);
if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement);
if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement);
if (isset($this->note)) $this->note=trim($this->note);
if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank);
if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat);
if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif);
$this->db->begin();
$total=0;
foreach ($this->amounts as $key => $value)
{
$facid = $key;
$amount = price2num(trim($value), 'MT');
$total += $amount;
}
if ($total != 0)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."paiementcharge (fk_charge, datec, datep, amount,";
$sql.= " fk_typepaiement, num_paiement, note, fk_user_creat, fk_bank)";
$sql.= " VALUES ($this->chid, '".$this->db->idate($now)."', ";
$sql.= " '".$this->db->idate($this->datepaye)."', ";
$sql.= price2num($total);
$sql.= ", ".$this->paiementtype.", '".addslashes($this->num_paiement)."', '".addslashes($this->note)."', ".$user->id.",";
$sql.= "0)";
dol_syslog("PaiementCharge::create sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."paiementcharge");
}
else
{
$error++;
}
}
if ($total != 0 && ! $error)
{
$this->db->commit();
return $this->id;
}
else
{
$this->error=$this->db->error();
dol_syslog("PaiementCharges::create ".$this->error, LOG_ERR);
$this->db->rollback();
return -1;
}
}
/**
* \brief Load object in memory from database
* \param id id object
* \return int <0 if KO, >0 if OK
*/
function fetch($id)
{
global $langs;
$sql = "SELECT";
$sql.= " t.rowid,";
$sql.= " t.fk_charge,";
$sql.= " t.datec,";
$sql.= " t.tms,";
$sql.= " t.datep,";
$sql.= " t.amount,";
$sql.= " t.fk_typepaiement,";
$sql.= " t.num_paiement,";
$sql.= " t.note,";
$sql.= " t.fk_bank,";
$sql.= " t.fk_user_creat,";
$sql.= " t.fk_user_modif,";
$sql.= " pt.code as type_code, pt.libelle as type_libelle,";
$sql.= ' b.fk_account';
$sql.= " FROM (".MAIN_DB_PREFIX."paiementcharge as t, ".MAIN_DB_PREFIX."c_paiement as pt)";
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid';
$sql.= " WHERE t.rowid = ".$id." AND t.fk_typepaiement = pt.id";
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
{
if ($this->db->num_rows($resql))
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
$this->ref = $obj->rowid;
$this->fk_charge = $obj->fk_charge;
$this->datec = $this->db->jdate($obj->datec);
$this->tms = $this->db->jdate($obj->tms);
$this->datep = $this->db->jdate($obj->datep);
$this->amount = $obj->amount;
$this->fk_typepaiement = $obj->fk_typepaiement;
$this->num_paiement = $obj->num_paiement;
$this->note = $obj->note;
$this->fk_bank = $obj->fk_bank;
$this->fk_user_creat = $obj->fk_user_creat;
$this->fk_user_modif = $obj->fk_user_modif;
$this->type_code = $obj->type_code;
$this->type_libelle = $obj->type_libelle;
$this->bank_account = $obj->fk_account;
$this->bank_line = $obj->fk_bank;
}
$this->db->free($resql);
return 1;
}
else
{
$this->error="Error ".$this->db->lasterror();
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
return -1;
}
}
/**
* \brief Update database
* \param user User that modify
* \param notrigger 0=launch triggers after, 1=disable triggers
* \return int <0 if KO, >0 if OK
*/
function update($user=0, $notrigger=0)
{
global $conf, $langs;
$error=0;
// Clean parameters
if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge);
if (isset($this->amount)) $this->amount=trim($this->amount);
if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement);
if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement);
if (isset($this->note)) $this->note=trim($this->note);
if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank);
if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat);
if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif);
// Check parameters
// Put here code to add control on parameters values
// Update request
$sql = "UPDATE ".MAIN_DB_PREFIX."paiementcharge SET";
$sql.= " fk_charge=".(isset($this->fk_charge)?$this->fk_charge:"null").",";
$sql.= " datec=".(strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').",";
$sql.= " tms=".(strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').",";
$sql.= " datep=".(strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').",";
$sql.= " amount=".(isset($this->amount)?$this->amount:"null").",";
$sql.= " fk_typepaiement=".(isset($this->fk_typepaiement)?$this->fk_typepaiement:"null").",";
$sql.= " num_paiement=".(isset($this->num_paiement)?"'".addslashes($this->num_paiement)."'":"null").",";
$sql.= " note=".(isset($this->note)?"'".addslashes($this->note)."'":"null").",";
$sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").",";
$sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").",";
$sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null")."";
$sql.= " WHERE rowid=".$this->id;
$this->db->begin();
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
if (! $error)
{
if (! $notrigger)
{
// Uncomment this and change MYOBJECT to your own tag if you
// want this action call a trigger.
//// Call triggers
//include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
//$interface=new Interfaces($this->db);
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
//// End call triggers
}
}
// Commit or rollback
if ($error)
{
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else
{
$this->db->commit();
return 1;
}
}
/**
* \brief Delete object in database
* \param user User that delete
* \param notrigger 0=launch triggers after, 1=disable triggers
* \return int <0 if KO, >0 if OK
*/
function delete($user, $notrigger=0)
{
global $conf, $langs;
$error=0;
$this->db->begin();
if (! $error)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url";
$sql.= " WHERE type='payment_sc' AND url_id=".$this->id;
dol_syslog(get_class($this)."::delete sql=".$sql);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
}
if (! $error)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge";
$sql.= " WHERE rowid=".$this->id;
dol_syslog(get_class($this)."::delete sql=".$sql);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
}
if (! $error)
{
if (! $notrigger)
{
// Uncomment this and change MYOBJECT to your own tag if you
// want this action call a trigger.
//// Call triggers
//include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
//$interface=new Interfaces($this->db);
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
//// End call triggers
}
}
// Commit or rollback
if ($error)
{
foreach($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error.=($this->error?', '.$errmsg:$errmsg);
}
$this->db->rollback();
return -1*$error;
}
else
{
$this->db->commit();
return 1;
}
}
/**
* \brief Load an object from its id and create a new one in database
* \param fromid Id of object to clone
* \return int New id of clone
*/
function createFromClone($fromid)
{
global $user,$langs;
$error=0;
$object=new Paiementcharge($this->db);
$this->db->begin();
// Load source object
$object->fetch($fromid);
$object->id=0;
$object->statut=0;
// Clear fields
// ...
// Create clone
$result=$object->create($user);
// Other options
if ($result < 0)
{
$this->error=$object->error;
$error++;
}
if (! $error)
{
}
// End
if (! $error)
{
$this->db->commit();
return $object->id;
}
else
{
$this->db->rollback();
return -1;
}
}
/**
* \brief Initialise object with example values
* \remarks id must be 0 if object instance is a specimen.
*/
function initAsSpecimen()
{
$this->id=0;
$this->fk_charge='';
$this->datec='';
$this->tms='';
$this->datep='';
$this->amount='';
$this->fk_typepaiement='';
$this->num_paiement='';
$this->note='';
$this->fk_bank='';
$this->fk_user_creat='';
$this->fk_user_modif='';
}
/**
* \brief Mise a jour du lien entre le paiement de charge et la ligne dans llx_bank generee
* \param id_bank Id de la banque
* \return int >0 si OK, <=0 si KO
*/
function update_fk_bank($id_bank)
{
$sql = "UPDATE llx_paiementcharge set fk_bank = ".$id_bank." where rowid = ".$this->id;
dol_syslog("PaiementCharge::update_fk_bank sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
return 1;
}
else
{
$this->error=$this->db->error();
dol_syslog("PaiementCharges::update_fk_bank ".$this->error, LOG_ERR);
return 0;
}
}
/**
* \brief Renvoie nom clicable (avec eventuellement le picto)
* \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul
* \param maxlen Longueur max libelle
* \return string Chaine avec URL
*/
function getNomUrl($withpicto=0,$maxlen=0)
{
global $langs;
$result='';
if (empty($this->ref)) $this->ref=$this->lib;
if (!empty($this->id))
{
$lien = '<a href="'.DOL_URL_ROOT.'/compta/payment_sc/fiche.php?id='.$this->id.'">';
$lienfin='</a>';
if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$lienfin.' ');
if ($withpicto && $withpicto != 2) $result.=' ';
if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin;
}
return $result;
}
}
?>

View File

@@ -21,12 +21,12 @@
/** /**
* \file htdocs/compta/sociales/index.php * \file htdocs/compta/sociales/index.php
* \ingroup tax * \ingroup tax
* \brief Ecran des charges sociales * \brief Page to list all social contributions
* \version $Id$ * \version $Id$
*/ */
require('../../main.inc.php'); require('../../main.inc.php');
require(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php"); require(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
// Security check // Security check
$socid = isset($_GET["socid"])?$_GET["socid"]:''; $socid = isset($_GET["socid"])?$_GET["socid"]:'';
@@ -71,7 +71,6 @@ else
* View * View
*/ */
llxHeader(); llxHeader();
$html = new Form($db); $html = new Form($db);
@@ -100,7 +99,7 @@ if ($filtre) {
if ($typeid) { if ($typeid) {
$sql .= " AND s.fk_type=".$typeid; $sql .= " AND s.fk_type=".$typeid;
} }
$sql.=$db->order($sortfield,$sortorder); $sql.= $db->order($sortfield,$sortorder);
$sql.= $db->plimit($limit+1,$offset); $sql.= $db->plimit($limit+1,$offset);
@@ -131,83 +130,96 @@ if ($resql)
print $mesg."<br>"; print $mesg."<br>";
} }
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
print "<table class=\"noborder\" width=\"100%\">"; if (empty($mysoc->pays_id) && empty($mysoc->pays_code))
print "<tr class=\"liste_titre\">";
print_liste_field_titre($langs->trans("Ref"),"index.php","id","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Label"),"index.php","s.libelle","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Type"),"index.php","type","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("PeriodEndDate"),"index.php","periode","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Amount"),"index.php","s.amount","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateDue"),"index.php","de","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),"index.php","s.paye","",$param,'align="right"',$sortfield,$sortorder);
print "</tr>\n";
print '<tr class="liste_titre">';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
// Type
print '<td class="liste_titre" align="left">';
$html->select_type_socialcontrib($typeid,'typeid',1,16,0);
print '</td>';
// Period end date
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="right">';
print '<input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">';
print '</td>';
print "</tr>\n";
while ($i < min($num,$limit))
{ {
$obj = $db->fetch_object($resql); print '<div class="error">';
$langs->load("errors");
$var = !$var; $countrynotdefined=$langs->trans("ErrorSetACountryFirst");
print "<tr $bc[$var]>"; print $countrynotdefined;
print '</div>';
// Ref
print '<td width="60">';
$chargesociale_static->id=$obj->id;
$chargesociale_static->lib=$obj->id;
$chargesociale_static->ref=$obj->id;
print $chargesociale_static->getNomUrl(1,'20');
print '</td>';
// Label
print '<td>'.dol_trunc($obj->libelle,42).'</td>';
// Type
print '<td>'.dol_trunc($obj->type_lib,16).'</td>';
// Date end period
print '<td align="center">';
if ($obj->periode)
{
print '<a href="index.php?year='.strftime("%Y",$db->jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode),'day').'</a>';
}
else
{
print '&nbsp;';
}
print '</td>';
print '<td align="right" width="100">'.price($obj->amount).'</td>';
// Due date
print '<td width="110" align="center">'.dol_print_date($db->jdate($obj->de), 'day').'</td>';
print '<td align="right" nowrap="nowrap">'.$chargesociale_static->LibStatut($obj->paye,5).'</a></td>';
print '</tr>';
$i++;
} }
else
{
print '</table>'; print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
print '</form>'; print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
print_liste_field_titre($langs->trans("Ref"),"index.php","id","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Label"),"index.php","s.libelle","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Type"),"index.php","type","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("PeriodEndDate"),"index.php","periode","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Amount"),"index.php","s.amount","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateDue"),"index.php","s.date_ech","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),"index.php","s.paye","",$param,'align="right"',$sortfield,$sortorder);
print "</tr>\n";
print '<tr class="liste_titre">';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
// Type
print '<td class="liste_titre" align="left">';
$html->select_type_socialcontrib($typeid,'typeid',1,16,0);
print '</td>';
// Period end date
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="right">';
print '<input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">';
print '</td>';
print "</tr>\n";
while ($i < min($num,$limit))
{
$obj = $db->fetch_object($resql);
$var = !$var;
print "<tr $bc[$var]>";
// Ref
print '<td width="60">';
$chargesociale_static->id=$obj->id;
$chargesociale_static->lib=$obj->id;
$chargesociale_static->ref=$obj->id;
print $chargesociale_static->getNomUrl(1,'20');
print '</td>';
// Label
print '<td>'.dol_trunc($obj->libelle,42).'</td>';
// Type
print '<td>'.dol_trunc($obj->type_lib,16).'</td>';
// Date end period
print '<td align="center">';
if ($obj->periode)
{
print '<a href="index.php?year='.strftime("%Y",$db->jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode),'day').'</a>';
}
else
{
print '&nbsp;';
}
print '</td>';
print '<td align="right" width="100">'.price($obj->amount).'</td>';
// Due date
print '<td width="110" align="center">'.dol_print_date($db->jdate($obj->date_ech), 'day').'</td>';
print '<td align="right" nowrap="nowrap">'.$chargesociale_static->LibStatut($obj->paye,5).'</a></td>';
print '</tr>';
$i++;
}
print '</table>';
print '</form>';
}
} }
else else
{ {

View File

@@ -0,0 +1,532 @@
<?php
/* Copyright (c) 2008 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file htdocs/core/class/html.formfile.class.php
* \brief Fichier de la classe des fonctions predefinie de composants html fichiers
* \version $Id$
*/
/**
* \class FormFile
* \brief Classe permettant la generation de composants html fichiers
*/
class FormFile
{
var $db;
var $error;
/**
* \brief Constructeur
* \param DB handler d'acces base de donnee
*/
function FormFile($DB)
{
$this->db = $DB;
return 1;
}
/**
* \brief Show file add form
* \param url Url
* \param title Title zone
* \param addcancel 1=Add 'Cancel' button
* \param sectionid If upload must be done inside a particular ECM section
* \param perm Value of permission to allow upload
* \return int <0 si ko, >0 si ok
*/
function form_attach_new_file($url, $title='', $addcancel=0, $sectionid=0, $perm=1)
{
global $conf,$langs;
print "\n\n<!-- Start form attach new file -->\n";
if (! $title) $title=$langs->trans("AttachANewFile");
print_titre($title);
print '<form name="userfile" action="'.$url.'" enctype="multipart/form-data" method="POST">';
print '<input type="hidden" name="section" value="'.$sectionid.'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<table width="100%" class="nobordernopadding">';
print '<tr><td width="50%" valign="top">';
$max=$conf->global->MAIN_UPLOAD_DOC; // En Kb
$maxphp=@ini_get('upload_max_filesize'); // En inconnu
if (preg_match('/m$/i',$maxphp)) $maxphp=$maxphp*1024;
if (preg_match('/k$/i',$maxphp)) $maxphp=$maxphp;
// Now $max and $maxphp are in Kb
if ($maxphp > 0) $max=min($max,$maxphp);
if ($max > 0)
{
print '<input type="hidden" name="max_file_size" value="'.($max*1024).'">';
}
print '<input class="flat" type="file" name="userfile" size="70"';
print (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled="true"':'');
print '>';
print ' &nbsp; ';
print '<input type="submit" class="button" name="sendit" value="'.$langs->trans("Upload").'"';
print (empty($conf->global->MAIN_UPLOAD_DOC) || empty($perm)?' disabled="true"':'');
print '>';
if ($addcancel)
{
print ' &nbsp; ';
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
}
if (! empty($conf->global->MAIN_UPLOAD_DOC))
{
if ($perm)
{
print ' ('.$langs->trans("MaxSize").': '.$max.' '.$langs->trans("Kb");
print ' '.info_admin($langs->trans("ThisLimitIsDefinedInSetup",$max,$maxphp),1);
print ')';
}
}
else
{
print ' ('.$langs->trans("UploadDisabled").')';
}
print "</td></tr>";
print "</table>";
print '</form>';
if (empty($sectionid)) print '<br>';
print "\n<!-- End form attach new file -->\n\n";
return 1;
}
/**
* \brief Show the box with list of available documents for object
* \param modulepart propal=propal, facture=facture, ...
* \param filename Sub dir to scan (Example: '9/9', 'FA9999'). Use '' if filedir already complete)
* \param filedir Dir to scan
* \param urlsource Url of origin page (for return)
* \param genallowed Generation is allowed (1/0 or array of formats)
* \param delallowed Remove is allowed (1/0)
* \param modelselected Model to preselect by default
* \param allowgenifempty Show warning if no model activated
* \param forcenomultilang Do not show language option (even if MAIN_MULTILANGS defined)
* \param iconPDF Show only PDF icon with link (1/0)
* \param maxfilenamelength Max length for filename shown
* \param noform Do not output html form tags
* \param param More param on http links
* \param title Title to show on top of form
* \param buttonlabel Label on submit button
* \param codelang Default language code to use on lang combo box if multilang is enabled
* \return int <0 if KO, number of shown files if OK
*/
function show_documents($modulepart,$filename,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='')
{
// filedir = conf->...dir_ouput."/".get_exdir(id)
include_once(DOL_DOCUMENT_ROOT.'/lib/files.lib.php');
global $langs,$bc,$conf;
$var=true;
if ($iconPDF == 1)
{
$genallowed = '';
$delallowed = 0;
$modelselected = '';
$forcenomultilang=0;
}
$filename = dol_sanitizeFileName($filename);
$headershown=0;
$showempty=0;
$i=0;
print "\n".'<!-- Start show_document -->'."\n";
//print 'filedir='.$filedir;
// Affiche en-tete tableau
if ($genallowed)
{
$modellist=array();
if ($modulepart == 'company')
{
$showempty=1;
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/societe/modules_societe.class.php');
$model=new ModeleThirdPartyDoc();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'propal')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/propale/modules_propale.php');
$model=new ModelePDFPropales();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'commande')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/commande/modules_commande.php');
$model=new ModelePDFCommandes();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'expedition')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/expedition/pdf/ModelePdfExpedition.class.php');
$model=new ModelePDFExpedition();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'livraison')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/livraison/modules_livraison.php');
$model=new ModelePDFDeliveryOrder();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'ficheinter')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/fichinter/modules_fichinter.php');
$model=new ModelePDFFicheinter();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'facture')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/facture/modules_facture.php');
$model=new ModelePDFFactures();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'project')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/project/modules_project.php');
$model=new ModelePDFProjects();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'export')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/export/modules_export.php');
$model=new ModeleExports();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'commande_fournisseur')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php');
$model=new ModelePDFSuppliersOrders();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'facture_fournisseur')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/fourn/facture/modules/modules_facturefournisseur.php');
$model=new ModelePDFFacturesSuppliers();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'remisecheque')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/cheque/pdf/modules_chequereceipts.php');
$model=new ModeleChequeReceipts();
$modellist=$model->liste_modeles($this->db);
}
}
elseif ($modulepart == 'donation')
{
if (is_array($genallowed)) $modellist=$genallowed;
else
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/dons/modules_don.php');
$model=new ModeleDon();
$modellist=$model->liste_modeles($this->db);
}
}
else if ($modulepart == 'unpaid')
{
$modellist='';
}
else
{
dol_print_error($this->db,'Bad value for modulepart');
return -1;
}
$headershown=1;
$html = new Form($db);
$buttonlabeltoshow=$buttonlabel;
if (empty($buttonlabel)) $buttonlabel=$langs->trans('Generate');
if (empty($noform)) print '<form action="'.$urlsource.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc').'" method="post">';
print '<input type="hidden" name="action" value="builddoc">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print_titre($langs->trans("Documents"));
print '<table class="border" summary="listofdocumentstable" width="100%">';
print '<tr '.$bc[$var].'>';
// Model
if (! empty($modellist))
{
print '<td align="center">';
print $langs->trans('Model').' ';
print $html->selectarray('model',$modellist,$modelselected,$showempty,0,0);
print '</td>';
}
else
{
print '<td align="left">';
print $langs->trans("Files");
print '</td>';
}
// Language code (if multilang)
print '<td align="center">';
if (($allowgenifempty || (is_array($modellist) && sizeof($modellist) > 0)) && $conf->global->MAIN_MULTILANGS && ! $forcenomultilang)
{
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php');
$formadmin=new FormAdmin($this->db);
$defaultlang=$codelang?$codelang:$langs->getDefaultLang();
$formadmin->select_lang($defaultlang);
}
else
{
print '&nbsp;';
}
print '</td>';
// Button
print '<td align="center" colspan="'.($delallowed?'2':'1').'">';
print '<input class="button" ';
//print ((is_array($modellist) && sizeof($modellist))?'':' disabled="true"') // Always allow button "Generate" (even if no model activated)
print ' type="submit" value="'.$buttonlabel.'"';
if (! $allowgenifempty && ! is_array($modellist) && empty($modellist)) print ' disabled="true"';
print '>';
if ($allowgenifempty && ! is_array($modellist) && empty($modellist) && $modulepart != 'unpaid')
{
$langs->load("errors");
print ' '.img_warning($langs->trans("WarningNoDocumentModelActivated"));
}
print '</td>';
print '</tr>';
}
// Get list of files
$png = '';
$filter = '';
if ($iconPDF==1)
{
$png = '\.png$';
$filter = $filename.'.pdf';
}
$file_list=dol_dir_list($filedir,'files',0,$filter,'\.meta$'.($png?'|'.$png:''),'date',SORT_DESC);
// Affiche en-tete tableau si non deja affiche
if (sizeof($file_list) && ! $headershown && !$iconPDF)
{
$headershown=1;
$titletoshow=$langs->trans("Documents");
if (! empty($title)) $titletoshow=$title;
print_titre($titletoshow);
print '<table class="border" summary="listofdocumentstable" width="100%">';
}
// Loop on each file found
foreach($file_list as $i => $file)
{
$var=!$var;
// Define relative path for download link (depends on module)
$relativepath=$file["name"]; // Cas general
if ($filename) $relativepath=$filename."/".$file["name"]; // Cas propal, facture...
// Autre cas
if ($modulepart == 'donation') { $relativepath = get_exdir($filename,2).$file["name"]; }
if ($modulepart == 'export') { $relativepath = $file["name"]; }
if (!$iconPDF) print "<tr ".$bc[$var].">";
// Show file name with link to download
if (!$iconPDF) print '<td nowrap="nowrap">';
print '<a href="'.DOL_URL_ROOT . '/document.php?modulepart='.$modulepart.'&amp;file='.urlencode($relativepath).'">';
if (!$iconPDF)
{
print img_mime($file["name"],$langs->trans("File").': '.$file["name"]).' '.dol_trunc($file["name"],$maxfilenamelength);
}
else
{
print img_pdf($file["name"],2);
}
print '</a>';
if (!$iconPDF) print '</td>';
// Affiche taille fichier
if (!$iconPDF) print '<td align="right" nowrap="nowrap">'.dol_print_size(dol_filesize($filedir."/".$file["name"])).'</td>';
// Affiche date fichier
if (!$iconPDF) print '<td align="right" nowrap="nowrap">'.dol_print_date(dol_filemtime($filedir."/".$file["name"]),'dayhour').'</td>';
if ($delallowed)
{
print '<td align="right"><a href="'.DOL_URL_ROOT.'/document.php?action=remove_file&amp;modulepart='.$modulepart.'&amp;file='.urlencode($relativepath);
print ($param?'&amp;'.$param:'');
print '&amp;urlsource='.urlencode($urlsource);
print '">'.img_delete().'</a></td>';
}
if (!$iconPDF) print '</tr>';
$i++;
}
if ($headershown)
{
// Affiche pied du tableau
print "</table>\n";
if ($genallowed)
{
if (empty($noform)) print '</form>'."\n";
}
}
print '<!-- End show_document -->'."\n";
return ($i?$i:$headershown);
}
/**
* \brief Show list of documents in a directory
* \param filearray Array of files loaded by dol_dir_list function
* \param object Object on which document is linked to
* \param modulepart Value for modulepart used by download wrapper
* \param param Parameters on sort links
* \param forcedownload Force to open dialog box "Save As" when clicking on file
* \param relativepath Relative path of docs (autodefined if not provided)
* \param permtodelete Permission to delete
* \param useinecm Change output for use in ecm module
* \param textifempty Text to show if filearray is empty
* \return int <0 if KO, nb of files shown if OK
*/
function list_of_documents($filearray,$object,$modulepart,$param,$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0)
{
global $user, $conf, $langs;
global $bc;
global $sortfield, $sortorder;
// Affiche liste des documents existant
if (empty($useinecm)) print_titre($langs->trans("AttachedFiles"));
else { $bc[true]=''; $bc[false]=''; };
$url=$_SERVER["PHP_SELF"];
print '<table width="100%" class="nobordernopadding">';
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Documents2"),$_SERVER["PHP_SELF"],"name","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Size"),$_SERVER["PHP_SELF"],"size","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"date","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre('','','');
print '</tr>';
$var=true;
foreach($filearray as $key => $file)
{
if (!is_dir($dir.$file['name'])
&& $file['name'] != '.'
&& $file['name'] != '..'
&& $file['name'] != 'CVS'
&& ! preg_match('/\.meta$/i',$file['name']))
{
// Define relative path used to store the file
if (! $relativepath) $relativepath=dol_sanitizeFileName($object->ref).'/';
$var=!$var;
print "<tr $bc[$var]><td>";
//print "XX".$file['name']; //$file['name'] must be utf8
print '<a href="'.DOL_URL_ROOT.'/document.php?modulepart='.$modulepart;
if ($forcedownload) print '&attachment=1';
print '&file='.urlencode($relativepath.$file['name']).'">';
print img_mime($file['name'],$file['name'].' ('.dol_print_size($file['size'],0,0).')').' ';
print dol_trunc($file['name'],$maxlength,'middle');
print '</a>';
print "</td>\n";
print '<td align="right">'.dol_print_size($file['size'],1,1).'</td>';
print '<td align="center">'.dol_print_date($file['date'],"dayhour").'</td>';
print '<td align="right">';
//print '&nbsp;';
if ($permtodelete)
print '<a href="'.$url.'?id='.$object->id.'&section='.$_REQUEST["section"].'&action=delete&urlfile='.urlencode($file['name']).'">'.img_delete().'</a>';
else
print '&nbsp;';
print "</td></tr>\n";
}
}
if (sizeof($filearray) == 0)
{
print '<tr '.$bc[$var].'><td colspan="4">';
if (empty($textifempty)) print $langs->trans("NoFileFound");
else print $textifempty;
print '</td></tr>';
}
print "</table>";
// Fin de zone
}
}
?>

View File

@@ -0,0 +1,238 @@
<?php
/* Copyright (C) 2003-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
\file htdocs/core/class/notify.class.php
\brief Fichier de la classe de gestion des notifications
\version $Id$
*/
require_once(DOL_DOCUMENT_ROOT ."/lib/CMailFile.class.php");
/**
\class Notify
\brief Classe de gestion des notifications
*/
class Notify
{
var $id;
var $db;
var $error;
var $author;
var $ref;
var $date;
var $duree;
var $note;
var $fk_project;
// Les codes actions sont definis dans la table llx_notify_def
// \todo utiliser des codes texte plutot que numerique
// 1 = Validation fiche inter
// 2 = Validation facture
/**
* \brief Constructeur
* \param DB Handler acces base
*/
function Notify($DB)
{
$this->db = $DB ;
}
/**
* \brief Renvoie le message signalant les notifications qui auront lieu sur
* un evenement pour affichage dans texte de confirmation evenement.
* \param action Id of action in llx_action_def
* \param socid Id of third party
* \return string Message
*/
function confirmMessage($action,$socid)
{
global $langs;
$langs->load("mails");
$nb=$this->countDefinedNotifications($action,$socid);
if ($nb <= 0) $texte=$langs->trans("NoNotificationsWillBeSent");
if ($nb == 1) $texte=img_object($langs->trans("Notifications"),'email').' '.$langs->trans("ANotificationsWillBeSent");
if ($nb >= 2) $texte=img_object($langs->trans("Notifications"),'email').' '.$langs->trans("SomeNotificationsWillBeSent",$nb);
return $texte;
}
/**
* \brief Return number of notifications activated for action code and third party
* \param action Code of action in llx_action_def (new usage) or Id of action in llx_action_def (old usage)
* \param socid Id of third party
* \return int <0 si ko, sinon nombre de notifications definies
*/
function countDefinedNotifications($action,$socid)
{
$num=-1;
$sql = "SELECT n.rowid, c.email, c.rowid, c.name, c.firstname, a.code, a.titre, s.nom";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."action_def as a, ".MAIN_DB_PREFIX."notify_def as n, ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE n.fk_contact = c.rowid AND a.rowid = n.fk_action";
$sql.= " AND n.fk_soc = s.rowid";
if (is_numeric($action)) $sql.= " AND n.fk_action = ".$action; // Old usage
else $sql.= " AND a.code = '".$action."'"; // New usage
$sql.= " AND s.rowid = ".$socid;
dol_syslog("Notify.class::countDefinedNotifications $action, $socid");
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
}
else
{
$this->error=$this->db->error.' sql='.$sql;
return -1;
}
return $num;
}
/**
* \brief Check if notification are active for couple action/company.
* If yes, send mail and save trace into llx_notify.
* \param action Code of action in llx_action_def (new usage) or Id of action in llx_action_def (old usage)
* \param socid Id of third party
* \param texte Message to send
* \param objet_type Type of object the notification deals on (facture, order, propal, order_supplier...). Just for log in llx_notify.
* \param objet_id Id of object the notification deals on
* \param file Attach a file
* \return int <0 if KO, or number of changes if OK
*/
function send($action, $socid, $texte, $objet_type, $objet_id, $file="")
{
global $conf,$langs,$mysoc,$dolibarr_main_url_root;
$langs->load("other");
dol_syslog("Notify::send action=$action, socid=$socid, texte=$texte, objet_type=$objet_type, objet_id=$objet_id, file=$file");
$sql = "SELECT s.nom, c.email, c.rowid as cid, c.name, c.firstname,";
$sql.= " a.rowid as adid, a.titre, a.code, n.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."action_def as a, ".MAIN_DB_PREFIX."notify_def as n, ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE n.fk_contact = c.rowid AND a.rowid = n.fk_action";
$sql.= " AND n.fk_soc = s.rowid";
if (is_numeric($action)) $sql.= " AND n.fk_action = ".$action; // Old usage
else $sql.= " AND a.code = '".$action."'"; // New usage
$sql .= " AND s.rowid = ".$socid;
dol_syslog("Notify::send sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
$num = $this->db->num_rows($result);
$i = 0;
while ($i < $num) // For each notification couple defined (third party/actioncode)
{
$obj = $this->db->fetch_object($result);
$sendto = $obj->firstname . " " . $obj->name . " <".$obj->email.">";
$actiondefid = $obj->adid;
if (strlen($sendto))
{
include_once(DOL_DOCUMENT_ROOT.'/lib/files.lib.php');
$application=($conf->global->MAIN_APPLICATION_TITLE?$conf->global->MAIN_APPLICATION_TITLE:'Dolibarr ERP/CRM');
$subject = '['.$application.'] '.$langs->transnoentitiesnoconv("DolibarrNotification");
$message = $langs->transnoentities("YouReceiveMailBecauseOfNotification",$application,$mysoc->name)."\n";
$message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2",$application,$mysoc->name)."\n";
$message.= "\n";
$message.= $texte;
// Add link
switch($objet_type)
{
case 'ficheinter':
$link=DOL_URL_ROOT.'/fichinter/fiche.php?id='.$objet_id;
break;
case 'propal':
$link=DOL_URL_ROOT.'/comm/propal.php?id='.$objet_id;
break;
case 'facture':
$link=DOL_URL_ROOT.'/facture/fiche.php?facid='.$objet_id;
break;
case 'order':
$link=DOL_URL_ROOT.'/commande/fiche.php?facid='.$objet_id;
break;
case 'order_supplier':
$link=DOL_URL_ROOT.'/fourn/commande/fiche.php?facid='.$objet_id;
break;
}
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$dolibarr_main_url_root);
if ($link) $message.="\n".$urlwithouturlroot.$link;
$filename = basename($file);
$mimefile=dol_mimetype($file);
$msgishtml=0;
$replyto = $conf->notification->email_from;
$mailfile = new CMailFile($subject,
$sendto,
$replyto,
$message,
array($file),
array($mimefile),
array($filename[sizeof($filename)-1]),
'', '', 0, $msgishtml
);
if ( $mailfile->sendfile() )
{
$sendto = htmlentities($sendto);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_contact, objet_type, objet_id, email)";
$sql.= " VALUES (".$this->db->idate(mktime()).", ".$actiondefid." ,".$obj->cid." , '".$objet_type."', ".$objet_id.", '".addslashes($obj->email)."')";
dol_syslog("Notify::send sql=".$sql);
if (! $this->db->query($sql) )
{
dol_print_error($this->db);
}
}
else
{
$this->error=$mailfile->error;
//dol_syslog("Notify::send ".$this->error, LOG_ERR);
}
}
$i++;
}
return $i;
}
else
{
$this->error=$this->db->error();
return -1;
}
}
}
?>

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2003-2008 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2008 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com> * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* *
@@ -28,16 +28,16 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/expedition/expedition.class.php"); require_once(DOL_DOCUMENT_ROOT."/expedition/class/expedition.class.php");
require_once(DOL_DOCUMENT_ROOT."/includes/modules/expedition/pdf/ModelePdfExpedition.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/expedition/pdf/ModelePdfExpedition.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT."/product/html.formproduct.class.php"); require_once(DOL_DOCUMENT_ROOT."/product/class/html.formproduct.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/product.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/product.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php");
if ($conf->produit->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/product.class.php"); if ($conf->product->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/propal.class.php"); if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php");
if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php"); if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php");
if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.class.php"); if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/class/entrepot.class.php");
$langs->load("sendings"); $langs->load("sendings");
$langs->load("companies"); $langs->load("companies");
@@ -48,12 +48,12 @@ $langs->load('stocks');
$langs->load('other'); $langs->load('other');
$langs->load('propal'); $langs->load('propal');
$origin = "expedition";
$origin_id = isset($_GET["id"])?$_GET["id"]:'';
$id = $origin_id;
$origin = $_GET["origin"]?$_GET["origin"]:$_POST["origin"]; // Example: commande, propal $origin = $_GET["origin"]?$_GET["origin"]:$_POST["origin"]; // Example: commande, propal
$origin_id = $_GET["origin_id"]?$_GET["origin_id"]:$_POST["origin_id"]; // Id of order or propal $origin_id = isset($_REQUEST["id"])?$_REQUEST["id"]:'';
if (empty($origin_id)) $origin_id = $_GET["origin_id"]?$_GET["origin_id"]:$_POST["origin_id"]; // Id of order or propal
if (empty($origin_id)) $origin_id = $_GET["object_id"]?$_GET["object_id"]:$_POST["object_id"]; // Id of order or propal
$id = $origin_id;
// Security check // Security check
@@ -72,7 +72,6 @@ if ($_POST["action"] == 'add')
// Creation de l'objet expedition // Creation de l'objet expedition
$expedition = new Expedition($db); $expedition = new Expedition($db);
$expedition->date_expedition = time();
$expedition->note = $_POST["note"]; $expedition->note = $_POST["note"];
$expedition->origin = $origin; $expedition->origin = $origin;
$expedition->origin_id = $origin_id; $expedition->origin_id = $origin_id;
@@ -83,8 +82,8 @@ if ($_POST["action"] == 'add')
$expedition->size_units = $_POST["size_units"]; $expedition->size_units = $_POST["size_units"];
$expedition->weight_units = $_POST["weight_units"]; $expedition->weight_units = $_POST["weight_units"];
// On boucle sur chaque ligne du document d'origine pour completer objet expedition // On va boucler sur chaque ligne du document d'origine pour completer objet expedition
// avec qte a livrer // avec info diverses + qte a livrer
$classname = ucfirst($expedition->origin); $classname = ucfirst($expedition->origin);
$object = new $classname($db); $object = new $classname($db);
$object->fetch($expedition->origin_id); $object->fetch($expedition->origin_id);
@@ -92,19 +91,21 @@ if ($_POST["action"] == 'add')
$expedition->socid = $object->socid; $expedition->socid = $object->socid;
$expedition->ref_customer = $object->ref_client; $expedition->ref_customer = $object->ref_client;
$expedition->date_delivery = $object->date_livraison; $expedition->date_delivery = $object->date_livraison; // Date delivery planed
$expedition->fk_delivery_address = $object->fk_delivery_address; $expedition->fk_delivery_address = $object->fk_delivery_address;
$expedition->expedition_method_id = $_POST["expedition_method_id"]; $expedition->expedition_method_id = $_POST["expedition_method_id"];
$expedition->tracking_number = $_POST["tracking_number"]; $expedition->tracking_number = $_POST["tracking_number"];
//var_dump($_POST);exit;
for ($i = 0 ; $i < sizeof($object->lignes) ; $i++) for ($i = 0 ; $i < sizeof($object->lignes) ; $i++)
{ {
$ent = "entl".$i;
$idl = "idl".$i;
$qty = "qtyl".$i; $qty = "qtyl".$i;
$entrepot_id = $_POST[$ent]?$_POST[$ent]:$_POST["entrepot_id"];
if ($_POST[$qty] > 0) if ($_POST[$qty] > 0)
{ {
$ent = "entl".$i;
$idl = "idl".$i;
$entrepot_id = isset($_POST[$ent])?$_POST[$ent]:$_POST["entrepot_id"];
$expedition->addline($entrepot_id,$_POST[$idl],$_POST[$qty]); $expedition->addline($entrepot_id,$_POST[$idl],$_POST[$qty]);
} }
} }
@@ -126,7 +127,7 @@ if ($_POST["action"] == 'add')
} }
/* /*
* Genere un bon de livraison * Build a receiving receipt
*/ */
if ($_GET["action"] == 'create_delivery' && $conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer) if ($_GET["action"] == 'create_delivery' && $conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer)
{ {
@@ -189,6 +190,72 @@ if ($_REQUEST["action"] == 'confirm_delete' && $_REQUEST["confirm"] == 'yes')
} }
} }
if ($_REQUEST["action"] == 'open')
{
if ($user->rights->expedition->valider )
{
$expedition = new Expedition($db);
$expedition->fetch($_GET["id"]);
$result = $expedition->setStatut(0);
if ($result < 0)
{
$mesg = $expedition->error;
}
}
}
if ($_POST['action'] == 'setdate_livraison' && $user->rights->expedition->creer)
{
//print "x ".$_POST['liv_month'].", ".$_POST['liv_day'].", ".$_POST['liv_year'];
$datelivraison=dol_mktime(0, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']);
$shipping = new Expedition($db);
$shipping->fetch($_GET['id']);
$result=$shipping->set_date_livraison($user,$datelivraison);
if ($result < 0)
{
$mesg='<div class="error">'.$shipping->error.'</div>';
}
}
// Action update description of emailing
if ($_REQUEST["action"] == 'settrackingnumber' || $_REQUEST["action"] == 'settrackingurl'
|| $_REQUEST["action"] == 'settrueWeight'
|| $_REQUEST["action"] == 'settrueWidth'
|| $_REQUEST["action"] == 'settrueHeight'
|| $_REQUEST["action"] == 'settrueDepth'
|| $_REQUEST["action"] == 'setexpedition_method_id')
{
$error=0;
$shipping = new Expedition($db);
$result=$shipping->fetch($_REQUEST['id']);
if ($result < 0) dol_print_error($db,$shipping->error);
if ($_REQUEST["action"] == 'settrackingnumber') $shipping->tracking_number = trim($_REQUEST["trackingnumber"]);
if ($_REQUEST["action"] == 'settrackingurl') $shipping->tracking_url = trim($_REQUEST["trackingurl"]);
if ($_REQUEST["action"] == 'settrueWeight') $shipping->trueWeight = trim($_REQUEST["trueWeight"]);
if ($_REQUEST["action"] == 'settrueWidth') $shipping->trueWidth = trim($_REQUEST["trueWidth"]);
if ($_REQUEST["action"] == 'settrueHeight') $shipping->trueHeight = trim($_REQUEST["trueHeight"]);
if ($_REQUEST["action"] == 'settrueDepth') $shipping->trueDepth = trim($_REQUEST["trueDepth"]);
if ($_REQUEST["action"] == 'setexpedition_method_id') $shipping->expedition_method_id = trim($_REQUEST["expedition_method_id"]);
if (! $error)
{
if ($shipping->update($user) >= 0)
{
Header("Location: fiche.php?id=".$shipping->id);
exit;
}
$mesg=$shipping->error;
}
$mesg='<div class="error">'.$mesg.'</div>';
$_GET["action"]="";
$_GET["id"]=$_REQUEST["id"];
}
/* /*
* Build doc * Build doc
*/ */
@@ -242,7 +309,6 @@ $formproduct = new FormProduct($db);
*********************************************************************/ *********************************************************************/
if ($_GET["action"] == 'create') if ($_GET["action"] == 'create')
{ {
$expe = new Expedition($db); $expe = new Expedition($db);
print_fiche_titre($langs->trans("CreateASending")); print_fiche_titre($langs->trans("CreateASending"));
@@ -262,21 +328,22 @@ if ($_GET["action"] == 'create')
$object = new $classname($db); $object = new $classname($db);
if ($object->fetch($origin_id)) if ($object->fetch($origin_id)) // This include the fetch_lines
{ {
//var_dump($object);
$soc = new Societe($db); $soc = new Societe($db);
$soc->fetch($object->socid); $soc->fetch($object->socid);
$author = new User($db); $author = new User($db);
$author->id = $object->user_author_id; $author->fetch($object->user_author_id);
$author->fetch();
if ($conf->stock->enabled) $entrepot = new Entrepot($db); if ($conf->stock->enabled) $entrepot = new Entrepot($db);
/* /*
* Document source * Document source
*/ */
print '<form action="fiche.php" method="post">'; print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="origin" value="'.$origin.'">'; print '<input type="hidden" name="origin" value="'.$origin.'">';
@@ -290,13 +357,13 @@ if ($_GET["action"] == 'create')
// Ref // Ref
print '<tr><td width="30%">'; print '<tr><td width="30%">';
if ($conf->commande->enabled) if ($origin == 'commande' && $conf->commande->enabled)
{ {
print $langs->trans("RefOrder").'</td><td colspan="3"><a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$object->id.'">'.img_object($langs->trans("ShowOrder"),'order').' '.$object->ref; print $langs->trans("RefOrder").'</td><td colspan="3"><a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$object->id.'">'.img_object($langs->trans("ShowOrder"),'order').' '.$object->ref;
} }
else if ($origin == 'propal' && $conf->propal->enabled)
{ {
print $langs->trans("RefProposal").'</td><td colspan="3"><a href="'.DOL_URL_ROOT.'/comm/fiche.php?propalid='.$object->id.'">'.img_object($langs->trans("ShowProposal"),'propal').' '.$object->ref; print $langs->trans("RefProposal").'</td><td colspan="3"><a href="'.DOL_URL_ROOT.'/comm/fiche.php?id='.$object->id.'">'.img_object($langs->trans("ShowProposal"),'propal').' '.$object->ref;
} }
print '</a></td>'; print '</a></td>';
print "</tr>\n"; print "</tr>\n";
@@ -313,13 +380,12 @@ if ($_GET["action"] == 'create')
print '<td colspan="3">'.$soc->getNomUrl(1).'</td>'; print '<td colspan="3">'.$soc->getNomUrl(1).'</td>';
print '</tr>'; print '</tr>';
// Date
print "<tr><td>".$langs->trans("Date")."</td>";
print '<td colspan="3">'.dol_print_date($object->date,"day")."</td></tr>\n";
// Date delivery planned // Date delivery planned
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>'; print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
print '<td colspan="3">'.dol_print_date($object->date_livraison,'day')."</td>\n"; print '<td colspan="3">';
print dol_print_date($object->date_livraison,"day");
//$html->select_date($object->date_livraison,'date_delivery');
print "</td>\n";
print '</tr>'; print '</tr>';
// Delivery address // Delivery address
@@ -330,53 +396,44 @@ if ($_GET["action"] == 'create')
print '<td colspan="3">'; print '<td colspan="3">';
if (!empty($object->fk_delivery_address)) if (!empty($object->fk_delivery_address))
{ {
$html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'none','commande',$object->id); $html->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$_GET['socid'],'none','commande',$object->id);
} }
print '</td></tr>'."\n"; print '</td></tr>'."\n";
} }
// Warehouse (id forced)
if ($conf->stock->enabled && $_GET["entrepot_id"])
{
print '<tr><td>'.$langs->trans("Warehouse").'</td>';
print '<td colspan="3">';
$ents = $entrepot->list_array();
print '<a href="'.DOL_URL_ROOT.'/product/stock/fiche.php?id='.$_GET["entrepot_id"].'">'.img_object($langs->trans("ShowWarehouse"),'stock').' '.$ents[$_GET["entrepot_id"]].'</a>';
print '</td></tr>';
}
if ($object->note && ! $user->societe_id) if ($object->note && ! $user->societe_id)
{ {
print '<tr><td colspan="3">'.$langs->trans("NotePrivate").': '.nl2br($object->note)."</td></tr>"; print '<tr><td>'.$langs->trans("NotePrivate").'</td>';
print '<td colspan="3">'.nl2br($object->note)."</td></tr>";
} }
print '<tr><td>'; print '<tr><td>';
print $langs->trans("Weight"); print $langs->trans("Weight");
print '</td><td><input name="weight" size="4" value=""></td><td>'; print '</td><td><input name="weight" size="4" value="'.$_POST["weight"].'"></td><td>';
print $formproduct->select_measuring_units("weight_units","weight"); print $formproduct->select_measuring_units("weight_units","weight",$_POST["weight_units"]);
print '</td></tr><tr><td>'; print '</td></tr><tr><td>';
print $langs->trans("Width"); print $langs->trans("Width");
print ' </td><td><input name="sizeW" size="4" value=""></td>'; print ' </td><td><input name="sizeW" size="4" value="'.$_POST["sizeW"].'"></td><td rowspan="3">';
print '<td>&nbsp;</td></tr><tr><td>';
print $langs->trans("Height");
print '</td><td><input name="sizeH" size="4" value=""></td><td>';
print $formproduct->select_measuring_units("size_units","size"); print $formproduct->select_measuring_units("size_units","size");
print '</td></tr><tr><td>'; print '</td></tr><tr><td>';
print $langs->trans("Height");
print '</td><td><input name="sizeH" size="4" value="'.$_POST["sizeH"].'"></td>';
print '</tr><tr><td>';
print $langs->trans("Depth"); print $langs->trans("Depth");
print '</td><td><input name="sizeS" size="4" value=""></td>'; print '</td><td><input name="sizeS" size="4" value="'.$_POST["sizeS"].'"></td>';
print '<td>&nbsp;</td></tr>'; print '</tr>';
// Delivery method // Delivery method
print "<tr><td>".$langs->trans("DeliveryMethod")."</td>"; print "<tr><td>".$langs->trans("DeliveryMethod")."</td>";
print '<td colspan="3">'; print '<td colspan="3">';
$expe->fetch_delivery_methods(); $expe->fetch_delivery_methods();
$html->select_array("expedition_method_id",$expe->meths,'',1,0,0,0,"",1); $html->select_array("expedition_method_id",$expe->meths,$_POST["expedition_method_id"],1,0,0,0,"",1);
print "</td></tr>\n"; print "</td></tr>\n";
// Tracking number // Tracking number
print "<tr><td>".$langs->trans("TrackingNumber")."</td>"; print "<tr><td>".$langs->trans("TrackingNumber")."</td>";
print '<td colspan="3">'; print '<td colspan="3">';
print '<input name="tracking_number" size="20">'; print '<input name="tracking_number" size="20" value="'.$_POST["tracking_number"].'">';
print "</td></tr>\n"; print "</td></tr>\n";
print "</table>"; print "</table>";
@@ -399,21 +456,16 @@ if ($_GET["action"] == 'create')
print '<td>'.$langs->trans("Description").'</td>'; print '<td>'.$langs->trans("Description").'</td>';
print '<td align="center">'.$langs->trans("QtyOrdered").'</td>'; print '<td align="center">'.$langs->trans("QtyOrdered").'</td>';
print '<td align="center">'.$langs->trans("QtyShipped").'</td>'; print '<td align="center">'.$langs->trans("QtyShipped").'</td>';
print '<td align="center">'.$langs->trans("QtyToShip").'</td>'; print '<td align="left">'.$langs->trans("QtyToShip").'</td>';
if ($conf->stock->enabled) if ($conf->stock->enabled)
{ {
if ($_GET["entrepot_id"]) print '<td align="left">'.$langs->trans("Warehouse").' / '.$langs->trans("Stock").'</td>';
{
print '<td align="right">'.$langs->trans("Stock").'</td>';
}
else
{
print '<td align="left">'.$langs->trans("Warehouse").'</td>';
}
} }
print "</tr>\n"; print "</tr>\n";
} }
$product_static = new Product($db);
$var=true; $var=true;
$indiceAsked = 0; $indiceAsked = 0;
while ($indiceAsked < $numAsked) while ($indiceAsked < $numAsked)
@@ -422,37 +474,63 @@ if ($_GET["action"] == 'create')
$line = $object->lines[$indiceAsked]; $line = $object->lines[$indiceAsked];
$var=!$var; $var=!$var;
// Show product and description
$type=$line->product_type?$line->product_type:$line->fk_product_type;
// Try to enhance type detection using date_start and date_end for free lines where type
// was not saved.
if (! empty($line->date_start)) $type=1;
if (! empty($line->date_end)) $type=1;
print "<tr ".$bc[$var].">\n"; print "<tr ".$bc[$var].">\n";
// Desc // Product label
if ($line->fk_product > 0) if ($line->fk_product > 0)
{ {
$product->fetch($line->fk_product); $product->fetch($line->fk_product);
$product->load_stock();
print '<td>'; print '<td>';
print '<a href="'.DOL_URL_ROOT.'/product/fiche.php?id='.$line->fk_product.'">'; print '<a name="'.$line->rowid.'"></a>'; // ancre pour retourner sur la ligne
if ($line->product_type == 1)
// Show product and description
$product_static->type=$line->fk_product_type;
$product_static->id=$line->fk_product;
$product_static->ref=$line->ref;
$product_static->libelle=$line->product_label;
$text=$product_static->getNomUrl(1);
$text.= ' - '.$line->product_label;
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->desc));
print $html->textwithtooltip($text,$description,3,'','',$i);
// Show range
print_date_range($db->jdate($line->date_start),$db->jdate($line->date_end));
// Add description in form
if ($conf->global->PRODUIT_DESC_IN_FORM)
{ {
print img_object($langs->trans("ShowService"),"service"); print ($line->desc && $line->desc!=$line->product_label)?'<br>'.dol_htmlentitiesbr($line->desc):'';
} }
else
{
print img_object($langs->trans("ShowProduct"),"product");
}
print ' '.$product->ref.'</a> - '.$product->libelle;
if ($line->desc) print '<br>'.dol_nl2br(dol_htmlcleanlastbr($line->desc),1);
print '</td>'; print '</td>';
} }
else else
{ //var_dump($ligne); {
print "<td>".nl2br($line->desc)."</td>\n"; print "<td>";
if ($type==1) $text = img_object($langs->trans('Service'),'service');
else $text = img_object($langs->trans('Product'),'product');
print $text.' '.nl2br($line->desc);
// Show range
print_date_range($db->jdate($line->date_start),$db->jdate($line->date_end));
print "</td>\n";
} }
// Qty // Qty
print '<td align="center">'.$line->qty.'</td>'; print '<td align="center">'.$line->qty.'</td>';
$qtyProdCom=$line->qty; $qtyProdCom=$line->qty;
// Sendings // Qty already sent
print '<td align="center">'; print '<td align="center">';
$quantityDelivered = $object->expeditions[$line->id]; $quantityDelivered = $object->expeditions[$line->id];
print $quantityDelivered; print $quantityDelivered;
@@ -461,81 +539,63 @@ if ($_GET["action"] == 'create')
$quantityAsked = $line->qty; $quantityAsked = $line->qty;
$quantityToBeDelivered = $quantityAsked - $quantityDelivered; $quantityToBeDelivered = $quantityAsked - $quantityDelivered;
if ($conf->stock->enabled && $line->product_type == 0) $defaultqty=0;
if ($_REQUEST["entrepot_id"])
{ {
$defaultqty=0; //var_dump($product);
if ($_GET["entrepot_id"]) $stock = $product->stock_warehouse[$_REQUEST["entrepot_id"]]->real;
{ $stock+=0; // Convertit en numerique
$stock = $product->stock_entrepot[$_GET["entrepot_id"]]; $defaultqty=min($quantityToBeDelivered, $stock);
$stock+=0; // Convertit en numerique if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0;
$defaultqty=min($quantityToBeDelivered, $stock); }
if ($defaultqty < 0) $defaultqty=0;
}
// Quantity // Quantity to send
print '<td align="center">'; print '<td align="left">';
if ($line->product_type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES))
{
print '<input name="idl'.$indiceAsked.'" type="hidden" value="'.$line->id.'">'; print '<input name="idl'.$indiceAsked.'" type="hidden" value="'.$line->id.'">';
print '<input name="qtyl'.$indiceAsked.'" type="text" size="6" value="'.$defaultqty.'">'; print '<input name="qtyl'.$indiceAsked.'" type="text" size="4" value="'.$defaultqty.'">';
print '</td>'; }
else print '0';
print '</td>';
// Stock // Stock
if ($_GET["entrepot_id"]) if ($conf->stock->enabled)
{
print '<td align="left">';
if ($line->product_type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES))
{ {
print '<td align="right">'; // Show warehous
print $stock; if ($_REQUEST["entrepot_id"])
if ($stock < $quantityToBeDelivered)
{ {
print ' '.img_warning($langs->trans("StockTooLow")); $formproduct->selectWarehouses($_REQUEST["entrepot_id"],'entl'.$indiceAsked,'',1,0,$line->fk_product);
} //print $stock.' '.$quantityToBeDelivered;
print '</td>'; //if ($stock >= 0 && $stock < $quantityToBeDelivered)
} if ($stock < $quantityToBeDelivered)
else
{
$array=array();
$sql = "SELECT e.rowid, e.label, ps.reel";
$sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
$sql.= ", ".MAIN_DB_PREFIX."entrepot as e";
$sql.= " WHERE ps.fk_entrepot = e.rowid";
$sql.= " AND fk_product = '".$product->id."'";
$result = $db->query($sql) ;
if ($result)
{
$num = $db->num_rows($result);
$i=0;
if ($num > 0)
{ {
while ($i < $num) print ' '.img_warning($langs->trans("StockTooLow"));
{
$obj = $db->fetch_object($result);
$array[$obj->rowid] = $obj->label.' ('.$obj->reel.')';
$i++;
}
} }
$db->free($result);
} }
else else
{ {
$this->error=$db->error(); $formproduct->selectWarehouses('','entl'.$indiceAsked,'',1,0,$line->fk_product);
return -1;
} }
print '<td align="left">';
$html->select_array('entl'.$i,$array,'',1,0,0);
print '</td>';
} }
else
{
print $langs->trans("Service");
}
print '</td>';
} }
else /*else
{ {
// Quantity // Quantity
print '<td align="center" '.$colspan.'>'; print '<td align="center" '.$colspan.'>';
print '<input name="idl'.$indiceAsked.'" type="hidden" value="'.$line->id.'">'; print '<input name="idl'.$indiceAsked.'" type="hidden" value="'.$line->id.'">';
print '<input name="qtyl'.$indiceAsked.'" type="text" size="6" value="'.$quantityToBeDelivered.'">'; print '<input name="qtyl'.$indiceAsked.'" type="text" size="4" value="'.$quantityToBeDelivered.'">';
print '</td>'; print '</td>';
if ($line->product_type == 1) print '<td>&nbsp;</td>'; if ($line->product_type == 1) print '<td>&nbsp;</td>';
} }*/
print "</tr>\n"; print "</tr>\n";
@@ -582,10 +642,10 @@ else
/* */ /* */
/* *************************************************************************** */ /* *************************************************************************** */
{ {
if ($_GET["id"] > 0) if (! empty($_REQUEST["id"]) || ! empty($_REQUEST["ref"]))
{ {
$expedition = new Expedition($db); $expedition = new Expedition($db);
$result = $expedition->fetch($_GET["id"]); $result = $expedition->fetch($_REQUEST["id"],$_REQUEST["ref"]);
if ($result < 0) if ($result < 0)
{ {
dol_print_error($db,$expedition->error); dol_print_error($db,$expedition->error);
@@ -673,7 +733,9 @@ else
// Ref // Ref
print '<tr><td width="20%">'.$langs->trans("Ref").'</td>'; print '<tr><td width="20%">'.$langs->trans("Ref").'</td>';
print '<td colspan="3">'.$expedition->ref.'</td></tr>'; print '<td colspan="3">';
print $html->showrefnav($expedition,'ref','',1,'ref','ref');
print '</td></tr>';
// Customer // Customer
print '<tr><td width="20%">'.$langs->trans("Customer").'</td>'; print '<tr><td width="20%">'.$langs->trans("Customer").'</td>';
@@ -709,14 +771,34 @@ else
print '<td colspan="3">'.$expedition->ref_customer."</a></td>\n"; print '<td colspan="3">'.$expedition->ref_customer."</a></td>\n";
print '</tr>'; print '</tr>';
// Date // Date creation
print '<tr><td>'.$langs->trans("Date").'</td>'; print '<tr><td>'.$langs->trans("DateCreation").'</td>';
print '<td colspan="3">'.dol_print_date($expedition->date,"daytext")."</td>\n"; print '<td colspan="3">'.dol_print_date($expedition->date_creation,"daytext")."</td>\n";
print '</tr>'; print '</tr>';
// Date delivery planned // Delivery date planed
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>'; print '<tr><td height="10">';
print '<td colspan="3">'.dol_print_date($expedition->date_delivery,'daytext')."</td>\n"; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('DateDeliveryPlanned');
print '</td>';
if ($_GET['action'] != 'editdate_livraison') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&amp;id='.$expedition->id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="2">';
if ($_GET['action'] == 'editdate_livraison')
{
print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$expedition->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="setdate_livraison">';
$html->select_date($expedition->date_delivery?$expedition->date_delivery:-1,'liv_','','','',"setdate_livraison");
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
print '</form>';
}
else
{
print $expedition->date_delivery ? dol_print_date($expedition->date_delivery,'daytext') : '&nbsp;';
}
print '</td>';
print '</tr>'; print '</tr>';
// Delivery address // Delivery address
@@ -727,30 +809,19 @@ else
print '<td colspan="3">'; print '<td colspan="3">';
if (!empty($expedition->fk_delivery_address)) if (!empty($expedition->fk_delivery_address))
{ {
$html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$expedition->id,$expedition->fk_delivery_address,$expedition->deliveryaddress->socid,'none','shipment',$expedition->id); $html->form_address($_SERVER['PHP_SELF'].'?id='.$expedition->id,$expedition->fk_delivery_address,$expedition->deliveryaddress->socid,'none','shipment',$expedition->id);
} }
print '</td></tr>'."\n"; print '</td></tr>'."\n";
} }
// Weight // Weight
print '<tr><td>'.$langs->trans("TotalWeight").'</td>'; print '<tr><td>'.$html->editfieldkey("Weight",'trueWeight',$expedition->trueWeight,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
print '<td colspan="3">'; print $html->editfieldval("Weight",'trueWeight',$expedition->trueWeight,'id',$expedition->id,$user->rights->expedition->creer);
if ($expedition->trueWeight) print $expedition->weight_units?measuring_units_string($expedition->weight_units,"weight"):'';
{
// If sending weigth defined
print $expedition->trueWeight.' '.measuring_units_string($expedition->weight_units,"weight");
}
else
{
// If sending Weight not defined we use sum of products
// TODO Show in best unit
if ($totalWeight > 0) print $totalWeight.' '.measuring_units_string(0,"weight");
else print '&nbsp;';
}
print '</td></tr>'; print '</td></tr>';
// Volume Total // Volume Total
print '<tr><td>'.$langs->trans("TotalVolume").'</td>'; print '<tr><td>'.$langs->trans("Volume").'</td>';
print '<td colspan="3">'; print '<td colspan="3">';
if ($expedition->trueVolume) if ($expedition->trueVolume)
{ {
@@ -767,17 +838,23 @@ else
print "</td>\n"; print "</td>\n";
print '</tr>'; print '</tr>';
// Taille // Width
print '<tr><td>'.$langs->trans("Size").'</td>'; print '<tr><td>'.$html->editfieldkey("Width",'trueWidth',$expedition->trueWidth,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
print '<td colspan="3">'; print $html->editfieldval("Width",'trueWidth',$expedition->trueWidth,'id',$expedition->id,$user->rights->expedition->creer);
if ($expedition->trueWidth || $expedition->trueHeight || $expedition->trueDepth) print $expedition->trueWidth?measuring_units_string($expedition->width_units,"size"):'';
{ print '</td></tr>';
// If sending size defined
print $expedition->trueSize.' '.measuring_units_string($expedition->size_units,"size"); // Height
} print '<tr><td>'.$html->editfieldkey("Height",'trueHeight',$expedition->trueHeight,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
else print '&nbsp;'; print $html->editfieldval("Height",'trueHeight',$expedition->trueHeight,'id',$expedition->id,$user->rights->expedition->creer);
print "</td>\n"; print $expedition->trueHeight?measuring_units_string($expedition->height_units,"size"):'';
print '</tr>'; print '</td></tr>';
// Depth
print '<tr><td>'.$html->editfieldkey("Depth",'trueDepth',$expedition->trueDepth,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
print $html->editfieldval("Depth",'trueDepth',$expedition->trueDepth,'id',$expedition->id,$user->rights->expedition->creer);
print $expedition->trueDepth?measuring_units_string($expedition->depth_units,"size"):'';
print '</td></tr>';
// Status // Status
print '<tr><td>'.$langs->trans("Status").'</td>'; print '<tr><td>'.$langs->trans("Status").'</td>';
@@ -785,26 +862,47 @@ else
print '</tr>'; print '</tr>';
// Sending method // Sending method
print '<tr><td>'.$langs->trans("SendingMethod").'</td>'; print '<tr><td height="10">';
print '<td colspan="3">'; print '<table class="nobordernopadding" width="100%"><tr><td>';
if ($expedition->expedition_method_id > 0) print $langs->trans('SendingMethod');
print '</td>';
if ($_GET['action'] != 'editexpedition_method_id') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editexpedition_method_id&amp;id='.$expedition->id.'">'.img_edit($langs->trans('SetSendingMethod'),1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="2">';
if ($_GET['action'] == 'editexpedition_method_id')
{ {
// Get code using getLabelFromKey print '<form name="setexpedition_method_id" action="'.$_SERVER["PHP_SELF"].'?id='.$expedition->id.'" method="post">';
$code=$langs->getLabelFromKey($db,$expedition->expedition_method_id,'expedition_methode','rowid','code'); print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print $langs->trans("SendingMethod".strtoupper($code)); print '<input type="hidden" name="action" value="setexpedition_method_id">';
$expedition->fetch_delivery_methods();
$html->select_array("expedition_method_id",$expedition->meths,$expedition->expedition_method_id,1,0,0,0,"",1);
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
print '</form>';
}
else
{
if ($expedition->expedition_method_id > 0)
{
// Get code using getLabelFromKey
$code=$langs->getLabelFromKey($db,$expedition->expedition_method_id,'expedition_methode','rowid','code');
print $langs->trans("SendingMethod".strtoupper($code));
}
} }
else print '&nbsp;';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Tracking Number // Tracking Number
print '<tr><td>'.$langs->trans("TrackingNumber").'</td>'; print '<tr><td>'.$html->editfieldkey("TrackingNumber",'trackingnumber',$expedition->tracking_number,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
print '<td>'.$expedition->tracking_number.'</td>'; print $html->editfieldval("TrackingNumber",'trackingnumber',$expedition->tracking_number,'id',$expedition->id,$user->rights->expedition->creer);
print '</td></tr>';
if ($expedition->tracking_url) if ($expedition->tracking_url)
{ {
print '<td colspan="2">'.$expedition->tracking_url."</td>\n"; print '<tr><td>'.$html->editfieldkey("TrackingUrl",'trackingurl',$expedition->tracking_url,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
print $html->editfieldval("TrackingUrl",'trackingurl',$expedition->tracking_url,'id',$expedition->id,$user->rights->expedition->creer);
print '</td></tr>';
} }
print '</tr>';
print "</table>\n"; print "</table>\n";
@@ -824,8 +922,9 @@ else
print '<td align="center">'.$langs->trans("QtyShipped").'</td>'; print '<td align="center">'.$langs->trans("QtyShipped").'</td>';
} }
print '<td align="center">'.$langs->trans("Weight").'</td>'; print '<td align="center">'.$langs->trans("CalculatedWeight").'</td>';
print '<td align="center">'.$langs->trans("Volume").'</td>'; print '<td align="center">'.$langs->trans("CalculatedVolume").'</td>';
//print '<td align="center">'.$langs->trans("Size").'</td>';
if ($conf->stock->enabled) if ($conf->stock->enabled)
{ {
@@ -839,6 +938,7 @@ else
{ {
print "<tr ".$bc[$var].">"; print "<tr ".$bc[$var].">";
// Predefined product or service
if ($lignes[$i]->fk_product > 0) if ($lignes[$i]->fk_product > 0)
{ {
print '<td>'; print '<td>';
@@ -874,18 +974,32 @@ else
// Qte a expedier ou expedier // Qte a expedier ou expedier
print '<td align="center">'.$lignes[$i]->qty_shipped.'</td>'; print '<td align="center">'.$lignes[$i]->qty_shipped.'</td>';
// Poids // Weight
print '<td align="center">'.$lignes[$i]->weight*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->weight_units,"weight").'</td>'; print '<td align="center">';
if ($lignes[$i]->fk_product_type == 0) print $lignes[$i]->weight*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->weight_units,"weight");
else print '&nbsp;';
print '</td>';
// Volume // Volume
print '<td align="center">'.$lignes[$i]->volume*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->volume_units,"volume").'</td>'; print '<td align="center">';
if ($lignes[$i]->fk_product_type == 0) print $lignes[$i]->volume*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->volume_units,"volume");
else print '&nbsp;';
print '</td>';
// Size
//print '<td align="center">'.$lignes[$i]->volume*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->volume_units,"volume").'</td>';
// Entrepot source // Entrepot source
if ($conf->stock->enabled) if ($conf->stock->enabled)
{ {
$entrepot = new Entrepot($db); print '<td align="left">';
$entrepot->fetch($lignes[$i]->entrepot_id); if ($lignes[$i]->entrepot_id > 0)
print '<td align="left">'.$entrepot->getNomUrl(1).'</td>'; {
$entrepot = new Entrepot($db);
$entrepot->fetch($lignes[$i]->entrepot_id);
print $entrepot->getNomUrl(1);
}
print '</td>';
} }
@@ -908,6 +1022,11 @@ else
{ {
print '<div class="tabsAction">'; print '<div class="tabsAction">';
/*if ($expedition->statut > 0 && $user->rights->expedition->valider)
{
print '<a class="butAction" href="fiche.php?id='.$expedition->id.'&amp;action=open">'.$langs->trans("Modify").'</a>';
}*/
if ($expedition->statut == 0 && $num_prod > 0) if ($expedition->statut == 0 && $num_prod > 0)
{ {
if ($user->rights->expedition->valider) if ($user->rights->expedition->valider)

View File

@@ -21,12 +21,13 @@
/** /**
* \file htdocs/expedition/index.php * \file htdocs/expedition/index.php
* \ingroup expedition * \ingroup expedition
* \brief Page accueil du module expedition * \brief Home page of shipping area.
* \version $Id$ * \version $Id$
*/ */
require("../main.inc.php"); require("../main.inc.php");
require(DOL_DOCUMENT_ROOT."/commande/commande.class.php"); require(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php");
require(DOL_DOCUMENT_ROOT."/expedition/class/expedition.class.php");
$langs->load("orders"); $langs->load("orders");
$langs->load("sendings"); $langs->load("sendings");
@@ -37,6 +38,7 @@ $langs->load("sendings");
$orderstatic=new Commande($db); $orderstatic=new Commande($db);
$companystatic=new Societe($db); $companystatic=new Societe($db);
$shipment=new Expedition($db);
$helpurl='EN:Module_Shipments|FR:Module_Exp&eacute;ditions|ES:M&oacute;dulo_Expediciones'; $helpurl='EN:Module_Shipments|FR:Module_Exp&eacute;ditions|ES:M&oacute;dulo_Expediciones';
llxHeader('',$langs->trans("Sendings"),$helpurl); llxHeader('',$langs->trans("Sendings"),$helpurl);
@@ -92,9 +94,17 @@ if ($resql)
{ {
$var=!$var; $var=!$var;
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
print "<tr $bc[$var]><td nowrap=\"nowrap\"><a href=\"fiche.php?id=".$obj->rowid."\">".$obj->ref."</a></td>"; print "<tr ".$bc[$var]."><td nowrap=\"nowrap\">";
print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.$obj->nom.'</a></td>'; $shipment->id=$obj->rowid;
print '<td><a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$obj->commande_id.'">'.$obj->commande_ref.'</a></td></tr>'; $shipment->ref=$obj->ref;
print $shipment->getNomUrl(1);
print "</td>";
print '<td>';
print '<a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.$obj->nom.'</a>';
print '</td>';
print '<td>';
if ($obj->commande_id) print '<a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$obj->commande_id.'">'.$obj->commande_ref.'</a>';
print '</td></tr>';
$i++; $i++;
} }
print "</table><br>"; print "</table><br>";
@@ -139,7 +149,9 @@ if ( $db->query($sql) )
print $orderstatic->getNomUrl(1); print $orderstatic->getNomUrl(1);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
print '<a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.dol_trunc($obj->nom,20).'</a>'; $companystatic->nom=$obj->nom;
$companystatic->id=$obj->socid;
print $companystatic->getNomUrl(1,'customer');
print '</td></tr>'; print '</td></tr>';
$i++; $i++;
} }
@@ -189,7 +201,11 @@ if ( $resql )
$orderstatic->ref=$obj->ref; $orderstatic->ref=$obj->ref;
print $orderstatic->getNomUrl(1); print $orderstatic->getNomUrl(1);
print '</td>'; print '</td>';
print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.$obj->nom.'</a></td></tr>'; print '<td>';
$companystatic->nom=$obj->nom;
$companystatic->id=$obj->socid;
print $companystatic->getNomUrl(1,'customer');
print '</td></tr>';
$i++; $i++;
} }
print "</table><br>"; print "</table><br>";
@@ -206,7 +222,7 @@ $sql = "SELECT e.rowid, e.ref";
$sql.= ", s.nom, s.rowid as socid"; $sql.= ", s.nom, s.rowid as socid";
$sql.= ", c.ref as commande_ref, c.rowid as commande_id"; $sql.= ", c.ref as commande_ref, c.rowid as commande_id";
$sql.= " FROM ".MAIN_DB_PREFIX."expedition as e"; $sql.= " FROM ".MAIN_DB_PREFIX."expedition as e";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON e.rowid = el.fk_target"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as el ON e.rowid = el.fk_target AND el.sourcetype in ('commande')";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande as c ON el.fk_source = c.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande as c ON el.fk_source = c.rowid";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc";
if (!$user->rights->societe->client->voir && !$socid) if (!$user->rights->societe->client->voir && !$socid)
@@ -218,7 +234,7 @@ if (!$user->rights->societe->client->voir && !$socid)
$sql.= $clause." e.fk_statut = 1"; $sql.= $clause." e.fk_statut = 1";
$sql.= " AND e.entity = ".$conf->entity; $sql.= " AND e.entity = ".$conf->entity;
if ($socid) $sql.= " AND c.fk_soc = ".$socid; if ($socid) $sql.= " AND c.fk_soc = ".$socid;
$sql.= " ORDER BY e.date_expedition DESC"; $sql.= " ORDER BY e.date_delivery DESC";
$sql.= $db->plimit(5, 0); $sql.= $db->plimit(5, 0);
$resql = $db->query($sql); $resql = $db->query($sql);

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -27,15 +27,16 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/expedition/expedition.class.php"); require_once(DOL_DOCUMENT_ROOT."/expedition/class/expedition.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT."/product/class/html.formproduct.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/order.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/order.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php");
if ($conf->produit->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/product.class.php"); if ($conf->product->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php"); if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/propal.class.php"); if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php");
if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php"); if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php");
if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.class.php"); if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/class/entrepot.class.php");
$langs->load('orders'); $langs->load('orders');
$langs->load("companies"); $langs->load("companies");
@@ -52,8 +53,6 @@ $socid=0;
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result=restrictedArea($user,'commande',$id); $result=restrictedArea($user,'commande',$id);
// Chargement des permissions
$error = $user->load_entrepots();
/* /*
* Actions * Actions
@@ -121,6 +120,7 @@ if ($_POST['action'] == 'setconditions' && $user->rights->commande->creer)
$html = new Form($db); $html = new Form($db);
$formproduct = new FormProduct($db);
$formfile = new FormFile($db); $formfile = new FormFile($db);
@@ -147,8 +147,7 @@ if ($id > 0 || ! empty($ref))
$soc->fetch($commande->socid); $soc->fetch($commande->socid);
$author = new User($db); $author = new User($db);
$author->id = $commande->user_author_id; $author->fetch($commande->user_author_id);
$author->fetch();
$head = commande_prepare_head($commande); $head = commande_prepare_head($commande);
dol_fiche_head($head, 'shipping', $langs->trans("CustomerOrder"), 0, 'order'); dol_fiche_head($head, 'shipping', $langs->trans("CustomerOrder"), 0, 'order');
@@ -243,18 +242,18 @@ if ($id > 0 || ! empty($ref))
// Si source = propal // Si source = propal
$propal = new Propal($db); $propal = new Propal($db);
$propal->fetch($commande->propale_id); $propal->fetch($commande->propale_id);
print ' -> <a href="'.DOL_URL_ROOT.'/comm/propal.php?propalid='.$propal->id.'">'.$propal->ref.'</a>'; print ' -> <a href="'.DOL_URL_ROOT.'/comm/propal.php?id='.$propal->id.'">'.$propal->ref.'</a>';
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Date de livraison // Delivery date planed
print '<tr><td height="10">'; print '<tr><td height="10">';
print '<table class="nobordernopadding" width="100%"><tr><td>'; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('DeliveryDate'); print $langs->trans('DateDeliveryPlanned');
print '</td>'; print '</td>';
if ($_GET['action'] != 'editdate_livraison' && $commande->brouillon) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&amp;id='.$commande->id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'</a></td>'; if ($_GET['action'] != 'editdate_livraison') print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&amp;id='.$commande->id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="2">'; print '</td><td colspan="2">';
if ($_GET['action'] == 'editdate_livraison') if ($_GET['action'] == 'editdate_livraison')
@@ -262,7 +261,7 @@ if ($id > 0 || ! empty($ref))
print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'" method="post">'; print '<form name="setdate_livraison" action="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="setdatedelivery">'; print '<input type="hidden" name="action" value="setdatedelivery">';
$html->select_date($commande->date_livraison,'liv_','','','',"setdatedelivery"); $html->select_date($commande->date_livraison>0?$commande->date_livraison:-1,'liv_','','','',"setdatedelivery");
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">'; print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
print '</form>'; print '</form>';
} }
@@ -290,11 +289,11 @@ if ($id > 0 || ! empty($ref))
if ($_GET['action'] == 'editdelivery_adress') if ($_GET['action'] == 'editdelivery_adress')
{ {
$html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->fk_delivery_address,$_GET['socid'],'delivery_address_id','commande',$commande->id); $html->form_address($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->fk_delivery_address,$_GET['socid'],'delivery_address_id','commande',$commande->id);
} }
else else
{ {
$html->form_adresse_livraison($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->fk_delivery_address,$_GET['socid'],'none','commande',$commande->id); $html->form_address($_SERVER['PHP_SELF'].'?id='.$commande->id,$commande->fk_delivery_address,$_GET['socid'],'none','commande',$commande->id);
} }
print '</td></tr>'; print '</td></tr>';
} }
@@ -387,17 +386,18 @@ if ($id > 0 || ! empty($ref))
*/ */
print '<table class="liste" width="100%">'; print '<table class="liste" width="100%">';
$sql = "SELECT cd.rowid, cd.fk_product, cd.product_type, cd.description, cd.price, cd.tva_tx, cd.subprice,"; $sql = "SELECT cd.rowid, cd.fk_product, cd.product_type, cd.description,";
$sql.= " cd.price, cd.tva_tx, cd.subprice,";
$sql.= " cd.qty,"; $sql.= " cd.qty,";
$sql.= ' '.$db->pdate('cd.date_start').' as date_start,'; $sql.= ' cd.date_start,';
$sql.= ' '.$db->pdate('cd.date_end').' as date_end,'; $sql.= ' cd.date_end,';
$sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,'; $sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,';
$sql.= ' p.description as product_desc'; $sql.= ' p.description as product_desc, p.fk_product_type as product_type';
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd"; $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
$sql.= " WHERE cd.fk_commande = ".$commande->id; $sql.= " WHERE cd.fk_commande = ".$commande->id;
// $sql.= " AND p.fk_product_type <> 1"; Why this line ? // $sql.= " AND p.fk_product_type <> 1"; Why this line ?
$sql.= " GROUP by cd.rowid, cd.fk_product"; //$sql.= " GROUP by cd.rowid, cd.fk_product";
$sql.= " ORDER BY cd.rang, cd.rowid"; $sql.= " ORDER BY cd.rang, cd.rowid";
//print $sql; //print $sql;
@@ -438,6 +438,8 @@ if ($id > 0 || ! empty($ref))
if (! empty($objp->date_end)) $type=1; if (! empty($objp->date_end)) $type=1;
print "<tr ".$bc[$var].">"; print "<tr ".$bc[$var].">";
// Product label
if ($objp->fk_product > 0) if ($objp->fk_product > 0)
{ {
print '<td>'; print '<td>';
@@ -454,7 +456,7 @@ if ($id > 0 || ! empty($ref))
print $html->textwithtooltip($text,$description,3,'','',$i); print $html->textwithtooltip($text,$description,3,'','',$i);
// Show range // Show range
print_date_range($objp->date_start,$objp->date_end); print_date_range($db->jdate($objp->date_start),$db->jdate($objp->date_end));
// Add description in form // Add description in form
if ($conf->global->PRODUIT_DESC_IN_FORM) if ($conf->global->PRODUIT_DESC_IN_FORM)
@@ -472,12 +474,14 @@ if ($id > 0 || ! empty($ref))
print $text.' '.nl2br($objp->description); print $text.' '.nl2br($objp->description);
// Show range // Show range
print_date_range($objp->date_start,$objp->date_end); print_date_range($db->jdate($objp->date_start),$db->jdate($objp->date_end));
print "</td>\n"; print "</td>\n";
} }
// Qty ordered
print '<td align="center">'.$objp->qty.'</td>'; print '<td align="center">'.$objp->qty.'</td>';
// Qty already shipped
$qtyProdCom=$objp->qty; $qtyProdCom=$objp->qty;
print '<td align="center">'; print '<td align="center">';
// Nb of sending products for this line of order // Nb of sending products for this line of order
@@ -485,10 +489,18 @@ if ($id > 0 || ! empty($ref))
print $quantite_livree; print $quantite_livree;
print '</td>'; print '</td>';
$reste_a_livrer[$objp->fk_product] = $objp->qty - $quantite_livree; // Qty remains to ship
$reste_a_livrer_total += $reste_a_livrer[$objp->fk_product];
print '<td align="center">'; print '<td align="center">';
print $reste_a_livrer[$objp->fk_product]; if ($type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES))
{
$reste_a_livrer[$objp->fk_product] = $objp->qty - $quantite_livree;
$reste_a_livrer_total += $reste_a_livrer[$objp->fk_product];
print $reste_a_livrer[$objp->fk_product];
}
else
{
print '0 ('.$langs->trans("Service").')';
}
print '</td>'; print '</td>';
if ($objp->fk_product > 0) if ($objp->fk_product > 0)
@@ -572,8 +584,8 @@ if ($id > 0 || ! empty($ref))
{ {
print '<div class="tabsAction">'; print '<div class="tabsAction">';
// Bouton expedier sans gestion des stocks // Bouton expedier sans gestion des stocks
if (! $conf->stock->enabled && ! $commande->brouillon) if (! $conf->stock->enabled && ($commande->statut > 0 && $commande->statut < 3))
{ {
if ($user->rights->expedition->creer) if ($user->rights->expedition->creer)
{ {
@@ -591,9 +603,8 @@ if ($id > 0 || ! empty($ref))
print "</div>"; print "</div>";
} }
// Bouton expedier avec gestion des stocks
// Bouton expedier avec gestion des stocks if ($conf->stock->enabled && ($commande->statut > 0 && $commande->statut < 3))
if ($conf->stock->enabled && $commande->statut > 0 && $commande->statut < 3)
{ {
if ($user->rights->expedition->creer) if ($user->rights->expedition->creer)
{ {
@@ -606,29 +617,22 @@ if ($id > 0 || ! empty($ref))
print '<input type="hidden" name="origin_id" value="'.$commande->id.'">'; print '<input type="hidden" name="origin_id" value="'.$commande->id.'">';
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
$entrepot = new Entrepot($db);
$langs->load("stocks"); $langs->load("stocks");
print '<tr>'; print '<tr>';
print '<td>'.$langs->trans("Warehouse").'</td>';
print '<td>';
if (sizeof($user->entrepots) === 1) if ($conf->stock->enabled)
{ {
$uentrepot = array(); print '<td>'.$langs->trans("WarehouseSource").'</td>';
$uentrepot[$user->entrepots[0]['id']] = $user->entrepots[0]['label']; print '<td>';
$html->select_array("entrepot_id",$uentrepot); $result=$formproduct->selectWarehouses(-1,'entrepot_id','',1);
if ($result <= 0)
{
print ' &nbsp; No warehouse defined, <a href="'.DOL_URL_ROOT.'/product/stock/fiche.php?action=create">add one</a>';
}
print '</td>';
} }
else print '<td align="center">';
{
$html->select_array("entrepot_id",$entrepot->list_array());
}
if (sizeof($entrepot->list_array()) <= 0)
{
print ' &nbsp; No warehouse defined, <a href="'.DOL_URL_ROOT.'/product/stock/fiche.php?action=create">add one</a>';
}
print '</td><td align="center">';
print '<input type="submit" class="button" named="save" value="'.$langs->trans("NewSending").'">'; print '<input type="submit" class="button" named="save" value="'.$langs->trans("NewSending").'">';
if ($reste_a_livrer_total <= 0) if ($reste_a_livrer_total <= 0)
{ {

File diff suppressed because it is too large Load Diff

View File

@@ -28,10 +28,10 @@
*/ */
require("../main.inc.php"); require("../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/fichinter/fichinter.class.php"); require_once(DOL_DOCUMENT_ROOT."/fichinter/class/fichinter.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/fichinter.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/fichinter.lib.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
$langs->load("other"); $langs->load("other");
$langs->load("fichinter"); $langs->load("fichinter");
@@ -69,32 +69,32 @@ $modulepart='fichinter';
*/ */
if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
{ {
/* require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
* Creation repertoire si n'existe pas
*/
if (! is_dir($upload_dir)) create_exdir($upload_dir);
if (is_dir($upload_dir)) if (create_exdir($upload_dir) >= 0)
{ {
$result = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0); $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']);
if ($result > 0) if (is_numeric($resupload) && $resupload > 0)
{
$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
//print_r($_FILES);
}
else if ($result == -99)
{
// Files infected by a virus
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>';
}
else if ($result < 0)
{ {
// Echec transfert (fichier depassant la limite ?) $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
// print_r($_FILES);
} }
} else
{
$langs->load("errors");
if ($resupload < 0) // Unknown error
{
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
}
else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus
{
$mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>';
}
else // Known error
{
$mesg = '<div class="error">'.$langs->trans($resupload).'</div>';
}
}
}
} }
@@ -162,7 +162,7 @@ if ($object->id)
// List of document // List of document
$param='&id='.$object->id; $param='&id='.$object->id;
$formfile->list_of_documents($filearray,$object,'fichinter',$param); $formfile->list_of_documents($filearray,$object,'ficheinter',$param);
} }
else else

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,452 @@
<?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file htdocs/fourn/class/fournisseur.product.class.php
* \ingroup produit
* \brief File of class to manage predefined suppliers products
* \version $Id$
*/
require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php";
require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php";
/**
* \class ProductFournisseur
* \brief Class to manage predefined suppliers products
*/
class ProductFournisseur extends Product
{
var $db ;
var $id ;
var $fourn_ref;
var $fourn;
var $fourn_qty;
var $product_fourn_id;
var $product_fourn_price_id;
function ProductFournisseur($db)
{
$this->db = $db;
}
/**
* \brief Remove all prices for this couple supplier-product
* \param id_fourn id du fournisseur
* \return int < 0 si erreur, > 0 si ok
*/
function remove_fournisseur($id_fourn)
{
$ok=1;
$this->db->begin();
// Search all links
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE fk_product = ".$this->id." AND fk_soc = ".$id_fourn;
dol_syslog("ProductFournisseur::remove_fournisseur sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
// For each link, delete price line
while ($obj=$this->db->fetch_object($resql))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price";
$sql.= " WHERE fk_product_fournisseur = ".$obj->rowid;
dol_syslog("ProductFournisseur::remove_fournisseur sql=".$sql);
$resql2=$this->db->query($sql);
if (! $resql2)
{
$this->error=$this->db->lasterror();
dol_syslog("ProductFournisseur::remove_fournisseur ".$this->error, LOG_ERR);
$ok=0;
}
}
// Now delete all link supplier-product (they have no more childs)
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE fk_product = ".$this->id." AND fk_soc = ".$id_fourn;
dol_syslog("ProductFournisseur::remove_fournisseur sql=".$sql);
$resql=$this->db->query($sql);
if (! $resql)
{
$this->error=$this->db->lasterror();
dol_syslog("ProductFournisseur::remove_fournisseur ".$this->error, LOG_ERR);
$ok=0;
}
if ($ok)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -1;
}
}
else
{
$this->db->rollback();
dol_print_error($this->db);
return -2;
}
}
/**
* \brief Remove supplier product
* \param rowid Product id
* \return int < 0 si erreur, > 0 si ok
*/
function remove_product_fournisseur($rowid)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE rowid = ".$rowid;
dol_syslog("ProductFournisseur::remove_product_fournisseur sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
return 1;
}
else
{
return -1;
}
}
/**
* \brief Remove a price for a couple supplier-product
* \param rowid Line id of price
* \return int <0 if KO, >0 if OK
*/
function remove_product_fournisseur_price($rowid)
{
global $conf;
$this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price";
$sql.= " WHERE rowid = ".$rowid;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
// Remove all entries with no childs
$sql = "SELECT pf.rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as pf";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pfp.fk_product_fournisseur = pf.rowid";
$sql.= " WHERE pfp.rowid IS NULL";
$sql.= " AND pf.entity = ".$conf->entity;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
$ok=1;
while ($obj=$this->db->fetch_object($resql))
{
$rowidpf=$obj->rowid;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE rowid = ".$rowidpf;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql2 = $this->db->query($sql);
if (! $resql2)
{
$this->error=$this->db->lasterror();
dol_syslog("ProductFournisseur::remove_product_fournisseur_price ".$this->error,LOG_ERR);
$ok=0;
}
}
if ($ok)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -3;
}
}
else
{
$this->error=$this->db->lasterror();
dol_syslog("ProductFournisseur::remove_product_fournisseur_price ".$this->error,LOG_ERR);
$this->db->rollback();
return -2;
}
}
else
{
$this->error=$this->db->lasterror();
dol_syslog("ProductFournisseur::remove_product_fournisseur_price ".$this->error,LOG_ERR);
$this->db->rollback();
return -1;
}
}
/**
*
*
*/
function update($ref, $qty, $buyprice, $user)
{
$this->fourn_ref = $ref;
/* Mise a jour du prix */
$this->update_buyprice($qty, $buyprice, $user);
/* Mise a jour de la reference */
$sql = "UPDATE ".MAIN_DB_PREFIX."product_fournisseur ";
$sql .= " SET ref_fourn = '" . $this->fourn_ref ."'";
$sql .= " WHERE fk_product = " . $this->id;
$sql .=" AND fk_soc = ".$this->fourn->id;
$resql = $this->db->query($sql) ;
}
/**
* \brief Modifie le prix d'achat pour un fournisseur
* \param qty Quantite min pour lequel le prix est valide
* \param buyprice Prix d'achat pour la quantite min
* \param user Objet user de l'utilisateur qui modifie
* \param price_base_type HT or TTC
* \param fourn Supplier
*/
function update_buyprice($qty, $buyprice, $user, $price_base_type='HT', $fourn)
{
global $mysoc;
$buyprice=price2num($buyprice);
$qty=price2num($qty);
$error=0;
$this->db->begin();
// Supprime prix courant du fournisseur pour cette quantite
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price";
if ($this->product_fourn_price_id)
{
$sql.= " WHERE rowid = ".$this->product_fourn_price_id;
}
else
{
$sql.= " WHERE fk_product_fournisseur = ".$this->product_fourn_id;
$sql.= " AND quantity = ".$qty;
}
if ($this->db->query($sql))
{
if ($price_base_type == 'TTC')
{
$ttx = get_default_tva($fourn,$mysoc,($this->tva_tx?$this->tva_tx:0));
$buyprice = $buyprice/(1+($ttx/100));
}
$unitBuyPrice = price2num($buyprice/$qty,'MU');
// Ajoute prix courant du fournisseur pour cette quantite
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price";
$sql.= " SET datec = ".$this->db->idate(mktime());
$sql.= " ,fk_product_fournisseur = ".$this->product_fourn_id;
$sql.= " ,fk_user = ".$user->id;
$sql.= " ,price = ".price2num($buyprice);
$sql.= " ,quantity = ".$qty;
$sql.= " ,unitprice = ".$unitBuyPrice;
dol_syslog("ProductFournisseur::update_buyprice sql=".$sql);
if (! $this->db->query($sql))
{
$error++;
}
if (! $error)
{
// Ajoute modif dans table log
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price_log ";
$sql .= " SET datec = ".$this->db->idate(mktime());
$sql .= " ,fk_product_fournisseur = ".$this->product_fourn_id;
$sql .= " ,fk_user = ".$user->id;
$sql .= " ,price = ".price2num($buyprice);
$sql .= " ,quantity = ".$qty;
if (! $this->db->query($sql))
{
$error++;
}
}
if (! $error)
{
$this->db->commit();
return 0;
}
else
{
$this->error=$this->db->error()." sql=".$sql;
$this->db->rollback();
return -2;
}
}
else
{
$this->error=$this->db->error()." sql=".$sql;
$this->db->rollback();
return -1;
}
}
/**
* \brief Modifie le prix d'achat pour un fournisseur par la referecne du produit chez le fournisseur
* \param id_fourn Id du fournisseur
* \param product_fourn_ref Ref du produit chez le fournisseur
* \param qty Quantite pour lequel le prix est valide
* \param buyprice Prix d'achat pour la quantite
* \param user Objet user de l'utilisateur qui modifie
* \return int <0 si KO, >0 si OK
*/
function UpdateBuyPriceByFournRef($id_fourn, $product_fourn_ref, $qty, $buyprice, $user, $price_base_type='HT')
{
global $conf;
$result=0;
// Recherche id produit pour cette ref et fournisseur
$sql = "SELECT fk_product";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE fk_soc = '".$id_fourn."'";
$sql.= " AND ref_fourn = '".$product_fourn_ref."'";
$sql.= " AND entity = ".$conf->entity;
if ($this->db->query($sql))
{
if ($obj = $this->db->fetch_object($resql))
{
// Met a jour prix pour la qte
$this->id = $obj->fk_product;
$result = $this->update_buyprice($id_fourn, $qty, $buyprice, $user, $price_base_type);
}
}
return $result;
}
/**
* \brief Charge les informations relatives a un fournisseur
* \param fournid id du fournisseur
* \return int < 0 si erreur, > 0 si ok
*/
function fetch_fourn_data($fournid)
{
global $conf;
// Check parameters
if (empty($fournid)) return -1;
$sql = "SELECT rowid, ref_fourn";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur ";
$sql.= " WHERE fk_product = ".$this->id;
$sql.= " AND fk_soc = ".$fournid;
$sql.= " AND entity = ".$conf->entity;
dol_syslog("Product::fetch_fourn_data sql=".$sql);
$result = $this->db->query($sql) ;
if ($result)
{
$result = $this->db->fetch_array();
$this->ref_fourn = $result["ref_fourn"];
$this->product_fourn_id = $result["rowid"];
return 1;
}
else
{
$this->error=$this->db->error();
dol_syslog("ProductFournisseur::fetch_fourn_data error=".$this->error, LOG_ERR);
return -1;
}
}
/**
* \brief Charge les informations relatives a un prix de fournisseur
* \param rowid id ligne
* \return int < 0 if KO, 0 if OK but not found, > 0 if OK
*/
function fetch_product_fournisseur_price($rowid)
{
$sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice";
$sql.= ", pf.rowid as product_fourn_id, pf.fk_soc, pf.ref_fourn, pf.fk_product";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= ", ".MAIN_DB_PREFIX."product_fournisseur as pf";
$sql.= " WHERE pfp.rowid = ".$rowid;
$sql.= " AND pf.rowid = pfp.fk_product_fournisseur";
dol_syslog("ProductFournisseur::fetch_product_fournisseur_price sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql) ;
if ($resql)
{
$obj = $this->db->fetch_object($resql);
if ($obj)
{
$this->product_fourn_price_id = $rowid;
$this->product_fourn_id = $obj->product_fourn_id;
$this->fourn_ref = $obj->ref_fourn;
$this->fourn_price = $obj->price;
$this->fourn_qty = $obj->quantity;
$this->fourn_unitprice = $obj->unitprice;
$this->product_id = $obj->fk_product; // deprecated
$this->fk_product = $obj->fk_product;
return 1;
}
else
{
return 0;
}
}
else
{
$this->error=$this->db->error();
dol_syslog("ProductFournisseur::fetch_product_fournisseur_price error=".$this->error, LOG_ERR);
return -1;
}
}
}
?>

View File

@@ -0,0 +1,559 @@
<?php
/* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
\file htdocs/fourn/class/paiementfourn.class.php
\ingroup fournisseur, facture
\brief Classe paiement fournisseur
\remarks Cette classe est presque identique a paiement.class.php
\version $Id$
*/
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
/**
\class PaiementFourn
\brief Classe permettant la gestion des paiements des factures fournisseurs
*/
class PaiementFourn
{
var $id;
var $ref;
var $facid;
var $datepaye;
var $amount;
var $total;
var $author;
var $paiementid; // Type de paiement. Stocke dans fk_paiement
// de llx_paiement qui est lie aux types de
//paiement de llx_c_paiement
var $num_paiement; // Numero du CHQ, VIR, etc...
var $bank_account; // Id compte bancaire du paiement
var $bank_line; // Id de la ligne d'ecriture bancaire
var $note;
var $statut; //Status of payment. 0 = unvalidated; 1 = validated
// fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...)
// fk_paiement dans llx_paiement_facture est le rowid du paiement
var $db;
/**
* \brief Constructeur de la classe
* \param DB handler acces base de donnees
*/
function PaiementFourn($DB)
{
$this->db = $DB ;
}
/**
* \brief Load payment object
* \param id id paiement to get
* \return int <0 si ko, >0 si ok
*/
function fetch($id)
{
$sql = 'SELECT p.rowid, p.datep as dp, p.amount, p.statut, p.fk_bank,';
$sql.= ' c.libelle as paiement_type,';
$sql.= ' p.num_paiement, p.note, b.fk_account';
$sql.= ' FROM '.MAIN_DB_PREFIX.'c_paiement as c, '.MAIN_DB_PREFIX.'paiementfourn as p';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid ';
$sql.= ' WHERE p.fk_paiement = c.id';
$sql.= ' AND p.rowid = '.$id;
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
if ($num > 0)
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
$this->ref = $obj->rowid;
$this->date = $this->db->jdate($obj->dp);
$this->numero = $obj->num_paiement;
$this->bank_account = $obj->fk_account;
$this->bank_line = $obj->fk_bank;
$this->montant = $obj->amount;
$this->note = $obj->note;
$this->type_libelle = $obj->paiement_type;
$this->statut = $obj->statut;
$error = 1;
}
else
{
$error = -2;
}
$this->db->free($resql);
}
else
{
dol_print_error($this->db);
$error = -1;
}
return $error;
}
/**
* \brief Create payment in database
* \param user Object of creating user
* \return int id of created payment, < 0 if error
*/
function create($user)
{
global $langs,$conf;
$error = 0;
// Clean parameters
$this->total = 0;
foreach ($this->amounts as $key => $value)
{
$value = price2num($value);
$val = round($value, 2);
$this->amounts[$key] = $val;
$this->total += $val;
}
$this->total = price2num($this->total);
$this->db->begin();
if ($this->total <> 0) // On accepte les montants negatifs
{
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiementfourn (';
$sql.= 'datec, datep, amount, fk_paiement, num_paiement, note, fk_user_author, fk_bank)';
$sql.= ' VALUES ('.$this->db->idate(mktime()).',';
$sql.= " ".$this->db->idate($this->datepaye).", '".$this->total."', ".$this->paiementid.", '".$this->num_paiement."', '".addslashes($this->note)."', ".$user->id.", 0)";
dol_syslog("PaiementFourn::create sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiementfourn');
// Insere tableau des montants / factures
foreach ($this->amounts as $key => $amount)
{
$facid = $key;
if (is_numeric($amount) && $amount <> 0)
{
$amount = price2num($amount);
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiementfourn_facturefourn (fk_facturefourn, fk_paiementfourn, amount)';
$sql .= ' VALUES ('.$facid.','. $this->id.',\''.$amount.'\')';
if (! $this->db->query($sql) )
{
dol_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid);
$error++;
}
}
else
{
dol_syslog('PaiementFourn::Create Montant non numerique',LOG_ERR);
}
}
if (! $error)
{
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PAYMENT_SUPPLIER_CREATE',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
}
}
else
{
$this->error=$this->db->lasterror();
dol_syslog('PaiementFourn::Create Error '.$this->error, LOG_ERR);
$error++;
}
}
else
{
$this->error="ErrorTotalIsNull";
dol_syslog('PaiementFourn::Create Error '.$this->error, LOG_ERR);
$error++;
}
if ($this->total <> 0 && $error == 0) // On accepte les montants negatifs
{
$this->db->commit();
dol_syslog('PaiementFourn::Create Ok Total = '.$this->total);
return $this->id;
}
else
{
$this->db->rollback();
return -1;
}
}
/**
* \brief Supprime un paiement ainsi que les lignes qu'il a genere dans comptes
* Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse
* Si le paiement porte sur au moins une facture a "payee", on refuse
* \return int <0 si ko, >0 si ok
*/
function delete()
{
$bank_line_id = $this->bank_line;
$this->db->begin();
// Verifier si paiement porte pas sur une facture a l'etat payee
// Si c'est le cas, on refuse la suppression
$billsarray=$this->getBillsArray('paye=1');
if (is_array($billsarray))
{
if (sizeof($billsarray))
{
$this->error='Impossible de supprimer un paiement portant sur au moins une facture a l\'etat paye';
$this->db->rollback();
return -1;
}
}
else
{
$this->db->rollback();
return -2;
}
// Verifier si paiement ne porte pas sur ecriture bancaire rapprochee
// Si c'est le cas, on refuse le delete
if ($bank_line_id)
{
$accline = new AccountLine($this->db,$bank_line_id);
$accline->fetch($bank_line_id);
if ($accline->rappro)
{
$this->error='Impossible de supprimer un paiement qui a genere une ecriture qui a ete rapprochee';
$this->db->rollback();
return -3;
}
}
// Efface la ligne de paiement (dans paiement_facture et paiement)
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'paiementfourn_facturefourn';
$sql.= ' WHERE fk_paiementfourn = '.$this->id;
$resql = $this->db->query($sql);
if ($resql)
{
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'paiementfourn';
$sql.= ' WHERE rowid = '.$this->id;
$result = $this->db->query($sql);
if (! $result)
{
$this->error=$this->db->error();
$this->db->rollback();
return -3;
}
// Supprimer l'ecriture bancaire si paiement lie a ecriture
if ($bank_line_id)
{
$accline = new AccountLine($this->db);
$accline->fetch($bank_line_id);
$result=$accline->delete();
if ($result < 0)
{
$this->error=$accline->error;
$this->db->rollback();
return -4;
}
}
$this->db->commit();
return 1;
}
else
{
$this->error=$this->db->error;
$this->db->rollback();
return -5;
}
}
/**
* \brief Mise a jour du lien entre le paiement et la ligne generee dans llx_bank
* \param id_bank Id compte bancaire
*/
function update_fk_bank($id_bank)
{
$sql = 'UPDATE '.MAIN_DB_PREFIX.'paiementfourn set fk_bank = '.$id_bank;
$sql.= ' WHERE rowid = '.$this->id;
$result = $this->db->query($sql);
if ($result)
{
return 1;
}
else
{
dol_print_error($this->db);
return 0;
}
}
/**
* \brief Valide le paiement
* \return int <0 si ko, >0 si ok
*/
function valide()
{
$sql = 'UPDATE '.MAIN_DB_PREFIX.'paiementfourn SET statut = 1 WHERE rowid = '.$this->id;
dol_syslog("PaiementFourn::valide sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
return 0;
}
else
{
$this->error='Paiement::Valide Error -1 '.$this->db->error();
dol_syslog('PaiementFourn::valide error '.$this->error, LOG_ERR);
return -1;
}
}
/*
* \brief Information sur l'objet
* \param id id du paiement dont il faut afficher les infos
*/
function info($id)
{
$sql = 'SELECT c.rowid, datec, fk_user_author, tms';
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiementfourn as c';
$sql.= ' WHERE c.rowid = '.$id;
$resql = $this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
if ($num)
{
$obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
if ($obj->fk_user_creat)
{
$cuser = new User($this->db);
$cuser->fetch($obj->fk_user_creat);
$this->user_creation = $cuser;
}
if ($obj->fk_user_modif)
{
$muser = new User($this->db);
$muser->fetch($obj->fk_user_modif);
$this->user_modification = $muser;
}
$this->date_creation = $this->db->jdate($obj->datec);
$this->date_modification = $this->db->jdate($obj->tms);
}
$this->db->free($resql);
}
else
{
dol_print_error($this->db);
}
}
/**
* \brief Retourne la liste des factures sur lesquels porte le paiement
* \param filter Critere de filtre
* \return array Tableau des id de factures
*/
function getBillsArray($filter='')
{
$sql = 'SELECT fk_facturefourn';
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf, '.MAIN_DB_PREFIX.'facture_fourn as f';
$sql.= ' WHERE pf.fk_facturefourn = f.rowid AND fk_paiementfourn = '.$this->id;
if ($filter) $sql.= ' AND '.$filter;
$resql = $this->db->query($sql);
if ($resql)
{
$i=0;
$num=$this->db->num_rows($resql);
$billsarray=array();
while ($i < $num)
{
$obj = $this->db->fetch_object($resql);
$billsarray[$i]=$obj->fk_facturefourn;
$i++;
}
return $billsarray;
}
else
{
$this->error=$this->db->error();
dol_syslog('PaiementFourn::getBillsArray Error '.$this->error.' - sql='.$sql);
return -1;
}
}
/**
* \brief Retourne le libelle du statut d'une facture (brouillon, validee, abandonnee, payee)
* \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* \return string Libelle
*/
function getLibStatut($mode=0)
{
return $this->LibStatut($this->statut,$mode);
}
/**
* \brief Renvoi le libelle d'un statut donne
* \param status Statut
* \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* \return string Libelle du statut
*/
function LibStatut($status,$mode=0)
{
global $langs;
$langs->load('compta');
if ($mode == 0)
{
if ($status == 0) return $langs->trans('ToValidate');
if ($status == 1) return $langs->trans('Validated');
}
if ($mode == 1)
{
if ($status == 0) return $langs->trans('ToValidate');
if ($status == 1) return $langs->trans('Validated');
}
if ($mode == 2)
{
if ($status == 0) return img_picto($langs->trans('ToValidate'),'statut1').' '.$langs->trans('ToValidate');
if ($status == 1) return img_picto($langs->trans('Validated'),'statut4').' '.$langs->trans('Validated');
}
if ($mode == 3)
{
if ($status == 0) return img_picto($langs->trans('ToValidate'),'statut1');
if ($status == 1) return img_picto($langs->trans('Validated'),'statut4');
}
if ($mode == 4)
{
if ($status == 0) return img_picto($langs->trans('ToValidate'),'statut1').' '.$langs->trans('ToValidate');
if ($status == 1) return img_picto($langs->trans('Validated'),'statut4').' '.$langs->trans('Validated');
}
if ($mode == 5)
{
if ($status == 0) return $langs->trans('ToValidate').' '.img_picto($langs->trans('ToValidate'),'statut1');
if ($status == 1) return $langs->trans('Validated').' '.img_picto($langs->trans('Validated'),'statut4');
}
return $langs->trans('Unknown');
}
/**
* \brief Renvoie nom clicable (avec eventuellement le picto)
* \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul
* \param option Sur quoi pointe le lien
* \return string Chaine avec URL
*/
function getNomUrl($withpicto=0,$option='')
{
global $langs;
$result='';
$lien = '<a href="'.DOL_URL_ROOT.'/fourn/paiement/fiche.php?id='.$this->id.'">';
$lienfin='</a>';
$text=$this->ref; // Sometimes ref contains label
if (preg_match('/^\((.*)\)$/i',$text,$reg))
{
// Label g诩rique car entre parenth粥s. On l'affiche en le traduisant
if ($reg[1]=='paiement') $reg[1]='Payment';
$text=$langs->trans($reg[1]);
}
if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment"),'payment').$lienfin);
if ($withpicto && $withpicto != 2) $result.=' ';
if ($withpicto != 2) $result.=$lien.$text.$lienfin;
return $result;
}
/**
* \brief Updates the payment number
* \param string New num
* \return int -1 on error, 0 otherwise
*/
function update_num($num)
{
if(!empty($num) && $this->statut!=1)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."paiementfourn";
$sql.= " SET num_paiement = '".$this->db->escape($num)."'";
$sql.= " WHERE rowid = ".$this->id;
dol_syslog("PaiementFourn::update_num sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
$this->numero = $this->db->escape($num);
return 0;
}
else
{
$this->error='PaiementFourn::update_num Error -1 '.$this->db->error();
dol_syslog('PaiementFourn::update_num error '.$this->error, LOG_ERR);
return -1;
}
}
return -1; //no num given or already validated
}
/**
* \brief Updates the payment date
* \param string New date
* \return int -1 on error, 0 otherwise
*/
function update_date($date)
{
if(!empty($date) && $this->statut!=1)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."paiementfourn";
$sql.= " SET datep = ".$this->db->idate($date);
$sql.= " WHERE rowid = ".$this->id;
dol_syslog("PaiementFourn::update_date sql=".$sql);
$result = $this->db->query($sql);
if ($result)
{
$this->datepaye = $date;
$this-> date = $date;
return 0;
}
else
{
$this->error='PaiementFourn::update_date Error -1 '.$this->db->error();
dol_syslog('PaiementFourn::update_date error '.$this->error, LOG_ERR);
return -1;
}
}
return -1; //no date given or already validated
}
}
?>

View File

@@ -3,6 +3,7 @@
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -21,20 +22,21 @@
/** /**
* \file htdocs/fourn/commande/fiche.php * \file htdocs/fourn/commande/fiche.php
* \ingroup commande * \ingroup supplier, order
* \brief Fiche commande * \brief Card supplier order
* \version $Id$ * \version $Id$
*/ */
require("../../main.inc.php"); require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT."/html.formorder.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formorder.class.php");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/modules/supplier_order/modules_commandefournisseur.php');
require_once DOL_DOCUMENT_ROOT."/fourn/fournisseur.commande.class.php"; require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php";
require_once DOL_DOCUMENT_ROOT."/fourn/fournisseur.product.class.php"; require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.product.class.php";
require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php";
require_once DOL_DOCUMENT_ROOT."/lib/fourn.lib.php"; require_once DOL_DOCUMENT_ROOT."/lib/fourn.lib.php";
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/project.class.php'); if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
$langs->load('orders'); $langs->load('orders');
$langs->load('sendings'); $langs->load('sendings');
@@ -80,6 +82,30 @@ if ($_REQUEST['action'] == 'setremisepercent' && $user->rights->fournisseur->com
$id=$_REQUEST['id']; $id=$_REQUEST['id'];
} }
if ($_GET['action'] == 'reopen' && $user->rights->fournisseur->commande->approuver)
{
$order = new CommandeFournisseur($db);
$result = $order->fetch($_REQUEST['id']);
if ($order->statut == 5 || $order->statut == 6 || $order->statut == 7 || $order->statut == 9)
{
if ($order->statut == 5) $newstatus=4; // Received->Received partially
if ($order->statut == 6) $newstatus=2; // Canceled->Approved
if ($order->statut == 7) $newstatus=3; // Canceled->Process running
if ($order->statut == 9) $newstatus=1; // Refused->Validated
$result = $order->setStatus($user,$newstatus);
if ($result > 0)
{
Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_REQUEST['id']);
exit;
}
else
{
$mesg='<div class="error">'.$order->error.'</div>';
}
}
}
/* /*
* Ajout d'une ligne produit dans la commande * Ajout d'une ligne produit dans la commande
*/ */
@@ -125,7 +151,7 @@ if ($_POST['action'] == 'addline' && $user->rights->fournisseur->commande->creer
$remise_percent = $_POST["remise_percent"] ? $_POST["remise_percent"] : $_POST["p_remise_percent"]; $remise_percent = $_POST["remise_percent"] ? $_POST["remise_percent"] : $_POST["p_remise_percent"];
$tva_tx = get_default_tva($societe,$mysoc,$product->tva_tx,$product->id); $tva_tx = get_default_tva($societe,$mysoc,$product->id);
$type = $product->type; $type = $product->type;
$result=$commande->addline( $result=$commande->addline(
@@ -206,6 +232,11 @@ if ($_POST['action'] == 'addline' && $user->rights->fournisseur->commande->creer
*/ */
if ($_POST['action'] == 'updateligne' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save')) if ($_POST['action'] == 'updateligne' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save'))
{ {
$product=new Product($db);
if ($_POST["elrowid"])
{
if ($product->fetch($_POST["elrowid"]) < 0) dol_print_error($db);
}
$commande = new CommandeFournisseur($db,"",$id); $commande = new CommandeFournisseur($db,"",$id);
if ($commande->fetch($id) < 0) dol_print_error($db); if ($commande->fetch($id) < 0) dol_print_error($db);
@@ -217,7 +248,7 @@ if ($_POST['action'] == 'updateligne' && $user->rights->fournisseur->commande->c
$_POST['tva_tx'], $_POST['tva_tx'],
'HT', 'HT',
0, 0,
$_POST["type"] isset($_POST["type"])?$_POST["type"]:$product->type
); );
if ($result >= 0) if ($result >= 0)
@@ -324,11 +355,11 @@ if ($_REQUEST['action'] == 'confirm_commande' && $_REQUEST['confirm'] == 'yes' &
} }
if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->creer) if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes' && $user->rights->fournisseur->commande->supprimer)
{ {
$commande = new CommandeFournisseur($db); $commande = new CommandeFournisseur($db);
$commande->id = $id; $commande->fetch($id);
$result=$commande->delete(); $result=$commande->delete($user);
if ($result > 0) if ($result > 0)
{ {
Header("Location: ".DOL_URL_ROOT.'/fourn/commande/liste.php'); Header("Location: ".DOL_URL_ROOT.'/fourn/commande/liste.php');
@@ -340,6 +371,7 @@ if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes' &&
} }
} }
// Receive
if ($_POST["action"] == 'livraison' && $user->rights->fournisseur->commande->receptionner) if ($_POST["action"] == 'livraison' && $user->rights->fournisseur->commande->receptionner)
{ {
$commande = new CommandeFournisseur($db); $commande = new CommandeFournisseur($db);
@@ -371,7 +403,7 @@ if ($_POST["action"] == 'livraison' && $user->rights->fournisseur->commande->rec
} }
} }
if ($_REQUEST["action"] == 'confirm_cancel' && $_REQUEST["confirm"] == 'yes' && $user->rights->fournisseur->commande->annuler) if ($_REQUEST["action"] == 'confirm_cancel' && $_REQUEST["confirm"] == 'yes' && $user->rights->fournisseur->commande->commander)
{ {
$commande = new CommandeFournisseur($db); $commande = new CommandeFournisseur($db);
$commande->fetch($id); $commande->fetch($id);
@@ -460,14 +492,14 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post
} }
} }
// Delete file // Delete file in doc form
if ($action=='remove_file') if ($action=='remove_file')
{ {
$commande = new CommandeFournisseur($db); $commande = new CommandeFournisseur($db);
if ($commande->fetch($id)) if ($commande->fetch($id))
{ {
$upload_dir = $conf->commande->dir_output . "/"; $upload_dir = $conf->fournisseur->commande->dir_output . "/";
$file = $upload_dir . '/' . $_GET['file']; $file = $upload_dir . '/' . $_GET['file'];
dol_delete_file($file); dol_delete_file($file);
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>';
@@ -509,6 +541,195 @@ if ($_GET["action"] == 'create')
} }
} }
/*
* Add file in email form
*/
if ($_POST['addfile'])
{
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
// Set tmp user directory TODO Use a dedicated directory for temp mails files
$vardir=$conf->user->dir_output."/".$user->id;
$upload_dir = $vardir.'/temp/';
$mesg=dol_add_file_process($upload_dir,0,0);
$_GET["action"]='presend';
$_POST["action"]='presend';
}
/*
* Remove file in email form
*/
if (! empty($_POST['removedfile']))
{
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
// Set tmp user directory
$vardir=$conf->user->dir_output."/".$user->id;
$upload_dir = $vardir.'/temp/';
$mesg=dol_remove_file_process($_POST['removedfile'],0);
$_GET["action"]='presend';
$_POST["action"]='presend';
}
/*
* Send mail
*/
if ($_POST['action'] == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_POST['cancel'])
{
$langs->load('mails');
$commande= new CommandeFournisseur($db);
$result=$commande->fetch($_POST['orderid']);
$result=$commande->fetch_thirdparty();
if ($result > 0)
{
$ref = dol_sanitizeFileName($commande->ref);
$file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf';
if (is_readable($file))
{
if ($_POST['sendto'])
{
// Le destinataire a ete fourni via le champ libre
$sendto = $_POST['sendto'];
$sendtoid = 0;
}
elseif ($_POST['receiver'])
{
// Le destinataire a ete fourni via la liste deroulante
if ($_POST['receiver'] < 0) // Id du tiers
{
$sendto = $commande->client->email;
$sendtoid = 0;
}
else // Id du contact
{
$sendto = $commande->client->contact_get_email($_POST['receiver']);
$sendtoid = $_POST['receiver'];
}
}
if (strlen($sendto))
{
$langs->load("commercial");
$from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>';
$replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>';
$message = $_POST['message'];
$sendtocc = $_POST['sendtocc'];
$deliveryreceipt = $_POST['deliveryreceipt'];
if ($_POST['action'] == 'send')
{
if (strlen($_POST['subject'])) $subject=$_POST['subject'];
else $subject = $langs->transnoentities('CustomerOrder').' '.$commande->ref;
$actiontypecode='AC_SUP_ORD';
$actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n";
if ($message)
{
$actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n";
$actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n";
$actionmsg.=$message;
}
$actionmsg2=$langs->transnoentities('Action'.$actiontypecode);
}
// Create form object
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php');
$formmail = new FormMail($db);
$attachedfiles=$formmail->get_attached_files();
$filepath = $attachedfiles['paths'];
$filename = $attachedfiles['names'];
$mimetype = $attachedfiles['mimes'];
// Send mail
require_once(DOL_DOCUMENT_ROOT.'/lib/CMailFile.class.php');
$mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt);
if ($mailfile->error)
{
$mesg='<div class="error">'.$mailfile->error.'</div>';
}
else
{
$result=$mailfile->sendfile();
if ($result)
{
$mesg='<div class="ok">'.$langs->trans('MailSuccessfulySent',$from,$sendto).'.</div>';
$error=0;
// Initialisation donnees
$commande->sendtoid=$sendtoid;
$commande->actiontypecode=$actiontypecode;
$commande->actionmsg = $actionmsg;
$commande->actionmsg2= $actionmsg2;
$commande->supplierorderrowid=$commande->id;
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($db);
$result=$interface->run_triggers('ORDER_SUPPLIER_SENTBYMAIL',$commande,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
if ($error)
{
dol_print_error($db);
}
else
{
// Redirect here
// This avoid sending mail twice if going out and then back to page
Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&mesg='.urlencode($mesg));
exit;
}
}
else
{
$langs->load("other");
$mesg='<div class="error">';
if ($mailfile->error)
{
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
$mesg.='<br>'.$mailfile->error;
}
else
{
$mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS';
}
$mesg.='</div>';
}
}
}
else
{
$langs->load("other");
$mesg='<div class="error">'.$langs->trans('ErrorMailRecipientIsEmpty').' !</div>';
$_GET["action"]='presend';
dol_syslog('Recipient email is empty');
}
}
else
{
$langs->load("other");
$mesg='<div class="error">'.$langs->trans('ErrorCantReadFile',$file).'</div>';
dol_syslog('Failed to read file: '.$file);
}
}
else
{
$langs->load("other");
$mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
dol_syslog('Impossible de lire les donnees de la facture. Le fichier facture n\'a peut-etre pas ete genere.');
}
}
/* /*
* View * View
@@ -519,6 +740,8 @@ llxHeader('',$langs->trans("OrderCard"),"CommandeFournisseur");
$html = new Form($db); $html = new Form($db);
$formfile = new FormFile($db); $formfile = new FormFile($db);
$formorder = new FormOrder($db); $formorder = new FormOrder($db);
$productstatic = new Product($db);
/* *************************************************************************** */ /* *************************************************************************** */
/* */ /* */
@@ -526,12 +749,11 @@ $formorder = new FormOrder($db);
/* */ /* */
/* *************************************************************************** */ /* *************************************************************************** */
$now=gmmktime(); $now=dol_now();
$productstatic = new Product($db);
$id = $_REQUEST['id']; $id = $_REQUEST['id'];
$ref= $_REQUEST['ref']; $ref= $_REQUEST['ref'];
if ($id > 0 || ! empty($ref)) if ($id > 0 || ! empty($ref))
{ {
//if ($mesg) print $mesg.'<br>'; //if ($mesg) print $mesg.'<br>';
@@ -545,8 +767,7 @@ if ($id > 0 || ! empty($ref))
$soc->fetch($commande->socid); $soc->fetch($commande->socid);
$author = new User($db); $author = new User($db);
$author->id = $commande->user_author_id; $author->fetch($commande->user_author_id);
$author->fetch();
$head = ordersupplier_prepare_head($commande); $head = ordersupplier_prepare_head($commande);
@@ -576,7 +797,7 @@ if ($id > 0 || ! empty($ref))
$text=$langs->trans('ConfirmValidateOrder',$newref); $text=$langs->trans('ConfirmValidateOrder',$newref);
if ($conf->notification->enabled) if ($conf->notification->enabled)
{ {
require_once(DOL_DOCUMENT_ROOT ."/core/notify.class.php"); require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php");
$notify=new Notify($db); $notify=new Notify($db);
$text.='<br>'; $text.='<br>';
$text.=$notify->confirmMessage(3,$commande->socid); $text.=$notify->confirmMessage(3,$commande->socid);
@@ -595,7 +816,6 @@ if ($id > 0 || ! empty($ref))
} }
/* /*
* Confirmation de la desapprobation * Confirmation de la desapprobation
*
*/ */
if ($_GET['action'] == 'refuse') if ($_GET['action'] == 'refuse')
{ {
@@ -636,6 +856,14 @@ if ($id > 0 || ! empty($ref))
*/ */
$nbrow=8; $nbrow=8;
if ($conf->projet->enabled) $nbrow++; if ($conf->projet->enabled) $nbrow++;
//Local taxes
if ($mysoc->pays_code=='ES')
{
if($mysoc->localtax1_assuj=="1") $nbrow++;
if($mysoc->localtax2_assuj=="1") $nbrow++;
}
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
// Ref // Ref
@@ -678,12 +906,12 @@ if ($id > 0 || ! empty($ref))
} }
} }
// Auteur // Author
print '<tr><td>'.$langs->trans("AuthorRequest").'</td>'; print '<tr><td>'.$langs->trans("AuthorRequest").'</td>';
print '<td colspan="2">'.$author->getNomUrl(1).'</td>'; print '<td colspan="2">'.$author->getNomUrl(1).'</td>';
print '</tr>'; print '</tr>';
// Projet // Project
if ($conf->projet->enabled) if ($conf->projet->enabled)
{ {
$langs->load('projects'); $langs->load('projects');
@@ -691,9 +919,10 @@ if ($id > 0 || ! empty($ref))
print '<table class="nobordernopadding" width="100%"><tr><td>'; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('Project'); print $langs->trans('Project');
print '</td>'; print '</td>';
if ($_GET['action'] != 'classer' && $commande->brouillon) print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=classer&amp;id='.$commande->id.'">'.img_edit($langs->trans('SetProject')).'</a></td>'; if ($_GET['action'] != 'classer') print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=classer&amp;id='.$commande->id.'">'.img_edit($langs->trans('SetProject')).'</a></td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="2">'; print '</td><td colspan="2">';
//print "$commande->id, $commande->socid, $commande->fk_project";
if ($_GET['action'] == 'classer') if ($_GET['action'] == 'classer')
{ {
$html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->fk_project, 'projectid'); $html->form_project($_SERVER['PHP_SELF'].'?id='.$commande->id, $commande->socid, $commande->fk_project, 'projectid');
@@ -714,6 +943,22 @@ if ($id > 0 || ! empty($ref))
print '<tr><td>'.$langs->trans("AmountVAT").'</td><td align="right">'.price($commande->total_tva).'</td>'; print '<tr><td>'.$langs->trans("AmountVAT").'</td><td align="right">'.price($commande->total_tva).'</td>';
print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>'; print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
// Amount Local Taxes
if ($mysoc->pays_code=='ES')
{
if ($mysoc->localtax1_assuj=="1") //Localtax1 RE
{
print '<tr><td>'.$langs->transcountry("AmountLT1",$mysoc->pays_code).'</td>';
print '<td align="right">'.price($propal->total_localtax1).'</td>';
print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
}
if ($mysoc->localtax2_assuj=="1") //Localtax2 IRPF
{
print '<tr><td>'.$langs->transcountry("AmountLT2",$mysoc->pays_code).'</td>';
print '<td align="right">'.price($propal->total_localtax2).'</td>';
print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
}
}
print '<tr><td>'.$langs->trans("AmountTTC").'</td><td align="right">'.price($commande->total_ttc).'</td>'; print '<tr><td>'.$langs->trans("AmountTTC").'</td><td align="right">'.price($commande->total_ttc).'</td>';
print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>'; print '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
@@ -768,7 +1013,7 @@ if ($id > 0 || ! empty($ref))
$product_static=new ProductFournisseur($db); $product_static=new ProductFournisseur($db);
$product_static->fetch($commandline->fk_product); $product_static->fetch($commandline->fk_product);
$text=$product_static->getNomUrl(1); $text=$product_static->getNomUrl(1,'supplier');
$text.= ' - '.$product_static->libelle; $text.= ' - '.$product_static->libelle;
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($commandline->description)); $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($commandline->description));
print $html->textwithtooltip($text,$description,3,'','',$i); print $html->textwithtooltip($text,$description,3,'','',$i);
@@ -830,27 +1075,32 @@ if ($id > 0 || ! empty($ref))
// Ligne en mode update // Ligne en mode update
if ($_GET["action"] == 'editline' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $commandline->id)) if ($_GET["action"] == 'editline' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $commandline->id))
{ {
print "\n";
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&amp;etat=1&amp;ligne_id='.$commandline->id.'" method="post">'; print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&amp;etat=1&amp;ligne_id='.$commandline->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="updateligne">'; print '<input type="hidden" name="action" value="updateligne">';
print '<input type="hidden" name="id" value="'.$_REQUEST["id"].'">'; print '<input type="hidden" name="id" value="'.$commande->id.'">';
print '<input type="hidden" name="elrowid" value="'.$_GET['rowid'].'">'; print '<input type="hidden" name="elrowid" value="'.$_GET['rowid'].'">';
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>'; print '<td>';
print '<a name="'.$commandline->id.'"></a>'; // ancre pour retourner sur la ligne print '<a name="'.$commandline->id.'"></a>'; // ancre pour retourner sur la ligne
if (($conf->produit->enabled || $conf->service->enabled) && $commandline->fk_product > 0) if (($conf->product->enabled || $conf->service->enabled) && $commandline->fk_product > 0)
{ {
print '<a href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$commandline->product_id.'">'; $product_static=new ProductFournisseur($db);
print img_object($langs->trans('ShowProduct'),'product'); $product_static->fetch($commandline->fk_product);
print ' '.$commandline->ref_fourn.'</a>'; $text=$product_static->getNomUrl(1,'supplier');
print ' ('.$commandline->ref.')'; $text.= ' - '.$product_static->libelle;
print ' - '.nl2br($commandline->product); $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($commandline->description));
print '<br>'; print $html->textwithtooltip($text,$description,3,'','',$i);
// Show range
print_date_range($commandline->date_start,$commandline->date_end);
print '<br>';
} }
else else
{ {
print $html->select_type_of_lines($commandline->product_type,'type',1); print $html->select_type_of_lines($commandline->product_type,'type',1);
if ($conf->produit->enabled && $conf->service->enabled) print '<br>'; if ($conf->product->enabled && $conf->service->enabled) print '<br>';
} }
// Description - Editor wysiwyg // Description - Editor wysiwyg
@@ -873,7 +1123,7 @@ if ($id > 0 || ! empty($ref))
print '<td align="right"><input size="5" type="text" name="pu" value="'.price($commandline->subprice).'"></td>'; print '<td align="right"><input size="5" type="text" name="pu" value="'.price($commandline->subprice).'"></td>';
print '<td align="right"><input size="2" type="text" name="qty" value="'.$commandline->qty.'"></td>'; print '<td align="right"><input size="2" type="text" name="qty" value="'.$commandline->qty.'"></td>';
print '<td align="right" nowrap="nowrap"><input size="1" type="text" name="remise_percent" value="'.$commandline->remise_percent.'">%</td>'; print '<td align="right" nowrap="nowrap"><input size="1" type="text" name="remise_percent" value="'.$commandline->remise_percent.'">%</td>';
print '<td align="center" colspan="3"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; print '<td align="center" colspan="4"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans('Cancel').'"></td>'; print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans('Cancel').'"></td>';
print '</tr>' . "\n"; print '</tr>' . "\n";
print "</form>\n"; print "</form>\n";
@@ -909,8 +1159,8 @@ if ($id > 0 || ! empty($ref))
$forceall=1; $forceall=1;
print $html->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall); print $html->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall);
if ($forceall || ($conf->produit->enabled && $conf->service->enabled) if ($forceall || ($conf->product->enabled && $conf->service->enabled)
|| (empty($conf->produit->enabled) && empty($conf->service->enabled))) print '<br>'; || (empty($conf->product->enabled) && empty($conf->service->enabled))) print '<br>';
// Editor wysiwyg // Editor wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS)
@@ -941,7 +1191,7 @@ if ($id > 0 || ! empty($ref))
print '</form>'; print '</form>';
// Ajout de produits/services predefinis // Ajout de produits/services predefinis
if ($conf->produit->enabled || $conf->service->enabled) if ($conf->product->enabled || $conf->service->enabled)
{ {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="3">'; print '<td colspan="3">';
@@ -999,133 +1249,220 @@ if ($id > 0 || ! empty($ref))
print '</div>'; print '</div>';
/** if ($_GET['action'] != 'presend')
* Boutons actions
*/
if ($user->societe_id == 0 && $_GET['action'] != 'editline' && $_GET['action'] != 'delete')
{ {
print '<div class="tabsAction">';
if ($commande->statut == 0 && $num > 0) /**
* Boutons actions
*/
if ($user->societe_id == 0 && $_GET['action'] != 'editline' && $_GET['action'] != 'delete')
{ {
if ($user->rights->fournisseur->commande->valider) print '<div class="tabsAction">';
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&amp;action=valid"';
print '>'.$langs->trans('Validate').'</a>';
}
}
if ($commande->statut == 1) // Validate
{ if ($commande->statut == 0 && $num > 0)
if ($user->rights->fournisseur->commande->approuver)
{ {
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&amp;action=approve">'.$langs->trans("ApproveOrder").'</a>'; if ($user->rights->fournisseur->commande->valider)
{
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&amp;action=refuse">'.$langs->trans("RefuseOrder").'</a>'; print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&amp;action=valid"';
print '>'.$langs->trans('Validate').'</a>';
}
} }
if ($user->rights->fournisseur->commande->annuler) // Approve
if ($commande->statut == 1)
{ {
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=cancel">'.$langs->trans("CancelOrder").'</a>'; if ($user->rights->fournisseur->commande->approuver)
{
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&amp;action=approve">'.$langs->trans("ApproveOrder").'</a>';
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&amp;action=refuse">'.$langs->trans("RefuseOrder").'</a>';
}
} }
} // Send
if ($commande->statut == 2)
if ($commande->statut == 2)
{
if ($user->rights->fournisseur->commande->annuler)
{ {
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=cancel">'.$langs->trans("CancelOrder").'</a>'; if ($user->rights->fournisseur->commande->commander)
{
$comref = dol_sanitizeFileName($commande->ref);
$file = $conf->fournisseur->commande->dir_output . '/'.$comref.'/'.$comref.'.pdf';
if (file_exists($file))
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&amp;action=presend&amp;mode=init">'.$langs->trans('SendByMail').'</a>';
}
}
} }
// Cancel
if ($commande->statut == 2)
{
if ($user->rights->fournisseur->commande->commander)
{
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=cancel">'.$langs->trans("CancelOrder").'</a>';
}
}
// Reopen
if ($commande->statut == 5 || $commande->statut == 6 || $commande->statut == 7 || $commande->statut == 9)
{
if ($user->rights->fournisseur->commande->commander)
{
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&amp;action=reopen">'.$langs->trans("ReOpen").'</a>';
}
}
// Delete
if ($user->rights->fournisseur->commande->supprimer)
{
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
}
print "</div>";
} }
if ($user->rights->fournisseur->commande->annuler)
print '<table width="100%"><tr><td width="50%" valign="top">';
print '<a name="builddoc"></a>'; // ancre
/*
* Documents generes
*/
$comfournref = dol_sanitizeFileName($commande->ref);
$file = $conf->fournisseur->dir_output . '/commande/' . $comfournref . '/' . $comfournref . '.pdf';
$relativepath = $comfournref.'/'.$comfournref.'.pdf';
$filedir = $conf->fournisseur->dir_output . '/commande/' . $comfournref;
$urlsource=$_SERVER["PHP_SELF"]."?id=".$commande->id;
$genallowed=$user->rights->fournisseur->commande->creer;
$delallowed=$user->rights->fournisseur->commande->supprimer;
$somethingshown=$formfile->show_documents('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$commande->modelpdf);
print '</td><td valign="top" width="50%">';
if ( $user->rights->fournisseur->commande->commander && $commande->statut == 2)
{ {
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>'; /**
* Commander (action=commande)
*/
print '<br>';
print '<form name="commande" action="fiche.php?id='.$commande->id.'&amp;action=commande" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="commande">';
print '<table class="border" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("ToOrder").'</td></tr>';
print '<tr><td>'.$langs->trans("OrderDate").'</td><td>';
$date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
print $html->select_date($date_com,'','','','',"commande");
print '</td></tr>';
print '<tr><td>'.$langs->trans("OrderMode").'</td><td>';
$formorder->select_methodes_commande($_POST["methodecommande"],"methodecommande",1);
print '</td></tr>';
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="40" type="text" name="comment" value="'.$_POST["comment"].'"></td></tr>';
print '<tr><td align="center" colspan="2"><input type="submit" class="button" value="'.$langs->trans("ToOrder").'"></td></tr>';
print '</table>';
print '</form>';
} }
print "</div>"; if ( $user->rights->fournisseur->commande->receptionner && ($commande->statut == 3 ||$commande->statut == 4 ))
{
/**
* Receptionner (action=livraison)
*/
print '<br>';
print '<form action="fiche.php?id='.$commande->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="livraison">';
print '<table class="border" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Receive").'</td></tr>';
print '<tr><td>'.$langs->trans("DeliveryDate").'</td><td>';
print $html->select_date('','','','','',"commande");
print "</td></tr>\n";
print "<tr><td>".$langs->trans("Delivery")."</td><td>\n";
$liv = array();
$liv[''] = '&nbsp;';
$liv['tot'] = $langs->trans("TotalWoman");
$liv['par'] = $langs->trans("PartialWoman");
$liv['nev'] = $langs->trans("NeverReceived");
$liv['can'] = $langs->trans("Canceled");
print $html->select_array("type",$liv);
print '</td></tr>';
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="40" type="text" name="comment"></td></tr>';
print '<tr><td align="center" colspan="2"><input type="submit" class="button" value="'.$langs->trans("Receive").'"></td></tr>';
print "</table>\n";
print "</form>\n";
}
// List of actions on element
// include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php');
// $formactions=new FormActions($db);
// $somethingshown=$formactions->showactions($commande,'supplier_order',$socid);
print '</td></tr></table>';
} }
print '<table width="100%"><tr><td width="50%" valign="top">';
print '<a name="builddoc"></a>'; // ancre
/* /*
* Documents generes * Action presend
*
*/ */
$comfournref = dol_sanitizeFileName($commande->ref); if ($_GET['action'] == 'presend')
$file = $conf->fournisseur->dir_output . '/commande/' . $comfournref . '/' . $comfournref . '.pdf';
$relativepath = $comfournref.'/'.$comfournref.'.pdf';
$filedir = $conf->fournisseur->dir_output . '/commande/' . $comfournref;
$urlsource=$_SERVER["PHP_SELF"]."?id=".$commande->id;
$genallowed=$user->rights->fournisseur->commande->creer;
$delallowed=$user->rights->fournisseur->commande->supprimer;
$somethingshown=$formfile->show_documents('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$commande->modelpdf);
print '</td><td width="50%" valign="top">';
if ( $user->rights->fournisseur->commande->commander && ($commande->statut == 2 || $commande->statut == 6))
{ {
/** $ref = dol_sanitizeFileName($commande->ref);
* Commander (action=commande) $file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf';
*/
print '<br>'; print '<br>';
print '<form name="commande" action="fiche.php?id='.$commande->id.'&amp;action=commande" method="post">'; print_titre($langs->trans('SendOrderByMail'));
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="commande">';
print '<table class="border" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("ToOrder").'</td></tr>';
print '<tr><td>'.$langs->trans("OrderDate").'</td><td>';
$date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
print $html->select_date($date_com,'','','','',"commande");
print '</td></tr>';
print '<tr><td>'.$langs->trans("OrderMode").'</td><td>'; // Cree l'objet formulaire mail
$formorder->select_methodes_commande($_POST["methodecommande"],"methodecommande",1); include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php');
print '</td></tr>'; $formmail = new FormMail($db);
$formmail->fromtype = 'user';
$formmail->fromid = $user->id;
$formmail->fromname = $user->getFullName($langs);
$formmail->frommail = $user->email;
$formmail->withfrom=1;
$formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"];
$formmail->withtosocid=$soc->id;
$formmail->withtocc=1;
$formmail->withtoccsocid=0;
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
$formmail->withtocccsocid=0;
$formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__');
$formmail->withfile=2;
$formmail->withbody=1;
$formmail->withdeliveryreceipt=1;
$formmail->withcancel=1;
// Tableau des substitutions
$formmail->substit['__ORDERREF__']=$commande->ref;
// Tableau des parametres complementaires
$formmail->param['action']='send';
$formmail->param['models']='supplier_order_send';
$formmail->param['orderid']=$commande->id;
$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$commande->id;
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="30" type="text" name="comment" value="'.$_POST["comment"].'"></td></tr>'; // Init list of files
print '<tr><td align="center" colspan="2"><input type="submit" class="button" name="'.$langs->trans("Activate").'"></td></tr>'; if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init')
print '</table>'; {
print '</form>'; $formmail->clear_attached_files();
$formmail->add_attached_files($file,$ref.'.pdf','application/pdf');
}
// Show form
$formmail->show_form();
print '<br>';
} }
if ( $user->rights->fournisseur->commande->receptionner && ($commande->statut == 3 ||$commande->statut == 4 ))
{
/**
* Receptionner (action=livraison)
*/
print '<br>';
print '<form action="fiche.php?id='.$commande->id.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="livraison">';
print '<table class="border" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Receive").'</td></tr>';
print '<tr><td>'.$langs->trans("DeliveryDate").'</td><td>';
print $html->select_date('','','','','',"commande");
print "</td></tr>\n";
print "<tr><td>".$langs->trans("Delivery")."</td><td>\n";
$liv = array();
$liv[''] = '&nbsp;';
$liv['tot'] = $langs->trans("TotalWoman");
$liv['par'] = $langs->trans("PartialWoman");
$liv['nev'] = $langs->trans("NeverReceived");
$liv['can'] = $langs->trans("Canceled");
print $html->select_array("type",$liv);
print '</td></tr>';
print '<tr><td>'.$langs->trans("Comment").'</td><td><input size="30" type="text" name="comment"></td></tr>';
print '<tr><td align="center" colspan="2"><input type="submit" class="button" name="'.$langs->trans("Activate").'"></td></tr>';
print "</table>\n";
print "</form>\n";
}
print '</td></tr></table>'; print '</td></tr></table>';
} }
else else
{ {

View File

@@ -39,16 +39,23 @@ class MenuLeft {
var $require_top=array("auguria_backoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier var $require_top=array("auguria_backoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier
var $db;
var $menu_array;
var $menu_array_after;
/** /**
* \brief Constructeur * \brief Constructor
* \param db Handler d'acces base de donnee * \param db Database handler
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php * \param menu_array Table of menu entries to show before entries of menu handler
* \param menu_array_after Table of menu entries to show after entries of menu handler
*
*/ */
function MenuLeft($db,&$menu_array='') function MenuLeft($db,&$menu_array,&$menu_array_after)
{ {
$this->db=$db; $this->db=$db;
$this->menu_array=$menu_array; $this->menu_array=$menu_array;
$this->menu_array_after=$menu_array_after;
} }
@@ -60,7 +67,7 @@ class MenuLeft {
{ {
require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/auguria.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/auguria.lib.php');
$res=print_left_auguria_menu($this->db,$this->menu_array); $res=print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after);
return $res; return $res;
} }

View File

@@ -39,16 +39,22 @@ class MenuLeft {
var $require_top=array("auguria_frontoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier var $require_top=array("auguria_frontoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier
var $db;
var $menu_array;
var $menu_array_after;
/** /**
* \brief Constructeur * \brief Constructor
* \param db Handler d'acces base de donnee * \param db Database handler
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php * \param menu_array Table of menu entries to show before entries of menu handler
* \param menu_array_after Table of menu entries to show after entries of menu handler
*/ */
function MenuLeft($db,&$menu_array='') function MenuLeft($db,&$menu_array,&$menu_array_after)
{ {
$this->db=$db; $this->db=$db;
$this->menu_array=$menu_array; $this->menu_array=$menu_array;
$this->menu_array_after=$menu_array_after;
} }
@@ -60,7 +66,7 @@ class MenuLeft {
{ {
require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/auguria.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/auguria.lib.php');
$res=print_left_auguria_menu($this->db,$this->menu_array); $res=print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after);
$conf->global->MAIN_SEARCHFORM_SOCIETE=0; $conf->global->MAIN_SEARCHFORM_SOCIETE=0;
$conf->global->MAIN_SEARCHFORM_CONTACT=0; $conf->global->MAIN_SEARCHFORM_CONTACT=0;

View File

@@ -1,5 +1,6 @@
<?php <?php
/* Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -27,9 +28,11 @@
/** /**
* Core function to output left menu eldy * Core function to output left menu eldy
* *
* @param unknown_type $db * @param db Database handler
* @param menu_array_before Table of menu entries to show before entries of menu handler
* @param menu_array_after Table of menu entries to show after entries of menu handler
*/ */
function print_left_eldy_menu($db,$menu_array) function print_left_eldy_menu($db,$menu_array_before,$menu_array_after)
{ {
global $user,$conf,$langs,$dolibarr_main_db_name,$mysoc; global $user,$conf,$langs,$dolibarr_main_db_name,$mysoc;
@@ -62,7 +65,7 @@ function print_left_eldy_menu($db,$menu_array)
$_SESSION["leftmenuopened"]=$leftmenu; $_SESSION["leftmenuopened"]=$leftmenu;
} }
} else { } else {
// On va le chercher en session si non d<EFBFBD>fini par le lien // On va le chercher en session si non defini par le lien
$leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:''; $leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:'';
} }
@@ -120,7 +123,7 @@ function print_left_eldy_menu($db,$menu_array)
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/constall.php", $langs->trans("AllParameters"),2); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/constall.php", $langs->trans("AllParameters"),2);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/modules.php", $langs->trans("Modules"),2); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/modules.php", $langs->trans("Modules"),2);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/triggers.php", $langs->trans("Triggers"),2); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/triggers.php", $langs->trans("Triggers"),2);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/about.php", $langs->trans("About"),2); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/about.php", $langs->trans("About"),2);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/os.php", $langs->trans("OS"),1); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/os.php", $langs->trans("OS"),1);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/web.php", $langs->trans("WebServer"),1); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/web.php", $langs->trans("WebServer"),1);
if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/phpinfo.php", $langs->trans("Php"),1); if ($leftmenu=="system") $newmenu->add(DOL_URL_ROOT."/admin/system/phpinfo.php", $langs->trans("Php"),1);
@@ -157,12 +160,12 @@ function print_left_eldy_menu($db,$menu_array)
if ($conf->societe->enabled) if ($conf->societe->enabled)
{ {
$langs->load("companies"); $langs->load("companies");
$newmenu->add(DOL_URL_ROOT."/societe.php", $langs->trans("ThirdParty"), 0, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/societe/societe.php", $langs->trans("ThirdParty"), 0, $user->rights->societe->lire);
if ($user->rights->societe->creer) if ($user->rights->societe->creer)
{ {
$newmenu->add(DOL_URL_ROOT."/soc.php?action=create", $langs->trans("MenuNewThirdParty"),1); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?action=create", $langs->trans("MenuNewThirdParty"),1);
if (! $conf->use_javascript_ajax) $newmenu->add(DOL_URL_ROOT."/soc.php?action=create&amp;private=1",$langs->trans("MenuNewPrivateIndividual"),1); if (! $conf->use_javascript_ajax) $newmenu->add(DOL_URL_ROOT."/societe/soc.php?action=create&amp;private=1",$langs->trans("MenuNewPrivateIndividual"),1);
} }
if(is_dir("societe/groupe")) if(is_dir("societe/groupe"))
@@ -180,11 +183,10 @@ function print_left_eldy_menu($db,$menu_array)
if ($user->societe_id == 0) if ($user->societe_id == 0)
{ {
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("MenuNewSupplier"), 2, $user->rights->societe->creer && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("MenuNewSupplier"), 2, $user->rights->societe->creer && $user->rights->fournisseur->lire);
} }
//$newmenu->add(DOL_URL_ROOT."/fourn/liste.php?leftmenu=suppliers", $langs->trans("List"), 2, $user->rights->societe->lire && $user->rights->fournisseur->lire); //$newmenu->add(DOL_URL_ROOT."/fourn/liste.php?leftmenu=suppliers", $langs->trans("List"), 2, $user->rights->societe->lire && $user->rights->fournisseur->lire);
//$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=suppliers&amp;type=f",$langs->trans("Contacts"), 2, $user->rights->societe->lire && $user->rights->fournisseur->lire && $user->rights->societe->contact->lire); //$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=suppliers&amp;type=f",$langs->trans("Contacts"), 2, $user->rights->societe->lire && $user->rights->fournisseur->lire && $user->rights->societe->contact->lire);
$newmenu->add(DOL_URL_ROOT."/fourn/stats.php",$langs->trans("Statistics"), 2, $user->rights->societe->lire && $user->rights->fournisseur->lire);
} }
// Prospects // Prospects
@@ -193,7 +195,7 @@ function print_left_eldy_menu($db,$menu_array)
$langs->load("commercial"); $langs->load("commercial");
$newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer);
//$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire); //$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
} }
@@ -203,7 +205,7 @@ function print_left_eldy_menu($db,$menu_array)
$langs->load("commercial"); $langs->load("commercial");
$newmenu->add(DOL_URL_ROOT."/comm/clients.php?leftmenu=customers", $langs->trans("ListCustomersShort"), 1, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/comm/clients.php?leftmenu=customers", $langs->trans("ListCustomersShort"), 1, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"), 2, $user->rights->societe->creer); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"), 2, $user->rights->societe->creer);
//$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire); //$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
} }
@@ -248,10 +250,20 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("companies"); $langs->load("companies");
// Suppliers
if ($conf->fournisseur->enabled)
{
$newmenu->add(DOL_URL_ROOT."/fourn/index.php?leftmenu=suppliers", $langs->trans("Suppliers"), 0, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f", $langs->trans("MenuNewSupplier"), 1, $user->rights->societe->creer);
$newmenu->add(DOL_URL_ROOT."/fourn/liste.php?leftmenu=customers", $langs->trans("List"), 1, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=suppliers&amp;type=f", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire);
}
// Prospects // Prospects
$newmenu->add(DOL_URL_ROOT."/comm/prospect/index.php?leftmenu=prospects", $langs->trans("Prospects"), 0, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/comm/prospect/index.php?leftmenu=prospects", $langs->trans("Prospects"), 0, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 1, $user->rights->societe->creer); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 1, $user->rights->societe->creer);
$newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?leftmenu=prospects", $langs->trans("List"), 1, $user->rights->societe->contact->lire); $newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?leftmenu=prospects", $langs->trans("List"), 1, $user->rights->societe->contact->lire);
if ($leftmenu=="prospects") $newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire); if ($leftmenu=="prospects") $newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire);
@@ -262,10 +274,10 @@ function print_left_eldy_menu($db,$menu_array)
$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=prospects&amp;type=p", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire); $newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=prospects&amp;type=p", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire);
// Clients // Customers
$newmenu->add(DOL_URL_ROOT."/comm/index.php?leftmenu=customers", $langs->trans("Customers"), 0, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/comm/index.php?leftmenu=customers", $langs->trans("Customers"), 0, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"), 1, $user->rights->societe->creer); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"), 1, $user->rights->societe->creer);
$newmenu->add(DOL_URL_ROOT."/comm/clients.php?leftmenu=customers", $langs->trans("List"), 1, $user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/comm/clients.php?leftmenu=customers", $langs->trans("List"), 1, $user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire); $newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire);
@@ -283,7 +295,7 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("propal"); $langs->load("propal");
$newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals", $langs->trans("Prop"), 0 ,$user->rights->propale->lire); $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals", $langs->trans("Prop"), 0 ,$user->rights->propale->lire);
if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/societe.php?leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer); if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/societe/societe.php?leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire); if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire); if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire); if ($leftmenu=="propals") $newmenu->add(DOL_URL_ROOT."/comm/propal.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
@@ -299,7 +311,7 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("orders"); $langs->load("orders");
$newmenu->add(DOL_URL_ROOT."/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0 ,$user->rights->commande->lire); $newmenu->add(DOL_URL_ROOT."/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0 ,$user->rights->commande->lire);
if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/societe.php?leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer); if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/societe/societe.php?leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer);
if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire); if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire);
if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire); if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders&viewstatut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire); if ($leftmenu=="orders") $newmenu->add(DOL_URL_ROOT."/commande/liste.php?leftmenu=orders&viewstatut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire);
@@ -315,7 +327,7 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("orders"); $langs->load("orders");
$newmenu->add(DOL_URL_ROOT."/fourn/commande/index.php?leftmenu=orders_suppliers",$langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire); $newmenu->add(DOL_URL_ROOT."/fourn/commande/index.php?leftmenu=orders_suppliers",$langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire);
if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/societe.php?leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer); if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/societe/societe.php?leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/fourn/commande/liste.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire); if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/fourn/commande/liste.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/commande/stats/index.php?leftmenu=orders_suppliers&amp;mode=supplier", $langs->trans("Statistics"), 1 ,$user->rights->fournisseur->commande->lire); if ($leftmenu=="orders_suppliers") $newmenu->add(DOL_URL_ROOT."/commande/stats/index.php?leftmenu=orders_suppliers&amp;mode=supplier", $langs->trans("Statistics"), 1 ,$user->rights->fournisseur->commande->lire);
} }
@@ -325,7 +337,7 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("contracts"); $langs->load("contracts");
$newmenu->add(DOL_URL_ROOT."/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0 ,$user->rights->contrat->lire); $newmenu->add(DOL_URL_ROOT."/contrat/index.php?leftmenu=contracts", $langs->trans("Contracts"), 0 ,$user->rights->contrat->lire);
if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/societe.php?leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer); if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/societe/societe.php?leftmenu=contracts", $langs->trans("NewContract"), 1, $user->rights->contrat->creer);
if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/liste.php?leftmenu=contracts", $langs->trans("List"), 1 ,$user->rights->contrat->lire); if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/liste.php?leftmenu=contracts", $langs->trans("List"), 1 ,$user->rights->contrat->lire);
if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1 ,$user->rights->contrat->lire); if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/services.php?leftmenu=contracts", $langs->trans("MenuServices"), 1 ,$user->rights->contrat->lire);
if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/services.php?leftmenu=contracts&amp;mode=0", $langs->trans("MenuInactiveServices"), 2 ,$user->rights->contrat->lire); if ($leftmenu=="contracts") $newmenu->add(DOL_URL_ROOT."/contrat/services.php?leftmenu=contracts&amp;mode=0", $langs->trans("MenuInactiveServices"), 2 ,$user->rights->contrat->lire);
@@ -362,7 +374,7 @@ function print_left_eldy_menu($db,$menu_array)
// Security check // Security check
if ($user->societe_id == 0) if ($user->societe_id == 0)
{ {
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("NewSupplier"),1,$user->rights->societe->creer && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("NewSupplier"),1,$user->rights->societe->creer && $user->rights->fournisseur->lire);
} }
$newmenu->add(DOL_URL_ROOT."/fourn/liste.php?leftmenu=suppliers", $langs->trans("List"),1,$user->rights->societe->lire && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/fourn/liste.php?leftmenu=suppliers", $langs->trans("List"),1,$user->rights->societe->lire && $user->rights->fournisseur->lire);
if ($conf->societe->enabled) if ($conf->societe->enabled)
@@ -390,7 +402,7 @@ function print_left_eldy_menu($db,$menu_array)
$newmenu->add(DOL_URL_ROOT."/compta/index.php?leftmenu=customers", $langs->trans("Customers"),0,$user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/compta/index.php?leftmenu=customers", $langs->trans("Customers"),0,$user->rights->societe->lire);
if ($user->societe_id == 0) if ($user->societe_id == 0)
{ {
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"),1,$user->rights->societe->creer); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"),1,$user->rights->societe->creer);
} }
$newmenu->add(DOL_URL_ROOT."/compta/clients.php?leftmenu=customers", $langs->trans("List"),1,$user->rights->societe->lire); $newmenu->add(DOL_URL_ROOT."/compta/clients.php?leftmenu=customers", $langs->trans("List"),1,$user->rights->societe->lire);
$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"),1,$user->rights->societe->contact->lire); $newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&amp;type=c", $langs->trans("Contacts"),1,$user->rights->societe->contact->lire);
@@ -493,44 +505,6 @@ function print_left_eldy_menu($db,$menu_array)
} }
// Prelevements
if ($conf->prelevement->enabled)
{
$langs->load("withdrawals");
$langs->load("banks");
$newmenu->add(DOL_URL_ROOT."/compta/prelevement/index.php?leftmenu=withdraw",$langs->trans("StandingOrders"),0,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/create.php",$langs->trans("NewStandingOrder"),1,$user->rights->prelevement->bons->creer);
//if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php",$langs->trans("StandingOrder"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php?status=0",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire);
//if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php?status=1",$langs->trans("StandingOrderProcessed"),2,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/bons.php",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/liste.php",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/liste_factures.php",$langs->trans("WithdrawedBills"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/rejets.php",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/stats.php",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer);
}
// Gestion cheques
if ($conf->facture->enabled && $conf->banque->enabled)
{
$newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/index.php?leftmenu=checks",$langs->trans("MenuChequeDeposits"),0,$user->rights->banque->cheque);
if (preg_match("/checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/fiche.php?leftmenu=checks&amp;action=new",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque);
if (preg_match("/checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/liste.php?leftmenu=checks",$langs->trans("MenuChequesReceipts"),1,$user->rights->banque->cheque);
}
// Bank-Caisse
if ($conf->banque->enabled)
{
$langs->load("banks");
$newmenu->add(DOL_URL_ROOT."/compta/bank/index.php?leftmenu=bank&amp;mainmenu=bank",$langs->trans("MenuBankCash"),0,$user->rights->banque->lire);
}
// Rapports // Rapports
if ($conf->compta->enabled || $conf->accounting->enabled) if ($conf->compta->enabled || $conf->accounting->enabled)
{ {
@@ -559,13 +533,67 @@ function print_left_eldy_menu($db,$menu_array)
} }
/*
* Menu BANK
*/
if ($mainmenu == 'bank')
{
$langs->load("withdrawals");
$langs->load("banks");
$langs->load("bills");
// Bank-Caisse
if ($conf->banque->enabled)
{
$langs->load("banks");
$newmenu->add(DOL_URL_ROOT."/compta/bank/index.php?leftmenu=bank&amp;mainmenu=bank",$langs->trans("MenuBankCash"),0,$user->rights->banque->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/compta/bank/fiche.php?action=create",$langs->trans("MenuNewFinancialAccount"),1,$user->rights->banque->configurer);
$newmenu->add_submenu(DOL_URL_ROOT."/compta/bank/categ.php",$langs->trans("Rubriques"),1,$user->rights->banque->configurer);
$newmenu->add_submenu(DOL_URL_ROOT."/compta/bank/search.php",$langs->trans("ListTransactions"),1,$user->rights->banque->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/compta/bank/budget.php",$langs->trans("ListTransactionsByCategory"),1,$user->rights->banque->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/compta/bank/virement.php",$langs->trans("BankTransfers"),1,$user->rights->banque->transfer);
}
// Prelevements
if ($conf->prelevement->enabled)
{
$newmenu->add(DOL_URL_ROOT."/compta/prelevement/index.php?leftmenu=withdraw&amp;mainmenu=bank",$langs->trans("StandingOrders"),0,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/create.php?mainmenu=bank",$langs->trans("NewStandingOrder"),1,$user->rights->prelevement->bons->creer);
//if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php",$langs->trans("StandingOrder"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php?status=0&amp;mainmenu=bank",$langs->trans("StandingOrderToProcess"),1,$user->rights->prelevement->bons->lire);
//if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php?status=1",$langs->trans("StandingOrderProcessed"),2,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/bons.php?mainmenu=bank",$langs->trans("WithdrawalsReceipts"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/liste.php?mainmenu=bank",$langs->trans("WithdrawalsLines"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/liste_factures.php?mainmenu=bank",$langs->trans("WithdrawedBills"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/rejets.php?mainmenu=bank",$langs->trans("Rejects"),1,$user->rights->prelevement->bons->lire);
if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/stats.php?mainmenu=bank",$langs->trans("Statistics"),1,$user->rights->prelevement->bons->lire);
//if ($leftmenu=="withdraw") $newmenu->add(DOL_URL_ROOT."/compta/prelevement/config.php",$langs->trans("Setup"),1,$user->rights->prelevement->bons->configurer);
}
// Gestion cheques
if ($conf->facture->enabled && $conf->banque->enabled)
{
$newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/index.php?leftmenu=checks&amp;mainmenu=bank",$langs->trans("MenuChequeDeposits"),0,$user->rights->banque->cheque);
if (preg_match("/checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/fiche.php?leftmenu=checks&amp;action=new&amp;mainmenu=bank",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque);
if (preg_match("/checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/liste.php?leftmenu=checks&amp;mainmenu=bank",$langs->trans("MenuChequesReceipts"),1,$user->rights->banque->cheque);
}
}
/* /*
* Menu PRODUITS-SERVICES * Menu PRODUITS-SERVICES
*/ */
if ($mainmenu == 'products') if ($mainmenu == 'products')
{ {
// Products // Products
if ($conf->produit->enabled) if ($conf->product->enabled)
{ {
$newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=product&amp;type=0", $langs->trans("Products"), 0, $user->rights->produit->lire); $newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=product&amp;type=0", $langs->trans("Products"), 0, $user->rights->produit->lire);
if ($user->societe_id == 0) if ($user->societe_id == 0)
@@ -574,8 +602,8 @@ function print_left_eldy_menu($db,$menu_array)
$newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&amp;type=0", $langs->trans("List"), 1, $user->rights->produit->lire); $newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&amp;type=0", $langs->trans("List"), 1, $user->rights->produit->lire);
if (! empty($conf->droitpret->enabled)) if (! empty($conf->droitpret->enabled))
{ {
$newmenu->add(DOL_URL_ROOT."/product/fiche.php?leftmenu=product&amp;action=create&amp;type=0&canvas=livre", $langs->trans("NewBook"), 1, $user->rights->produit->creer); $newmenu->add(DOL_URL_ROOT."/product/fiche.php?leftmenu=product&amp;action=create&amp;type=0&canvas=livre@droitpret", $langs->trans("NewBook"), 1, $user->rights->produit->creer);
$newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&amp;type=0&amp;canvas=livre", $langs->trans("BookList"), 1, $user->rights->produit->creer); $newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&amp;type=0&amp;canvas=livre@droitpret", $langs->trans("BookList"), 1, $user->rights->produit->creer);
} }
} }
if ($conf->propal->enabled) if ($conf->propal->enabled)
@@ -630,7 +658,7 @@ function print_left_eldy_menu($db,$menu_array)
if ($conf->expedition->enabled) if ($conf->expedition->enabled)
{ {
$langs->load("sendings"); $langs->load("sendings");
$newmenu->add(DOL_URL_ROOT."/expedition/index.php?leftmenu=sendings", $langs->trans("Sendings"), 0, $user->rights->expedition->lire); $newmenu->add(DOL_URL_ROOT."/expedition/index.php?leftmenu=sendings", $langs->trans("Shipments"), 0, $user->rights->expedition->lire);
if ($leftmenu=="sendings") $newmenu->add(DOL_URL_ROOT."/expedition/liste.php?leftmenu=sendings", $langs->trans("List"), 1 ,$user->rights->expedition->lire); if ($leftmenu=="sendings") $newmenu->add(DOL_URL_ROOT."/expedition/liste.php?leftmenu=sendings", $langs->trans("List"), 1 ,$user->rights->expedition->lire);
if ($leftmenu=="sendings") $newmenu->add(DOL_URL_ROOT."/expedition/stats/index.php?leftmenu=sendings", $langs->trans("Statistics"), 1 ,$user->rights->expedition->lire); if ($leftmenu=="sendings") $newmenu->add(DOL_URL_ROOT."/expedition/stats/index.php?leftmenu=sendings", $langs->trans("Statistics"), 1 ,$user->rights->expedition->lire);
} }
@@ -652,7 +680,7 @@ function print_left_eldy_menu($db,$menu_array)
// Security check // Security check
if ($user->societe_id == 0) if ($user->societe_id == 0)
{ {
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("NewSupplier"), 1, $user->rights->societe->creer && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&amp;action=create&amp;type=f",$langs->trans("NewSupplier"), 1, $user->rights->societe->creer && $user->rights->fournisseur->lire);
} }
$newmenu->add(DOL_URL_ROOT."/fourn/liste.php",$langs->trans("List"), 1, $user->rights->societe->lire && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/fourn/liste.php",$langs->trans("List"), 1, $user->rights->societe->lire && $user->rights->fournisseur->lire);
$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=suppliers&amp;type=f",$langs->trans("Contacts"), 1, $user->rights->societe->contact->lire && $user->rights->fournisseur->lire); $newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=suppliers&amp;type=f",$langs->trans("Contacts"), 1, $user->rights->societe->contact->lire && $user->rights->fournisseur->lire);
@@ -676,7 +704,7 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("orders"); $langs->load("orders");
$newmenu->add(DOL_URL_ROOT."/fourn/commande/index.php?leftmenu=suppliers",$langs->trans("Orders"), 0, $user->rights->fournisseur->commande->lire); $newmenu->add(DOL_URL_ROOT."/fourn/commande/index.php?leftmenu=suppliers",$langs->trans("Orders"), 0, $user->rights->fournisseur->commande->lire);
$newmenu->add(DOL_URL_ROOT."/societe.php?leftmenu=supplier", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer); $newmenu->add(DOL_URL_ROOT."/societe/societe.php?leftmenu=supplier", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
$newmenu->add(DOL_URL_ROOT."/fourn/commande/liste.php?leftmenu=suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire); $newmenu->add(DOL_URL_ROOT."/fourn/commande/liste.php?leftmenu=suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
} }
@@ -694,7 +722,7 @@ function print_left_eldy_menu($db,$menu_array)
} }
/* /*
* Menu PROJETS * Menu PROJECTS
*/ */
if ($mainmenu == 'project') if ($mainmenu == 'project')
{ {
@@ -702,23 +730,27 @@ function print_left_eldy_menu($db,$menu_array)
{ {
$langs->load("projects"); $langs->load("projects");
// Project affected to user
$newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects&mode=mine", $langs->trans("MyProjects"), 0, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects&mode=mine", $langs->trans("MyProjects"), 0, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create&mode=mine", $langs->trans("NewProject"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create&mode=mine", $langs->trans("NewProject"), 1, $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects&mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects&mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire); // All project i have permission on
$newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire && $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/fiche.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer && $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/liste.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire);
// Project affected to user
$newmenu->add(DOL_URL_ROOT."/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/tasks/fiche.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/activity/list.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/activity/list.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire); // All project i have permission on
$newmenu->add(DOL_URL_ROOT."/projet/tasks/fiche.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire); $newmenu->add(DOL_URL_ROOT."/projet/tasks.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $user->rights->projet->creer);
$newmenu->add(DOL_URL_ROOT."/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); $newmenu->add(DOL_URL_ROOT."/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire);
$newmenu->add(DOL_URL_ROOT."/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer);
} }
} }
@@ -775,11 +807,11 @@ function print_left_eldy_menu($db,$menu_array)
$newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=members&amp;mainmenu=members",$langs->trans("Members"),0,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=members&amp;mainmenu=members",$langs->trans("Members"),0,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/fiche.php?leftmenu=members&amp;action=create",$langs->trans("NewMember"),1,$user->rights->adherent->creer); $newmenu->add(DOL_URL_ROOT."/adherents/fiche.php?leftmenu=members&amp;action=create",$langs->trans("NewMember"),1,$user->rights->adherent->creer);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members",$langs->trans("List"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members",$langs->trans("List"),1,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=-1",$langs->trans("MenuMembersToValidate"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=-1",$langs->trans("MenuMembersToValidate"),2,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1",$langs->trans("MenuMembersValidated"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1",$langs->trans("MenuMembersValidated"),2,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1&amp;filter=uptodate",$langs->trans("MenuMembersUpToDate"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1&amp;filter=uptodate",$langs->trans("MenuMembersUpToDate"),2,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1&amp;filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=1&amp;filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),2,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=0",$langs->trans("MenuMembersResiliated"),1,$user->rights->adherent->lire); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=0",$langs->trans("MenuMembersResiliated"),2,$user->rights->adherent->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=members&amp;mainmenu=members",$langs->trans("Subscriptions"),0,$user->rights->adherent->cotisation->lire); $newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=members&amp;mainmenu=members",$langs->trans("Subscriptions"),0,$user->rights->adherent->cotisation->lire);
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=-1,1&amp;mainmenu=members",$langs->trans("NewSubscription"),1,$user->rights->adherent->cotisation->creer); $newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&amp;statut=-1,1&amp;mainmenu=members",$langs->trans("NewSubscription"),1,$user->rights->adherent->cotisation->creer);
@@ -797,20 +829,6 @@ function print_left_eldy_menu($db,$menu_array)
//if ($leftmenu=="cat") $newmenu->add(DOL_URL_ROOT."/categories/liste.php", $langs->trans("List"), 1, $user->rights->categorie->lire); //if ($leftmenu=="cat") $newmenu->add(DOL_URL_ROOT."/categories/liste.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
} }
if ($conf->banque->enabled)
{
$langs->load("bills");
$newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/index.php?leftmenu=members_checks",$langs->trans("MenuChequeDeposits"),0,$user->rights->adherent->cotisation->lire);
if (preg_match("/members_checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/fiche.php?leftmenu=members_checks&amp;action=new",$langs->trans("NewChequeDeposit"),1,$user->rights->adherent->cotisation->creer);
if (preg_match("/members_checks/i",$leftmenu)) $newmenu->add(DOL_URL_ROOT."/compta/paiement/cheque/liste.php?leftmenu=members_checks",$langs->trans("MenuChequesReceipts"),1,$user->rights->adherent->cotisation->lire);
}
if ($conf->banque->enabled)
{
$langs->load("banks");
$newmenu->add(DOL_URL_ROOT."/compta/bank/index.php?leftmenu=members",$langs->trans("Banks"),0,$user->rights->adherent->lire);
}
$newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=export&amp;mainmenu=members",$langs->trans("Exports"),0,$user->rights->adherent->export); $newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=export&amp;mainmenu=members",$langs->trans("Exports"),0,$user->rights->adherent->export);
if ($conf->export->enabled && $leftmenu=="export") $newmenu->add(DOL_URL_ROOT."/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export); if ($conf->export->enabled && $leftmenu=="export") $newmenu->add(DOL_URL_ROOT."/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export);
if ($leftmenu=="export") $newmenu->add(DOL_URL_ROOT."/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export); if ($leftmenu=="export") $newmenu->add(DOL_URL_ROOT."/adherents/htpasswd.php?leftmenu=export",$langs->trans("Filehtpasswd"),1,$user->rights->adherent->export);
@@ -829,7 +847,7 @@ function print_left_eldy_menu($db,$menu_array)
} }
// Affichage des menus personnalises // Affichage des menus personnalises
require_once(DOL_DOCUMENT_ROOT."/core/menubase.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/menubase.class.php");
$menuArbo = new Menubase($db,'eldy','left'); $menuArbo = new Menubase($db,'eldy','left');
$overwritemenufor = $menuArbo->listeMainmenu(); $overwritemenufor = $menuArbo->listeMainmenu();
@@ -849,19 +867,22 @@ function print_left_eldy_menu($db,$menu_array)
/** /**
* Si on est sur un cas gere de surcharge du menu, on ecrase celui par defaut * Si on est sur un cas gere de surcharge du menu, on ecrase celui par defaut
*/ */
if ($mainmenu) { //var_dump($menu_array_before);exit;
$menu_array=$newmenu->liste; //var_dump($menu_array_after);exit;
} //if ($mainmenu) {
$menu_array=$newmenu->liste;
if (is_array($menu_array_before)) $menu_array=array_merge($menu_array_before, $menu_array);
if (is_array($menu_array_after)) $menu_array=array_merge($menu_array, $menu_array_after);
//}
// Affichage du menu // Affichage du menu
$alt=0; $alt=0;
if (is_array($menu_array)) if (is_array($menu_array))
{ {
$contenu = 0;
for ($i = 0 ; $i < sizeof($menu_array) ; $i++) for ($i = 0 ; $i < sizeof($menu_array) ; $i++)
{ {
$alt++; $alt++;
if ($menu_array[$i]['level']==0) if (empty($menu_array[$i]['level']))
{ {
if (($alt%2==0)) if (($alt%2==0))
{ {
@@ -887,7 +908,6 @@ function print_left_eldy_menu($db,$menu_array)
// Menu niveau 0 // Menu niveau 0
if ($menu_array[$i]['level'] == 0) if ($menu_array[$i]['level'] == 0)
{ {
if ($contenu == 1) print '<div class="menu_fin"></div>'."\n";
if ($menu_array[$i]['enabled']) if ($menu_array[$i]['enabled'])
{ {
print '<div class="menu_titre">'.$tabstring.'<a class="vmenu" href="'.$menu_array[$i]['url'].'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>'.$menu_array[$i]['titre'].'</a></div>'."\n"; print '<div class="menu_titre">'.$tabstring.'<a class="vmenu" href="'.$menu_array[$i]['url'].'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>'.$menu_array[$i]['titre'].'</a></div>'."\n";
@@ -896,36 +916,35 @@ function print_left_eldy_menu($db,$menu_array)
{ {
print '<div class="menu_titre">'.$tabstring.'<font class="vmenudisabled">'.$menu_array[$i]['titre'].'</font></div>'."\n"; print '<div class="menu_titre">'.$tabstring.'<font class="vmenudisabled">'.$menu_array[$i]['titre'].'</font></div>'."\n";
} }
print '<div class="menu_top"></div>'."\n";
} }
// Menu niveau > 0 // Menu niveau > 0
if ($menu_array[$i]['level'] > 0) if ($menu_array[$i]['level'] > 0)
{ {
if ($menu_array[$i]['level']==1) $contenu = 1; print '<div class="menu_contenu">';
if ($menu_array[$i]['enabled']) if ($menu_array[$i]['enabled'])
{ {
print '<div class="menu_contenu">'; print $tabstring;
print $tabstring.'<a class="vsmenu" href="'.$menu_array[$i]['url'].'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>'; if ($menu_array[$i]['url']) print '<a class="vsmenu" href="'.$menu_array[$i]['url'].'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>';
print $menu_array[$i]['titre']; print $menu_array[$i]['titre'];
print '</a>'; if ($menu_array[$i]['url']) print '</a>';
// If title is not pure text and contains a table, no carriage return added // If title is not pure text and contains a table, no carriage return added
if (! strstr($menu_array[$i]['titre'],'<table')) print '<br>'; if (! strstr($menu_array[$i]['titre'],'<table')) print '<br>';
print '</div>'."\n";
} }
else else
{ {
print '<div class="menu_contenu">';
print $tabstring.'<font class="vsmenudisabled">'.$menu_array[$i]['titre'].'</font><br>'; print $tabstring.'<font class="vsmenudisabled">'.$menu_array[$i]['titre'].'</font><br>';
print '</div>'."\n";
} }
print '</div>'."\n";
} }
// If next is a new block or end
if ($i == (sizeof($menu_array)-1) || $menu_array[$i+1]['level']==0) if (empty($menu_array[$i+1]['level']))
{ {
print '<div class="menu_end"></div>'."\n";
print "</div>\n"; print "</div>\n";
} }
} }
if ($contenu == 1) print '<div class="menu_fin"></div>'."\n";
} }
return sizeof($menu_array); return sizeof($menu_array);

View File

@@ -37,20 +37,24 @@
*/ */
class MenuLeft { class MenuLeft {
var $db;
var $menu_array;
var $require_top=array("eldy_backoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier var $require_top=array("eldy_backoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier
var $db;
var $menu_array;
var $menu_array_after;
/** /**
* \brief Constructeur * \brief Constructor
* \param db Handler d'acces base de donnee * \param db Database handler
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php * \param menu_array Table of menu entries to show before entries of menu handler
* \param menu_array_after Table of menu entries to show after entries of menu handler
*/ */
function MenuLeft($db,&$menu_array='') function MenuLeft($db,&$menu_array,&$menu_array_after)
{ {
$this->db=$db; $this->db=$db;
$this->menu_array=$menu_array; $this->menu_array=$menu_array;
$this->menu_array_after=$menu_array_after;
} }
@@ -62,7 +66,7 @@ class MenuLeft {
{ {
require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/eldy.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/eldy.lib.php');
$res=print_left_eldy_menu($this->db,$this->menu_array); $res=print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after);
return $res; return $res;
} }

View File

@@ -36,20 +36,24 @@
*/ */
class MenuLeft { class MenuLeft {
var $db;
var $menu_array;
var $require_top=array("eldy_frontoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier var $require_top=array("eldy_frontoffice"); // Si doit etre en phase avec un gestionnaire de menu du haut particulier
var $db;
var $menu_array;
var $menu_array_after;
/** /**
* \brief Constructeur * \brief Constructor
* \param db Handler d'acces base de donnee * \param db Database handler
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php * \param menu_array Table of menu entries to show before entries of menu handler
* \param menu_array_after Table of menu entries to show after entries of menu handler
*/ */
function MenuLeft($db,&$menu_array='') function MenuLeft($db,&$menu_array,&$menu_array_after)
{ {
$this->db=$db; $this->db=$db;
$this->menu_array=$menu_array; $this->menu_array=$menu_array;
$this->menu_array_after=$menu_array_after;
} }
@@ -61,7 +65,7 @@ class MenuLeft {
{ {
require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/eldy.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/eldy.lib.php');
$res=print_left_eldy_menu($this->db,$this->menu_array); $res=print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after);
$conf->global->MAIN_SEARCHFORM_SOCIETE=0; $conf->global->MAIN_SEARCHFORM_SOCIETE=0;
$conf->global->MAIN_SEARCHFORM_CONTACT=0; $conf->global->MAIN_SEARCHFORM_CONTACT=0;

View File

@@ -30,16 +30,22 @@ class MenuLeft {
var $require_top=array("empty"); // If this top menu handler must be used with a particular left menu handler var $require_top=array("empty"); // If this top menu handler must be used with a particular left menu handler
var $db;
var $menu_array;
var $menu_array_after;
/** /**
* \brief Constructor * \brief Constructor
* \param db Dabatase handler * \param db Database handler
* \param menu_array Menu array that you will override in showmenu() function * \param menu_array Table of menu entries to show before entries of menu handler
* \param menu_array_after Table of menu entries to show after entries of menu handler
*/ */
function MenuLeft($db,&$menu_array='') function MenuLeft($db,&$menu_array,&$menu_array_after)
{ {
$this->db=$db; $this->db=$db;
$this->menu_array=$menu_array; $this->menu_array=$menu_array;
$this->menu_array_after=$menu_array_after;
} }
@@ -55,7 +61,7 @@ class MenuLeft {
// ***** START ***** // ***** START *****
$langs->load("admin"); // Load translation file admin.lang $langs->load("admin"); // Load translation file admin.lang
$newmenu->add(DOL_URL_ROOT."/admin/index.php?leftmenu=setup", $langs->trans("Setup")); $newmenu->add(DOL_URL_ROOT."/admin/index.php?leftmenu=setup", $langs->trans("Setup"),0);
$newmenu->add(DOL_URL_ROOT."/admin/company.php", $langs->trans("MenuCompanySetup"),1); $newmenu->add(DOL_URL_ROOT."/admin/company.php", $langs->trans("MenuCompanySetup"),1);
$newmenu->add(DOL_URL_ROOT."/admin/modules.php", $langs->trans("Modules"),1); $newmenu->add(DOL_URL_ROOT."/admin/modules.php", $langs->trans("Modules"),1);
$newmenu->add(DOL_URL_ROOT."/admin/menus.php", $langs->trans("Menus"),1); $newmenu->add(DOL_URL_ROOT."/admin/menus.php", $langs->trans("Menus"),1);
@@ -79,7 +85,8 @@ class MenuLeft {
for ($i = 0 ; $i < sizeof($this->menu_array) ; $i++) for ($i = 0 ; $i < sizeof($this->menu_array) ; $i++)
{ {
$alt++; $alt++;
if ($this->menu_array[$i]['level']==0) { if (empty($this->menu_array[$i]['level']))
{
if (($alt%2==0)) if (($alt%2==0))
{ {
print '<div class="blockvmenuimpair">'."\n"; print '<div class="blockvmenuimpair">'."\n";
@@ -90,36 +97,47 @@ class MenuLeft {
} }
} }
if ($this->menu_array[$i]['level']==0) { // Place tabulation
if ($this->menu_array[$i]['enabled']) $tabstring='';
print '<a class="vmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>'; $tabul=($this->menu_array[$i]['level'] - 1);
else if ($tabul > 0)
print '<font class="vmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>'; {
} for ($j=0; $j < $tabul; $j++)
if ($this->menu_array[$i]['level']==1) { {
if ($this->menu_array[$i]['enabled']) $tabstring.='&nbsp; &nbsp;';
print '<a class="vsmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>'; }
else }
print '<font class="vsmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>';
} if ($this->menu_array[$i]['level'] == 0) {
if ($this->menu_array[$i]['level']==2) { if ($this->menu_array[$i]['enabled'])
if ($this->menu_array[$i]['enabled']) {
print '&nbsp; &nbsp; <a class="vsmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>'; print '<div class="menu_titre">'.$tabstring.'<a class="vmenu" href="'.$this->menu_array[$i]['url'].'"'.($this->menu_array[$i]['target']?' target="'.$this->menu_array[$i]['target'].'"':'').'>'.$this->menu_array[$i]['titre'].'</a></div>'."\n";
else }
print '&nbsp; &nbsp; <font class="vsmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>'; else
} {
if ($this->menu_array[$i]['level']==3) { print '<div class="menu_titre">'.$tabstring.'<font class="vmenudisabled">'.$this->menu_array[$i]['titre'].'</font></div>'."\n";
if ($this->menu_array[$i]['enabled']) }
print '&nbsp; &nbsp; &nbsp; &nbsp; <a class="vsmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>'; print '<div class="menu_top"></div>'."\n";
else
print '&nbsp; &nbsp; &nbsp; &nbsp; <font class="vsmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>';
} }
if ($i == (sizeof($this->menu_array)-1) || $this->menu_array[$i+1]['level']==0) { if ($this->menu_array[$i]['level'] > 0) {
print "</div>\n"; print '<div class="menu_contenu">';
}
}
if ($this->menu_array[$i]['enabled'])
print $tabstring.'<a class="vsmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>';
else
print $tabstring.'<font class="vsmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>';
print '</div>'."\n";
}
// If next is a new block or end
if (empty($this->menu_array[$i+1]['level']))
{
print '<div class="menu_end"></div>'."\n";
print "</div>\n";
}
}
} }
} }

View File

@@ -2,6 +2,7 @@
/* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2008 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2008 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr> * Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@
*/ */
require_once(DOL_DOCUMENT_ROOT."/includes/modules/facture/modules_facture.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/facture/modules_facture.php");
require_once(DOL_DOCUMENT_ROOT."/product/product.class.php"); require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
@@ -94,6 +95,8 @@ class pdf_crabe extends ModelePDFFactures
$this->postotalht=174; $this->postotalht=174;
$this->tva=array(); $this->tva=array();
$this->localtax1=array();
$this->localtax2=array();
$this->atleastoneratenotnull=0; $this->atleastoneratenotnull=0;
$this->atleastonediscount=0; $this->atleastonediscount=0;
} }
@@ -101,7 +104,7 @@ class pdf_crabe extends ModelePDFFactures
/** /**
* \brief Fonction generant la facture sur le disque * \brief Fonction generant la facture sur le disque
* \param fac Objet facture a generer (ou id si ancienne methode) * \param fac Objet invoice to build (or id if old method)
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@@ -125,7 +128,7 @@ class pdf_crabe extends ModelePDFFactures
if (! is_object($fac)) if (! is_object($fac))
{ {
$id = $fac; $id = $fac;
$fac = new Facture($this->db,"",$id); $fac = new Facture($this->db);
$ret=$fac->fetch($id); $ret=$fac->fetch($id);
} }
@@ -147,7 +150,6 @@ class pdf_crabe extends ModelePDFFactures
$dir = $conf->facture->dir_output . "/" . $facref; $dir = $conf->facture->dir_output . "/" . $facref;
$file = $dir . "/" . $facref . ".pdf"; $file = $dir . "/" . $facref . ".pdf";
} }
if (! file_exists($dir)) if (! file_exists($dir))
{ {
if (create_exdir($dir) < 0) if (create_exdir($dir) < 0)
@@ -183,7 +185,7 @@ class pdf_crabe extends ModelePDFFactures
$pdf->SetTitle($outputlangs->convToOutputCharset($fac->ref)); $pdf->SetTitle($outputlangs->convToOutputCharset($fac->ref));
$pdf->SetSubject($outputlangs->transnoentities("Invoice")); $pdf->SetSubject($outputlangs->transnoentities("Invoice"));
$pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->fullname)); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
$pdf->SetKeyWords($outputlangs->convToOutputCharset($fac->ref)." ".$outputlangs->transnoentities("Invoice")); $pdf->SetKeyWords($outputlangs->convToOutputCharset($fac->ref)." ".$outputlangs->transnoentities("Invoice"));
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false); if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
@@ -282,10 +284,21 @@ class pdf_crabe extends ModelePDFFactures
// Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva // Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva
$tvaligne=$fac->lignes[$i]->total_tva; $tvaligne=$fac->lignes[$i]->total_tva;
$localtax1ligne=$fac->lignes[$i]->total_localtax1;
$localtax2ligne=$fac->lignes[$i]->total_localtax2;
if ($fac->remise_percent) $tvaligne-=($tvaligne*$fac->remise_percent)/100; if ($fac->remise_percent) $tvaligne-=($tvaligne*$fac->remise_percent)/100;
if ($fac->remise_percent) $localtax1ligne-=($localtax1ligne*$fac->remise_percent)/100;
if ($fac->remise_percent) $localtax2ligne-=($localtax2ligne*$fac->remise_percent)/100;
$vatrate=(string) $fac->lignes[$i]->tva_tx; $vatrate=(string) $fac->lignes[$i]->tva_tx;
$localtax1rate=(string) $fac->lignes[$i]->localtax1_tx;
$localtax2rate=(string) $fac->lignes[$i]->localtax2_tx;
if (($fac->lignes[$i]->info_bits & 0x01) == 0x01) $vatrate.='*'; if (($fac->lignes[$i]->info_bits & 0x01) == 0x01) $vatrate.='*';
$this->tva[$vatrate] += $tvaligne; $this->tva[$vatrate] += $tvaligne;
$this->localtax1[$localtax1rate]+=$localtax1ligne;
$this->localtax2[$localtax2rate]+=$localtax2ligne;
$nexY+=2; // Passe espace entre les lignes $nexY+=2; // Passe espace entre les lignes
@@ -476,7 +489,7 @@ class pdf_crabe extends ModelePDFFactures
} }
// Loop on each payment // Loop on each payment
$sql = "SELECT ".$this->db->pdate("p.datep")."as date, pf.amount as amount, p.fk_paiement as type, p.num_paiement as num "; $sql = "SELECT p.datep as date, pf.amount as amount, p.fk_paiement as type, p.num_paiement as num ";
$sql.= "FROM ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."paiement_facture as pf "; $sql.= "FROM ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."paiement_facture as pf ";
$sql.= "WHERE pf.fk_paiement = p.rowid and pf.fk_facture = ".$fac->id." "; $sql.= "WHERE pf.fk_paiement = p.rowid and pf.fk_facture = ".$fac->id." ";
$sql.= "ORDER BY p.datep"; $sql.= "ORDER BY p.datep";
@@ -490,7 +503,7 @@ class pdf_crabe extends ModelePDFFactures
$row = $this->db->fetch_row($resql); $row = $this->db->fetch_row($resql);
$pdf->SetXY ($tab3_posx, $tab3_top+$y ); $pdf->SetXY ($tab3_posx, $tab3_top+$y );
$pdf->MultiCell(20, 3, dol_print_date($row[0],'day',false,$outputlangs,true), 0, 'L', 0); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row[0]),'day',false,$outputlangs,true), 0, 'L', 0);
$pdf->SetXY ($tab3_posx+21, $tab3_top+$y); $pdf->SetXY ($tab3_posx+21, $tab3_top+$y);
$pdf->MultiCell(20, 3, price($row[1]), 0, 'L', 0); $pdf->MultiCell(20, 3, price($row[1]), 0, 'L', 0);
$pdf->SetXY ($tab3_posx+41, $tab3_top+$y); $pdf->SetXY ($tab3_posx+41, $tab3_top+$y);
@@ -644,7 +657,7 @@ class pdf_crabe extends ModelePDFFactures
$pdf->SetXY($this->marge_gauche, $posy); $pdf->SetXY($this->marge_gauche, $posy);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->adresse_full), 0, 'L', 0); $pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0);
$posy=$pdf->GetY()+2; $posy=$pdf->GetY()+2;
} }
} }
@@ -683,7 +696,7 @@ class pdf_crabe extends ModelePDFFactures
*/ */
function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs) function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs)
{ {
global $conf; global $conf,$mysoc;
$tab2_top = $posy; $tab2_top = $posy;
$tab2_hl = 5; $tab2_hl = 5;
@@ -738,6 +751,84 @@ class pdf_crabe extends ModelePDFFactures
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalVAT"), 0, 'L', 1); $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalVAT"), 0, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_tva), 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_tva), 0, 'R', 1);
// Total LocalTax1
if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on' && $object->total_localtax1>0)
{
$index++;
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT1".$mysoc->pays_code), $useborder, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_localtax1), $useborder, 'R', 1);
}
// Total LocalTax2
if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on' && $object->total_localtax2>0)
{
$index++;
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalLT2".$mysoc->pays_code), $useborder, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_localtax2), $useborder, 'R', 1);
}
}
else
{
if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on')
{
//Local tax 1
foreach( $this->localtax1 as $tvakey => $tvaval )
{
if ($tvakey>0) // On affiche pas taux 0
{
//$this->atleastoneratenotnull++;
$index++;
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl='';
if (preg_match('/\*/',$tvakey))
{
$tvakey=str_replace('*','',$tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
}
$totalvat =$outputlangs->transnoentities("TotalLT1".$mysoc->pays_code).' ';
$totalvat.=vatrate($tvakey,1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval), 0, 'R', 1);
}
}
}
if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on')
{
//Local tax 2
foreach( $this->localtax2 as $tvakey => $tvaval )
{
if ($tvakey>0) // On affiche pas taux 0
{
//$this->atleastoneratenotnull++;
$index++;
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl='';
if (preg_match('/\*/',$tvakey))
{
$tvakey=str_replace('*','',$tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
}
$totalvat =$outputlangs->transnoentities("TotalLT2".$mysoc->pays_code).' ';
$totalvat.=vatrate($tvakey,1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval), 0, 'R', 1);
}
}
}
} }
} }
@@ -990,7 +1081,7 @@ class pdf_crabe extends ModelePDFFactures
$posy+=4; $posy+=4;
$pdf->SetXY(100,$posy); $pdf->SetXY(100,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateInvoice")." : " . dol_print_date($object->date,"day",false,$outpulangs), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateInvoice")." : " . dol_print_date($object->date,"day",false,$outputlangs), '', 'R');
if ($object->type != 2) if ($object->type != 2)
{ {
@@ -1014,6 +1105,8 @@ class pdf_crabe extends ModelePDFFactures
if ($conf->propal->enabled) if ($conf->propal->enabled)
{ {
require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php");
$outputlangs->load('propal'); $outputlangs->load('propal');
foreach($object->linked_object as $key => $val) foreach($object->linked_object as $key => $val)
{ {
@@ -1038,6 +1131,8 @@ class pdf_crabe extends ModelePDFFactures
// TODO mutualiser // TODO mutualiser
if ($conf->commande->enabled) if ($conf->commande->enabled)
{ {
require_once(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php");
$outputlangs->load('orders'); $outputlangs->load('orders');
foreach($object->linked_object as $key => $val) foreach($object->linked_object as $key => $val)
{ {

View File

@@ -54,8 +54,8 @@
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
/** /**
* \file htdocs/includes/modules/member/card/pdf_standard.class.php * \file htdocs/includes/modules/member/cards/pdf_standard.class.php
* \ingroup adherent * \ingroup member
* \brief Fichier de la classe permettant d'editer au format PDF des etiquettes au format Avery ou personnalise * \brief Fichier de la classe permettant d'editer au format PDF des etiquettes au format Avery ou personnalise
* \author Steve Dillon * \author Steve Dillon
* \author Laurent Passebecq * \author Laurent Passebecq
@@ -150,7 +150,7 @@ class pdf_standard {
$dir=$conf->adherent->dir_output; $dir=$conf->adherent->dir_output;
$file=get_exdir($idmember,2).$photomember; $file=get_exdir($idmember,2).$photomember;
$photo=$dir.'/'.$file; $photo=$dir.'/'.$file;
if (! is_readable($photo)) $photo=''; if (empty($photomember) || ! is_readable($photo)) $photo='';
// Define background image // Define background image
$backgroundimage=''; $backgroundimage='';
@@ -415,7 +415,7 @@ class pdf_standard {
$pdf->SetTitle($outputlangs->transnoentities('MembersCards')); $pdf->SetTitle($outputlangs->transnoentities('MembersCards'));
$pdf->SetSubject($outputlangs->transnoentities("MembersCards")); $pdf->SetSubject($outputlangs->transnoentities("MembersCards"));
$pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->fullname)); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
$pdf->SetKeyWords($outputlangs->transnoentities('MembersCards')." ".$outputlangs->transnoentities("Foundation")." ".$outputlangs->convToOutputCharset($mysoc->nom)); $pdf->SetKeyWords($outputlangs->transnoentities('MembersCards')." ".$outputlangs->transnoentities("Foundation")." ".$outputlangs->convToOutputCharset($mysoc->nom));
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false); if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);

View File

@@ -0,0 +1,200 @@
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \defgroup produit Module products
* \brief Module pour gerer le suivi de produits predefinis
* \version $Id$
*/
/**
* \file htdocs/includes/modules/modProduct.class.php
* \ingroup produit
* \brief Fichier de description et activation du module Produit
*/
include_once(DOL_DOCUMENT_ROOT ."/includes/modules/DolibarrModules.class.php");
/**
* \class modProduct
* \brief Classe de description et activation du module Produit
*/
class modProduct extends DolibarrModules
{
/**
* \brief Constructeur. Definit les noms, constantes et boites
* \param DB handler d'acces base
*/
function modProduct($DB)
{
global $conf;
$this->db = $DB;
$this->numero = 50;
$this->family = "products";
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
$this->name = preg_replace('/^mod/i','',get_class($this));
$this->description = "Gestion des produits";
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this->version = 'dolibarr';
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
$this->special = 0;
$this->picto='product';
// Data directories to create when module is enabled
$this->dirs = array("/product/temp");
// Dependencies
$this->depends = array();
$this->requiredby = array("modStock","modBarcode");
// Config pages
$this->config_page_url = array("produit.php@product");
$this->langfiles = array("products","companies","stocks","bills");
// Constants
$this->const = array();
$r=0;
$this->const[$r][0] = "MAIN_SEARCHFORM_PRODUITSERVICE";
$this->const[$r][1] = "yesno";
$this->const[$r][2] = "1";
$this->const[$r][3] = "Affichage formulaire de recherche des Produits et Services dans la barre de gauche";
$this->const[$r][4] = 0;
$this->const[$r][5] = 'allentities';
$r++;
// Boxes
$this->boxes = array();
$this->boxes[0][1] = "box_produits.php";
// Permissions
$this->rights = array();
$this->rights_class = 'produit';
$r=0;
$this->rights[$r][0] = 31; // id de la permission
$this->rights[$r][1] = 'Lire les produits'; // libelle de la permission
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 1; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'lire';
$r++;
$this->rights[$r][0] = 32; // id de la permission
$this->rights[$r][1] = 'Creer/modifier les produits'; // libelle de la permission
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'creer';
$r++;
$this->rights[$r][0] = 34; // id de la permission
$this->rights[$r][1] = 'Supprimer les produits'; // libelle de la permission
$this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'supprimer';
$r++;
$this->rights[$r][0] = 36; // id de la permission
$this->rights[$r][1] = 'Voir/gérer les produits cachés'; // libelle de la permission
$this->rights[$r][2] = 'r'; // type de la permission (deprecated)
$this->rights[$r][3] = 1; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'hidden';
$r++;
$this->rights[$r][0] = 38; // Must be same permission than in service module
$this->rights[$r][1] = 'Exporter les produits';
$this->rights[$r][2] = 'r';
$this->rights[$r][3] = 0;
$this->rights[$r][4] = 'export';
$r++;
// Exports
//--------
$r=0;
$r++;
$this->export_code[$r]=$this->rights_class.'_'.$r;
$this->export_label[$r]="Products"; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_permission[$r]=array(array("produit","export"));
$this->export_fields_array[$r]=array('p.rowid'=>"Id",'p.ref'=>"Ref",'p.label'=>"Label",'p.description'=>"Description",'p.accountancy_code_sell'=>"ProductAccountancySellCode",'p.accountancy_code_buy'=>"ProductAccountancyBuyCode",'p.note'=>"Note",'p.length'=>"Length",'p.surface'=>"Surface",'p.volume'=>"Volume",'p.weight'=>"Weight",'p.price_base_type'=>"PriceBase",'p.price'=>"UnitPriceHT",'p.price_ttc'=>"UnitPriceTTC",'p.tva_tx'=>'VATRate','p.envente'=>"OnSell",'p.datec'=>'DateCreation','p.tms'=>'DateModification');
if (! empty($conf->stock->enabled)) $this->export_fields_array[$r]=array_merge ($this->export_fields_array[$r],array('p.stock'=>'Stock','p.pmp'=>'PMPValue'));
if (! empty($conf->barcode->enabled)) $this->export_fields_array[$r]=array_merge ($this->export_fields_array[$r],array('p.barcode'=>'Barcode'));
$this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product",'p.label'=>"product",'p.description'=>"product",'p.accountancy_code_sell'=>'product','p.accountancy_code_sell'=>'product','p.note'=>"product",'p.length'=>"product",'p.surface'=>"product",'p.volume'=>"product",'p.weight'=>"product",'p.price_base_type'=>"product",'p.price'=>"product",'p.price_ttc'=>"product",'p.tva_tx'=>"product",'p.envente'=>"product",'p.datec'=>"product",'p.tms'=>"product");
if (! empty($conf->stock->enabled)) $this->export_entities_array[$r]=array_merge ($this->export_entities_array[$r],array('p.stock'=>'product','p.pmp'=>'product'));
if (! empty($conf->barcode->enabled)) $this->export_entities_array[$r]=array_merge ($this->export_entities_array[$r],array('p.barcode'=>'product'));
$this->export_alias_array[$r]=array('p.rowid'=>"id",'p.ref'=>"ref",'p.label'=>"label",'p.description'=>"description",'p.accountancy_code_sell'=>'accountancy_code_sell','p.accountancy_code_buy'=>'accountancy_code_buy','p.note'=>"note",'p.length'=>"length",'p.surface'=>"area",'p.volume'=>"volume",'p.weight'=>"weight",'p.price_base_type'=>'pricebase','p.price'=>"priceht",'p.price_ttc'=>"pricettc",'p.tva_tx'=>'vat','p.envente'=>"onsell",'p.datec'=>'datecreation','p.tms'=>'datemodification');
if (! empty($conf->stock->enabled)) $this->export_alias_array[$r]=array_merge ($this->export_alias_array[$r],array('p.stock'=>'stock','p.pmp'=>'pmp'));
if (! empty($conf->barcode->enabled)) $this->export_alias_array[$r]=array_merge ($this->export_alias_array[$r],array('p.barcode'=>'barcode'));
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p';
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity = '.$conf->entity;
// Imports
//--------
$r=0;
$r++;
$this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="Products"; // Translation key
$this->import_icon[$r]='product';
$this->import_tables_array[$r]=array('p'=>MAIN_DB_PREFIX.'product');
$this->import_tables_creator_array[$r]=array('p'=>'fk_user_author'); // Fields to store import user id
$this->import_fields_array[$r]=array('p.ref'=>"Ref*",'p.label'=>"Label*",'p.description'=>"Description",'p.note'=>"Note",'p.price'=>"SellingPriceHT",'p.price_ttc'=>"SellingPriceTTC",'p.tva_tx'=>'VAT','p.envente'=>"OnSell*",'p.fk_product_type'=>"Type*",'p.finished'=>'Nature','p.duration'=>"Duration",'p.weight'=>"Weight",'p.volume'=>"Volume",'p.datec'=>'DateCreation*');
$this->import_entities_array[$r]=array(); // We define here only fields that use another picto
$this->import_regex_array[$r]=array('p.ref'=>'[^ ]','p.envente'=>'^[0|1]','p.fk_product_type'=>'^[0|1]','p.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
$this->import_examplevalues_array[$r]=array('p.ref'=>"PR123456",'p.label'=>"My product",'p.description'=>"This is a description example for record",'p.note'=>"Some note",'p.price'=>"100",'p.price_ttc'=>"110",'p.tva_tx'=>'10','p.envente'=>"0 or 1",'p.fk_product_type'=>"0 for product, 1 for service",'p.finished'=>'','p.duration'=>"1y",'p.datec'=>'2008-12-31');
}
/**
* \brief Fonction appelee lors de l'activation du module. Insere en base les constantes, boites, permissions du module.
* Definit egalement les repertoires de donnees a creer pour ce module.
*/
function init()
{
// Permissions
$this->remove();
$sql = array();
return $this->_init($sql);
}
/**
* \brief Fonction appelee lors de la desactivation d'un module.
* Supprime de la base les constantes, boites et permissions du module.
*/
function remove()
{
$sql = array();
return $this->_remove($sql);
}
}
?>

View File

@@ -73,7 +73,7 @@ class modService extends DolibarrModules
$this->requiredby = array("modContrat"); $this->requiredby = array("modContrat");
// Config pages // Config pages
$this->config_page_url = array("produit.php"); $this->config_page_url = array("produit.php@product");
$this->langfiles = array("products","companies","bills"); $this->langfiles = array("products","companies","bills");
// Constants // Constants
@@ -88,26 +88,26 @@ class modService extends DolibarrModules
$this->rights_class = 'service'; $this->rights_class = 'service';
$r=0; $r=0;
$r++;
$this->rights[$r][0] = 531; // id de la permission $this->rights[$r][0] = 531; // id de la permission
$this->rights[$r][1] = 'Lire les services'; // libelle de la permission $this->rights[$r][1] = 'Lire les services'; // libelle de la permission
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour) $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 1; // La permission est-elle une permission par defaut $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'lire'; $this->rights[$r][4] = 'lire';
$r++;
$r++;
$this->rights[$r][0] = 532; // id de la permission $this->rights[$r][0] = 532; // id de la permission
$this->rights[$r][1] = 'Creer/modifier les services'; // libelle de la permission $this->rights[$r][1] = 'Creer/modifier les services'; // libelle de la permission
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'creer'; $this->rights[$r][4] = 'creer';
$r++;
$r++;
$this->rights[$r][0] = 534; // id de la permission $this->rights[$r][0] = 534; // id de la permission
$this->rights[$r][1] = 'Supprimer les services'; // libelle de la permission $this->rights[$r][1] = 'Supprimer les services'; // libelle de la permission
$this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'supprimer'; $this->rights[$r][4] = 'supprimer';
$r++;
$this->rights[$r][0] = 536; // id de la permission $this->rights[$r][0] = 536; // id de la permission
$this->rights[$r][1] = 'Voir/gérer les services cachés'; // libelle de la permission $this->rights[$r][1] = 'Voir/gérer les services cachés'; // libelle de la permission
@@ -116,12 +116,12 @@ class modService extends DolibarrModules
$this->rights[$r][4] = 'hidden'; $this->rights[$r][4] = 'hidden';
$r++; $r++;
$r++;
$this->rights[$r][0] = 538; // Must be same permission than in product module $this->rights[$r][0] = 538; // Must be same permission than in product module
$this->rights[$r][1] = 'Exporter les services'; $this->rights[$r][1] = 'Exporter les services';
$this->rights[$r][2] = 'r'; $this->rights[$r][2] = 'r';
$this->rights[$r][3] = 0; $this->rights[$r][3] = 0;
$this->rights[$r][4] = 'export'; $this->rights[$r][4] = 'export';
$r++;
// Exports // Exports

View File

@@ -18,465 +18,416 @@
*/ */
/** /**
* \file htdocs/includes/modules/project/pdf/pdf_baleine.modules.php * \file htdocs/includes/modules/project/pdf/pdf_baleine.modules.php
* \ingroup project * \ingroup project
* \brief Fichier de la classe permettant de generer les projets au modele Baleine * \brief Fichier de la classe permettant de generer les projets au modele Baleine
* \author Regis Houssin * \author Regis Houssin
* \version $Id$ * \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT."/includes/modules/project/modules_project.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/project/modules_project.php");
require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php"); require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
require_once(DOL_DOCUMENT_ROOT."/projet/tasks/task.class.php"); require_once(DOL_DOCUMENT_ROOT."/projet/class/task.class.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
* \class pdf_baleine * \class pdf_baleine
* \brief Classe permettant de generer les projets au modele Baleine * \brief Classe permettant de generer les projets au modele Baleine
*/ */
class pdf_baleine extends ModelePDFProjects class pdf_baleine extends ModelePDFProjects
{ {
var $emetteur; // Objet societe qui emet var $emetteur; // Objet societe qui emet
/** /**
* \brief Constructor * \brief Constructor
* \param db Database handler * \param db Database handler
*/ */
function pdf_baleine($db) function pdf_baleine($db)
{ {
global $conf,$langs,$mysoc; global $conf,$langs,$mysoc;
$langs->load("main"); $langs->load("main");
$langs->load("projects"); $langs->load("projects");
$langs->load("companies"); $langs->load("companies");
$this->db = $db; $this->db = $db;
$this->name = "baleine"; $this->name = "baleine";
$this->description = $langs->trans("DocumentModelBaleine"); $this->description = $langs->trans("DocumentModelBaleine");
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
$this->page_largeur = 210; $this->page_largeur = 210;
$this->page_hauteur = 297; $this->page_hauteur = 297;
$this->format = array($this->page_largeur,$this->page_hauteur); $this->format = array($this->page_largeur,$this->page_hauteur);
$this->marge_gauche=10; $this->marge_gauche=10;
$this->marge_droite=10; $this->marge_droite=10;
$this->marge_haute=10; $this->marge_haute=10;
$this->marge_basse=10; $this->marge_basse=10;
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<27>tait pas d<>fini if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<27>tait pas d<>fini
// Defini position des colonnes // Defini position des colonnes
$this->posxdesc=$this->marge_gauche+1; $this->posxref=$this->marge_gauche+1;
$this->posxcomm=120; $this->posxlabel=$this->marge_gauche+25;
$this->posxprogress=$this->marge_gauche+140;
} $this->posxdatestart=$this->marge_gauche+150;
$this->posxdateend=$this->marge_gauche+170;
}
/**
* \brief Fonction generant le projet sur le disque
* \param delivery Object project a generer /**
* \param outputlangs Lang output object * \brief Fonction generant le projet sur le disque
* \return int 1 if OK, <=0 if KO * \param delivery Object project a generer
*/ * \param outputlangs Lang output object
function write_file($object,$outputlangs) * \return int 1 if OK, <=0 if KO
{ */
global $user,$langs,$conf; function write_file($object,$outputlangs)
{
if (! is_object($outputlangs)) $outputlangs=$langs; global $user,$langs,$conf;
// Force output charset to ISO, because, FPDF expect text encoded in ISO
$sav_charset_output=$outputlangs->charset_output; if (! is_object($outputlangs)) $outputlangs=$langs;
$outputlangs->charset_output='ISO-8859-1'; // Force output charset to ISO, because, FPDF expect text encoded in ISO
$sav_charset_output=$outputlangs->charset_output;
$outputlangs->load("main"); $outputlangs->charset_output='ISO-8859-1';
$outputlangs->load("dict");
$outputlangs->load("companies"); $outputlangs->load("main");
$outputlangs->load("projects"); $outputlangs->load("dict");
$outputlangs->load("companies");
if ($conf->projet->dir_output) $outputlangs->load("projects");
{
// If $object is id instead of object if ($conf->projet->dir_output)
if (! is_object($object)) {
{ // If $object is id instead of object
$id = $object; if (! is_object($object))
$object = new Project($this->db); {
$object->fetch($id); $id = $object;
$object = new Project($this->db);
if ($result < 0) $object->fetch($id);
{
dol_print_error($db,$object->error); if ($result < 0)
} {
} dol_print_error($db,$object->error);
}
$nblignes = sizeof($object->lines); }
$objectref = dol_sanitizeFileName($object->ref); $nblignes = sizeof($object->lines);
$dir = $conf->projet->dir_output;
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref; $objectref = dol_sanitizeFileName($object->ref);
$file = $dir . "/" . $objectref . ".pdf"; $dir = $conf->projet->dir_output;
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref;
if (! file_exists($dir)) $file = $dir . "/" . $objectref . ".pdf";
{
if (create_exdir($dir) < 0) if (! file_exists($dir))
{ {
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); if (create_exdir($dir) < 0)
return 0; {
} $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
} return 0;
}
if (file_exists($dir)) }
{
// Protection et encryption du pdf if (file_exists($dir))
if ($conf->global->PDF_SECURITY_ENCRYPTION) {
{ // Protection et encryption du pdf
$pdf=new FPDI_Protection('P','mm',$this->format); if ($conf->global->PDF_SECURITY_ENCRYPTION)
$pdfrights = array('print'); // Ne permet que l'impression du document {
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini $pdfrights = array('print'); // Ne permet que l'impression du document
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
} $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini
else $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
{ }
$pdf=new FPDI('P','mm',$this->format); else
} {
$pdf=new FPDI('P','mm',$this->format);
// Complete object by loading several other informations }
$task = new Task($this->db);
$tasksarray = $task->getTasksArray(0,0,$object->id); // Complete object by loading several other informations
$task = new Task($this->db);
$object->lines=$tasksarray; $tasksarray = $task->getTasksArray(0,0,$object->id);
$nblignes=sizeof($object->lines);
$object->lines=$tasksarray;
$pdf->Open(); $nblignes=sizeof($object->lines);
$pagenb=0;
$pdf->SetDrawColor(128,128,128); $pdf->Open();
$pagenb=0;
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); $pdf->SetDrawColor(128,128,128);
$pdf->SetSubject($outputlangs->transnoentities("Project"));
$pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->fullname)); $pdf->SetSubject($outputlangs->transnoentities("Project"));
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project")); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project"));
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
$pdf->SetAutoPageBreak(1,0);
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
// New page $pdf->SetAutoPageBreak(1,0);
$pdf->AddPage();
$pagenb++; // New page
$this->_pagehead($pdf, $object, 1, $outputlangs); $pdf->AddPage();
$pdf->SetFont('Arial','', 9); $pagenb++;
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3 $this->_pagehead($pdf, $object, 1, $outputlangs);
$pdf->SetTextColor(0,0,0); $pdf->SetFont('Arial','', 9);
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
$tab_top = 50; $pdf->SetTextColor(0,0,0);
$tab_height = 210;
$tab_top = 50;
// Affiche notes $tab_height = 200;
if (! empty($object->note_public)) $tab_top_newpage = 40;
{ $tab_height_newpage = 210;
$tab_top = 48;
// Affiche notes
$pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page if (! empty($object->note_public))
$pdf->SetXY ($this->posxdesc-1, $tab_top); {
$pdf->MultiCell(190, 3, $outputlangs->convToOutputCharset($object->note_public), 0, 'J'); $pdf->SetFont('Arial','', 9);
$nexY = $pdf->GetY(); $pdf->SetXY ($this->posxref-1, $tab_top-2);
$height_note=$nexY-$tab_top; $pdf->MultiCell(190, 3, $outputlangs->convToOutputCharset($object->note_public), 0, 'J');
$nexY = $pdf->GetY();
// Rect prend une longueur en 3eme param $height_note=$nexY-($tab_top-2);
$pdf->SetDrawColor(192,192,192);
$pdf->Rect($this->marge_gauche, $tab_top-1, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1); // Rect prend une longueur en 3eme param
$pdf->SetDrawColor(192,192,192);
$tab_height = $tab_height - $height_note; $pdf->Rect($this->marge_gauche, $tab_top-3, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1);
$tab_top = $nexY+6;
} $tab_height = $tab_height - $height_note;
else $tab_top = $nexY+6;
{ }
$height_note=0; else
} {
$height_note=0;
$iniY = $tab_top + 7; }
$curY = $tab_top + 7;
$nexY = $tab_top + 7; $iniY = $tab_top + 7;
$curY = $tab_top + 7;
// Boucle sur les lignes $nexY = $tab_top + 7;
for ($i = 0 ; $i < $nblignes ; $i++)
{ // Boucle sur les lignes
$curY = $nexY; for ($i = 0 ; $i < $nblignes ; $i++)
{
// Description of ligne $curY = $nexY;
$ref=$object->lines[$i]->ref;
$libelleline=$object->lines[$i]->label; // Description of ligne
$ref=$object->lines[$i]->ref;
$pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page $libelleline=$object->lines[$i]->label;
$progress=$object->lines[$i]->progress.'%';
$pdf->writeHTMLCell(108, 3, $this->posxdesc-1, $curY, $outputlangs->convToOutputCharset($ref), 0, 1); $datestart=dol_print_date($object->lines[$i]->date_start,'day');
$pdf->writeHTMLCell(108, 3, $this->posxdesc+10, $curY, $outputlangs->convToOutputCharset($libelleline), 0, 1); $dateend=dol_print_date($object->lines[$i]->date_end,'day');
$pdf->SetFont('Arial','', 9); // On repositionne la police par defaut
$nexY = $pdf->GetY(); $pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page
$nexY+=2; // Passe espace entre les lignes $pdf->SetXY($this->posxref, $curY);
$pdf->MultiCell(60, 3, $outputlangs->convToOutputCharset($ref), 0, 'L');
// Cherche nombre de lignes a venir pour savoir si place suffisante $pdf->SetXY($this->posxlabel, $curY);
if ($i < ($nblignes - 1)) // If it's not last line $pdf->MultiCell(108, 3, $outputlangs->convToOutputCharset($libelleline), 0, 'L');
{ $pdf->SetXY($this->posxprogress, $curY);
//on recupere la description du produit suivant $pdf->MultiCell(16, 3, $progress, 0, 'L');
$follow_descproduitservice = $object->lines[$i+1]->label; $pdf->SetXY($this->posxdatestart, $curY);
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres) $pdf->MultiCell(20, 3, $datestart, 0, 'L');
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4); $pdf->SetXY($this->posxdateend, $curY);
} $pdf->MultiCell(20, 3, $dateend, 0, 'L');
else // If it's last line
{
$nblineFollowDesc = 0; $pdf->SetFont('Arial','', 9); // On repositionne la police par defaut
} $nexY = $pdf->GetY();
if (($nexY+$nblineFollowDesc) > ($tab_top+$tab_height) && $i < ($nblignes - 1)) $nexY+=2; // Passe espace entre les lignes
{
$this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs); // Cherche nombre de lignes a venir pour savoir si place suffisante
if ($i < ($nblignes - 1)) // If it's not last line
$this->_pagefoot($pdf, $object, $outputlangs); {
//on recupere la description du produit suivant
// New page $follow_descproduitservice = $object->lines[$i+1]->label;
$pdf->AddPage(); //on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
$pagenb++; $nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
$this->_pagehead($pdf, $object, 0, $outputlangs); }
$pdf->SetFont('Arial','', 9); else // If it's last line
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3 {
$pdf->SetTextColor(0,0,0); $nblineFollowDesc = 0;
}
$nexY = $tab_top_newpage + 7;
} if (($nexY+$nblineFollowDesc) > ($tab_top+$tab_height) && $i < ($nblignes - 1))
} {
$this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs);
// Show square
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); $this->_pagefoot($pdf, $object, $outputlangs);
$bottomlasttab=$tab_top + $tab_height + 1;
// New page
/* $pdf->AddPage();
* Pied de page $pagenb++;
*/ $this->_pagehead($pdf, $object, 0, $outputlangs);
$this->_pagefoot($pdf,$object,$outputlangs); $pdf->SetFont('Arial','', 9);
$pdf->AliasNbPages(); $pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
$pdf->SetTextColor(0,0,0);
$pdf->Close();
$tab_top=$tab_top_newpage;
$pdf->Output($file); $tab_height=$tab_height_newpage;
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK)); $nexY = $tab_top + 7;
}
return 1; // Pas d'erreur }
}
else // Show square
{ $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); $bottomlasttab=$tab_top + $tab_height + 1;
return 0;
} /*
} * Pied de page
*/
$this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR"); $this->_pagefoot($pdf,$object,$outputlangs);
return 0; $pdf->AliasNbPages();
}
$pdf->Close();
/* $pdf->Output($file);
* \brief Affiche la grille des lignes if (! empty($conf->global->MAIN_UMASK))
* \param pdf objet PDF @chmod($file, octdec($conf->global->MAIN_UMASK));
*/
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs) return 1; // Pas d'erreur
{ }
global $conf,$mysoc; else
{
// Montants exprimes en (en tab_top - 1) $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
$pdf->SetTextColor(0,0,0); return 0;
$pdf->SetFont('Arial','',8); }
//$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentitiesnoconv("Currency".$conf->monnaie)); }
//$pdf->Text($this->page_largeur - $this->marge_droite - $pdf->GetStringWidth($titre), $tab_top-1, $titre);
$this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR");
$pdf->SetDrawColor(128,128,128); return 0;
}
// Rect prend une longueur en 3eme param
$pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height);
// line prend une position y en 3eme param /*
$pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6); * \brief Affiche la grille des lignes
* \param pdf objet PDF
$pdf->SetFont('Arial','',10); */
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
$pdf->SetXY ($this->posxdesc-1, $tab_top+2); {
$pdf->MultiCell(80,2, $outputlangs->transnoentities("Tasks"),'','L'); global $conf,$mysoc;
} // Montants exprimes en (en tab_top - 1)
$pdf->SetTextColor(0,0,0);
/** $pdf->SetFont('Arial','',8);
* \brief Affiche en-tete bon livraison //$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentitiesnoconv("Currency".$conf->monnaie));
* \param pdf objet PDF //$pdf->Text($this->page_largeur - $this->marge_droite - $pdf->GetStringWidth($titre), $tab_top-1, $titre);
* \param delivery object delivery
* \param showadress 0=non, 1=oui $pdf->SetDrawColor(128,128,128);
*/
function _pagehead(&$pdf, $object, $showadress=1, $outputlangs) // Rect prend une longueur en 3eme param
{ $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height);
global $langs,$conf,$mysoc; // line prend une position y en 3eme param
$pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6);
pdf_pagehead($pdf,$outputlangs,$pdf->page_hauteur);
$pdf->SetFont('Arial','',10);
$pdf->SetTextColor(0,0,60);
$pdf->SetFont('Arial','B',13); $pdf->SetXY ($this->posxref-1, $tab_top+2);
$pdf->MultiCell(80,2, $outputlangs->transnoentities("Tasks"),'','L');
$posy=$this->marge_haute;
}
$pdf->SetXY($this->marge_gauche,$posy);
/**
// Logo * \brief Affiche en-tete bon livraison
$logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo; * \param pdf objet PDF
if ($mysoc->logo) * \param delivery object delivery
{ * \param showadress 0=non, 1=oui
if (is_readable($logo)) */
{ function _pagehead(&$pdf, $object, $showadress=1, $outputlangs)
$pdf->Image($logo, $this->marge_gauche, $posy, 0, 24); {
} global $langs,$conf,$mysoc;
else
{ pdf_pagehead($pdf,$outputlangs,$pdf->page_hauteur);
$pdf->SetTextColor(200,0,0);
$pdf->SetFont('Arial','B',8); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L'); $pdf->SetFont('Arial','B',13);
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
} $posy=$this->marge_haute;
}
else $pdf->MultiCell(100, 4, $this->emetteur->nom, 0, 'L'); $pdf->SetXY($this->marge_gauche,$posy);
$pdf->SetFont('Arial','B',13); // Logo
$pdf->SetXY(100,$posy); $logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo;
$pdf->SetTextColor(0,0,60); if ($mysoc->logo)
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Project")." ".$outputlangs->convToOutputCharset($object->ref), '' , 'R'); {
$pdf->SetFont('Arial','',12); if (is_readable($logo))
{
$posy+=6; $pdf->Image($logo, $this->marge_gauche, $posy, 0, 24);
$pdf->SetXY(100,$posy); }
$pdf->SetTextColor(0,0,60); else
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateStart")." : " . dol_print_date($object->date_start,'day',false,$outputlangs,true), '', 'R'); {
$posy+=6; $pdf->SetTextColor(200,0,0);
$pdf->SetXY(100,$posy); $pdf->SetFont('Arial','B',8);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R'); $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L');
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
$pdf->SetTextColor(0,0,60); }
}
// Add list of linked orders else $pdf->MultiCell(100, 4, $outputlangs->transnoentities($this->emetteur->nom), 0, 'L');
// TODO mutualiser
$object->load_object_linked(); $pdf->SetFont('Arial','B',13);
$pdf->SetXY(100,$posy);
if ($conf->commande->enabled) $pdf->SetTextColor(0,0,60);
{ $pdf->MultiCell(100, 4, $outputlangs->transnoentities("Project")." ".$outputlangs->convToOutputCharset($object->ref), '' , 'R');
$outputlangs->load('orders'); $pdf->SetFont('Arial','',12);
foreach($object->linked_object as $key => $val)
{ $posy+=6;
if ($key == 'commande') $pdf->SetXY(100,$posy);
{ $pdf->SetTextColor(0,0,60);
for ($i = 0; $i<sizeof($val);$i++) $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateStart")." : " . dol_print_date($object->date_start,'day',false,$outputlangs,true), '', 'R');
{ $posy+=6;
$newobject=new Commande($this->db); $pdf->SetXY(100,$posy);
$result=$newobject->fetch($val[$i]); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
if ($result >= 0)
{ $pdf->SetTextColor(0,0,60);
$posy+=4;
$pdf->SetXY(100,$posy); // Add list of linked orders
$pdf->SetFont('Arial','',9); // TODO mutualiser
$text=$newobject->ref; $object->load_object_linked();
if ($newobject->ref_client) $text.=' ('.$newobject->ref_client.')';
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : ".$outputlangs->transnoentities($text), '', 'R'); if ($conf->commande->enabled)
} {
} $outputlangs->load('orders');
} foreach($object->linked_object as $key => $val)
} {
} if ($key == 'commande')
{
if ($showadress) for ($i = 0; $i<sizeof($val);$i++)
{ {
// Emetteur $newobject=new Commande($this->db);
/* $posy=42; $result=$newobject->fetch($val[$i]);
$hautcadre=40; if ($result >= 0)
$pdf->SetTextColor(0,0,0); {
$pdf->SetFont('Arial','',8); $posy+=4;
$pdf->SetXY($this->marge_gauche,$posy-5); $pdf->SetXY(100,$posy);
$pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":"); $pdf->SetFont('Arial','',9);
$text=$newobject->ref;
if ($newobject->ref_client) $text.=' ('.$newobject->ref_client.')';
$pdf->SetXY($this->marge_gauche,$posy); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : ".$outputlangs->transnoentities($text), '', 'R');
$pdf->SetFillColor(230,230,230); }
$pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); }
}
}
$pdf->SetXY($this->marge_gauche+2,$posy+3); }
// Nom emetteur }
$pdf->SetTextColor(0,0,60);
$pdf->SetFont('Arial','B',11); /**
$pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->nom), 0, 'L'); * \brief Show footer of page
* \param pdf PDF factory
// Sender properties * \param object Object invoice
$carac_emetteur = pdf_build_address($outputlangs,$this->emetteur); * \param outputlangs Object lang for output
* \remarks Need this->emetteur object
$pdf->SetFont('Arial','',9); */
$pdf->SetXY($this->marge_gauche+2,$posy+9); function _pagefoot(&$pdf,$object,$outputlangs)
$pdf->MultiCell(80, 3, $carac_emetteur); {
return pdf_pagefoot($pdf,$outputlangs,'DELIVERY_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object);
// Client destinataire }
$posy=42;
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8);
$pdf->SetXY(102,$posy-5);
$pdf->MultiCell(80,5, $outputlangs->transnoentities("DeliveryAddress").":");
// Cadre client destinataire
$pdf->rect(100, $posy, 100, $hautcadre);
$object->fetch_client();
// Recipient name
if (! empty($usecontact))
{
// On peut utiliser le nom de la societe du contact
if ($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) $socname = $object->contact->socname;
else $socname = $object->client->nom;
$carac_client_name=$outputlangs->convToOutputCharset($socname);
}
else
{
$carac_client_name=$outputlangs->convToOutputCharset($object->client->nom);
}
$carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target');
// Show customer/recipient
$pdf->SetXY(102,$posy+3);
$pdf->SetFont('Arial','B',11);
$pdf->MultiCell(106,4, $carac_client_name, 0, 'L');
$pdf->SetFont('Arial','',9);
$pdf->SetXY(102,$posy+8);
$pdf->MultiCell(86,4, $carac_client);
*/ }
}
/**
* \brief Show footer of page
* \param pdf PDF factory
* \param object Object invoice
* \param outputlangs Object lang for output
* \remarks Need this->emetteur object
*/
function _pagefoot(&$pdf,$object,$outputlangs)
{
return pdf_pagefoot($pdf,$outputlangs,'DELIVERY_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object);
}
} }

View File

@@ -19,7 +19,7 @@
*/ */
/** /**
* \file htdocs/includes/modules/societe/mod_codeclient_monkey.class.php * \file htdocs/includes/modules/societe/mod_codeclient_monkey.php
* \ingroup societe * \ingroup societe
* \brief Fichier de la classe des gestion lion des codes clients * \brief Fichier de la classe des gestion lion des codes clients
* \version $Id$ * \version $Id$
@@ -109,7 +109,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
$posindice=8; $posindice=8;
$sql = "SELECT MAX(SUBSTRING(".$field.",".$posindice.")) as max"; $sql = "SELECT MAX(SUBSTRING(".$field.",".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."societe"; $sql.= " FROM ".MAIN_DB_PREFIX."societe";
$sql.= " WHERE ".$field." LIKE '".$prefix."%'"; $sql.= " WHERE ".$field." LIKE '".$prefix."____-%'";
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2008 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -18,13 +18,13 @@
*/ */
/** /**
\file htdocs/includes/triggers/interface_modPhenix_Phenixsynchro.class.php \file htdocs/phenix/inc/triggers/interface_modPhenix_Phenixsynchro.class.php
\ingroup phenix \ingroup phenix
\brief Fichier de gestion des triggers phenix \brief Fichier de gestion des triggers phenix
\version $Id$ \version $Id$
*/ */
include_once(DOL_DOCUMENT_ROOT.'/phenix/phenix.class.php'); include_once(DOL_DOCUMENT_ROOT.'/phenix/class/phenix.class.php');
/** /**
@@ -114,7 +114,7 @@ class InterfacePhenixsynchro
$langs->load("other"); $langs->load("other");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
if ($object->type_id == 5 && $object->contact->fullname) if ($object->type_id == 5 && $object->contact->getFullName($langs))
{ {
$libellecal =$langs->transnoentities("TaskRDVWith",$object->contact->getFullName($langs))."\n"; $libellecal =$langs->transnoentities("TaskRDVWith",$object->contact->getFullName($langs))."\n";
$libellecal.=$object->note; $libellecal.=$object->note;
@@ -247,7 +247,7 @@ class InterfacePhenixsynchro
$this->desc=$langs->transnoentities("InvoicePaidInDolibarr",$object->ref); $this->desc=$langs->transnoentities("InvoicePaidInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
elseif ($action == 'BILL_CANCELED') elseif ($action == 'BILL_CANCEL')
{ {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other"); $langs->load("other");
@@ -296,7 +296,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("NewMemberCreated",$object->ref); $this->texte=$langs->transnoentities("NewMemberCreated",$object->ref);
$this->desc=$langs->transnoentities("NewMemberCreated",$object->ref); $this->desc=$langs->transnoentities("NewMemberCreated",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
@@ -310,7 +310,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref); $this->texte=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
@@ -324,7 +324,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref); $this->texte=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Amount").': '.$object->last_subscription_amount; $this->desc.="\n".$langs->transnoentities("Amount").': '.$object->last_subscription_amount;
$this->desc.="\n".$langs->transnoentities("Period").': '.dol_print_date($object->last_subscription_date_start,'day').' - '.dol_print_date($object->last_subscription_date_end,'day'); $this->desc.="\n".$langs->transnoentities("Period").': '.dol_print_date($object->last_subscription_date_start,'day').' - '.dol_print_date($object->last_subscription_date_end,'day');
@@ -340,7 +340,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref); $this->texte=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
@@ -354,7 +354,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref); $this->texte=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
@@ -368,7 +368,7 @@ class InterfacePhenixsynchro
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref); $this->texte=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; $this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }

View File

@@ -0,0 +1,404 @@
<?php
/* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
\file htdocs/webcalendar/inc/triggers/interface_modWebcalendar_webcalsynchro.class.php
\ingroup webcalendar
\brief Fichier de gestion des triggers webcalendar
\version $Id$
*/
include_once(DOL_DOCUMENT_ROOT.'/webcalendar/class/webcal.class.php');
/**
\class InterfaceWebcalsynchro
\brief Classe des fonctions triggers des actions webcalendar
*/
class InterfaceWebcalsynchro
{
var $db;
var $error;
var $date;
var $duree;
var $texte;
var $desc;
/**
* \brief Constructeur.
* \param DB Handler d'acces base
*/
function InterfaceWebcalsynchro($DB)
{
$this->db = $DB ;
$this->name = preg_replace('/^Interface/i','',get_class($this));
$this->family = "webcal";
$this->description = "Triggers of this module allows to add an event inside Webcalendar for each Dolibarr business event.";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
}
/**
* \brief Renvoi nom du lot de triggers
* \return string Nom du lot de triggers
*/
function getName()
{
return $this->name;
}
/**
* \brief Renvoi descriptif du lot de triggers
* \return string Descriptif du lot de triggers
*/
function getDesc()
{
return $this->description;
}
/**
* \brief Renvoi version du lot de triggers
* \return string Version du lot de triggers
*/
function getVersion()
{
global $langs;
$langs->load("admin");
if ($this->version == 'experimental') return $langs->trans("Experimental");
elseif ($this->version == 'dolibarr') return DOL_VERSION;
elseif ($this->version) return $this->version;
else return $langs->trans("Unknown");
}
/**
* \brief Fonction appelee lors du declenchement d'un evenement Dolibarr.
* D'autres fonctions run_trigger peuvent etre presentes dans includes/triggers
* \param action Code de l'evenement
* \param object Objet concerne
* \param user Objet user
* \param lang Objet lang
* \param conf Objet conf
* \return int <0 si ko, 0 si aucune action faite, >0 si ok
*/
function run_trigger($action,$object,$user,$langs,$conf)
{
// Mettre ici le code a executer en reaction de l'action
// Les donnees de l'action sont stockees dans $object
if (! $conf->webcal->enabled) return 0; // Module non actif
if (! $object->use_webcal) return 0; // Option syncro webcal non active
// Actions
if ($action == 'ACTION_CREATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
// Initialisation donnees (date,duree,texte,desc)
if ($object->type_id == 5 && $object->contact->getFullName($langs))
{
$libellecal =$langs->transnoentities("TaskRDVWith",$object->contact->getFullName($langs))."\n";
$libellecal.=$object->note;
}
else
{
$libellecal="";
if ($langs->transnoentities("Action".$object->type_code) != "Action".$object->type_code)
{
$libellecal.=$langs->transnoentities("Action".$object->type_code)."\n";
}
$libellecal.=($object->label!=$libellecal?$object->label."\n":"");
$libellecal.=($object->note?$object->note:"");
}
$this->date=$object->date ? $object->date : $object->datep;
$this->duree=$object->duree;
$this->texte=$object->societe->nom;
$this->desc=$libellecal;
}
// Third parties
elseif ($action == 'COMPANY_CREATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
// Initialisation donnees (date,duree,texte,desc)
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("NewCompanyToDolibarr",$object->nom);
$this->desc=$langs->transnoentities("NewCompanyToDolibarr",$object->nom);
if ($object->prefix) $this->desc.=" (".$object->prefix.")";
//$this->desc.="\n".$langs->transnoentities("Customer").': '.yn($object->client);
//$this->desc.="\n".$langs->transnoentities("Supplier").': '.yn($object->fournisseur);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// Contracts
elseif ($action == 'CONTRACT_VALIDATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
// Initialisation donnees (date,duree,texte,desc)
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("ContractValidatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("ContractValidatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// Proposals
elseif ($action == 'PROPAL_VALIDATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("PropalValidatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("PropalValidatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'PROPAL_CLOSE_SIGNED')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("PropalClosedSignedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("PropalClosedSignedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'PROPAL_CLOSE_REFUSED')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// Invoices
elseif ($action == 'BILL_VALIDATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("InvoiceValidatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("InvoiceValidatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'BILL_PAYED')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("InvoicePaidInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("InvoicePaidInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'BILL_CANCEL')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("InvoiceCanceledInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("InvoiceCanceledInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// Payments
elseif ($action == 'PAYMENT_CUSTOMER_CREATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("CustomerPaymentDoneInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("CustomerPaymentDoneInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("AmountTTC").': '.$object->total;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'PAYMENT_SUPPLIER_CREATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("SupplierPaymentDoneInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("SupplierPaymentDoneInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("AmountTTC").': '.$object->total;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// Members
elseif ($action == 'MEMBER_CREATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("NewMemberCreated",$object->ref);
$this->desc=$langs->transnoentities("NewMemberCreated",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'MEMBER_VALIDATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberValidatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'MEMBER_SUBSCRIPTION')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberSubscriptionAddedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Amount").': '.$object->last_subscription_amount;
$this->desc.="\n".$langs->transnoentities("Period").': '.dol_print_date($object->last_subscription_date_start,'day').' - '.dol_print_date($object->last_subscription_date_end,'day');
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'MEMBER_MODIFY')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberModifiedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'MEMBER_RESILIATE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberResiliatedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
elseif ($action == 'MEMBER_DELETE')
{
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other");
$langs->load("members");
$this->date=time();
$this->duree=0;
$this->texte=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref);
$this->desc=$langs->transnoentities("MemberDeletedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Member").': '.$object->getFullName($langs);
$this->desc.="\n".$langs->transnoentities("Type").': '.$object->type;
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
}
// If not found
/*
else
{
dol_syslog("Trigger '".$this->name."' for action '$action' was ran by ".__FILE__." but no handler found for this action.");
return 0;
}
*/
// Ajoute entree dans webcal
if ($this->date)
{
// Cree objet webcal et connexion avec params $conf->webcal->db->xxx
$webcal = new Webcal();
if (! $webcal->localdb->ok)
{
// Si la creation de l'objet n'as pu se connecter
$error ="Dolibarr n'a pu se connecter a la base Webcalendar avec les identifiants definis (host=".$conf->webcal->db->host." dbname=".$conf->webcal->db->name." user=".$conf->webcal->db->user."). ";
$error.="La mise a jour Webcalendar a ete ignoree.";
$this->error=$error;
//dol_syslog("interface_webcal.class.php: ".$this->error, LOG_ERR);
return -1;
}
$webcal->date=$this->date;
$webcal->duree=$this->duree;
$webcal->texte=$this->texte;
$webcal->desc=$this->desc;
$result=$webcal->add($user);
if ($result > 0)
{
return 1;
}
else
{
$error ="Echec insertion dans webcal: ".$webcal->error." ";
$error.="La mise a jour Webcalendar a ete ignoree.";
$this->error=$error;
//dol_syslog("interface_webcal.class.php: ".$this->error, LOG_ERR);
return -2;
}
}
return 0;
}
}
?>

View File

@@ -149,7 +149,7 @@ if ($_POST["action"] == "set" || preg_match('/upgrade/i',$_POST["action"]))
$conf->setValues($db); $conf->setValues($db);
// Create user // Create user
include_once(DOL_DOCUMENT_ROOT ."/user/user.class.php"); include_once(DOL_DOCUMENT_ROOT ."/user/class/user.class.php");
$createuser=new User($db); $createuser=new User($db);
$createuser->id=0; $createuser->id=0;
@@ -288,10 +288,11 @@ if ($_POST["action"] == "set")
$fp = @fopen($lockfile, "w"); $fp = @fopen($lockfile, "w");
if ($fp) if ($fp)
{ {
fwrite($fp, "This is a lock file to prevent use of install pages"); if ($force_install_lockinstall == 1) $force_install_lockinstall=444; // For backward compatibility
fclose($fp); fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
@chmod($lockfile, octdec(444)); fclose($fp);
$createlock=1; @chmod($lockfile, octdec($force_install_lockinstall));
$createlock=1;
} }
} }
if (empty($createlock)) if (empty($createlock))
@@ -311,7 +312,7 @@ if ($_POST["action"] == "set")
{ {
// If here MAIN_VERSION_LAST_UPGRADE is not empty // If here MAIN_VERSION_LAST_UPGRADE is not empty
print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>'; print $langs->trans("VersionLastUpgrade").': <b><font class="ok">'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</font></b><br>';
print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b>'; print $langs->trans("VersionProgram").': <b><font class="ok">'.DOL_VERSION.'</font></b><br>';
print $langs->trans("MigrationNotFinished").'<br>'; print $langs->trans("MigrationNotFinished").'<br>';
print "<br>"; print "<br>";
@@ -337,10 +338,11 @@ elseif (preg_match('/upgrade/i',$_POST["action"]))
$fp = @fopen($lockfile, "w"); $fp = @fopen($lockfile, "w");
if ($fp) if ($fp)
{ {
fwrite($fp, "This is a lock file to prevent use of install pages"); if ($force_install_lockinstall == 1) $force_install_lockinstall=444; // For backward compatibility
fclose($fp); fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
@chmod($lockfile, octdec(444)); fclose($fp);
$createlock=1; @chmod($lockfile, octdec($force_install_lockinstall));
$createlock=1;
} }
} }
if (empty($createlock)) if (empty($createlock))

View File

@@ -198,6 +198,15 @@ print $langs->trans("Examples").":<br>";
</ul> </ul>
</tr> </tr>
<tr>
<td valign="top" class="label">
<?php echo $langs->trans("ForceHttps"); ?>
<td class="label" valign="top"><input type="checkbox" name="main_force_https"<?php if (! empty($force_install_mainforcehttps)) print ' checked="on"'; ?>></td>
<td class="comment">
<?php echo $langs->trans("CheckToForceHttps"); ?>
</td>
</tr>
<!-- Dolibarr database --> <!-- Dolibarr database -->
<tr> <tr>
@@ -394,7 +403,7 @@ while (($file = readdir($handle))!==false)
<script type="text/javascript" language="javascript"> <script type="text/javascript" language="javascript">
function checkDatabaseName(databasename) { function checkDatabaseName(databasename) {
if (databasename.match(/[-;\.]/)) { return false; } if (databasename.match(/[;\.]/)) { return false; }
return true; return true;
} }

View File

@@ -36,6 +36,11 @@
delete from llx_c_tva; delete from llx_c_tva;
-- ARGENTINA (id 23)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (231, 23, '21','0','IVA standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (232, 23,'10.5','0','IVA reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (233, 23, '0','0','IVA Rate 0', 1);
-- AUSTRALIA (id 28) -- AUSTRALIA (id 28)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (281, 28, '10','0','VAT standard rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (281, 28, '10','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (282, 28, '0','0','VAT Rate 0', 1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (282, 28, '0','0','VAT Rate 0', 1);
@@ -59,6 +64,12 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (14
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (671, 67, '19','0','VAT standard rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (671, 67, '19','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (672, 67, '0','0','VAT Rate 0',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (672, 67, '0','0','VAT Rate 0',1);
-- CHINA (id 9)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 91, 9, '17','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 92, 9, '13','0','VAT reduced rate 0',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 93, 9, '3','0','VAT super reduced rate 0',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 94, 9, '0','0','VAT Rate 0',1);
-- FRANCE (id 1) -- FRANCE (id 1)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 11, 1,'19.6','0','VAT standard rate (France hors DOM-TOM)',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 11, 1,'19.6','0','VAT standard rate (France hors DOM-TOM)',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 12, 1, '8.5','0','VAT standard rate (DOM sauf Guyane et Saint-Martin)',0); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 12, 1, '8.5','0','VAT standard rate (DOM sauf Guyane et Saint-Martin)',0);
@@ -78,6 +89,12 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 3
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 33, 3, '4','0','VAT super-reduced rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 33, 3, '4','0','VAT super-reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 34, 3, '0','0','VAT Rate 0',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 34, 3, '0','0','VAT Rate 0',1);
-- INDIA (id 117)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1171, 117, '12.5','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1172, 117, '4','0','VAT reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1173, 117, '1','0','VAT super-reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1174, 117, '0','0','VAT Rate 0',1);
-- JAPAN (id 123) -- JAPAN (id 123)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1231, 123, '0','0','VAT Rate 0',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1231, 123, '0','0','VAT Rate 0',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1232, 123, '5','0','VAT Rate 5',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1232, 123, '5','0','VAT Rate 5',1);
@@ -112,6 +129,8 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 42, 4, '7','0','1','VAT reduced rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 42, 4, '7','0','1','VAT reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 43, 4, '4','0','0.5','VAT super-reduced rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 43, 4, '4','0','0.5','VAT super-reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 44, 4, '0','0','VAT Rate 0',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 44, 4, '0','0','VAT Rate 0',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 45, 4, '18','0','4','VAT standard rate from July 2010',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 46, 4, '8','0','1','VAT reduced rate from July 2010',1);
-- UNITED OF KINGDOM (id 7) -- UNITED OF KINGDOM (id 7)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 71, 7, '17.5','0','VAT standard rate',1); insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 71, 7, '17.5','0','VAT standard rate',1);

View File

@@ -955,3 +955,7 @@ UPDATE llx_usergroup_rights SET fk_id=fk_id+1 WHERE fk_id BETWEEN 1320 AND 1320;
UPDATE llx_rights_def SET ID=ID+1 WHERE ID BETWEEN 1420 AND 1420 AND module='commande'; UPDATE llx_rights_def SET ID=ID+1 WHERE ID BETWEEN 1420 AND 1420 AND module='commande';
UPDATE llx_user_rights SET fk_id=fk_id+1 WHERE fk_id BETWEEN 1420 AND 1420; UPDATE llx_user_rights SET fk_id=fk_id+1 WHERE fk_id BETWEEN 1420 AND 1420;
UPDATE llx_usergroup_rights SET fk_id=fk_id+1 WHERE fk_id BETWEEN 1420 AND 1420; UPDATE llx_usergroup_rights SET fk_id=fk_id+1 WHERE fk_id BETWEEN 1420 AND 1420;
-- Not used. Just to be compatible with upgrade process of higher versions
alter table llx_const add column entity integer DEFAULT 1 NOT NULL;

View File

@@ -1175,4 +1175,10 @@ ALTER TABLE llx_commande_fournisseurdet MODIFY fk_product integer;
-- Le prix d'un produit ne doit pas avoir la valeur NULL -- Le prix d'un produit ne doit pas avoir la valeur NULL
UPDATE llx_product SET price = 0 WHERE price is NULL; UPDATE llx_product SET price = 0 WHERE price is NULL;
UPDATE llx_product SET price_ttc = 0 WHERE price_ttc is NULL; UPDATE llx_product SET price_ttc = 0 WHERE price_ttc is NULL;
-- Not used. Just to be compatible with upgrade process of higher versions
alter table llx_const add column entity integer DEFAULT 1 NOT NULL;
-- Not used. Just to be compatible with 2.7 upgrade process or higher
alter table llx_menu add column enabled varchar(255) NULL default '1';

View File

@@ -345,3 +345,9 @@ update llx_societe set fk_typent = 0 where fk_typent is null;
ALTER TABLE llx_surveys_answers_summary TYPE=INNODB; ALTER TABLE llx_surveys_answers_summary TYPE=INNODB;
-- Not used. Just to be compatible with upgrade process of higher versions
alter table llx_const add column entity integer DEFAULT 1 NOT NULL;
-- Not used. Just to be compatible with 2.7 upgrade process or higher
alter table llx_menu add column enabled varchar(255) NULL default '1';

View File

@@ -110,3 +110,8 @@ INSERT INTO llx_expedition_methode (rowid,code,libelle,description,active) VALUE
INSERT INTO llx_expedition_methode (rowid,code,libelle,description,active) VALUES (2,'TRANS','Transporter','Generic transporter',1); INSERT INTO llx_expedition_methode (rowid,code,libelle,description,active) VALUES (2,'TRANS','Transporter','Generic transporter',1);
INSERT INTO llx_expedition_methode (rowid,code,libelle,description,active) VALUES (3,'COLSUI','Colissimo Suivi','Colissimo Suivi',0); INSERT INTO llx_expedition_methode (rowid,code,libelle,description,active) VALUES (3,'COLSUI','Colissimo Suivi','Colissimo Suivi',0);
-- Not used. Just to be compatible with upgrade process of higher versions
alter table llx_const add column entity integer DEFAULT 1 NOT NULL;
-- Not used. Just to be compatible with 2.7 upgrade process or higher
alter table llx_menu add column enabled varchar(255) NULL default '1';

View File

@@ -134,4 +134,8 @@ ALTER TABLE llx_usergroup DROP INDEX nom;
ALTER TABLE llx_const ADD UNIQUE INDEX uk_const (name, entity); ALTER TABLE llx_const ADD UNIQUE INDEX uk_const (name, entity);
ALTER TABLE llx_user ADD UNIQUE INDEX uk_user_login (login, entity); ALTER TABLE llx_user ADD UNIQUE INDEX uk_user_login (login, entity);
ALTER TABLE llx_usergroup ADD UNIQUE INDEX uk_usergroup_name (nom, entity); ALTER TABLE llx_usergroup ADD UNIQUE INDEX uk_usergroup_name (nom, entity);
-- Not used. Just to be compatible with 2.7 upgrade process or higher
alter table llx_menu add column enabled varchar(255) NULL default '1';

View File

@@ -503,3 +503,6 @@ ALTER TABLE llx_propaldet ADD CONSTRAINT fk_propaldet_fk_propal FOREIGN KEY (fk_
ALTER TABLE llx_bank_class DROP INDEX idx_bank_class_lineid; ALTER TABLE llx_bank_class DROP INDEX idx_bank_class_lineid;
ALTER TABLE llx_bank_class DROP INDEX uk_bank_class_lineid; ALTER TABLE llx_bank_class DROP INDEX uk_bank_class_lineid;
ALTER TABLE llx_bank_class ADD UNIQUE INDEX uk_bank_class_lineid (lineid, fk_categ); ALTER TABLE llx_bank_class ADD UNIQUE INDEX uk_bank_class_lineid (lineid, fk_categ);
alter table llx_menu add column enabled varchar(255) NULL default '1';

View File

@@ -6,14 +6,45 @@
-- when current version is 2.8.0 or higher. -- when current version is 2.8.0 or higher.
-- --
-- Add unique key
ALTER TABLE llx_product_stock ADD UNIQUE INDEX uk_product_stock (fk_product,fk_entrepot);
ALTER TABLE llx_product_stock drop column location;
-- Add missing table llx_product_association
create table llx_product_association
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_product_pere integer NOT NULL DEFAULT 0,
fk_product_fils integer NOT NULL DEFAULT 0,
qty double NULL
)type=innodb;
ALTER TABLE llx_product_association ADD UNIQUE INDEX uk_product_association (fk_product_pere, fk_product_fils);
ALTER TABLE llx_product_association ADD INDEX idx_product_association_fils (fk_product_fils);
ALTER TABLE llx_product ADD INDEX idx_product_label (label);
-- V4.1 DELETE FROM llx_projet_task WHERE fk_projet NOT IN (SELECT rowid from llx_projet); -- V4.1 DELETE FROM llx_projet_task WHERE fk_projet NOT IN (SELECT rowid from llx_projet);
-- V4.1 UPDATE llx_projet_task set fk_user_creat=NULL WHERE fk_user_creat IS NOT NULL AND fk_user_creat NOT IN (SELECT rowid from llx_user); -- V4.1 UPDATE llx_projet_task set fk_user_creat=NULL WHERE fk_user_creat IS NOT NULL AND fk_user_creat NOT IN (SELECT rowid from llx_user);
-- V4.1 UPDATE llx_projet_task set fk_user_valid=NULL WHERE fk_user_valid IS NOT NULL AND fk_user_valid NOT IN (SELECT rowid from llx_user); -- V4.1 UPDATE llx_projet_task set fk_user_valid=NULL WHERE fk_user_valid IS NOT NULL AND fk_user_valid NOT IN (SELECT rowid from llx_user);
-- rename llx_product_det ALTER table llx_bank_account ADD COLUMN fk_pays integer DEFAULT 0 NOT NULL after domiciliation;
ALTER TABLE llx_bank_account ADD COLUMN fk_departement integer DEFAULT NULL after domiciliation;
ALTER TABLE llx_socpeople ADD COLUMN fk_departement integer DEFAULT NULL after ville;
ALTER TABLE llx_adherent ADD COLUMN fk_departement integer DEFAULT NULL after ville;
ALTER TABLE llx_entrepot ADD COLUMN fk_departement integer DEFAULT NULL after ville;
ALTER TABLE llx_bookmark ADD COLUMN position integer DEFAULT 0;
-- Rename llx_product_det
ALTER TABLE llx_product_det RENAME TO llx_product_lang; ALTER TABLE llx_product_det RENAME TO llx_product_lang;
ALTER TABLE llx_product_lang ADD UNIQUE INDEX uk_product_lang (fk_product, lang); ALTER TABLE llx_product_lang ADD UNIQUE INDEX uk_product_lang (fk_product, lang);
-- V4.1 DELETE FROM llx_product_lang WHERE fk_product NOT IN (SELECT rowid from llx_product);
ALTER TABLE llx_product_lang ADD CONSTRAINT fk_product_lang_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid); ALTER TABLE llx_product_lang ADD CONSTRAINT fk_product_lang_fk_product FOREIGN KEY (fk_product) REFERENCES llx_product (rowid);
ALTER TABLE llx_product ADD COLUMN virtual tinyint DEFAULT 0 NOT NULL AFTER tms; ALTER TABLE llx_product ADD COLUMN virtual tinyint DEFAULT 0 NOT NULL AFTER tms;
@@ -33,7 +64,7 @@ update llx_facture_fourn set fk_statut=2 where fk_statut=1 AND paye=1;
alter table llx_facture_fourn add column close_code varchar(16) after remise; alter table llx_facture_fourn add column close_code varchar(16) after remise;
alter table llx_facture_fourn add column close_note varchar(128) after close_code; alter table llx_facture_fourn add column close_note varchar(128) after close_code;
--add local taxes -- Add local taxes
alter table llx_facture add column localtax1 double(24,8) DEFAULT 0 after tva; alter table llx_facture add column localtax1 double(24,8) DEFAULT 0 after tva;
alter table llx_facture add column localtax2 double(24,8) DEFAULT 0 after localtax1; alter table llx_facture add column localtax2 double(24,8) DEFAULT 0 after localtax1;
alter table llx_facturedet add column localtax1_tx double(6,3) DEFAULT 0 after tva_tx; alter table llx_facturedet add column localtax1_tx double(6,3) DEFAULT 0 after tva_tx;
@@ -84,6 +115,11 @@ alter table llx_product add column localtax2_tx double(6,3) DEFAULT 0 after loca
alter table llx_product_price add column localtax1_tx double(6,3) DEFAULT 0 after tva_tx; alter table llx_product_price add column localtax1_tx double(6,3) DEFAULT 0 after tva_tx;
alter table llx_product_price add column localtax2_tx double(6,3) DEFAULT 0 after localtax1_tx; alter table llx_product_price add column localtax2_tx double(6,3) DEFAULT 0 after localtax1_tx;
alter table llx_contratdet add column localtax1_tx double(6,3) DEFAULT 0 after tva_tx;
alter table llx_contratdet add column localtax2_tx double(6,3) DEFAULT 0 after localtax1_tx;
alter table llx_contratdet add column total_localtax1 double(24,8) DEFAULT 0 after total_tva;
alter table llx_contratdet add column total_localtax2 double(24,8) DEFAULT 0 after total_localtax1;
alter table llx_product add column hidden tinyint DEFAULT 0; alter table llx_product add column hidden tinyint DEFAULT 0;
alter table llx_product add column length float DEFAULT NULL after weight_units; alter table llx_product add column length float DEFAULT NULL after weight_units;
@@ -97,11 +133,19 @@ alter table llx_product add column accountancy_code_buy varchar(15) aft
ALTER TABLE llx_product drop column stock_loc; ALTER TABLE llx_product drop column stock_loc;
ALTER TABLE llx_product_stock add column location varchar(32); ALTER TABLE llx_product_stock add column location varchar(32);
ALTER TABLE llx_expedition DROP FOREIGN KEY fk_expedition_fk_adresse_livraison;
ALTER TABLE llx_expedition DROP INDEX idx_expedition_fk_adresse_livraison;
ALTER TABLE llx_expedition ADD COLUMN ref_customer varchar(30) AFTER entity; ALTER TABLE llx_expedition ADD COLUMN ref_customer varchar(30) AFTER entity;
ALTER TABLE llx_expedition ADD COLUMN date_delivery date DEFAULT NULL AFTER date_expedition; ALTER TABLE llx_expedition ADD COLUMN date_delivery date DEFAULT NULL AFTER date_expedition;
ALTER TABLE llx_expedition CHANGE COLUMN fk_adresse_livraison fk_address integer DEFAULT NULL;
ALTER TABLE llx_livraison DROP FOREIGN KEY fk_livraison_fk_adresse_livraison;
ALTER TABLE llx_livraison DROP INDEX idx_livraison_fk_adresse_livraison;
ALTER TABLE llx_livraison change ref_client ref_customer varchar(30); ALTER TABLE llx_livraison change ref_client ref_customer varchar(30);
ALTER TABLE llx_livraison change date_livraison date_delivery date DEFAULT NULL; ALTER TABLE llx_livraison change date_livraison date_delivery date DEFAULT NULL;
ALTER TABLE llx_livraison CHANGE COLUMN fk_adresse_livraison fk_address integer DEFAULT NULL;
ALTER TABLE llx_c_actioncomm MODIFY libelle varchar(48) NOT NULL;
ALTER TABLE llx_facture MODIFY tva double(24,8) DEFAULT 0; ALTER TABLE llx_facture MODIFY tva double(24,8) DEFAULT 0;
ALTER TABLE llx_facture MODIFY total double(24,8) DEFAULT 0; ALTER TABLE llx_facture MODIFY total double(24,8) DEFAULT 0;
@@ -132,7 +176,7 @@ ALTER TABLE llx_adherent ADD COLUMN civilite varchar(6) after entity;
ALTER TABLE llx_deplacement ADD COLUMN fk_projet integer DEFAULT 0 after fk_soc; ALTER TABLE llx_deplacement ADD COLUMN fk_projet integer DEFAULT 0 after fk_soc;
-- custom list -- Custom list
DROP TABLE llx_c_field_list; DROP TABLE llx_c_field_list;
create table llx_c_field_list create table llx_c_field_list
( (
@@ -150,7 +194,7 @@ create table llx_c_field_list
rang integer DEFAULT 0 rang integer DEFAULT 0
)type=innodb; )type=innodb;
INSERT INTO `llx_c_field_list` (`rowid`, `element`, `entity`, `name`, `alias`, `title`, `align`, `sort`, `search`, `enabled`, `rang`) VALUES INSERT INTO llx_c_field_list (rowid, element, entity, name, alias, title, align, sort, search, enabled, rang) VALUES
(1, 'product_default', 1, 'p.ref', 'ref', 'Ref', 'left', 1, 1, '1', 1), (1, 'product_default', 1, 'p.ref', 'ref', 'Ref', 'left', 1, 1, '1', 1),
(2, 'product_default', 1, 'p.label', 'label', 'Label', 'left', 1, 1, '1', 2), (2, 'product_default', 1, 'p.label', 'label', 'Label', 'left', 1, 1, '1', 2),
(3, 'product_default', 1, 'p.barcode', 'barcode', 'BarCode', 'center', 1, 1, '$conf->barcode->enabled', 3), (3, 'product_default', 1, 'p.barcode', 'barcode', 'BarCode', 'center', 1, 1, '$conf->barcode->enabled', 3),
@@ -161,39 +205,12 @@ INSERT INTO `llx_c_field_list` (`rowid`, `element`, `entity`, `name`, `alias`, `
(8, 'product_default', 1, 'p.envente', 'status', 'Status', 'right', 1, 0, '1', 8); (8, 'product_default', 1, 'p.envente', 'status', 'Status', 'right', 1, 0, '1', 8);
UPDATE llx_adherent SET pays = null where pays <= 0 and pays != '0'; UPDATE llx_adherent SET pays = null where pays <= '0' and pays != '0';
ALTER table llx_adherent MODIFY pays integer; ALTER table llx_adherent MODIFY pays integer;
-- add milestone module -- Drop old tables
DROP TABLE llx_projet_milestone; DROP TABLE llx_projet_milestone;
create table llx_milestone ALTER TABLE llx_projet drop column fk_milestone;
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
label varchar(255) NOT NULL,
description text,
datec datetime,
tms timestamp,
dateo datetime,
datee datetime,
priority integer DEFAULT 0,
fk_user_creat integer,
rang integer DEFAULT 0
)type=innodb;
ALTER TABLE llx_milestone ADD INDEX idx_milestone_fk_user_creat (fk_user_creat);
ALTER TABLE llx_milestone ADD CONSTRAINT fk_milestone_fk_user_creat FOREIGN KEY (fk_user_creat) REFERENCES llx_user (rowid);
create table llx_element_milestone
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_element integer NOT NULL,
elementtype varchar(16) NOT NULL,
fk_milestone integer NOT NULL
) type=innodb;
ALTER TABLE llx_element_milestone ADD UNIQUE INDEX idx_element_milestone_idx1 (fk_element, elementtype, fk_milestone);
ALTER TABLE llx_element_milestone ADD INDEX idx_element_milestone_fk_milestone (fk_milestone);
ALTER TABLE llx_element_milestone ADD CONSTRAINT fk_element_milestone_fk_milestone FOREIGN KEY (fk_milestone) REFERENCES llx_milestone(rowid);
ALTER TABLE llx_deplacement ADD COLUMN fk_statut INTEGER DEFAULT 1 NOT NULL after type; ALTER TABLE llx_deplacement ADD COLUMN fk_statut INTEGER DEFAULT 1 NOT NULL after type;
@@ -213,3 +230,105 @@ ALTER TABLE llx_categorie_member ADD INDEX idx_categorie_member_fk_member (fk_me
ALTER TABLE llx_categorie_member ADD CONSTRAINT fk_categorie_member_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); ALTER TABLE llx_categorie_member ADD CONSTRAINT fk_categorie_member_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid);
ALTER TABLE llx_categorie_member ADD CONSTRAINT fk_categorie_member_member_rowid FOREIGN KEY (fk_member) REFERENCES llx_adherent (rowid); ALTER TABLE llx_categorie_member ADD CONSTRAINT fk_categorie_member_member_rowid FOREIGN KEY (fk_member) REFERENCES llx_adherent (rowid);
ALTER TABLE llx_product ADD COLUMN canvas varchar(32) DEFAULT 'default@product';
ALTER TABLE llx_product MODIFY COLUMN canvas varchar(32) DEFAULT 'default@product';
UPDATE llx_product SET canvas = 'default@product' WHERE fk_product_type = 0 AND (canvas = '' OR canvas = 'default');
UPDATE llx_product SET canvas = 'service@product' WHERE fk_product_type = 1 AND (canvas = '' OR canvas = 'service');
UPDATE llx_product SET canvas = 'livre@droitpret' WHERE canvas = 'livre';
UPDATE llx_product SET canvas = 'livrecontrat@droitpret' WHERE canvas = 'livrecontrat';
UPDATE llx_product SET canvas = 'livrecouverture@droitpret' WHERE canvas = 'livrecouverture';
ALTER TABLE llx_menu DROP INDEX idx_menu_uk_menu;
ALTER TABLE llx_menu ADD UNIQUE INDEX idx_menu_uk_menu (menu_handler, fk_menu, position, url, entity);
UPDATE llx_const SET name = 'MAIN_MODULE_PRODUCT' WHERE name = 'MAIN_MODULE_PRODUIT';
UPDATE llx_expedition set ref_customer = NULL where ref_customer = '';
-- Add more predefined action codes --
insert into llx_c_actioncomm (id, code, type, libelle, module) values (30, 'AC_SUP_ORD', 'system', 'Send supplier invoice by email' ,'supplier_order');
insert into llx_c_actioncomm (id, code, type, libelle, module) values (31, 'AC_SUP_INV', 'system', 'Send supplier invoice by email' ,'supplier_invoice');
-- Rename llx_societe_adresse_livraison
ALTER TABLE llx_societe_adresse_livraison RENAME TO llx_societe_address;
ALTER TABLE llx_societe_address CHANGE nom name varchar(60);
ALTER TABLE llx_societe_address CHANGE fk_societe fk_soc integer DEFAULT 0;
-- Add new spanish VAT from July 2010
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 45, 4, '18','0','4','VAT standard rate from July 2010',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,note,active) values ( 46, 4, '8','0','1','VAT reduced rate from July 2010',1);
-- Add Argentina Data
insert into llx_c_pays (rowid,code,libelle) values (23, 'AR', 'Argentine' );
-- Regions Argentina (id pays=23)
INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (2301, 23, 2301, '', 0, 'Norte', 1);
INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (2302, 23, 2302, '', 0, 'Litoral', 1);
INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (2303, 23, 2303, '', 0, 'Cuyana', 1);
INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (2304, 23, 2304, '', 0, 'Central', 1);
INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (2305, 23, 2305, '', 0, 'Patagonia', 1);
-- Provinces Argentina
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2301', 2301, '', 01, 'CATAMARCA', 'Catamarca', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2302', 2301, '', 02, 'YUJUY', 'Yujuy', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2303', 2301, '', 03, 'TUCAMAN', 'Tucamán', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2304', 2301, '', 04, 'SANTIAGO DEL ESTERO', 'Santiago del Estero', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2305', 2301, '', 05, 'SALTA', 'Salta', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2306', 2302, '', 06, 'CHACO', 'Chaco', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2307', 2302, '', 07, 'CORRIENTES', 'Corrientes', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2308', 2302, '', 08, 'ENTRE RIOS', 'Entre Ríos', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2309', 2302, '', 09, 'FORMOSA MISIONES', 'Formosa Misiones', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2310', 2302, '', 10, 'SANTA FE', 'Santa Fe', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2311', 2303, '', 11, 'LA RIOJA', 'La Rioja', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2312', 2303, '', 12, 'MENDOZA', 'Mendoza', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2313', 2303, '', 13, 'SAN JUAN', 'San Juan', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2314', 2303, '', 14, 'SAN LUIS', 'San Luis', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2315', 2304, '', 15, 'CORDOBA', 'Córdoba', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2316', 2304, '', 16, 'BUENOS AIRES', 'Buenos Aires', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2317', 2304, '', 17, 'CABA', 'Caba', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2318', 2305, '', 18, 'LA PAMPA', 'La Pampa', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2319', 2305, '', 19, 'NEUQUEN', 'Neuquén', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2320', 2305, '', 20, 'RIO NEGRO', 'Río Negro', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2321', 2305, '', 21, 'CHUBUT', 'Chubut', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2322', 2305, '', 22, 'SANTA CRUZ', 'Santa Cruz', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2323', 2305, '', 23, 'TIERRA DEL FUEGO', 'Tierra del Fuego', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2324', 2305, '', 24, 'ISLAS MALVINAS', 'Islas Malvinas', 1);
INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('2325', 2305, '', 25, 'ANTARTIDA', 'Antártida', 1);
-- Juridical status Argentina
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2301', 'Monotributista', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2302', 'Sociedad Civil', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2303', 'Sociedades Comerciales', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2304', 'Sociedades de Hecho', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2305', 'Sociedades Irregulares', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2306', 'Sociedad Colectiva', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2307', 'Sociedad en Comandita Simple', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2308', 'Sociedad de Capital e Industria', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2309', 'Sociedad Accidental o en participación', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2310', 'Sociedad de Responsabilidad Limitada', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2311', 'Sociedad Anónima', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2312', 'Sociedad Anónima con Participación Estatal Mayoritaria', 1);
INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (23, '2313', 'Sociedad en Comandita por Acciones (arts. 315 a 324, LSC)', 1);
DELETE from llx_const where name='USER_PASSWORD_GENERATED' and value='default';
ALTER TABLE llx_boxes_def DROP INDEX uk_boxes_def;
ALTER TABLE llx_boxes_def MODIFY file varchar(200) NOT NULL;
ALTER TABLE llx_boxes_def MODIFY note varchar(130);
ALTER TABLE llx_boxes_def ADD UNIQUE INDEX uk_boxes_def (file, entity, note);
-- Fix bad old data
UPDATE llx_bank_url SET type='payment' WHERE type='?' AND label='(payment)' AND url LIKE '%compta/paiement/fiche.php%';
update llx_const set value ='eldy' where name = 'MAIN_THEME' and (value= 'rodolphe' or value='dev' or value='bluelagoon');
update llx_user_param set value ='eldy' where param = 'MAIN_THEME' and (value= 'rodolphe' or value='dev' or value='bluelagoon');
ALTER TABLE llx_tmp_caisse MODIFY fk_article integer NOT NULL;

View File

@@ -20,4 +20,7 @@
-- =========================================================================== -- ===========================================================================
ALTER TABLE llx_boxes_def ADD UNIQUE INDEX uk_boxes_def (file, entity); -- We need to include note to allow several entries for external rss module
ALTER TABLE llx_boxes_def ADD UNIQUE INDEX uk_boxes_def (file, entity, note);

View File

@@ -22,16 +22,8 @@
create table llx_boxes_def create table llx_boxes_def
( (
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
file varchar(255) NOT NULL, file varchar(200) NOT NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
tms timestamp, tms timestamp,
note text note varchar(130)
)type=innodb; )type=innodb;
--
-- List of codes for the field entity
--
-- 1 : first company boxes
-- 2 : second company boxes
-- 3 : etc...
--

View File

@@ -27,7 +27,7 @@
include_once("./inc.php"); include_once("./inc.php");
if (! file_exists($conffile)) if (! file_exists($conffile))
{ {
print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/install.php" instead of "/install/upgrade.php").'; print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/index.php" instead of "/install/upgrade.php").';
} }
require_once($conffile); if (! isset($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility require_once($conffile); if (! isset($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility
require_once($dolibarr_main_document_root."/lib/databases/".$dolibarr_main_db_type.".lib.php"); require_once($dolibarr_main_document_root."/lib/databases/".$dolibarr_main_db_type.".lib.php");
@@ -67,7 +67,7 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
* View * View
*/ */
pHeader('',"upgrade2",$_REQUEST['action'],'versionfrom='.$versionfrom.'&versionto='.$versionto); pHeader('',"upgrade2",isset($_REQUEST['action'])?$_REQUEST['action']:'','versionfrom='.$versionfrom.'&versionto='.$versionto);
$actiondone=0; $actiondone=0;
@@ -80,7 +80,7 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
if (! $versionfrom && ! $versionto) if (! $versionfrom && ! $versionto)
{ {
print '<div class="error">Parameter versionfrom or version to missing.</div>'; print '<div class="error">Parameter versionfrom or version to missing. Upgrade is launched from page install/index.php (like a first install) instead of install/upgrade.php</div>';
exit; exit;
} }
@@ -112,13 +112,13 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
if ($db->connected == 1) if ($db->connected == 1)
{ {
print '<tr><td nowrap="nowrap">'; print '<tr><td nowrap="nowrap">';
print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td align=\"right\">".$langs->trans("OK")."</td></tr>"; print $langs->trans("ServerConnection")." : $dolibarr_main_db_host</td><td align=\"right\">".$langs->trans("OK")."</td></tr>\n";
dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ServerConnection")." : $dolibarr_main_db_host ".$langs->transnoentities("OK")); dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ServerConnection")." : $dolibarr_main_db_host ".$langs->transnoentities("OK"));
$ok = 1; $ok = 1;
} }
else else
{ {
print "<tr><td>".$langs->trans("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)."</td><td align=\"right\">".$langs->transnoentities("Error")."</td></tr>"; print "<tr><td>".$langs->trans("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)."</td><td align=\"right\">".$langs->transnoentities("Error")."</td></tr>\n";
dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)); dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name));
$ok = 0; $ok = 0;
} }
@@ -128,13 +128,13 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
if($db->database_selected == 1) if($db->database_selected == 1)
{ {
print '<tr><td nowrap="nowrap">'; print '<tr><td nowrap="nowrap">';
print $langs->trans("DatabaseConnection")." : ".$dolibarr_main_db_name."</td><td align=\"right\">".$langs->trans("OK")."</td></tr>"; print $langs->trans("DatabaseConnection")." : ".$dolibarr_main_db_name."</td><td align=\"right\">".$langs->trans("OK")."</td></tr>\n";
dolibarr_install_syslog("upgrade: Database connection successfull : $dolibarr_main_db_name"); dolibarr_install_syslog("upgrade: Database connection successfull : $dolibarr_main_db_name");
$ok=1; $ok=1;
} }
else else
{ {
print "<tr><td>".$langs->trans("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)."</td><td align=\"right\">".$langs->trans("Error")."</td></tr>"; print "<tr><td>".$langs->trans("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)."</td><td align=\"right\">".$langs->trans("Error")."</td></tr>\n";
dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name)); dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorFailedToConnectToDatabase",$dolibarr_main_db_name));
$ok=0; $ok=0;
} }
@@ -224,9 +224,9 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
} }
/* /*
* Remove deprecated indexes and constraints * Remove deprecated indexes and constraints for Mysql
*/ */
if ($ok) if ($ok && preg_match('/mysql/',$db->type))
{ {
$versioncommande=explode('.','4.0'); $versioncommande=explode('.','4.0');
if (sizeof($versioncommande) && sizeof($versionarray) if (sizeof($versioncommande) && sizeof($versionarray)
@@ -279,9 +279,7 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
*/ */
if ($ok) if ($ok)
{ {
if ($choix==1) $dir = "mysql/migration/"; $dir = "mysql/migration/"; // We use mysql migration scripts whatever is database driver
elseif ($choix==2) $dir = "pgsql/migration/";
else $dir = "mssql/migration/";
$filelist=array(); $filelist=array();
$i = 0; $i = 0;
@@ -292,11 +290,18 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
# Recupere list fichier # Recupere list fichier
$filesindir=array(); $filesindir=array();
$handle=opendir($dir); $handle=opendir($dir);
while (($file = readdir($handle))!==false) if ($handle)
{ {
if (preg_match('/\.sql$/i',$file)) $filesindir[]=$file; while (($file = readdir($handle))!==false)
{
if (preg_match('/\.sql$/i',$file)) $filesindir[]=$file;
}
sort($filesindir);
}
else
{
print '<div class="error">'.$langs->trans("ErrorCanNotReadDir",$dir).'</div>';
} }
sort($filesindir);
# Define which file to run # Define which file to run
foreach($filesindir as $file) foreach($filesindir as $file)
@@ -315,12 +320,12 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
foreach($filelist as $file) foreach($filelist as $file)
{ {
print '<tr><td nowrap>'; print '<tr><td nowrap>';
print $langs->trans("ChoosedMigrateScript").'</td><td align="right">'.$file.'</td></tr>'; print $langs->trans("ChoosedMigrateScript").'</td><td align="right">'.$file.'</td></tr>'."\n";
$name = substr($file, 0, strlen($file) - 4); $name = substr($file, 0, strlen($file) - 4);
// Run sql script // Run sql script
$ok=run_sql($dir.$file, 0); $ok=run_sql($dir.$file, 0, '', 1);
} }
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> /* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* *
@@ -28,17 +28,17 @@
include_once('./inc.php'); include_once('./inc.php');
if (! file_exists($conffile)) if (! file_exists($conffile))
{ {
print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/install.php" instead of "/install/upgrade.php").'; print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/index.php" instead of "/install/upgrade.php").';
} }
require_once($conffile); if (! isset($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility require_once($conffile); if (! isset($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility
require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php"); require_once($dolibarr_main_document_root . "/lib/databases/".$dolibarr_main_db_type.".lib.php");
require_once($dolibarr_main_document_root . '/compta/facture/facture.class.php'); require_once($dolibarr_main_document_root . '/compta/facture/class/facture.class.php');
require_once($dolibarr_main_document_root . '/comm/propal/propal.class.php'); require_once($dolibarr_main_document_root . '/comm/propal/class/propal.class.php');
require_once($dolibarr_main_document_root . '/contrat/contrat.class.php'); require_once($dolibarr_main_document_root . '/contrat/class/contrat.class.php');
require_once($dolibarr_main_document_root . '/commande/commande.class.php'); require_once($dolibarr_main_document_root . '/commande/class/commande.class.php');
require_once($dolibarr_main_document_root . '/fourn/fournisseur.commande.class.php'); require_once($dolibarr_main_document_root . '/fourn/class/fournisseur.commande.class.php');
require_once($dolibarr_main_document_root . '/lib/price.lib.php'); require_once($dolibarr_main_document_root . '/lib/price.lib.php');
require_once($dolibarr_main_document_root . '/core/menubase.class.php'); require_once($dolibarr_main_document_root . '/core/class/menubase.class.php');
$grant_query=''; $grant_query='';
$etape = 2; $etape = 2;
@@ -214,8 +214,6 @@ if (isset($_POST['action']) && preg_match('/upgrade/i',$_POST["action"]))
migrate_links_transfert($db,$langs,$conf); migrate_links_transfert($db,$langs,$conf);
migrate_delete_old_files($db,$langs,$conf);
// Script pour V2.2 -> V2.4 // Script pour V2.2 -> V2.4
migrate_commande_expedition($db,$langs,$conf); migrate_commande_expedition($db,$langs,$conf);
@@ -224,8 +222,6 @@ if (isset($_POST['action']) && preg_match('/upgrade/i',$_POST["action"]))
migrate_detail_livraison($db,$langs,$conf); migrate_detail_livraison($db,$langs,$conf);
migrate_module_menus($db,$langs,$conf);
// Script pour V2.5 -> V2.6 // Script pour V2.5 -> V2.6
migrate_stocks($db,$langs,$conf); migrate_stocks($db,$langs,$conf);
@@ -280,14 +276,21 @@ if (isset($_POST['action']) && preg_match('/upgrade/i',$_POST["action"]))
migrate_shipping_delivery($db,$langs,$conf); migrate_shipping_delivery($db,$langs,$conf);
migrate_shipping_delivery2($db,$langs,$conf); migrate_shipping_delivery2($db,$langs,$conf);
migrate_module_menus($db,$langs,$conf);
} }
migrate_reload_modules($db,$langs,$conf);
migrate_reload_menu($db,$langs,$conf);
// On commit dans tous les cas. // On commit dans tous les cas.
// La procedure etant concue pour pouvoir passer plusieurs fois quelquesoit la situation. // La procedure etant concue pour pouvoir passer plusieurs fois quelquesoit la situation.
$db->commit(); $db->commit();
$db->close(); $db->close();
// Actions for all version (not in database)
migrate_delete_old_files($db,$langs,$conf);
migrate_delete_old_dir($db,$langs,$conf);
} }
print '</table>'; print '</table>';
@@ -1708,100 +1711,6 @@ function migrate_modeles($db,$langs,$conf)
//print $langs->trans("AlreadyDone"); //print $langs->trans("AlreadyDone");
} }
/*
* Supprime fichiers obsoletes
*/
function migrate_delete_old_files($db,$langs,$conf)
{
$result=true;
dolibarr_install_syslog("upgrade2::migrate_delete_old_files");
// List of files to delete
$filetodeletearray=array(
DOL_DOCUMENT_ROOT.'/includes/triggers/interface_demo.class.php',
DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/default.php',
DOL_DOCUMENT_ROOT.'/includes/menus/barre_top/default.php',
DOL_DOCUMENT_ROOT.'/includes/modules/modComptabiliteExpert.class.php'
);
foreach ($filetodeletearray as $filetodelete)
{
//print '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_file($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
return $result;
}
/*
* Disable/Reenable features modules.
* We must do this when internal menu of module or permissions has changed
*/
function migrate_module_menus($db,$langs,$conf)
{
dolibarr_install_syslog("upgrade2::migrate_module_menus");
if (! empty($conf->global->MAIN_MODULE_AGENDA))
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Agenda");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modAgenda.class.php');
$mod=new modAgenda($db);
$mod->remove('noboxes');
$mod->init('noboxes');
}
if (! empty($conf->global->MAIN_MODULE_PHENIX))
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Phenix");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modPhenix.class.php');
$mod=new modPhenix($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_WEBCALENDAR))
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Webcalendar");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modWebcalendar.class.php');
$mod=new modWebcalendar($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_MANTIS))
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Mantis");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modMantis.class.php');
$mod=new modMantis($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_SOCIETE))
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Societe");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modSociete.class.php');
$mod=new modSociete($db);
$mod->remove('noboxes');
$mod->init('noboxes');
}
if (! empty($conf->global->MAIN_MODULE_PRODUIT)) // Permission has changed into 2.7
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Produit");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modProduit.class.php');
$mod=new modProduit($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
{
dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Service");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modService.class.php');
$mod=new modService($db);
$mod->init();
}
}
/* /*
* Correspondance des expeditions et des commandes clients dans la table llx_co_exp * Correspondance des expeditions et des commandes clients dans la table llx_co_exp
@@ -2227,6 +2136,7 @@ function migrate_menus($db,$langs,$conf)
/* /*
* Migration du champ fk_adresse_livraison dans expedition * Migration du champ fk_adresse_livraison dans expedition
* 2.6 -> 2.7
*/ */
function migrate_commande_deliveryaddress($db,$langs,$conf) function migrate_commande_deliveryaddress($db,$langs,$conf)
{ {
@@ -2760,9 +2670,14 @@ function migrate_project_task_time($db,$langs,$conf)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
if ($obj->task_duration > 0 && strlen($obj->task_duration) < 3) if ($obj->task_duration > 0)
{ {
$newtime = $obj->task_duration*60*60; // convert to second
// only for int time and float time ex: 1,75 for 1h45
list($hour,$min) = explode('.',$obj->task_duration);
$hour = $hour*60*60;
$min = ($min/100)*60*60;
$newtime = $hour+$min;
$sql2 = "UPDATE ".MAIN_DB_PREFIX."projet_task_time SET"; $sql2 = "UPDATE ".MAIN_DB_PREFIX."projet_task_time SET";
$sql2.= " task_duration = ".$newtime; $sql2.= " task_duration = ".$newtime;
@@ -2805,15 +2720,6 @@ function migrate_project_task_time($db,$langs,$conf)
dol_print_error($db); dol_print_error($db);
} }
} }
if ($error == 0)
{
$db->commit();
}
else
{
$db->rollback();
}
} }
else else
{ {
@@ -2823,7 +2729,6 @@ function migrate_project_task_time($db,$langs,$conf)
else else
{ {
dol_print_error($db); dol_print_error($db);
$db->rollback();
} }
} }
else else
@@ -2836,6 +2741,15 @@ function migrate_project_task_time($db,$langs,$conf)
dol_print_error($db); dol_print_error($db);
} }
if ($error == 0)
{
$db->commit();
}
else
{
$db->rollback();
}
print '</td></tr>'; print '</td></tr>';
} }
@@ -3042,7 +2956,8 @@ function migrate_shipping_delivery($db,$langs,$conf)
} }
/* /*
* Migrate shipping ref_customer and date_delivery fields to llx_livraison * We try to complete field ref_customer and date_delivery that are empty into llx_livraison.
* We set them with value from llx_expedition.
*/ */
function migrate_shipping_delivery2($db,$langs,$conf) function migrate_shipping_delivery2($db,$langs,$conf)
{ {
@@ -3064,9 +2979,10 @@ function migrate_shipping_delivery2($db,$langs,$conf)
$sqlSelect.= " WHERE l.rowid = el.fk_target"; $sqlSelect.= " WHERE l.rowid = el.fk_target";
$sqlSelect.= " AND el.targettype = 'delivery'"; $sqlSelect.= " AND el.targettype = 'delivery'";
$sqlSelect.= " AND e.rowid = el.fk_source AND el.sourcetype = 'shipping'"; $sqlSelect.= " AND e.rowid = el.fk_source AND el.sourcetype = 'shipping'";
$sqlSelect.= " AND (e.ref_customer IS NOT NULL OR e.date_delivery IS NOT NULL)"; // Useless to process this record if both are null
// Add condition to know if we never migrate this record // Add condition to know if we never migrate this record
$sqlSelect.= " AND (l.ref_customer IS NULL or l.ref_customer = '')"; $sqlSelect.= " AND (l.ref_customer IS NULL".($db->type!='pgsql'?" or l.ref_customer = ''":"").")";
$sqlSelect.= " AND (l.date_delivery IS NULL or l.date_delivery = '')"; $sqlSelect.= " AND (l.date_delivery IS NULL".($db->type!='pgsql'?" or l.date_delivery = ''":"").")";
$resql = $db->query($sqlSelect); $resql = $db->query($sqlSelect);
if ($resql) if ($resql)
@@ -3082,7 +2998,7 @@ function migrate_shipping_delivery2($db,$langs,$conf)
$sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."livraison SET"; $sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."livraison SET";
$sqlUpdate.= " ref_customer = '".$obj->ref_customer."',"; $sqlUpdate.= " ref_customer = '".$obj->ref_customer."',";
$sqlUpdate.= " date_delivery = '".($obj->date_delivery?$obj->date_delivery:'null')."'"; $sqlUpdate.= " date_delivery = ".($obj->date_delivery?"'".$obj->date_delivery."'":'null');
$sqlUpdate.= " WHERE rowid = ".$obj->delivery_id; $sqlUpdate.= " WHERE rowid = ".$obj->delivery_id;
$result=$db->query($sqlUpdate); $result=$db->query($sqlUpdate);
@@ -3120,7 +3036,7 @@ function migrate_shipping_delivery2($db,$langs,$conf)
} }
/* /**
* Migration directory * Migration directory
*/ */
function migrate_directories($db,$langs,$conf,$oldname,$newname) function migrate_directories($db,$langs,$conf,$oldname,$newname)
@@ -3135,6 +3051,210 @@ function migrate_directories($db,$langs,$conf,$oldname,$newname)
} }
/*
* Supprime fichiers obsoletes
*/
function migrate_delete_old_files($db,$langs,$conf)
{
$result=true;
dolibarr_install_syslog("upgrade2::migrate_delete_old_files");
// List of files to delete
$filetodeletearray=array(
DOL_DOCUMENT_ROOT.'/includes/triggers/interface_demo.class.php',
DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/default.php',
DOL_DOCUMENT_ROOT.'/includes/menus/barre_top/default.php',
DOL_DOCUMENT_ROOT.'/includes/modules/modComptabiliteExpert.class.php',
DOL_DOCUMENT_ROOT.'/includes/modules/modProduit.class.php',
DOL_DOCUMENT_ROOT.'/phenix/inc/triggers/interface_modPhenix_Phenixsynchro.class.php',
DOL_DOCUMENT_ROOT.'/webcalendar/inc/triggers/interface_modWebcalendar_webcalsynchro.class.php',
DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modCommande_Ecotax.class.php',
);
foreach ($filetodeletearray as $filetodelete)
{
//print '<b>'.$filetodelete."</b><br>\n";
$result=1;
if (file_exists($filetodelete))
{
$result=dol_delete_file($filetodelete);
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
else
{
//print $langs->trans("FileWasRemoved",$filetodelete);
}
}
}
return $result;
}
/*
* Remove deprecated directories
*/
function migrate_delete_old_dir($db,$langs,$conf)
{
$result=true;
dolibarr_install_syslog("upgrade2::migrate_delete_old_dir");
// List of files to delete
$filetodeletearray=array(
DOL_DOCUMENT_ROOT.'/includes/modules/facture/terre',
DOL_DOCUMENT_ROOT.'/includes/modules/facture/mercure'
);
foreach ($filetodeletearray as $filetodelete)
{
//print '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_dir_recursive($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteDir",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
return $result;
}
/*
* Disable/Reenable features modules.
* We must do this when internal menu of module or permissions has changed
* or when triggers have moved.
*/
function migrate_reload_modules($db,$langs,$conf)
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules");
if (! empty($conf->global->MAIN_MODULE_AGENDA))
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Agenda");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modAgenda.class.php');
$mod=new modAgenda($db);
$mod->remove('noboxes');
$mod->init('noboxes');
}
if (! empty($conf->global->MAIN_MODULE_PHENIX))
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Phenix");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modPhenix.class.php');
$mod=new modPhenix($db);
$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_WEBCALENDAR))
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Webcalendar");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modWebcalendar.class.php');
$mod=new modWebcalendar($db);
$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_MANTIS))
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Mantis");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modMantis.class.php');
$mod=new modMantis($db);
$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_SOCIETE))
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Societe");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modSociete.class.php');
$mod=new modSociete($db);
$mod->remove('noboxes');
$mod->init('noboxes');
}
if (! empty($conf->global->MAIN_MODULE_PRODUIT)) // Permission has changed into 2.7
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Produit");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modProduct.class.php');
$mod=new modProduct($db);
//$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modService.class.php');
$mod=new modService($db);
//$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modCommande.class.php');
$mod=new modCommande($db);
//$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFacture.class.php');
$mod=new modFacture($db);
//$mod->remove('noboxes');
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_FOURNISSEUR)) // Permission has changed into 2.9
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Fournisseur");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFournisseur.class.php');
$mod=new modFournisseur($db);
//$mod->remove('noboxes');
$mod->init();
}
}
/**
* Reload menu if dynamic menus
* @param $db
* @param $langs
* @param $conf
*/
function migrate_reload_menu($db,$langs,$conf)
{
global $conf;
dolibarr_install_syslog("upgrade2::migrate_reload_menu");
// Define list of menu handlers to initialize
$listofmenuhandler=array('auguria'); // We set here only dinamic menu handlers
foreach ($listofmenuhandler as $key)
{
print '<tr><td colspan="4">';
//print "x".$key;
print '<br>';
print '<b>'.$langs->trans('Upgrade').'</b>: '.$langs->trans('MenuHandler')." ".$key."<br>\n";
// Load sql ini_menu_handler.sql file
$dir = DOL_DOCUMENT_ROOT."/includes/menus/";
$file='init_menu_'.$key.'.sql';
if (file_exists($dir.$file))
{
$result=run_sql($dir.$file,1,'',1);
}
print '</td></tr>';
}
}
/* A faire egalement: Modif statut paye et fk_facture des factures payes completement /* A faire egalement: Modif statut paye et fk_facture des factures payes completement
On recherche facture incorrecte: On recherche facture incorrecte:

View File

@@ -23,7 +23,7 @@ HTMLCharset=ولدت لمحارف صفحات هتمل
DBStoringCharset=محارف قاعدة بيانات لتخزين البيانات DBStoringCharset=محارف قاعدة بيانات لتخزين البيانات
DBSortingCharset=قاعدة بيانات محارف لفرز البيانات DBSortingCharset=قاعدة بيانات محارف لفرز البيانات
WarningModuleNotActive=نميطة <b>٪ ق</b> يجب تمكين WarningModuleNotActive=نميطة <b>٪ ق</b> يجب تمكين
WarningOnlyPermissionOfActivatedModules=فقط الأذونات المتعلقة بتنشيط وحدات تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية&gt; الإعداد -&gt; نمائط الصفحة. WarningOnlyPermissionOfActivatedModules=فقط الأذونات المتعلقة بتنشيط وحدات تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية&gt; الإعداد -> نمائط الصفحة.
DolibarrSetup=Dolibarr الإعداد DolibarrSetup=Dolibarr الإعداد
DolibarrUser=Dolibarr المستخدم DolibarrUser=Dolibarr المستخدم
InternalUser=المستخدم الداخلي InternalUser=المستخدم الداخلي
@@ -155,7 +155,7 @@ No=لا
AutoDetectLang=اكتشاف (اللغة المتصفح) AutoDetectLang=اكتشاف (اللغة المتصفح)
FeatureDisabledInDemo=سمة المعوقين في عرض FeatureDisabledInDemo=سمة المعوقين في عرض
Rights=أذونات Rights=أذونات
BoxesDesc=صناديق منطقة الشاشة التي تظهر قطعة من المعلومات عن بعض الصفحات. يمكنك الاختيار بين عرض المربع أو عن طريق اختيار ليست هدفا في الصفحة والنقر على &#39;تفعيل&#39; ، أو عن طريق النقر فوق مزبلة لتعطيله. BoxesDesc=صناديق منطقة الشاشة التي تظهر قطعة من المعلومات عن بعض الصفحات. يمكنك الاختيار بين عرض المربع أو عن طريق اختيار ليست هدفا في الصفحة والنقر على 'تفعيل' ، أو عن طريق النقر فوق مزبلة لتعطيله.
OnlyActiveElementsAreShown=Only elements from <a href=إلا عناصر من <a href="modules.php">وحدات مكن</a> ترد. OnlyActiveElementsAreShown=Only elements from <a href=إلا عناصر من <a href="modules.php">وحدات مكن</a> ترد.
ModulesDesc=Dolibarr تحديد الوحدات التي تم تمكين وظيفة في مجال البرمجيات. وتتطلب بعض وحدات الأذونات ، يجب ان تمنح للمستخدمين ، وبعد أن تمكن وحدة. ModulesDesc=Dolibarr تحديد الوحدات التي تم تمكين وظيفة في مجال البرمجيات. وتتطلب بعض وحدات الأذونات ، يجب ان تمنح للمستخدمين ، وبعد أن تمكن وحدة.
ModulesInterfaceDesc=فإن التفاعل بين وحدات Dolibarr يسمح لك بإضافة السمات الخارجية تعتمد على البرمجيات والنظم والخدمات. ModulesInterfaceDesc=فإن التفاعل بين وحدات Dolibarr يسمح لك بإضافة السمات الخارجية تعتمد على البرمجيات والنظم والخدمات.
@@ -223,7 +223,7 @@ MenuAdmin=قائمة تحرير
ThisIsProcessToFollow=هذا هو الإعداد لهذه العملية : ThisIsProcessToFollow=هذا هو الإعداد لهذه العملية :
StepNb=الخطوة ق ٪ StepNb=الخطوة ق ٪
DownloadPackageFromWebSite=التحميل من الموقع حزمة ٪ s. DownloadPackageFromWebSite=التحميل من الموقع حزمة ٪ s.
UnpackPackageInDolibarrRoot=تفريغ الملف إلى مجموعة Dolibarr &#39;sجذور دليل <b>٪ ق</b> UnpackPackageInDolibarrRoot=تفريغ الملف إلى مجموعة Dolibarr 'sجذور دليل <b>٪ ق</b>
SetupIsReadyForUse=الانتهاء من تركيب وDolibarr على استعداد لاستخدام هذا العنصر الجديد. SetupIsReadyForUse=الانتهاء من تركيب وDolibarr على استعداد لاستخدام هذا العنصر الجديد.
CurrentVersion=Dolibarr النسخة الحالية CurrentVersion=Dolibarr النسخة الحالية
CallUpdatePage=الذهاب إلى صفحة التحديثات وdatas هيكل قاعدة البيانات : ٪ s. CallUpdatePage=الذهاب إلى صفحة التحديثات وdatas هيكل قاعدة البيانات : ٪ s.
@@ -245,12 +245,12 @@ UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس
UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur. UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur.
SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة
UseACacheDelay=التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ) UseACacheDelay=التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
DisableLinkToHelpCenter=الاختباء وصلة <b>&quot;هل تحتاج إلى مساعدة أو دعم&quot;</b> على صفحة تسجيل الدخول DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
DisableLinkToHelp=إخفاء ارتباط <b>&quot;ق ٪ أخبار يساعد&quot;</b> على القائمة اليمنى DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى
ModuleDisabled=نميطة المعوقين ModuleDisabled=نميطة المعوقين
ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا
ConfirmPurge=هل أنت متأكد من ذلك لتنفيذ تطهير؟ <br> وهذا من شأنه بالتأكيد حذف جميع بيانات ملفك بأي حال من الأحوال لترميمها (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...). ConfirmPurge=هل أنت متأكد من ذلك لتنفيذ تطهير؟ <br> وهذا من شأنه بالتأكيد حذف جميع بيانات ملفك بأي حال من الأحوال لترميمها (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...).
Module0Name=&amp; مجموعات المستخدمين Module0Name=& مجموعات المستخدمين
Module0Desc=إدارة المستخدمين والمجموعات Module0Desc=إدارة المستخدمين والمجموعات
Module1Name=أطراف ثالثة Module1Name=أطراف ثالثة
Module1Desc=شركات الاتصالات وإدارة Module1Desc=شركات الاتصالات وإدارة
@@ -394,7 +394,7 @@ Permission94=تصدير المساهمات الاجتماعية
Permission95=قراءة تقارير Permission95=قراءة تقارير
Permission96=ارسال الإعداد Permission96=ارسال الإعداد
Permission97=قراءة ارسال الفواتير والمحاسبة Permission97=قراءة ارسال الفواتير والمحاسبة
Permission98=ارسال الفاتورة &#39;sخطوط المحاسبة Permission98=ارسال الفاتورة 'sخطوط المحاسبة
Permission101=قراءة الإرسال Permission101=قراءة الإرسال
Permission102=إنشاء / تعديل الإرسال Permission102=إنشاء / تعديل الإرسال
Permission104=صحة الإرسال Permission104=صحة الإرسال
@@ -514,7 +514,6 @@ Permission1185=الموافقة على أوامر المورد
Permission1186=من أجل المورد أوامر Permission1186=من أجل المورد أوامر
Permission1187=باستلام المورد أوامر Permission1187=باستلام المورد أوامر
Permission1188=وثيقة أوامر المورد Permission1188=وثيقة أوامر المورد
Permission1189=المورد إلغاء أوامر
Permission1201=ونتيجة للحصول على التصدير Permission1201=ونتيجة للحصول على التصدير
Permission1202=إنشاء / تعديل للتصدير Permission1202=إنشاء / تعديل للتصدير
Permission1231=قراءة فواتير الموردين Permission1231=قراءة فواتير الموردين
@@ -557,7 +556,7 @@ VATReceivedOnly=سعر خاص لا تحمل
VATManagement=إدارة الضريبة على القيمة المضافة VATManagement=إدارة الضريبة على القيمة المضافة
VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où. VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où.
VATIsUsedExampleFR=في فرنسا ، فإن ذلك يعني وجود منظمات أو شركات حقيقية في النظام المالي (المبسطة حقيقية أو طبيعية حقيقية). نظام ضريبة القيمة المضافة هي التي أعلنت. VATIsUsedExampleFR=في فرنسا ، فإن ذلك يعني وجود منظمات أو شركات حقيقية في النظام المالي (المبسطة حقيقية أو طبيعية حقيقية). نظام ضريبة القيمة المضافة هي التي أعلنت.
VATIsNotUsedExampleFR=في فرنسا ، فإن ذلك يعني أن الجمعيات غير المعلنة ضريبة القيمة المضافة أو شركات أو مؤسسات المهن الحرة التي اختارت المشاريع الصغيرة النظام الضريبي (ضريبة القيمة المضافة في الانتخاب) ، ودفع ضريبة القيمة المضافة في الانتخاب دون أي إعلان من ضريبة القيمة المضافة. هذا الخيار سيتم عرض المرجعي &quot;غير الضريبة على القيمة المضافة المطبقة -- الفن - 293B من المجموعة الاستشارية لاندونيسيا&quot; على الفواتير. VATIsNotUsedExampleFR=في فرنسا ، فإن ذلك يعني أن الجمعيات غير المعلنة ضريبة القيمة المضافة أو شركات أو مؤسسات المهن الحرة التي اختارت المشاريع الصغيرة النظام الضريبي (ضريبة القيمة المضافة في الانتخاب) ، ودفع ضريبة القيمة المضافة في الانتخاب دون أي إعلان من ضريبة القيمة المضافة. هذا الخيار سيتم عرض المرجعي "غير الضريبة على القيمة المضافة المطبقة -- الفن - 293B من المجموعة الاستشارية لاندونيسيا" على الفواتير.
LabelUsedByDefault=العلامة التي يستخدمها التقصير إذا لم يمكن العثور على ترجمة للقانون LabelUsedByDefault=العلامة التي يستخدمها التقصير إذا لم يمكن العثور على ترجمة للقانون
LabelOnDocuments=علامة على وثائق LabelOnDocuments=علامة على وثائق
NbOfDays=ملاحظة : من الأيام NbOfDays=ملاحظة : من الأيام
@@ -568,7 +567,7 @@ UpdateRequired=Your system needs to be updated. To do this, click on <a href=ا
Upgrade=ترقية Upgrade=ترقية
AddExtensionThemeModuleOrOther=إضافة التمديد) الموضوع ، وحدة ،...) AddExtensionThemeModuleOrOther=إضافة التمديد) الموضوع ، وحدة ،...)
WebServer=خادم الويب WebServer=خادم الويب
DocumentRootServer=خادم الويب &#39;sالدليل الرئيسي DocumentRootServer=خادم الويب 'sالدليل الرئيسي
DataRootServer=دليل ملفات البيانات DataRootServer=دليل ملفات البيانات
IP=الملكية الفكرية IP=الملكية الفكرية
Port=الميناء Port=الميناء
@@ -629,8 +628,8 @@ DoNotSuggestPaymentMode=لا توحي
NoActiveBankAccountDefined=لا يعرف في حساب مصرفي نشط NoActiveBankAccountDefined=لا يعرف في حساب مصرفي نشط
OwnerOfBankAccount=صاحب الحساب المصرفي ق ٪ OwnerOfBankAccount=صاحب الحساب المصرفي ق ٪
BankModuleNotActive=الحسابات المصرفية وحدة لا يمكن BankModuleNotActive=الحسابات المصرفية وحدة لا يمكن
ShowBugTrackLink=وتظهر وصلة &quot;تقرير خلل&quot; ShowBugTrackLink=وتظهر وصلة "تقرير خلل"
ShowWorkBoard=وتظهر &quot;طاولة العمل&quot; على الصفحة الرئيسية ShowWorkBoard=وتظهر "طاولة العمل" على الصفحة الرئيسية
Alerts=تنبيهات Alerts=تنبيهات
Delays=التأخير Delays=التأخير
DelayBeforeWarning=قبل التحذير من التأخير DelayBeforeWarning=قبل التحذير من التأخير
@@ -649,8 +648,8 @@ DelaysOfToleranceTransactionsToConciliate=تأخير التسامح (في يوم
DelaysOfToleranceChequesToDeposit=تأخير التسامح (في يوم) في حالة تأهب قبل لإيداع الشيكات للقيام DelaysOfToleranceChequesToDeposit=تأخير التسامح (في يوم) في حالة تأهب قبل لإيداع الشيكات للقيام
SetupDescription1=جميع البارامترات المتاحة في مجال الإعداد تسمح لك قبل البدء في الإعداد Dolibarr استخدامه. SetupDescription1=جميع البارامترات المتاحة في مجال الإعداد تسمح لك قبل البدء في الإعداد Dolibarr استخدامه.
SetupDescription2=2 إن أهم الخطوات هي الإعداد 2 أول من غادر في إعداد القائمة ، وهذا يعني الشركة / المؤسسة صفحة إعداد صفحة إعداد وحدات : SetupDescription2=2 إن أهم الخطوات هي الإعداد 2 أول من غادر في إعداد القائمة ، وهذا يعني الشركة / المؤسسة صفحة إعداد صفحة إعداد وحدات :
SetupDescription3=البارامترات في <b>إعداد</b> القائمة <b>--&gt; الشركة / المؤسسة</b> المطلوب لأن مدخلات تستخدم المعلومات عن Dolibarr عرض وتعديل السلوك Dolibarr (على سبيل المثال لخصائص تتعلق بلدكم). SetupDescription3=البارامترات في <b>إعداد</b> القائمة <b>--> الشركة / المؤسسة</b> المطلوب لأن مدخلات تستخدم المعلومات عن Dolibarr عرض وتعديل السلوك Dolibarr (على سبيل المثال لخصائص تتعلق بلدكم).
SetupDescription4=البارامترات في <b>إعداد</b> القائمة <b>--&gt; الوحدات</b> المطلوبة لأن Dolibarr ليست ثابتة تخطيط موارد المؤسسات وإدارة علاقات العملاء ولكن مبلغ من عدة وحدات ، وكلها مستقلة بشكل أو بآخر. انه فقط بعد تفعيل وحدات للاهتمام كنت في ذلك سترى ملامح وردت في القوائم. SetupDescription4=البارامترات في <b>إعداد</b> القائمة <b>--> الوحدات</b> المطلوبة لأن Dolibarr ليست ثابتة تخطيط موارد المؤسسات وإدارة علاقات العملاء ولكن مبلغ من عدة وحدات ، وكلها مستقلة بشكل أو بآخر. انه فقط بعد تفعيل وحدات للاهتمام كنت في ذلك سترى ملامح وردت في القوائم.
EventsSetup=الإعداد للمناسبات الجذوع EventsSetup=الإعداد للمناسبات الجذوع
LogEvents=مراجعة الحسابات الأحداث الأمنية LogEvents=مراجعة الحسابات الأحداث الأمنية
Audit=المراجعة Audit=المراجعة
@@ -663,7 +662,7 @@ SystemAreaForAdminOnly=هذا المجال المتاح لمدير المستخ
CompanyFundationDesc=تعديل على هذه الصفحة كل المعلومات المعروفة للشركة أو مؤسسة تحتاج لإدارة CompanyFundationDesc=تعديل على هذه الصفحة كل المعلومات المعروفة للشركة أو مؤسسة تحتاج لإدارة
DisplayDesc=يمكنك ان تختار كل معلمة إلى Dolibarr هنا الشكل والمظهر DisplayDesc=يمكنك ان تختار كل معلمة إلى Dolibarr هنا الشكل والمظهر
AvailableModules=تتوفر وحدات AvailableModules=تتوفر وحدات
ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية&gt; الإعداد -&gt; الوحدات). ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية&gt; الإعداد -> الوحدات).
SessionTimeOut=للمرة الخمسين SessionTimeOut=للمرة الخمسين
SessionExplanation=تضمن هذا العدد أن الدورة لن ينتهي قبل هذا التأخير. PHP sessoin ولكن الإدارة لا الكفالة التي دائما تنتهي الدورة بعد هذا التأخير : ويحدث هذا إذا كان نظام لتنظيف مخبأ الدورة الجارية. <br> ملاحظة : مع أي نظام الداخلي PHP عملية تنظيف كل دورة حوالي <b>٪ ق / ق ٪</b> فقط ولكن وصول وصول أدلى به خلال دورات أخرى. SessionExplanation=تضمن هذا العدد أن الدورة لن ينتهي قبل هذا التأخير. PHP sessoin ولكن الإدارة لا الكفالة التي دائما تنتهي الدورة بعد هذا التأخير : ويحدث هذا إذا كان نظام لتنظيف مخبأ الدورة الجارية. <br> ملاحظة : مع أي نظام الداخلي PHP عملية تنظيف كل دورة حوالي <b>٪ ق / ق ٪</b> فقط ولكن وصول وصول أدلى به خلال دورات أخرى.
TriggersAvailable=محفزات متاحة TriggersAvailable=محفزات متاحة
@@ -675,7 +674,7 @@ TriggerActiveAsModuleActive=يطلق في هذا الملف كما ينشط حد
GeneratedPasswordDesc=هنا تعريف القاعدة التي تريد استخدامه لكلمة السر اذا كنت أسأل لصناعة السيارات ولدت كلمة السر GeneratedPasswordDesc=هنا تعريف القاعدة التي تريد استخدامه لكلمة السر اذا كنت أسأل لصناعة السيارات ولدت كلمة السر
DictionnaryDesc=تعرف هنا إشارة datas. يمكنك استكمال مسبقا مع قيمة لك. DictionnaryDesc=تعرف هنا إشارة datas. يمكنك استكمال مسبقا مع قيمة لك.
ConstDesc=تسمح لك هذه الصفحة لتحرير جميع البارامترات الأخرى غير المتوفرة في الصفحات السابقة. فهي محفوظة لمعايير متقدمة للمطورين أو troubleshouting. ConstDesc=تسمح لك هذه الصفحة لتحرير جميع البارامترات الأخرى غير المتوفرة في الصفحات السابقة. فهي محفوظة لمعايير متقدمة للمطورين أو troubleshouting.
OnceSetupFinishedCreateUsers=تحذير فأنت Dolibarr مدير المستخدم. مدير المستخدمين تستخدم لإعداد Dolibarr. لالمعتاد استخدام Dolibarr ، يوصى باستخدام غير مستخدم مدير خلق مجموعات من المستخدمين &amp; القائمة. OnceSetupFinishedCreateUsers=تحذير فأنت Dolibarr مدير المستخدم. مدير المستخدمين تستخدم لإعداد Dolibarr. لالمعتاد استخدام Dolibarr ، يوصى باستخدام غير مستخدم مدير خلق مجموعات من المستخدمين & القائمة.
MiscellanousDesc=هنا تعريف جميع البارامترات الأخرى ذات الصلة بالأمن. MiscellanousDesc=هنا تعريف جميع البارامترات الأخرى ذات الصلة بالأمن.
LimitsSetup=حدود / الدقيقة الإعداد LimitsSetup=حدود / الدقيقة الإعداد
LimitsDesc=يمكنك تحديد الحدود ، وoptimisations الايضاحات التي تستخدمها Dolibarr هنا LimitsDesc=يمكنك تحديد الحدود ، وoptimisations الايضاحات التي تستخدمها Dolibarr هنا
@@ -684,7 +683,7 @@ MAIN_MAX_DECIMALS_TOT=الحد الأقصى لمجموع أسعار عشرية
MAIN_MAX_DECIMALS_SHOWN=ماكس عشرية لأسعار تظهر على الشاشة (يضاف هذا العدد <b>بعد...</b> إذا كنت تريد أن <b>ترى...</b> عندما العدد مبتورة عندما تظهر على الشاشة) MAIN_MAX_DECIMALS_SHOWN=ماكس عشرية لأسعار تظهر على الشاشة (يضاف هذا العدد <b>بعد...</b> إذا كنت تريد أن <b>ترى...</b> عندما العدد مبتورة عندما تظهر على الشاشة)
MAIN_DISABLE_PDF_COMPRESSION=الاستخدام الشعبي للضغط الشعبي ولدت الملفات. MAIN_DISABLE_PDF_COMPRESSION=الاستخدام الشعبي للضغط الشعبي ولدت الملفات.
ParameterActiveForNextInputOnly=معلمة فعالة للمساهمة المقبل فقط ParameterActiveForNextInputOnly=معلمة فعالة للمساهمة المقبل فقط
NoEventOrNoAuditSetup=لا أمن الحدث وقد سجلت حتى الآن. هذا طبيعي ويمكن مراجعة الحسابات اذا لم يتم تمكين &quot;الإعداد -- الأمن -- مراجعة&quot; الصفحة. NoEventOrNoAuditSetup=لا أمن الحدث وقد سجلت حتى الآن. هذا طبيعي ويمكن مراجعة الحسابات اذا لم يتم تمكين "الإعداد -- الأمن -- مراجعة" الصفحة.
NoEventFoundWithCriteria=لا أمن حال تم العثور على مثل هذا البحث criterias. NoEventFoundWithCriteria=لا أمن حال تم العثور على مثل هذا البحث criterias.
SeeLocalSendMailSetup=انظر المحلية الإعداد sendmail SeeLocalSendMailSetup=انظر المحلية الإعداد sendmail
BackupDesc=لتقديم دعم كامل للDolibarr ، يجب عليك : BackupDesc=لتقديم دعم كامل للDolibarr ، يجب عليك :
@@ -703,13 +702,13 @@ GeneratePassword=وتشير ولدت كلمة السر
RuleForGeneratedPasswords=قاعدة لتوليد كلمات السر واقترح RuleForGeneratedPasswords=قاعدة لتوليد كلمات السر واقترح
DoNotSuggest=لا توحي بأي كلمة السر DoNotSuggest=لا توحي بأي كلمة السر
EncryptedPasswordInDatabase=السماح للتشفير كلمات السر في قاعدة البيانات EncryptedPasswordInDatabase=السماح للتشفير كلمات السر في قاعدة البيانات
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة &quot;نسيت كلمة المرور&quot; على صفحة تسجيل الدخول DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
CompanySetup=وحدة الإعداد للشركات CompanySetup=وحدة الإعداد للشركات
CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد) CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد)
AccountCodeManager=رمز وحدة لتوليد المحاسبة (عميل أو مورد) AccountCodeManager=رمز وحدة لتوليد المحاسبة (عميل أو مورد)
ModuleCompanyCodeAquarium=عودة محاسبة قانون بناها &quot;401&quot; التي تنتهجها لطرف ثالث مورد للمورد مدونة قواعد المحاسبة ، و &quot;411&quot; التي تنتهجها طرف ثالث رمز العميل عميل لقانون المحاسبة. ModuleCompanyCodeAquarium=عودة محاسبة قانون بناها "401" التي تنتهجها لطرف ثالث مورد للمورد مدونة قواعد المحاسبة ، و "411" التي تنتهجها طرف ثالث رمز العميل عميل لقانون المحاسبة.
ModuleCompanyCodePanicum=العودة فارغة مدونة المحاسبة. ModuleCompanyCodePanicum=العودة فارغة مدونة المحاسبة.
ModuleCompanyCodeDigitaria=قانون المحاسبة طرف ثالث يعتمد على الرمز. الشفرة تتكون من طابع &quot;جيم&quot; في المركز الأول يليه 5 الحروف الأولى من طرف ثالث المدونة. ModuleCompanyCodeDigitaria=قانون المحاسبة طرف ثالث يعتمد على الرمز. الشفرة تتكون من طابع "جيم" في المركز الأول يليه 5 الحروف الأولى من طرف ثالث المدونة.
UseNotifications=استخدام الإخطارات UseNotifications=استخدام الإخطارات
NotificationsDesc=إشعارات البريد الإلكتروني ميزة تسمح لك صمت إرسال البريد الآلي ، وبالنسبة لبعض الأحداث Dolibarr ، لأطراف ثالثة (العملاء أو الموردين) التي هي لتهيئتها. اختيار نشط الاشعار الاتصالات واعتماد أهداف واحدة لطرف ثالث في الوقت المناسب. NotificationsDesc=إشعارات البريد الإلكتروني ميزة تسمح لك صمت إرسال البريد الآلي ، وبالنسبة لبعض الأحداث Dolibarr ، لأطراف ثالثة (العملاء أو الموردين) التي هي لتهيئتها. اختيار نشط الاشعار الاتصالات واعتماد أهداف واحدة لطرف ثالث في الوقت المناسب.
WebCalSetup=Webcalendar ربط الإعداد WebCalSetup=Webcalendar ربط الإعداد
@@ -723,9 +722,9 @@ WebCalServer=خدمة استضافة قاعدة بيانات التقويم
WebCalDatabaseName=اسم قاعدة البيانات WebCalDatabaseName=اسم قاعدة البيانات
WebCalUser=المستخدم من الوصول إلى قاعدة البيانات WebCalUser=المستخدم من الوصول إلى قاعدة البيانات
WebCalSetupSaved=أنقذ Webcalendar الإعداد بنجاح. WebCalSetupSaved=أنقذ Webcalendar الإعداد بنجاح.
WebCalTestOk=علاقة الخادم &#39;٪ ق&#39; على قاعدة البيانات &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; ناجحة. WebCalTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
WebCalTestKo1=علاقة الخادم &#39;٪ ق&#39; تنجح ولكن قاعدة البيانات &#39;٪ ق&#39; لا يمكن التوصل إليها. WebCalTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
WebCalTestKo2=علاقة الخادم &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; فشلت. WebCalTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
WebCalErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن Webcalendar في قاعدة البيانات. WebCalErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن Webcalendar في قاعدة البيانات.
WebCalAddEventOnCreateActions=إضافة تقويم الحدث على خلق الأعمال WebCalAddEventOnCreateActions=إضافة تقويم الحدث على خلق الأعمال
WebCalAddEventOnCreateCompany=إضافة جدول زمني بشأن إنشاء شركات WebCalAddEventOnCreateCompany=إضافة جدول زمني بشأن إنشاء شركات
@@ -777,7 +776,7 @@ FicheinterNumberingModules=الترقيم وحدات التدخل
TemplatePDFInterventions=تدخل بطاقة نماذج الوثائق TemplatePDFInterventions=تدخل بطاقة نماذج الوثائق
WatermarkOnDraftInterventionCards=العلامة المائية على التدخل بطاقة الوثائق (أي إذا كانت فارغة) WatermarkOnDraftInterventionCards=العلامة المائية على التدخل بطاقة الوثائق (أي إذا كانت فارغة)
ClickToDialSetup=انقر لإعداد وحدة الاتصال الهاتفي ClickToDialSetup=انقر لإعداد وحدة الاتصال الهاتفي
ClickToDialUrlDesc=ودعا الموقع عندما تنقر على الهاتف picto ذلك. Dans l&#39; رابط ، vous pouvez utiliser ليه balises <br> <b>٪ ٪ 1 $ ق</b> qui الأمصال remplacé قدم المساواة جنيه téléphone دي l&#39; appelé <br> <b>٪ ٪</b> 2 $ <b>ق</b> qui الأمصال remplacé لو قدم المساواة téléphone دي l&#39; appelant جنيه مصري vôtre) <br> <b>٪ ٪ ل 3</b> دولار qui الأمصال remplacé vôtre ادخل clicktodial الفقرة (défini سور vôtre فيشه utilisateur) <br> <b>٪ ٪</b> 4 <b>$</b> ق qui الأمصال remplacé الفقرة vôtre يذكره دي clicktodial عتيق (défini سور vôtre فيشه utilisateur). ClickToDialUrlDesc=ودعا الموقع عندما تنقر على الهاتف picto ذلك. Dans l' رابط ، vous pouvez utiliser ليه balises <br> <b>٪ ٪ 1 $ ق</b> qui الأمصال remplacé قدم المساواة جنيه téléphone دي l' appelé <br> <b>٪ ٪</b> 2 $ <b>ق</b> qui الأمصال remplacé لو قدم المساواة téléphone دي l' appelant جنيه مصري vôtre) <br> <b>٪ ٪ ل 3</b> دولار qui الأمصال remplacé vôtre ادخل clicktodial الفقرة (défini سور vôtre فيشه utilisateur) <br> <b>٪ ٪</b> 4 <b>$</b> ق qui الأمصال remplacé الفقرة vôtre يذكره دي clicktodial عتيق (défini سور vôtre فيشه utilisateur).
Bookmark4uSetup=إعداد وحدة Bookmark4u Bookmark4uSetup=إعداد وحدة Bookmark4u
InterventionsSetup=وحدة التدخل الإعداد InterventionsSetup=وحدة التدخل الإعداد
MembersSetup=أعضاء وحدة الإعداد MembersSetup=أعضاء وحدة الإعداد
@@ -793,8 +792,8 @@ LDAPContactsSynchro=اتصالات
LDAPMembersSynchro=أعضاء LDAPMembersSynchro=أعضاء
LDAPSynchronization=LDAP نمازتلا LDAPSynchronization=LDAP نمازتلا
LDAPFunctionsNotAvailableOnPHP=LDAP وظائف لا تتوفر على PHP LDAPFunctionsNotAvailableOnPHP=LDAP وظائف لا تتوفر على PHP
LDAPToDolibarr=LDAP --&gt; Dolibarr LDAPToDolibarr=LDAP --> Dolibarr
DolibarrToLDAP=Dolibarr --&gt; LDAP DolibarrToLDAP=Dolibarr --> LDAP
LDAPNamingAttribute=الرئيسية في LDAP LDAPNamingAttribute=الرئيسية في LDAP
LDAPSynchronizeUsers=تزامن Dolibarr المستخدمين LDAP LDAPSynchronizeUsers=تزامن Dolibarr المستخدمين LDAP
LDAPSynchronizeGroups=تزامن مع Dolibarr مجموعات LDAP LDAPSynchronizeGroups=تزامن مع Dolibarr مجموعات LDAP
@@ -826,7 +825,7 @@ LDAPDnContactActiveYes=تفعيل التزامن
LDAPDnContactActiveExample=تفعيل / Unactivated التزامن LDAPDnContactActiveExample=تفعيل / Unactivated التزامن
LDAPDnMemberActive=أعضاء تزامن LDAPDnMemberActive=أعضاء تزامن
LDAPDnMemberActiveExample=تفعيل / Unactivated التزامن LDAPDnMemberActiveExample=تفعيل / Unactivated التزامن
LDAPContactDn=Dolibarr اتصالات &#39;DN LDAPContactDn=Dolibarr اتصالات 'DN
LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN الكامل (مثلا : où= اتصالات العاصمة= المجتمع ، العاصمة= كوم) LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN الكامل (مثلا : où= اتصالات العاصمة= المجتمع ، العاصمة= كوم)
LDAPMemberDn=Dolibarr الأعضاء DN LDAPMemberDn=Dolibarr الأعضاء DN
LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN الكامل (مثلا : où= أعضاء العاصمة= المجتمع ، العاصمة= كوم) LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN الكامل (مثلا : où= أعضاء العاصمة= المجتمع ، العاصمة= كوم)
@@ -841,7 +840,7 @@ LDAPContactObjectClassListExample=قائمة objectClass سجل تحديد ال
LDAPMemberTypeDn=Dolibarr عضو نوع DN LDAPMemberTypeDn=Dolibarr عضو نوع DN
LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN الكامل (مثلا : où= type_members العاصمة= المجتمع ، العاصمة= كوم) LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN الكامل (مثلا : où= type_members العاصمة= المجتمع ، العاصمة= كوم)
LDAPTestConnect=اختبار LDAP الصدد LDAPTestConnect=اختبار LDAP الصدد
LDAPTestSynchroContact=اختبار الاتصال &#39;sالتزامن LDAPTestSynchroContact=اختبار الاتصال 'sالتزامن
LDAPTestSynchroUser=تجربة المستخدم التزامن LDAPTestSynchroUser=تجربة المستخدم التزامن
LDAPTestSynchroGroup=اختبار المجموعة التزامن LDAPTestSynchroGroup=اختبار المجموعة التزامن
LDAPTestSynchroMember=اختبار العضو التزامن LDAPTestSynchroMember=اختبار العضو التزامن
@@ -863,7 +862,7 @@ LDAPLdapMapping=LDAP الخرائط
LDAPFieldLoginUnix=ادخل (يونكس) LDAPFieldLoginUnix=ادخل (يونكس)
LDAPFieldLoginExample=على سبيل المثال : رمز المستخدم LDAPFieldLoginExample=على سبيل المثال : رمز المستخدم
LDAPFilterConnection=البحث عن مرشح LDAPFilterConnection=البحث عن مرشح
LDAPFilterConnectionExample=Example : &(objectClass=مثال ذلك : &amp; (objectClass= inetOrgPerson) LDAPFilterConnectionExample=Example : &(objectClass=مثال ذلك : & (objectClass= inetOrgPerson)
LDAPFieldLoginSamba=ادخل (سامبا ، activedirectory) LDAPFieldLoginSamba=ادخل (سامبا ، activedirectory)
LDAPFieldLoginSambaExample=مثال ذلك : samaccountname LDAPFieldLoginSambaExample=مثال ذلك : samaccountname
LDAPFieldFullname=Firstname الاسم LDAPFieldFullname=Firstname الاسم
@@ -929,7 +928,7 @@ SyslogFacility=مرفق
SyslogLevel=المستوى SyslogLevel=المستوى
SyslogSimpleFile=ملف SyslogSimpleFile=ملف
SyslogFilename=اسم الملف ومسار SyslogFilename=اسم الملف ومسار
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr &quot;وثائق&quot; دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف. YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
ErrorUnknownSyslogConstant=ق المستمر ٪ ليست معروفة syslog مستمر ErrorUnknownSyslogConstant=ق المستمر ٪ ليست معروفة syslog مستمر
DonationsSetup=وحدة الإعداد للتبرع DonationsSetup=وحدة الإعداد للتبرع
BarcodeSetup=الباركود الإعداد BarcodeSetup=الباركود الإعداد
@@ -969,18 +968,18 @@ FCKeditorForProductDetails=WYSIWIG إنشاء / الطبعة تفاصيل خطو
FCKeditorForProductDetailsPerso=WYSIWIG إنشاء / الطبعة تفاصيل خطوط المنتجات الشخصية لجميع الكيانات (المقترحات والأوامر والفواتير ، الخ...) FCKeditorForProductDetailsPerso=WYSIWIG إنشاء / الطبعة تفاصيل خطوط المنتجات الشخصية لجميع الكيانات (المقترحات والأوامر والفواتير ، الخ...)
FCKeditorForMailing=WYSIWIG إنشاء / الطبعة بالبريد FCKeditorForMailing=WYSIWIG إنشاء / الطبعة بالبريد
OSCommerceErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن قاعدة بيانات OSCommerce (ق ٪ الرئيسية غير موجودة في الجدول ٪). OSCommerceErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن قاعدة بيانات OSCommerce (ق ٪ الرئيسية غير موجودة في الجدول ٪).
OSCommerceTestOk=علاقة الخادم &#39;٪ ق&#39; على قاعدة البيانات &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; ناجحة. OSCommerceTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
OSCommerceTestKo1=علاقة الخادم &#39;٪ ق&#39; تنجح ولكن قاعدة البيانات &#39;٪ ق&#39; لا يمكن التوصل إليها. OSCommerceTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
OSCommerceTestKo2=علاقة الخادم &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; فشلت. OSCommerceTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
MantisSetup=فرس النبي ربط الإعداد MantisSetup=فرس النبي ربط الإعداد
MantisURL=عنوان الوصول لفرس النبي MantisURL=عنوان الوصول لفرس النبي
MantisServer=فرس النبي استضافة خادم قاعدة البيانات MantisServer=فرس النبي استضافة خادم قاعدة البيانات
MantisDatabaseName=اسم قاعدة البيانات MantisDatabaseName=اسم قاعدة البيانات
MantisUser=المستخدم من الوصول إلى قاعدة البيانات MantisUser=المستخدم من الوصول إلى قاعدة البيانات
MantisSetupSaved=فرس النبي الإعداد انقذ بنجاح. MantisSetupSaved=فرس النبي الإعداد انقذ بنجاح.
MantisTestOk=علاقة الخادم &#39;٪ ق&#39; على قاعدة البيانات &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; ناجحة. MantisTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
MantisTestKo1=علاقة الخادم &#39;٪ ق&#39; تنجح ولكن قاعدة البيانات &#39;٪ ق&#39; لا يمكن التوصل إليها. MantisTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
MantisTestKo2=علاقة الخادم &#39;٪ ق&#39; مستخدم &#39;٪ ق&#39; فشلت. MantisTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
MantisErrorConnectOkButWrongDatabase=قاعدة بيانات لكنه نجح الصدد لا يبدو أن فرس النبي قاعدة البيانات. MantisErrorConnectOkButWrongDatabase=قاعدة بيانات لكنه نجح الصدد لا يبدو أن فرس النبي قاعدة البيانات.
StockSetup=تكوين وحدة المخزون StockSetup=تكوين وحدة المخزون
UserWarehouse=استخدام الأرصدة الشخصية للمستخدم UserWarehouse=استخدام الأرصدة الشخصية للمستخدم
@@ -1062,3 +1061,130 @@ OnPayment=عن الدفع
DelaysOfToleranceMembers=تأخير التسامح (في يوم) في حالة تأهب قبل يوم تأخير رسوم العضوية DelaysOfToleranceMembers=تأخير التسامح (في يوم) في حالة تأهب قبل يوم تأخير رسوم العضوية
SetupDescription5=القيود الأخرى القائمة في إدارة اختياري البارامترات. SetupDescription5=القيود الأخرى القائمة في إدارة اختياري البارامترات.
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// START - Lines generated via autotranslator.php tool (2010-07-17 10:57:19).
// Reference language: en_US
SessionSaveHandler=معالج لحفظ دورات
PurgeSessions=تطهير الدورات
ConfirmPurgeSessions=هل تريد حقا لتطهير جميع الدورات؟ وهذا قطع كل مستخدم (إلا نفسك).
NoSessionListWithThisHandler=حفظ معالج دورة تكوين في بي الخاص بك لا يسمح لسرد كافة جلسات على التوالي.
LockNewSessions=اتصالات لوك جديد
ConfirmLockNewSessions=هل أنت متأكد أنك تريد تقييد أي اتصال Dolibarr جديدة لنفسك. <b>ق ٪</b> سوف مستخدم فقط تكون قادرا على الاتصال بعد ذلك.
UnlockNewSessions=إزالة اتصال قفل
YourSession=الدورة الخاصة بك
Sessions=شاهد الدورة
NoSessionFound=الخاص بي ويبدو أن عدم السماح لقائمة جلسات العمل النشطة. دليل المستخدم لحفظ دورات <b>(ق ٪)</b> قد تكون محمية (على سبيل المثال ، من خلال أذونات نظام التشغيل أو عن طريق التوجيه open_basedir فب).
FormToTestFileUploadForm=نموذج لاختبار تحميل الملف (وفقا لبرنامج الإعداد)
PreviewNotAvailable=المعاينة غير متاحة
AntiVirusCommand=المسار الكامل لقيادة مكافحة الفيروسات
AntiVirusCommandExample=c:\Program Files (x86)\ClamWin\bin\clamscan.exe
AntiVirusParam=مزيد من المعلمات على سطر الأوامر
AntiVirusParamExample=--database="C:\Program Files (x86)\ClamWin\lib"
YouCanDownloadBackupFile=يمكن أن الملفات التي تم إنشاؤها الآن يمكن تحميلها
IgnoreDuplicateRecords=تجاهل الأخطاء في سجلات مكررة (إدراج تجاهل)
InstrucToEncodePass=لديك كلمة المرور المشفرة في ملف <b>conf.php</b> ، استبدال خط <br> <b>dolibarr_main_db_pass $ ="..."</b> <br> من قبل <br> <b>"= $ crypted dolibarr_main_db_pass : ٪ ق"</b>
InstrucToClearPass=لديك كلمة السر فك الشفرة (واضح) في <b>conf.php</b> الملف ، استبدال السطر <br> <b>dolibarr_main_db_pass $ = ":..." crypted</b> <br> من قبل <br> <b>dolibarr_main_db_pass $ = "٪ ق"</b>
MAIN_MAIL_EMAIL_TLS=استخدام تلس (خدمة تصميم المواقع) تشفير
SubmitTranslation=إذا كان ترجمة لهذه اللغة ليست كاملة أو تجد الأخطاء ، يمكنك تصحيح هذا عن طريق تحرير الملفات إلى الدليل <b>langs / ق ٪</b> ، وإرسال ملفات تعديل على www.dolibarr.org المنتدى.
FindPackageFromWebSite=العثور على الحزمة التي توفر ميزة تريد (على سبيل المثال على موقع الويب ق ٪).
AddCRIfTooLong=ليس هناك التفاف تلقائي ، حتى إذا خرج من خط صفحة على وثائق لفترة طويلة جدا ، يجب إضافة حرف إرجاع نفسك في ناحية النص.
MinLength=الحد الأدني لمدة
LanguageFilesCachedIntoShmopSharedMemory=لانغ لتحميل الملفات. في الذاكرة المشتركة
ExamplesWithCurrentSetup=أمثلة مع تشغيل الإعداد الحالي
ListOfDirectories=قائمة الدلائل المفتوحة قوالب
ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على ملفات ذات شكل قوالب المفتوحة. <br><br> هنا وضع المسار الكامل من الدلائل. <br> إضافة حرف إرجاع بين الدليل ايه. <br> لإضافة دليل وحدة [جد] ، أضيف هنا <b>DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / yourdirectoryname.</b> <br><br> في هذه الدلائل يجب أن تنتهي مع <b>ملفات. odt.</b>
NumberOfModelFilesFound=عدد ODT القوالب العثور على الملفات في هذه الدلائل
ExampleOfDirectoriesForModelGen=أمثلة على بناء الجملة : <br> ج : mydir \ <br> / الوطن / mydir <br> DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / ecmdir
FirstnameNamePosition=موقف الإسم / اسم
Module23Name=طاقة
Module23Desc=مراقبة استهلاك الطاقة
Module100Name=ExternalSite
Module100Desc=وتشمل أي موقع خارجي في القوائم Dolibarr ومشاهدته في إطار Dolibarr
Module2000Name=Fckeditor
Module2000Desc=سوغ محرر
Module2600Name=WebServices
Module2600Desc=تمكين خدمات الويب Dolibarr الملقم
Module2700Name=غرفتر
Module2700Desc=استخدام خدمة غرفتر على الانترنت (www.gravatar.com) لإظهار الصورة من المستخدمين / أعضاء (وجدت مع رسائل البريد الإلكتروني الخاصة بهم). في حاجة الى الوصول الى شبكة الانترنت
Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP التحويلات Maxmind القدرات
Module13452Name=SpeedFinder
Module13452Desc=محرك البحث للعثور على أجاكس في اسم من جزء من رقم الهاتف في حدود 2 ثانية
Permission36=انظر / إدارة المنتجات المخفية
Permission141=المهام اقرأ
Permission142=إنشاء / تعديل المهام
Permission144=حذف المهام
Permission536=انظر / إدارة الخدمات الخفية
Permission2411=الإجراءات قراءة (أحداث أو المهام) للاخرين
Permission2412=إنشاء / تعديل الإجراءات (أحداث أو المهام) للاخرين
Permission2413=حذف الإجراءات (أحداث أو المهام) للاخرين
DictionnaryStaff=العاملين
LocalTax1ManagementES=إدارة الطاقة المتجددة
LocalTax1IsUsedDescES=معدل الطاقة المتجددة بشكل افتراضي عند احتمالات خلق ، والفواتير ، وأوامر الخ اتباع القاعدة نشط القياسية : <br> إذا لم تعرض الشركة المصرية للاتصالات لمشتري الطاقة المتجددة ، الطاقة المتجددة بشكل افتراضي = 0. نهاية الحكم. <br> في حال التعرض للمشتري بعد ذلك الطاقة المتجددة الطاقة المتجددة بشكل افتراضي. نهاية الحكم. <br>
LocalTax1IsNotUsedDescES=افتراضيا الطاقة المتجددة المقترحة هي 0. نهاية الحكم.
LocalTax1IsUsedExampleES=في اسبانيا هم من المهنيين تخضع لبعض المقاطع المحددة للشركة التعليم الصوتي التفاعلي الاسبانية.
LocalTax1IsNotUsedExampleES=في اسبانيا هم المهنية والجمعيات وتخضع لقطاعات معينة من شركة التعليم الصوتي التفاعلي الاسبانية.
LocalTax2ManagementES=IRPF الإدارة
LocalTax2IsUsedDescES=معدل الطاقة المتجددة بشكل افتراضي عند احتمالات خلق ، والفواتير ، وأوامر الخ اتباع القاعدة نشط القياسية : <br> إذا لم يتم التعرض للبائع IRPF ، ثم IRPF افتراضيا = 0. نهاية الحكم. <br> في حال التعرض للبائع IRPF ثم IRPF افتراضيا. نهاية الحكم. <br>
LocalTax2IsNotUsedDescES=افتراضيا IRPF المقترحة هي 0. نهاية الحكم.
LocalTax2IsUsedExampleES=في اسبانيا ، لحسابهم الخاص والمهنيين المستقلين الذين يقدمون الخدمات والشركات الذين اختاروا النظام الضريبي من وحدات.
LocalTax2IsNotUsedExampleES=في اسبانيا هم bussines لا تخضع لنظام ضريبي وحدات.
MenuUpgrade=ترقية / توسيع
DatabaseServer=قاعدة بيانات المضيف
DatabaseUser=قاعدة بيانات المستخدم
DatabasePassword=قاعدة بيانات كلمة السر
EnableShowLogo=عرض الشعار على اليسار القائمة
MAIN_ROUNDING_RULE_TOT=حجم التقريب مجموعة (لبلدان النادرة التي يتم التقريب على شيء آخر من قاعدة 10)
UnitPriceOfProduct=صافي سعر وحدة من المنتج
TotalPriceAfterRounding=إجمالي السعر الصافي / ضريبة القيمة المضافة / ضريبة مدفوع) بعد التقريب
PreviousDumpFiles=متاح تفريغ النسخ الاحتياطي ملفات قاعدة البيانات
WeekStartOnDay=أول يوم من الأسبوع
RunningUpdateProcessMayBeRequired=تشغيل عملية الترقية ويبدو أن المطلوب (ليالي برامج الإصدار ٪ يختلف عن إصدار قاعدة بيانات ٪)
YouMustRunCommandFromCommandLineAfterLoginToUser=يجب تشغيل هذا الأمر من سطر الأوامر بعد الدخول إلى قذيفة مع المستخدم <b>٪ ق.</b>
YourPHPDoesNotHaveSSLSupport=وظائف خدمة تصميم المواقع لا تتوفر في بي الخاص بك
DownloadMoreSkins=مزيد من جلود بتحميل
SimpleNumRefModelDesc=عودة الرقم المرجعي للتنسيق مع nnnn - ٪ syymm ث ث حيث هي السنة ، هو شهر ملم وnnnn هو تسلسل بدون ثقب ودون إعادة تعيين
ListOfEntities=قائمة الكيانات
AddEntity=إضافة كيان
EditEntity=عدل كيان
UsersSetup=شاهد الإعداد وحدة
UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد
ModelModules=وثائق قوالب
DocumentModelOdt=انتج وثائق من OpenDocuments قوالب (ملفات ODT لأوبن أوفيس ، ومعالجات ، TextEdit ،...)
WatermarkOnDraft=علامة مائية على مشروع الوثيقة
LDAPFieldGroupMembers=أعضاء الفريق
LDAPFieldGroupMembersExample=على سبيل المثال : uniqueMember
DonationsReceiptModel=قالب من استلام التبرع
MailingEMailError=بريد إلكتروني العودة (إلى أخطاء) لرسائل البريد الإلكتروني مع الأخطاء
PastDelayVCalExport=لا تصدر الحدث الأكبر من
CashDesk=نقاط البيع
CashDeskBankAccountForCheque=حساب لاستخدام لتلقي المدفوعات عن طريق الشيكات
CashDeskBankAccountForCB=حساب لاستخدام لاستلام المبالغ النقدية عن طريق بطاقات الائتمان
SuppliersSetup=المورد الإعداد وحدة
SuppliersCommandModel=قالب كاملة من أجل المورد (logo...)
GeoIPMaxmindSetup=GeoIP Maxmind الإعداد وحدة
PathToGeoIPMaxmindCountryDataFile=المسار إلى ملف يحتوي على Maxmind الملكية الفكرية لترجمة البلاد. <br> مثال : / البيرة / المحلية / مشاركة / GeoIP / GeoIP.dat
NoteOnPathLocation=لاحظ أن الملكية الفكرية الخاصة بك على البيانات القطرية الملف يجب أن تكون داخل الدليل الخاص بي يمكن قراءة (راجع الإعداد open_basedir بى وأذونات نظام الملفات).
YouCanDownloadFreeDatFileTo=يمكنك تحميل <b>نسخة تجريبية مجانية</b> من GeoIP ملف Maxmind البلاد في ٪ s.
YouCanDownloadAdvancedDatFileTo=كما يمكنك تحميل <b>نسخة كاملة</b> أكثر من ذلك <b>، مع التحديثات ،</b> من GeoIP ملف Maxmind البلاد في ٪ s.
TestGeoIPResult=اختبار لتحويل الملكية الفكرية --> البلاد
NumberWordsSetup=NumberWords الإعداد وحدة
DescNumberWords=هذا يوفر وظائف وحدة لتحويل المبلغ أو عدد الأحرف في الكامل. وسيكون أيضا استبدال تكرارات السلسلة التالية __TOTAL_TTC_WORDS__ ، __TOTAL_HT_WORDS__ أو مدفوع من قبل __TOTAL_VAT_WORDS__ الإجمالي. الضرائب ، ومجموع صافي الضرائب ، أو مجموع ضريبة القيمة المضافة في جميع textes التي تستخدمها (النص الحرة على الفواتير ،...)
ProjectsNumberingModules=مشاريع وحدة الترقيم
ProjectsSetup=مشروع إعداد وحدة
ProjectsModelModule=المشروع نموذج التقرير وثيقة
// STOP - Lines generated via autotranslator.php tool ().
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
ModulesMarketPlaceDesc=يمكنك العثور على مزيد من وحدات للتحميل على مواقع الإنترنت الخارجية على شبكة الانترنت...
ModulesMarketPlaces=مزيد من وحدات...
DoliStoreDesc=DoliStore ، في السوق الرسمي لتخطيط موارد المؤسسات وحدات Dolibarr / خارجي إدارة علاقات العملاء
WebSiteDesc=مزودي موقع ويب يمكنك البحث للعثور على المزيد من وحدات...
URL=رابط
OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس
MAIN_MAIL_AUTOCOPY_TO=إرسال منهجية خفية الكربون نسخة من جميع رسائل البريد الإلكتروني المرسلة إلى
FreeLegalTextOnInterventions=حرر النص على وثائق التدخل
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:43:53).

View File

@@ -21,10 +21,9 @@ InvoiceStandardDesc=هذا النوع من الفاتورة هي فاتورة ع
InvoiceDeposit=إيداع فاتورة InvoiceDeposit=إيداع فاتورة
InvoiceDepositAsk=إيداع فاتورة InvoiceDepositAsk=إيداع فاتورة
InvoiceDepositDesc=هذا النوع من الفاتورة يتم فيه ايداع وقد وردت. InvoiceDepositDesc=هذا النوع من الفاتورة يتم فيه ايداع وقد وردت.
InvoiceProFormat=Proformat الفاتورة InvoiceProForma=Proforma الفاتورة
InvoiceProFormatAsk=Proformat الفاتورة InvoiceProFormaAsk=Proforma الفاتورة
InvoiceProFormatDesc=<b>Proformat الفاتورة</b> هو صورة حقيقية فاتورة المحاسبة ولكن ليس له قيمة. InvoiceProFormaDesc=<b>Proforma الفاتورة</b> هو صورة حقيقية فاتورة المحاسبة ولكن ليس له قيمة.
InvoiceReplacement=استبدال الفاتورة. ويجب أن تحل محل الفاتورة مع الإشارة
InvoiceReplacementAsk=استبدال فاتورة الفاتورة InvoiceReplacementAsk=استبدال فاتورة الفاتورة
InvoiceAvoir=علما الائتمان InvoiceAvoir=علما الائتمان
InvoiceAvoirAsk=علما الائتمان لتصحيح الفاتورة InvoiceAvoirAsk=علما الائتمان لتصحيح الفاتورة
@@ -75,7 +74,7 @@ PaymentConditions=مدة السداد
PaymentConditionsShort=مدة السداد PaymentConditionsShort=مدة السداد
PaymentAmount=دفع مبلغ PaymentAmount=دفع مبلغ
PaymentHigherThanReminderToPay=دفع أعلى من دفع تذكرة PaymentHigherThanReminderToPay=دفع أعلى من دفع تذكرة
ClassifyClosed=تصنيف &#39;مغلقة&#39; ClassifyClosed=تصنيف 'مغلقة'
CreateBill=إنشاء الفاتورة CreateBill=إنشاء الفاتورة
AddBill=تضيف المذكرة الائتمان أو فاتورة AddBill=تضيف المذكرة الائتمان أو فاتورة
DeleteBill=شطب فاتورة DeleteBill=شطب فاتورة
@@ -182,7 +181,7 @@ DateInvoice=تاريخ الفاتورة
NoInvoice=لا الفاتورة NoInvoice=لا الفاتورة
ClassifyBill=تصنيف الفاتورة ClassifyBill=تصنيف الفاتورة
SupplierBillsToPay=دفع فواتير الموردين SupplierBillsToPay=دفع فواتير الموردين
DispenseMontantLettres=ليه factures rédigées قدم المساواة طرائق mécanographiques sont l&#39; arrêté dispensées دي én lettres DispenseMontantLettres=ليه factures rédigées قدم المساواة طرائق mécanographiques sont l' arrêté dispensées دي én lettres
DispenseMontantLettres=المكتوب من خلال فواتير mecanographic إجراءات الاستغناء حسب الترتيب رسائل DispenseMontantLettres=المكتوب من خلال فواتير mecanographic إجراءات الاستغناء حسب الترتيب رسائل
NonPercuRecuperable=غير القابلة للاسترداد NonPercuRecuperable=غير القابلة للاسترداد
SetConditions=تحدد شروط الدفع SetConditions=تحدد شروط الدفع
@@ -196,9 +195,9 @@ Repeatables=محددة مسبقا
ChangeIntoRepeatableInvoice=تحويل محددة مسبقا ChangeIntoRepeatableInvoice=تحويل محددة مسبقا
CreateRepeatableInvoice=إنشاء فاتورة محددة مسبقا CreateRepeatableInvoice=إنشاء فاتورة محددة مسبقا
CreateFromRepeatableInvoice=خلق من فاتورة محددة مسبقا CreateFromRepeatableInvoice=خلق من فاتورة محددة مسبقا
CustomersInvoicesAndInvoiceLines=فواتير العملاء والفواتير &#39;خطوط CustomersInvoicesAndInvoiceLines=فواتير العملاء والفواتير 'خطوط
CustomersInvoicesAndPayments=العملاء والفواتير والمدفوعات CustomersInvoicesAndPayments=العملاء والفواتير والمدفوعات
ExportDataset_invoice_1=قائمة العملاء والفواتير والفواتير &#39;خطوط ExportDataset_invoice_1=قائمة العملاء والفواتير والفواتير 'خطوط
ExportDataset_invoice_2=العملاء والفواتير والمدفوعات ExportDataset_invoice_2=العملاء والفواتير والمدفوعات
ProformaBill=Proforma بيل : ProformaBill=Proforma بيل :
Reduction=تخفيض Reduction=تخفيض
@@ -350,11 +349,11 @@ BillsCustomersUnpaid=غير المدفوعة للعملاء الفواتير
BillsCustomersUnpaidForCompany=غير المدفوعة للعملاء فواتير ق ٪ BillsCustomersUnpaidForCompany=غير المدفوعة للعملاء فواتير ق ٪
BillsSuppliersUnpaid=غير المدفوعة الموردين BillsSuppliersUnpaid=غير المدفوعة الموردين
BillsUnpaid=غير المدفوعة BillsUnpaid=غير المدفوعة
InvoiceReplacementDesc=<b>استبدال الفاتورة</b> يستخدم لالغاء واستبدال تماما مع فاتورة الدفع لا تلقى بالفعل. <br><br> ملاحظة : ليس فقط من فاتورة الدفع على أنه يمكن الاستعاضة عنها. إن لم تكن مغلقة ، سيكون تلقائيا مغلقة &#39;المهجورة. InvoiceReplacementDesc=<b>استبدال الفاتورة</b> يستخدم لالغاء واستبدال تماما مع فاتورة الدفع لا تلقى بالفعل. <br><br> ملاحظة : ليس فقط من فاتورة الدفع على أنه يمكن الاستعاضة عنها. إن لم تكن مغلقة ، سيكون تلقائيا مغلقة 'المهجورة.
InvoiceAvoirDesc=<b>الفضل</b> في <b>المذكرة</b> سلبية الفاتورة تستخدم لحل كون فاتورة بمبلغ قد يختلف عن المبلغ المدفوع فعلا (لأنه دفع الكثير من العملاء عن طريق الخطأ ، أو لن تدفع بالكامل منذ عودته لبعض المنتجات على سبيل المثال). InvoiceAvoirDesc=<b>الفضل</b> في <b>المذكرة</b> سلبية الفاتورة تستخدم لحل كون فاتورة بمبلغ قد يختلف عن المبلغ المدفوع فعلا (لأنه دفع الكثير من العملاء عن طريق الخطأ ، أو لن تدفع بالكامل منذ عودته لبعض المنتجات على سبيل المثال).
HelpPaymentHigherThanReminderToPay=الاهتمام ، على دفع مبلغ واحد أو أكثر من فواتير أعلى من الراحة على الدفع. <br> تعديل الدخول ، تؤكد خلاف ذلك والتفكير في خلق الائتمان علما الزائدة وتلقى كل الفواتير الزائدة. HelpPaymentHigherThanReminderToPay=الاهتمام ، على دفع مبلغ واحد أو أكثر من فواتير أعلى من الراحة على الدفع. <br> تعديل الدخول ، تؤكد خلاف ذلك والتفكير في خلق الائتمان علما الزائدة وتلقى كل الفواتير الزائدة.
ClassifyPaid=تصنيف &#39;مدفوع&#39; ClassifyPaid=تصنيف 'مدفوع'
ClassifyPaidPartially=تصنيف &#39;مدفوع جزئيا&#39; ClassifyPaidPartially=تصنيف 'مدفوع جزئيا'
BillStatusPaid=دفع BillStatusPaid=دفع
BillStatusPaidBackOrConverted=يدفع أو تحويلها إلى الخصم BillStatusPaidBackOrConverted=يدفع أو تحويلها إلى الخصم
BillStatusValidated=مصادق عليه (لا بد من دفعها) BillStatusValidated=مصادق عليه (لا بد من دفعها)
@@ -364,7 +363,7 @@ BillStatusClosedPaidPartially=دفعت (جزئيا)
BillShortStatusPaid=دفع BillShortStatusPaid=دفع
BillShortStatusNotPaid=لم تدفع BillShortStatusNotPaid=لم تدفع
BillShortStatusClosedPaidPartially=دفعت (جزئيا) BillShortStatusClosedPaidPartially=دفعت (جزئيا)
ConfirmCancelBillQuestion=لماذا تريدها لتصنيف هذه الفاتورة &#39;المهجورة؟ ConfirmCancelBillQuestion=لماذا تريدها لتصنيف هذه الفاتورة 'المهجورة؟
ConfirmClassifyPaidPartiallyQuestion=هذه الفاتورة لم تدفع بالكامل. ما هي أسباب قريبة لك هذه الفاتورة؟ ConfirmClassifyPaidPartiallyQuestion=هذه الفاتورة لم تدفع بالكامل. ما هي أسباب قريبة لك هذه الفاتورة؟
ConfirmClassifyPaidPartiallyReasonOther=التخلي عن المبلغ لسبب آخر ConfirmClassifyPaidPartiallyReasonOther=التخلي عن المبلغ لسبب آخر
AlreadyPaid=دفعت بالفعل AlreadyPaid=دفعت بالفعل
@@ -377,7 +376,7 @@ ShowUnpaidLateOnly=وتبين في وقت متأخر من الفواتير غي
// START - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // START - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// Reference language: en_US // Reference language: en_US
ClassifyCanceled=تصنيف &#39;المهجورة&#39; ClassifyCanceled=تصنيف 'المهجورة'
BillStatusCanceled=المهجورة BillStatusCanceled=المهجورة
BillShortStatusCanceled=المهجورة BillShortStatusCanceled=المهجورة
Unpaid=غير المدفوعة Unpaid=غير المدفوعة
@@ -386,3 +385,33 @@ ConfirmCustomerPayment=هل تؤكد ذلك دفع مساهمات <b>٪</b> ٪ <
ConfirmValidatePayment=هل أنت متأكد أنك تريد التحقق من صحة هذا الدفع؟ لم يطرأ أي تغيير يمكن الدفع مرة واحدة على صحتها. ConfirmValidatePayment=هل أنت متأكد أنك تريد التحقق من صحة هذا الدفع؟ لم يطرأ أي تغيير يمكن الدفع مرة واحدة على صحتها.
HelpEscompte=هذا الخصم هو الخصم الممنوح للعميل لأن الدفع قبل البعيد. HelpEscompte=هذا الخصم هو الخصم الممنوح للعميل لأن الدفع قبل البعيد.
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:13:51).
// Reference language: en_US
AlreadyPaidNoCreditNotesNoDeposits=دفعت بالفعل (بدون تلاحظ الائتمان والودائع)
RelatedBill=الفاتورة ذات الصلة
RelatedBills=الفواتير ذات الصلة
ValidateInvoice=تحقق من صحة الفواتير
Cash=نقد
Reported=تأخر
DisabledBecausePayments=غير ممكن لأن هناك بعض المدفوعات
CantRemovePaymentWithOneInvoicePaid=تصنيف لا يمكن إزالة الدفع لأنه ليس هناك على الأقل على الفاتورة سيولي
ExpectedToPay=من المتوقع الدفع
PayedByThisPayment=سيولي هذا الدفع
TypeContact_facture_internal_SALESREPFOLL=ممثل العميل متابعة فاتورة
TypeContact_facture_external_BILLING=الزبون فاتورة الاتصال
TypeContact_facture_external_SHIPPING=العملاء الشحن الاتصال
TypeContact_facture_external_SERVICE=خدمة العملاء الاتصال
TypeContact_facture_fourn_internal_SALESREPFOLL=ممثل المورد متابعة فاتورة
TypeContact_facture_fourn_external_BILLING=المورد فاتورة الاتصال
TypeContact_facture_fourn_external_SHIPPING=المورد الشحن الاتصال
TypeContact_facture_fourn_external_SERVICE=المورد خدمة الاتصال
PDFLinceDescription=نموذج الفاتورة كاملة مع الطاقة المتجددة الاسبانية وIRPF
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:14:33).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
InvoiceReplacement=استبدال الفاتورة
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:40:36).

View File

@@ -1,75 +1,92 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
BoxLastRssInfos=Rss المعلومات BoxLastRssInfos=Rss المعلومات
BoxLastProducts=ق الماضي ٪ منتجات / خدمات BoxLastProducts=ق الماضي ٪ منتجات / خدمات
BoxLastProductsInContract=٪ ق الماضي التعاقد المنتجات / الخدمات BoxLastProductsInContract=٪ ق الماضي التعاقد المنتجات / الخدمات
BoxLastSupplierBills=الماضي فواتير المورد BoxLastSupplierBills=الماضي فواتير المورد
BoxLastCustomerBills=الماضي العميل الفواتير BoxLastCustomerBills=الماضي العميل الفواتير
BoxLastProposals=آخر مقترحات تجارية BoxLastProposals=آخر مقترحات تجارية
BoxLastProspects=آفاق الماضي BoxLastProspects=آفاق الماضي
BoxLastCustomers=آخر الزبائن BoxLastCustomers=آخر الزبائن
BoxLastCustomerOrders=آخر طلبات الزبائن BoxLastCustomerOrders=آخر طلبات الزبائن
BoxLastSuppliers=الماضي الموردين BoxLastSuppliers=الماضي الموردين
BoxLastBooks=آخر الكتب BoxLastBooks=آخر الكتب
BoxLastActions=آخر الأعمال BoxLastActions=آخر الأعمال
BoxCurrentAccounts=ميزان الحسابات الجارية BoxCurrentAccounts=ميزان الحسابات الجارية
BoxSalesTurnover=مبيعات BoxSalesTurnover=مبيعات
BoxTitleLastBooks=آخر الكتب المسجلة ق ٪ BoxTitleLastBooks=آخر الكتب المسجلة ق ٪
BoxTitleNbOfCustomers=دي اسم العميل BoxTitleNbOfCustomers=دي اسم العميل
BoxTitleLastRssInfos=آخر الأخبار من ٪ ق ق ٪ BoxTitleLastRssInfos=آخر الأخبار من ٪ ق ق ٪
BoxTitleLastProducts=آخر تعديل ٪ ق المنتجات / الخدمات BoxTitleLastProducts=آخر تعديل ٪ ق المنتجات / الخدمات
BoxTitleLastCustomerOrders=آخر تعديل ق ٪ طلبات الزبائن BoxTitleLastCustomerOrders=آخر تعديل ق ٪ طلبات الزبائن
BoxTitleLastSuppliers=الماضي وسجل الموردين ق ٪ BoxTitleLastSuppliers=الماضي وسجل الموردين ق ٪
BoxTitleLastCustomers=الماضي وسجل للعملاء ل ٪ BoxTitleLastCustomers=الماضي وسجل للعملاء ل ٪
BoxTitleLastCustomersOrProspects=آخر تعديل ق ٪ العملاء أو آفاق BoxTitleLastCustomersOrProspects=آخر تعديل ق ٪ العملاء أو آفاق
BoxTitleLastPropals=٪ ق الماضي سجلت مقترحات BoxTitleLastPropals=٪ ق الماضي سجلت مقترحات
BoxTitleLastCustomerBills=ق الماضي ٪ العميل الفواتير BoxTitleLastCustomerBills=ق الماضي ٪ العميل الفواتير
BoxTitleLastSupplierBills=ق الماضي ٪ فواتير المورد BoxTitleLastSupplierBills=ق الماضي ٪ فواتير المورد
BoxTitleLastProspects=الماضي وسجل آفاق ق ٪ BoxTitleLastProspects=الماضي وسجل آفاق ق ٪
BoxTitleCurrentAccounts=أرصدة الحسابات الجارية BoxTitleCurrentAccounts=أرصدة الحسابات الجارية
BoxTitleSalesTurnover=مبيعات BoxTitleSalesTurnover=مبيعات
BoxMyLastBookmarks=آخر العناوين ق ٪ BoxMyLastBookmarks=آخر العناوين ق ٪
FailedToRefreshDataInfoNotUpToDate=فشلت في تجديد تدفق RSS. اخر تحديث تاريخ : ٪ ق FailedToRefreshDataInfoNotUpToDate=فشلت في تجديد تدفق RSS. اخر تحديث تاريخ : ٪ ق
LastRefreshDate=تاريخ آخر تجديد LastRefreshDate=تاريخ آخر تجديد
NoRecordedBookmarks=No bookmarks defined. Click <a href=لا علامات محددة. اضغط <a href="%s">هنا</a> لإضافة إشارات مرجعية. NoRecordedBookmarks=No bookmarks defined. Click <a href=لا علامات محددة. اضغط <a href="%s">هنا</a> لإضافة إشارات مرجعية.
NoRecordedCustomers=لم تسجل العملاء NoRecordedCustomers=لم تسجل العملاء
BoxTitleLastActionsToDo=ق ٪ الإجراءات الأخيرة للقيام BoxTitleLastActionsToDo=ق ٪ الإجراءات الأخيرة للقيام
NoActionsToDo=أي إجراءات للقيام NoActionsToDo=أي إجراءات للقيام
NoRecordedOrders=لم تسجل أوامر العملاء NoRecordedOrders=لم تسجل أوامر العملاء
NoRecordedProposals=لم تسجل مقترحات NoRecordedProposals=لم تسجل مقترحات
NoRecordedInvoices=لم تسجل العملاء والفواتير NoRecordedInvoices=لم تسجل العملاء والفواتير
NoRecordedSupplierInvoices=لم تسجل فواتير المورد NoRecordedSupplierInvoices=لم تسجل فواتير المورد
NoRecordedProducts=لم تسجل المنتجات / الخدمات NoRecordedProducts=لم تسجل المنتجات / الخدمات
NoRecordedProspects=لم تسجل آفاق NoRecordedProspects=لم تسجل آفاق
NoContractedProducts=أي المنتجات / الخدمات المتعاقد عليها NoContractedProducts=أي المنتجات / الخدمات المتعاقد عليها
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser
// START - Lines generated via autotranslator.php tool (2009-08-19 21:04:44). // START - Lines generated via autotranslator.php tool (2009-08-19 21:04:44).
// Reference language: en_US // Reference language: en_US
BoxOldestUnpaidCustomerBills=اقدم العميل الفواتير غير المدفوعة BoxOldestUnpaidCustomerBills=اقدم العميل الفواتير غير المدفوعة
BoxOldestUnpaidSupplierBills=أقدم المورد الفواتير غير المدفوعة BoxOldestUnpaidSupplierBills=أقدم المورد الفواتير غير المدفوعة
BoxTitleOldestUnpaidCustomerBills=أقدم ٪ ق العميل الفواتير غير المدفوعة BoxTitleOldestUnpaidCustomerBills=أقدم ٪ ق العميل الفواتير غير المدفوعة
BoxTitleOldestUnpaidSupplierBills=أقدم ٪ ق المورد الفواتير غير المدفوعة BoxTitleOldestUnpaidSupplierBills=أقدم ٪ ق المورد الفواتير غير المدفوعة
BoxTitleTotalUnpaidCustomerBills=العميل الفواتير غير المدفوعة BoxTitleTotalUnpaidCustomerBills=العميل الفواتير غير المدفوعة
BoxTitleTotalUnpaidSuppliersBills=المورد الفواتير غير المدفوعة BoxTitleTotalUnpaidSuppliersBills=المورد الفواتير غير المدفوعة
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44).
// START - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // START - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// Reference language: en_US // Reference language: en_US
BoxTotalUnpaidCustomerBills=مجموع الفواتير غير المدفوعة للعميل BoxTotalUnpaidCustomerBills=مجموع الفواتير غير المدفوعة للعميل
BoxTotalUnpaidSuppliersBills=مجموع الفواتير غير المدفوعة المورد BoxTotalUnpaidSuppliersBills=مجموع الفواتير غير المدفوعة المورد
BoxTitleLastProductsInContract=الماضي ٪ ق المنتجات / الخدمات في عقد BoxTitleLastProductsInContract=الماضي ٪ ق المنتجات / الخدمات في عقد
NoUnpaidCustomerBills=لا العميل الفواتير غير المدفوعة NoUnpaidCustomerBills=لا العميل الفواتير غير المدفوعة
NoUnpaidSupplierBills=لا المورد الفواتير غير المدفوعة NoUnpaidSupplierBills=لا المورد الفواتير غير المدفوعة
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:16:46).
// Reference language: en_US
BoxLastContracts=آخر العقود
BoxTitleLastContracts=%s العقود الماضية
NoModifiedSupplierBills=أي مورد مسجل في الفواتير
NoRecordedContracts=لا عقود المسجلة
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:18:02).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
BoxTitleLastModifiedSuppliers=%s آخر تعديل الموردين
BoxTitleLastModifiedCustomers=%s آخر تعديل الزبائن
BoxTitleLastModifiedProspects=%s آخر تعديل آفاق
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:56:33).

View File

@@ -1,33 +1,33 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
Delivery=تسليم Delivery=تسليم
Deliveries=الولادة Deliveries=الولادة
DeliveryCard=تسليم البطاقة DeliveryCard=تسليم البطاقة
DeliveryOrder=من أجل تقديم DeliveryOrder=من أجل تقديم
DeliveryOrders=توصيل الطلبات DeliveryOrders=توصيل الطلبات
DeliveryDate=تاريخ التسليم DeliveryDate=تاريخ التسليم
DeliveryDateShort=Deliv. تاريخ DeliveryDateShort=Deliv. تاريخ
CreateDeliveryOrder=ومن أجل توليد التسليم CreateDeliveryOrder=ومن أجل توليد التسليم
QtyDelivered=الكمية المسلمة QtyDelivered=الكمية المسلمة
SetDeliveryDate=حدد تاريخ الشحن SetDeliveryDate=حدد تاريخ الشحن
ValidateDeliveryReceipt=تحقق من إنجاز ورود ValidateDeliveryReceipt=تحقق من إنجاز ورود
ValidateDeliveryReceiptConfirm=هل أنت متأكد من أن هذا الإنجاز تحقق من ورود؟ ValidateDeliveryReceiptConfirm=هل أنت متأكد من أن هذا الإنجاز تحقق من ورود؟
DeliveryMethod=طريقة التسليم DeliveryMethod=طريقة التسليم
TrackingNumber=تتبع عدد TrackingNumber=تتبع عدد
NameAndSignature=الاسم والتوقيع : NameAndSignature=الاسم والتوقيع :
ToAndDate=To___________________________________ على ____ / _____ / __________ ToAndDate=To___________________________________ على ____ / _____ / __________
GoodStatusDeclaration=وتلقى البضائع الواردة أعلاه في حالة جيدة ، GoodStatusDeclaration=وتلقى البضائع الواردة أعلاه في حالة جيدة ،
Deliverer=المنفذ : Deliverer=المنفذ :
Sender=مرسل Sender=مرسل
Recipient=المتلقي Recipient=المتلقي
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

View File

@@ -1,15 +1,15 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
DomainNames=أسماء النطاقات DomainNames=أسماء النطاقات
NewDomain=اسم النطاق الجديد NewDomain=اسم النطاق الجديد
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

View File

@@ -1,64 +1,64 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
MenuECM=وثائق MenuECM=وثائق
DocsMine=بلدي وثائق DocsMine=بلدي وثائق
DocsGenerated=ولدت وثائق DocsGenerated=ولدت وثائق
DocsElements=عناصر وثائق DocsElements=عناصر وثائق
DocsThirdParties=الوثائق أطراف ثالثة DocsThirdParties=الوثائق أطراف ثالثة
DocsContracts=وثائق العقود DocsContracts=وثائق العقود
DocsProposals=الوثائق مقترحات DocsProposals=الوثائق مقترحات
DocsOrders=الوثائق الأوامر DocsOrders=الوثائق الأوامر
DocsInvoices=وثائق وفواتير DocsInvoices=وثائق وفواتير
ECMNbOfDocs=ملاحظة : الوثائق في الدليل ECMNbOfDocs=ملاحظة : الوثائق في الدليل
ECMNbOfDocsSmall=ملاحظة : من وثيقة. ECMNbOfDocsSmall=ملاحظة : من وثيقة.
ECMSection=دليل ECMSection=دليل
ECMSectionManual=دليل دليل ECMSectionManual=دليل دليل
ECMSectionAuto=الدليل الآلي ECMSectionAuto=الدليل الآلي
ECMSectionsManual=دليل الشجرة ECMSectionsManual=دليل الشجرة
ECMSectionsAuto=شجرة الآلي ECMSectionsAuto=شجرة الآلي
ECMSections=أدلة ECMSections=أدلة
ECMRoot=جذور ECMRoot=جذور
ECMNewSection=دليل جديد ECMNewSection=دليل جديد
ECMAddSection=إضافة دليل دليل ECMAddSection=إضافة دليل دليل
ECMNewSection=الدليل الجديد ودليل ECMNewSection=الدليل الجديد ودليل
ECMNewDocument=وثيقة جديدة ECMNewDocument=وثيقة جديدة
ECMCreationDate=تاريخ الإنشاء ECMCreationDate=تاريخ الإنشاء
ECMNbOfFilesInDir=عدد من الملفات في دليل ECMNbOfFilesInDir=عدد من الملفات في دليل
ECMNbOfSubDir=من دون أدلة ECMNbOfSubDir=من دون أدلة
ECMNbOfFilesInSubDir=إيليس في Nunber من دون أدلة ECMNbOfFilesInSubDir=إيليس في Nunber من دون أدلة
ECMCreationUser=مبدع ECMCreationUser=مبدع
ECMArea=مجال إدارة المحتوى في المؤسسة ECMArea=مجال إدارة المحتوى في المؤسسة
ECMAreaDesc=إدارة المحتوى في المؤسسة (إدارة المحتوى الالكتروني) تتيح لك المجال لانقاذ ، والبحث بسرعة حصة كل نوع من أنواع الوثائق في Dolibarr. ECMAreaDesc=إدارة المحتوى في المؤسسة (إدارة المحتوى الالكتروني) تتيح لك المجال لانقاذ ، والبحث بسرعة حصة كل نوع من أنواع الوثائق في Dolibarr.
ECMAreaDesc2=* أدلة تلقائية تملأ تلقائيا عند إضافة الوثائق من بطاقة عنصر. <br> * دليل أدلة يمكن استخدامها لانقاذ وثائق ليست مرتبطة بشكل خاص عنصر. ECMAreaDesc2=* أدلة تلقائية تملأ تلقائيا عند إضافة الوثائق من بطاقة عنصر. <br> * دليل أدلة يمكن استخدامها لانقاذ وثائق ليست مرتبطة بشكل خاص عنصر.
ECMSectionWasRemoved=دليل <b>٪ ق</b> حذفت. ECMSectionWasRemoved=دليل <b>٪ ق</b> حذفت.
ECMDocumentsSection=وثيقة من وثائق ودليل ECMDocumentsSection=وثيقة من وثائق ودليل
ECMSearchByKeywords=بحث الكلمات الرئيسية ECMSearchByKeywords=بحث الكلمات الرئيسية
ECMSearchByEntity=بحث عن وجوه ECMSearchByEntity=بحث عن وجوه
ECMSectionOfDocuments=أدلة وثائق ECMSectionOfDocuments=أدلة وثائق
ECMTypeManual=دليل ECMTypeManual=دليل
ECMTypeAuto=التلقائي ECMTypeAuto=التلقائي
ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة
ECMDocsByProposals=وثائق مرتبطة مقترحات ECMDocsByProposals=وثائق مرتبطة مقترحات
ECMDocsByOrders=وثائق مرتبطة أوامر العملاء ECMDocsByOrders=وثائق مرتبطة أوامر العملاء
ECMDocsByContracts=وثائق مرتبطة بعقود ECMDocsByContracts=وثائق مرتبطة بعقود
ECMDocsByInvoices=وثائق مرتبطة عملاء الفواتير ECMDocsByInvoices=وثائق مرتبطة عملاء الفواتير
ECMDocsByProducts=الوثائق المرتبطة بالمنتجات ECMDocsByProducts=الوثائق المرتبطة بالمنتجات
ECMNoDirecotyYet=لا الدليل ECMNoDirecotyYet=لا الدليل
ShowECMSection=وتظهر الدليل ShowECMSection=وتظهر الدليل
DeleteSection=إزالة الدليل DeleteSection=إزالة الدليل
ConfirmDeleteSection=يمكنك التأكد من أنك تريد حذف الدليل <b>٪ ق؟</b> ConfirmDeleteSection=يمكنك التأكد من أنك تريد حذف الدليل <b>٪ ق؟</b>
ECMDirectoryForFiles=دليل النسبي للملفات ECMDirectoryForFiles=دليل النسبي للملفات
CannotRemoveDirectoryContainsFiles=لا يمكن إزالتها لأنه يحتوي على بعض الملفات CannotRemoveDirectoryContainsFiles=لا يمكن إزالتها لأنه يحتوي على بعض الملفات
ECMFileManager=مدير الملفات ECMFileManager=مدير الملفات
ECMSelectASection=اختر دليل على ترك شجرة... ECMSelectASection=اختر دليل على ترك شجرة...
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

View File

@@ -12,11 +12,11 @@ CHARSET=UTF-8
MenuManager=قائمة مدير MenuManager=قائمة مدير
ErrorLoginAlreadyExists=ادخل ٪ ق موجود بالفعل. ErrorLoginAlreadyExists=ادخل ٪ ق موجود بالفعل.
ErrorGroupAlreadyExists=المجموعة ٪ ق موجود بالفعل. ErrorGroupAlreadyExists=المجموعة ٪ ق موجود بالفعل.
ErrorFailToDeleteFile=فشل إزالة الملف <b>&#39;٪ ق.</b> ErrorFailToDeleteFile=فشل إزالة الملف <b>'٪ ق.</b>
ErrorFailToCreateFile=فشل إنشاء الملف <b>&#39;٪ ق.</b> ErrorFailToCreateFile=فشل إنشاء الملف <b>'٪ ق.</b>
ErrorFailToRenameDir=فشل إعادة تسمية الدليل <b>&#39;٪ ق&#39;</b> الى <b>&#39;٪ ق.</b> ErrorFailToRenameDir=فشل إعادة تسمية الدليل <b>'٪ ق'</b> الى <b>'٪ ق.</b>
ErrorFailToCreateDir=فشل إنشاء الدليل <b>&#39;٪ ق.</b> ErrorFailToCreateDir=فشل إنشاء الدليل <b>'٪ ق.</b>
ErrorFailToDeleteDir=فشل حذف الدليل <b>&#39;٪ ق.</b> ErrorFailToDeleteDir=فشل حذف الدليل <b>'٪ ق.</b>
ErrorFailedToDeleteJoinedFiles=لا يمكن حذف كيان لان هناك انضم بعض الملفات. إزالة ملفات الانضمام الأولى. ErrorFailedToDeleteJoinedFiles=لا يمكن حذف كيان لان هناك انضم بعض الملفات. إزالة ملفات الانضمام الأولى.
ErrorThisContactIsAlreadyDefinedAsThisType=هذا الاتصال هو اتصال بالفعل تعريف لهذا النوع. ErrorThisContactIsAlreadyDefinedAsThisType=هذا الاتصال هو اتصال بالفعل تعريف لهذا النوع.
ErrorCashAccountAcceptsOnlyCashMoney=هذا الحساب المصرفي هو الحساب النقدي ، وذلك ما وافق على نوع من المدفوعات النقدية فقط. ErrorCashAccountAcceptsOnlyCashMoney=هذا الحساب المصرفي هو الحساب النقدي ، وذلك ما وافق على نوع من المدفوعات النقدية فقط.
@@ -38,8 +38,8 @@ ErrorFieldsRequired=تتطلب بعض المجالات لم تملأ.
ErrorFailedToCreateDir=فشل إنشاء دليل. تأكد من أن خادم الويب المستخدم أذونات لكتابة وثائق Dolibarr في الدليل. إذا تم تمكين المعلم <b>safe_mode</b> على هذا PHP ، تحقق من أن ملفات Dolibarr php تملك لخدمة الويب المستخدم (أو مجموعة). ErrorFailedToCreateDir=فشل إنشاء دليل. تأكد من أن خادم الويب المستخدم أذونات لكتابة وثائق Dolibarr في الدليل. إذا تم تمكين المعلم <b>safe_mode</b> على هذا PHP ، تحقق من أن ملفات Dolibarr php تملك لخدمة الويب المستخدم (أو مجموعة).
ErrorNoMailDefinedForThisUser=البريد لا يعرف لهذا المستخدم ErrorNoMailDefinedForThisUser=البريد لا يعرف لهذا المستخدم
ErrorFeatureNeedJavascript=هذه الميزة تحتاج إلى تفعيل جافا سكريبت في العمل. هذا التغيير في البنية -- عرض. ErrorFeatureNeedJavascript=هذه الميزة تحتاج إلى تفعيل جافا سكريبت في العمل. هذا التغيير في البنية -- عرض.
ErrorTopMenuMustHaveAParentWithId0=وهناك قائمة من نوع &#39;توب&#39; لا يمكن أن يكون أحد الوالدين القائمة. 0 وضعت في القائمة أو الأم في اختيار قائمة من نوع &#39;اليسار&#39;. ErrorTopMenuMustHaveAParentWithId0=وهناك قائمة من نوع 'توب' لا يمكن أن يكون أحد الوالدين القائمة. 0 وضعت في القائمة أو الأم في اختيار قائمة من نوع 'اليسار'.
ErrorLeftMenuMustHaveAParentId=وهناك قائمة من نوع &#39;اليسار&#39; يجب أن يكون لها هوية الوالد. ErrorLeftMenuMustHaveAParentId=وهناك قائمة من نوع 'اليسار' يجب أن يكون لها هوية الوالد.
ErrorFileNotFound=لم يتم العثور على الملف (باد الطريق الخطأ أو أذونات الوصول نفى المعلم openbasedir) ErrorFileNotFound=لم يتم العثور على الملف (باد الطريق الخطأ أو أذونات الوصول نفى المعلم openbasedir)
ErrorFunctionNotAvailableInPHP=<b>ق ٪</b> وظيفة مطلوبة لهذه الميزة ولكن لا تتوافر في هذه النسخة / الإعداد للPHP. ErrorFunctionNotAvailableInPHP=<b>ق ٪</b> وظيفة مطلوبة لهذه الميزة ولكن لا تتوافر في هذه النسخة / الإعداد للPHP.
ErrorDirAlreadyExists=دليل بهذا الاسم بالفعل. ErrorDirAlreadyExists=دليل بهذا الاسم بالفعل.
@@ -52,9 +52,44 @@ ErrorNoAccountancyModuleLoaded=أي وحدة المحاسبة وتفعيل
ErrorExportDuplicateProfil=هذا ملف الاسم بالفعل لتصدير هذه المجموعة. ErrorExportDuplicateProfil=هذا ملف الاسم بالفعل لتصدير هذه المجموعة.
ErrorLDAPSetupNotComplete=Dolibarr - LDAP المطابقة وليس كاملا. ErrorLDAPSetupNotComplete=Dolibarr - LDAP المطابقة وليس كاملا.
ErrorLDAPMakeManualTest=ألف. ldif الملف قد ولدت في الدليل ٪ s. انها محاولة لتحميل يدويا من سطر في الحصول على مزيد من المعلومات عن الأخطاء. ErrorLDAPMakeManualTest=ألف. ldif الملف قد ولدت في الدليل ٪ s. انها محاولة لتحميل يدويا من سطر في الحصول على مزيد من المعلومات عن الأخطاء.
ErrorCantSaveADoneUserWithZeroPercentage=لا يمكن انقاذ عمل مع &quot;المركز الخاص لم تبدأ&quot; اذا الميدان &quot;الذي قام به&quot; كما شغلها. ErrorCantSaveADoneUserWithZeroPercentage=لا يمكن انقاذ عمل مع "المركز الخاص لم تبدأ" اذا الميدان "الذي قام به" كما شغلها.
ErrorBillRefAlreadyExists=المرجع المستخدمة لإنشاء موجود بالفعل. ErrorRefAlreadyExists=المرجع المستخدمة لإنشاء موجود بالفعل.
ErrorPleaseTypeBankTransactionReportName=الرجاء كتابة اسم البنك استلام المعاملات ويقال فيها (شكل YYYYMM أو YYYYMMDD) ErrorPleaseTypeBankTransactionReportName=الرجاء كتابة اسم البنك استلام المعاملات ويقال فيها (شكل YYYYMM أو YYYYMMDD)
ErrorRecordHasChildren=فشل حذف السجلات منذ نحو الطفل. ErrorRecordHasChildren=فشل حذف السجلات منذ نحو الطفل.
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser
// START - Lines generated via autotranslator.php tool (2010-07-17 11:16:46).
// Reference language: en_US
Error=خطأ
Errors=أخطاء
ErrorBadEMail=بريد إلكتروني خاطئ %s
ErrorBadUrl=عنوان الموقع هو الخطأ %s
ErrorRecordNotFound=لم يتم العثور على السجل.
ErrorDirNotFound=لم يتم العثور على دليل <b>%s</b> (مسار غير صالح ، أو الحصول على أذونات خاطئة نفته openbasedir بي إتش بي أو safe_mode المعلمة)
ErrorFileAlreadyExists=ملف بهذا الاسم موجود مسبقا.
ErrorPartialFile=الملف لم تتلق تماما بواسطة الخادم.
ErrorNoTmpDir=%s directy مؤقتة لا وجود.
ErrorUploadBlockedByAddon=حظر حمل من قبل البرنامج المساعد بى اباتشي /.
ErrorFileSizeTooLarge=حجم الملف كبير جدا.
WarningSafeModeOnCheckExecDir=انذار ، فب <b>safe_mode</b> الخيار في ذلك تخزين الأمر يجب أن يكون داخل الدليل الذي أعلنته <b>safe_mode_exec_dir</b> المعلمة بي.
WarningConfFileMustBeReadOnly=انذار ، ملف (التكوين <b>htdocs / أسيوط / conf.php)</b> الخاص يمكن أن تكون الكتابة بواسطة خادم الويب. هذه هي ثغرة أمنية خطيرة. أذونات تعديل على ملف ليكون في وضع القراءة فقط لمستخدم نظام التشغيل المستخدمة من قبل ملقم ويب. إذا كنت تستخدم ويندوز وشكل نسبة الدهون لمدة القرص الخاص بك ، فإنك يجب أن نعرف أن هذا النظام لا يسمح ملف لإضافة الأذونات على الملف ، بحيث لا تكون آمنة تماما.
ErrorModuleRequireJavascript=يجب عدم تعطيل جافا سكريبت لجعل هذا العمل الميزة. لتمكين / تعطيل جافا سكريبت ، انتقل إلى القائمة الرئيسية -> الإعداد -> العرض.
ErrorPasswordsMustMatch=ويجب على كلا كلمات المرور المكتوبة تطابق بعضها البعض
ErrorContactEMail=حدث خطأ فني. من فضلك ، مدير الاتصال لfolowwing <b>٪</b> البريد الإلكتروني أون توفير <b>%s</b> رمز الخطأ في رسالتك ، أو حتى أفضل من خلال إضافة نسخة شاشة من هذه الصفحة.
ErrorWrongValueForField=قيمة خاطئة لعدد <b>%s</b> الحقل (قيمة <b>'%s'</b> لا يتطابق <b>%s</b> حكم [رجإكس])
ErrorsOnXLines=الأخطاء على خطوط مصدر <b>%s</b>
WarningsOnXLines=تحذيرات عن مصدر خطوط <b>%s</b>
ErrorFileIsInfectedWithAVirus=وكان برنامج مكافحة الفيروسات غير قادرة على التحقق من صحة الملف (ملف قد يكون مصابا بواسطة فيروس)
ErrorSpecialCharNotAllowedForField=غير مسموح الأحرف الخاصة لحقل "%s"
WarningNoDocumentModelActivated=لا يوجد نموذج لجيل وثيقة ، قد تم تنشيط. سيكون نموذج المختار افتراضيا حتى يمكنك التحقق من إعداد وحدة الخاص.
ErrorDatabaseParameterWrong=قاعدة بيانات المعلمة الإعداد <b>'%s'</b> يحتوي على قيمة غير متوافق لاستخدام Dolibarr (يجب أن يكون قيمة <b>'%s').</b>
ErrorNumRefModel=إشارة إلى وجود قاعدة بيانات (%s) ، وغير متوافق مع هذه القاعدة الترقيم. سجل إزالة أو إعادة تسميته اشارة الى تفعيل هذه الوحدة.
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:17:01).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
ErrorQtyTooLowForThisSupplier=كمية قليلة جدا لهذا المورد أو السعر لا تعرف عن هذا المنتج لهذا المورد
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:41:54).

View File

@@ -16,7 +16,7 @@ ConfFileExists=ملفات موجودة <b>٪ ق.</b>
ConfFileDoesNotExists=ملفات <b>ل ٪</b> لا وجود له! ConfFileDoesNotExists=ملفات <b>ل ٪</b> لا وجود له!
ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود له وأنه لا يمكن خلق! ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود له وأنه لا يمكن خلق!
ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ. ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ.
ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( &quot;chmod 666&quot; على سبيل المثال ، مثل نظام التشغيل يونكس). ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b> ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b>
PHPSupportSessions=ويدعم هذا PHP الدورات. PHPSupportSessions=ويدعم هذا PHP الدورات.
PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف. PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف.
@@ -31,14 +31,14 @@ ErrorPHPDoesNotSupportGD=PHP تركيب الخاص بك لا يدعم وظيفة
ErrorPHPDoesNotSupportUTF8=PHP تركيب الخاص بك لا يدعم UTF8 المهام. Dolibarr لا يمكن أن تعمل بشكل صحيح. لحل هذه قبل تثبيت Dolibarr. ErrorPHPDoesNotSupportUTF8=PHP تركيب الخاص بك لا يدعم UTF8 المهام. Dolibarr لا يمكن أن تعمل بشكل صحيح. لحل هذه قبل تثبيت Dolibarr.
ErrorDirDoesNotExists=دليل ٪ ق لا يوجد. ErrorDirDoesNotExists=دليل ٪ ق لا يوجد.
ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح الخطأ البارامترات. ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح الخطأ البارامترات.
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة &#39;٪ ق. ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات &#39;٪ ق. ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات &#39;٪ ق. ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق.
ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب. ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في &#39;٪ ق&#39; لم يتم العثور عليه. ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
ErrorDatabaseAlreadyExists=قاعدة البيانات &#39;٪ ق&#39; موجود بالفعل. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار &quot;إنشاء قاعدة بيانات&quot;. IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء &quot;إنشاء قاعدة بيانات&quot; الخيار. IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار.
PHPVersion=PHP الإصدار PHPVersion=PHP الإصدار
YouCanContinue=يمكنك الاستمرار... YouCanContinue=يمكنك الاستمرار...
PleaseBePatient=يرجى التحلي بالصبر... PleaseBePatient=يرجى التحلي بالصبر...
@@ -52,7 +52,7 @@ DatabaseChoice=اختيار قاعدة البيانات
DatabaseType=قاعدة بيانات من نوع DatabaseType=قاعدة بيانات من نوع
DriverType=سائق نوع DriverType=سائق نوع
Server=الخادم Server=الخادم
ServerAddressDescription=الملكية الفكرية في اسم أو عنوان خادم قاعدة البيانات ، وعادة &#39;localhost&#39; عندما يستضيف خادم قاعدة البيانات على نفس الخادم من خدمة الويب ServerAddressDescription=الملكية الفكرية في اسم أو عنوان خادم قاعدة البيانات ، وعادة 'localhost' عندما يستضيف خادم قاعدة البيانات على نفس الخادم من خدمة الويب
ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة. ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة.
DatabaseServer=خادم قاعدة البيانات DatabaseServer=خادم قاعدة البيانات
DatabaseName=اسم قاعدة البيانات DatabaseName=اسم قاعدة البيانات
@@ -89,16 +89,15 @@ SetupEnd=نهاية الإعداد
SystemIsInstalled=هذا التثبيت الكامل. SystemIsInstalled=هذا التثبيت الكامل.
SystemIsUpgraded=وقد تم تطوير Dolibarr بنجاح. SystemIsUpgraded=وقد تم تطوير Dolibarr بنجاح.
YouNeedToPersonalizeSetup=عليك تكوين Dolibarr لتناسب احتياجاتك (ظهور مقالات...). لذلك ، يرجى اتباع الوصلة التالية : YouNeedToPersonalizeSetup=عليك تكوين Dolibarr لتناسب احتياجاتك (ظهور مقالات...). لذلك ، يرجى اتباع الوصلة التالية :
AdminLoginCreatedSuccessfuly=مدير Dolibarr ادخل <b>&#39;٪ ق&#39;</b> خلق بنجاح. AdminLoginCreatedSuccessfuly=مدير Dolibarr ادخل <b>'٪ ق'</b> خلق بنجاح.
GoToDolibarr=الذهاب إلى Dolibarr GoToDolibarr=الذهاب إلى Dolibarr
GoToSetupArea=الذهاب إلى Dolibarr (مجال الإعداد) GoToSetupArea=الذهاب إلى Dolibarr (مجال الإعداد)
MigrationNotFinished=النسخة الخاصة بك ليست dtabase تماما حتى الآن ، لذلك سيكون لديك لادارة عملية رفع مستوى جديد.
GoToUpgradePage=الذهاب لتحديث الصفحة مرة أخرى GoToUpgradePage=الذهاب لتحديث الصفحة مرة أخرى
Examples=أمثلة Examples=أمثلة
WithNoSlashAtTheEnd=بدون خفض &quot;/&quot; في نهاية WithNoSlashAtTheEnd=بدون خفض "/" في نهاية
LoginAlreadyExists=موجود بالفعل LoginAlreadyExists=موجود بالفعل
DolibarrAdminLogin=ادخل Dolibarr مشرف DolibarrAdminLogin=ادخل Dolibarr مشرف
AdminLoginAlreadyExists=Dolibarr حساب مشرف <b>&#39;٪ ق&#39;</b> موجود بالفعل. AdminLoginAlreadyExists=Dolibarr حساب مشرف <b>'٪ ق'</b> موجود بالفعل.
WarningRemoveInstallDir=تحذير ، لأسباب أمنية ، بعد تثبيت أو تحديث كاملة ، يجب إزالة <b>تثبيت أو إعادة تسمية الدليل على install.lock من أجل تجنب استخدام الخبيثة.</b> WarningRemoveInstallDir=تحذير ، لأسباب أمنية ، بعد تثبيت أو تحديث كاملة ، يجب إزالة <b>تثبيت أو إعادة تسمية الدليل على install.lock من أجل تجنب استخدام الخبيثة.</b>
ThisPHPDoesNotSupportTypeBase=PHP هذا النظام لا يدعم أي واجهة للحصول على قاعدة بيانات من نوع ق ٪ ThisPHPDoesNotSupportTypeBase=PHP هذا النظام لا يدعم أي واجهة للحصول على قاعدة بيانات من نوع ق ٪
FunctionNotAvailableInThisPHP=لا تتوفر على هذا PHP FunctionNotAvailableInThisPHP=لا تتوفر على هذا PHP
@@ -107,9 +106,9 @@ ChoosedMigrateScript=اختار الهجرة سكريبت
DataMigration=بيانات الهجرة DataMigration=بيانات الهجرة
DatabaseMigration=هيكل قاعدة بيانات الهجرة DatabaseMigration=هيكل قاعدة بيانات الهجرة
ProcessMigrateScript=السيناريو تجهيز ProcessMigrateScript=السيناريو تجهيز
ChooseYourSetupMode=اختر طريقة الإعداد وانقر على &quot;ابدأ&quot;... ChooseYourSetupMode=اختر طريقة الإعداد وانقر على "ابدأ"...
FreshInstall=تركيب جديد FreshInstall=تركيب جديد
FreshInstallDesc=استخدام هذا الأسلوب إذا كان هذا هو أول تركيب. إذا لم يكن هذا الوضع لا يمكن إصلاح تثبيت سابقة غير مكتملة ، ولكن إذا كنت ترغب في تحديث الإصدار الخاص بك ، اختر &quot;ترقية&quot; واسطة. FreshInstallDesc=استخدام هذا الأسلوب إذا كان هذا هو أول تركيب. إذا لم يكن هذا الوضع لا يمكن إصلاح تثبيت سابقة غير مكتملة ، ولكن إذا كنت ترغب في تحديث الإصدار الخاص بك ، اختر "ترقية" واسطة.
Upgrade=ترقية Upgrade=ترقية
UpgradeDesc=استخدام هذه الطريقة إذا كنت قد حلت محل القديمة Dolibarr الملفات من الملفات مع إصدار أحدث. وهذا من شأنه رفع مستوى قاعدة البيانات والبيانات. UpgradeDesc=استخدام هذه الطريقة إذا كنت قد حلت محل القديمة Dolibarr الملفات من الملفات مع إصدار أحدث. وهذا من شأنه رفع مستوى قاعدة البيانات والبيانات.
Start=يبدأ Start=يبدأ
@@ -125,7 +124,7 @@ CharsetChoice=اختيار مجموعة حروف
CharacterSetClient=مجموعة الحروف المستخدمة في توليدها صفحات هتمل CharacterSetClient=مجموعة الحروف المستخدمة في توليدها صفحات هتمل
CharacterSetClientComment=اختيار الطابع المحدد لعرضها على الإنترنت. <br/> واقترحت مجموعة الطابع الافتراضي هو واحد من قاعدة البيانات. CharacterSetClientComment=اختيار الطابع المحدد لعرضها على الإنترنت. <br/> واقترحت مجموعة الطابع الافتراضي هو واحد من قاعدة البيانات.
CollationConnection=طابع الفرز بغية CollationConnection=طابع الفرز بغية
CollationConnectionComment=اختر صفحة المدونة التي تحدد طبيعة النظام &#39;sفرز قاعدة البيانات التي تستخدمها. هذا هو المعلم كما دعا &#39;مقارنتها&#39; بعض قواعد البيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل. CollationConnectionComment=اختر صفحة المدونة التي تحدد طبيعة النظام 'sفرز قاعدة البيانات التي تستخدمها. هذا هو المعلم كما دعا 'مقارنتها' بعض قواعد البيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل.
CharacterSetDatabase=الطابع المحدد لقاعدة البيانات CharacterSetDatabase=الطابع المحدد لقاعدة البيانات
CharacterSetDatabaseComment=اختيار مجموعة حروف تريد لإنشاء قاعدة بيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل. CharacterSetDatabaseComment=اختيار مجموعة حروف تريد لإنشاء قاعدة بيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل.
YouAskDatabaseCreationSoDolibarrNeedToConnect=كنت أسأل لإنشاء قاعدة بيانات <b>٪ ق</b> ، ولكن لهذا ، Dolibarr الحاجة الى الاتصال بخادم <b>٪ ق</b> السوبر مع المستخدم أذونات <b>٪ ق.</b> YouAskDatabaseCreationSoDolibarrNeedToConnect=كنت أسأل لإنشاء قاعدة بيانات <b>٪ ق</b> ، ولكن لهذا ، Dolibarr الحاجة الى الاتصال بخادم <b>٪ ق</b> السوبر مع المستخدم أذونات <b>٪ ق.</b>
@@ -136,8 +135,8 @@ RemoveItManuallyAndPressF5ToContinue=إزالته يدويا واضغط F5 لل
KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله. KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
KeepDefaultValuesMamp=استخدام معالج الإعداد DoliMamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله. KeepDefaultValuesMamp=استخدام معالج الإعداد DoliMamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
FieldRenamed=تغيير اسم الميدان FieldRenamed=تغيير اسم الميدان
IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار &quot;تكوين المستخدم&quot; IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم"
ErrorConnection=الخادم <b>&quot;٪ ل&quot;</b> اسم قاعدة بيانات <b>&quot;٪ ل&quot;</b> ادخل <b>&quot;٪ ل&quot;</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة. ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة.
InstallChoiceSuggested=<b>اقترح تثبيت اختيار المثبت.</b> InstallChoiceSuggested=<b>اقترح تثبيت اختيار المثبت.</b>
MigrationOrder=بيانات الهجرة طلبات الزبائن MigrationOrder=بيانات الهجرة طلبات الزبائن
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
@@ -193,3 +192,32 @@ MigrationBankTransfertsUpdate=تحديث الروابط بين المعاملا
// Reference language: en_US // Reference language: en_US
InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <b>ل ٪</b> InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <b>ل ٪</b>
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:28:02). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:28:02).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:16:46).
// Reference language: en_US
ForceHttps=اتصالات آمنة قوة ([هتبس)
CheckToForceHttps=تحقق هذا الخيار لفرض اتصالات آمنة ([هتبس). <br> وهذا يتطلب أن يتم تكوين خادم الويب مع شهادة خدمة تصميم المواقع.
DirectoryRecommendation=وrecommanded به لاستخدام دليل خارج الدليل الخاص من صفحات موقعك.
KeepDefaultValuesDeb=يمكنك استخدام معالج الإعداد Dolibarr من أوبونتو أو حزمة ديبيان ، لذلك القيم المقترحة هنا هي الأمثل بالفعل. يجب أن تكتمل إلا كلمة السر للمالك قاعدة البيانات لإنشاء. تغيير معلمات أخرى إلا إذا كنت تعرف ما تفعله.
CheckThatDatabasenameIsCorrect=تأكد من أن اسم قاعدة البيانات <b>"%s"</b> هو الصحيح.
IfAlreadyExistsCheckOption=وإذا كان هذا الاسم هو الصحيح وأنه لا وجود قاعدة بيانات حتى الآن ، ويجب التحقق من خيار "إنشاء قاعدة بيانات".
OpenBaseDir=بي openbasedir المعلمة
YouAskToCreateDatabaseSoRootRequired=يمكنك التحقق من مربع "إنشاء قاعدة بيانات". لهذا ، تحتاج إلى توفير الدخول وكلمة السر من المستعملين المتميزين (الجزء السفلي من النموذج).
YouAskToCreateDatabaseUserSoRootRequired=يمكنك التحقق من مربع "إنشاء قاعدة بيانات مالك". لهذا ، تحتاج إلى توفير الدخول وكلمة السر من المستعملين المتميزين (الجزء السفلي من النموذج).
NextStepMightLastALongTime=الخطوة الحالية قد تستمر لعدة دقائق. ويرد الرجاء الانتظار حتى الشاشة التالية تماما قبل الشروع في الاستمرار.
MigrationCustomerOrderShipping=ترحيل الشحن لتخزين طلبات العملاء
MigrationShippingDelivery=ترقية تخزين الشحن
MigrationShippingDelivery2=ترقية تخزين الشحن 2
MigrationFixData=إصلاح البيانات الذي لم تتم تسويته
MigrationRelationshipTables=بيانات الهجرة للجداول العلاقة (%s)
MigrationProjectTaskActors=بيانات الهجرة لllx_projet_task_actors الجدول
MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من llx_projet لllx_element_contact
MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:18:17).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
MigrationNotFinished=نسخة من قاعدة البيانات الخاصة بك لا يصل تماما حتى الآن ، لذلك سيكون لديك لتشغيل عملية الترقية مرة أخرى.
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:57:20).

View File

@@ -1,44 +1,44 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
Intervention=التدخل Intervention=التدخل
Interventions=المداخلات Interventions=المداخلات
InterventionCard=تدخل البطاقة InterventionCard=تدخل البطاقة
NewIntervention=التدخل الجديدة NewIntervention=التدخل الجديدة
AddIntervention=إضافة التدخل AddIntervention=إضافة التدخل
ListOfInterventions=قائمة التدخلات ListOfInterventions=قائمة التدخلات
EditIntervention=Editer التدخل EditIntervention=Editer التدخل
LastInterventions=آخر تدخلات ٪ ق LastInterventions=آخر تدخلات ٪ ق
AllInterventions=كل التدخلات AllInterventions=كل التدخلات
CreateDraftIntervention=إنشاء مشروع CreateDraftIntervention=إنشاء مشروع
CustomerDoesNotHavePrefix=الزبون ليس لديها البادئة CustomerDoesNotHavePrefix=الزبون ليس لديها البادئة
InterventionContact=التدخل الاتصال InterventionContact=التدخل الاتصال
DeleteIntervention=حذف التدخل DeleteIntervention=حذف التدخل
ValidateIntervention=تحقق من التدخل ValidateIntervention=تحقق من التدخل
ModifyIntervention=تعديل التدخل ModifyIntervention=تعديل التدخل
DeleteInterventionLine=حذف السطر التدخل DeleteInterventionLine=حذف السطر التدخل
ConfirmDeleteIntervention=هل أنت متأكد من أنك تريد حذف هذا التدخل؟ ConfirmDeleteIntervention=هل أنت متأكد من أنك تريد حذف هذا التدخل؟
ConfirmValidateIntervention=هل أنت متأكد أنك تريد التحقق من صحة هذا التدخل؟ ConfirmValidateIntervention=هل أنت متأكد أنك تريد التحقق من صحة هذا التدخل؟
ConfirmModifyIntervention=هل أنت متأكد من تعديل هذا التدخل؟ ConfirmModifyIntervention=هل أنت متأكد من تعديل هذا التدخل؟
ConfirmDeleteInterventionLine=هل أنت متأكد من أنك تريد حذف هذا السطر التدخل؟ ConfirmDeleteInterventionLine=هل أنت متأكد من أنك تريد حذف هذا السطر التدخل؟
NameAndSignatureOfInternalContact=الاسم والتوقيع على التدخل : NameAndSignatureOfInternalContact=الاسم والتوقيع على التدخل :
NameAndSignatureOfExternalContact=اسم وتوقيع العميل : NameAndSignatureOfExternalContact=اسم وتوقيع العميل :
DocumentModelStandard=نموذج وثيقة موحدة للتدخلات DocumentModelStandard=نموذج وثيقة موحدة للتدخلات
TypeContact_fichinter_internal_INTERREPFOLL=ممثل متابعة التدخل TypeContact_fichinter_internal_INTERREPFOLL=ممثل متابعة التدخل
TypeContact_fichinter_internal_INTERVENING=التدخل TypeContact_fichinter_internal_INTERVENING=التدخل
TypeContact_fichinter_external_BILLING=فواتير العملاء الاتصال TypeContact_fichinter_external_BILLING=فواتير العملاء الاتصال
TypeContact_fichinter_external_CUSTOMER=متابعة العملاء الاتصال TypeContact_fichinter_external_CUSTOMER=متابعة العملاء الاتصال
ArcticNumRefModelDesc1=عدد نموذج عامة ArcticNumRefModelDesc1=عدد نموذج عامة
ArcticNumRefModelError=فشل لتفعيل ArcticNumRefModelError=فشل لتفعيل
PacificNumRefModelDesc1=عودة número مع الشكل nnnn - ٪ syymm فيها السنة هي السنة ، هو شهر ملم وnnnn هو كسر التسلسل وليس هناك عودة لل0 PacificNumRefModelDesc1=عودة número مع الشكل nnnn - ٪ syymm فيها السنة هي السنة ، هو شهر ملم وnnnn هو كسر التسلسل وليس هناك عودة لل0
PacificNumRefModelError=تدخل البطاقة ابتداء من دولار ويوجد بالفعل syymm لا تتفق مع هذا النموذج من التسلسل. إزالة أو تغيير تسميتها لتصبح لتفعيل هذه الوحدة. PacificNumRefModelError=تدخل البطاقة ابتداء من دولار ويوجد بالفعل syymm لا تتفق مع هذا النموذج من التسلسل. إزالة أو تغيير تسميتها لتصبح لتفعيل هذه الوحدة.
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

View File

@@ -0,0 +1,46 @@
/*
* Language code: ar_AR
* Automatic generated via autotranslator.php tool
* Generation date 2010-07-17 11:13:51
*/
// START - Lines generated via autotranslator.php tool (2010-07-17 11:13:51).
// Reference language: en_US
CHARSET=UTF-8
Language_ar_AR=العربية
Language_ca_ES=كاتالاني
Language_da_DA=الدانمركية
Language_de_DE=اللغة الألمانية
Language_en_AU=الإنكليزية (أستراليا)
Language_en_GB=الانجليزية (المملكة المتحدة)
Language_en_IN=الإنكليزية (الهند)
Language_en_US=الإنكليزية (الولايات المتحدة)
Language_es_ES=الأسبانية
Language_es_AR=الأسبانية (الأرجنتين)
Language_fi_FI=زعانف
Language_fr_BE=الفرنسية (بلجيكا)
Language_fr_CA=الفرنسية (كندا)
Language_fr_CH=الفرنسية (سويسرا)
Language_fr_FR=الفرنسية
Language_is_IS=الآيسلندي
Language_it_IT=الإيطالي
Language_nb_NO=النرويجية (بوكمال)
Language_nl_BE=الهولندية (بلجيكا)
Language_nl_NL=الهولندية (هولندا)
Language_pl_PL=بولندي
Language_pt_BR=البرتغالية (البرازيل)
Language_pt_PT=البرتغالية
Language_ro_RO=الرومانية
Language_ru_RU=الروسية
Language_tr_TR=التركية
Language_sl_SL=السلوفينية
Language_zh_CN=الصينية
Language_is_IS=الآيسلندي
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:14:27).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
Language_sv_SV=السويدية
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:40:15).

View File

@@ -148,7 +148,7 @@ DescADHERENT_ETIQUETTE_TYPE=علامات الشكل
DescADHERENT_CARD_HEADER_TEXT=نص مطبوع على رأس عضو البطاقات DescADHERENT_CARD_HEADER_TEXT=نص مطبوع على رأس عضو البطاقات
DescADHERENT_CARD_TEXT=نص مطبوع على بطاقات الأعضاء DescADHERENT_CARD_TEXT=نص مطبوع على بطاقات الأعضاء
DescADHERENT_CARD_FOOTER_TEXT=نص مطبوع على أسفل بطاقات الأعضاء DescADHERENT_CARD_FOOTER_TEXT=نص مطبوع على أسفل بطاقات الأعضاء
ShowTypeCard=وتبين من نوع &#39;٪ ق&#39; ShowTypeCard=وتبين من نوع '٪ ق'
HTPasswordExport=الملف htpassword جيل HTPasswordExport=الملف htpassword جيل
NoThirdPartyAssociatedToMember=لم يرتبط بها من طرف ثالث لهذا العضو NoThirdPartyAssociatedToMember=لم يرتبط بها من طرف ثالث لهذا العضو
ThirdPartyDolibarr=Dolibarr طرف ثالث ThirdPartyDolibarr=Dolibarr طرف ثالث
@@ -161,3 +161,27 @@ MembersAndSubscriptions=وأعضاء Suscriptions
// Reference language: en_US // Reference language: en_US
FundationMembers=أعضاء المؤسسة FundationMembers=أعضاء المؤسسة
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:13:51).
// Reference language: en_US
DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=بريد إلكتروني الموضوع لautosubscription الأعضاء
DescADHERENT_AUTOREGISTER_MAIL=البريد الإلكتروني لعضو autosubscription
DescADHERENT_CARD_TYPE=شكل بطاقات صفحة
DescADHERENT_CARD_TEXT_RIGHT=النص المطبوع على بطاقات الأعضاء (في محاذاة اليمين)
DescADHERENT_MAILMAN_LISTS=قائمة (ق) للinsription التلقائي للأعضاء الجدد (مفصولة بفاصلة)
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:14:17).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
MoreActions=تكميلية العمل على تسجيل
MoreActionBankDirect=إنشاء سجل المعاملات مباشرة على حساب
MoreActionBankViaInvoice=إنشاء الفاتورة والدفع على حساب
MoreActionInvoiceOnly=إنشاء فاتورة مع دفع أي مبلغ
LinkToGeneratedPages=بطاقات زيارة انتج
LinkToGeneratedPagesDesc=هذه الشاشة تسمح لك لإنشاء ملفات الشعبي مع بطاقات العمل لجميع أعضاء أو عضو معين.
DocForAllMembersCards=إنشاء بطاقات العمل لجميع أعضاء (تنسيق الإعداد للإخراج في الواقع : <b>%s)</b>
DocForOneMemberCards=إنشاء بطاقات العمل لعضو معين (تنسيق الإعداد للإخراج في الواقع : <b>%s)</b>
DocForLabels=أوراق عنوان انتج (تنسيق الإعداد للإخراج فعلا : <b>%s)</b>
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:37:46).

View File

@@ -92,7 +92,7 @@ ConfirmValidateOrder=هل أنت متأكد أنك تريد التحقق من ص
ConfirmCancelOrder=هل أنت متأكد من أنك تريد إلغاء هذا النظام؟ ConfirmCancelOrder=هل أنت متأكد من أنك تريد إلغاء هذا النظام؟
ConfirmMakeOrder=هل أنت متأكد من أن يؤكد لك هذا النظام على <b>٪ ق؟</b> ConfirmMakeOrder=هل أنت متأكد من أن يؤكد لك هذا النظام على <b>٪ ق؟</b>
GenerateBill=توليد الفاتورة GenerateBill=توليد الفاتورة
ClassifyBilled=تصنيف &quot;فواتير&quot; ClassifyBilled=تصنيف "فواتير"
ComptaCard=بطاقة المحاسبة ComptaCard=بطاقة المحاسبة
DraftOrders=مشروع أوامر DraftOrders=مشروع أوامر
RelatedOrders=الأوامر ذات الصلة RelatedOrders=الأوامر ذات الصلة
@@ -103,19 +103,19 @@ CustomerOrder=عملاء النظام
RefCustomerOrderShort=المرجع. العملاء. ترتيب RefCustomerOrderShort=المرجع. العملاء. ترتيب
SendOrderByMail=لكي ترسل عن طريق البريد SendOrderByMail=لكي ترسل عن طريق البريد
ActionsOnOrder=إجراءات من أجل ActionsOnOrder=إجراءات من أجل
NoArticleOfTypeProduct=أي مادة من نوع &#39;منتج&#39; حتى لا مادة للشحن لهذا النظام NoArticleOfTypeProduct=أي مادة من نوع 'منتج' حتى لا مادة للشحن لهذا النظام
OrderMode=طريقة أوامر OrderMode=طريقة أوامر
AuthorRequest=طلب مقدم البلاغ AuthorRequest=طلب مقدم البلاغ
UseCustomerContactAsOrderRecipientIfExist=استخدام العميل عنوان الاتصال إذا حددت بدلا من التصدي لطرف ثالث من أجل التصدي للمتلقي UseCustomerContactAsOrderRecipientIfExist=استخدام العميل عنوان الاتصال إذا حددت بدلا من التصدي لطرف ثالث من أجل التصدي للمتلقي
RunningOrders=أوامر بشأن عملية RunningOrders=أوامر بشأن عملية
UserWithApproveOrderGrant=مع منح المستخدمين &quot;الموافقة على أوامر&quot; إذن. UserWithApproveOrderGrant=مع منح المستخدمين "الموافقة على أوامر" إذن.
PaymentOrderRef=من أجل دفع ق ٪ PaymentOrderRef=من أجل دفع ق ٪
CloneOrder=استنساخ النظام CloneOrder=استنساخ النظام
ConfirmCloneOrder=هل أنت متأكد من أن هذا الأمر استنساخ <b>٪ ق؟</b> ConfirmCloneOrder=هل أنت متأكد من أن هذا الأمر استنساخ <b>٪ ق؟</b>
Error_COMMANDE_SUPPLIER_ADDON_NotDefined=لم تعرف COMMANDE_SUPPLIER_ADDON مستمر Error_COMMANDE_SUPPLIER_ADDON_NotDefined=لم تعرف COMMANDE_SUPPLIER_ADDON مستمر
Error_COMMANDE_ADDON_NotDefined=لم تعرف COMMANDE_ADDON مستمر Error_COMMANDE_ADDON_NotDefined=لم تعرف COMMANDE_ADDON مستمر
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=لم يتم تحميل الملف وحدة &#39;٪ ق&#39; Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
Error_FailedToLoad_COMMANDE_ADDON_File=لم يتم تحميل الملف وحدة &#39;٪ ق&#39; Error_FailedToLoad_COMMANDE_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
OrderSource0=اقتراح التجارية OrderSource0=اقتراح التجارية
OrderSource1=الإنترنت OrderSource1=الإنترنت
OrderSource2=حملة بريدية OrderSource2=حملة بريدية
@@ -126,6 +126,29 @@ OrderSource6=مخزن
QtyOrdered=الكمية أمرت QtyOrdered=الكمية أمرت
AddDeliveryCostLine=تضاف تكلفة توصيل خط يبين الوزن من أجل AddDeliveryCostLine=تضاف تكلفة توصيل خط يبين الوزن من أجل
PDFEinsteinDescription=من أجل نموذج كامل (logo...) PDFEinsteinDescription=من أجل نموذج كامل (logo...)
MarbreNumRefDesc=Renvoie جنيه numéro sous لوس انجليس في شكل syymm ٪ nnnn - où l&#39; année السنة بتوقيت شرق الولايات المتحدة ، مم جنيه mois ét nnnn الامم المتحدة compteur sequentiel بلا انقطاع ét بلا remise ه 0
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser
// START - Lines generated via autotranslator.php tool (2010-07-17 11:13:51).
// Reference language: en_US
OrderToProcess=من أجل عملية
TypeContact_commande_internal_SALESREPFOLL=ممثل العميل متابعة النظام
TypeContact_commande_internal_SHIPPING=ممثل الشحن متابعة
TypeContact_commande_external_BILLING=الزبون فاتورة الاتصال
TypeContact_commande_external_SHIPPING=العملاء الشحن الاتصال
TypeContact_commande_external_CUSTOMER=اتصل العملاء بغية متابعة
TypeContact_order_supplier_internal_SALESREPFOLL=ممثل النظام المورد متابعة
TypeContact_order_supplier_internal_SHIPPING=ممثل الشحن متابعة
TypeContact_order_supplier_external_BILLING=المورد فاتورة الاتصال
TypeContact_order_supplier_external_SHIPPING=المورد الشحن الاتصال
TypeContact_order_supplier_external_CUSTOMER=المورد الاتصال أجل متابعة
PDFEdisonDescription=نموذج النظام بسيطة
PDFQuevedoDescription=نموذج النظام الكامل مع الطاقة المتجددة الاسبانية وIRPF
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:13:54).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
DispatchSupplierOrder=%s استقبال النظام مورد
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:33:59).

View File

@@ -1,20 +1,20 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
OSCommerce=نظام التشغيل والتجارة OSCommerce=نظام التشغيل والتجارة
OSCommerceSetup=نظام تشغيل وحدة التجارة الإعداد OSCommerceSetup=نظام تشغيل وحدة التجارة الإعداد
OSCommerceSetupSaved=التجارة إعداد نظام التشغيل الموفرة OSCommerceSetupSaved=التجارة إعداد نظام التشغيل الموفرة
OSCommerceServer=نظام تشغيل الخادم المضيف التجارة / الملكية الفكرية OSCommerceServer=نظام تشغيل الخادم المضيف التجارة / الملكية الفكرية
OSCommerceDatabaseName=اسم قاعدة بيانات نظام التشغيل والتجارة OSCommerceDatabaseName=اسم قاعدة بيانات نظام التشغيل والتجارة
OSCommercePrefix=نظام التشغيل التجاري بادئة الجداول OSCommercePrefix=نظام التشغيل التجاري بادئة الجداول
OSCommerceUser=قاعدة بيانات التجارة ادخل نظام التشغيل OSCommerceUser=قاعدة بيانات التجارة ادخل نظام التشغيل
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

View File

@@ -11,13 +11,13 @@
CHARSET=UTF-8 CHARSET=UTF-8
ErrorPasswordDiffers=وتختلف كلمات السر ، يرجى منها من نوع جديد. ErrorPasswordDiffers=وتختلف كلمات السر ، يرجى منها من نوع جديد.
ErrorForbidden=الوصول ممنوع. <br> محاولة الوصول إلى صفحة ، أو منطقة دون سمة في الدورة من صحة أو عدم السماح لالمستخدم. ErrorForbidden=الوصول ممنوع. <br> محاولة الوصول إلى صفحة ، أو منطقة دون سمة في الدورة من صحة أو عدم السماح لالمستخدم.
ErrorForbidden2=إذن لدخول هذا يمكن تعريف بلدكم من قائمة مدير Dolibarr ٪ ق -&gt; ٪ s. ErrorForbidden2=إذن لدخول هذا يمكن تعريف بلدكم من قائمة مدير Dolibarr ٪ ق -> ٪ s.
ErrorForbidden3=يبدو أن Dolibarr لا يستخدم من صحتها من خلال هذه الدورة. إلقاء نظرة على Dolibarr إعداد الوثائق لمعرفة كيفية ادارة التوثيقات (htaccess ، mod_auth أو غيرها...). ErrorForbidden3=يبدو أن Dolibarr لا يستخدم من صحتها من خلال هذه الدورة. إلقاء نظرة على Dolibarr إعداد الوثائق لمعرفة كيفية ادارة التوثيقات (htaccess ، mod_auth أو غيرها...).
ErrorNoImagickReadimage=وظيفة imagick_readimage لا يوجد في هذا PHP. لا يمكن معاينة المتاحة. يمكن للمشرفين تعطيل هذه القائمة من علامة التبويب إعداد -- عرض. ErrorNoImagickReadimage=وظيفة imagick_readimage لا يوجد في هذا PHP. لا يمكن معاينة المتاحة. يمكن للمشرفين تعطيل هذه القائمة من علامة التبويب إعداد -- عرض.
ErrorRecordAlreadyExists=سجل موجود بالفعل ErrorRecordAlreadyExists=سجل موجود بالفعل
ErrorCantReadFile=فشل في قراءة الملف &#39;٪ ق&#39; ErrorCantReadFile=فشل في قراءة الملف '٪ ق'
ErrorCantReadDir=فشل في قراءة الدليل &#39;٪ ق&#39; ErrorCantReadDir=فشل في قراءة الدليل '٪ ق'
ErrorFailedToFindEntity=لم يقرأ كيان &#39;٪ ق&#39; ErrorFailedToFindEntity=لم يقرأ كيان '٪ ق'
ErrorBadLoginPassword=سوء قيمة أو كلمة السر للدخول ErrorBadLoginPassword=سوء قيمة أو كلمة السر للدخول
ErrorLoginDisabled=لقد تم تعطيل حسابك ErrorLoginDisabled=لقد تم تعطيل حسابك
ErrorFailedToRunExternalCommand=فشل القيادة الخارجية التي تديرها. تأكد من أن يصبح متاحا في بلدكم وrunnable الخادم PHP. إذا PHP تمكين <b>الوضع الآمن</b> ، وتأكد من أن القيادة داخل حددها دليل المعلم <b>safe_mode_exec_dir.</b> ErrorFailedToRunExternalCommand=فشل القيادة الخارجية التي تديرها. تأكد من أن يصبح متاحا في بلدكم وrunnable الخادم PHP. إذا PHP تمكين <b>الوضع الآمن</b> ، وتأكد من أن القيادة داخل حددها دليل المعلم <b>safe_mode_exec_dir.</b>
@@ -183,3 +183,48 @@ InvoicePaidInDolibarr=ق ٪ الفاتورة المدفوعة في تغيير Do
// Reference language: en_US // Reference language: en_US
NumberOfUnitsProposals=عدد من الوحدات على مقترحات بشأن 12 الشهر الماضي NumberOfUnitsProposals=عدد من الوحدات على مقترحات بشأن 12 الشهر الماضي
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:16:46).
// Reference language: en_US
Notify_NOTIFY_VAL_ORDER=التحقق من صحة النظام العميل
Notify_NOTIFY_VAL_PROPAL=التحقق من صحة اقتراح العملاء
PredefinedMailTest=هذا هو الاختبار الإلكتروني. تكون مفصولة \ nThe سطرين من قبل حرف إرجاع.
PredefinedMailTestHtml=هذا هو البريد <b>الاختبار</b> (الاختبار يجب أن تكون في كلمة جريئة). <br> وتفصل بين الخطين من قبل حرف إرجاع.
CalculatedWeight=يحسب الوزن
CalculatedVolume=يحسب حجم
Length=طول
LengthUnitm=م
LengthUnitdm=مارك ألماني
LengthUnitcm=الطول
LengthUnitmm=مم
Surface=منطقة
SurfaceUnitm2=m2
SurfaceUnitdm2=dm2
SurfaceUnitcm2=cm2
SurfaceUnitmm2=mm2
EMailTextProposalValidated=وقد تم اقتراح %s التحقق من صحة.
EMailTextOrderValidated=وقد تم التحقق من صحة %s النظام.
ResizeDesc=أدخل عرض جديدة <b>أو</b> ارتفاع جديد. وستبقى نسبة خلال تغيير حجم...
NewLength=عرض جديد
NewHeight=ارتفاع جديد
NewSizeAfterCropping=حجم جديد بعد الاقتصاص
DefineNewAreaToPick=تحديد منطقة جديدة على الصورة لاختيار (اليسار انقر على الصورة ثم اسحب حتى تصل إلى الزاوية المقابلة)
CurrentInformationOnImage=معلومات عن الصورة الحالية
YouReceiveMailBecauseOfNotification=تلقيت هذه الرسالة لأنه قد تم إضافة البريد الإلكتروني الخاص بك إلى قائمة الأهداف التي يتعين على علم الأحداث ولا سيما في صناعة البرمجيات من %s %s.
YouReceiveMailBecauseOfNotification2=هذا الحدث هو ما يلي :
ExternalSites=المواقع الخارجية
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:18:13).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
PredefinedMailContentSendSupplierOrder=ستجد هنا ن لدينا نظام \ __ORDERREF__ \ nSincerely \ ن \ ن
WeightUnitpound=جنيه
VolumeUnitounce=أوقية
VolumeUnitlitre=لتر
VolumeUnitgallon=غالون
SizeUnitinch=بوصة
SizeUnitfoot=قدم
ImageEditor=صورة المحرر
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:56:48).

View File

@@ -122,7 +122,7 @@ ProductAssociationList=قائمة المنتجات المتعلقة / الخدم
ErrorAssociationIsFatherOfThis=واحد من اختيار المنتج الأم الحالية المنتج ErrorAssociationIsFatherOfThis=واحد من اختيار المنتج الأم الحالية المنتج
DeleteProduct=حذف المنتجات / الخدمات DeleteProduct=حذف المنتجات / الخدمات
ConfirmDeleteProduct=هل أنت متأكد من حذف هذه المنتجات / الخدمات؟ ConfirmDeleteProduct=هل أنت متأكد من حذف هذه المنتجات / الخدمات؟
ProductDeleted=المنتجات والخدمات &quot;٪ ل&quot; حذفها من قاعدة البيانات. ProductDeleted=المنتجات والخدمات "٪ ل" حذفها من قاعدة البيانات.
DeletePicture=حذف الصورة DeletePicture=حذف الصورة
ConfirmDeletePicture=هل أنت متأكد من أنك تريد حذف هذه الصورة؟ ConfirmDeletePicture=هل أنت متأكد من أنك تريد حذف هذه الصورة؟
ExportDataset_produit_1=المنتجات ExportDataset_produit_1=المنتجات
@@ -143,7 +143,7 @@ NoSupplierPriceDefinedForThisProduct=لا مورد السعر الكمية ال
RecordedProducts=المنتجات المسجلة RecordedProducts=المنتجات المسجلة
RecordedProductsAndServices=المنتجات / الخدمات المسجلة RecordedProductsAndServices=المنتجات / الخدمات المسجلة
GenerateThumb=يولد الإبهام GenerateThumb=يولد الإبهام
ProductCanvasAbility=خاصة استخدام &quot;قماش&quot; addons ProductCanvasAbility=خاصة استخدام "قماش" addons
ServiceNb=خدمة ق # ٪ ServiceNb=خدمة ق # ٪
ListProductByPopularity=قائمة المنتجات / الخدمات شعبية ListProductByPopularity=قائمة المنتجات / الخدمات شعبية
Finished=المنتجات المصنعة Finished=المنتجات المصنعة
@@ -161,3 +161,30 @@ ClonePricesProduct=استنساخ الرئيسية معلومات والأسعا
LastRecordedProductsAndServices=٪ ق الماضي سجلت المنتجات / الخدمات LastRecordedProductsAndServices=٪ ق الماضي سجلت المنتجات / الخدمات
ContractStatusToRun=ألف mettre én الخدمة ContractStatusToRun=ألف mettre én الخدمة
// STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44). // STOP - Lines generated via autotranslator.php tool (2009-08-19 21:04:44).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:13:51).
// Reference language: en_US
ProductAccountancyBuyCode=المحاسبة الرمز (شراء)
ProductAccountancySellCode=المحاسبة الرمز (بيع)
SellingPriceHT=سعر البيع (صافي الضرائب)
SellingPriceTTC=سعر البيع (شركة الضريبية)
ListProductServiceByPopularity=قائمة المنتجات / الخدمات حسب الشهرة
ListServiceByPopularity=قائمة الخدمات حسب الشهرة
ProductIsUsed=ويستخدم هذا المنتج
NewRefForClone=المرجع. من المنتجات الجديدة / خدمة
CustomerPrices=أسعار العملاء
SuppliersPrices=أسعار الموردين
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:14:06).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> ar_AR
Sell=مبيعات
Buy=مشتريات
OnBuy=شراؤها
ProductStatusOnBuy=متاح
ProductStatusNotOnBuy=عفا عليها الزمن
ProductStatusOnBuyShort=متاح
ProductStatusNotOnBuyShort=عفا عليها الزمن
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:36:07).

View File

@@ -1,22 +1,22 @@
/* /*
* Language code: ar_AR * Language code: ar_AR
* Automatic generated via autotranslator.php tool * Automatic generated via autotranslator.php tool
* Generation date 2009-08-11 13:27:01 * Generation date 2009-08-11 13:27:01
*/ */
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// START - Lines generated via autotranslator.php tool. // START - Lines generated via autotranslator.php tool.
// Reference language: en_US // Reference language: en_US
CHARSET=UTF-8 CHARSET=UTF-8
Shop=متجر Shop=متجر
ShopWeb=تسوق على الإنترنت ShopWeb=تسوق على الإنترنت
LastOrders=أوامر الماضي LastOrders=أوامر الماضي
OnStandBy=على اهبة الاستعداد OnStandBy=على اهبة الاستعداد
TreatmentInProgress=التقدم في العلاج TreatmentInProgress=التقدم في العلاج
LastCustomers=آخر الزبائن LastCustomers=آخر الزبائن
OSCommerceShop=OSCommerce متجر OSCommerceShop=OSCommerce متجر
OSCommerce=OSCommerce OSCommerce=OSCommerce
AddProd=بيع على الانترنت AddProd=بيع على الانترنت
// Date 2009-08-11 13:27:01 // Date 2009-08-11 13:27:01
// STOP - Lines generated via parser // STOP - Lines generated via parser

File diff suppressed because it is too large Load Diff

View File

@@ -8,10 +8,10 @@ BoxLastCustomerBills=Últimes factures a clients
BoxOldestUnpaidCustomerBills=Factures a clients més antigues pendents de pagament BoxOldestUnpaidCustomerBills=Factures a clients més antigues pendents de pagament
BoxOldestUnpaidSupplierBills=Factures de proveïdors més antigues pendents de pagament BoxOldestUnpaidSupplierBills=Factures de proveïdors més antigues pendents de pagament
BoxLastProposals=Últims pressupostos BoxLastProposals=Últims pressupostos
BoxLastProspects=Últims clients potencials BoxLastProspects=Últims clients potencials modificats
BoxLastCustomers=Últims clients BoxLastCustomers=Últims clients modificats
BoxLastSuppliers=Últims proveïdors modificats
BoxLastCustomerOrders=Últimes comandes BoxLastCustomerOrders=Últimes comandes
BoxLastSuppliers=Últims proveïdors
BoxLastBooks=Últims books BoxLastBooks=Últims books
BoxLastActions=Últimes accions BoxLastActions=Últimes accions
BoxLastContracts=Últims contractes BoxLastContracts=Últims contractes
@@ -24,13 +24,16 @@ BoxTitleNbOfCustomers=Nombre de clients
BoxTitleLastRssInfos=Les %s últimes infos de %s BoxTitleLastRssInfos=Les %s últimes infos de %s
BoxTitleLastProducts=Els %s darrers productes/serveis registrats BoxTitleLastProducts=Els %s darrers productes/serveis registrats
BoxTitleLastCustomerOrders=Les %s darreres comandes de clients modificades BoxTitleLastCustomerOrders=Les %s darreres comandes de clients modificades
BoxTitleLastSuppliers=Els %s darrers proveïdors modificats BoxTitleLastSuppliers=Els %s darrers proveïdors registrats
BoxTitleLastCustomers=Els %s darrers clients modificats BoxTitleLastCustomers=Els %s darrers clients registrats
BoxTitleLastModifiedSuppliers=Els %s últims proveïdors modificats
BoxTitleLastModifiedCustomers=Els %s últims clients modificats
BoxTitleLastCustomersOrProspects=Els %s darrers clients o clients potencials registrats BoxTitleLastCustomersOrProspects=Els %s darrers clients o clients potencials registrats
BoxTitleLastPropals=Els %s darrers pressupostos registrats BoxTitleLastPropals=Els %s darrers pressupostos registrats
BoxTitleLastCustomerBills=Les %s últimes factures a clients modificades BoxTitleLastCustomerBills=Les %s últimes factures a clients modificades
BoxTitleLastSupplierBills=Les %s últimes factures de proveïdors modificades BoxTitleLastSupplierBills=Les %s últimes factures de proveïdors modificades
BoxTitleLastProspects=Els %s darrers clients potencials modificats BoxTitleLastProspects=Els %s darrers clients potencials registrats
BoxTitleLastModifiedProspects=Els %s últims clients potencials modificats
BoxTitleLastProductsInContract=Els %s darrers productes/serveis contractats BoxTitleLastProductsInContract=Els %s darrers productes/serveis contractats
BoxTitleOldestUnpaidCustomerBills=Les %s factures més antigues a clients pendents de cobrament BoxTitleOldestUnpaidCustomerBills=Les %s factures més antigues a clients pendents de cobrament
BoxTitleOldestUnpaidSupplierBills=Les %s factures més antigues de proveïdors pendents de pagament BoxTitleOldestUnpaidSupplierBills=Les %s factures més antigues de proveïdors pendents de pagament
@@ -52,6 +55,9 @@ NoRecordedInvoices=Sense factures a clients registrades
NoUnpaidCustomerBills=Sense factures a clients pendents de cobrament NoUnpaidCustomerBills=Sense factures a clients pendents de cobrament
NoRecordedSupplierInvoices=Sense factures de proveïdors NoRecordedSupplierInvoices=Sense factures de proveïdors
NoUnpaidSupplierBills=Sense factures de proveïdors pendents de pagament NoUnpaidSupplierBills=Sense factures de proveïdors pendents de pagament
NoModifiedSupplierBills=Sense factures de proveïdors modificades
NoRecordedProducts=Sense productes/serveis registrats NoRecordedProducts=Sense productes/serveis registrats
NoRecordedProspects=Sense clients potencials registrats NoRecordedProspects=Sense clients potencials registrats
NoContractedProducts=Sense productes/serveis contractats NoContractedProducts=Sense productes/serveis contractats
NoRecordedContracts=Sense contractes registrats

View File

@@ -1,66 +1,75 @@
# Dolibarr language file - ca_ES - errors # Dolibarr language file - ca_ES - errors
CHARSET= UTF-8 CHARSET=UTF-8
MenuManager= Gestor de menú MenuManager=Gestor de menú
Error= Error Error=Error
Errors= Errors Errors=Errors
ErrorBadEMail= e-mail %s incorrecte ErrorBadEMail=e-mail %s incorrecte
ErrorBadUrl= Url %s invàlida ErrorBadUrl=Url %s invàlida
ErrorLoginAlreadyExists= El login %s ja existeix. ErrorLoginAlreadyExists=El login %s ja existeix.
ErrorGroupAlreadyExists= El grup %s ja existeix. ErrorGroupAlreadyExists=El grup %s ja existeix.
ErrorRecordNotFound= Registre no trobat ErrorRecordNotFound=Registre no trobat
ErrorDuplicateTrigger= Un arxiu trigger de nom '<b>%s</b>' està carregat. Treure el doble de la carpeta '<b>%s</b>'. ErrorDuplicateTrigger=Un arxiu trigger de nom '<b>%s</b>' està carregat. Treure el doble de la carpeta '<b>%s</b>'.
ErrorFailToCreateFile= Error al crear l'arxiu '<b>%s</b>' ErrorFailToCreateFile=Error al crear l'arxiu '<b>%s</b>'
ErrorFailToDeleteFile= Error al suprimir el fitxer '<b>%s</b>'. ErrorFailToDeleteFile=Error al suprimir el fitxer '<b>%s</b>'.
ErrorFailToRenameDir= Error al renombar la carpeta '<b>%s</b>' a '<b>%s</b>'. ErrorFailToRenameDir=Error al renombar la carpeta '<b>%s</b>' a '<b>%s</b>'.
ErrorFailToCreateDir= Error al crear la carpeta '<b>%s</b>' ErrorFailToCreateDir=Error al crear la carpeta '<b>%s</b>'
ErrorFailToDeleteDir= Error en eliminar la carpeta '<b>%s</b>'. ErrorFailToDeleteDir=Error en eliminar la carpeta '<b>%s</b>'.
ErrorFailedToDeleteJoinedFiles= Impossible eliminar l'entitat ja que té arxius adjunts. Esborreu abans els arxius adjunts ErrorFailedToDeleteJoinedFiles=Impossible eliminar l'entitat ja que té arxius adjunts. Esborreu abans els arxius adjunts
ErrorThisContactIsAlreadyDefinedAsThisType= Aquest contacte ja està definit com a contacte per a aquest tipus. ErrorThisContactIsAlreadyDefinedAsThisType=Aquest contacte ja està definit com a contacte per a aquest tipus.
ErrorCashAccountAcceptsOnlyCashMoney= Aquesta compte bancari és de tipus caixa i només accepta el mètode de pagament de tipus <b>espècie</b>. ErrorCashAccountAcceptsOnlyCashMoney=Aquesta compte bancari és de tipus caixa i només accepta el mètode de pagament de tipus <b>espècie</b>.
ErrorFromToAccountsMustDiffers= El compte origen i destinació han de ser diferents. ErrorFromToAccountsMustDiffers=El compte origen i destinació han de ser diferents.
ErrorBadThirdPartyName= Nom de tercer incorrecte ErrorBadThirdPartyName=Nom de tercer incorrecte
ErrorBadCustomerCodeSyntax= La sintaxi del codi client és incorrecta ErrorBadCustomerCodeSyntax=La sintaxi del codi client és incorrecta
ErrorCustomerCodeRequired= Codi client obligatori ErrorCustomerCodeRequired=Codi client obligatori
ErrorCustomerCodeAlreadyUsed= Codi de client ja utilitzat ErrorCustomerCodeAlreadyUsed=Codi de client ja utilitzat
ErrorPrefixRequired= Prefix obligatori ErrorPrefixRequired=Prefix obligatori
ErrorUrlNotValid= L'adreça del lloc web és incorrecta ErrorUrlNotValid=L'adreça del lloc web és incorrecta
ErrorBadSupplierCodeSyntax= La sintaxi del codi proveïdor és incorrecta ErrorBadSupplierCodeSyntax=La sintaxi del codi proveïdor és incorrecta
ErrorSupplierCodeRequired= Codi proveïdor obligatori ErrorSupplierCodeRequired=Codi proveïdor obligatori
ErrorSupplierCodeAlreadyUsed= Codi de proveïdor ja utilitzat ErrorSupplierCodeAlreadyUsed=Codi de proveïdor ja utilitzat
ErrorBadParameters= Paràmetres incorrectes ErrorBadParameters=Paràmetres incorrectes
ErrorFailedToWriteInDir= No es pot escriure a la carpeta %s ErrorFailedToWriteInDir=No es pot escriure a la carpeta %s
ErrorFoundBadEmailInFile= Trobada sintaxi incorrecta en email a %s línies en fitxer (exemple linia %s amb email=%s) ErrorFoundBadEmailInFile=Trobada sintaxi incorrecta en email a %s línies en fitxer (exemple linia %s amb email=%s)
ErrorUserCannotBeDelete= L'usuari no pot ser eliminat. Potser estigui associat a elements de Dolibarr. ErrorUserCannotBeDelete=L'usuari no pot ser eliminat. Potser estigui associat a elements de Dolibarr.
ErrorFieldsRequired= No s'han indicat alguns camps obligatoris ErrorFieldsRequired=No s'han indicat alguns camps obligatoris
ErrorFailedToCreateDir= Error en la creació d'una carpeta. Comprovi que l'usuari del servidor web té drets d'escriptura en les carpetes de documents de Dolibarr. Si el paràmetre <b>safe_mode</b> està actiu en aquest PHP, Comproveu que els fitxers php dolibarr pertanyen a l'usuari del servidor web. ErrorFailedToCreateDir=Error en la creació d'una carpeta. Comprovi que l'usuari del servidor web té drets d'escriptura en les carpetes de documents de Dolibarr. Si el paràmetre <b>safe_mode</b> està actiu en aquest PHP, Comproveu que els fitxers php dolibarr pertanyen a l'usuari del servidor web.
ErrorNoMailDefinedForThisUser= E-Mail no definit per a aquest usuari ErrorNoMailDefinedForThisUser=E-Mail no definit per a aquest usuari
ErrorFeatureNeedJavascript= Aquesta funcionalitat requereix javascript actiu per funcionar. Modifiqueu en configuració->entorn. ErrorFeatureNeedJavascript=Aquesta funcionalitat requereix javascript actiu per funcionar. Modifiqueu en configuració->entorn.
ErrorTopMenuMustHaveAParentWithId0= Un menú del tipus 'Superior' no pot tenir un menú pare. Poseu 0 en l'ID pare o busqueu un menu del tipus 'Esquerra' ErrorTopMenuMustHaveAParentWithId0=Un menú del tipus 'Superior' no pot tenir un menú pare. Poseu 0 en l'ID pare o busqueu un menu del tipus 'Esquerra'
ErrorLeftMenuMustHaveAParentId= Un menú del tipus 'Esquerra' ha de tenir un ID de pare ErrorLeftMenuMustHaveAParentId=Un menú del tipus 'Esquerra' ha de tenir un ID de pare
ErrorFileNotFound= Arxiu no trobat (ruta incorrecta, permisos incorrectes o accés prohibit pel paràmetre openbasedir) ErrorFileNotFound=Arxiu no trobat (ruta incorrecta, permisos incorrectes o accés prohibit pel paràmetre openbasedir)
ErrorDirNotFound= Directori <b>%s</b> no trobat (Ruta incorrecta, permisos inadequats o accés prohibit pel paràmetre PHP openbasedir o safe_mode) ErrorDirNotFound=Directori <b>%s</b> no trobat (Ruta incorrecta, permisos inadequats o accés prohibit pel paràmetre PHP openbasedir o safe_mode)
ErrorFunctionNotAvailableInPHP= La funció <b>%s</b> és requerida per aquesta característica, però no es troba disponible en aquesta versió/instal·lació de PHP. ErrorFunctionNotAvailableInPHP=La funció <b>%s</b> és requerida per aquesta característica, però no es troba disponible en aquesta versió/instal·lació de PHP.
ErrorDirAlreadyExists= Ja existeix una carpeta amb aquest nom. ErrorDirAlreadyExists=Ja existeix una carpeta amb aquest nom.
ErrorFieldCanNotContainSpecialCharacters= El camp <b>%s</b> no ha de contenir caràcters especials ErrorFileAlreadyExists=Ja existeix un fitxer amb aquest nom.
WarningAllowUrlFopenMustBeOn= El paràmetre <b>allow_url_fopen</b> ha de ser especificat a <b>on</b> a l'arxiu <b>php.ini</b> per disposar d'aquest mòdul completament actiu. Ha de modificar aquest arxiu manualment ErrorPartialFile=Arxiu no rebut íntegrament pel servidor.
WarningBuildScriptNotRunned= L'script <b>%s</b> encara no ha executat la construcció de gràfics. ErrorNoTmpDir=Directori temporal de recepció %s inexistent
WarningBookmarkAlreadyExists= Ja existeix un marcador amb aquest títol o aquest URL. ErrorUploadBlockedByAddon=Pujada bloquejada per un plugin PHP/Apache.
WarningPassIsEmpty= Atenció: La contrasenya de la base de dades està buida. Això és un forat de seguretat. Cal afegir una contrasenya a la seva base de dades i canviar el seu arxiu conf.php per reflectir això. ErrorFileSizeTooLarge=La mida del fitxer és massa gran.
ErrorNoAccountancyModuleLoaded= Mòdul de comptabilitat no activat ErrorFieldCanNotContainSpecialCharacters=El camp <b>%s</b> no ha de contenir caràcters especials
ErrorExportDuplicateProfil= El nom del perfil ja existeix per a aquest lot d'exportació WarningSafeModeOnCheckExecDir=Atenció, està activada l'opció PHP <b>safe_mode</b>, la comanda ha d'estar dins d'un directori declarat dins del paràmetre php <b>safe_mode_exec_dir</b>.
ErrorLDAPSetupNotComplete= La configuració Dolibarr-LDAP és incompleta. WarningAllowUrlFopenMustBeOn=El paràmetre <b>allow_url_fopen</b> ha de ser especificat a <b>on</b> a l'arxiu <b>php.ini</b> per disposar d'aquest mòdul completament actiu. Ha de modificar aquest arxiu manualment
ErrorLDAPMakeManualTest= S'ha creat un arxiu .ldif a la carpeta %s. Tracti de carregar manualment aquest arxiu des de la línia de comandes per obtenir més informació sobre l'error. WarningBuildScriptNotRunned=L'script <b>%s</b> encara no ha executat la construcció de gràfics.
ErrorCantSaveADoneUserWithZeroPercentage= No es pot canviar una acció al estat no començada si teniu un usuari realitzant de l'acció. WarningBookmarkAlreadyExists=Ja existeix un marcador amb aquest títol o aquest URL.
ErrorBillRefAlreadyExists= La referència utilitzada per a la creació ja existeix WarningPassIsEmpty=Atenció: La contrasenya de la base de dades està buida. Això és un forat de seguretat. Cal afegir una contrasenya a la seva base de dades i canviar el seu arxiu conf.php per reflectir això.
ErrorPleaseTypeBankTransactionReportName= Introduïu el nom del registre bancari sobre el qual l'escrit està constatat (format AAAAMM o AAAMMJJ) ErrorNoAccountancyModuleLoaded=Mòdul de comptabilitat no activat
ErrorRecordHasChildren= No es pot esborrar el registre perquè té fills. ErrorExportDuplicateProfil=El nom del perfil ja existeix per a aquest lot d'exportació
WarningConfFileMustBeReadOnly= Atenció, el seu fitxer (<b>htdocs/conf/conf.php</b>) és accessible en escriptura al servidor web. Això representa un error seriós de seguretat. Modifiqueu els permisos per ser llegit únicament pel compte que executa el servidor Web.Si està executant Windows en undisco amb format FAT, sigui conscient que aquest sistema d'arxius no protegeix els arxius i no ofereix cap solució per reduir els riscos de manipulació d'aquest fitxer. ErrorLDAPSetupNotComplete=La configuració Dolibarr-LDAP és incompleta.
ErrorModuleRequireJavascript= Javascript ha d'estar activat per a que aquesta opció pugui utilitzar-se. Per activar/desactivar JavaScript, aneu al menú Inici->Configuració->Entorn. ErrorLDAPMakeManualTest=S'ha creat un arxiu .ldif a la carpeta %s. Tracti de carregar manualment aquest arxiu des de la línia de comandes per obtenir més informació sobre l'error.
ErrorPasswordsMustMatch= Les 2 contrasenyes indicades s'han de correspondre ErrorCantSaveADoneUserWithZeroPercentage=No es pot canviar una acció al estat no començada si teniu un usuari realitzant de l'acció.
ErrorContactEMail= S'ha produït un error tècnic. Contacti amb l'administrador al e-mail <b>%s</b>, indicant el codi d'error <b>%s</b> en el seu missatge, o pot també adjuntar una còpia de pantalla d'aquesta pàgina. ErrorRefAlreadyExists=La referència utilitzada per a la creació ja existeix
ErrorWrongValueForField= Valor incorrecte per al camp nombre <b>%s</b> (el valor '<b>%s</b>' no compleix amb la regla <b>%s</b>) ErrorPleaseTypeBankTransactionReportName=Introduïu el nom del registre bancari sobre el qual l'escrit està constatat (format AAAAMM o AAAMMJJ)
ErrorsOnXLines= Errors a <b>%s</b> línies font ErrorRecordHasChildren=No es pot esborrar el registre perquè té fills.
WarningsOnXLines= Alertes a <b>%s</b> línies font WarningConfFileMustBeReadOnly=Atenció, el seu fitxer (<b>htdocs/conf/conf.php</b>) és accessible en escriptura al servidor web. Això representa un error seriós de seguretat. Modifiqueu els permisos per ser llegit únicament pel compte que executa el servidor Web.Si està executant Windows en undisco amb format FAT, sigui conscient que aquest sistema d'arxius no protegeix els arxius i no ofereix cap solució per reduir els riscos de manipulació d'aquest fitxer.
ErrorFileIsInfectedWithAVirus= L'antivirus no ha pogut validar aquest arxiu (és probable que estigui infectat per un virus)! ErrorModuleRequireJavascript=Javascript ha d'estar activat per a que aquesta opció pugui utilitzar-se. Per activar/desactivar JavaScript, aneu al menú Inici->Configuració->Entorn.
ErrorSpecialCharNotAllowedForField= Els caràcters especials no són admesos pel camp "%s" ErrorPasswordsMustMatch=Les 2 contrasenyes indicades s'han de correspondre
WarningNoDocumentModelActivated= No hi ha cap model per a la generació del document activat. Es prendrà un model per defecte fins que es configuri el mòdul. ErrorContactEMail=S'ha produït un error tècnic. Contacti amb l'administrador al e-mail <b>%s</b>, indicant el codi d'error <b>%s</b> en el seu missatge, o pot també adjuntar una còpia de pantalla d'aquesta pàgina.
ErrorWrongValueForField=Valor incorrecte per al camp nombre <b>%s</b> (el valor '<b>%s</b>' no compleix amb la regla <b>%s</b>)
ErrorsOnXLines=Errors a <b>%s</b> línies font
WarningsOnXLines=Alertes a <b>%s</b> línies font
ErrorFileIsInfectedWithAVirus=L'antivirus no ha pogut validar aquest arxiu (és probable que estigui infectat per un virus)!
ErrorSpecialCharNotAllowedForField=Els caràcters especials no són admesos pel camp "%s"
WarningNoDocumentModelActivated=No hi ha cap model per a la generació del document activat. Es prendrà un model per defecte fins que es configuri el mòdul.
ErrorDatabaseParameterWrong=El paràmetre de configuració de la base de dades '<b>%s</b>' té un valor no compatible per una instal lació de Dolibarr (ha de tenir el valor '<b>%s</b>').
ErrorNumRefModel=Hi ha una referència a la base de dades (%s) i és incompatible amb aquesta numeració. Elimineu la línia o renomeneu la referència per activar aquest mòdul.
ErrorQtyTooLowForThisSupplier= Quantitat insuficient per aquest proveïdor

View File

@@ -7,7 +7,9 @@ Language_da_DA=Danès
Language_de_DE=Alemany Language_de_DE=Alemany
Language_en_AU=Anglès (Australia) Language_en_AU=Anglès (Australia)
Language_en_GB=Anglès (Regne Unit) Language_en_GB=Anglès (Regne Unit)
Language_en_IN=Anglès (Índia)
Language_en_US=Anglès (Estats Units) Language_en_US=Anglès (Estats Units)
Language_es_AR=Espanyol (Argentina)
Language_es_ES=Espanyol Language_es_ES=Espanyol
Language_fi_FI=Finès Language_fi_FI=Finès
Language_fr_BE=Francès (Bèlgica) Language_fr_BE=Francès (Bèlgica)
@@ -23,4 +25,8 @@ Language_pt_BR=Portuguès (Brasil)
Language_pt_PT=Portuguès Language_pt_PT=Portuguès
Language_ro_RO=Romanès Language_ro_RO=Romanès
Language_ru_RU=Rus Language_ru_RU=Rus
Language_tr_TR=Turc Language_tr_TR=Turc
Language_sl_SL=Eslovè
Language_sv_SV=Suec
Language_zh_CN=Xinès
Language_is_IS=Islandès

View File

@@ -1,11 +1,12 @@
# Dolibarr language file - ca_ES - main # Dolibarr language file - ca_ES - main
CHARSET=UTF-8 CHARSET=UTF-8
DIRECTION=ltr DIRECTION=ltr
SeparatorDecimal=, SeparatorDecimal=,
SeparatorThousand= SeparatorThousand=
FormatDateShort=%d/%m/%Y FormatDateShort=%d/%m/%Y
FormatDateShortJava=dd/MM/yyyy FormatDateShortJava=dd/MM/yyyy
FormatHourShort=%H:%M FormatHourShort=%H:%M
FormatHourShortDuration=%H:%M
FormatDateTextShort=%d %b %Y FormatDateTextShort=%d %b %Y
FormatDateText=%d %B %Y FormatDateText=%d %B %Y
FormatDateHourShort=%d/%m/%Y %H:%M FormatDateHourShort=%d/%m/%Y %H:%M
@@ -110,7 +111,7 @@ AddActionDone=Afegir acció realitzada
Close=Tancar Close=Tancar
Close2=Tancar Close2=Tancar
Confirm=Confirmar Confirm=Confirmar
ConfirmSendCardByMail=Voleu enviar aquesta fitxa per e-mail? ConfirmSendCardByMail=ConfirmSendCardByMail=Vol enviar el contingut d'aquesta fitxa per e-mail a l'adreça <b>%s</b>?
Delete=Eliminar Delete=Eliminar
Remove=Retirar Remove=Retirar
Resiliate=Cancel·lar Resiliate=Cancel·lar
@@ -172,7 +173,6 @@ Action=Acció
Model=Model Model=Model
DefaultModel=Model per defecte DefaultModel=Model per defecte
About=Sobre About=Sobre
WelcomeString=<font class="body">Som</font> %s<font class="body">, i es connecta com</font> %s
Number=Número Number=Número
NumberByMonth=Nombre per mes NumberByMonth=Nombre per mes
Numero=Número Numero=Número
@@ -237,7 +237,7 @@ Quadri=Trimistre
MonthOfDay=Mes del dia MonthOfDay=Mes del dia
HourShort=H HourShort=H
Rate=Tipus Rate=Tipus
Bytes=Octets Bytes=Bytes
KiloBytes=Kilobytes KiloBytes=Kilobytes
MegaBytes=Megabytes MegaBytes=Megabytes
GigaBytes=Gigabytes GigaBytes=Gigabytes
@@ -283,6 +283,8 @@ TotalHT=Import
TotalTTC=Total TotalTTC=Total
TotalTTCToYourCredit=Total a crèdit TotalTTCToYourCredit=Total a crèdit
TotalVAT=Total IVA TotalVAT=Total IVA
TotalLT1ES=Total RE
TotalLT2ES=Total IRPF
IncludedVAT=IVA inclòs IncludedVAT=IVA inclòs
HT=Sense IVA HT=Sense IVA
TTC=IVA inclòs TTC=IVA inclòs
@@ -311,7 +313,7 @@ ActionRunningNotStarted=No començat
ActionRunningShort=Començat ActionRunningShort=Començat
ActionDoneShort=Acabat ActionDoneShort=Acabat
CompanyFoundation=Empresa o institució CompanyFoundation=Empresa o institució
ContactsForCompany=Contactes d'aquest tercer ContactsForCompany=Contactes/adreces d'aquest tercer
ActionsOnCompany=Accions front a aquest tercer ActionsOnCompany=Accions front a aquest tercer
NActions=%s accions NActions=%s accions
NActionsLate=%s en retard NActionsLate=%s en retard
@@ -325,10 +327,11 @@ Duration=Duració
TotalDuration=Duració total TotalDuration=Duració total
Summary=Resum Summary=Resum
MyBookmarks=Els meus marcadors MyBookmarks=Els meus marcadors
OtherInformationsBoxes=Altres caixes d'informació OtherInformationsBoxes=Altres panells d'informació
DolibarrBoard=Indicadors DolibarrBoard=Indicadors
DolibarrStateBoard=Estadístiques DolibarrStateBoard=Estadístiques
DolibarrWorkBoard=Indicadors de treball DolibarrWorkBoard=Indicadors de treball
Available=Disponible
NotYetAvailable=Encara no disponible NotYetAvailable=Encara no disponible
NotAvailable=No disponible NotAvailable=No disponible
Popularity=Popularitat Popularity=Popularitat
@@ -368,7 +371,7 @@ ByUsers=Per usuari
Links=Links Links=Links
Link=Link Link=Link
Receipts=Rebuts Receipts=Rebuts
Rejects=Rebutjat Rejects=Devolucions
Preview=Vista prèvia Preview=Vista prèvia
NextStep=Següent pas NextStep=Següent pas
PreviousStep=Pas anterior PreviousStep=Pas anterior
@@ -500,7 +503,7 @@ RecordModifiedSuccessfully=Registre modificat amb èxit
AutomaticCode=Creació automàtica de codi AutomaticCode=Creació automàtica de codi
NotManaged=No generat NotManaged=No generat
FeatureDisabled=Funció desactivada FeatureDisabled=Funció desactivada
MoveBox=Desplaçar la caixa %s MoveBox=Desplaçar el panell %s
Offered=Oferta Offered=Oferta
NotEnoughPermissions=No té autorització per aquesta acció NotEnoughPermissions=No té autorització per aquesta acció
SessionName=Nom sesió SessionName=Nom sesió
@@ -560,6 +563,9 @@ ValidateBefore=Per poder utilitzar aquesta funció ha de validar la fitxa
Visibility=Visibilitat Visibility=Visibilitat
Private=Privat Private=Privat
Hidden=Memòria cau Hidden=Memòria cau
Resources=Recursos
Source=Orige
Prefix=Prefixe
# Week day # Week day
Day1=Dillus Day1=Dillus
Day2=Dimarts Day2=Dimarts

View File

@@ -1,151 +1,155 @@
# Dolibarr language file - ca_ES - members # Dolibarr language file - ca_ES - members
CHARSET= UTF-8 CHARSET=UTF-8
MembersArea= Àrea membres MembersArea=Àrea membres
PublicMembersArea= Àrea pública dels membres PublicMembersArea=Àrea pública dels membres
MemberCard= Fitxa membre MemberCard=Fitxa membre
SubscriptionCard= Fitxa cotització SubscriptionCard=Fitxa cotització
Member= Membre Member=Membre
Members= Membres Members=Membres
ShowMember= Mostrar fitxa membre ShowMember=Mostrar fitxa membre
MemberAccount= Login membre MemberAccount=Login membre
UserNotLinkedToMember= Usuari no vinculat a un membre UserNotLinkedToMember=Usuari no vinculat a un membre
MembersTickets= Etiquetes membres MembersTickets=Etiquetes membres
FundationMembers= Membres de l'associació FundationMembers=Membres de l'associació
Attributs= Atributs Attributs=Atributs
ErrorMemberTypeNotDefined= No s'ha indicat el tipus de membre ErrorMemberTypeNotDefined=No s'ha indicat el tipus de membre
ListOfPublicMembers= Llista de membres públics ListOfPublicMembers=Llista de membres públics
ListOfValidatedPublicMembers= Llista de membres públics validats ListOfValidatedPublicMembers=Llista de membres públics validats
ErrorThisMemberIsNotPublic= Aquest membre no és públic ErrorThisMemberIsNotPublic=Aquest membre no és públic
ErrorMemberIsAlreadyLinkedToThisThirdParty= Un altre membre (nom: <b>%s</b>, login: <b>%s</b>) està vinculat al tercer <b>%s</b>. Esborreu l'enllaç existent ja que un tercer només pot estar vinculat a un sol membre (i viceversa). ErrorMemberIsAlreadyLinkedToThisThirdParty=Un altre membre (nom: <b>%s</b>, login: <b>%s</b>) està vinculat al tercer <b>%s</b>. Esborreu l'enllaç existent ja que un tercer només pot estar vinculat a un sol membre (i viceversa).
ErrorUserPermissionAllowsToLinksToItselfOnly= Per raons de seguretat, ha de posseir els drets de modificació de tots els usuaris per poder vincular un membre a un usuari que no sigui vostè mateix. ErrorUserPermissionAllowsToLinksToItselfOnly=Per raons de seguretat, ha de posseir els drets de modificació de tots els usuaris per poder vincular un membre a un usuari que no sigui vostè mateix.
ThisIsContentOfYourCard= Aquí hi ha els detalls de la seva fitxa ThisIsContentOfYourCard=Aquí hi ha els detalls de la seva fitxa
CardContent= Contingut de la seva fitxa de membre CardContent=Contingut de la seva fitxa de membre
SetLinkToUser= Vincular a un usuari Dolibarr SetLinkToUser=Vincular a un usuari Dolibarr
SetLinkToThirdParty= Vincular a un tercer Dolibarr SetLinkToThirdParty=Vincular a un tercer Dolibarr
MembersCards= Carnets de membres MembersCards=Carnets de membres
MembersList= Llistat de membres MembersList=Llistat de membres
MembersListToValid= Llistat de membres esborrany (a validar) MembersListToValid=Llistat de membres esborrany (a validar)
MembersListValid= Llistat de membres validats MembersListValid=Llistat de membres validats
MembersListUpToDate= Llistat dels membres vàlids al dia d'adhesió MembersListUpToDate=Llistat dels membres vàlids al dia d'adhesió
MembersListNotUpToDate= Llistat dels membres vàlids no al dia d'adhesió MembersListNotUpToDate=Llistat dels membres vàlids no al dia d'adhesió
MembersListResiliated= Llistat dels membres donats de baixa MembersListResiliated=Llistat dels membres donats de baixa
MembersListQualified= Llistat dels membres qualificats MembersListQualified=Llistat dels membres qualificats
MenuMembersToValidate= Membres esborrany MenuMembersToValidate=Membres esborrany
MenuMembersValidated= Membres validats MenuMembersValidated=Membres validats
MenuMembersUpToDate= Membres al dia MenuMembersUpToDate=Membres al dia
MenuMembersNotUpToDate= Membres no al dia MenuMembersNotUpToDate=Membres no al dia
MenuMembersResiliated= Membres donats de baixa MenuMembersResiliated=Membres donats de baixa
DateAbonment= Data afiliació DateAbonment=Data afiliació
DateSubscription= Data afiliació DateSubscription=Data afiliació
DateNextSubscription= Data propera afiliació DateNextSubscription=Data propera afiliació
DateEndSubscription= Data fi afiliació DateEndSubscription=Data fi afiliació
EndSubscription= Fi afiliació EndSubscription=Fi afiliació
SubscriptionId= ID afiliació SubscriptionId=ID afiliació
MemberId= ID membre MemberId=ID membre
NewMember= Nou membre NewMember=Nou membre
NewType= Nou tipus de membre NewType=Nou tipus de membre
MemberType= Tipus de membre MemberType=Tipus de membre
MemberTypeId= ID tipus de membre MemberTypeId=ID tipus de membre
MemberTypeLabel= Etiqueta tipus de membre MemberTypeLabel=Etiqueta tipus de membre
MembersTypes= Tipus de membres MembersTypes=Tipus de membres
MembersAttributes= Atributs membres MembersAttributes=Atributs membres
SearchAMember= Cercar un membre SearchAMember=Cercar un membre
MemberStatusDraft= Esborrany (a validar) MemberStatusDraft=Esborrany (a validar)
MemberStatusDraftShort= A validar MemberStatusDraftShort=A validar
MemberStatusActive= Validat (en espera d'afiliació) MemberStatusActive=Validat (en espera d'afiliació)
MemberStatusActiveShort= Validat MemberStatusActiveShort=Validat
MemberStatusActiveLate= Afiliació no al dia MemberStatusActiveLate=Afiliació no al dia
MemberStatusActiveLateShort= No al dia MemberStatusActiveLateShort=No al dia
MemberStatusPaid= Afiliació al dia MemberStatusPaid=Afiliació al dia
MemberStatusPaidShort= Al dia MemberStatusPaidShort=Al dia
MemberStatusResiliated= Membre donat de baixa MemberStatusResiliated=Membre donat de baixa
MemberStatusResiliatedShort= De baixa MemberStatusResiliatedShort=De baixa
MembersStatusToValid= Membres esborrany MembersStatusToValid=Membres esborrany
MembersStatusToValidShort= Membres esborrany MembersStatusToValidShort=Membres esborrany
MembersStatusValidated= Membres validats MembersStatusValidated=Membres validats
MembersStatusPaid= Afiliacions al dia MembersStatusPaid=Afiliacions al dia
MembersStatusPaidShort= Al dia MembersStatusPaidShort=Al dia
MembersStatusNotPaid= Afiliacions no al dia MembersStatusNotPaid=Afiliacions no al dia
MembersStatusNotPaidShort= No al dia MembersStatusNotPaidShort=No al dia
MembersStatusResiliated= Membres donats de baixa MembersStatusResiliated=Membres donats de baixa
MembersStatusResiliatedShort= Membres donats de baixa MembersStatusResiliatedShort=Membres donats de baixa
NewCotisation= Nova afiliació NewCotisation=Nova afiliació
PaymentSubscription= Pagament de quotes PaymentSubscription=Pagament de quotes
EditMember= Edició membre EditMember=Edició membre
SubscriptionEndDate= Data fi afiliació SubscriptionEndDate=Data fi afiliació
NewAttribute= Nou atribut NewAttribute=Nou atribut
AttributeCode= Codi atribut AttributeCode=Codi atribut
OptionalFieldsSetup= Configuració dels camps opcionals OptionalFieldsSetup=Configuració dels camps opcionals
MembersTypeSetup= Configuració dels tipus de membres MembersTypeSetup=Configuració dels tipus de membres
NewSubscription= Nova afiliació NewSubscription=Nova afiliació
Subscription= Afiliació Subscription=Afiliació
Subscriptions= Afiliacions Subscriptions=Afiliacions
SubscriptionLate= En retard SubscriptionLate=En retard
SubscriptionNotReceived= Afiliació no rebuda SubscriptionNotReceived=Afiliació no rebuda
SubscriptionLateShort= En retard SubscriptionLateShort=En retard
SubscriptionNotReceivedShort= No rebuda SubscriptionNotReceivedShort=No rebuda
ListOfSubscriptions= Llista d'afiliacions ListOfSubscriptions=Llista d'afiliacions
SendCardByMail= Enviar fitxa SendCardByMail=Enviar fitxa per e-mail
AddMember= Afegir membre AddMember=Afegir membre
NoTypeDefinedGoToSetup= Cap tipus de membre definit. Aneu a Configuració->Tipus de membres NoTypeDefinedGoToSetup=Cap tipus de membre definit. Aneu a Configuració->Tipus de membres
NewMemberType= Nou tipus de membre NewMemberType=Nou tipus de membre
WelcomeEMail= E-mail WelcomeEMail=E-mail
SubscriptionRequired= Subjecte a cotització SubscriptionRequired=Subjecte a cotització
EditType= Edició del tipus de membre EditType=Edició del tipus de membre
DeleteType= Eliminar DeleteType=Eliminar
VoteAllowed= Vot autoritzat VoteAllowed=Vot autoritzat
Physical= Físic Physical=Físic
Moral= Moral Moral=Moral
MorPhy= Moral/Físic MorPhy=Moral/Físic
Reenable= Reactivar Reenable=Reactivar
ResiliateMember= Donar de baixa un membre ResiliateMember=Donar de baixa un membre
ConfirmResiliateMember= Esteu segur de voler donar de baixa a aquest membre? ConfirmResiliateMember=Esteu segur de voler donar de baixa a aquest membre?
DeleteMember= Eliminar un membre DeleteMember=Eliminar un membre
ConfirmDeleteMember= Esteu segur de voler eliminar aquest membre (Eliminar un membre suprimeix també totes les seves cotitzacions)? ConfirmDeleteMember=Esteu segur de voler eliminar aquest membre (Eliminar un membre suprimeix també totes les seves cotitzacions)?
DeleteSubscription= Eliminar una afiliació DeleteSubscription=Eliminar una afiliació
ConfirmDeleteSubscription= Esteu segur de voler eliminar aquesta afiliació? ConfirmDeleteSubscription=Esteu segur de voler eliminar aquesta afiliació?
Filehtpasswd= Arxiu htpasswd Filehtpasswd=Arxiu htpasswd
ValidateMember= Validar un membre ValidateMember=Validar un membre
ConfirmValidateMember= Esteu segur de voler validar a aquest membre? ConfirmValidateMember=Esteu segur de voler validar a aquest membre?
FollowingLinksArePublic= Els enllaços següents són pàgines accessibles a tothom i no protegides per cap habilitació Dolibarr. FollowingLinksArePublic=Els enllaços següents són pàgines accessibles a tothom i no protegides per cap habilitació Dolibarr.
PublicMemberList= Llistat públic de membres PublicMemberList=Llistat públic de membres
BlankSubscriptionForm= Formulari d'inscripció BlankSubscriptionForm=Formulari d'inscripció
MemberPublicLinks= Links/pàgines publiques MemberPublicLinks=Links/pàgines publiques
ExportDataset_member_1= Membres i afiliacions ExportDataset_member_1=Membres i afiliacions
LastMembers= Els %s darrers membres LastMembers=Els %s darrers membres
LastMembersModified= Els %s darrers membres modificats LastMembersModified=Els %s darrers membres modificats
AttributeName= Nom de l'atribut AttributeName=Nom de l'atribut
FieldEdition= Edició del camp %s FieldEdition=Edició del camp %s
AlphaNumOnlyCharsAndNoSpace= només carateres alfanumèrics sense espais AlphaNumOnlyCharsAndNoSpace=només carateres alfanumèrics sense espais
String= Cadena String=Cadena
Text= Text llarg Text=Text llarg
Int= Numèric Int=Numèric
Date= Data Date=Data
DateAndTime= Data i hora DateAndTime=Data i hora
PublicMemberCard= Fitxa pública membre PublicMemberCard=Fitxa pública membre
MemberNotOrNoMoreExpectedToSubscribe= No sotmesa a cotització MemberNotOrNoMoreExpectedToSubscribe=No sotmesa a cotització
AddSubscription= Afegir afiliació AddSubscription=Afegir afiliació
ShowSubscription= Mostrar afiliació ShowSubscription=Mostrar afiliació
MemberModifiedInDolibarr= Membre modificat en Dolibarr MemberModifiedInDolibarr=Membre modificat en Dolibarr
SendAnEMailToMember= Enviar e-mail d'informació al membre (E-mail: <b>%s</b>) SendAnEMailToMember=Enviar e-mail d'informació al membre (E-mail: <b>%s</b>)
DescADHERENT_AUTOREGISTER_MAIL_SUBJECT= Assumpte del e-mail enviat quan un convidat es a autoinscrigui DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=Assumpte del e-mail enviat quan un convidat es a autoinscrigui
DescADHERENT_AUTOREGISTER_MAIL= E-mail enviat quan un convidat es autoinscrigui DescADHERENT_AUTOREGISTER_MAIL=E-mail enviat quan un convidat es autoinscrigui
DescADHERENT_MAIL_VALID_SUBJECT= Assumpte del correu electrònic de validació de membre DescADHERENT_MAIL_VALID_SUBJECT=Assumpte del correu electrònic de validació de membre
DescADHERENT_MAIL_VALID= E-mail de validació de membre DescADHERENT_MAIL_VALID=E-mail de validació de membre
DescADHERENT_MAIL_COTIS_SUBJECT= Assumpte del correu electrònic de validació de cotització DescADHERENT_MAIL_COTIS_SUBJECT=Assumpte del correu electrònic de validació de cotització
DescADHERENT_MAIL_COTIS= E-mail de validació d'una afiliació DescADHERENT_MAIL_COTIS=E-mail de validació d'una afiliació
DescADHERENT_MAIL_RESIL_SUBJECT= Assumpte d'e-mail de baixa DescADHERENT_MAIL_RESIL_SUBJECT=Assumpte d'e-mail de baixa
DescADHERENT_MAIL_RESIL= E-mail de baixa DescADHERENT_MAIL_RESIL=E-mail de baixa
DescADHERENT_MAIL_FROM= E-mail emissor per als e-mails automàtics DescADHERENT_MAIL_FROM=E-mail emissor per als e-mails automàtics
DescADHERENT_ETIQUETTE_TYPE= Format pàgines etiquetes DescADHERENT_ETIQUETTE_TYPE=Format pàgines etiquetes
DescADHERENT_CARD_TYPE= Format pàgines carnet de membre DescADHERENT_CARD_TYPE=Format pàgines carnet de membre
DescADHERENT_CARD_HEADER_TEXT= Text a imprimir en la part superior del carnet de membre DescADHERENT_CARD_HEADER_TEXT=Text a imprimir en la part superior del carnet de membre
DescADHERENT_CARD_TEXT= Text a imprimir en el carnet de membre (Alineat a la dreta) DescADHERENT_CARD_TEXT=Text a imprimir en el carnet de membre (Alineat a la dreta)
DescADHERENT_CARD_TEXT_RIGHT= Text a imprimir en el carnet de membre (Alineat a la dreta) DescADHERENT_CARD_TEXT_RIGHT=Text a imprimir en el carnet de membre (Alineat a la dreta)
DescADHERENT_CARD_FOOTER_TEXT= Text a imprimir a la part inferior del carnet de membre DescADHERENT_CARD_FOOTER_TEXT=Text a imprimir a la part inferior del carnet de membre
DescADHERENT_MAILMAN_LISTS= Llista(s) per a la inscripció automàtica dels nous membres (separats per comes) DescADHERENT_MAILMAN_LISTS=Llista(s) per a la inscripció automàtica dels nous membres (separats per comes)
ShowTypeCard= Veure tipus '%s' ShowTypeCard=Veure tipus '%s'
HTPasswordExport= Generació fitxer htpassword HTPasswordExport=Generació fitxer htpassword
NoThirdPartyAssociatedToMember= Cap tercer associat a aquest membre NoThirdPartyAssociatedToMember=Cap tercer associat a aquest membre
ThirdPartyDolibarr= Tercers Dolibarr ThirdPartyDolibarr=Tercers Dolibarr
MembersAndSubscriptions= Membres y afiliacions MembersAndSubscriptions=Membres y afiliacions
MoreActions=Acció complementària al registre
MoreActionBankDirect=Creació transacció en el compte directament
MoreActionBankViaInvoice=Creació factura amb el pagament en compte
MoreActionInvoiceOnly=Creació factura sense pagament

View File

@@ -1,134 +1,134 @@
# Dolibarr language file - ca_ES - orders # Dolibarr language file - ca_ES - orders
CHARSET= UTF-8 CHARSET=UTF-8
OrdersArea= Àrea comandes de clients OrdersArea=Àrea comandes de clients
SuppliersOrdersArea= Àrea comandes a proveïdors SuppliersOrdersArea=Àrea comandes a proveïdors
OrderCard= Fitxa comanda OrderCard=Fitxa comanda
Order= Comanda Order=Comanda
Orders= Comandes Orders=Comandes
OrderLine= Línia de comanda OrderLine=Línia de comanda
OrderFollow= Seguiment OrderFollow=Seguiment
OrderContact= Contactes comanda OrderContact=Contactes comanda
OrderDate= Data comanda OrderDate=Data comanda
OrderToProcess= Comanda a processar OrderToProcess=Comanda a processar
NewOrder= Nova comanda NewOrder=Nova comanda
ToOrder= Realitzar comanda ToOrder=Realitzar comanda
MakeOrder= Realitzar comanda MakeOrder=Realitzar comanda
SupplierOrder= Comanda a proveïdor SupplierOrder=Comanda a proveïdor
SuppliersOrders= Comandes a proveïdor SuppliersOrders=Comandes a proveïdor
SuppliersOrdersRunning= Comandes a proveïdor en curs SuppliersOrdersRunning=Comandes a proveïdor en curs
CustomerOrder= Comada de client CustomerOrder=Comada de client
CustomersOrders= Comandes de client CustomersOrders=Comandes de client
CustomersOrdersRunning= Comandes de client en curs CustomersOrdersRunning=Comandes de client en curs
CustomersOrdersAndOrdersLines= Comandes de client i línies de comanda CustomersOrdersAndOrdersLines=Comandes de client i línies de comanda
OrdersToValid= Comandes a validar OrdersToValid=Comandes a validar
OrdersToBill= Comandes a facturar OrdersToBill=Comandes a facturar
OrdersInProcess= Comandes en procés OrdersInProcess=Comandes en procés
OrdersToProcess= Comandes a processar OrdersToProcess=Comandes a processar
StatusOrderCanceledShort= Anul·lada StatusOrderCanceledShort=Anul·lada
StatusOrderDraftShort= Esborrany StatusOrderDraftShort=Esborrany
StatusOrderValidatedShort= Validada StatusOrderValidatedShort=Validada
StatusOrderOnProcessShort= En curs StatusOrderOnProcessShort=En curs
StatusOrderProcessedShort= Processada StatusOrderProcessedShort=Processada
StatusOrderToBillShort= A facturar StatusOrderToBillShort=A facturar
StatusOrderApprovedShort= Aprovada StatusOrderApprovedShort=Aprovada
StatusOrderRefusedShort= Rebutjada StatusOrderRefusedShort=Rebutjada
StatusOrderToProcessShort= A processar StatusOrderToProcessShort=A processar
StatusOrderReceivedPartiallyShort= Rebuda parcialment StatusOrderReceivedPartiallyShort=Rebuda parcialment
StatusOrderReceivedAllShort= Rebuda StatusOrderReceivedAllShort=Rebuda
StatusOrderCanceled= Anul-lada StatusOrderCanceled=Anul-lada
StatusOrderDraft= Esborrany (a validar) StatusOrderDraft=Esborrany (a validar)
StatusOrderValidated= Validada StatusOrderValidated=Validada
StatusOrderOnProcess= En procés StatusOrderOnProcess=En procés
StatusOrderProcessed= Processada StatusOrderProcessed=Processada
StatusOrderToBill= A facturar StatusOrderToBill=A facturar
StatusOrderApproved= Aprovada StatusOrderApproved=Aprovada
StatusOrderRefused= Rebutjada StatusOrderRefused=Rebutjada
StatusOrderReceivedPartially= Rebuda parcialment StatusOrderReceivedPartially=Rebuda parcialment
StatusOrderReceivedAll= Rebuda StatusOrderReceivedAll=Rebuda
DraftOrWaitingApproved= Esborrany o aprovat encara no controlat DraftOrWaitingApproved=Esborrany o aprovat encara no controlat
DraftOrWaitingShipped= Esborrany o validada encara no expedida DraftOrWaitingShipped=Esborrany o validada encara no expedida
SearchOrder= Cercar una comanda SearchOrder=Cercar una comanda
MenuOrdersToBill= Comandes a facturar MenuOrdersToBill=Comandes a facturar
Sending= Enviament Sending=Enviament
Sendings= Enviaments Sendings=Enviaments
ShipProduct= Enviar producte ShipProduct=Enviar producte
Discount= Descompte Discount=Descompte
CreateOrder= Crear comanda CreateOrder=Crear comanda
RefuseOrder= Rebutjar la comanda RefuseOrder=Rebutjar la comanda
ApproveOrder= Acceptar la comanda ApproveOrder=Acceptar la comanda
ValidateOrder= Validar la comanda ValidateOrder=Validar la comanda
DeleteOrder= Eliminar la comanda DeleteOrder=Eliminar la comanda
CancelOrder= Anul·lar la comanda CancelOrder=Anul·lar la comanda
AddOrder= Crear comanda AddOrder=Crear comanda
AddToMyOrders= afegir a les meves comandes AddToMyOrders=afegir a les meves comandes
AddToOtherOrders= Afegir a altres comandes AddToOtherOrders=Afegir a altres comandes
ShowOrder= Mostrar comanda ShowOrder=Mostrar comanda
NoOpenedOrders= Cap comanda esborrany NoOpenedOrders=Cap comanda esborrany
NoOtherOpenedOrders= Cap altra comanda esborrany NoOtherOpenedOrders=Cap altra comanda esborrany
OtherOrders= Altres comandes OtherOrders=Altres comandes
LastOrders= Les %s darreres comandes LastOrders=Les %s darreres comandes
LastModifiedOrders= Les %s darreres comandes modificades LastModifiedOrders=Les %s darreres comandes modificades
LastClosedOrders= Les %s darreres comandes tancades LastClosedOrders=Les %s darreres comandes tancades
AllOrders= Totes les comandes AllOrders=Totes les comandes
NbOfOrders= Nombre de comandes NbOfOrders=Nombre de comandes
OrdersStatistics= Estadístiques de comandes OrdersStatistics=Estadístiques de comandes
OrdersStatisticsSuppliers= Estadístiques de comandes a proveïdors OrdersStatisticsSuppliers=Estadístiques de comandes a proveïdors
NumberOfOrdersByMonth= Nombre de comandes per mes NumberOfOrdersByMonth=Nombre de comandes per mes
AmountOfOrdersByMonthHT= Import total de comandes per mes (Sense IVA) AmountOfOrdersByMonthHT=Import total de comandes per mes (Sense IVA)
ListOfOrders= Llistat de comandes ListOfOrders=Llistat de comandes
CloseOrder= Tancar comanda CloseOrder=Tancar comanda
ConfirmCloseOrder= Esteu segur de voler tancar aquesta comanda? Un cop tancat, haurà de facturar-se ConfirmCloseOrder=Esteu segur de voler tancar aquesta comanda? Un cop tancat, haurà de facturar-se
ConfirmCloseOrderIfSending= Esteu segur de voler tancar aquesta comanda? No ha de tancar una comanda que encara no té els seus productes enviats ConfirmCloseOrderIfSending=Esteu segur de voler tancar aquesta comanda? No ha de tancar una comanda que encara no té els seus productes enviats
ConfirmDeleteOrder= Esteu segur de voler eliminar aquest comanda? ConfirmDeleteOrder=Esteu segur de voler eliminar aquest comanda?
ConfirmValidateOrder= Esteu segur de voler validar aquesta comanda sota la referència <b>%s</b> ? ConfirmValidateOrder=Esteu segur de voler validar aquesta comanda sota la referència <b>%s</b> ?
ConfirmCancelOrder= Esteu segur de voler anul lar aquesta comanda? ConfirmCancelOrder=Esteu segur de voler anul lar aquesta comanda?
ConfirmMakeOrder= Esteu segur de voler confirmar aquest comanda a data de <b>%s</b> ? ConfirmMakeOrder=Esteu segur de voler confirmar aquest comanda a data de <b>%s</b> ?
GenerateBill= Facturar GenerateBill=Facturar
ClassifyBilled= Classificar "Facturat" ClassifyBilled=Classificar "Facturat"
ComptaCard= Fitxa comptable ComptaCard=Fitxa comptable
DraftOrders= Comandes esborrany DraftOrders=Comandes esborrany
RelatedOrders= Comandes adjuntes RelatedOrders=Comandes adjuntes
OnProcessOrders= Comandes en procés OnProcessOrders=Comandes en procés
RefOrder= Ref. comanda RefOrder=Ref. comanda
RefCustomerOrder= Ref. comanda client RefCustomerOrder=Ref. comanda client
RefCustomerOrderShort= Ref. com. client RefCustomerOrderShort=Ref. com. client
SendOrderByMail= Enviar comanda per e-mail SendOrderByMail=Enviar comanda per e-mail
ActionsOnOrder= Accions sobre la comanda ActionsOnOrder=Accions sobre la comanda
NoArticleOfTypeProduct= No hi ha articles de tipus 'producte' i per tant enviables en aquesta comanda NoArticleOfTypeProduct=No hi ha articles de tipus 'producte' i per tant enviables en aquesta comanda
OrderMode= Mètode de comanda OrderMode=Mètode de comanda
AuthorRequest= Autor/Sol·licitant AuthorRequest=Autor/Sol·licitant
UseCustomerContactAsOrderRecipientIfExist= Utilitzar adreça del contacte del client de seguiment client si està definit en comptes del tercer com a destinatari de les comandes UseCustomerContactAsOrderRecipientIfExist=Utilitzar adreça del contacte del client de seguiment client si està definit en comptes del tercer com a destinatari de les comandes
RunningOrders= Comandes en curs RunningOrders=Comandes en curs
UserWithApproveOrderGrant= Usuaris habilitats per aprovar les comandes UserWithApproveOrderGrant=Usuaris habilitats per aprovar les comandes
PaymentOrderRef= Pagament comanda %s PaymentOrderRef=Pagament comanda %s
CloneOrder= Clonar comanda CloneOrder=Clonar comanda
ConfirmCloneOrder= Esteu segur de voler clonar aquesta comanda <b>%s</b>? ConfirmCloneOrder=Esteu segur de voler clonar aquesta comanda <b>%s</b>?
##### Types de contacts #####== DispatchSupplierOrder=Recepció de la comanda a proveïdor %s
TypeContact_commande_internal_SALESREPFOLL= Responsable seguiment comanda client ##### Types de contacts #####
TypeContact_commande_internal_SHIPPING= Responsable enviament comanda client TypeContact_commande_internal_SALESREPFOLL=Responsable seguiment comanda client
TypeContact_commande_external_BILLING= Contacte client facturació comanda TypeContact_commande_internal_SHIPPING=Responsable enviament comanda client
TypeContact_commande_external_SHIPPING= Contacte client lliurament comanda TypeContact_commande_external_BILLING=Contacte client facturació comanda
TypeContact_commande_external_CUSTOMER= Contacte client seguiment comanda TypeContact_commande_external_SHIPPING=Contacte client lliurament comanda
TypeContact_order_supplier_internal_SALESREPFOLL= Responsable seguiment comanda a proveïdor TypeContact_commande_external_CUSTOMER=Contacte client seguiment comanda
TypeContact_order_supplier_internal_SHIPPING= Responsable recepció comanda a proveïdor TypeContact_order_supplier_internal_SALESREPFOLL=Responsable seguiment comanda a proveïdor
TypeContact_order_supplier_external_BILLING= Contacte proveïdor facturació comanda TypeContact_order_supplier_internal_SHIPPING=Responsable recepció comanda a proveïdor
TypeContact_order_supplier_external_SHIPPING= Contacte proveïdor lliurament comanda TypeContact_order_supplier_external_BILLING=Contacte proveïdor facturació comanda
TypeContact_order_supplier_external_CUSTOMER= Contacte proveïdor seguiment comanda TypeContact_order_supplier_external_SHIPPING=Contacte proveïdor lliurament comanda
Error_COMMANDE_SUPPLIER_ADDON_NotDefined= Constant COMMANDE_SUPPLIER_ADDON no definida TypeContact_order_supplier_external_CUSTOMER=Contacte proveïdor seguiment comanda
Error_COMMANDE_ADDON_NotDefined= Constant COMMANDE_ADDON no definida Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON no definida
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File= Error en la càrrega de l'arxiu mòdul '%s' Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON no definida
Error_FailedToLoad_COMMANDE_ADDON_File= Error en la càrrega de l'arxiu mòdul '%s' Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Error en la càrrega de l'arxiu mòdul '%s'
# Sources== Error_FailedToLoad_COMMANDE_ADDON_File=Error en la càrrega de l'arxiu mòdul '%s'
OrderSource0= Pressupost # Sources
OrderSource1= Internet OrderSource0=Pressupost
OrderSource2= Campanya per correu OrderSource1=Internet
OrderSource3= Campanya telefònica OrderSource2=Campanya per correu
OrderSource4= Campanya per fax OrderSource3=Campanya telefònica
OrderSource5= Comercial OrderSource4=Campanya per fax
OrderSource6= Revistes OrderSource5=Comercial
QtyOrdered= Qt. demanda OrderSource6=Revistes
AddDeliveryCostLine= Afegir una línia de despeses de ports indicant el pes de la comanda QtyOrdered=Qt. demanda
# Document models== AddDeliveryCostLine=Afegir una línia de despeses de ports indicant el pes de la comanda
PDFEinsteinDescription= Model de pressupost complet (logo...) # Document models
# NumRef Modules== PDFEinsteinDescription=Model de comanda complet (logo...)
MarbreNumRefDesc= Retorna el número sota el format %syymm-nnnn on yy és l'any, mm el mes i nnnn un comptador seqüencial sense ruptura i sense tornar a 0 PDFEdisonDescription=Model de comanda simple

View File

@@ -1,187 +1,199 @@
# Dolibarr language file - ca_ES - other # Dolibarr language file - ca_ES - other
CHARSET= UTF-8 CHARSET=UTF-8
ErrorPasswordDiffers= Les contrasenyes no són identiques, torni a introduir-les ErrorPasswordDiffers=Les contrasenyes no són identiques, torni a introduir-les
ErrorForbidden= Accés no autoritzat.<br>Intenta accedir a una pàgina, zona o funció sense estar en una sessió autentificada o que no s'autoritza per al seu compte d'usuari. ErrorForbidden=Accés no autoritzat.<br>Intenta accedir a una pàgina, zona o funció sense estar en una sessió autentificada o que no s'autoritza per al seu compte d'usuari.
ErrorForbidden2= Els permisos per a aquest usuari poden ser assignats per l'administrador Dolibarr mitjançant el menú %s-> %s. ErrorForbidden2=Els permisos per a aquest usuari poden ser assignats per l'administrador Dolibarr mitjançant el menú %s-> %s.
ErrorForbidden3= Dolibarr no sembla funcionar en una sessió autentificada. Consulteu la documentació d'instal lació de Dolibarr per saber com administrar les autenticacions (htacces, mod_auth o altre ...). ErrorForbidden3=Dolibarr no sembla funcionar en una sessió autentificada. Consulteu la documentació d'instal lació de Dolibarr per saber com administrar les autenticacions (htacces, mod_auth o altre ...).
ErrorNoImagickReadimage= La funció imagick_readimage no està present en aquesta instal lació de PHP. La ressenya no està doncs disponible. Els administradors poden desactivar aquesta pestanya en el menú Configuració->Visualització. ErrorNoImagickReadimage=La funció imagick_readimage no està present en aquesta instal lació de PHP. La ressenya no està doncs disponible. Els administradors poden desactivar aquesta pestanya en el menú Configuració->Visualització.
ErrorRecordAlreadyExists= Registre ja existent ErrorRecordAlreadyExists=Registre ja existent
ErrorCantReadFile= Error de lectura del fitxer '%s' ErrorCantReadFile=Error de lectura del fitxer '%s'
ErrorCantReadDir= Error de lectura de la carpeta '%s' ErrorCantReadDir=Error de lectura de la carpeta '%s'
ErrorFailedToFindEntity= Error de lectura de l'entitat '%s' ErrorFailedToFindEntity=Error de lectura de l'entitat '%s'
ErrorBadLoginPassword= Identificadors d'usuari o contrasenya incorrectes ErrorBadLoginPassword=Identificadors d'usuari o contrasenya incorrectes
ErrorLoginDisabled= El seu compte està desactivat ErrorLoginDisabled=El seu compte està desactivat
ErrorFailedToRunExternalCommand= Error d'execució de la comanda extern. Comproveu que està disponible i executable per el seu servidor PHP. Si l'PHP <b>Safe Mode </b> està activat, comproveu que la comanda es troba en una carpeta definida en el paràmetre <b>safe_mode_exec_dir</b>. ErrorFailedToRunExternalCommand=Error d'execució de la comanda extern. Comproveu que està disponible i executable per el seu servidor PHP. Si l'PHP <b>Safe Mode </b> està activat, comproveu que la comanda es troba en una carpeta definida en el paràmetre <b>safe_mode_exec_dir</b>.
ErrorFailedToChangePassword= Error en la modificació de la contrasenya ErrorFailedToChangePassword=Error en la modificació de la contrasenya
ErrorLoginDoesNotExists= El compte d'usuari de <b>%s</b> no s'ha trobat. ErrorLoginDoesNotExists=El compte d'usuari de <b>%s</b> no s'ha trobat.
ErrorLoginHasNoEmail= Aquest usuari no té e-mail. Impossible continuar. ErrorLoginHasNoEmail=Aquest usuari no té e-mail. Impossible continuar.
ErrorBadValueForCode= Valor no vàlid per al codi. Torneu a intentar-ho amb un nou valor ... ErrorBadValueForCode=Valor no vàlid per al codi. Torneu a intentar-ho amb un nou valor ...
SecurityCode= Codi de seguretat SecurityCode=Codi de seguretat
Calendar= Calendari Calendar=Calendari
AddTrip= Crear desplaçament AddTrip=Crear desplaçament
Tools= Utilitats Tools=Utilitats
Birthday= Aniversari Birthday=Aniversari
BirthdayDate= Data aniversari BirthdayDate=Data aniversari
DateToBirth= Data de naiximent DateToBirth=Data de naiximent
BirthdayAlertOn= alerta aniversari activada BirthdayAlertOn=alerta aniversari activada
BirthdayAlertOff= alerta aniversari desactivada BirthdayAlertOff=alerta aniversari desactivada
Notify_NOTIFY_VAL_FICHINTER= Validació fitxa intervenció Notify_NOTIFY_VAL_FICHINTER=Validació fitxa intervenció
Notify_NOTIFY_VAL_FAC= Validació factura Notify_NOTIFY_VAL_FAC=Validació factura
Notify_NOTIFY_APP_ORDER_SUPPLIER= Aprovació comanda a proveïdor Notify_NOTIFY_APP_ORDER_SUPPLIER=Aprovació comanda a proveïdor
Notify_NOTIFY_REF_ORDER_SUPPLIER= Rebuig comanda a proveïdor Notify_NOTIFY_REF_ORDER_SUPPLIER=Rebuig comanda a proveïdor
Notify_NOTIFY_VAL_ORDER= Validació comanda client Notify_NOTIFY_VAL_ORDER=Validació comanda client
Notify_NOTIFY_VAL_PROPAL= Validació pressupost client Notify_NOTIFY_VAL_PROPAL=Validació pressupost client
NbOfAttachedFiles= Número arxius/documents adjunts NbOfAttachedFiles=Número arxius/documents adjunts
TotalSizeOfAttachedFiles= Mida total dels arxius/documents adjunts TotalSizeOfAttachedFiles=Mida total dels arxius/documents adjunts
MaxSize= Tamany màxim MaxSize=Tamany màxim
AttachANewFile= Adjuntar nou arxiu/document AttachANewFile=Adjuntar nou arxiu/document
LinkedObject= Objecte adjuntat LinkedObject=Objecte adjuntat
Miscellanous= Diversos Miscellanous=Diversos
NbOfActiveNotifications= Número notificacions NbOfActiveNotifications=Número notificacions
WarningInstallDirExists= Atenció: La carpeta install (<b>htdocs/install</b>) encara existeix. Una vegada finalitzada la instal·lació la seva presència no és necessària, i representa un error seriós de seguretat. Hauríeu eliminar-la el més aviat possible. WarningInstallDirExists=Atenció: La carpeta install (<b>htdocs/install</b>) encara existeix. Una vegada finalitzada la instal·lació la seva presència no és necessària, i representa un error seriós de seguretat. Hauríeu eliminar-la el més aviat possible.
WarningUntilDirRemoved= Aquesta alerta seguirà activa mentre la carpeta existeixi (alerta visible per als usuaris admin solament). WarningUntilDirRemoved=Aquesta alerta seguirà activa mentre la carpeta existeixi (alerta visible per als usuaris admin solament).
PredefinedMailTest= Això és un correu de prova.\nLes 2 línies estan separades per un retorn de carro a la línia. PredefinedMailTest=Això és un correu de prova.\nLes 2 línies estan separades per un retorn de carro a la línia.
PredefinedMailTestHtml= Això és un e-mail de <b>prova</b> (la paraula prova ha d'estar en negreta).<br>Les 2 línies estan separades per un retorn de carro en la línia PredefinedMailTestHtml=Això és un e-mail de <b>prova</b> (la paraula prova ha d'estar en negreta).<br>Les 2 línies estan separades per un retorn de carro en la línia
PredefinedMailContentSendInvoice= Us adjuntem la factura __FACREF__\n\nCordialment\n\n PredefinedMailContentSendInvoice=Us adjuntem la factura __FACREF__\n\nCordialment\n\n
PredefinedMailContentSendInvoiceReminder= Posem en el seu coneixement que la factura __FACREF__ sembla no estar pagada. Se l'adjuntem doncs, perquè pugui revisar-la.\n nCordialment\n\n PredefinedMailContentSendInvoiceReminder=Posem en el seu coneixement que la factura __FACREF__ sembla no estar pagada. Se l'adjuntem doncs, perquè pugui revisar-la.\n nCordialment\n\n
PredefinedMailContentSendProposal= Us adjuntem el pressupost __PROPREF__ \n\nCordialment\n\n PredefinedMailContentSendProposal=Us adjuntem el pressupost __PROPREF__ \n\nCordialment\n\n
PredefinedMailContentSendOrder= Us adjuntem la comanda __ORDERREF__ \n\nCordialment\n\n PredefinedMailContentSendOrder=Us adjuntem la comanda __ORDERREF__ \n\nCordialment\n\n
DemoDesc= Dolibarr és un programari per a la gestió de negocis (professionals o associacions), compost de mòduls funcionals independents i opcionals. Una demostració que inclogui tots aquests mòduls no té sentit perquè no utilitzarà tots els mòduls. A més, té disponibles diversos tipus de perfils de demostració. PredefinedMailContentSendSupplierOrder=Us adjuntem la nostra comanda __ORDERREF__ \n\nCordialment\n\n
ChooseYourDemoProfil= Voleu veure el perfil de demostració que millor correspongui a la seva activitat ... DemoDesc=Dolibarr és un programari per a la gestió de negocis (professionals o associacions), compost de mòduls funcionals independents i opcionals. Una demostració que inclogui tots aquests mòduls no té sentit perquè no utilitzarà tots els mòduls. A més, té disponibles diversos tipus de perfils de demostració.
DemoFundation= Gestde membres d'una associació ChooseYourDemoProfil=Voleu veure el perfil de demostracque millor correspongui a la seva activitat ...
DemoFundation2= Gestió de membres i tresoreria d'una associació DemoFundation=Gestió de membres d'una associació
DemoCompanyServiceOnly= Gestió d'un treballador per compte propi realitzant serveis DemoFundation2=Gestió de membres i tresoreria d'una associació
DemoCompanyShopWithCashDesk= Gestió d'una botiga amb caixa DemoCompanyServiceOnly=Gestió d'un treballador per compte propi realitzant serveis
DemoCompanyProductAndStocks= Gestió d'una PIME amb venda de productes DemoCompanyShopWithCashDesk=Gestió d'una botiga amb caixa
DemoCompanyAll= Gestió d'una PIME amb activitats múltiples (tots els mòduls principals) DemoCompanyProductAndStocks=Gestió d'una PIME amb venda de productes
GoToDemo= Accedir a la demo DemoCompanyAll=Gestió d'una PIME amb activitats múltiples (tots els mòduls principals)
CreatedBy= Creat per %s GoToDemo=Accedir a la demo
ModifiedBy= Modificat per %s CreatedBy=Creat per %s
ValidatedBy= Validat per %s ModifiedBy=Modificat per %s
CanceledBy= Anul·lat per %s ValidatedBy=Validat per %s
ClosedBy= Tancat per %s CanceledBy=Anul·lat per %s
FileWasRemoved= L'arxiu %s s'ha eliminat ClosedBy=Tancat per %s
DirWasRemoved= La carpeta %s s'ha eliminat FileWasRemoved=L'arxiu %s s'ha eliminat
FeatureNotYetAvailableShort= Disponible en una propera versió DirWasRemoved=La carpeta %s s'ha eliminat
FeatureNotYetAvailable= Funcionalitat encara no disponible en aquesta versió FeatureNotYetAvailableShort=Disponible en una propera versió
FeatureExperimental= Funcionalitat experimental. No és estable en aquesta versió FeatureNotYetAvailable=Funcionalitat encara no disponible en aquesta versió
FeatureDevelopment= Funcionalitat en desenvolupament. No estable en aquesta versió FeatureExperimental=Funcionalitat experimental. No és estable en aquesta versió
FeaturesSupported= Funcionalitats suportades FeatureDevelopment=Funcionalitat en desenvolupament. No estable en aquesta versió
Width= llarg FeaturesSupported=Funcionalitats suportades
Height= alt Width=llarg
Depth= fons Height=alt
Weight= Pes Depth=fons
TotalWeight= Pes total CalculatedWeight=Pes calculat
WeightUnitton= Tones CalculatedVolume=Volume calculat
WeightUnitkg= kg Weight=Pes
WeightUnitg= g TotalWeight=Pes total
WeightUnitmg= mg WeightUnitton=Tones
Length= Longitud WeightUnitkg=kg
LengthUnitm= m WeightUnitg=g
LengthUnitdm= dm WeightUnitmg=mg
LengthUnitcm= cm WeightUnitpound=lliura
LengthUnitmm= mm Length=Longitud
Surface= Superfície LengthUnitm=m
SurfaceUnitm2= m2 LengthUnitdm=dm
SurfaceUnitdm2= dm2 LengthUnitcm=cm
SurfaceUnitcm2= cm2 LengthUnitmm=mm
SurfaceUnitmm2= mm2 Surface=Superfície
Volume= Volum SurfaceUnitm2=m2
TotalVolume= Volum total SurfaceUnitdm2=dm2
VolumeUnitm3= m3 SurfaceUnitcm2=cm2
VolumeUnitdm3= dm3 (l) SurfaceUnitmm2=mm2
VolumeUnitcm3= cm3 (ml) Volume=Volum
VolumeUnitmm3= mm3 (µl) TotalVolume=Volum total
Size= tamany VolumeUnitm3=m3
SizeUnitm= m VolumeUnitdm3=dm3 (l)
SizeUnitdm= dm VolumeUnitcm3=cm3 (ml)
SizeUnitcm= cm VolumeUnitmm3=mm3 (µl)
SizeUnitmm= mm VolumeUnitounce=unça
BugTracker= Incidències VolumeUnitlitre=litre
SendNewPasswordDesc= Aquest formulari permet enviar una nova contrasenya. S'enviarà al e-mail de l'usuari<br>La modificació de la contrasenya no serà efectiva fins que el usuaris feu clic en el link de confirmació inclòs en aquest e-mail.<br>Supervisant el seu correu. VolumeUnitgallon=galó
BackToLoginPage= Tornar a la pàgina de connexió Size=tamany
AuthenticationDoesNotAllowSendNewPassword= El mode d'autenticació de Dolibarr està configurat com "<b>%s</b>".<br>En aquest mode Dolibarr no pot conèixer ni modificar la seva contrasenya<br>Contacti amb l'administrador per conèixer les modalitats de canvi. SizeUnitm=m
EnableGDLibraryDesc= Ha d'activar o instal·lar la llibreria GD en el seu PHP per poder activar aquesta opció SizeUnitdm=dm
EnablePhpAVModuleDesc= Ha d'instal·lar un mòdul PHP compatible amb el seu antivirus. (Clamav: php4-clamavlib ó php5-clamavlib) SizeUnitcm=cm
ProfIdShortDesc= <b>Prof Id %s </b> és una informació que depèn del país del tercer. <br>Per exemple, per al país <b>%s</b>, és el codi <b>%s</b>. SizeUnitmm=mm
DolibarrDemo= Demo de Dolibarr ERP/CRM SizeUnitinch=polzada
StatsByNumberOfUnits= Estadístiques en nombre d'unitats de producte/servei SizeUnitfoot=peu
StatsByNumberOfEntities= Estadístiques en nombre d'identitats referents BugTracker=Incidències
NumberOfProposals= Nombre de pressupostos en els darrers 12 mesos SendNewPasswordDesc=Aquest formulari permet enviar una nova contrasenya. S'enviarà al e-mail de l'usuari<br>La modificació de la contrasenya no serà efectiva fins que el usuaris feu clic en el link de confirmació inclòs en aquest e-mail.<br>Supervisant el seu correu.
NumberOfCustomerOrders= Nombre de comandes de clients en els darrers 12 mesos BackToLoginPage=Tornar a la pàgina de connexió
NumberOfCustomerInvoices= Nombre de factures a clients en els darrers 12 mesos AuthenticationDoesNotAllowSendNewPassword=El mode d'autenticació de Dolibarr està configurat com "<b>%s</b>".<br>En aquest mode Dolibarr no pot conèixer ni modificar la seva contrasenya<br>Contacti amb l'administrador per conèixer les modalitats de canvi.
NumberOfSupplierInvoices= Nombre de factures de proveïdors en els darrers 12 mesos EnableGDLibraryDesc=Ha d'activar o instal·lar la llibreria GD en el seu PHP per poder activar aquesta opció
NumberOfUnitsProposals= Nombre d'unitats en els pressupostos en els darrers 12 mesos EnablePhpAVModuleDesc=Ha d'instal·lar un mòdul PHP compatible amb el seu antivirus. (Clamav: php4-clamavlib ó php5-clamavlib)
NumberOfUnitsCustomerOrders= Nombre d'unitats en les comandes de clients en els darrers 12 mesos ProfIdShortDesc=<b>Prof Id %s </b> és una informació que depèn del país del tercer. <br>Per exemple, per al país <b>%s</b>, és el codi <b>%s</b>.
NumberOfUnitsCustomerInvoices= Nombre d'unitats en les factures a clients en els darrers 12 mesos DolibarrDemo=Demo de Dolibarr ERP/CRM
NumberOfUnitsSupplierInvoices= Nombre d'unitats en les factures de proveïdors en els darrers 12 mesos StatsByNumberOfUnits=Estadístiques en nombre d'unitats de producte/servei
EMailTextInterventionValidated= Fitxa intervenció %s validada StatsByNumberOfEntities=Estadístiques en nombre d'identitats referents
EMailTextInvoiceValidated= Factura %s validada NumberOfProposals=Nombre de pressupostos en els darrers 12 mesos
EMailTextProposalValidated= El pressupost %s que el concerneix ha estat validat. NumberOfCustomerOrders=Nombre de comandes de clients en els darrers 12 mesos
EMailTextOrderValidated= La comanda %s que el concerneix ha estat validada. NumberOfCustomerInvoices=Nombre de factures a clients en els darrers 12 mesos
EMailTextOrderApproved= Comanda %s aprovada NumberOfSupplierInvoices=Nombre de factures de proveïdors en els darrers 12 mesos
EMailTextOrderApprovedBy= Comanda %s aprovada per %s NumberOfUnitsProposals=Nombre d'unitats en els pressupostos en els darrers 12 mesos
EMailTextOrderRefused= Comanda %s rebutjada NumberOfUnitsCustomerOrders=Nombre d'unitats en les comandes de clients en els darrers 12 mesos
EMailTextOrderRefusedBy= Comanda %s rebutjada per %s NumberOfUnitsCustomerInvoices=Nombre d'unitats en les factures a clients en els darrers 12 mesos
ImportedWithSet= Lot d'importació (import key) NumberOfUnitsSupplierInvoices=Nombre d'unitats en les factures de proveïdors en els darrers 12 mesos
DolibarrNotification= Notificació automàtica EMailTextInterventionValidated=Fitxa intervenció %s validada
ResizeDesc= Introduïu l'ample <b>O</b> la nova alçada. La relació es conserva en canviar la mida... EMailTextInvoiceValidated=Factura %s validada
NewLength= Nou ample EMailTextProposalValidated=El pressupost %s que el concerneix ha estat validat.
NewHeight= Nova alçada EMailTextOrderValidated=La comanda %s que el concerneix ha estat validada.
NewSizeAfterCropping= Noves dimensions després de retallar EMailTextOrderApproved=Comanda %s aprovada
DefineNewAreaToPick= Indiqueu la zona d'imatge a conservar (Clic sobre la imatge i arrossegueu fins a la cantonada oposada) EMailTextOrderApprovedBy=Comanda %s aprovada per %s
CurrentInformationOnImage= Informació actual sobre la imatge EMailTextOrderRefused=Comanda %s rebutjada
##### Bookmark #####== EMailTextOrderRefusedBy=Comanda %s rebutjada per %s
Bookmark= Marcador ImportedWithSet=Lot d'importació (import key)
Bookmarks= Marcadors DolibarrNotification=Notificació automàtica
NewBookmark= Nou marcador ResizeDesc=Introduïu l'ample <b>O</b> la nova alçada. La relació es conserva en canviar la mida...
ShowBookmark= Mostrar marcadors NewLength=Nou ample
BookmarkThisPage= Afegeix aquesta pàgina als seus marcadors NewHeight=Nova alçada
OpenANewWindow= Obrir una nova finestra NewSizeAfterCropping=Noves dimensions després de retallar
ReplaceWindow= Reemplaça la finestra actual DefineNewAreaToPick=Indiqueu la zona d'imatge a conservar (Clic sobre la imatge i arrossegueu fins a la cantonada oposada)
BookmarkTargetNewWindowShort= Nova finestra CurrentInformationOnImage=Aquesta pàgina us permet canviar la mida o quadrar la imatge. Aquí hi ha informació sobre la imatge que s'està editant
BookmarkTargetReplaceWindowShort= Finestra actual ImageEditor=Editor d'imatge
BookmarkTitle= Títol del marcador YouReceiveMailBecauseOfNotification=Vostè està rebent aquest missatge perquè el seu correu electrònica està subscrit a algunes notificacions automàtiques per informar sobre esdeveniments especials del programa %s de %s.
UrlOrLink= URL YouReceiveMailBecauseOfNotification2=L'esdeveniment en qüestió és el següent:
BehaviourOnClick= Comportament al fer clic a la URL ##### Bookmark #####
CreateBookmark= Crear marcador Bookmark=Marcador
SetHereATitleForLink= Indiqueu aquí un títol del marcador Bookmarks=Marcadors
UseAnExternalHttpLinkOrRelativeDolibarrLink= Indicar una URL http externa o una URL Dolibarr relativa NewBookmark=Nou marcador
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark= Triar si ha de obrir-se la pàgina en una nova finestra o en l'actual ShowBookmark=Mostrar marcadors
BookmarksManagement= Gestió de marcadors BookmarkThisPage=Afegeix aquesta pàgina als seus marcadors
ListOfBookmarks= Llista de marcadors OpenANewWindow=Obrir una nova finestra
##### Webcal #####== ReplaceWindow=Reemplaça la finestra actual
LoginWebcal= Login Webcalendar BookmarkTargetNewWindowShort=Nova finestra
ErrorWebcalLoginNotDefined= El login webcalendar associat al seu usuari Dolibarr <b>%s</b> no està definit BookmarkTargetReplaceWindowShort=Finestra actual
##### Phenix #####== BookmarkTitle=Títol del marcador
ErrorPhenixLoginNotDefined= El login Phenix associat al seu compte Dolibarrr <b>%s</b> no està definit UrlOrLink=URL
##### Calendar common #####== BehaviourOnClick=Comportament al fer clic a la URL
AddCalendarEntry= Afegir entrada al calendari CreateBookmark=Crear marcador
NewCompanyToDolibarr= Empresa %s inserida en Dolibarr SetHereATitleForLink=Indiqueu aquí un títol del marcador
ContractValidatedInDolibarr= Contracte %s validat en Dolibarr UseAnExternalHttpLinkOrRelativeDolibarrLink=Indicar una URL http externa o una URL Dolibarr relativa
ContractCanceledInDolibarr= Contracte %s anul·lat en Dolibarr ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Triar si ha de obrir-se la pàgina en una nova finestra o en l'actual
ContractClosedInDolibarr= Contracte %s tancat en Dolibarr BookmarksManagement=Gestió de marcadors
PropalClosedSignedInDolibarr= Pressupost %s signat en Dolibarr ListOfBookmarks=Llista de marcadors
PropalClosedRefusedInDolibarr= Pressupost %s signat en Dolibarr ##### Webcal #####
PropalValidatedInDolibarr= Pressupost %s validat en Dolibarr LoginWebcal=Login Webcalendar
InvoiceValidatedInDolibarr= Factura %s validada en Dolibarr ErrorWebcalLoginNotDefined=El login webcalendar associat al seu usuari Dolibarr <b>%s</b> no està definit
InvoicePaidInDolibarr= Factura %s passada a pagada en Dolibarr ##### Phenix #####
InvoiceCanceledInDolibarr= Factura %s anul·lada en Dolibarr ErrorPhenixLoginNotDefined=El login Phenix associat al seu compte Dolibarrr <b>%s</b> no està definit
PaymentDoneInDolibarr= Pagamat %s realitzat en Dolibarr ##### Calendar common #####
CustomerPaymentDoneInDolibarr= Pagament de client %s en Dolibarr AddCalendarEntry=Afegir entrada al calendari
SupplierPaymentDoneInDolibarr= Pagament a proveïdor %s en Dolibarr NewCompanyToDolibarr=Empresa %s inserida en Dolibarr
MemberValidatedInDolibarr= Membre %s validat en Dolibarr ContractValidatedInDolibarr=Contracte %s validat en Dolibarr
MemberResiliatedInDolibarr= Membre %s donat de baixa en Dolibarr ContractCanceledInDolibarr=Contracte %s anul·lat en Dolibarr
MemberDeletedInDolibarr= Membre %s eliminat de Dolibarr ContractClosedInDolibarr=Contracte %s tancat en Dolibarr
MemberSubscriptionAddedInDolibarr= Subscripció del membre %s afegida a Dolibar PropalClosedSignedInDolibarr=Pressupost %s signat en Dolibarr
##### Export #####== PropalClosedRefusedInDolibarr=Pressupost %s signat en Dolibarr
ExportsArea= Àrea d'exportacions PropalValidatedInDolibarr=Pressupost %s validat en Dolibarr
AvailableFormats= Formats disponibles InvoiceValidatedInDolibarr=Factura %s validada en Dolibarr
LibraryUsed= Llibreria utilitzada InvoicePaidInDolibarr=Factura %s passada a pagada en Dolibarr
LibraryVersion= Versió InvoiceCanceledInDolibarr=Factura %s anul·lada en Dolibarr
ExportableDatas= Dades exportables PaymentDoneInDolibarr=Pagamat %s realitzat en Dolibarr
NoExportableData= No hi ha dades exportables (sense mòduls amb dades exportables carregats, o no tenen permisos) CustomerPaymentDoneInDolibarr=Pagament de client %s en Dolibarr
ToExport= Exportar SupplierPaymentDoneInDolibarr=Pagament a proveïdor %s en Dolibarr
NewExport= Nova exportació MemberValidatedInDolibarr=Membre %s validat en Dolibarr
MemberResiliatedInDolibarr=Membre %s donat de baixa en Dolibarr
MemberDeletedInDolibarr=Membre %s eliminat de Dolibarr
MemberSubscriptionAddedInDolibarr=Subscripció del membre %s afegida a Dolibar
##### Export #####
ExportsArea=Àrea d'exportacions
AvailableFormats=Formats disponibles
LibraryUsed=Llibreria utilitzada
LibraryVersion=Versió
ExportableDatas=Dades exportables
NoExportableData=No hi ha dades exportables (sense mòduls amb dades exportables carregats, o no tenen permisos)
ToExport=Exportar
NewExport=Nova exportació
##### External sites ##### ##### External sites #####
ExternalSites= Llocs externs ExternalSites=Llocs externs

View File

@@ -1,161 +1,164 @@
# Dolibarr language file - ca_ES - products # Dolibarr language file - ca_ES - products
CHARSET= UTF-8 CHARSET=UTF-8
ProductRef= Ref. producte ProductRef=Ref. producte
ProductLabel= Etiqueta producte ProductLabel=Etiqueta producte
ProductServiceCard= Fitxa producte/servei ProductServiceCard=Fitxa producte/servei
Products= Productes Products=Productes
Services= Serveis Services=Serveis
Product= Producte Product=Producte
ProductList= Llistat productes ProductList=Llistat productes
Service= Servei Service=Servei
ProductId= ID producte/servei ProductId=ID producte/servei
Reference= Referència Reference=Referència
NewProduct= Nou producte NewProduct=Nou producte
NewBook= Nou llibre NewService=Nou servei
Book= Llibre ProductCode=Codi producte
Books= Llibres ServiceCode=Codi servei
BookList= Llistat llibres ProductAccountancyBuyCode=Codi comptable compres
NewService= Nou servei ProductAccountancySellCode=Código contable vendes
ProductCode= Codi producte ProductOrService=Producte o servei
ServiceCode= Codi servei ProductsOrServices=Productes o serveis
ProductAccountancyBuyCode= Codi comptable compres ProductsAndServices=Productes i serveis
ProductAccountancySellCode= Código contable vendes ProductsAndServicesOnSell=Productes i serveis a la venda
ProductOrService= Producte o servei ProductsAndServicesNotOnSell=Productes i serveis fora de venda
ProductsOrServices= Productes o serveis ProductsAndServicesStatistics=Estadístiques productes i serveis
ProductsAndServices= Productes i serveis ProductsStatistics=Estadístiques productes
ProductsAndServicesOnSell= Productes i serveis a la venda ProductsOnSell=Productes en venda o compra
ProductsAndServicesNotOnSell= Productes i serveis fora de venda ProductsNotOnSell=Productes fora de venda o compra
ProductsAndServicesStatistics= Estadístiques productes i serveis ServicesOnSell=Serveis en venda o compra
ProductsStatistics= Estadístiques productes ServicesNotOnSell=Serveis fora de venda o compra
ProductsOnSell= Productes en venda InternalRef=Referència interna
ProductsNotOnSell= Productes fora de venda LastRecorded=Ultims productes/serveis en venda registrats
ServicesOnSell= Serveis en venda LastRecordedProductsAndServices=Els %s darrers productes/serveis registrats
ServicesNotOnSell= Serveis fora de venda LastModifiedProductsAndServices=Els %s darrers productes/serveis registrats
InternalRef= Referència interna LastRecordedProducts=Els %s darrers productes registrats
LastRecorded= Ultims productes/serveis en venda registrats LastRecordedServices=Els %s darrers serveis registrats
LastRecordedProductsAndServices= Els %s darrers productes/serveis registrats LastProducts=Ultims productes
LastModifiedProductsAndServices= Els %s darrers productes/serveis registrats CardProduct0=Fitxa producte
LastRecordedProducts= Els %s darrers productes registrats CardProduct1=Fitxa servei
LastRecordedServices= Els %s darrers serveis registrats CardContract=Fitxa contrate
LastProducts= Ultims productes Warehouse=Magatzem
CardProduct0= Fitxa producte Warehouses=Magatzems
CardProduct1= Fitxa servei WarehouseOpened=Magatzem obert
CardContract= Fitxa contrate WarehouseClosed=Magatzem tancat
Warehouse= Magatzem Stock=Stock
Warehouses= Magatzems Stocks=Stocks
WarehouseOpened= Magatzem obert Movement=Moviment
WarehouseClosed= Magatzem tancat Movements=Moviments
Stock= Stock Sell=Vendes
Stocks= Stocks Buy=Compres
Movement= Moviment OnSell=En venda
Movements= Moviments OnBuy=En compra
OnSell= En venda NotOnSell=Fora de venda
NotOnSell= Fora de venda ProductStatusOnSell=En venda
ProductStatusOnSell= En venda ProductStatusNotOnSell=Fora de venda
ProductStatusNotOnSell= Fora de venda ProductStatusOnSellShort=En venta
ProductStatusOnSellShort= En venta ProductStatusNotOnSellShort=Fora de venda
ProductStatusNotOnSellShort= Fora de venda ProductStatusOnBuy=En compra
UpdatePrice= Canviar preu ProductStatusNotOnBuy=Fora de compra
AppliedPricesFrom= Preu de venda vàlid a partir de ProductStatusOnBuyShort=En compra
SellingPrice= Preu de venda ProductStatusNotOnBuyShort=Fora de compra
SellingPriceHT= PVP sense IVA UpdatePrice=Canviar preu
SellingPriceTTC= PVP amb IVA AppliedPricesFrom=Preu de venda vàlid a partir de
PublicPrice= Preu públic SellingPrice=Preu de venda
CurrentPrice= Preu actual SellingPriceHT=PVP sense IVA
NewPrice= Nou preu SellingPriceTTC=PVP amb IVA
MinPrice= Preu de venda min. PublicPrice=Preu públic
CantBeLessThanMinPrice= El preu de venda no ha de ser inferior al mínim per a aquest producte (%s sense IVA) CurrentPrice=Preu actual
ContractStatus= Estat de contracte NewPrice=Nou preu
ContractStatusClosed= Tancat MinPrice=Preu de venda min.
ContractStatusRunning= En servei CantBeLessThanMinPrice=El preu de venda no ha de ser inferior al mínim per a aquest producte (%s sense IVA)
ContractStatusExpired= Expirat ContractStatus=Estat de contracte
ContractStatusOnHold= Fora de servei ContractStatusClosed=Tancat
ContractStatusToRun= A posar en servei ContractStatusRunning=En servei
ContractNotRunning= Aquest contracte no està en servei ContractStatusExpired=Expirat
ErrorProductAlreadyExists= Un producte amb la referència %s ja existeix. ContractStatusOnHold=Fora de servei
ErrorProductBadRefOrLabel= El valor de la referència o etiqueta és incorrecte ContractStatusToRun=A posar en servei
Suppliers= Proveïdors ContractNotRunning=Aquest contracte no està en servei
SupplierRef= Ref. proveïdor ErrorProductAlreadyExists=Un producte amb la referència %s ja existeix.
ShowProduct= Mostrar producte ErrorProductBadRefOrLabel=El valor de la referència o etiqueta és incorrecte
ShowService= Mostrar servei Suppliers=Proveïdors
ProductsAndServicesArea= Àrea productes i serveis SupplierRef=Ref. proveïdor
ProductsArea= Àrea Productes ShowProduct=Mostrar producte
ServicesArea= Àrea Serveis ShowService=Mostrar servei
AddToMyProposals= Adjuntar als meus pressupostos ProductsAndServicesArea=Àrea productes i serveis
AddToOtherProposals= Adjuntar a altres pressupostos ProductsArea=Àrea Productes
AddToMyBills= Adjuntar a les meves factures ServicesArea=Àrea Serveis
AddToOtherBills= Adjuntar a altres factures AddToMyProposals=Adjuntar als meus pressupostos
CorrectStock= Corregir stock AddToOtherProposals=Adjuntar a altres pressupostos
AddPhoto= Adjuntar una foto AddToMyBills=Adjuntar a les meves factures
ListOfStockMovements= Llistat de moviments de stock AddToOtherBills=Adjuntar a altres factures
NoPhotoYet= No hi ha fotografia disponible per el moment CorrectStock=Corregir stock
BuiingPrice= Preu de compra AddPhoto=Adjuntar una foto
SupplierCard= Fitxa proveïdor ListOfStockMovements=Llistat de moviments de stock
CommercialCard= Fitxa comercial NoPhotoYet=No hi ha fotografia disponible per el moment
AllWays= Ruta per trobar el seu producte en el stock BuiingPrice=Preu de compra
NoCat= El seu producte no pertany a cap categoria SupplierCard=Fitxa proveïdor
PrimaryWay= Ruta Primaria: CommercialCard=Fitxa comercial
DeleteFromCat= Eliminar de la categoria AllWays=Ruta per trobar el seu producte en el stock
PriceRemoved= Preu eliminat NoCat=El seu producte no pertany a cap categoria
BarCode= Codi de barra PrimaryWay=Ruta Primaria:
BarcodeType= Tipus de codi de barres DeleteFromCat=Eliminar de la categoria
BarcodeValue= Valor del codi de barres PriceRemoved=Preu eliminat
GenbarcodeLocation= Eina generació codi de barra en línia de comanda (utilitzat pel motor phpbar per a determinats tipus de codis barra) BarCode=Codi de barra
SetDefaultBarcodeType= Definiu el tipus de codi de barres BarcodeType=Tipus de codi de barres
NoteNotVisibleOnBill= Nota (no visible en les factures, pressupostos, etc.) BarcodeValue=Valor del codi de barres
CreateCopy= Crear còpia GenbarcodeLocation=Eina generació codi de barra en línia de comanda (utilitzat pel motor phpbar per a determinats tipus de codis barra)
ServiceLimitedDuration= Si el servei és de durada limitada: SetDefaultBarcodeType=Definiu el tipus de codi de barres
MultiPricesAbility= Activar múltiples preus NoteNotVisibleOnBill=Nota (no visible en les factures, pressupostos, etc.)
MultiPricesNumPrices= Nº de preus CreateCopy=Crear còpia
MultiPriceLevelsName= Categoria de preus ServiceLimitedDuration=Si el servei és de durada limitada:
AssociatedProductsAbility= Activar productes compostos MultiPricesAbility=Activar múltiples preus
AssociatedProducts= Productes compostos MultiPricesNumPrices=Nº de preus
AssociatedProductsNumber= Nº de productes compostos MultiPriceLevelsName=Categoria de preus
EditAssociate= Compondre AssociatedProductsAbility=Activar productes compostos
Translation= Traducció AssociatedProducts=Productes compostos
KeywordFilter= Filtre per clau AssociatedProductsNumber=Nº de productes compostos
CategoryFilter= Filtre per categoria EditAssociate=Compondre
ProductToAddSearch= Cercar productes a adjuntar Translation=Traducció
AddDel= Adjuntar/Retirar KeywordFilter=Filtre per clau
Quantity= Quantitat CategoryFilter=Filtre per categoria
NoMatchFound= No s'han trobat resultats ProductToAddSearch=Cercar productes a adjuntar
ProductAssociationList= Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició AddDel=Adjuntar/Retirar
ErrorAssociationIsFatherOfThis= Un dels productes seleccionats és pare del producte en curs Quantity=Quantitat
DeleteProduct= Eliminar un producte/servei NoMatchFound=No s'han trobat resultats
ConfirmDeleteProduct= Esteu segur de voler eliminar aquest producte/servei? ProductAssociationList=Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició
ProductDeleted= El producte/servei "%s" s'ha eliminat de la base de dades. ErrorAssociationIsFatherOfThis=Un dels productes seleccionats és pare del producte en curs
DeletePicture= Eliminar una foto DeleteProduct=Eliminar un producte/servei
ConfirmDeletePicture= Esteu segur de voler eliminar aquesta foto? ConfirmDeleteProduct=Esteu segur de voler eliminar aquest producte/servei?
ExportDataset_produit_1= Productes i serveis ProductDeleted=El producte/servei "%s" s'ha eliminat de la base de dades.
ExportDataset_service_1= Serveis DeletePicture=Eliminar una foto
DeleteProductLine= Eliminar línia de producte ConfirmDeletePicture=Esteu segur de voler eliminar aquesta foto?
ConfirmDeleteProductLine= Esteu segur de voler eliminar aquesta línia de producte? ExportDataset_produit_1=Productes i serveis
NoProductMatching= Cap producte/servei respon al criteri ExportDataset_service_1=Serveis
MatchingProducts= Productes/Serveis trobats DeleteProductLine=Eliminar línia de producte
NoStockForThisProduct= No hi ha stock d'aquest producte ConfirmDeleteProductLine=Esteu segur de voler eliminar aquesta línia de producte?
NoStock= Sense stock NoProductMatching=Cap producte/servei respon al criteri
Restock= Reposar MatchingProducts=Productes/Serveis trobats
ProductSpecial= Especial NoStockForThisProduct=No hi ha stock d'aquest producte
QtyMin= Quantitat mínima NoStock=Sense stock
PriceQty= Preu per la quantitat Restock=Reposar
PriceQtyMin= Preu quantitat min. ProductSpecial=Especial
NoPriceDefinedForThisSupplier= Cap preu/quant. definit per a aquest proveïdor/producte QtyMin=Quantitat mínima
NoSupplierPriceDefinedForThisProduct= Cap preu/quant. proveïdor definit per a aquest producte PriceQty=Preu per la quantitat
RecordedProducts= Productes en venda PriceQtyMin=Preu quantitat min.
RecordedProductsAndServices= Productes/serveis en venda NoPriceDefinedForThisSupplier=Cap preu/quant. definit per a aquest proveïdor/producte
GenerateThumb= Generar l'etiqueta NoSupplierPriceDefinedForThisProduct=Cap preu/quant. proveïdor definit per a aquest producte
ProductCanvasAbility= Utilitzar les extensions especials "canvas" RecordedProducts=Productes en venda
ServiceNb= Servei nº %s RecordedProductsAndServices=Productes/serveis en venda
ListProductServiceByPopularity= Llistat de productes/serveis per popularitat GenerateThumb=Generar l'etiqueta
ListProductByPopularity= Llistat de productes/serveis per popularitat ProductCanvasAbility=Utilitzar les extensions especials "canvas"
ListServiceByPopularity= Llistat de serveis per popularitat ServiceNb=Servei nº %s
Finished= Producte manofacturat ListProductServiceByPopularity=Llistat de productes/serveis per popularitat
RowMaterial= Matèria prima ListProductByPopularity=Llistat de productes/serveis per popularitat
CloneProduct= Clonar producte/servei ListServiceByPopularity=Llistat de serveis per popularitat
ConfirmCloneProduct= Esteu segur de voler clonar el producte o servei <b>%s</b> ? Finished=Producte manofacturat
CloneContentProduct= Clonar només la informació general del producte/servei RowMaterial=Matèria prima
ClonePricesProduct= Clonar la informació general i els preus CloneProduct=Clonar producte/servei
ProductIsUsed= Aquest producte és utilitzat ConfirmCloneProduct=Esteu segur de voler clonar el producte o servei <b>%s</b> ?
NewRefForClone= Ref. del nou producte/servei CloneContentProduct=Clonar només la informació general del producte/servei
CustomerPrices= Preus clients ClonePricesProduct=Clonar la informació general i els preus
SuppliersPrices= Preus proveïdors ProductIsUsed=Aquest producte és utilitzat
NewRefForClone=Ref. del nou producte/servei
CustomerPrices=Preus clients
SuppliersPrices=Preus proveïdors

View File

@@ -14,7 +14,6 @@ OrderDate= Data comanda
BuyingPrice= Preu de compra BuyingPrice= Preu de compra
AddSupplierPrice= Afegir preu de proveïdor AddSupplierPrice= Afegir preu de proveïdor
ChangeSupplierPrice= Canviar preu de proveïdor ChangeSupplierPrice= Canviar preu de proveïdor
ErrorQtyTooLowForThisSupplier= Quantitat insuficient per aquest proveïdor
ErrorSupplierCountryIsNotDefined= El país d'aquest proveïdor no està definit, arregle-ho a la seva fitxa ErrorSupplierCountryIsNotDefined= El país d'aquest proveïdor no està definit, arregle-ho a la seva fitxa
ProductHasAlreadyReferenceInThisSupplier= Aquest producte ja té una referència en aquest proveïdor ProductHasAlreadyReferenceInThisSupplier= Aquest producte ja té una referència en aquest proveïdor
ReferenceSupplierIsAlreadyAssociatedWithAProduct= Aquesta referència de proveïdor ja està associada a la referència: %s ReferenceSupplierIsAlreadyAssociatedWithAProduct= Aquesta referència de proveïdor ja està associada a la referència: %s

View File

@@ -62,7 +62,7 @@ UseCaptchaCode=Brug grafisk kode på loginsiden
UseAvToScanUploadedFiles=Brug anti-virus scanner uploadede filer UseAvToScanUploadedFiles=Brug anti-virus scanner uploadede filer
ComptaSetup=Accounting modul opsætning ComptaSetup=Accounting modul opsætning
UserSetup=Brugernes forvaltning setup UserSetup=Brugernes forvaltning setup
MenuSetup=Menuer &#39;ledelse setup MenuSetup=Menuer 'ledelse setup
MenuLimits=Grænseværdier og nøjagtighed MenuLimits=Grænseværdier og nøjagtighed
MenuIdParent=Moderselskab menuen ID MenuIdParent=Moderselskab menuen ID
DetailMenuIdParent=ID for moder menu (0 for en top-menuen) DetailMenuIdParent=ID for moder menu (0 for en top-menuen)
@@ -150,7 +150,7 @@ No=Nej
AutoDetectLang=Autodetect (browsersprog) AutoDetectLang=Autodetect (browsersprog)
FeatureDisabledInDemo=Funktionen slået fra i demo FeatureDisabledInDemo=Funktionen slået fra i demo
Rights=Tilladelser Rights=Tilladelser
BoxesDesc=Kasserne er skærmen, der viser et stykke af oplysninger om nogle sider. Du kan vælge mellem at få vist feltet eller ikke ved at vælge målet side og klikke på &#39;Aktiver&#39;, eller ved at klikke på skraldespanden for at deaktivere den. BoxesDesc=Kasserne er skærmen, der viser et stykke af oplysninger om nogle sider. Du kan vælge mellem at få vist feltet eller ikke ved at vælge målet side og klikke på 'Aktiver', eller ved at klikke på skraldespanden for at deaktivere den.
OnlyActiveElementsAreShown=Only elements from <a href=Kun elementer fra <a href="modules.php">aktiveret moduler</a> vises. OnlyActiveElementsAreShown=Only elements from <a href=Kun elementer fra <a href="modules.php">aktiveret moduler</a> vises.
ModulesDesc=Dolibarr moduler definere, hvilke funktioner er aktiveret i softwaren. Nogle moduler kræver tilladelser skal du give brugere, efter at have aktiveret modul. ModulesDesc=Dolibarr moduler definere, hvilke funktioner er aktiveret i softwaren. Nogle moduler kræver tilladelser skal du give brugere, efter at have aktiveret modul.
ModulesInterfaceDesc=Den Dolibarr moduler interface giver dig mulighed for at tilføje funktioner, afhængigt af eksterne software, systemer eller tjenesteydelser. ModulesInterfaceDesc=Den Dolibarr moduler interface giver dig mulighed for at tilføje funktioner, afhængigt af eksterne software, systemer eller tjenesteydelser.
@@ -209,7 +209,7 @@ MenuAdmin=Menu editor
ThisIsProcessToFollow=Det er opsætningen til processen: ThisIsProcessToFollow=Det er opsætningen til processen:
StepNb=Trin %s StepNb=Trin %s
DownloadPackageFromWebSite=Download pakken fra websted %s. DownloadPackageFromWebSite=Download pakken fra websted %s.
UnpackPackageInDolibarrRoot=Pak pakke filen i Dolibarr&#39;s <b>rodbibliotek %s</b> UnpackPackageInDolibarrRoot=Pak pakke filen i Dolibarr's <b>rodbibliotek %s</b>
SetupIsReadyForUse=Installer er færdig og Dolibarr er klar til brug med denne nye komponent. SetupIsReadyForUse=Installer er færdig og Dolibarr er klar til brug med denne nye komponent.
CurrentVersion=Dolibarr aktuelle version CurrentVersion=Dolibarr aktuelle version
CallUpdatePage=Gå til den side, der opdaterer database struktur og oplysningerne %s. CallUpdatePage=Gå til den side, der opdaterer database struktur og oplysningerne %s.
@@ -227,49 +227,49 @@ UMaskExplanation=Denne parameter giver dig mulighed for at definere tilladelser
Module0Name=Brugere og grupper Module0Name=Brugere og grupper
Module0Desc=Brugere og grupper forvaltning Module0Desc=Brugere og grupper forvaltning
Module1Name=Tredjemand Module1Name=Tredjemand
Module1Desc=Virksomheder og kontakter &quot;forvaltning Module1Desc=Virksomheder og kontakter "forvaltning
Module2Name=Kommerciel Module2Name=Kommerciel
Module2Desc=Kommerciel ledelse Module2Desc=Kommerciel ledelse
Module10Name=Regnskabsmæssig Module10Name=Regnskabsmæssig
Module10Desc=Simpelt regnskabspool forvaltning (faktura og betaling lastfordelingen) Module10Desc=Simpelt regnskabspool forvaltning (faktura og betaling lastfordelingen)
Module20Name=Forslag Module20Name=Forslag
Module20Desc=Kommerciel forslag &#39;ledelse Module20Desc=Kommerciel forslag 'ledelse
Module22Name=E-mails Module22Name=E-mails
Module22Desc=E-mails&#39; ledelse Module22Desc=E-mails' ledelse
Module25Name=Kunden Ordrer Module25Name=Kunden Ordrer
Module25Desc=Kunden ordrer &#39;ledelse Module25Desc=Kunden ordrer 'ledelse
Module30Name=Fakturaer Module30Name=Fakturaer
Module30Desc=Fakturaer og kreditnotaer &#39;forvaltning for kunderne. Faktura &#39;forvaltning for leverandører Module30Desc=Fakturaer og kreditnotaer 'forvaltning for kunderne. Faktura 'forvaltning for leverandører
Module40Name=Leverandører Module40Name=Leverandører
Module40Desc=Suppliers&#39; ledelse og opkøb (ordrer og fakturaer) Module40Desc=Suppliers' ledelse og opkøb (ordrer og fakturaer)
Module42Name=Syslog Module42Name=Syslog
Module42Desc=Logføring faciliteter (syslog) Module42Desc=Logføring faciliteter (syslog)
Module49Name=Redaktion Module49Name=Redaktion
Module49Desc=Editors&#39; ledelse Module49Desc=Editors' ledelse
Module50Name=Produkter Module50Name=Produkter
Module50Desc=Produkter «forvaltning Module50Desc=Produkter «forvaltning
Module52Name=Lagre Module52Name=Lagre
Module52Desc=Lagre &#39;håndtering af produkter Module52Desc=Lagre 'håndtering af produkter
Module53Name=Services Module53Name=Services
Module53Desc=Services&#39; ledelse Module53Desc=Services' ledelse
Module54Name=Kontrakter Module54Name=Kontrakter
Module54Desc=Kontrakter og tjenesteydelserne forvaltning Module54Desc=Kontrakter og tjenesteydelserne forvaltning
Module55Name=Stregkoder Module55Name=Stregkoder
Module55Desc=Stregkoder &#39;ledelse Module55Desc=Stregkoder 'ledelse
Module56Name=Telefoni Module56Name=Telefoni
Module56Desc=Telefoni integration Module56Desc=Telefoni integration
Module57Name=Stående ordrer Module57Name=Stående ordrer
Module57Desc=Stående ordrer og tilbagetrækninger &#39;ledelse Module57Desc=Stående ordrer og tilbagetrækninger 'ledelse
Module58Name=ClickToDial Module58Name=ClickToDial
Module58Desc=ClickToDial integration Module58Desc=ClickToDial integration
Module59Name=Bookmark4u Module59Name=Bookmark4u
Module59Desc=Tilføj funktion til at generere Bookmark4u konto fra en Dolibarr konto Module59Desc=Tilføj funktion til at generere Bookmark4u konto fra en Dolibarr konto
Module70Name=Interventioner Module70Name=Interventioner
Module70Desc=Interventioner &quot;forvaltning Module70Desc=Interventioner "forvaltning
Module75Name=Udgifter og ture noter Module75Name=Udgifter og ture noter
Module75Desc=Udgifter og ture noter &#39;ledelse Module75Desc=Udgifter og ture noter 'ledelse
Module80Name=Sendings Module80Name=Sendings
Module80Desc=Sendings og levering ordrer &#39;ledelse Module80Desc=Sendings og levering ordrer 'ledelse
Module85Name=Banker og penge Module85Name=Banker og penge
Module85Desc=Forvaltning af bank-eller kontokurantkonti Module85Desc=Forvaltning af bank-eller kontokurantkonti
Module200Name=LDAP Module200Name=LDAP
@@ -285,9 +285,9 @@ Module310Desc=Instituttets medlemmer forvaltning
Module320Name=RSS Feed Module320Name=RSS Feed
Module320Desc=Tilføj RSS feed inde Dolibarr skærmen sider Module320Desc=Tilføj RSS feed inde Dolibarr skærmen sider
Module330Name=Bogmærker Module330Name=Bogmærker
Module330Desc=Bogmærker &#39;ledelse Module330Desc=Bogmærker 'ledelse
Module400Name=Projekter Module400Name=Projekter
Module400Desc=Projekter &#39;håndtering indeni andre moduler Module400Desc=Projekter 'håndtering indeni andre moduler
Module410Name=Webcalendar Module410Name=Webcalendar
Module410Desc=Webcalendar integration Module410Desc=Webcalendar integration
Module500Name=Skatter, sociale bidrag og udbytte Module500Name=Skatter, sociale bidrag og udbytte
@@ -295,7 +295,7 @@ Module500Desc=Skatter og sociale bidrag «forvaltning
Module600Name=Adviséringer Module600Name=Adviséringer
Module600Desc=Send meddelelser (via email) på Dolibarr business-arrangementer Module600Desc=Send meddelelser (via email) på Dolibarr business-arrangementer
Module700Name=Donationer Module700Name=Donationer
Module700Desc=Gaver &#39;ledelse Module700Desc=Gaver 'ledelse
Module800Name=OsCommerce direkte Module800Name=OsCommerce direkte
Module800Desc=Interface til at vise en osCommerce eller OSCSS shop via direkte database adgang Module800Desc=Interface til at vise en osCommerce eller OSCSS shop via direkte database adgang
Module900Name=OsCommerce fra WAS Module900Name=OsCommerce fra WAS
@@ -305,11 +305,11 @@ Module1200Desc=Mantis integration
Module1400Name=Regnskabsmæssig ekspert Module1400Name=Regnskabsmæssig ekspert
Module1400Desc=Regnskabsmæssig forvaltning for eksperter (dobbelt parterne) Module1400Desc=Regnskabsmæssig forvaltning for eksperter (dobbelt parterne)
Module1780Name=Kategorier Module1780Name=Kategorier
Module1780Desc=Kategorier &#39;forvaltning (produkter, leverandører og kunder) Module1780Desc=Kategorier 'forvaltning (produkter, leverandører og kunder)
Module2200Name=Udlånsrettighederne Module2200Name=Udlånsrettighederne
Module2200Desc=Udlånsrettighederne forvaltning Module2200Desc=Udlånsrettighederne forvaltning
Module2300Name=Menuer Module2300Name=Menuer
Module2300Desc=Menuer &#39;ledelse Module2300Desc=Menuer 'ledelse
Module2400Name=Agenda Module2400Name=Agenda
Module2400Desc=Handlinger / opgaver og dagsorden forvaltning Module2400Desc=Handlinger / opgaver og dagsorden forvaltning
Module2500Name=Elektronisk Content Management Module2500Name=Elektronisk Content Management
@@ -317,8 +317,8 @@ Module2500Desc=Gemme og dele dokumenter
Module50100Name=Cash desk Module50100Name=Cash desk
Module50100Desc=Cash desk modul Module50100Desc=Cash desk modul
Permission11=Læs fakturaer Permission11=Læs fakturaer
Permission12=Opret fakturaer Permission12=Opret/Modify fakturaer
Permission13=Modify fakturaer Permission13=Unvalidate fakturaer
Permission14=Valider fakturaer Permission14=Valider fakturaer
Permission15=Send fakturaer via e-mail Permission15=Send fakturaer via e-mail
Permission16=Opret betalinger for fakturaer Permission16=Opret betalinger for fakturaer
@@ -360,7 +360,7 @@ Permission93=Slet sociale bidrag og moms
Permission95=Læs rapporter Permission95=Læs rapporter
Permission96=Setup lastfordelingen Permission96=Setup lastfordelingen
Permission97=Læs faktura regnskabspool lastfordelingen Permission97=Læs faktura regnskabspool lastfordelingen
Permission98=Ekspeditionscentre faktura&#39;s regnskabslinjer Permission98=Ekspeditionscentre faktura's regnskabslinjer
Permission101=Læs sendings Permission101=Læs sendings
Permission102=Opret / ændre sendings Permission102=Opret / ændre sendings
Permission104=Valider sendings Permission104=Valider sendings
@@ -448,7 +448,6 @@ Permission1185=Godkend leverandør ordrer
Permission1186=Bestil leverandør ordrer Permission1186=Bestil leverandør ordrer
Permission1187=Anerkende modtagelsen af leverandør ordrer Permission1187=Anerkende modtagelsen af leverandør ordrer
Permission1188=Luk leverandør ordrer Permission1188=Luk leverandør ordrer
Permission1189=Annuller leverandør ordrer
Permission1201=Få resultatet af en eksport Permission1201=Få resultatet af en eksport
Permission1202=Opret / Modify en eksport Permission1202=Opret / Modify en eksport
Permission1231=Læs leverandør fakturaer Permission1231=Læs leverandør fakturaer
@@ -488,7 +487,7 @@ VATManagement=Moms Management
VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:<br>If the seller is subjected to VAT, then VAT by default=0. End of rule.<br>If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule. <br>If seller and buyer in the European Community and goods are sold having new means of transport (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.<br>If seller and buyer in the European Community and goods sold by other means rather than new means of transport, then the VAT by default=VAT of product sold. End of rule.<br>Else the proposed default VAT=Momssatsen som standard, når du opretter udsigter, fakturaer, ordrer etc følge aktive standard regel: <br> Hvis sælgeren er udsat for moms, så momsen som standard= 0. Udgangen af reglen. <br> Hvis (sælge land= opkøb land), så den moms, som standard= moms af produktet i at sælge landet. Udgangen af reglen. <br> Hvis sælger og køber i Det Europæiske Fællesskab og varer sælges med nye transportmidler (bil, skib, fly), standardnavnet moms= 0 (momsen skal betales af køber på customoffice af sit land og ikke på sælgerens ). Udgangen af reglen. <br> Hvis sælger og køber i Det Europæiske Fællesskab og varer, der sælges af andre midler end nye transportmidler, så er den moms, som standard= moms af solgte vare. Udgangen af reglen. <br> Else den foreslåede standard moms= 1. Udgangen af reglen. VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:<br>If the seller is subjected to VAT, then VAT by default=0. End of rule.<br>If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule. <br>If seller and buyer in the European Community and goods are sold having new means of transport (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.<br>If seller and buyer in the European Community and goods sold by other means rather than new means of transport, then the VAT by default=VAT of product sold. End of rule.<br>Else the proposed default VAT=Momssatsen som standard, når du opretter udsigter, fakturaer, ordrer etc følge aktive standard regel: <br> Hvis sælgeren er udsat for moms, så momsen som standard= 0. Udgangen af reglen. <br> Hvis (sælge land= opkøb land), så den moms, som standard= moms af produktet i at sælge landet. Udgangen af reglen. <br> Hvis sælger og køber i Det Europæiske Fællesskab og varer sælges med nye transportmidler (bil, skib, fly), standardnavnet moms= 0 (momsen skal betales af køber på customoffice af sit land og ikke på sælgerens ). Udgangen af reglen. <br> Hvis sælger og køber i Det Europæiske Fællesskab og varer, der sælges af andre midler end nye transportmidler, så er den moms, som standard= moms af solgte vare. Udgangen af reglen. <br> Else den foreslåede standard moms= 1. Udgangen af reglen.
VATIsNotUsedDesc=Som standard er den foreslåede moms er 0, der kan anvendes til sager, som foreninger, enkeltpersoner eller små virksomheder. VATIsNotUsedDesc=Som standard er den foreslåede moms er 0, der kan anvendes til sager, som foreninger, enkeltpersoner eller små virksomheder.
VATIsUsedExampleFR=I Frankrig, betyder det, virksomheder eller organisationer, der har en reel skattesystem (Simplified reelle eller normale reelle). Et system, hvor momsen er erklæret. VATIsUsedExampleFR=I Frankrig, betyder det, virksomheder eller organisationer, der har en reel skattesystem (Simplified reelle eller normale reelle). Et system, hvor momsen er erklæret.
VATIsNotUsedExampleFR=I Frankrig, betyder det, at foreninger, der ikke moms erklæret eller selskaber, organisationer eller liberale erhverv, der har valgt den mikrovirksomhed skattesystem (moms i franchiseaftaler) og betalt en franchiseaftale moms uden moms erklæring. Dette valg vil vise reference &quot;Ikke relevant moms - kunst-293B af CGI&quot; på fakturaer. VATIsNotUsedExampleFR=I Frankrig, betyder det, at foreninger, der ikke moms erklæret eller selskaber, organisationer eller liberale erhverv, der har valgt den mikrovirksomhed skattesystem (moms i franchiseaftaler) og betalt en franchiseaftale moms uden moms erklæring. Dette valg vil vise reference "Ikke relevant moms - kunst-293B af CGI" på fakturaer.
LabelUsedByDefault=Etiket, som bruges som standard, hvis ingen oversættelse kan findes for kode LabelUsedByDefault=Etiket, som bruges som standard, hvis ingen oversættelse kan findes for kode
LabelOnDocuments=Etiketten på dokumenter LabelOnDocuments=Etiketten på dokumenter
NbOfDays=Nb dage NbOfDays=Nb dage
@@ -522,7 +521,7 @@ TableName=Tabel navn
TableLineFormat=Line format TableLineFormat=Line format
NbOfRecord=Nb af optegnelser NbOfRecord=Nb af optegnelser
Constraints=Begrænsninger Constraints=Begrænsninger
ConstraintsType=Constraint&#39;s type ConstraintsType=Constraint's type
ConstraintsToShowOrNotEntry=Constraint til at vise eller ikke menuen indrejse ConstraintsToShowOrNotEntry=Constraint til at vise eller ikke menuen indrejse
AllMustBeOk=Alle disse skal kontrolleres AllMustBeOk=Alle disse skal kontrolleres
Host=Server Host=Server
@@ -560,8 +559,8 @@ DoNotSuggestPaymentMode=Ikke tyder
NoActiveBankAccountDefined=Nr. aktiv bankkonto defineret NoActiveBankAccountDefined=Nr. aktiv bankkonto defineret
OwnerOfBankAccount=Ejer af bankkonto %s OwnerOfBankAccount=Ejer af bankkonto %s
BankModuleNotActive=Bankkonti modul er ikke aktiveret BankModuleNotActive=Bankkonti modul er ikke aktiveret
ShowBugTrackLink=Vis linket &quot;Fejlmeld&quot; ShowBugTrackLink=Vis linket "Fejlmeld"
ShowWorkBoard=Show &quot;arbejdsbord&quot; på hjemmeside ShowWorkBoard=Show "arbejdsbord" på hjemmeside
Alerts=Indberetninger Alerts=Indberetninger
Delays=Forsinkelser Delays=Forsinkelser
DelayBeforeWarning=Forsinkelse, før advarsel DelayBeforeWarning=Forsinkelse, før advarsel
@@ -615,7 +614,7 @@ MAIN_MAX_DECIMALS_TOT=Max decimaler for total priser
MAIN_MAX_DECIMALS_SHOWN=Max decimaler for priser vises på skærmen (Tilføj <b>...</b> efter dette nummer, hvis du vil se <b>...,</b> når nummeret er afkortet, når der vises på skærmen) MAIN_MAX_DECIMALS_SHOWN=Max decimaler for priser vises på skærmen (Tilføj <b>...</b> efter dette nummer, hvis du vil se <b>...,</b> når nummeret er afkortet, når der vises på skærmen)
MAIN_DISABLE_PDF_COMPRESSION=Brug PDF-komprimering for genereret PDF filer. MAIN_DISABLE_PDF_COMPRESSION=Brug PDF-komprimering for genereret PDF filer.
ParameterActiveForNextInputOnly=Parameter effektive for næste input kun ParameterActiveForNextInputOnly=Parameter effektive for næste input kun
NoEventOrNoAuditSetup=Ingen sikkerhed tilfælde er blevet registreret endnu. Dette kan være normal, hvis revision ikke er blevet aktiveret på &quot;setup - sikkerhed - revision&quot; side. NoEventOrNoAuditSetup=Ingen sikkerhed tilfælde er blevet registreret endnu. Dette kan være normal, hvis revision ikke er blevet aktiveret på "setup - sikkerhed - revision" side.
NoEventFoundWithCriteria=Ingen sikkerhed tilfælde er fundet for sådanne søgefelter. NoEventFoundWithCriteria=Ingen sikkerhed tilfælde er fundet for sådanne søgefelter.
SeeLocalSendMailSetup=Se din lokale sendmail setup SeeLocalSendMailSetup=Se din lokale sendmail setup
PasswordGenerationStandard=Returnere en adgangskode, der genereres i henhold til interne Dolibarr algoritme: 8 tegn indeholder delt tal og tegn med små bogstaver. PasswordGenerationStandard=Returnere en adgangskode, der genereres i henhold til interne Dolibarr algoritme: 8 tegn indeholder delt tal og tegn med små bogstaver.
@@ -625,13 +624,13 @@ GeneratePassword=Foreslå genereret adgangskode
RuleForGeneratedPasswords=Regel at generere foreslået passwords RuleForGeneratedPasswords=Regel at generere foreslået passwords
DoNotSuggest=Ikke tyder på nogen adgangskode DoNotSuggest=Ikke tyder på nogen adgangskode
EncryptedPasswordInDatabase=At lade kryptering af adgangskoder i databasen EncryptedPasswordInDatabase=At lade kryptering af adgangskoder i databasen
DisableForgetPasswordLinkOnLogonPage=Ikke viser linket &quot;Glem adgangskode&quot; på loginsiden DisableForgetPasswordLinkOnLogonPage=Ikke viser linket "Glem adgangskode" på loginsiden
CompanySetup=Selskaber modul opsætning CompanySetup=Selskaber modul opsætning
CompanyCodeChecker=Modul for tredjemand code generation og kontrol (kunde eller leverandør) CompanyCodeChecker=Modul for tredjemand code generation og kontrol (kunde eller leverandør)
AccountCodeManager=Modul til regnskabsformål kode generation (kunde eller leverandør) AccountCodeManager=Modul til regnskabsformål kode generation (kunde eller leverandør)
ModuleCompanyCodeAquarium=Retur en regnskabspool kode bygget af &quot;401&quot; efterfulgt af tredjeparts leverandør kode for en leverandør regnskabspool koden, og &quot;411&quot; efterfulgt af tredjepart kunde kode for en kunde regnskabspool kode. ModuleCompanyCodeAquarium=Retur en regnskabspool kode bygget af "401" efterfulgt af tredjeparts leverandør kode for en leverandør regnskabspool koden, og "411" efterfulgt af tredjepart kunde kode for en kunde regnskabspool kode.
ModuleCompanyCodePanicum=Retur tom regnskabspool kode. ModuleCompanyCodePanicum=Retur tom regnskabspool kode.
ModuleCompanyCodeDigitaria=Regnskabsmæssig kode afhænger tredjepart kode. Koden er sammensat af tegnet &quot;C&quot; i første position efterfulgt af de første 5 bogstaver af tredjepart kode. ModuleCompanyCodeDigitaria=Regnskabsmæssig kode afhænger tredjepart kode. Koden er sammensat af tegnet "C" i første position efterfulgt af de første 5 bogstaver af tredjepart kode.
UseNotifications=Brug anmeldelser UseNotifications=Brug anmeldelser
NotificationsDesc=Adviséringer funktionen giver dig mulighed for at stille sende automatiske mail, for nogle Dolibarr arrangementer, til virksomheder, der er konfigureret til NotificationsDesc=Adviséringer funktionen giver dig mulighed for at stille sende automatiske mail, for nogle Dolibarr arrangementer, til virksomheder, der er konfigureret til
WebCalSetup=Webcalendar link setup WebCalSetup=Webcalendar link setup
@@ -645,9 +644,9 @@ WebCalServer=Server hosting kalender database
WebCalDatabaseName=Database navn WebCalDatabaseName=Database navn
WebCalUser=Brugeren at få adgang til databasen WebCalUser=Brugeren at få adgang til databasen
WebCalSetupSaved=Webcalendar opsætning gemt. WebCalSetupSaved=Webcalendar opsætning gemt.
WebCalTestOk=Forbindelse til server &#39; %s&#39; på database&#39; %s&#39; med brugeren &#39; %s&#39; succes. WebCalTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
WebCalTestKo1=Forbindelse til server &#39; %s&#39; lykkes men database&#39; %s&#39; kunne ikke være nået. WebCalTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
WebCalTestKo2=Forbindelse til server &#39; %s&#39; med brugeren&#39; %s&#39; mislykkedes. WebCalTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
WebCalErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Webcalendar database. WebCalErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Webcalendar database.
WebCalAddEventOnCreateActions=Tilføj kalenderbegivenheder på aktioner skabe WebCalAddEventOnCreateActions=Tilføj kalenderbegivenheder på aktioner skabe
WebCalAddEventOnCreateCompany=Tilføj kalenderbegivenheder på virksomhederne skabe WebCalAddEventOnCreateCompany=Tilføj kalenderbegivenheder på virksomhederne skabe
@@ -715,8 +714,8 @@ LDAPContactsSynchro=Kontakter
LDAPMembersSynchro=Medlemmer LDAPMembersSynchro=Medlemmer
LDAPSynchronization=LDAP synkronisering LDAPSynchronization=LDAP synkronisering
LDAPFunctionsNotAvailableOnPHP=LDAP funktioner ikke availbale på din PHP LDAPFunctionsNotAvailableOnPHP=LDAP funktioner ikke availbale på din PHP
LDAPToDolibarr=LDAP -&gt; Dolibarr LDAPToDolibarr=LDAP -> Dolibarr
DolibarrToLDAP=Dolibarr -&gt; LDAP DolibarrToLDAP=Dolibarr -> LDAP
LDAPNamingAttribute=Indtast LDAP LDAPNamingAttribute=Indtast LDAP
LDAPSynchronizeUsers=Synkronisere Dolibarr brugere med LDAP LDAPSynchronizeUsers=Synkronisere Dolibarr brugere med LDAP
LDAPSynchronizeGroups=Synkronisere Dolibarr grupper med LDAP LDAPSynchronizeGroups=Synkronisere Dolibarr grupper med LDAP
@@ -743,12 +742,12 @@ LDAPServerDnExample=Complete DN (ex: dc=company,dc=Komplet DN (ex: dc= firma, DC
LDAPPasswordExample=Admin password LDAPPasswordExample=Admin password
LDAPDnSynchroActive=Brugere og grupper synkronisering LDAPDnSynchroActive=Brugere og grupper synkronisering
LDAPDnSynchroActiveExample=LDAP til Dolibarr eller Dolibarr til LDAP synkronisering LDAPDnSynchroActiveExample=LDAP til Dolibarr eller Dolibarr til LDAP synkronisering
LDAPDnContactActive=Kontaktpersoner &#39;synkronisering LDAPDnContactActive=Kontaktpersoner 'synkronisering
LDAPDnContactActiveYes=Aktiveret synkronisering LDAPDnContactActiveYes=Aktiveret synkronisering
LDAPDnContactActiveExample=Aktiveret / Unactivated synkronisering LDAPDnContactActiveExample=Aktiveret / Unactivated synkronisering
LDAPDnMemberActive=Medlemmernes synkronisering LDAPDnMemberActive=Medlemmernes synkronisering
LDAPDnMemberActiveExample=Aktiveret / Unactivated synkronisering LDAPDnMemberActiveExample=Aktiveret / Unactivated synkronisering
LDAPContactDn=Dolibarr kontakter &quot;DN LDAPContactDn=Dolibarr kontakter "DN
LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=Komplet DN (ex: ou= kontakter, dc= samfundet, dc= dk) LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=Komplet DN (ex: ou= kontakter, dc= samfundet, dc= dk)
LDAPMemberDn=Dolibarr medlemmernes DN LDAPMemberDn=Dolibarr medlemmernes DN
LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=Komplet DN (ex: ou= medlemmer, dc= samfundet, dc= dk) LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=Komplet DN (ex: ou= medlemmer, dc= samfundet, dc= dk)
@@ -884,24 +883,24 @@ DeliveriesOrderAbility=Support produkter leverancer kvitteringer
ActivateFCKeditor=Aktivér FCKeditor for: ActivateFCKeditor=Aktivér FCKeditor for:
FCKeditorForUsers=WYSIWIG oprettelsen / udgave af brugernes beskrivelse og noter FCKeditorForUsers=WYSIWIG oprettelsen / udgave af brugernes beskrivelse og noter
FCKeditorForCompany=WYSIWIG oprettelsen / udgave af virksomhedernes beskrivelse og noter FCKeditorForCompany=WYSIWIG oprettelsen / udgave af virksomhedernes beskrivelse og noter
FCKeditorForProduct=WYSIWIG oprettelsen / udgave af produkter / services&#39; beskrivelse og noter FCKeditorForProduct=WYSIWIG oprettelsen / udgave af produkter / services' beskrivelse og noter
FCKeditorForMembers=WYSIWIG oprettelsen / udgave af medlemmernes beskrivelse og noter FCKeditorForMembers=WYSIWIG oprettelsen / udgave af medlemmernes beskrivelse og noter
FCKeditorForProductDetails=WYSIWIG oprettelsen / udgave af produkter detaljer linjer for alle enheder (forslag, ordrer, fakturaer, etc. ..) <br> Advarsel: Brug denne indstilling er seriøst ikke recommanded, da det kan skabe problemer med specialtegn og side formatering når bygningen PDF filer. FCKeditorForProductDetails=WYSIWIG oprettelsen / udgave af produkter detaljer linjer for alle enheder (forslag, ordrer, fakturaer, etc. ..) <br> Advarsel: Brug denne indstilling er seriøst ikke recommanded, da det kan skabe problemer med specialtegn og side formatering når bygningen PDF filer.
FCKeditorForProductDetailsPerso=WYSIWIG oprettelsen / udgave af produkter personlige oplysninger linjer for alle enheder (forslag, ordrer, fakturaer, etc. ..) FCKeditorForProductDetailsPerso=WYSIWIG oprettelsen / udgave af produkter personlige oplysninger linjer for alle enheder (forslag, ordrer, fakturaer, etc. ..)
FCKeditorForMailing=WYSIWIG oprettelsen / udgave af postforsendelser FCKeditorForMailing=WYSIWIG oprettelsen / udgave af postforsendelser
OSCommerceErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være et osCommerce database (Key %s blev ikke fundet i tabel %s). OSCommerceErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være et osCommerce database (Key %s blev ikke fundet i tabel %s).
OSCommerceTestOk=Forbindelse til server &#39; %s&#39; på database&#39; %s&#39; med brugeren &#39; %s&#39; succes. OSCommerceTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
OSCommerceTestKo1=Forbindelse til server &#39; %s&#39; lykkes men database&#39; %s&#39; kunne ikke være nået. OSCommerceTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
OSCommerceTestKo2=Forbindelse til server &#39; %s&#39; med brugeren&#39; %s&#39; mislykkedes. OSCommerceTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
MantisSetup=Mantis link setup MantisSetup=Mantis link setup
MantisURL=URL for Mantis adgang MantisURL=URL for Mantis adgang
MantisServer=Server hosting Mantis database MantisServer=Server hosting Mantis database
MantisDatabaseName=Database navn MantisDatabaseName=Database navn
MantisUser=Brugeren at få adgang til databasen MantisUser=Brugeren at få adgang til databasen
MantisSetupSaved=Mantis opsætning gemt. MantisSetupSaved=Mantis opsætning gemt.
MantisTestOk=Forbindelse til server &#39; %s&#39; på database&#39; %s&#39; med brugeren &#39; %s&#39; succes. MantisTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
MantisTestKo1=Forbindelse til server &#39; %s&#39; lykkes men database&#39; %s&#39; kunne ikke være nået. MantisTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
MantisTestKo2=Forbindelse til server &#39; %s&#39; med brugeren&#39; %s&#39; mislykkedes. MantisTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
MantisErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Mantis database. MantisErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Mantis database.
StockSetup=Konfiguration modul lager StockSetup=Konfiguration modul lager
UserWarehouse=Brug brugerens personlige bestande UserWarehouse=Brug brugerens personlige bestande
@@ -932,11 +931,9 @@ ConfirmDeleteMenu=Er du sikker på du vil slette menuen <b>indrejse %s?</b>
DeleteLine=Slet linie DeleteLine=Slet linie
ConfirmDeleteLine=Er du sikker på du vil slette denne linje? ConfirmDeleteLine=Er du sikker på du vil slette denne linje?
TaxSetup=Skatter, sociale bidrag og udbytte modul opsætning TaxSetup=Skatter, sociale bidrag og udbytte modul opsætning
OptionVatMode=Mulighed d&#39;exigibilit de TVA OptionVatMode=Mulighed d'exigibilit de TVA
OptionVATDefault=Standard OptionVATDefault=Standard
OptionVATDebitOption=Mulighed tjenester sur overførselsautorisation OptionVATDebitOption=Mulighed tjenester sur overførselsautorisation
OptionVatDefaultDesc=L&#39;exigibilit de la TVA est: <br> - Sur livraison pour les biens <br> - Sur paiement pour les tjenester
OptionVatDebitOptionDesc=L&#39;exigibilit de la TVA est: <br> - Sur livraison pour les biens <br> - Sur facturation (dbit) pour les tjenester
AgendaSetup=Aktioner og dagsorden modul opsætning AgendaSetup=Aktioner og dagsorden modul opsætning
PasswordTogetVCalExport=Nøglen til at tillade eksport link PasswordTogetVCalExport=Nøglen til at tillade eksport link
ClickToDialDesc=Dette modul giver mulighed for at tilføje et ikon efter telefonnummeret på Dolibarr kontakter. Et klik på dette ikon, vil kalde en serveur med en bestemt webadresse du definerer nedenfor. Dette kan bruges til at ringe til et call center-system fra Dolibarr, der kan ringe til telefonnummeret på en SIP-system f.eks. ClickToDialDesc=Dette modul giver mulighed for at tilføje et ikon efter telefonnummeret på Dolibarr kontakter. Et klik på dette ikon, vil kalde en serveur med en bestemt webadresse du definerer nedenfor. Dette kan bruges til at ringe til et call center-system fra Dolibarr, der kan ringe til telefonnummeret på en SIP-system f.eks.
@@ -974,14 +971,14 @@ GenericMaskCodes4b=<u>Eksempel på tredjemand oprettet den 2007-03-01:</u> <br>
GenericMaskCodes5=<b>ABC (yy) (mm) - (000000)</b> vil give <b>ABC0701-000099</b> <br> <b>(0000 +100)-ZZZ / (dd) / XXX</b> vil give <b>0199-ZZZ/31/XXX</b> GenericMaskCodes5=<b>ABC (yy) (mm) - (000000)</b> vil give <b>ABC0701-000099</b> <br> <b>(0000 +100)-ZZZ / (dd) / XXX</b> vil give <b>0199-ZZZ/31/XXX</b>
SeeWikiForAllTeam=Tag et kig på wiki side for fuld liste over alle aktører og deres organisation SeeWikiForAllTeam=Tag et kig på wiki side for fuld liste over alle aktører og deres organisation
UseACacheDelay=Forsinkelse for caching eksport svar i sekunder (0 eller tomme for ikke cache) UseACacheDelay=Forsinkelse for caching eksport svar i sekunder (0 eller tomme for ikke cache)
DisableLinkToHelpCenter=Skjul linket <b>&quot;Har du brug for hjælp eller støtte&quot;</b> på loginsiden DisableLinkToHelpCenter=Skjul linket <b>"Har du brug for hjælp eller støtte"</b> på loginsiden
DisableLinkToHelp=Skjul link <b>&quot; %s Online Hjælp&quot;</b> på menu til venstre DisableLinkToHelp=Skjul link <b>" %s Online Hjælp"</b> på menu til venstre
AddCRIfTooLong=Der er ingen automatisk indpakning, så hvis linje er ude af side om dokumenter, fordi alt for længe, skal du tilføje dig transport afkast i textarea. AddCRIfTooLong=Der er ingen automatisk indpakning, så hvis linje er ude af side om dokumenter, fordi alt for længe, skal du tilføje dig transport afkast i textarea.
ModuleDisabled=Modul handicappede ModuleDisabled=Modul handicappede
ModuleDisabledSoNoEvent=Modul handicappede så tilfælde aldrig skabt ModuleDisabledSoNoEvent=Modul handicappede så tilfælde aldrig skabt
ConfirmPurge=Er du sikker på at du vil udføre dette purge? <br> Dette vil slette afgjort alle din fil data med ingen måde til at genoprette dem (ECM filer, vedhæftede filer ...). ConfirmPurge=Er du sikker på at du vil udføre dette purge? <br> Dette vil slette afgjort alle din fil data med ingen måde til at genoprette dem (ECM filer, vedhæftede filer ...).
Module51Name=Masseforsendelser Module51Name=Masseforsendelser
Module51Desc=Masse papir postforsendelser &#39;ledelse Module51Desc=Masse papir postforsendelser 'ledelse
Module5000Name=Multi-selskab Module5000Name=Multi-selskab
Module5000Desc=Giver dig mulighed for at administrere flere selskaber Module5000Desc=Giver dig mulighed for at administrere flere selskaber
Module10000Name=PayBox Module10000Name=PayBox
@@ -1035,7 +1032,7 @@ RestoreDesc=At genskabe en Dolibarr sikkerhedskopi, skal du:
RestoreDesc2=* Restore arkivfil (zip-fil, for eksempel) af dokumenter biblioteket til at udpakke træ af filer i dokumenter mappe til en ny Dolibarr installation eller i denne aktuelle dokumenter directoy <b>( %s).</b> RestoreDesc2=* Restore arkivfil (zip-fil, for eksempel) af dokumenter biblioteket til at udpakke træ af filer i dokumenter mappe til en ny Dolibarr installation eller i denne aktuelle dokumenter directoy <b>( %s).</b>
RestoreDesc3=* Gendan data fra en sikkerhedskopi dump fil, i databasen i den nye Dolibarr installation eller i databasen i denne aktuelle installation. Advarsel, når genoprette er færdig, skal du bruge et login / password, der eksisterede, da backup blev foretaget, for at oprette forbindelse igen. Sådan gendanner du en backup-database i denne aktuelle installation, kan du følge dette assistent. RestoreDesc3=* Gendan data fra en sikkerhedskopi dump fil, i databasen i den nye Dolibarr installation eller i databasen i denne aktuelle installation. Advarsel, når genoprette er færdig, skal du bruge et login / password, der eksisterede, da backup blev foretaget, for at oprette forbindelse igen. Sådan gendanner du en backup-database i denne aktuelle installation, kan du følge dette assistent.
ForcedToByAModule=Denne regel er tvunget til <b>at %s</b> ved en aktiveret modul ForcedToByAModule=Denne regel er tvunget til <b>at %s</b> ved en aktiveret modul
YouCanUseDOL_DATA_ROOT=Du kan bruge DOL_DATA_ROOT / dolibarr.log for en logfil i Dolibarr &quot;dokumenter&quot; mappen. Du kan indstille en anden vej til at gemme denne fil. YouCanUseDOL_DATA_ROOT=Du kan bruge DOL_DATA_ROOT / dolibarr.log for en logfil i Dolibarr "dokumenter" mappen. Du kan indstille en anden vej til at gemme denne fil.
Menus=Menuer Menus=Menuer
DetailEnabled=Betingelse for at vise eller ikke indrejse DetailEnabled=Betingelse for at vise eller ikke indrejse
SummaryOfVatExigibilityUsedByDefault=Time moms forfaldstidspunkt som standard i henhold til choosed valg: SummaryOfVatExigibilityUsedByDefault=Time moms forfaldstidspunkt som standard i henhold til choosed valg:
@@ -1066,3 +1063,132 @@ DictionnaryProspectLevel=Prospect potentielle niveau
UseSearchToSelectProduct=Brug en søgning form for at vælge et produkt (i stedet for at bruge et listefelt) UseSearchToSelectProduct=Brug en søgning form for at vælge et produkt (i stedet for at bruge et listefelt)
OnPayment=Om betaling OnPayment=Om betaling
// STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56). // STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
// Reference language: en_US
SessionSaveHandler=Handler for at gemme sessioner
PurgeSessions=Purge af sessioner
ConfirmPurgeSessions=Vil du virkelig ønsker at rense alle sessioner? Dette vil afbryde alle brugere (bortset fra dig selv).
NoSessionListWithThisHandler=Gem session handler konfigureret i din PHP tillader ikke at liste alle kørende sessioner.
LockNewSessions=Lås nye forbindelser
ConfirmLockNewSessions=Er du sikker på du vil begrænse enhver ny Dolibarr forbindelse til dig selv. Kun brugeren <b>%s</b> vil være i stand til at forbinde efter denne.
UnlockNewSessions=Fjern forbindelsen lås
YourSession=Din session
Sessions=Brugere session
NoSessionFound=Din PHP synes ikke muligt at liste aktive sessioner. Directory bruges til at gemme sessioner <b>(%s)</b> kan være beskyttet (For eksempel ved at OS tilladelser eller PHP direktiv open_basedir).
FormToTestFileUploadForm=Form til test-fil upload (ifølge setup)
PreviewNotAvailable=Preview ikke tilgængeligt
AntiVirusCommand=Fuld sti til antivirus kommando
AntiVirusCommandExample=Eksempel på ClamWin: c: \ Program Files (x86) \ ClamWin \ bin \ clamscan.exe <br> Eksempel på ClamAV: / usr / bin / clamscan
AntiVirusParam=Flere parametre på kommandolinjen
AntiVirusParamExample=Eksempel for ClamWin: - database = "C: \ Programmer (x86) \ ClamWin \ lib"
YouCanDownloadBackupFile=Genererede filer kan nu downloades
IgnoreDuplicateRecords=Ignorer fejl dubletter (INSERT IGNORE)
InstrucToEncodePass=For at få password kodet ind i <b>conf.php</b> fil, erstatte linjen <br> <b>$ Dolibarr_main_db_pass ="..."</b> <br> af <br> <b>$ Dolibarr_main_db_pass = "krypteret: %s"</b>
InstrucToClearPass=For at få afkodet password (klar) i <b>conf.php</b> fil, erstatte linjen <br> <b>$ Dolibarr_main_db_pass = "krypteret :..."</b> <br> af <br> <b>$ Dolibarr_main_db_pass = "%s"</b>
ProtectAndEncryptPdfFilesDesc=Beskyttelse af et PDF-dokument holder den til rådighed for at læse og udskrive med alle PDF browser. Men, redigering og kopiering er ikke muligt længere. Bemærk, at du bruger denne funktion gør opbygningen af et globalt kumulerede pdf virker ikke (som ubetalte fakturaer).
MAIN_MAIL_EMAIL_TLS=Brug TLS (SSL) kryptering
SubmitTranslation=Hvis oversættelse for dette sprog ikke er afsluttet, eller du finder fejl, kan du rette dette ved at redigere filerne i mappen <b>langs / %s</b> og forelægger ændrede filer på www.dolibarr.org forum.
FindPackageFromWebSite=Find en pakke, der giver funktion, du ønsker (for eksempel på web site %s).
MinLength=Mindste længde
LanguageFilesCachedIntoShmopSharedMemory=Filer. Lang lastet i delt hukommelse
ExamplesWithCurrentSetup=Eksempler med den nuværende kører setup
ListOfDirectories=Liste over OpenDocument-skabeloner mapper
ListOfDirectoriesForModelGenODT=Liste over biblioteker, der indeholder skabeloner filer med OpenDocument-formatet. <br><br> Læg her fuld bane af telefonbøger. <br> Tilføj en vognretur mellem eah bibliotek. <br> Hvis du vil tilføje en mappe af GED modul, tilføje her <b>DOL_DATA_ROOT / ECM / yourdirectoryname.</b> <br><br> Filer i disse mapper skal ende <b>med. Odt.</b>
NumberOfModelFilesFound=Antal ODT skabeloner filer, der findes i disse mapper
ExampleOfDirectoriesForModelGen=Eksempler på syntaks: <br> c: \ mydir <br> / Home / mydir <br> DOL_DATA_ROOT / ECM / ecmdir
FirstnameNamePosition=Placering af fornavn / navn
Module23Name=Energi
Module23Desc=Overvågning af forbruget af energi
Module100Name=ExternalSite
Module100Desc=Medtag eventuelle eksterne web site i Dolibarr menuer og se det i en Dolibarr ramme
Module2000Name=FCKeditor
Module2000Desc=WYSIWYG Editor
Module2600Name=WebServices
Module2600Desc=Aktiver Dolibarr webtjenester server
Module2700Name=Gravatar
Module2700Desc=Brug online Gravatar service (www.gravatar.com) for at vise foto af brugere / medlemmer (fundet med deres e-mails). Har brug for en internetadgang
Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind konverteringer kapaciteter
Module13452Name=SpeedFinder
Module13452Desc=Søgemaskine i AJAX til at finde et navn fra en del af et telefonnummer på 2 sekunder
Permission141=Læs opgaver
Permission142=Opret / ændre opgaver
Permission144=Slet opgaver
Permission536=Se / styre skjulte tjenester
Permission2411=Læs aktioner (begivenheder eller opgaver) andres
Permission2412=Opret / ændre handlinger (begivenheder eller opgaver) andres
Permission2413=Slet handlinger (events eller opgaver) andres
DictionnaryStaff=Personale
LocalTax1ManagementES=RE Management
LocalTax1IsUsedDescES=RE sats som standard, når du opretter udsigter, fakturaer, ordrer mv følge de aktive standard regel: <br> Hvis te køber ikke udsættes for RE, RE som standard = 0. Slut på reglen. <br> Hvis køberen er underkastet RE derefter RE som standard. Slut på reglen. <br>
LocalTax1IsNotUsedDescES=Som standard den foreslåede RE er 0. Slut på reglen.
LocalTax1IsUsedExampleES=I Spanien er professionelle underlagt nogle specifikke dele af den spanske IAE.
LocalTax1IsNotUsedExampleES=I Spanien er professionelle og samfund og på visse dele af den spanske IAE.
LocalTax2ManagementES=IRPF Management
LocalTax2IsUsedDescES=RE sats som standard, når du opretter udsigter, fakturaer, ordrer mv følge de aktive standard regel: <br> Hvis sælgeren ikke er udsat for IRPF, så IRPF som standard = 0. Slut på reglen. <br> Hvis sælgeren er underkastet IRPF derefter IRPF som standard. Slut på reglen. <br>
LocalTax2IsNotUsedDescES=Som standard den foreslåede IRPF er 0. Slut på reglen.
LocalTax2IsUsedExampleES=I Spanien, freelancere og selvstændige, der leverer tjenesteydelser og virksomheder, der har valgt at skattesystemet i de moduler.
LocalTax2IsNotUsedExampleES=I Spanien er bussines ikke underlagt skattesystemet i moduler.
MenuUpgrade=Upgrade / Forlæng
DatabaseServer=Database vært
DatabaseUser=Database bruger
DatabasePassword=Database password
EnableShowLogo=Vis logo på venstre menu
DelaysOfToleranceMembers=Tolerance forsinkelse (i dag), inden indberetning om forsinket medlemskab gebyr
MAIN_ROUNDING_RULE_TOT=Størrelse på afrunding række (for sjældne lande, hvor afrunding sker på noget andet end base 10)
UnitPriceOfProduct=Net enhedsprisen på en vare
TotalPriceAfterRounding=Samlet pris (net / beholder / incl moms) efter afrunding
PreviousDumpFiles=Tilgængelig database backup dump filer
WeekStartOnDay=Første dag i ugen
RunningUpdateProcessMayBeRequired=Kørsel opgraderingen processen synes at være nødvendig (Programmer version %s adskiller sig fra database version %s)
YouMustRunCommandFromCommandLineAfterLoginToUser=Du skal køre denne kommando fra kommandolinjen efter login til en shell med brugerens <b>%s.</b>
YourPHPDoesNotHaveSSLSupport=SSL-funktioner ikke er tilgængelige i dit PHP
DownloadMoreSkins=Mere skind til download
SimpleNumRefModelDesc=Retur referencenummer med format %syymm-nnnn hvor yy er året, mm er måned og nnnn er en sekvens uden hul og uden reset
ListOfEntities=Liste over enheder
AddEntity=Tilføj enhed
EditEntity=Rediger enhed
UsersSetup=Brugere modul opsætning
UserMailRequired=EMail forpligtet til at oprette en ny bruger
ModelModules=Dokumenter skabeloner
DocumentModelOdt=Generer dokumenter fra OpenDocuments skabeloner (. ODT filer til OpenOffice, KOffice, TextEdit ,...)
WatermarkOnDraft=Vandmærke på udkast til et dokument
LDAPFieldGroupMembers=Gruppens medlemmer
LDAPFieldGroupMembersExample=Eksempel: uniqueMember
DonationsReceiptModel=Skabelon for donationen modtagelse
MailingEMailError=Retur EMail (Fejl-til) for e-mails med fejl
OptionVatDefaultDesc=Moms skyldes: <br> - Om levering / betaling for varer <br> - Bestemmelser om betalinger for tjenester
OptionVatDebitOptionDesc=Moms skyldes: <br> - Om levering / betaling for varer <br> - På fakturaen (debet) for tjenesteydelser
PastDelayVCalExport=Må ikke eksportere begivenhed ældre end
CashDesk=Point of salg
CashDeskBankAccountForCheque=Konto til at bruge til at modtage betalinger med check
CashDeskBankAccountForCB=Konto til at bruge til at modtage kontant betaling ved kreditkort
SuppliersSetup=Leverandør modul opsætning
SuppliersCommandModel=Komplet template af leverandør orden (logo. ..)
GeoIPMaxmindSetup=GeoIP Maxmind modul opsætning
PathToGeoIPMaxmindCountryDataFile=Sti til fil, der indeholder Maxmind ip til land oversættelse. <br> Eksempel: / usr / local / share / GeoIP / GeoIP.dat
NoteOnPathLocation=Bemærk, at din ip til land datafil skal være inde en mappe din PHP kan læse (Check din PHP open_basedir setup og filsystem tilladelser).
YouCanDownloadFreeDatFileTo=Du kan downloade en <b>gratis demo version</b> af Maxmind GeoIP land fil på %s.
YouCanDownloadAdvancedDatFileTo=Du kan også downloade en mere <b>komplet version, med opdateringer på</b> den Maxmind GeoIP land fil på %s.
TestGeoIPResult=Test af en konvertering IP -> land
NumberWordsSetup=NumberWords modul opsætning
DescNumberWords=Dette modul giver funktioner til at konvertere nummer eller beløb i fuld tegn. Det vil også erstatte den følgende streng begivenheder __TOTAL_TTC_WORDS__, __TOTAL_HT_WORDS__ eller __TOTAL_VAT_WORDS__ af den samlede incl. skat, alt efter skat, eller i alt beholder i alle Textes at bruge dem (fri tekst på fakturaer, ...)
ProjectsNumberingModules=Projekter nummerering modul
ProjectsSetup=Project modul opsætning
ProjectsModelModule=Projekt rapport dokument model
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:21:18).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> da_DA
ModulesMarketPlaceDesc=Du kan finde flere moduler for at downloade på eksterne hjemmesider på internettet ...
ModulesMarketPlaces=Flere moduler ...
DoliStoreDesc=DoliStore den officielle markedsplads for Dolibarr ERP / CRM eksterne moduler
WebSiteDesc=Web site udbydere kan du søge at finde flere moduler ...
URL=Link
OfficialMarketPlace=Officielle markedsplads for eksterne moduler / addons
MAIN_MAIL_AUTOCOPY_TO=Send systematisk en skjult carbon-kopi af alle sendte e-mails til
FreeLegalTextOnInterventions=Fri tekst om intervention dokumenter
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:44:34).

View File

@@ -20,7 +20,7 @@ BillsStatisticsSuppliers=Leverandørernes fakturaer statistik
InvoiceStandard=Standard faktura InvoiceStandard=Standard faktura
InvoiceStandardAsk=Standard faktura InvoiceStandardAsk=Standard faktura
InvoiceStandardDesc=Denne form for faktura er den fælles faktura. InvoiceStandardDesc=Denne form for faktura er den fælles faktura.
InvoiceReplacement=Erstatning faktura. Skal erstatte faktura med reference InvoiceReplacement=Erstatning faktura.
InvoiceReplacementAsk=Erstatning faktura til faktura InvoiceReplacementAsk=Erstatning faktura til faktura
InvoiceAvoir=Credit note InvoiceAvoir=Credit note
InvoiceAvoirAsk=Credit note til korrekt faktura InvoiceAvoirAsk=Credit note til korrekt faktura
@@ -69,9 +69,9 @@ PaymentConditions=Betaling sigt
PaymentConditionsShort=Betaling sigt PaymentConditionsShort=Betaling sigt
PaymentAmount=Indbetalingsbeløb PaymentAmount=Indbetalingsbeløb
PaymentHigherThanReminderToPay=Betaling højere end påmindelse om at betale PaymentHigherThanReminderToPay=Betaling højere end påmindelse om at betale
ClassifyPaid=Klassificere &quot;betales&quot; ClassifyPaid=Klassificere "betales"
ClassifyPaidPartially=Klassificere &#39;betales delvist&#39; ClassifyPaidPartially=Klassificere 'betales delvist'
ClassifyClosed=Klassificere &quot;lukket&quot; ClassifyClosed=Klassificere "lukket"
CreateBill=Opret Faktura CreateBill=Opret Faktura
AddBill=Tilføj faktura eller kreditnota AddBill=Tilføj faktura eller kreditnota
DeleteBill=Slet faktura DeleteBill=Slet faktura
@@ -146,7 +146,7 @@ ConfirmClassifyPaidPartiallyReasonOtherDesc=Brug dette valg, hvis alle andre ikk
ConfirmClassifyAbandonReasonOther=Anden ConfirmClassifyAbandonReasonOther=Anden
ConfirmClassifyAbandonReasonOtherDesc=Dette valg vil blive anvendt i alle andre tilfælde. For eksempel fordi du har planer om at oprette en erstatning faktura. ConfirmClassifyAbandonReasonOtherDesc=Dette valg vil blive anvendt i alle andre tilfælde. For eksempel fordi du har planer om at oprette en erstatning faktura.
ConfirmCustomerPayment=Kan du bekræfte dette paiement input <b>for %s%</b> s? ConfirmCustomerPayment=Kan du bekræfte dette paiement input <b>for %s%</b> s?
ConfirmValidatePayment=Etes-vous sur de vouloir Godkend ce paiment, aucune modifikation n&#39;est muligt une fois le paiement gyldig? ConfirmValidatePayment=Etes-vous sur de vouloir Godkend ce paiment, aucune modifikation n'est muligt une fois le paiement gyldig?
ValidateBill=Godkend fakturaen ValidateBill=Godkend fakturaen
NumberOfBills=Nb af fakturaer NumberOfBills=Nb af fakturaer
NumberOfBillsByMonthHT=Nb af fakturaer måned (efter skat) NumberOfBillsByMonthHT=Nb af fakturaer måned (efter skat)
@@ -186,7 +186,7 @@ DateInvoice=Fakturadato
NoInvoice=Nr. faktura NoInvoice=Nr. faktura
ClassifyBill=Klassificere faktura ClassifyBill=Klassificere faktura
SupplierBillsToPay=Leverandører fakturaer til at betale SupplierBillsToPay=Leverandører fakturaer til at betale
DispenseMontantLettres=Les factures rdiges par procdsmcanographiques sont dispenserer de l&#39;arrt da lettres DispenseMontantLettres=Les factures rdiges par procdsmcanographiques sont dispenserer de l'arrt da lettres
DispenseMontantLettres=Den skriftlige fakturaer gennem mecanographic procedurer udleveres ved kendelsen i breve DispenseMontantLettres=Den skriftlige fakturaer gennem mecanographic procedurer udleveres ved kendelsen i breve
NonPercuRecuperable=Ikke-refunderbar NonPercuRecuperable=Ikke-refunderbar
SetConditions=Indstil aflønningsvilkår SetConditions=Indstil aflønningsvilkår
@@ -199,9 +199,9 @@ Repeatables=Forhånd definerede
ChangeIntoRepeatableInvoice=Konverter til på forhånd definerede ChangeIntoRepeatableInvoice=Konverter til på forhånd definerede
CreateRepeatableInvoice=Opret prædefinerede faktura CreateRepeatableInvoice=Opret prædefinerede faktura
CreateFromRepeatableInvoice=Opret fra prædefinerede faktura CreateFromRepeatableInvoice=Opret fra prædefinerede faktura
CustomersInvoicesAndInvoiceLines=Kunden fakturaer og fakturaer &#39;linjer CustomersInvoicesAndInvoiceLines=Kunden fakturaer og fakturaer 'linjer
CustomersInvoicesAndPayments=Kunden fakturaer og betalinger CustomersInvoicesAndPayments=Kunden fakturaer og betalinger
ExportDataset_invoice_1=Kunden fakturaer listen og fakturaer &#39;linjer ExportDataset_invoice_1=Kunden fakturaer listen og fakturaer 'linjer
ExportDataset_invoice_2=Kunden fakturaer og betalinger ExportDataset_invoice_2=Kunden fakturaer og betalinger
ProformaBill=Proforma Bill: ProformaBill=Proforma Bill:
Reduction=Reduktion Reduction=Reduktion
@@ -338,9 +338,9 @@ PlutonNumRefModelDesc1=Retur en tilpasselig faktura i henhold til en defineret m
InvoiceDeposit=Indbetaling faktura InvoiceDeposit=Indbetaling faktura
InvoiceDepositAsk=Indbetaling faktura InvoiceDepositAsk=Indbetaling faktura
InvoiceDepositDesc=Denne form for fakturaen er gjort, når en indbetaling er modtaget. InvoiceDepositDesc=Denne form for fakturaen er gjort, når en indbetaling er modtaget.
InvoiceProFormat=Proformat faktura InvoiceProForma=Proforma faktura
InvoiceProFormatAsk=Proformat faktura InvoiceProFormaAsk=Proforma faktura
InvoiceProFormatDesc=<b>Proformat fakturaen</b> er et billede af en ægte faktura, men har ingen regnskabspool værdi. InvoiceProFormaDesc=<b>Proforma fakturaen</b> er et billede af en ægte faktura, men har ingen regnskabspool værdi.
UsedByInvoice=Anvendes til at betale fakturaen %s UsedByInvoice=Anvendes til at betale fakturaen %s
ConsumedBy=Forbruges af ConsumedBy=Forbruges af
NotConsumed=Ikke forbruges NotConsumed=Ikke forbruges
@@ -378,12 +378,40 @@ BillsCustomersUnpaid=Ulønnet kundernes fakturaer
BillsCustomersUnpaidForCompany=Ulønnet kundernes fakturaer for %s BillsCustomersUnpaidForCompany=Ulønnet kundernes fakturaer for %s
BillsSuppliersUnpaid=Ulønnet leverandørernes fakturaer BillsSuppliersUnpaid=Ulønnet leverandørernes fakturaer
BillsUnpaid=Ulønnet BillsUnpaid=Ulønnet
InvoiceReplacementDesc=<b>Erstatning fakturaen</b> er anvendt til at annullere og erstatter fuldstændigt en faktura uden betaling allerede modtaget. <br><br> Bemærk: Kun faktura uden betaling på det kan udskiftes. Hvis det ikke er lukket, vil det automatisk blive lukket for &quot;opgivet&quot;. InvoiceReplacementDesc=<b>Erstatning fakturaen</b> er anvendt til at annullere og erstatter fuldstændigt en faktura uden betaling allerede modtaget. <br><br> Bemærk: Kun faktura uden betaling på det kan udskiftes. Hvis det ikke er lukket, vil det automatisk blive lukket for "opgivet".
BillStatusClosedUnpaid=Lukket (ubetalte) BillStatusClosedUnpaid=Lukket (ubetalte)
BillShortStatusClosedUnpaid=Lukket BillShortStatusClosedUnpaid=Lukket
Unpaid=Ulønnet Unpaid=Ulønnet
ConfirmCancelBillQuestion=hvorfor har du lyst til at klassificere denne faktura &#39;opgivet&#39;? ConfirmCancelBillQuestion=hvorfor har du lyst til at klassificere denne faktura 'opgivet'?
ConfirmClassifyPaidPartiallyReasonOther=Beløb opgives for andre grunde ConfirmClassifyPaidPartiallyReasonOther=Beløb opgives for andre grunde
NoSupplierBillsUnpaid=Nr. leverandører fakturaer vederlagsfri NoSupplierBillsUnpaid=Nr. leverandører fakturaer vederlagsfri
CustomerBillsUnpaid=Vederlagsfri kunder fakturaer CustomerBillsUnpaid=Vederlagsfri kunder fakturaer
// STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56). // STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
// Reference language: en_US
ClassifyCanceled=Klassificere 'Abandoned "
BillStatusCanceled=Abandoned
BillShortStatusCanceled=Abandoned
ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Dette valg er muligt, hvis din faktura er blevet forsynet med passende kommentar. (Eksempel «Kun den afgift, der svarer til den pris, der rent faktisk var blevet betalt giver ret til fradrag»)
AlreadyPaidNoCreditNotesNoDeposits=Allerede betalt (uden kreditter og indlån)
RelatedBill=Relaterede faktura
RelatedBills=Relaterede fakturaer
ValidateInvoice=Validér faktura
Cash=Kontanter
Reported=Forsinket
DisabledBecausePayments=Ikke muligt da der er nogle betalinger
CantRemovePaymentWithOneInvoicePaid=Kan ikke fjerne betaling, da der er mindst på faktura, der er klassificeret betales
ExpectedToPay=Forventet betaling
PayedByThisPayment=Betales af denne betaling
TypeContact_facture_internal_SALESREPFOLL=Repræsentant opfølgning kundefaktura
TypeContact_facture_external_BILLING=Kundefaktura kontakt
TypeContact_facture_external_SHIPPING=Kunde shipping kontakt
TypeContact_facture_external_SERVICE=Kundeservice kontakt
TypeContact_facture_fourn_internal_SALESREPFOLL=Repræsentant opfølgning leverandør faktura
TypeContact_facture_fourn_external_BILLING=Leverandør faktura kontakt
TypeContact_facture_fourn_external_SHIPPING=Leverandør shipping kontakt
TypeContact_facture_fourn_external_SERVICE=Leverandør service kontakt
PDFLinceDescription=En komplet faktura model med spanske RE og IRPF
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:20:16).

View File

@@ -37,7 +37,7 @@ BoxTitleLastPropals=Seneste %s registreres forslag
BoxTitleLastCustomerBills=Seneste %s kundens fakturaer BoxTitleLastCustomerBills=Seneste %s kundens fakturaer
BoxTitleLastSupplierBills=Seneste %s leverandørens fakturaer BoxTitleLastSupplierBills=Seneste %s leverandørens fakturaer
BoxTitleLastProspects=Seneste %s registreres udsigter BoxTitleLastProspects=Seneste %s registreres udsigter
BoxTitleCurrentAccounts=Løbende poster&#39;s tilgodehavender BoxTitleCurrentAccounts=Løbende poster's tilgodehavender
BoxTitleSalesTurnover=Omsætning BoxTitleSalesTurnover=Omsætning
BoxMyLastBookmarks=Min sidste %s bogmærker BoxMyLastBookmarks=Min sidste %s bogmærker
FailedToRefreshDataInfoNotUpToDate=Det lykkedes ikke at opdatere RSS flux. Seneste vellykkede opdatere dato: %s FailedToRefreshDataInfoNotUpToDate=Det lykkedes ikke at opdatere RSS flux. Seneste vellykkede opdatere dato: %s
@@ -75,3 +75,21 @@ BoxTitleTotalUnpaidSuppliersBills=Ulønnet leverandørens fakturaer
NoUnpaidCustomerBills=Nr. ubetalte kundens fakturaer NoUnpaidCustomerBills=Nr. ubetalte kundens fakturaer
NoUnpaidSupplierBills=Nr. ubetalte leverandørens fakturaer NoUnpaidSupplierBills=Nr. ubetalte leverandørens fakturaer
// STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56). // STOP - Lines generated via autotranslator.php tool (2009-08-19 20:57:56).
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
// Reference language: en_US
BoxLastContracts=Seneste kontrakter
BoxTitleLastProductsInContract=Seneste %s produkter / services i en kontrakt
BoxTitleLastContracts=Sidste %s kontrakter
NoModifiedSupplierBills=Ingen registreres leverandørens fakturaer
NoRecordedContracts=Ingen registrerede kontrakter
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:21:48).
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
// Reference language: en_US -> da_DA
BoxTitleLastModifiedSuppliers=Sidst %s ændret leverandører
BoxTitleLastModifiedCustomers=Sidst %s ændret kunder
BoxTitleLastModifiedProspects=Sidst %s ændret udsigterne
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:56:34).

Some files were not shown because too many files have changed in this diff Show More