forked from Wavyzz/dolibarr
Compare commits
111 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
223ef4b268 | ||
|
|
e5ade4df2b | ||
|
|
97de42742c | ||
|
|
d20a950349 | ||
|
|
68ffff7c19 | ||
|
|
f4e1484cb9 | ||
|
|
826bd7f2d1 | ||
|
|
e3a546e535 | ||
|
|
c2d9fdb88f | ||
|
|
bba65cb868 | ||
|
|
4dee91a1ec | ||
|
|
3604a798b0 | ||
|
|
cb5fde8c62 | ||
|
|
6838247724 | ||
|
|
196cb74750 | ||
|
|
ccc4e9193e | ||
|
|
329ab8a392 | ||
|
|
43b4ebdd23 | ||
|
|
88f303b083 | ||
|
|
2cc6df7eee | ||
|
|
36208d4b16 | ||
|
|
84d7b5a099 | ||
|
|
dcf2fa243f | ||
|
|
4b4aeae842 | ||
|
|
9906ca9707 | ||
|
|
2f227d8229 | ||
|
|
5479c56b94 | ||
|
|
709d19f494 | ||
|
|
504941e50e | ||
|
|
026a7df6da | ||
|
|
fc50485d08 | ||
|
|
2638320ede | ||
|
|
4b771e3750 | ||
|
|
5b24b7cf46 | ||
|
|
d2b9d736cd | ||
|
|
d104ae3a27 | ||
|
|
12d831b1ca | ||
|
|
3afd8d3893 | ||
|
|
da27f27f78 | ||
|
|
427f0ef325 | ||
|
|
84b96126f1 | ||
|
|
83437a678f | ||
|
|
58ded3b529 | ||
|
|
dc6d797a36 | ||
|
|
97f22d05d6 | ||
|
|
725d98aaeb | ||
|
|
013714e63c | ||
|
|
4119d9e933 | ||
|
|
69cc38dc8b | ||
|
|
b37d683c2d | ||
|
|
0d11642bc0 | ||
|
|
3f60e2926e | ||
|
|
c2b5fca8b6 | ||
|
|
2a8d5a7ef4 | ||
|
|
1d86f8cb66 | ||
|
|
35ef0407a4 | ||
|
|
a31936d2b7 | ||
|
|
22f97e86e1 | ||
|
|
cfc6cdc4ef | ||
|
|
0ab9f39756 | ||
|
|
e95ba9080f | ||
|
|
045ac251fb | ||
|
|
cb33cdd6a2 | ||
|
|
f28b3f8aba | ||
|
|
fe53a86868 | ||
|
|
1f065fd34a | ||
|
|
e12c73d1e0 | ||
|
|
2b7ee9e8f4 | ||
|
|
a5370c0f5a | ||
|
|
d637e8b83c | ||
|
|
c58e63a843 | ||
|
|
6c6bd45acf | ||
|
|
020246b136 | ||
|
|
5735b65ed8 | ||
|
|
f441dbc99b | ||
|
|
3c2673e528 | ||
|
|
ea8d8a1e28 | ||
|
|
d765d6d7d1 | ||
|
|
332b2fc4d7 | ||
|
|
fbb59da164 | ||
|
|
1432e8dda6 | ||
|
|
9ab758e1fc | ||
|
|
8d8cf0cd21 | ||
|
|
c0b320176b | ||
|
|
a8c914b4cf | ||
|
|
2861d5b033 | ||
|
|
e1b9df9970 | ||
|
|
47c6cff9c1 | ||
|
|
b86537f122 | ||
|
|
cd86d03d35 | ||
|
|
9aa83f13d2 | ||
|
|
fcf5723183 | ||
|
|
382c74fec2 | ||
|
|
ff6916a5a3 | ||
|
|
5ab7a296e2 | ||
|
|
81312671e7 | ||
|
|
35b3f7ed8a | ||
|
|
42763321e9 | ||
|
|
85c24f4a5f | ||
|
|
b8b16552ec | ||
|
|
8258dd432f | ||
|
|
ce34028fcd | ||
|
|
344b2b38ea | ||
|
|
f71f33d2da | ||
|
|
75506b7794 | ||
|
|
c0103034b0 | ||
|
|
76b87cd0bb | ||
|
|
a22bf3fb0a | ||
|
|
795d08c14c | ||
|
|
bc954c1a77 | ||
|
|
2ee7271c8e |
98
ChangeLog
98
ChangeLog
@@ -1,9 +1,24 @@
|
||||
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 *****
|
||||
|
||||
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: Can reopen a closed customer order.
|
||||
- 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 filter third parties lists on categories.
|
||||
- New: Can filter products and services lists on categories.
|
||||
- New: Can use categories for members.
|
||||
- New: Can build documents for third parties (Use ODT templates, need PHP 5.2+).
|
||||
- New: Support products property length and area.
|
||||
- New: Add "payment due before" field in invoice exports
|
||||
- New: task #10202 : Support categories for members.
|
||||
- New: Can build documents for third parties (Using ODT templates, need PHP 5.2+).
|
||||
- New: Support new products properties: length and area.
|
||||
- New: Add the "payment due before" field in invoice exports.
|
||||
- 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: 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: Can delete several files at once in FTP module.
|
||||
- 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: Can change password if has only permission change password.
|
||||
- Fix: Project PDF document show the tasks.
|
||||
- Fix: bug #29278 : SMTP fails with IP
|
||||
- Fix: Default language on login page.
|
||||
- Fix: Can change password if user has only permission "change password".
|
||||
- Fix: Project PDF document shows all tasks.
|
||||
- Fix: bug #29278 : SMTP fails with IP instead of hostname.
|
||||
- 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:
|
||||
- More comments in 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.
|
||||
- Qual: Mutualize code of menu managers.
|
||||
- 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 *****
|
||||
@@ -69,9 +143,9 @@ For users:
|
||||
- New: Add a default errors-to email for emailing module.
|
||||
- New: Can filter on user on stock movement list.
|
||||
- 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
|
||||
with third party type.
|
||||
with third party type.
|
||||
- New: VAT number is stored in one field. This is more "international".
|
||||
- New: task #9782 : Add possibility to delete a warehouse.
|
||||
- New: task #9640 : Add label for stock movements.
|
||||
|
||||
@@ -4,7 +4,6 @@ Section: web
|
||||
Priority: optional
|
||||
Maintainer: Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
Package: dolibarr
|
||||
Section: web
|
||||
Architecture: all
|
||||
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
|
||||
|
||||
@@ -12,5 +12,5 @@ $force_install_databaserootlogin='__SUPERUSERLOGIN__';
|
||||
$force_install_databaserootpass='__SUPERUSERPASSWORD__';
|
||||
$force_install_dolibarrlogin='admin';
|
||||
$force_install_nophpinfo='1';
|
||||
$force_install_lockinstall='1';
|
||||
$force_install_lockinstall='444';
|
||||
?>
|
||||
@@ -12,5 +12,5 @@ $force_install_databaserootlogin='root';
|
||||
$force_install_databaserootpass='root';
|
||||
$force_install_dolibarrlogin='admin';
|
||||
$force_install_nophpinfo='1';
|
||||
$force_install_lockinstall='1';
|
||||
$force_install_lockinstall='444';
|
||||
?>
|
||||
42
build/exe/doliwamp/Languages/MyFrench.isl
Normal file
42
build/exe/doliwamp/Languages/MyFrench.isl
Normal 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 ?
|
||||
|
||||
|
||||
@@ -18,13 +18,14 @@
|
||||
; ----- Change this -----
|
||||
AppName=DoliWamp
|
||||
; 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
|
||||
OutputBaseFilename=DoliWamp-2.9.0-alpha
|
||||
OutputBaseFilename=DoliWamp-2.9.0
|
||||
; Define full path from wich all relative path are defined
|
||||
; You must modify this to put here your dolibarr root directory
|
||||
SourceDir=D:\Mes developpements\dolibarr
|
||||
SourceDir=D:\Mes developpements\dolibarrold
|
||||
; ----- End of change
|
||||
;OutputManifestFile=build\doliwampbuild.log
|
||||
AppId=doliwamp
|
||||
AppPublisher=NLTechno
|
||||
AppPublisherURL=http://www.nltechno.com
|
||||
@@ -41,17 +42,40 @@ SolidCompression=yes
|
||||
WizardImageFile=build\exe\doliwamp\doliwamp.bmp
|
||||
WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp
|
||||
SetupIconFile=doc\images\dolibarr.ico
|
||||
PrivilegesRequired=poweruser
|
||||
PrivilegesRequired=admin
|
||||
DisableProgramGroupPage=yes
|
||||
ChangesEnvironment=no
|
||||
CreateUninstallRegKey=yes
|
||||
;UseSetupLdr=no
|
||||
;UninstallDisplayIcon={app}\bidon
|
||||
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]
|
||||
;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: "desktopicon"; Description: "Create a &Desktop icon"; GroupDescription: "Additional icons:"; Flags: unchecked
|
||||
Name: "quicklaunchicon"; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
||||
Name: "desktopicon"; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
||||
|
||||
[Dirs]
|
||||
Name: "{app}\logs"
|
||||
@@ -163,7 +187,7 @@ var value: String;
|
||||
//procedures lancees au debut de l'installation
|
||||
function InitializeSetup(): Boolean;
|
||||
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;
|
||||
|
||||
procedure InitializeWizard();
|
||||
@@ -230,24 +254,24 @@ begin
|
||||
// Prepare an object calle "Page" of type wpInstalling.
|
||||
// Object will be show later in NextButtonClick function.
|
||||
Page := CreateInputQueryPage(wpInstalling,
|
||||
'Technical parameters', '',
|
||||
'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('TechnicalParameters'), '',
|
||||
CustomMessage('IfFirstInstall'));
|
||||
|
||||
// TODO Add control differently if first install or update
|
||||
if firstinstall
|
||||
then
|
||||
begin
|
||||
Page.Add('SMTP server (your own or ISP SMTP server, first install only) :', False);
|
||||
Page.Add('Apache port (first install only, common choice is 80) :', False);
|
||||
Page.Add('Mysql port (first install only, common choice is 3306) :', False);
|
||||
Page.Add('Mysql server and database password you want for root (first install only):', False);
|
||||
Page.Add(CustomMessage('SMTPServer'), False);
|
||||
Page.Add(CustomMessage('ApachePort'), False);
|
||||
Page.Add(CustomMessage('MySqlPort'), False);
|
||||
Page.Add(CustomMessage('MySqlPassword'), False);
|
||||
end
|
||||
else
|
||||
begin
|
||||
Page.Add('SMTP server (your own or ISP SMTP server, first install only) :', False);
|
||||
Page.Add('Apache port (first install only, common choice is 80) :', False);
|
||||
Page.Add('Mysql port (first install only, common choice is 3306) :', False);
|
||||
Page.Add('Mysql server and database password you want for root (first install only):', False);
|
||||
Page.Add(CustomMessage('SMTPServer'), False);
|
||||
Page.Add(CustomMessage('ApachePort'), False);
|
||||
Page.Add(CustomMessage('MySqlPort'), False);
|
||||
Page.Add(CustomMessage('MySqlPassword'), False);
|
||||
end;
|
||||
|
||||
// Default values
|
||||
@@ -293,7 +317,6 @@ begin
|
||||
if CurPageID = Page.ID then
|
||||
begin
|
||||
|
||||
|
||||
// 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';
|
||||
if FileExists (lockfile) and not DeleteFile(lockfile) then
|
||||
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...';
|
||||
MsgBox(themessage,mbInformation,MB_OK)
|
||||
themessage := FmtMessage(CustomMessage('FailedToDeleteLock'),[pathWithSlashes]);
|
||||
MsgBox(themessage,mbInformation,MB_OK);
|
||||
end
|
||||
|
||||
|
||||
|
||||
// Check if parameters already defined in conf.php file
|
||||
srcFile := pathWithSlashes+'/www/dolibarr/htdocs/conf/conf.php';
|
||||
if not FileExists (srcFile) then
|
||||
@@ -401,7 +423,7 @@ begin
|
||||
//MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO)
|
||||
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 := '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
|
||||
begin
|
||||
paramok := False;
|
||||
@@ -415,7 +437,7 @@ begin
|
||||
//MsgBox('batFile = '+batFile,mbConfirmation,MB_YESNO)
|
||||
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 := '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
|
||||
begin
|
||||
paramok := False;
|
||||
@@ -469,37 +491,37 @@ begin
|
||||
browser := 'iexplore.exe';
|
||||
if FileExists (pfPath+'/Mozilla Firefox/firefox.exe') then
|
||||
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
|
||||
browser := pfPath+'/Mozilla Firefox/firefox.exe';
|
||||
end;
|
||||
end;
|
||||
if browser = 'iexplore.exe' then
|
||||
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;
|
||||
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPBROWSER', browser);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
|
||||
LoadStringFromFile (srcFileH, srcContents);
|
||||
StringChange (srcContents, 'WAMPBROWSER', browser);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
SaveStringToFile(destFileH,srcContents, False);
|
||||
|
||||
LoadStringFromFile (srcFileA, srcContents);
|
||||
StringChange (srcContents, 'WAMPBROWSER', browser);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPBROWSER', browser, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
SaveStringToFile(destFileA,srcContents, False);
|
||||
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
|
||||
|
||||
|
||||
@@ -515,8 +537,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//installDir et version de phpmyadmin
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPPHPMYADMINVERSION', phpmyadminVersion);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPPHPMYADMINVERSION', phpmyadminVersion, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -535,8 +557,8 @@ begin
|
||||
begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
|
||||
|
||||
SaveStringToFile(destFile, srcContents, False);
|
||||
end
|
||||
@@ -556,7 +578,8 @@ begin
|
||||
begin
|
||||
// sinon on prends le fichier par defaut
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
|
||||
@@ -574,10 +597,10 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//installDir et version de php
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -597,8 +620,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//installDir et version de php
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPMYSQLPORT', myport);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -616,22 +639,22 @@ begin
|
||||
if not FileExists (destFile) then
|
||||
begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
SaveStringToFile(destFile, srcContents, False);
|
||||
end
|
||||
else
|
||||
begin
|
||||
RenameFile(destFile, destFile+'.old');
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPPHPVERSION', phpVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEPORT', myporta);
|
||||
StringChange (srcContents, 'WAMPAPACHEPSSL', myportas);
|
||||
StringChangeEx (srcContents, 'WAMPPHPVERSION', phpVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPORT', myporta, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEPSSL', myportas, True);
|
||||
SaveStringToFile(destFile, srcContents, False);
|
||||
end
|
||||
|
||||
@@ -650,10 +673,10 @@ begin
|
||||
begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLPORT', myport);
|
||||
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -672,8 +695,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -692,8 +715,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -713,8 +736,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -733,9 +756,9 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLPORT', myport);
|
||||
StringChange (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -753,10 +776,10 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLPORT', myport);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -774,10 +797,10 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLVERSION', mysqlVersion);
|
||||
StringChange (srcContents, 'WAMPMYSQLPORT', myport);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLVERSION', mysqlVersion, True);
|
||||
StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -795,8 +818,8 @@ begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
|
||||
//version de apache et mysql
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPAPACHEVERSION', apacheVersion);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPAPACHEVERSION', apacheVersion, True);
|
||||
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
@@ -812,8 +835,8 @@ begin
|
||||
if not FileExists (destFile) and FileExists(srcFile) then
|
||||
begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPSMTP', mysmtp);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPSMTP', mysmtp, True);
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
|
||||
@@ -827,8 +850,8 @@ begin
|
||||
if not FileExists (destFile) and FileExists(srcFile) then
|
||||
begin
|
||||
LoadStringFromFile (srcFile, srcContents);
|
||||
StringChange (srcContents, 'WAMPROOT', pathWithSlashes);
|
||||
StringChange (srcContents, 'WAMPSMTP', mysmtp);
|
||||
StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True);
|
||||
StringChangeEx (srcContents, 'WAMPSMTP', mysmtp, True);
|
||||
SaveStringToFile(destFile,srcContents, False);
|
||||
end
|
||||
|
||||
@@ -925,13 +948,13 @@ begin
|
||||
pathWithSlashes := path;
|
||||
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;
|
||||
|
||||
|
||||
[Run]
|
||||
; 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]
|
||||
|
||||
@@ -12,5 +12,5 @@ $force_install_databaserootlogin='root';
|
||||
$force_install_databaserootpass='WAMPMYSQLNEWPASSWORD';
|
||||
$force_install_dolibarrlogin='admin';
|
||||
$force_install_nophpinfo='1';
|
||||
$force_install_lockinstall='1';
|
||||
$force_install_lockinstall='644';
|
||||
?>
|
||||
@@ -690,7 +690,7 @@ extension=php_pgsql.dll
|
||||
;extension=php_pspell.dll
|
||||
extension=php_shmop.dll
|
||||
;extension=php_snmp.dll
|
||||
;extension=php_soap.dll
|
||||
extension=php_soap.dll
|
||||
extension=php_sockets.dll
|
||||
extension=php_sqlite.dll
|
||||
;extension=php_sybase_ct.dll
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
class langAutoParser {
|
||||
|
||||
private $translatedFiles = array();
|
||||
private $destLang = string;
|
||||
private $refLang = string;
|
||||
private $langDir = string;
|
||||
private $limittofile = string;
|
||||
private $destLang = '';
|
||||
private $refLang = '';
|
||||
private $langDir = '';
|
||||
private $limittofile = '';
|
||||
private $time;
|
||||
private $time_end;
|
||||
private $outputpagecode = 'UTF-8';
|
||||
//private $outputpagecode = 'ISO-8859-1';
|
||||
const DIR_SEPARATOR = '/';
|
||||
@@ -46,42 +48,77 @@ class langAutoParser {
|
||||
if ($this->limittofile && $this->limittofile != $file) continue;
|
||||
$counter++;
|
||||
$fileContent = null;
|
||||
$this->translatedFiles = array();
|
||||
$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);
|
||||
print "Processing file " . $file . ", found ".sizeof($fileContent)." records<br>\n";
|
||||
// Check destination file presence
|
||||
if ( ! file_exists( $destPath ) ){
|
||||
// No file presente generate file
|
||||
echo "File not found: " . $file . "<br>\n";
|
||||
echo "Generating file " . $file . "<br>\n";
|
||||
$this->createTranslationFile($destPath);
|
||||
}
|
||||
// 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)
|
||||
$fileContent = file($refPath,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||
print "Processing file " . $file . ", with ".sizeof($fileContent)." lines<br>\n";
|
||||
|
||||
// Define target dirs
|
||||
$targetlangs=array($this->destLang);
|
||||
if ($this->destLang == 'all')
|
||||
{
|
||||
$targetlangs=array();
|
||||
|
||||
// If we must process all languages
|
||||
$arraytmp=dol_dir_list($this->langDir,'directories',0);
|
||||
foreach($arraytmp as $dirtmp)
|
||||
{
|
||||
$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);
|
||||
echo "New translated lines: " . $newlines . "<br>\n";
|
||||
#if ($counter ==3) die('fim');
|
||||
// Process translation of source file for each target languages
|
||||
foreach($targetlangs as $mydestLang)
|
||||
{
|
||||
$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');
|
||||
fwrite($fp, "\r\n");
|
||||
fwrite($fp, "\r\n");
|
||||
@@ -90,16 +127,16 @@ FILE_SKIP_EMPTY_LINES);
|
||||
foreach( $this->translatedFiles[$file] as $line) {
|
||||
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);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
private function createTranslationFile($path){
|
||||
private function createTranslationFile($path,$mydestlang){
|
||||
$fp = fopen($path, 'w+');
|
||||
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, " * Generation date " . $this->time. "\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 unknown_type $file File name translated (xxxx.lang)
|
||||
* @param unknown_type $key Key to translate
|
||||
* @param unknown_type $value Existing key in source file
|
||||
* @return int 0=Nothing translated, 1=Record translated
|
||||
* @param $content Existing content of dest file
|
||||
* @param $file Target file name translated (xxxx.lang)
|
||||
* @param $key Key to translate
|
||||
* @param $value Existing value in source file
|
||||
* @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";
|
||||
foreach( $content as $line ) {
|
||||
@@ -125,16 +164,24 @@ FILE_SKIP_EMPTY_LINES);
|
||||
// If translated return
|
||||
//print "destKey=".$destKey."\n";
|
||||
if ( trim($destKey) == trim($key) )
|
||||
{ // Found already existing translation
|
||||
return 0;
|
||||
{ // Found already existing translation (key already exits in dest file)
|
||||
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;
|
||||
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 ;
|
||||
return 1;
|
||||
@@ -162,8 +209,15 @@ FILE_SKIP_EMPTY_LINES);
|
||||
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);
|
||||
if ($tmp[0] == $tmp[1]) $src_lang=$tmp[0];
|
||||
@@ -175,9 +229,9 @@ $dest_lang){
|
||||
$lang_pair = $src_lang.'|'.$dest_lang;
|
||||
|
||||
$src_texts_query = "";
|
||||
foreach ($src_texts as $src_text){
|
||||
$src_texts_query .= "&q=".urlencode($src_text);
|
||||
}
|
||||
$src_text_to_translate=preg_replace('/%s/','SSSSS',join('',$src_texts));
|
||||
|
||||
$src_texts_query .= "&q=".urlencode($src_text_to_translate);
|
||||
|
||||
$url =
|
||||
"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
|
||||
// note how referer is set manually
|
||||
|
||||
//print "Url to translate: ".$url."\n";
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
@@ -196,24 +252,16 @@ $dest_lang){
|
||||
$json = json_decode($body, true);
|
||||
|
||||
if ($json['responseStatus'] != 200){
|
||||
print "Error: ".$json['responseStatus']." ".$url."\n";
|
||||
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){
|
||||
if ($result['responseStatus'] == 200){
|
||||
$return_array[] = $result['responseData']['translatedText'];
|
||||
} else {
|
||||
$return_array[] = false;
|
||||
}
|
||||
}
|
||||
|
||||
//return translated text
|
||||
#return $return_array;
|
||||
return $json['responseData']['translatedText'];
|
||||
return $rep;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
|
||||
/**
|
||||
* \file htdocs/adherents/cartes/carte.php
|
||||
* \ingroup adherent
|
||||
* \ingroup member
|
||||
* \brief Page to output members business cards
|
||||
* \version $Id$
|
||||
*/
|
||||
require("../../main.inc.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");
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ if ($result)
|
||||
$objp->ville,
|
||||
$objp->pays,
|
||||
$objp->email,
|
||||
$objp->naiss,
|
||||
dol_print_date($objp->naiss,'day'),
|
||||
$objp->type,
|
||||
$objp->rowid,
|
||||
$year,
|
||||
|
||||
2126
htdocs/adherents/class/adherent.class.php
Normal file
2126
htdocs/adherents/class/adherent.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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/images.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/adherent_type.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent_options.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/cotisation.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formcompany.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent_options.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/class/cotisation.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formcompany.class.php");
|
||||
|
||||
$langs->load("companies");
|
||||
$langs->load("bills");
|
||||
@@ -144,7 +144,7 @@ if ($_POST['action'] == 'setsocid')
|
||||
$thirdparty=new Societe($db);
|
||||
$thirdparty->fetch($_POST["socid"]);
|
||||
$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)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
|
||||
|
||||
$datenaiss='';
|
||||
if (isset($_POST["naissday"]) && $_POST["naissday"]
|
||||
&& 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->prenom = trim($_POST["prenom"]);
|
||||
$adh->nom = trim($_POST["nom"]);
|
||||
$adh->fullname = trim($adh->prenom.' '.$adh->nom);
|
||||
$adh->login = trim($_POST["login"]);
|
||||
$adh->pass = trim($_POST["pass"]);
|
||||
|
||||
@@ -237,7 +238,9 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
|
||||
$adh->adresse = trim($_POST["adresse"]);
|
||||
$adh->cp = trim($_POST["cp"]);
|
||||
$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_perso = trim($_POST["phone_perso"]);
|
||||
@@ -251,7 +254,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
|
||||
|
||||
$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
|
||||
$adh->statut = $_POST["statut"];
|
||||
@@ -284,7 +287,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
|
||||
$result=$adh->update($user,0,$nosyncuser,$nosyncuserpass);
|
||||
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);
|
||||
|
||||
@@ -293,7 +296,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"] && $user->rights->adhe
|
||||
if (@is_dir($dir))
|
||||
{
|
||||
$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>';
|
||||
}
|
||||
@@ -355,6 +358,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
|
||||
$adresse=$_POST["adresse"];
|
||||
$cp=$_POST["cp"];
|
||||
$ville=$_POST["ville"];
|
||||
$departement_id=$_POST["departement_id"];
|
||||
$pays_id=$_POST["pays_id"];
|
||||
|
||||
$phone=$_POST["phone"];
|
||||
@@ -379,6 +383,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
|
||||
$adh->adresse = $adresse;
|
||||
$adh->cp = $cp;
|
||||
$adh->ville = $ville;
|
||||
$adh->fk_departement = $departement_id;
|
||||
$adh->pays_id = $pays_id;
|
||||
$adh->phone = $phone;
|
||||
$adh->phone_perso = $phone_perso;
|
||||
@@ -466,7 +471,7 @@ if ($_POST["action"] == 'add' && $user->rights->adherent->creer)
|
||||
$crowid=$adh->cotisation($datecotisation, $cotisation);
|
||||
|
||||
// insertion dans la gestion banquaire si configure pour
|
||||
if ($global->conf->ADHERENT_BANK_USE)
|
||||
if ($conf->global->ADHERENT_BANK_USE)
|
||||
{
|
||||
$dateop=time();
|
||||
$amount=$cotisation;
|
||||
@@ -658,6 +663,8 @@ $htmlcompany = new FormCompany($db);
|
||||
// fetch optionals attributes and labels
|
||||
$adho->fetch_name_optionals_label();
|
||||
|
||||
$countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')';
|
||||
|
||||
|
||||
if ($action == 'edit')
|
||||
{
|
||||
@@ -680,9 +687,24 @@ if ($action == 'edit')
|
||||
$adht->fetch($adh->typeid);
|
||||
|
||||
|
||||
/*
|
||||
* Affichage onglets
|
||||
*/
|
||||
// We set pays_id, and pays_code label of the chosen country
|
||||
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);
|
||||
|
||||
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>';
|
||||
|
||||
|
||||
$rowspan=15;
|
||||
$rowspan=17;
|
||||
$rowspan+=sizeof($adho->attribute_label);
|
||||
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=\"action\" value=\"update\">";
|
||||
print "<input type=\"hidden\" name=\"rowid\" value=\"$rowid\">";
|
||||
@@ -713,20 +735,20 @@ if ($action == 'edit')
|
||||
$morphys["phy"] = $langs->trans("Physical");
|
||||
$morphys["mor"] = $langs->trans("Morale");
|
||||
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>";
|
||||
|
||||
// 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
|
||||
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>';
|
||||
|
||||
// Photo
|
||||
print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
|
||||
print $html->showphoto('memberphoto',$adh);
|
||||
print $html->showphoto('memberphoto',$adh)."\n";
|
||||
if ($caneditfieldmember)
|
||||
{
|
||||
print '<br><br><table class="nobordernopadding"><tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
|
||||
@@ -737,25 +759,25 @@ if ($action == 'edit')
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Nom
|
||||
print '<tr><td><span class="fieldrequired">'.$langs->trans("Lastname").'</span></td><td><input type="text" name="nom" size="40" value="'.$adh->nom.'"></td>';
|
||||
// Name
|
||||
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>';
|
||||
|
||||
// Prenom
|
||||
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>';
|
||||
// Firstname
|
||||
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>';
|
||||
|
||||
// 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
|
||||
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
|
||||
print '<tr><td><span class="fieldrequired">'.$langs->trans("Type").'</span></td><td>';
|
||||
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
|
||||
{
|
||||
@@ -766,36 +788,42 @@ if ($action == 'edit')
|
||||
|
||||
// Address
|
||||
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
|
||||
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>';
|
||||
// Zip / Town
|
||||
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
|
||||
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>';
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
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
|
||||
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";
|
||||
|
||||
// Profil public
|
||||
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";
|
||||
|
||||
// Attributs supplementaires
|
||||
@@ -831,7 +859,7 @@ if ($action == 'edit')
|
||||
print '</td></tr>';
|
||||
|
||||
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 ' ';
|
||||
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||
print '</td></tr>';
|
||||
@@ -850,6 +878,28 @@ if ($action == 'create')
|
||||
/* 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);
|
||||
|
||||
@@ -861,37 +911,37 @@ if ($action == 'create')
|
||||
}
|
||||
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="action" value="add">';
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
// Moral-Physique
|
||||
$morphys["phy"] = "Physique";
|
||||
$morphys["mor"] = "Morale";
|
||||
$morphys["phy"] = $langs->trans("Physical");
|
||||
$morphys["mor"] = $langs->trans("Moral");
|
||||
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";
|
||||
|
||||
// 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
|
||||
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>';
|
||||
|
||||
// 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>';
|
||||
|
||||
// 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>';
|
||||
|
||||
// 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
|
||||
$generated_password='';
|
||||
@@ -913,7 +963,7 @@ if ($action == 'create')
|
||||
$listetype=$adht->liste_array();
|
||||
if (sizeof($listetype))
|
||||
{
|
||||
$html->select_array("typeid", $listetype, $typeid, 1);
|
||||
$html->select_array("typeid", $listetype, isset($_POST["typeid"])?$_POST["typeid"]:$typeid, 1);
|
||||
} else {
|
||||
print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>';
|
||||
}
|
||||
@@ -921,31 +971,45 @@ if ($action == 'create')
|
||||
|
||||
// Address
|
||||
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
|
||||
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
|
||||
print '<tr><td>'.$langs->trans("Country").'</td><td>';
|
||||
$html->select_pays($adh->pays_id ? $adh->pays_id : $mysoc->pays_id,'pays_id');
|
||||
print '</td></tr>';
|
||||
// Country
|
||||
$adh->pays_id=$adh->pays_id?$adh->pays_id:$mysoc->pays_id;
|
||||
print '<tr><td>'.$langs->trans("Country").'</td><td>';
|
||||
$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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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";
|
||||
|
||||
// Profil public
|
||||
@@ -956,7 +1020,7 @@ if ($action == 'create')
|
||||
// Attribut optionnels
|
||||
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>';
|
||||
}
|
||||
|
||||
$rowspan=14+sizeof($adho->attribute_label);
|
||||
$rowspan=15+sizeof($adho->attribute_label);
|
||||
if ($conf->societe->enabled) $rowspan++;
|
||||
|
||||
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().' </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Nom
|
||||
// Name
|
||||
print '<tr><td>'.$langs->trans("Lastname").'</td><td class="valeur" colspan="2">'.$adh->nom.' </td>';
|
||||
print '</tr>';
|
||||
|
||||
// Prenom
|
||||
// Firstname
|
||||
print '<tr><td>'.$langs->trans("Firstname").'</td><td class="valeur" colspan="2">'.$adh->prenom.' </td></tr>';
|
||||
|
||||
// Login
|
||||
@@ -1157,11 +1221,18 @@ if ($rowid && $action != 'edit')
|
||||
// Address
|
||||
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>';
|
||||
|
||||
// Pays
|
||||
print '<tr><td>'.$langs->trans("Country").'</td><td class="valeur">'.getCountryLabel($adh->pays_id).'</td></tr>';
|
||||
// Country
|
||||
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.
|
||||
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
|
||||
if ($adh->statut >= 1 && $adh->email)
|
||||
if ($adh->statut >= 1)
|
||||
{
|
||||
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
|
||||
{
|
||||
@@ -1338,7 +1410,7 @@ if ($rowid && $action != 'edit')
|
||||
if ($user->rights->societe->creer)
|
||||
{
|
||||
if ($adh->statut != -1) print '<a class="butAction" href="fiche.php?rowid='.$adh->id.'&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
|
||||
{
|
||||
@@ -1376,11 +1448,11 @@ if ($rowid && $action != 'edit')
|
||||
$isinspip=$adh->is_in_spip();
|
||||
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)
|
||||
{
|
||||
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) {
|
||||
print '<br><font class="error">Failed to connect to SPIP: '.$adh->error.'</font>';
|
||||
|
||||
216
htdocs/admin/menus/menu.js.php
Normal file
216
htdocs/admin/menus/menu.js.php
Normal 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;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<?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
|
||||
* 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
|
||||
*/
|
||||
|
||||
// This is to make Dolibarr working with Plesk
|
||||
set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs');
|
||||
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
|
||||
//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/functions2.lib.php");
|
||||
|
||||
|
||||
dol_syslog("Call Dolibarr Asterisk interface");
|
||||
|
||||
// TODO Enable and test if module Asterisk is enabled
|
||||
// Security check
|
||||
if (! $conf->clicktodial->enabled)
|
||||
{
|
||||
accessforbidden();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
$conf->global->ASTERISK_HOST="127.0.0.1";
|
||||
$conf->global->ASTERISK_TYPE="SIP/";
|
||||
$conf->global->ASTERISK_INDICATIF="0";
|
||||
$conf->global->ASTERISK_PORT=5038;
|
||||
// Define Asterisk setup
|
||||
if (! isset($conf->global->ASTERISK_HOST)) $conf->global->ASTERISK_HOST="127.0.0.1";
|
||||
if (! isset($conf->global->ASTERISK_TYPE)) $conf->global->ASTERISK_TYPE="SIP/";
|
||||
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'];
|
||||
$password = $_GET['password'];
|
||||
@@ -55,36 +76,29 @@ $called = $_GET['called'];
|
||||
|
||||
# Adresse IP du serveur Asterisk
|
||||
$strHost = $conf->global->ASTERISK_HOST;
|
||||
|
||||
#Context ( generalement from-internal )
|
||||
$strContext = "from-internal";
|
||||
|
||||
#Spécifiez le type d'extension par laquelle vous poste est connecte.
|
||||
#ex: SIP/, IAX2/, ZAP/, etc
|
||||
$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
|
||||
$strWaitTime = "30";
|
||||
|
||||
#Priority
|
||||
$strPriority = "1";
|
||||
|
||||
#Nomber of try
|
||||
$strMaxRetry = "2";
|
||||
|
||||
#Indicatif de la ligne sortante
|
||||
$prefix = $conf->global->ASTERISK_INDICATIF;
|
||||
|
||||
#Port
|
||||
$port = $conf->global->ASTERISK_PORT;
|
||||
|
||||
|
||||
print '<html>'."\n";
|
||||
print '<head>'."\n";
|
||||
print '<title>Asterisk redirection ...</title>'."\n";
|
||||
print '</head>'."\n";
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
$number=strtolower($called) ;
|
||||
$pos=strpos ($number,"local");
|
||||
@@ -93,21 +107,25 @@ if (! empty($number))
|
||||
if ($pos===false) :
|
||||
$errno=0 ;
|
||||
$errstr=0 ;
|
||||
$strCallerId = "Dolibarr <$number>" ;
|
||||
$strCallerId = "Dolibarr <".strtolower($caller).">" ;
|
||||
$oSocket = @fsockopen ($strHost, $port, $errno, $errstr, 10) ;
|
||||
if (!$oSocket)
|
||||
{
|
||||
echo '<body>'."\n";
|
||||
print '<body>'."\n";
|
||||
$txt="Failed to execute fsockopen($strHost, $port, \$errno, \$errstr, 10)<br>\n";
|
||||
echo $txt;
|
||||
print $txt;
|
||||
dol_syslog($txt,LOG_ERR);
|
||||
$txt=$errstr." (".$errno.")<br>\n";
|
||||
echo $txt;
|
||||
print $txt;
|
||||
dol_syslog($txt,LOG_ERR);
|
||||
print '</body>'."\n";
|
||||
}
|
||||
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, "Events: off\r\n" ) ;
|
||||
fputs($oSocket, "Username: $login\r\n" ) ;
|
||||
@@ -122,9 +140,12 @@ if (! empty($number))
|
||||
fputs($oSocket, "Action: Logoff\r\n\r\n" ) ;
|
||||
sleep(2) ;
|
||||
fclose($oSocket) ;
|
||||
print '</body>'."\n";
|
||||
}
|
||||
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";
|
||||
|
||||
@@ -52,7 +52,7 @@ function printBoxesArea($user,$areacode)
|
||||
print '<table width="100%" style="border-collapse: collapse; border: 0px; margin: 0px; padding: 0px;"><tr>';
|
||||
|
||||
// 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 '<div id="left">'."\n";
|
||||
@@ -73,21 +73,21 @@ function printBoxesArea($user,$areacode)
|
||||
}
|
||||
|
||||
// If no box on left, we add an invisible empty box
|
||||
if ($ii==0)
|
||||
{
|
||||
// if ($ii==0)
|
||||
// {
|
||||
$emptybox=new ModeleBoxes($db);
|
||||
$emptybox->box_id='A';
|
||||
$emptybox->info_box_head=array();
|
||||
$emptybox->info_box_contents=array();
|
||||
$emptybox->showBox(array(),array());
|
||||
}
|
||||
// }
|
||||
|
||||
print "</div>\n";
|
||||
print "<!-- End box container -->\n";
|
||||
|
||||
print "</td>\n";
|
||||
// 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 '<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 ($ii==0)
|
||||
{
|
||||
// if ($ii==0)
|
||||
// {
|
||||
$emptybox=new ModeleBoxes($db);
|
||||
$emptybox->box_id='B';
|
||||
$emptybox->info_box_head=array();
|
||||
$emptybox->info_box_contents=array();
|
||||
$emptybox->showBox(array(),array());
|
||||
}
|
||||
// }
|
||||
|
||||
print "</div>\n";
|
||||
print "<!-- End box container -->\n";
|
||||
@@ -349,7 +349,8 @@ class InfoBox
|
||||
|
||||
if (! $userid || $userid == 0) return 0;
|
||||
|
||||
$user = new User($this->db,$userid);
|
||||
$user = new User($this->db);
|
||||
$user->id=$userid;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
CREATE TABLE `llx_tmp_caisse` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`fk_article` tinyint(4) NOT NULL,
|
||||
`fk_article` int(11) NOT NULL,
|
||||
`qte` int(11) NOT NULL,
|
||||
`fk_tva` int(11) NOT NULL,
|
||||
`remise_percent` int(11) NOT NULL,
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
*/
|
||||
|
||||
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");
|
||||
|
||||
$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();
|
||||
|
||||
@@ -122,7 +122,10 @@ print '<br>';
|
||||
|
||||
|
||||
// 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'];
|
||||
if (! $section) $section=0;
|
||||
|
||||
// Define fulltree array
|
||||
$fulltree=$cate_arbo;
|
||||
|
||||
|
||||
// ----- This section will show a tree from a fulltree array -----
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
|
||||
require("../../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/contact/contact.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/user/user.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/cactioncomm.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/actioncomm.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formactions.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/user/class/user.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/cactioncomm.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formactions.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php");
|
||||
|
||||
$langs->load("companies");
|
||||
@@ -168,16 +168,16 @@ if ($_POST["action"] == 'add_action')
|
||||
}
|
||||
$actioncomm->duree=(($_POST["dureehour"] * 60) + $_POST["dureemin"]) * 60;
|
||||
|
||||
$usertodo=new User($db,$_POST["affectedto"]);
|
||||
$usertodo=new User($db);
|
||||
if ($_POST["affectedto"] > 0)
|
||||
{
|
||||
$usertodo->fetch();
|
||||
$usertodo->fetch($_POST["affectedto"]);
|
||||
}
|
||||
$actioncomm->usertodo = $usertodo;
|
||||
$userdone=new User($db,$_POST["doneby"]);
|
||||
$userdone=new User($db);
|
||||
if ($_POST["doneby"] > 0)
|
||||
{
|
||||
$userdone->fetch();
|
||||
$userdone->fetch($_POST["doneby"]);
|
||||
}
|
||||
$actioncomm->userdone = $userdone;
|
||||
|
||||
@@ -357,16 +357,16 @@ if ($_POST["action"] == 'update')
|
||||
}
|
||||
|
||||
// Users
|
||||
$usertodo=new User($db,$_POST["affectedto"]);
|
||||
$usertodo=new User($db);
|
||||
if ($_POST["affectedto"])
|
||||
{
|
||||
$usertodo->fetch();
|
||||
$usertodo->fetch($_POST["affectedto"]);
|
||||
}
|
||||
$actioncomm->usertodo = $usertodo;
|
||||
$userdone=new User($db,$_POST["doneby"]);
|
||||
$userdone=new User($db);
|
||||
if ($_POST["doneby"])
|
||||
{
|
||||
$userdone->fetch();
|
||||
$userdone->fetch($_POST["doneby"]);
|
||||
}
|
||||
$actioncomm->userdone = $userdone;
|
||||
|
||||
@@ -606,7 +606,11 @@ if ($_GET["id"])
|
||||
|
||||
$act = new ActionComm($db);
|
||||
$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);
|
||||
if ($act->societe->id)
|
||||
@@ -615,10 +619,10 @@ if ($_GET["id"])
|
||||
}
|
||||
$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->usermod->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->usermod->id; $res=$tmpuser->fetch(); $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->userdone->id > 0) { $tmpuser=new User($db); $tmpuser->id=$act->userdone->id; $res=$tmpuser->fetch(); $act->userdone=$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); $res=$tmpuser->fetch($act->usermod->id); $act->usermod=$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); $res=$tmpuser->fetch($act->userdone->id); $act->userdone=$tmpuser; }
|
||||
|
||||
$contact = new Contact($db);
|
||||
if ($act->contact->id)
|
||||
@@ -634,7 +638,7 @@ if ($_GET["id"])
|
||||
$head=actions_prepare_head();
|
||||
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;
|
||||
|
||||
// Confirmation suppression action
|
||||
@@ -670,7 +674,7 @@ if ($_GET["id"])
|
||||
// Company
|
||||
print '<tr><td>'.$langs->trans("Company").'</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>';
|
||||
|
||||
// Contact
|
||||
@@ -773,7 +777,9 @@ if ($_GET["id"])
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
// 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
|
||||
print '<tr><td>'.$langs->trans("Type").'</td><td colspan="3">'.$act->type.'</td></tr>';
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
*/
|
||||
|
||||
require("../../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/contact/contact.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/actioncomm.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.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/agenda.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
|
||||
$socid = isset($_GET["socid"])?$_GET["socid"]:'';
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result = restrictedArea($user, 'agenda', $socid, '', 'myactions');
|
||||
$result = restrictedArea($user, 'agenda', 0, '', 'myactions');
|
||||
|
||||
$canedit=1;
|
||||
if (! $user->rights->agenda->myactions->read) accessforbidden();
|
||||
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;
|
||||
$filtert=$user->id;
|
||||
@@ -70,6 +70,7 @@ $pid=! empty($_REQUEST["projectid"])?$_REQUEST["projectid"]:0;
|
||||
$status=isset($_GET["status"])?$_GET["status"]:$_POST["status"];
|
||||
|
||||
$langs->load("other");
|
||||
$langs->load("commercial");
|
||||
|
||||
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 ($_GET["action"] == 'show_day')
|
||||
{
|
||||
$sql.= ' AND (';
|
||||
$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.= ' OR ';
|
||||
$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.= ' OR ';
|
||||
$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 (";
|
||||
$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.= " OR ";
|
||||
$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.= " OR ";
|
||||
$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.= ')';
|
||||
}
|
||||
else
|
||||
{
|
||||
// To limit array
|
||||
$sql.= ' AND (';
|
||||
$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.= ' OR ';
|
||||
$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.= ' OR ';
|
||||
$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 (";
|
||||
$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.= " OR ";
|
||||
$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.= " OR ";
|
||||
$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.= ')';
|
||||
}
|
||||
if ($filtera > 0 || $filtert > 0 || $filterd > 0)
|
||||
@@ -249,8 +250,7 @@ if ($resql)
|
||||
$action->userdone->id=$obj->fk_user_done;
|
||||
|
||||
// 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
|
||||
// calendar view.
|
||||
// They are date start and end of action but modified to not be outside calendar view.
|
||||
if ($action->percentage <= 0)
|
||||
{
|
||||
$action->date_start_in_calendar=$action->datep;
|
||||
@@ -269,37 +269,43 @@ if ($resql)
|
||||
$action->ponctuel=1;
|
||||
}
|
||||
|
||||
if ($action->date_start_in_calendar < $firstdaytoshow) $action->date_start_in_calendar=$firstdaytoshow;
|
||||
if ($action->date_end_in_calendar > $lastdaytoshow) $action->date_end_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
|
||||
// Check values
|
||||
if ($action->date_end_in_calendar < $firstdaytoshow ||
|
||||
$action->date_start_in_calendar > $lastdaytoshow)
|
||||
{
|
||||
//if ($action->id==408) print 'daykey='.$daykey.' '.$action->datep.' '.$action->datef.'<br>';
|
||||
|
||||
//if ($action->datef && $action->datef == $daykey && $action->datep < $action->datef)
|
||||
//{ // We discard such index. This means it's end of a range ending on last day + 1 at 00:00:00.
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
$actionarray[$daykey][]=$action;
|
||||
$j++;
|
||||
//}
|
||||
$daykey+=60*60*24;
|
||||
if ($daykey > $action->date_end_in_calendar) $loop=false;
|
||||
// This record is out of visible range
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($action->date_start_in_calendar < $firstdaytoshow) $action->date_start_in_calendar=$firstdaytoshow;
|
||||
if ($action->date_end_in_calendar > $lastdaytoshow) $action->date_end_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>';
|
||||
|
||||
$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++;
|
||||
|
||||
//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
|
||||
@@ -323,10 +329,9 @@ if ($showbirthday)
|
||||
{
|
||||
$sql.= ' AND MONTH(birthday) = '.$month;
|
||||
}
|
||||
// Sort on date
|
||||
$sql.= ' ORDER BY birthday';
|
||||
//print $sql;
|
||||
|
||||
dol_syslog("comm/action/index.php sql=".$sql, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@@ -406,14 +411,15 @@ if ($_GET["action"] != 'show_day') // View by month
|
||||
}
|
||||
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++)
|
||||
{
|
||||
echo " <tr>\n";
|
||||
for($iter_day = 0; $iter_day < 7; $iter_day++)
|
||||
{
|
||||
/* Show days before the beginning of the current month
|
||||
(previous month) */
|
||||
/* Show days before the beginning of the current month (previous month) */
|
||||
if($tmpday <= 0)
|
||||
{
|
||||
$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 unknown_type $day Day
|
||||
* @param unknown_type $month Month
|
||||
* @param unknown_type $year Year
|
||||
* @param unknown_type $monthshown Month shown in calendar view
|
||||
* @param unknown_type $style Style to use for this day
|
||||
* @param unknown_type $actionarray Array of actions
|
||||
* @param unknown_type $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 $db Database handler
|
||||
* @param $day Day
|
||||
* @param $month Month
|
||||
* @param $year Year
|
||||
* @param $monthshown Month shown in calendar view
|
||||
* @param $style Style to use for this day
|
||||
* @param $actionarray Array of actions
|
||||
* @param $maxPrint Nb of actions to show each day on month view (0 means non limit)
|
||||
* @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)
|
||||
{
|
||||
|
||||
2525
htdocs/comm/propal/class/propal.class.php
Normal file
2525
htdocs/comm/propal/class/propal.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -26,9 +26,9 @@
|
||||
*/
|
||||
|
||||
require("../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT ."/core/notify.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT ."/commande/commande.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT ."/core/class/notify.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT ."/commande/class/commande.class.php");
|
||||
|
||||
if (!$user->rights->commande->lire) accessforbidden();
|
||||
|
||||
@@ -126,7 +126,7 @@ print '</td><td valign="top" width="70%" class="notopnoleftnoright">';
|
||||
$max=5;
|
||||
|
||||
$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.= ", ".MAIN_DB_PREFIX."societe as s";
|
||||
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;
|
||||
|
||||
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 '</td>';
|
||||
|
||||
@@ -180,7 +180,7 @@ if ($resql)
|
||||
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>'.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 '</tr>';
|
||||
$i++;
|
||||
@@ -229,7 +229,7 @@ if ($conf->commande->enabled)
|
||||
$commandestatic->ref=$obj->ref;
|
||||
|
||||
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 '</td>';
|
||||
|
||||
@@ -298,7 +298,7 @@ if ($conf->commande->enabled)
|
||||
$commandestatic->ref=$obj->ref;
|
||||
|
||||
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 '</td>';
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.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) 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
|
||||
* 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_once(DOL_DOCUMENT_ROOT."/lib/bank.lib.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/societe/societe.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/paiement.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/tva/tva.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/fourn/facture/paiementfourn.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/tva/class/tva.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/fourn/class/paiementfourn.class.php");
|
||||
|
||||
$langs->load("bills");
|
||||
|
||||
@@ -290,6 +290,8 @@ if ($account || $_GET["ref"])
|
||||
/**
|
||||
* Search form
|
||||
*/
|
||||
$param.='&account='.$acct->id;
|
||||
|
||||
|
||||
// Define transaction list navigation string
|
||||
$navig='';
|
||||
@@ -297,7 +299,7 @@ if ($account || $_GET["ref"])
|
||||
$nbpage=floor($total_lines/$viewline)+($total_lines % $viewline > 0?1:0); // Nombre de page total
|
||||
if ($limitsql > $viewline)
|
||||
{
|
||||
$navig.='<a href="account.php?account='.$acct->id.'&page='.($page+1).$param.'">'.img_previous().'</a>';
|
||||
$navig.='<a href="account.php?'.$param.'&page='.($page+1).'">'.img_previous().'</a>';
|
||||
}
|
||||
$navig.= ' Page ';
|
||||
$navig.='<input type="text" name="negpage" size="1" class="flat" value="'.($nbpage-$page).'">';
|
||||
@@ -311,7 +313,7 @@ if ($account || $_GET["ref"])
|
||||
$navig.='/'.$nbpage.' ';
|
||||
if ($total_lines > $limitsql )
|
||||
{
|
||||
$navig.= '<a href="account.php?account='.$acct->id.'&page='.($page-1).$param.'">'.img_next().'</a>';
|
||||
$navig.= '<a href="account.php?'.$param.'&page='.($page-1).'">'.img_next().'</a>';
|
||||
}
|
||||
$navig.='</form>';
|
||||
|
||||
@@ -344,13 +346,14 @@ if ($account || $_GET["ref"])
|
||||
print '<input type="hidden" name="account" value="' . $acct->id . '">';
|
||||
|
||||
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 class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Date").'</td>';
|
||||
print '<td> </td>';
|
||||
print '<td>'.$langs->trans("Type").'</td>';
|
||||
print '<td>'.$langs->trans("Numero").'</td>';
|
||||
print '<td colspan="2">'.$langs->trans("Description").'</td>';
|
||||
print '<td align=right>'.$langs->trans("Debit").'</td>';
|
||||
print '<td align=right>'.$langs->trans("Credit").'</td>';
|
||||
@@ -363,9 +366,10 @@ if ($account || $_GET["ref"])
|
||||
print '</td>';
|
||||
print '<td nowrap="nowrap">';
|
||||
$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 '<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)
|
||||
{
|
||||
print '<br>'.$langs->trans("Category").': <select class="flat" name="cat1">'.$options.'</select>';
|
||||
@@ -403,7 +407,7 @@ if ($account || $_GET["ref"])
|
||||
else print ' ';
|
||||
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="action" value="search">';
|
||||
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 ba.entity = ".$conf->entity;
|
||||
$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);
|
||||
|
||||
dol_syslog("account.php get transactions - sql=".$sql);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$total = 0;
|
||||
$time = dol_now('tzserver');
|
||||
$now=dol_now('tzserver');
|
||||
$nows=dol_date('Ymd',$now);
|
||||
|
||||
//$html->load_cache_types_paiements();
|
||||
//$html->cache_types_paiements
|
||||
|
||||
$var=true;
|
||||
|
||||
@@ -479,16 +486,18 @@ if ($account || $_GET["ref"])
|
||||
while ($i < $num)
|
||||
{
|
||||
$objp = $db->fetch_object($result);
|
||||
$total = $total + $objp->amount;
|
||||
$total = price2num($total + $objp->amount,'MT');
|
||||
if ($i >= ($nbline - $viewline))
|
||||
{
|
||||
$var=!$var;
|
||||
|
||||
// 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 ;
|
||||
print '<tr class="liste_total"><td colspan="7">';
|
||||
print '<tr class="liste_total"><td colspan="8">';
|
||||
print $langs->trans("CurrentBalance");
|
||||
print '</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>".$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=' ';
|
||||
print $label;
|
||||
print "</td>\n";
|
||||
print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n";
|
||||
|
||||
// Description
|
||||
@@ -565,11 +579,11 @@ if ($account || $_GET["ref"])
|
||||
{
|
||||
// Label generique car entre parentheses. On l'affiche en le traduisant
|
||||
if ($reg[1]=='paiement') $reg[1]='Payment';
|
||||
print $langs->trans($reg[1]);
|
||||
print ' '.$langs->trans($reg[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $links[$key]['label'];
|
||||
print ' '.$links[$key]['label'];
|
||||
}
|
||||
print '</a>';
|
||||
}
|
||||
@@ -680,7 +694,7 @@ if ($account || $_GET["ref"])
|
||||
// Show total
|
||||
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 ' ';
|
||||
else print $langs->trans("CurrentBalance");
|
||||
print '</td>';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
require("./pre.inc.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("companies");
|
||||
@@ -38,7 +38,7 @@ $langs->load("companies");
|
||||
llxHeader();
|
||||
|
||||
$line = new AccountLine($db);
|
||||
$line->fetch($_GET["rowid"], $user);
|
||||
$line->fetch($_GET["rowid"]);
|
||||
$line->info($_GET["rowid"]);
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/deplacement/index.php
|
||||
\brief Page liste des deplacements
|
||||
\version $Id$
|
||||
*/
|
||||
* \file htdocs/compta/deplacement/index.php
|
||||
* \brief Page liste des deplacements
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
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("users");
|
||||
@@ -56,9 +56,9 @@ $pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
|
||||
$sql = "SELECT s.nom, s.rowid as socid,"; // Ou
|
||||
$sql.= " d.rowid, d.type, ".$db->pdate("d.dated")." as dd, d.km, "; // Comment
|
||||
$sql.= " u.name, u.firstname"; // Qui
|
||||
$sql = "SELECT s.nom, s.rowid as socid,"; // Ou
|
||||
$sql.= " d.rowid, d.type, d.dated as dd, d.km, "; // Comment
|
||||
$sql.= " u.name, u.firstname"; // Qui
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
|
||||
$sql.= ", ".MAIN_DB_PREFIX."deplacement as d";
|
||||
$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 '<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>'.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>';
|
||||
else print '<td> </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>';
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
|
||||
require("../../main.inc.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."/compta/dons/don.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/paiement.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/dons/class/don.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');
|
||||
|
||||
$langs->load("companies");
|
||||
@@ -250,7 +250,8 @@ if ($_GET["action"] == 'create')
|
||||
|
||||
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);
|
||||
print '</td>';
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
3270
htdocs/compta/facture/class/facture.class.php
Normal file
3270
htdocs/compta/facture/class/facture.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,7 @@
|
||||
<!-- BEGIN PHP TEMPLATE -->
|
||||
|
||||
<?php
|
||||
$langs->load("bills");
|
||||
if ($somethingshown) { echo '<br>'; }
|
||||
if ($num > 1) print_titre($langs->trans("RelatedBills"));
|
||||
else print_titre($langs->trans("RelatedBill"));
|
||||
@@ -41,14 +42,13 @@ for ($i = 0 ; $i < $num ; $i++)
|
||||
$var=!$var;
|
||||
?>
|
||||
<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="right"><?php echo price($linkedObjectBlock->total_ht); ?></td>
|
||||
<td align="right"><?php echo $linkedObjectBlock->getLibStatut(3); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
$total = $total + $linkedObjectBlock->total_ht;
|
||||
$i++;
|
||||
}
|
||||
?>
|
||||
<tr class="liste_total">
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
*/
|
||||
|
||||
require("../../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT.'/paiement.class.php');
|
||||
require_once(DOL_DOCUMENT_ROOT.'/compta/facture/facture.class.php');
|
||||
require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php');
|
||||
require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.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('banks');
|
||||
@@ -169,8 +169,9 @@ print '<tr><td valign="top" width="140">'.$langs->trans('Ref').'</td><td colspan
|
||||
// Date
|
||||
print '<tr><td valign="top" width="120">'.$langs->trans('Date').'</td><td colspan="3">'.dol_print_date($paiement->date,'day').'</td></tr>';
|
||||
|
||||
// Mode
|
||||
print '<tr><td valign="top">'.$langs->trans('Mode').'</td><td colspan="3">'.$langs->trans("PaymentType".$paiement->type_code).'</td></tr>';
|
||||
// Payment type (VIR, LIQ, ...)
|
||||
$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
|
||||
//if ($paiement->montant)
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
*/
|
||||
|
||||
require('../main.inc.php');
|
||||
include_once(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php");
|
||||
include_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php");
|
||||
include_once(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
|
||||
include_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php");
|
||||
|
||||
$langs->load("bills");
|
||||
|
||||
@@ -44,10 +44,12 @@ if ($user->societe_id > 0)
|
||||
*/
|
||||
if ($_POST["action"] == 'add_paiement')
|
||||
{
|
||||
$error=0;
|
||||
|
||||
if ($_POST["cancel"])
|
||||
{
|
||||
$loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid;
|
||||
Header("Location: $loc");
|
||||
Header("Location: ".$loc);
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -63,12 +65,18 @@ if ($_POST["action"] == 'add_paiement')
|
||||
$mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date"));
|
||||
$error++;
|
||||
}
|
||||
if ($conf->banque->enabled && ! $_POST["accountid"] > 0)
|
||||
{
|
||||
$mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit"));
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$paiement_id = 0;
|
||||
$paymentid = 0;
|
||||
|
||||
// Read possible payments
|
||||
// FIXME add error message if no payment is defined
|
||||
$amounts = array();
|
||||
foreach ($_POST as $key => $value)
|
||||
{
|
||||
@@ -90,9 +98,9 @@ if ($_POST["action"] == 'add_paiement')
|
||||
$paiement->paiementtype = $_POST["paiementtype"];
|
||||
$paiement->num_paiement = $_POST["num_paiement"];
|
||||
$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
|
||||
$total=0;
|
||||
@@ -108,7 +116,7 @@ if ($_POST["action"] == 'add_paiement')
|
||||
$langs->load("banks");
|
||||
$label = $langs->transnoentities("SocialContributionPayment");
|
||||
$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
|
||||
if ($bank_line_id > 0)
|
||||
@@ -125,7 +133,7 @@ if ($_POST["action"] == 'add_paiement')
|
||||
$db->commit();
|
||||
|
||||
$loc = DOL_URL_ROOT.'/compta/sociales/charges.php?id='.$chid;
|
||||
Header("Location: $loc");
|
||||
Header("Location: ".$loc);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
@@ -136,7 +144,7 @@ if ($_POST["action"] == 'add_paiement')
|
||||
else
|
||||
{
|
||||
$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 '<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);
|
||||
print "</td>";
|
||||
print '<td>'.$langs->trans("Comments").'</td></tr>';
|
||||
|
||||
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 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 '<td class="fieldrequired">'.$langs->trans('AccountToCredit').'</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 '<tr><td>'.$langs->trans('Numero');
|
||||
@@ -235,7 +244,8 @@ if ($_GET["action"] == 'create')
|
||||
$num = 1;
|
||||
$i = 0;
|
||||
print '<tr><td colspan="3">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
|
||||
print '<table class="nobordernopadding" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
//print '<td>'.$langs->trans("SocialContribution").'</td>';
|
||||
print '<td align="left">'.$langs->trans("DateDue").'</td>';
|
||||
|
||||
814
htdocs/compta/sociales/class/chargesociales.class.php
Normal file
814
htdocs/compta/sociales/class/chargesociales.class.php
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -21,12 +21,12 @@
|
||||
/**
|
||||
* \file htdocs/compta/sociales/index.php
|
||||
* \ingroup tax
|
||||
* \brief Ecran des charges sociales
|
||||
* \brief Page to list all social contributions
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
require('../../main.inc.php');
|
||||
require(DOL_DOCUMENT_ROOT."/compta/chargesociales.class.php");
|
||||
require(DOL_DOCUMENT_ROOT."/compta/sociales/class/chargesociales.class.php");
|
||||
|
||||
// Security check
|
||||
$socid = isset($_GET["socid"])?$_GET["socid"]:'';
|
||||
@@ -71,7 +71,6 @@ else
|
||||
* View
|
||||
*/
|
||||
|
||||
|
||||
llxHeader();
|
||||
|
||||
$html = new Form($db);
|
||||
@@ -100,7 +99,7 @@ if ($filtre) {
|
||||
if ($typeid) {
|
||||
$sql .= " AND s.fk_type=".$typeid;
|
||||
}
|
||||
$sql.=$db->order($sortfield,$sortorder);
|
||||
$sql.= $db->order($sortfield,$sortorder);
|
||||
$sql.= $db->plimit($limit+1,$offset);
|
||||
|
||||
|
||||
@@ -131,83 +130,96 @@ if ($resql)
|
||||
print $mesg."<br>";
|
||||
}
|
||||
|
||||
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
|
||||
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","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"> </td>';
|
||||
print '<td class="liste_titre"> </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"> </td>';
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print '<td class="liste_titre"> </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))
|
||||
if (empty($mysoc->pays_id) && empty($mysoc->pays_code))
|
||||
{
|
||||
$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 ' ';
|
||||
}
|
||||
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++;
|
||||
print '<div class="error">';
|
||||
$langs->load("errors");
|
||||
$countrynotdefined=$langs->trans("ErrorSetACountryFirst");
|
||||
print $countrynotdefined;
|
||||
print '</div>';
|
||||
}
|
||||
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"> </td>';
|
||||
print '<td class="liste_titre"> </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"> </td>';
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print '<td class="liste_titre"> </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 ' ';
|
||||
}
|
||||
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
|
||||
{
|
||||
|
||||
532
htdocs/core/class/html.formfile.class.php
Normal file
532
htdocs/core/class/html.formfile.class.php
Normal 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 ' ';
|
||||
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 ' ';
|
||||
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 ' ';
|
||||
}
|
||||
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.'&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&modulepart='.$modulepart.'&file='.urlencode($relativepath);
|
||||
print ($param?'&'.$param:'');
|
||||
print '&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 ' ';
|
||||
if ($permtodelete)
|
||||
print '<a href="'.$url.'?id='.$object->id.'§ion='.$_REQUEST["section"].'&action=delete&urlfile='.urlencode($file['name']).'">'.img_delete().'</a>';
|
||||
else
|
||||
print ' ';
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
238
htdocs/core/class/notify.class.php
Normal file
238
htdocs/core/class/notify.class.php
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* 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-2010 Regis Houssin <regis@dolibarr.fr>
|
||||
*
|
||||
@@ -28,16 +28,16 @@
|
||||
*/
|
||||
|
||||
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."/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/product/html.formproduct.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/product.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->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/propal.class.php");
|
||||
if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
|
||||
if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.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/class/propal.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/class/entrepot.class.php");
|
||||
|
||||
$langs->load("sendings");
|
||||
$langs->load("companies");
|
||||
@@ -48,12 +48,12 @@ $langs->load('stocks');
|
||||
$langs->load('other');
|
||||
$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_id = $_GET["origin_id"]?$_GET["origin_id"]:$_POST["origin_id"]; // Id of order or propal
|
||||
$origin = $_GET["origin"]?$_GET["origin"]:$_POST["origin"]; // Example: commande, 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
|
||||
@@ -72,7 +72,6 @@ if ($_POST["action"] == 'add')
|
||||
// Creation de l'objet expedition
|
||||
$expedition = new Expedition($db);
|
||||
|
||||
$expedition->date_expedition = time();
|
||||
$expedition->note = $_POST["note"];
|
||||
$expedition->origin = $origin;
|
||||
$expedition->origin_id = $origin_id;
|
||||
@@ -83,8 +82,8 @@ if ($_POST["action"] == 'add')
|
||||
$expedition->size_units = $_POST["size_units"];
|
||||
$expedition->weight_units = $_POST["weight_units"];
|
||||
|
||||
// On boucle sur chaque ligne du document d'origine pour completer objet expedition
|
||||
// avec qte a livrer
|
||||
// On va boucler sur chaque ligne du document d'origine pour completer objet expedition
|
||||
// avec info diverses + qte a livrer
|
||||
$classname = ucfirst($expedition->origin);
|
||||
$object = new $classname($db);
|
||||
$object->fetch($expedition->origin_id);
|
||||
@@ -92,19 +91,21 @@ if ($_POST["action"] == 'add')
|
||||
|
||||
$expedition->socid = $object->socid;
|
||||
$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->expedition_method_id = $_POST["expedition_method_id"];
|
||||
$expedition->tracking_number = $_POST["tracking_number"];
|
||||
|
||||
//var_dump($_POST);exit;
|
||||
for ($i = 0 ; $i < sizeof($object->lignes) ; $i++)
|
||||
{
|
||||
$ent = "entl".$i;
|
||||
$idl = "idl".$i;
|
||||
$qty = "qtyl".$i;
|
||||
$entrepot_id = $_POST[$ent]?$_POST[$ent]:$_POST["entrepot_id"];
|
||||
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]);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
@@ -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
|
||||
*/
|
||||
@@ -242,7 +309,6 @@ $formproduct = new FormProduct($db);
|
||||
*********************************************************************/
|
||||
if ($_GET["action"] == 'create')
|
||||
{
|
||||
|
||||
$expe = new Expedition($db);
|
||||
|
||||
print_fiche_titre($langs->trans("CreateASending"));
|
||||
@@ -262,21 +328,22 @@ if ($_GET["action"] == 'create')
|
||||
|
||||
$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->fetch($object->socid);
|
||||
|
||||
$author = new User($db);
|
||||
$author->id = $object->user_author_id;
|
||||
$author->fetch();
|
||||
$author->fetch($object->user_author_id);
|
||||
|
||||
if ($conf->stock->enabled) $entrepot = new Entrepot($db);
|
||||
|
||||
/*
|
||||
* 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="action" value="add">';
|
||||
print '<input type="hidden" name="origin" value="'.$origin.'">';
|
||||
@@ -290,13 +357,13 @@ if ($_GET["action"] == 'create')
|
||||
|
||||
// Ref
|
||||
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;
|
||||
}
|
||||
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 "</tr>\n";
|
||||
@@ -313,13 +380,12 @@ if ($_GET["action"] == 'create')
|
||||
print '<td colspan="3">'.$soc->getNomUrl(1).'</td>';
|
||||
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
|
||||
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>';
|
||||
|
||||
// Delivery address
|
||||
@@ -330,53 +396,44 @@ if ($_GET["action"] == 'create')
|
||||
print '<td colspan="3">';
|
||||
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";
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
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 $langs->trans("Weight");
|
||||
print '</td><td><input name="weight" size="4" value=""></td><td>';
|
||||
print $formproduct->select_measuring_units("weight_units","weight");
|
||||
print '</td><td><input name="weight" size="4" value="'.$_POST["weight"].'"></td><td>';
|
||||
print $formproduct->select_measuring_units("weight_units","weight",$_POST["weight_units"]);
|
||||
print '</td></tr><tr><td>';
|
||||
print $langs->trans("Width");
|
||||
print ' </td><td><input name="sizeW" size="4" value=""></td>';
|
||||
print '<td> </td></tr><tr><td>';
|
||||
print $langs->trans("Height");
|
||||
print '</td><td><input name="sizeH" size="4" value=""></td><td>';
|
||||
print ' </td><td><input name="sizeW" size="4" value="'.$_POST["sizeW"].'"></td><td rowspan="3">';
|
||||
print $formproduct->select_measuring_units("size_units","size");
|
||||
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 '</td><td><input name="sizeS" size="4" value=""></td>';
|
||||
print '<td> </td></tr>';
|
||||
print '</td><td><input name="sizeS" size="4" value="'.$_POST["sizeS"].'"></td>';
|
||||
print '</tr>';
|
||||
|
||||
// Delivery method
|
||||
print "<tr><td>".$langs->trans("DeliveryMethod")."</td>";
|
||||
print '<td colspan="3">';
|
||||
$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";
|
||||
|
||||
// Tracking number
|
||||
print "<tr><td>".$langs->trans("TrackingNumber")."</td>";
|
||||
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 "</table>";
|
||||
@@ -399,21 +456,16 @@ if ($_GET["action"] == 'create')
|
||||
print '<td>'.$langs->trans("Description").'</td>';
|
||||
print '<td align="center">'.$langs->trans("QtyOrdered").'</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 ($_GET["entrepot_id"])
|
||||
{
|
||||
print '<td align="right">'.$langs->trans("Stock").'</td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<td align="left">'.$langs->trans("Warehouse").'</td>';
|
||||
}
|
||||
print '<td align="left">'.$langs->trans("Warehouse").' / '.$langs->trans("Stock").'</td>';
|
||||
}
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
$product_static = new Product($db);
|
||||
|
||||
$var=true;
|
||||
$indiceAsked = 0;
|
||||
while ($indiceAsked < $numAsked)
|
||||
@@ -422,37 +474,63 @@ if ($_GET["action"] == 'create')
|
||||
|
||||
$line = $object->lines[$indiceAsked];
|
||||
$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";
|
||||
|
||||
// Desc
|
||||
// Product label
|
||||
if ($line->fk_product > 0)
|
||||
{
|
||||
$product->fetch($line->fk_product);
|
||||
$product->load_stock();
|
||||
|
||||
print '<td>';
|
||||
print '<a href="'.DOL_URL_ROOT.'/product/fiche.php?id='.$line->fk_product.'">';
|
||||
if ($line->product_type == 1)
|
||||
print '<a name="'.$line->rowid.'"></a>'; // ancre pour retourner sur la ligne
|
||||
|
||||
// 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>';
|
||||
}
|
||||
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
|
||||
print '<td align="center">'.$line->qty.'</td>';
|
||||
$qtyProdCom=$line->qty;
|
||||
|
||||
// Sendings
|
||||
// Qty already sent
|
||||
print '<td align="center">';
|
||||
$quantityDelivered = $object->expeditions[$line->id];
|
||||
print $quantityDelivered;
|
||||
@@ -461,81 +539,63 @@ if ($_GET["action"] == 'create')
|
||||
$quantityAsked = $line->qty;
|
||||
$quantityToBeDelivered = $quantityAsked - $quantityDelivered;
|
||||
|
||||
if ($conf->stock->enabled && $line->product_type == 0)
|
||||
$defaultqty=0;
|
||||
if ($_REQUEST["entrepot_id"])
|
||||
{
|
||||
$defaultqty=0;
|
||||
if ($_GET["entrepot_id"])
|
||||
{
|
||||
$stock = $product->stock_entrepot[$_GET["entrepot_id"]];
|
||||
$stock+=0; // Convertit en numerique
|
||||
$defaultqty=min($quantityToBeDelivered, $stock);
|
||||
if ($defaultqty < 0) $defaultqty=0;
|
||||
}
|
||||
//var_dump($product);
|
||||
$stock = $product->stock_warehouse[$_REQUEST["entrepot_id"]]->real;
|
||||
$stock+=0; // Convertit en numerique
|
||||
$defaultqty=min($quantityToBeDelivered, $stock);
|
||||
if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0;
|
||||
}
|
||||
|
||||
// Quantity
|
||||
print '<td align="center">';
|
||||
// Quantity to send
|
||||
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="qtyl'.$indiceAsked.'" type="text" size="6" value="'.$defaultqty.'">';
|
||||
print '</td>';
|
||||
print '<input name="qtyl'.$indiceAsked.'" type="text" size="4" value="'.$defaultqty.'">';
|
||||
}
|
||||
else print '0';
|
||||
print '</td>';
|
||||
|
||||
// Stock
|
||||
if ($_GET["entrepot_id"])
|
||||
// Stock
|
||||
if ($conf->stock->enabled)
|
||||
{
|
||||
print '<td align="left">';
|
||||
if ($line->product_type == 0 || ! empty($conf->global->STOCK_SUPPORTS_SERVICES))
|
||||
{
|
||||
print '<td align="right">';
|
||||
print $stock;
|
||||
if ($stock < $quantityToBeDelivered)
|
||||
// Show warehous
|
||||
if ($_REQUEST["entrepot_id"])
|
||||
{
|
||||
print ' '.img_warning($langs->trans("StockTooLow"));
|
||||
}
|
||||
print '</td>';
|
||||
}
|
||||
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)
|
||||
$formproduct->selectWarehouses($_REQUEST["entrepot_id"],'entl'.$indiceAsked,'',1,0,$line->fk_product);
|
||||
//print $stock.' '.$quantityToBeDelivered;
|
||||
//if ($stock >= 0 && $stock < $quantityToBeDelivered)
|
||||
if ($stock < $quantityToBeDelivered)
|
||||
{
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
$array[$obj->rowid] = $obj->label.' ('.$obj->reel.')';
|
||||
$i++;
|
||||
}
|
||||
print ' '.img_warning($langs->trans("StockTooLow"));
|
||||
}
|
||||
$db->free($result);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$db->error();
|
||||
return -1;
|
||||
$formproduct->selectWarehouses('','entl'.$indiceAsked,'',1,0,$line->fk_product);
|
||||
}
|
||||
|
||||
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
|
||||
print '<td align="center" '.$colspan.'>';
|
||||
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>';
|
||||
if ($line->product_type == 1) print '<td> </td>';
|
||||
}
|
||||
}*/
|
||||
|
||||
print "</tr>\n";
|
||||
|
||||
@@ -582,10 +642,10 @@ else
|
||||
/* */
|
||||
/* *************************************************************************** */
|
||||
{
|
||||
if ($_GET["id"] > 0)
|
||||
if (! empty($_REQUEST["id"]) || ! empty($_REQUEST["ref"]))
|
||||
{
|
||||
$expedition = new Expedition($db);
|
||||
$result = $expedition->fetch($_GET["id"]);
|
||||
$result = $expedition->fetch($_REQUEST["id"],$_REQUEST["ref"]);
|
||||
if ($result < 0)
|
||||
{
|
||||
dol_print_error($db,$expedition->error);
|
||||
@@ -673,7 +733,9 @@ else
|
||||
|
||||
// Ref
|
||||
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
|
||||
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 '</tr>';
|
||||
|
||||
// Date
|
||||
print '<tr><td>'.$langs->trans("Date").'</td>';
|
||||
print '<td colspan="3">'.dol_print_date($expedition->date,"daytext")."</td>\n";
|
||||
// Date creation
|
||||
print '<tr><td>'.$langs->trans("DateCreation").'</td>';
|
||||
print '<td colspan="3">'.dol_print_date($expedition->date_creation,"daytext")."</td>\n";
|
||||
print '</tr>';
|
||||
|
||||
// Date delivery planned
|
||||
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
|
||||
print '<td colspan="3">'.dol_print_date($expedition->date_delivery,'daytext')."</td>\n";
|
||||
// Delivery date planed
|
||||
print '<tr><td height="10">';
|
||||
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&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') : ' ';
|
||||
}
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Delivery address
|
||||
@@ -727,30 +809,19 @@ else
|
||||
print '<td colspan="3">';
|
||||
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";
|
||||
}
|
||||
|
||||
// Weight
|
||||
print '<tr><td>'.$langs->trans("TotalWeight").'</td>';
|
||||
print '<td colspan="3">';
|
||||
if ($expedition->trueWeight)
|
||||
{
|
||||
// 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 ' ';
|
||||
}
|
||||
print '<tr><td>'.$html->editfieldkey("Weight",'trueWeight',$expedition->trueWeight,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
|
||||
print $html->editfieldval("Weight",'trueWeight',$expedition->trueWeight,'id',$expedition->id,$user->rights->expedition->creer);
|
||||
print $expedition->weight_units?measuring_units_string($expedition->weight_units,"weight"):'';
|
||||
print '</td></tr>';
|
||||
|
||||
// Volume Total
|
||||
print '<tr><td>'.$langs->trans("TotalVolume").'</td>';
|
||||
print '<tr><td>'.$langs->trans("Volume").'</td>';
|
||||
print '<td colspan="3">';
|
||||
if ($expedition->trueVolume)
|
||||
{
|
||||
@@ -767,17 +838,23 @@ else
|
||||
print "</td>\n";
|
||||
print '</tr>';
|
||||
|
||||
// Taille
|
||||
print '<tr><td>'.$langs->trans("Size").'</td>';
|
||||
print '<td colspan="3">';
|
||||
if ($expedition->trueWidth || $expedition->trueHeight || $expedition->trueDepth)
|
||||
{
|
||||
// If sending size defined
|
||||
print $expedition->trueSize.' '.measuring_units_string($expedition->size_units,"size");
|
||||
}
|
||||
else print ' ';
|
||||
print "</td>\n";
|
||||
print '</tr>';
|
||||
// Width
|
||||
print '<tr><td>'.$html->editfieldkey("Width",'trueWidth',$expedition->trueWidth,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
|
||||
print $html->editfieldval("Width",'trueWidth',$expedition->trueWidth,'id',$expedition->id,$user->rights->expedition->creer);
|
||||
print $expedition->trueWidth?measuring_units_string($expedition->width_units,"size"):'';
|
||||
print '</td></tr>';
|
||||
|
||||
// Height
|
||||
print '<tr><td>'.$html->editfieldkey("Height",'trueHeight',$expedition->trueHeight,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
|
||||
print $html->editfieldval("Height",'trueHeight',$expedition->trueHeight,'id',$expedition->id,$user->rights->expedition->creer);
|
||||
print $expedition->trueHeight?measuring_units_string($expedition->height_units,"size"):'';
|
||||
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
|
||||
print '<tr><td>'.$langs->trans("Status").'</td>';
|
||||
@@ -785,26 +862,47 @@ else
|
||||
print '</tr>';
|
||||
|
||||
// Sending method
|
||||
print '<tr><td>'.$langs->trans("SendingMethod").'</td>';
|
||||
print '<td colspan="3">';
|
||||
if ($expedition->expedition_method_id > 0)
|
||||
print '<tr><td height="10">';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
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&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
|
||||
$code=$langs->getLabelFromKey($db,$expedition->expedition_method_id,'expedition_methode','rowid','code');
|
||||
print $langs->trans("SendingMethod".strtoupper($code));
|
||||
print '<form name="setexpedition_method_id" 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="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 ' ';
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Tracking Number
|
||||
print '<tr><td>'.$langs->trans("TrackingNumber").'</td>';
|
||||
print '<td>'.$expedition->tracking_number.'</td>';
|
||||
print '<tr><td>'.$html->editfieldkey("TrackingNumber",'trackingnumber',$expedition->tracking_number,'id',$expedition->id,$user->rights->expedition->creer).'</td><td colspan="3">';
|
||||
print $html->editfieldval("TrackingNumber",'trackingnumber',$expedition->tracking_number,'id',$expedition->id,$user->rights->expedition->creer);
|
||||
print '</td></tr>';
|
||||
|
||||
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";
|
||||
|
||||
@@ -824,8 +922,9 @@ else
|
||||
print '<td align="center">'.$langs->trans("QtyShipped").'</td>';
|
||||
}
|
||||
|
||||
print '<td align="center">'.$langs->trans("Weight").'</td>';
|
||||
print '<td align="center">'.$langs->trans("Volume").'</td>';
|
||||
print '<td align="center">'.$langs->trans("CalculatedWeight").'</td>';
|
||||
print '<td align="center">'.$langs->trans("CalculatedVolume").'</td>';
|
||||
//print '<td align="center">'.$langs->trans("Size").'</td>';
|
||||
|
||||
if ($conf->stock->enabled)
|
||||
{
|
||||
@@ -839,6 +938,7 @@ else
|
||||
{
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
||||
// Predefined product or service
|
||||
if ($lignes[$i]->fk_product > 0)
|
||||
{
|
||||
print '<td>';
|
||||
@@ -874,18 +974,32 @@ else
|
||||
// Qte a expedier ou expedier
|
||||
print '<td align="center">'.$lignes[$i]->qty_shipped.'</td>';
|
||||
|
||||
// Poids
|
||||
print '<td align="center">'.$lignes[$i]->weight*$lignes[$i]->qty_shipped.' '.measuring_units_string($lignes[$i]->weight_units,"weight").'</td>';
|
||||
// Weight
|
||||
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 ' ';
|
||||
print '</td>';
|
||||
|
||||
// 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 ' ';
|
||||
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
|
||||
if ($conf->stock->enabled)
|
||||
{
|
||||
$entrepot = new Entrepot($db);
|
||||
$entrepot->fetch($lignes[$i]->entrepot_id);
|
||||
print '<td align="left">'.$entrepot->getNomUrl(1).'</td>';
|
||||
print '<td align="left">';
|
||||
if ($lignes[$i]->entrepot_id > 0)
|
||||
{
|
||||
$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">';
|
||||
|
||||
/*if ($expedition->statut > 0 && $user->rights->expedition->valider)
|
||||
{
|
||||
print '<a class="butAction" href="fiche.php?id='.$expedition->id.'&action=open">'.$langs->trans("Modify").'</a>';
|
||||
}*/
|
||||
|
||||
if ($expedition->statut == 0 && $num_prod > 0)
|
||||
{
|
||||
if ($user->rights->expedition->valider)
|
||||
|
||||
@@ -21,12 +21,13 @@
|
||||
/**
|
||||
* \file htdocs/expedition/index.php
|
||||
* \ingroup expedition
|
||||
* \brief Page accueil du module expedition
|
||||
* \brief Home page of shipping area.
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
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("sendings");
|
||||
@@ -37,6 +38,7 @@ $langs->load("sendings");
|
||||
|
||||
$orderstatic=new Commande($db);
|
||||
$companystatic=new Societe($db);
|
||||
$shipment=new Expedition($db);
|
||||
|
||||
$helpurl='EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones';
|
||||
llxHeader('',$langs->trans("Sendings"),$helpurl);
|
||||
@@ -92,9 +94,17 @@ if ($resql)
|
||||
{
|
||||
$var=!$var;
|
||||
$obj = $db->fetch_object($resql);
|
||||
print "<tr $bc[$var]><td nowrap=\"nowrap\"><a href=\"fiche.php?id=".$obj->rowid."\">".$obj->ref."</a></td>";
|
||||
print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.$obj->nom.'</a></td>';
|
||||
print '<td><a href="'.DOL_URL_ROOT.'/commande/fiche.php?id='.$obj->commande_id.'">'.$obj->commande_ref.'</a></td></tr>';
|
||||
print "<tr ".$bc[$var]."><td nowrap=\"nowrap\">";
|
||||
$shipment->id=$obj->rowid;
|
||||
$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++;
|
||||
}
|
||||
print "</table><br>";
|
||||
@@ -139,7 +149,9 @@ if ( $db->query($sql) )
|
||||
print $orderstatic->getNomUrl(1);
|
||||
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>';
|
||||
$i++;
|
||||
}
|
||||
@@ -189,7 +201,11 @@ if ( $resql )
|
||||
$orderstatic->ref=$obj->ref;
|
||||
print $orderstatic->getNomUrl(1);
|
||||
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++;
|
||||
}
|
||||
print "</table><br>";
|
||||
@@ -206,7 +222,7 @@ $sql = "SELECT e.rowid, e.ref";
|
||||
$sql.= ", s.nom, s.rowid as socid";
|
||||
$sql.= ", c.ref as commande_ref, c.rowid as commande_id";
|
||||
$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."societe as s ON s.rowid = e.fk_soc";
|
||||
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.= " AND e.entity = ".$conf->entity;
|
||||
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);
|
||||
|
||||
$resql = $db->query($sql);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -27,15 +27,16 @@
|
||||
*/
|
||||
|
||||
require("../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/expedition/expedition.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/expedition/class/expedition.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/sendings.lib.php");
|
||||
if ($conf->produit->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product/product.class.php");
|
||||
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php");
|
||||
if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/comm/propal/propal.class.php");
|
||||
if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
|
||||
if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.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/class/project.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/class/commande.class.php");
|
||||
if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/class/entrepot.class.php");
|
||||
|
||||
$langs->load('orders');
|
||||
$langs->load("companies");
|
||||
@@ -52,8 +53,6 @@ $socid=0;
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result=restrictedArea($user,'commande',$id);
|
||||
|
||||
// Chargement des permissions
|
||||
$error = $user->load_entrepots();
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@@ -121,6 +120,7 @@ if ($_POST['action'] == 'setconditions' && $user->rights->commande->creer)
|
||||
|
||||
|
||||
$html = new Form($db);
|
||||
$formproduct = new FormProduct($db);
|
||||
$formfile = new FormFile($db);
|
||||
|
||||
|
||||
@@ -147,8 +147,7 @@ if ($id > 0 || ! empty($ref))
|
||||
$soc->fetch($commande->socid);
|
||||
|
||||
$author = new User($db);
|
||||
$author->id = $commande->user_author_id;
|
||||
$author->fetch();
|
||||
$author->fetch($commande->user_author_id);
|
||||
|
||||
$head = commande_prepare_head($commande);
|
||||
dol_fiche_head($head, 'shipping', $langs->trans("CustomerOrder"), 0, 'order');
|
||||
@@ -243,18 +242,18 @@ if ($id > 0 || ! empty($ref))
|
||||
// Si source = propal
|
||||
$propal = new Propal($db);
|
||||
$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 '</tr>';
|
||||
|
||||
// Date de livraison
|
||||
// Delivery date planed
|
||||
print '<tr><td height="10">';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print $langs->trans('DeliveryDate');
|
||||
print $langs->trans('DateDeliveryPlanned');
|
||||
print '</td>';
|
||||
|
||||
if ($_GET['action'] != 'editdate_livraison' && $commande->brouillon) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&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&id='.$commande->id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'</a></td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="2">';
|
||||
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 '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
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 '</form>';
|
||||
}
|
||||
@@ -290,11 +289,11 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
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
|
||||
{
|
||||
$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>';
|
||||
}
|
||||
@@ -387,17 +386,18 @@ if ($id > 0 || ! empty($ref))
|
||||
*/
|
||||
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.= ' '.$db->pdate('cd.date_start').' as date_start,';
|
||||
$sql.= ' '.$db->pdate('cd.date_end').' as date_end,';
|
||||
$sql.= ' cd.date_start,';
|
||||
$sql.= ' cd.date_end,';
|
||||
$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.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
|
||||
$sql.= " WHERE cd.fk_commande = ".$commande->id;
|
||||
// $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";
|
||||
|
||||
//print $sql;
|
||||
@@ -438,6 +438,8 @@ if ($id > 0 || ! empty($ref))
|
||||
if (! empty($objp->date_end)) $type=1;
|
||||
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
||||
// Product label
|
||||
if ($objp->fk_product > 0)
|
||||
{
|
||||
print '<td>';
|
||||
@@ -454,7 +456,7 @@ if ($id > 0 || ! empty($ref))
|
||||
print $html->textwithtooltip($text,$description,3,'','',$i);
|
||||
|
||||
// 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
|
||||
if ($conf->global->PRODUIT_DESC_IN_FORM)
|
||||
@@ -472,12 +474,14 @@ if ($id > 0 || ! empty($ref))
|
||||
print $text.' '.nl2br($objp->description);
|
||||
|
||||
// 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";
|
||||
}
|
||||
|
||||
// Qty ordered
|
||||
print '<td align="center">'.$objp->qty.'</td>';
|
||||
|
||||
// Qty already shipped
|
||||
$qtyProdCom=$objp->qty;
|
||||
print '<td align="center">';
|
||||
// Nb of sending products for this line of order
|
||||
@@ -485,10 +489,18 @@ if ($id > 0 || ! empty($ref))
|
||||
print $quantite_livree;
|
||||
print '</td>';
|
||||
|
||||
$reste_a_livrer[$objp->fk_product] = $objp->qty - $quantite_livree;
|
||||
$reste_a_livrer_total += $reste_a_livrer[$objp->fk_product];
|
||||
// Qty remains to ship
|
||||
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>';
|
||||
|
||||
if ($objp->fk_product > 0)
|
||||
@@ -572,8 +584,8 @@ if ($id > 0 || ! empty($ref))
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
// Bouton expedier sans gestion des stocks
|
||||
if (! $conf->stock->enabled && ! $commande->brouillon)
|
||||
// Bouton expedier sans gestion des stocks
|
||||
if (! $conf->stock->enabled && ($commande->statut > 0 && $commande->statut < 3))
|
||||
{
|
||||
if ($user->rights->expedition->creer)
|
||||
{
|
||||
@@ -591,9 +603,8 @@ if ($id > 0 || ! empty($ref))
|
||||
print "</div>";
|
||||
}
|
||||
|
||||
|
||||
// Bouton expedier avec gestion des stocks
|
||||
if ($conf->stock->enabled && $commande->statut > 0 && $commande->statut < 3)
|
||||
// Bouton expedier avec gestion des stocks
|
||||
if ($conf->stock->enabled && ($commande->statut > 0 && $commande->statut < 3))
|
||||
{
|
||||
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 '<table class="border" width="100%">';
|
||||
|
||||
$entrepot = new Entrepot($db);
|
||||
$langs->load("stocks");
|
||||
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("Warehouse").'</td>';
|
||||
print '<td>';
|
||||
|
||||
if (sizeof($user->entrepots) === 1)
|
||||
if ($conf->stock->enabled)
|
||||
{
|
||||
$uentrepot = array();
|
||||
$uentrepot[$user->entrepots[0]['id']] = $user->entrepots[0]['label'];
|
||||
$html->select_array("entrepot_id",$uentrepot);
|
||||
print '<td>'.$langs->trans("WarehouseSource").'</td>';
|
||||
print '<td>';
|
||||
$result=$formproduct->selectWarehouses(-1,'entrepot_id','',1);
|
||||
if ($result <= 0)
|
||||
{
|
||||
print ' No warehouse defined, <a href="'.DOL_URL_ROOT.'/product/stock/fiche.php?action=create">add one</a>';
|
||||
}
|
||||
print '</td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$html->select_array("entrepot_id",$entrepot->list_array());
|
||||
}
|
||||
|
||||
if (sizeof($entrepot->list_array()) <= 0)
|
||||
{
|
||||
print ' No warehouse defined, <a href="'.DOL_URL_ROOT.'/product/stock/fiche.php?action=create">add one</a>';
|
||||
}
|
||||
print '</td><td align="center">';
|
||||
print '<td align="center">';
|
||||
print '<input type="submit" class="button" named="save" value="'.$langs->trans("NewSending").'">';
|
||||
if ($reste_a_livrer_total <= 0)
|
||||
{
|
||||
|
||||
1089
htdocs/fichinter/class/fichinter.class.php
Normal file
1089
htdocs/fichinter/class/fichinter.class.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -28,10 +28,10 @@
|
||||
*/
|
||||
|
||||
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/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("fichinter");
|
||||
@@ -69,32 +69,32 @@ $modulepart='fichinter';
|
||||
*/
|
||||
if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
|
||||
{
|
||||
/*
|
||||
* Creation repertoire si n'existe pas
|
||||
*/
|
||||
if (! is_dir($upload_dir)) create_exdir($upload_dir);
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
|
||||
|
||||
if (is_dir($upload_dir))
|
||||
{
|
||||
$result = dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0);
|
||||
if ($result > 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)
|
||||
if (create_exdir($upload_dir) >= 0)
|
||||
{
|
||||
$resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']);
|
||||
if (is_numeric($resupload) && $resupload > 0)
|
||||
{
|
||||
// Echec transfert (fichier depassant la limite ?)
|
||||
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
|
||||
// print_r($_FILES);
|
||||
$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
|
||||
}
|
||||
}
|
||||
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
|
||||
$param='&id='.$object->id;
|
||||
$formfile->list_of_documents($filearray,$object,'fichinter',$param);
|
||||
$formfile->list_of_documents($filearray,$object,'ficheinter',$param);
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
1609
htdocs/fourn/class/fournisseur.commande.class.php
Normal file
1609
htdocs/fourn/class/fournisseur.commande.class.php
Normal file
File diff suppressed because it is too large
Load Diff
452
htdocs/fourn/class/fournisseur.product.class.php
Normal file
452
htdocs/fourn/class/fournisseur.product.class.php
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
559
htdocs/fourn/class/paiementfourn.class.php
Normal file
559
htdocs/fourn/class/paiementfourn.class.php
Normal 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
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -3,6 +3,7 @@
|
||||
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com>
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -21,20 +22,21 @@
|
||||
|
||||
/**
|
||||
* \file htdocs/fourn/commande/fiche.php
|
||||
* \ingroup commande
|
||||
* \brief Fiche commande
|
||||
* \ingroup supplier, order
|
||||
* \brief Card supplier order
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
require("../../main.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/html.formorder.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.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."/fourn/fournisseur.commande.class.php";
|
||||
require_once DOL_DOCUMENT_ROOT."/fourn/fournisseur.product.class.php";
|
||||
require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.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/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('sendings');
|
||||
@@ -80,6 +82,30 @@ if ($_REQUEST['action'] == 'setremisepercent' && $user->rights->fournisseur->com
|
||||
$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
|
||||
*/
|
||||
@@ -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"];
|
||||
|
||||
$tva_tx = get_default_tva($societe,$mysoc,$product->tva_tx,$product->id);
|
||||
$tva_tx = get_default_tva($societe,$mysoc,$product->id);
|
||||
$type = $product->type;
|
||||
|
||||
$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'))
|
||||
{
|
||||
$product=new Product($db);
|
||||
if ($_POST["elrowid"])
|
||||
{
|
||||
if ($product->fetch($_POST["elrowid"]) < 0) dol_print_error($db);
|
||||
}
|
||||
$commande = new CommandeFournisseur($db,"",$id);
|
||||
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'],
|
||||
'HT',
|
||||
0,
|
||||
$_POST["type"]
|
||||
isset($_POST["type"])?$_POST["type"]:$product->type
|
||||
);
|
||||
|
||||
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->id = $id;
|
||||
$result=$commande->delete();
|
||||
$commande->fetch($id);
|
||||
$result=$commande->delete($user);
|
||||
if ($result > 0)
|
||||
{
|
||||
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)
|
||||
{
|
||||
$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->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')
|
||||
{
|
||||
$commande = new CommandeFournisseur($db);
|
||||
|
||||
if ($commande->fetch($id))
|
||||
{
|
||||
$upload_dir = $conf->commande->dir_output . "/";
|
||||
$upload_dir = $conf->fournisseur->commande->dir_output . "/";
|
||||
$file = $upload_dir . '/' . $_GET['file'];
|
||||
dol_delete_file($file);
|
||||
$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
|
||||
@@ -519,6 +740,8 @@ llxHeader('',$langs->trans("OrderCard"),"CommandeFournisseur");
|
||||
$html = new Form($db);
|
||||
$formfile = new FormFile($db);
|
||||
$formorder = new FormOrder($db);
|
||||
$productstatic = new Product($db);
|
||||
|
||||
|
||||
/* *************************************************************************** */
|
||||
/* */
|
||||
@@ -526,12 +749,11 @@ $formorder = new FormOrder($db);
|
||||
/* */
|
||||
/* *************************************************************************** */
|
||||
|
||||
$now=gmmktime();
|
||||
|
||||
$productstatic = new Product($db);
|
||||
$now=dol_now();
|
||||
|
||||
$id = $_REQUEST['id'];
|
||||
$ref= $_REQUEST['ref'];
|
||||
|
||||
if ($id > 0 || ! empty($ref))
|
||||
{
|
||||
//if ($mesg) print $mesg.'<br>';
|
||||
@@ -545,8 +767,7 @@ if ($id > 0 || ! empty($ref))
|
||||
$soc->fetch($commande->socid);
|
||||
|
||||
$author = new User($db);
|
||||
$author->id = $commande->user_author_id;
|
||||
$author->fetch();
|
||||
$author->fetch($commande->user_author_id);
|
||||
|
||||
$head = ordersupplier_prepare_head($commande);
|
||||
|
||||
@@ -576,7 +797,7 @@ if ($id > 0 || ! empty($ref))
|
||||
$text=$langs->trans('ConfirmValidateOrder',$newref);
|
||||
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);
|
||||
$text.='<br>';
|
||||
$text.=$notify->confirmMessage(3,$commande->socid);
|
||||
@@ -595,7 +816,6 @@ if ($id > 0 || ! empty($ref))
|
||||
}
|
||||
/*
|
||||
* Confirmation de la desapprobation
|
||||
*
|
||||
*/
|
||||
if ($_GET['action'] == 'refuse')
|
||||
{
|
||||
@@ -636,6 +856,14 @@ if ($id > 0 || ! empty($ref))
|
||||
*/
|
||||
$nbrow=8;
|
||||
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%">';
|
||||
|
||||
// Ref
|
||||
@@ -678,12 +906,12 @@ if ($id > 0 || ! empty($ref))
|
||||
}
|
||||
}
|
||||
|
||||
// Auteur
|
||||
// Author
|
||||
print '<tr><td>'.$langs->trans("AuthorRequest").'</td>';
|
||||
print '<td colspan="2">'.$author->getNomUrl(1).'</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Projet
|
||||
// Project
|
||||
if ($conf->projet->enabled)
|
||||
{
|
||||
$langs->load('projects');
|
||||
@@ -691,9 +919,10 @@ if ($id > 0 || ! empty($ref))
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print $langs->trans('Project');
|
||||
print '</td>';
|
||||
if ($_GET['action'] != 'classer' && $commande->brouillon) print '<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=classer&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&id='.$commande->id.'">'.img_edit($langs->trans('SetProject')).'</a></td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="2">';
|
||||
//print "$commande->id, $commande->socid, $commande->fk_project";
|
||||
if ($_GET['action'] == 'classer')
|
||||
{
|
||||
$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 '<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 '<td>'.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
|
||||
|
||||
@@ -768,7 +1013,7 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
$product_static=new ProductFournisseur($db);
|
||||
$product_static->fetch($commandline->fk_product);
|
||||
$text=$product_static->getNomUrl(1);
|
||||
$text=$product_static->getNomUrl(1,'supplier');
|
||||
$text.= ' - '.$product_static->libelle;
|
||||
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($commandline->description));
|
||||
print $html->textwithtooltip($text,$description,3,'','',$i);
|
||||
@@ -830,27 +1075,32 @@ if ($id > 0 || ! empty($ref))
|
||||
// Ligne en mode update
|
||||
if ($_GET["action"] == 'editline' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $commandline->id))
|
||||
{
|
||||
print "\n";
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&etat=1&ligne_id='.$commandline->id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
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 '<tr '.$bc[$var].'>';
|
||||
print '<td>';
|
||||
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.'">';
|
||||
print img_object($langs->trans('ShowProduct'),'product');
|
||||
print ' '.$commandline->ref_fourn.'</a>';
|
||||
print ' ('.$commandline->ref.')';
|
||||
print ' - '.nl2br($commandline->product);
|
||||
print '<br>';
|
||||
$product_static=new ProductFournisseur($db);
|
||||
$product_static->fetch($commandline->fk_product);
|
||||
$text=$product_static->getNomUrl(1,'supplier');
|
||||
$text.= ' - '.$product_static->libelle;
|
||||
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($commandline->description));
|
||||
print $html->textwithtooltip($text,$description,3,'','',$i);
|
||||
|
||||
// Show range
|
||||
print_date_range($commandline->date_start,$commandline->date_end);
|
||||
print '<br>';
|
||||
}
|
||||
else
|
||||
{
|
||||
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
|
||||
@@ -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="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="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 '</tr>' . "\n";
|
||||
print "</form>\n";
|
||||
@@ -909,8 +1159,8 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
$forceall=1;
|
||||
print $html->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall);
|
||||
if ($forceall || ($conf->produit->enabled && $conf->service->enabled)
|
||||
|| (empty($conf->produit->enabled) && empty($conf->service->enabled))) print '<br>';
|
||||
if ($forceall || ($conf->product->enabled && $conf->service->enabled)
|
||||
|| (empty($conf->product->enabled) && empty($conf->service->enabled))) print '<br>';
|
||||
|
||||
// Editor wysiwyg
|
||||
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS)
|
||||
@@ -941,7 +1191,7 @@ if ($id > 0 || ! empty($ref))
|
||||
print '</form>';
|
||||
|
||||
// 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 '<td colspan="3">';
|
||||
@@ -999,133 +1249,220 @@ if ($id > 0 || ! empty($ref))
|
||||
print '</div>';
|
||||
|
||||
|
||||
/**
|
||||
* Boutons actions
|
||||
*/
|
||||
if ($user->societe_id == 0 && $_GET['action'] != 'editline' && $_GET['action'] != 'delete')
|
||||
if ($_GET['action'] != 'presend')
|
||||
{
|
||||
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 '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&action=valid"';
|
||||
print '>'.$langs->trans('Validate').'</a>';
|
||||
}
|
||||
}
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
if ($commande->statut == 1)
|
||||
{
|
||||
if ($user->rights->fournisseur->commande->approuver)
|
||||
// Validate
|
||||
if ($commande->statut == 0 && $num > 0)
|
||||
{
|
||||
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&action=approve">'.$langs->trans("ApproveOrder").'</a>';
|
||||
|
||||
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&action=refuse">'.$langs->trans("RefuseOrder").'</a>';
|
||||
if ($user->rights->fournisseur->commande->valider)
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&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.'&action=cancel">'.$langs->trans("CancelOrder").'</a>';
|
||||
if ($user->rights->fournisseur->commande->approuver)
|
||||
{
|
||||
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&action=approve">'.$langs->trans("ApproveOrder").'</a>';
|
||||
|
||||
print '<a class="butAction" href="fiche.php?id='.$commande->id.'&action=refuse">'.$langs->trans("RefuseOrder").'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($commande->statut == 2)
|
||||
{
|
||||
if ($user->rights->fournisseur->commande->annuler)
|
||||
// Send
|
||||
if ($commande->statut == 2)
|
||||
{
|
||||
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&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.'&action=presend&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.'&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.'&action=reopen">'.$langs->trans("ReOpen").'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
// Delete
|
||||
if ($user->rights->fournisseur->commande->supprimer)
|
||||
{
|
||||
print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&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.'&action=delete">'.$langs->trans("Delete").'</a>';
|
||||
/**
|
||||
* Commander (action=commande)
|
||||
*/
|
||||
print '<br>';
|
||||
print '<form name="commande" action="fiche.php?id='.$commande->id.'&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[''] = ' ';
|
||||
$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);
|
||||
$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))
|
||||
if ($_GET['action'] == 'presend')
|
||||
{
|
||||
/**
|
||||
* Commander (action=commande)
|
||||
*/
|
||||
$ref = dol_sanitizeFileName($commande->ref);
|
||||
$file = $conf->fournisseur->commande->dir_output . '/' . $ref . '/' . $ref . '.pdf';
|
||||
|
||||
print '<br>';
|
||||
print '<form name="commande" action="fiche.php?id='.$commande->id.'&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_titre($langs->trans('SendOrderByMail'));
|
||||
|
||||
print '<tr><td>'.$langs->trans("OrderMode").'</td><td>';
|
||||
$formorder->select_methodes_commande($_POST["methodecommande"],"methodecommande",1);
|
||||
print '</td></tr>';
|
||||
// Cree l'objet formulaire mail
|
||||
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php');
|
||||
$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>';
|
||||
print '<tr><td align="center" colspan="2"><input type="submit" class="button" name="'.$langs->trans("Activate").'"></td></tr>';
|
||||
print '</table>';
|
||||
print '</form>';
|
||||
// Init list of files
|
||||
if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init')
|
||||
{
|
||||
$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[''] = ' ';
|
||||
$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>';
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -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 $db;
|
||||
var $menu_array;
|
||||
var $menu_array_after;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param db Handler d'acces base de donnee
|
||||
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
* \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->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');
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
@@ -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 $db;
|
||||
var $menu_array;
|
||||
var $menu_array_after;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param db Handler d'acces base de donnee
|
||||
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
* \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->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');
|
||||
|
||||
$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_CONTACT=0;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -27,9 +28,11 @@
|
||||
/**
|
||||
* 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;
|
||||
|
||||
@@ -62,7 +65,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
$_SESSION["leftmenuopened"]=$leftmenu;
|
||||
}
|
||||
} 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"]:'';
|
||||
}
|
||||
|
||||
@@ -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/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."/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/web.php", $langs->trans("WebServer"),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)
|
||||
{
|
||||
$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)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/soc.php?action=create", $langs->trans("MenuNewThirdParty"),1);
|
||||
if (! $conf->use_javascript_ajax) $newmenu->add(DOL_URL_ROOT."/soc.php?action=create&private=1",$langs->trans("MenuNewPrivateIndividual"),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."/societe/soc.php?action=create&private=1",$langs->trans("MenuNewPrivateIndividual"),1);
|
||||
}
|
||||
|
||||
if(is_dir("societe/groupe"))
|
||||
@@ -180,11 +183,10 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
|
||||
if ($user->societe_id == 0)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&action=create&type=f",$langs->trans("MenuNewSupplier"), 2, $user->rights->societe->creer && $user->rights->fournisseur->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&action=create&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."/contact/index.php?leftmenu=suppliers&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
|
||||
@@ -193,7 +195,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
$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."/soc.php?leftmenu=prospects&action=create&type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=prospects&action=create&type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer);
|
||||
//$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&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");
|
||||
$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&action=create&type=c", $langs->trans("MenuNewCustomer"), 2, $user->rights->societe->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&action=create&type=c", $langs->trans("MenuNewCustomer"), 2, $user->rights->societe->creer);
|
||||
//$newmenu->add(DOL_URL_ROOT."/contact/index.php?leftmenu=customers&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");
|
||||
|
||||
// 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&action=create&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&type=f", $langs->trans("Contacts"), 1, $user->rights->societe->contact->lire);
|
||||
}
|
||||
|
||||
// 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."/soc.php?leftmenu=prospects&action=create&type=p", $langs->trans("MenuNewProspect"), 1, $user->rights->societe->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=prospects&action=create&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);
|
||||
|
||||
if ($leftmenu=="prospects") $newmenu->add(DOL_URL_ROOT."/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&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&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."/soc.php?leftmenu=customers&action=create&type=c", $langs->trans("MenuNewCustomer"), 1, $user->rights->societe->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&action=create&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."/contact/index.php?leftmenu=customers&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");
|
||||
$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&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);
|
||||
@@ -299,7 +311,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
{
|
||||
$langs->load("orders");
|
||||
$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&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);
|
||||
@@ -315,7 +327,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
{
|
||||
$langs->load("orders");
|
||||
$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."/commande/stats/index.php?leftmenu=orders_suppliers&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");
|
||||
$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/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&mode=0", $langs->trans("MenuInactiveServices"), 2 ,$user->rights->contrat->lire);
|
||||
@@ -362,7 +374,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
// Security check
|
||||
if ($user->societe_id == 0)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&action=create&type=f",$langs->trans("NewSupplier"),1,$user->rights->societe->creer && $user->rights->fournisseur->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&action=create&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);
|
||||
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);
|
||||
if ($user->societe_id == 0)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=customers&action=create&type=c", $langs->trans("MenuNewCustomer"),1,$user->rights->societe->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=customers&action=create&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."/contact/index.php?leftmenu=customers&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&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&mainmenu=bank",$langs->trans("MenuBankCash"),0,$user->rights->banque->lire);
|
||||
}
|
||||
|
||||
// Rapports
|
||||
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&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&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&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&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&action=new&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&mainmenu=bank",$langs->trans("MenuChequesReceipts"),1,$user->rights->banque->cheque);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Menu PRODUITS-SERVICES
|
||||
*/
|
||||
if ($mainmenu == 'products')
|
||||
{
|
||||
// Products
|
||||
if ($conf->produit->enabled)
|
||||
if ($conf->product->enabled)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=product&type=0", $langs->trans("Products"), 0, $user->rights->produit->lire);
|
||||
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&type=0", $langs->trans("List"), 1, $user->rights->produit->lire);
|
||||
if (! empty($conf->droitpret->enabled))
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/product/fiche.php?leftmenu=product&action=create&type=0&canvas=livre", $langs->trans("NewBook"), 1, $user->rights->produit->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&type=0&canvas=livre", $langs->trans("BookList"), 1, $user->rights->produit->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/product/fiche.php?leftmenu=product&action=create&type=0&canvas=livre@droitpret", $langs->trans("NewBook"), 1, $user->rights->produit->creer);
|
||||
$newmenu->add(DOL_URL_ROOT."/product/liste.php?leftmenu=product&type=0&canvas=livre@droitpret", $langs->trans("BookList"), 1, $user->rights->produit->creer);
|
||||
}
|
||||
}
|
||||
if ($conf->propal->enabled)
|
||||
@@ -630,7 +658,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
if ($conf->expedition->enabled)
|
||||
{
|
||||
$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/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
|
||||
if ($user->societe_id == 0)
|
||||
{
|
||||
$newmenu->add(DOL_URL_ROOT."/soc.php?leftmenu=suppliers&action=create&type=f",$langs->trans("NewSupplier"), 1, $user->rights->societe->creer && $user->rights->fournisseur->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/societe/soc.php?leftmenu=suppliers&action=create&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."/contact/index.php?leftmenu=suppliers&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");
|
||||
$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);
|
||||
}
|
||||
|
||||
@@ -694,7 +722,7 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
}
|
||||
|
||||
/*
|
||||
* Menu PROJETS
|
||||
* Menu PROJECTS
|
||||
*/
|
||||
if ($mainmenu == 'project')
|
||||
{
|
||||
@@ -702,23 +730,27 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
{
|
||||
$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/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/index.php?leftmenu=projects", $langs->trans("Projects"), 0, $user->rights->projet->lire);
|
||||
$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/liste.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire);
|
||||
// All project i have permission on
|
||||
$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/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/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/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);
|
||||
$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/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer);
|
||||
// All project i have permission on
|
||||
$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.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $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&mainmenu=members",$langs->trans("Members"),0,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/fiche.php?leftmenu=members&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&statut=-1",$langs->trans("MenuMembersToValidate"),1,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1",$langs->trans("MenuMembersValidated"),1,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate",$langs->trans("MenuMembersUpToDate"),1,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),1,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=0",$langs->trans("MenuMembersResiliated"),1,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=-1",$langs->trans("MenuMembersToValidate"),2,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1",$langs->trans("MenuMembersValidated"),2,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate",$langs->trans("MenuMembersUpToDate"),2,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate",$langs->trans("MenuMembersNotUpToDate"),2,$user->rights->adherent->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=0",$langs->trans("MenuMembersResiliated"),2,$user->rights->adherent->lire);
|
||||
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/index.php?leftmenu=members&mainmenu=members",$langs->trans("Subscriptions"),0,$user->rights->adherent->cotisation->lire);
|
||||
$newmenu->add(DOL_URL_ROOT."/adherents/liste.php?leftmenu=members&statut=-1,1&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 ($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&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&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 ($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
|
||||
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');
|
||||
$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
|
||||
*/
|
||||
if ($mainmenu) {
|
||||
$menu_array=$newmenu->liste;
|
||||
}
|
||||
//var_dump($menu_array_before);exit;
|
||||
//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
|
||||
$alt=0;
|
||||
if (is_array($menu_array))
|
||||
{
|
||||
$contenu = 0;
|
||||
for ($i = 0 ; $i < sizeof($menu_array) ; $i++)
|
||||
{
|
||||
$alt++;
|
||||
if ($menu_array[$i]['level']==0)
|
||||
if (empty($menu_array[$i]['level']))
|
||||
{
|
||||
if (($alt%2==0))
|
||||
{
|
||||
@@ -887,7 +908,6 @@ function print_left_eldy_menu($db,$menu_array)
|
||||
// Menu niveau 0
|
||||
if ($menu_array[$i]['level'] == 0)
|
||||
{
|
||||
if ($contenu == 1) print '<div class="menu_fin"></div>'."\n";
|
||||
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";
|
||||
@@ -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_top"></div>'."\n";
|
||||
}
|
||||
// Menu niveau > 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'])
|
||||
{
|
||||
print '<div class="menu_contenu">';
|
||||
print $tabstring.'<a class="vsmenu" href="'.$menu_array[$i]['url'].'"'.($menu_array[$i]['target']?' target="'.$menu_array[$i]['target'].'"':'').'>';
|
||||
print $tabstring;
|
||||
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 '</a>';
|
||||
if ($menu_array[$i]['url']) print '</a>';
|
||||
// If title is not pure text and contains a table, no carriage return added
|
||||
if (! strstr($menu_array[$i]['titre'],'<table')) print '<br>';
|
||||
print '</div>'."\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<div class="menu_contenu">';
|
||||
print $tabstring.'<font class="vsmenudisabled">'.$menu_array[$i]['titre'].'</font><br>';
|
||||
print '</div>'."\n";
|
||||
}
|
||||
print '</div>'."\n";
|
||||
}
|
||||
|
||||
|
||||
if ($i == (sizeof($menu_array)-1) || $menu_array[$i+1]['level']==0)
|
||||
// If next is a new block or end
|
||||
if (empty($menu_array[$i+1]['level']))
|
||||
{
|
||||
print '<div class="menu_end"></div>'."\n";
|
||||
print "</div>\n";
|
||||
}
|
||||
}
|
||||
if ($contenu == 1) print '<div class="menu_fin"></div>'."\n";
|
||||
}
|
||||
|
||||
return sizeof($menu_array);
|
||||
|
||||
@@ -37,20 +37,24 @@
|
||||
*/
|
||||
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 $db;
|
||||
var $menu_array;
|
||||
var $menu_array_after;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param db Handler d'acces base de donnee
|
||||
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
* \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->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');
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
@@ -36,20 +36,24 @@
|
||||
*/
|
||||
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 $db;
|
||||
var $menu_array;
|
||||
var $menu_array_after;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param db Handler d'acces base de donnee
|
||||
* \param menu_array Tableau des entree de menu defini dans les fichier pre.inc.php
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
* \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->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');
|
||||
|
||||
$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_CONTACT=0;
|
||||
|
||||
@@ -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 $db;
|
||||
var $menu_array;
|
||||
var $menu_array_after;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructor
|
||||
* \param db Dabatase handler
|
||||
* \param menu_array Menu array that you will override in showmenu() function
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
* \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->menu_array=$menu_array;
|
||||
$this->menu_array_after=$menu_array_after;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +61,7 @@ class MenuLeft {
|
||||
// ***** START *****
|
||||
|
||||
$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/modules.php", $langs->trans("Modules"),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++)
|
||||
{
|
||||
$alt++;
|
||||
if ($this->menu_array[$i]['level']==0) {
|
||||
if (empty($this->menu_array[$i]['level']))
|
||||
{
|
||||
if (($alt%2==0))
|
||||
{
|
||||
print '<div class="blockvmenuimpair">'."\n";
|
||||
@@ -90,36 +97,47 @@ class MenuLeft {
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->menu_array[$i]['level']==0) {
|
||||
if ($this->menu_array[$i]['enabled'])
|
||||
print '<a class="vmenu" href="'.$this->menu_array[$i]['url'].'">'.$this->menu_array[$i]['titre'].'</a><br>';
|
||||
else
|
||||
print '<font class="vmenudisabled">'.$this->menu_array[$i]['titre'].'</font><br>';
|
||||
}
|
||||
if ($this->menu_array[$i]['level']==1) {
|
||||
if ($this->menu_array[$i]['enabled'])
|
||||
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']==2) {
|
||||
if ($this->menu_array[$i]['enabled'])
|
||||
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']==3) {
|
||||
if ($this->menu_array[$i]['enabled'])
|
||||
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>';
|
||||
// Place tabulation
|
||||
$tabstring='';
|
||||
$tabul=($this->menu_array[$i]['level'] - 1);
|
||||
if ($tabul > 0)
|
||||
{
|
||||
for ($j=0; $j < $tabul; $j++)
|
||||
{
|
||||
$tabstring.=' ';
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->menu_array[$i]['level'] == 0) {
|
||||
if ($this->menu_array[$i]['enabled'])
|
||||
{
|
||||
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 '<div class="menu_titre">'.$tabstring.'<font class="vmenudisabled">'.$this->menu_array[$i]['titre'].'</font></div>'."\n";
|
||||
}
|
||||
print '<div class="menu_top"></div>'."\n";
|
||||
}
|
||||
|
||||
if ($i == (sizeof($this->menu_array)-1) || $this->menu_array[$i+1]['level']==0) {
|
||||
print "</div>\n";
|
||||
}
|
||||
}
|
||||
if ($this->menu_array[$i]['level'] > 0) {
|
||||
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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
/* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2008 Regis Houssin <regis@dolibarr.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
|
||||
* 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."/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/functions2.lib.php");
|
||||
|
||||
@@ -94,6 +95,8 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$this->postotalht=174;
|
||||
|
||||
$this->tva=array();
|
||||
$this->localtax1=array();
|
||||
$this->localtax2=array();
|
||||
$this->atleastoneratenotnull=0;
|
||||
$this->atleastonediscount=0;
|
||||
}
|
||||
@@ -101,7 +104,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
|
||||
/**
|
||||
* \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
|
||||
* \return int 1=ok, 0=ko
|
||||
*/
|
||||
@@ -125,7 +128,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
if (! is_object($fac))
|
||||
{
|
||||
$id = $fac;
|
||||
$fac = new Facture($this->db,"",$id);
|
||||
$fac = new Facture($this->db);
|
||||
$ret=$fac->fetch($id);
|
||||
}
|
||||
|
||||
@@ -147,7 +150,6 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$dir = $conf->facture->dir_output . "/" . $facref;
|
||||
$file = $dir . "/" . $facref . ".pdf";
|
||||
}
|
||||
|
||||
if (! file_exists($dir))
|
||||
{
|
||||
if (create_exdir($dir) < 0)
|
||||
@@ -183,7 +185,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$pdf->SetTitle($outputlangs->convToOutputCharset($fac->ref));
|
||||
$pdf->SetSubject($outputlangs->transnoentities("Invoice"));
|
||||
$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"));
|
||||
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
|
||||
$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) $localtax1ligne-=($localtax1ligne*$fac->remise_percent)/100;
|
||||
if ($fac->remise_percent) $localtax2ligne-=($localtax2ligne*$fac->remise_percent)/100;
|
||||
|
||||
$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.='*';
|
||||
$this->tva[$vatrate] += $tvaligne;
|
||||
$this->localtax1[$localtax1rate]+=$localtax1ligne;
|
||||
$this->localtax2[$localtax2rate]+=$localtax2ligne;
|
||||
|
||||
$nexY+=2; // Passe espace entre les lignes
|
||||
|
||||
@@ -476,7 +489,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
}
|
||||
|
||||
// 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.= "WHERE pf.fk_paiement = p.rowid and pf.fk_facture = ".$fac->id." ";
|
||||
$sql.= "ORDER BY p.datep";
|
||||
@@ -490,7 +503,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$row = $this->db->fetch_row($resql);
|
||||
|
||||
$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->MultiCell(20, 3, price($row[1]), 0, 'L', 0);
|
||||
$pdf->SetXY ($tab3_posx+41, $tab3_top+$y);
|
||||
@@ -644,7 +657,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
|
||||
$pdf->SetXY($this->marge_gauche, $posy);
|
||||
$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;
|
||||
}
|
||||
}
|
||||
@@ -683,7 +696,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
*/
|
||||
function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs)
|
||||
{
|
||||
global $conf;
|
||||
global $conf,$mysoc;
|
||||
|
||||
$tab2_top = $posy;
|
||||
$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->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||
$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;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$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)
|
||||
{
|
||||
@@ -1014,6 +1105,8 @@ class pdf_crabe extends ModelePDFFactures
|
||||
|
||||
if ($conf->propal->enabled)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php");
|
||||
|
||||
$outputlangs->load('propal');
|
||||
foreach($object->linked_object as $key => $val)
|
||||
{
|
||||
@@ -1038,6 +1131,8 @@ class pdf_crabe extends ModelePDFFactures
|
||||
// TODO mutualiser
|
||||
if ($conf->commande->enabled)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/commande/class/commande.class.php");
|
||||
|
||||
$outputlangs->load('orders');
|
||||
foreach($object->linked_object as $key => $val)
|
||||
{
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* \file htdocs/includes/modules/member/card/pdf_standard.class.php
|
||||
* \ingroup adherent
|
||||
* \file htdocs/includes/modules/member/cards/pdf_standard.class.php
|
||||
* \ingroup member
|
||||
* \brief Fichier de la classe permettant d'editer au format PDF des etiquettes au format Avery ou personnalise
|
||||
* \author Steve Dillon
|
||||
* \author Laurent Passebecq
|
||||
@@ -150,7 +150,7 @@ class pdf_standard {
|
||||
$dir=$conf->adherent->dir_output;
|
||||
$file=get_exdir($idmember,2).$photomember;
|
||||
$photo=$dir.'/'.$file;
|
||||
if (! is_readable($photo)) $photo='';
|
||||
if (empty($photomember) || ! is_readable($photo)) $photo='';
|
||||
|
||||
// Define background image
|
||||
$backgroundimage='';
|
||||
@@ -415,7 +415,7 @@ class pdf_standard {
|
||||
$pdf->SetTitle($outputlangs->transnoentities('MembersCards'));
|
||||
$pdf->SetSubject($outputlangs->transnoentities("MembersCards"));
|
||||
$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));
|
||||
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
|
||||
|
||||
|
||||
200
htdocs/includes/modules/modProduct.class.php
Normal file
200
htdocs/includes/modules/modProduct.class.php
Normal 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);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -73,7 +73,7 @@ class modService extends DolibarrModules
|
||||
$this->requiredby = array("modContrat");
|
||||
|
||||
// Config pages
|
||||
$this->config_page_url = array("produit.php");
|
||||
$this->config_page_url = array("produit.php@product");
|
||||
$this->langfiles = array("products","companies","bills");
|
||||
|
||||
// Constants
|
||||
@@ -88,26 +88,26 @@ class modService extends DolibarrModules
|
||||
$this->rights_class = 'service';
|
||||
$r=0;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 531; // id 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][3] = 1; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'lire';
|
||||
$r++;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 532; // id 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][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'creer';
|
||||
$r++;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 534; // id 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][3] = 0; // La permission est-elle une permission par defaut
|
||||
$this->rights[$r][4] = 'supprimer';
|
||||
$r++;
|
||||
|
||||
$this->rights[$r][0] = 536; // id 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';
|
||||
$r++;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 538; // Must be same permission than in product module
|
||||
$this->rights[$r][1] = 'Exporter les services';
|
||||
$this->rights[$r][2] = 'r';
|
||||
$this->rights[$r][3] = 0;
|
||||
$this->rights[$r][4] = 'export';
|
||||
$r++;
|
||||
|
||||
|
||||
// Exports
|
||||
|
||||
@@ -18,465 +18,416 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/includes/modules/project/pdf/pdf_baleine.modules.php
|
||||
* \ingroup project
|
||||
* \brief Fichier de la classe permettant de generer les projets au modele Baleine
|
||||
* \author Regis Houssin
|
||||
* \version $Id$
|
||||
* \file htdocs/includes/modules/project/pdf/pdf_baleine.modules.php
|
||||
* \ingroup project
|
||||
* \brief Fichier de la classe permettant de generer les projets au modele Baleine
|
||||
* \author Regis Houssin
|
||||
* \version $Id$
|
||||
*/
|
||||
|
||||
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/tasks/task.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/projet/class/task.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
|
||||
|
||||
|
||||
/**
|
||||
* \class pdf_baleine
|
||||
* \brief Classe permettant de generer les projets au modele Baleine
|
||||
* \class pdf_baleine
|
||||
* \brief Classe permettant de generer les projets au modele Baleine
|
||||
*/
|
||||
|
||||
class pdf_baleine extends ModelePDFProjects
|
||||
{
|
||||
var $emetteur; // Objet societe qui emet
|
||||
|
||||
/**
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
*/
|
||||
function pdf_baleine($db)
|
||||
{
|
||||
global $conf,$langs,$mysoc;
|
||||
|
||||
$langs->load("main");
|
||||
$langs->load("projects");
|
||||
$langs->load("companies");
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "baleine";
|
||||
$this->description = $langs->trans("DocumentModelBaleine");
|
||||
|
||||
// Dimension page pour format A4
|
||||
$this->type = 'pdf';
|
||||
$this->page_largeur = 210;
|
||||
$this->page_hauteur = 297;
|
||||
$this->format = array($this->page_largeur,$this->page_hauteur);
|
||||
$this->marge_gauche=10;
|
||||
$this->marge_droite=10;
|
||||
$this->marge_haute=10;
|
||||
$this->marge_basse=10;
|
||||
|
||||
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
|
||||
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
|
||||
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||
|
||||
// Recupere emmetteur
|
||||
$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
|
||||
|
||||
// Defini position des colonnes
|
||||
$this->posxdesc=$this->marge_gauche+1;
|
||||
$this->posxcomm=120;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction generant le projet sur le disque
|
||||
* \param delivery Object project a generer
|
||||
* \param outputlangs Lang output object
|
||||
* \return int 1 if OK, <=0 if KO
|
||||
*/
|
||||
function write_file($object,$outputlangs)
|
||||
{
|
||||
global $user,$langs,$conf;
|
||||
|
||||
if (! is_object($outputlangs)) $outputlangs=$langs;
|
||||
// Force output charset to ISO, because, FPDF expect text encoded in ISO
|
||||
$sav_charset_output=$outputlangs->charset_output;
|
||||
$outputlangs->charset_output='ISO-8859-1';
|
||||
|
||||
$outputlangs->load("main");
|
||||
$outputlangs->load("dict");
|
||||
$outputlangs->load("companies");
|
||||
$outputlangs->load("projects");
|
||||
|
||||
if ($conf->projet->dir_output)
|
||||
{
|
||||
// If $object is id instead of object
|
||||
if (! is_object($object))
|
||||
{
|
||||
$id = $object;
|
||||
$object = new Project($this->db);
|
||||
$object->fetch($id);
|
||||
|
||||
if ($result < 0)
|
||||
{
|
||||
dol_print_error($db,$object->error);
|
||||
}
|
||||
}
|
||||
|
||||
$nblignes = sizeof($object->lines);
|
||||
|
||||
$objectref = dol_sanitizeFileName($object->ref);
|
||||
$dir = $conf->projet->dir_output;
|
||||
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref;
|
||||
$file = $dir . "/" . $objectref . ".pdf";
|
||||
|
||||
if (! file_exists($dir))
|
||||
{
|
||||
if (create_exdir($dir) < 0)
|
||||
{
|
||||
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Protection et encryption du pdf
|
||||
if ($conf->global->PDF_SECURITY_ENCRYPTION)
|
||||
{
|
||||
$pdf=new FPDI_Protection('P','mm',$this->format);
|
||||
$pdfrights = array('print'); // Ne permet que l'impression du document
|
||||
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
|
||||
$pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
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);
|
||||
|
||||
$object->lines=$tasksarray;
|
||||
$nblignes=sizeof($object->lines);
|
||||
|
||||
$pdf->Open();
|
||||
$pagenb=0;
|
||||
$pdf->SetDrawColor(128,128,128);
|
||||
|
||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||
$pdf->SetSubject($outputlangs->transnoentities("Project"));
|
||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->fullname));
|
||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project"));
|
||||
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
|
||||
|
||||
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||
$pdf->SetAutoPageBreak(1,0);
|
||||
|
||||
// New page
|
||||
$pdf->AddPage();
|
||||
$pagenb++;
|
||||
$this->_pagehead($pdf, $object, 1, $outputlangs);
|
||||
$pdf->SetFont('Arial','', 9);
|
||||
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
|
||||
$tab_top = 50;
|
||||
$tab_height = 210;
|
||||
|
||||
// Affiche notes
|
||||
if (! empty($object->note_public))
|
||||
{
|
||||
$tab_top = 48;
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page
|
||||
$pdf->SetXY ($this->posxdesc-1, $tab_top);
|
||||
$pdf->MultiCell(190, 3, $outputlangs->convToOutputCharset($object->note_public), 0, 'J');
|
||||
$nexY = $pdf->GetY();
|
||||
$height_note=$nexY-$tab_top;
|
||||
|
||||
// Rect prend une longueur en 3eme param
|
||||
$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);
|
||||
|
||||
$tab_height = $tab_height - $height_note;
|
||||
$tab_top = $nexY+6;
|
||||
}
|
||||
else
|
||||
{
|
||||
$height_note=0;
|
||||
}
|
||||
|
||||
$iniY = $tab_top + 7;
|
||||
$curY = $tab_top + 7;
|
||||
$nexY = $tab_top + 7;
|
||||
|
||||
// Boucle sur les lignes
|
||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||
{
|
||||
$curY = $nexY;
|
||||
|
||||
// Description of ligne
|
||||
$ref=$object->lines[$i]->ref;
|
||||
$libelleline=$object->lines[$i]->label;
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page
|
||||
|
||||
$pdf->writeHTMLCell(108, 3, $this->posxdesc-1, $curY, $outputlangs->convToOutputCharset($ref), 0, 1);
|
||||
$pdf->writeHTMLCell(108, 3, $this->posxdesc+10, $curY, $outputlangs->convToOutputCharset($libelleline), 0, 1);
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // On repositionne la police par defaut
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
$nexY+=2; // Passe espace entre les lignes
|
||||
|
||||
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
||||
if ($i < ($nblignes - 1)) // If it's not last line
|
||||
{
|
||||
//on recupere la description du produit suivant
|
||||
$follow_descproduitservice = $object->lines[$i+1]->label;
|
||||
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
||||
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
|
||||
}
|
||||
else // If it's last line
|
||||
{
|
||||
$nblineFollowDesc = 0;
|
||||
}
|
||||
|
||||
if (($nexY+$nblineFollowDesc) > ($tab_top+$tab_height) && $i < ($nblignes - 1))
|
||||
{
|
||||
$this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs);
|
||||
|
||||
$this->_pagefoot($pdf, $object, $outputlangs);
|
||||
|
||||
// New page
|
||||
$pdf->AddPage();
|
||||
$pagenb++;
|
||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||
$pdf->SetFont('Arial','', 9);
|
||||
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
|
||||
$nexY = $tab_top_newpage + 7;
|
||||
}
|
||||
}
|
||||
|
||||
// Show square
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
|
||||
$bottomlasttab=$tab_top + $tab_height + 1;
|
||||
|
||||
/*
|
||||
* Pied de page
|
||||
*/
|
||||
$this->_pagefoot($pdf,$object,$outputlangs);
|
||||
$pdf->AliasNbPages();
|
||||
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
$this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* \brief Affiche la grille des lignes
|
||||
* \param pdf objet PDF
|
||||
*/
|
||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
||||
{
|
||||
global $conf,$mysoc;
|
||||
|
||||
// Montants exprimes en (en tab_top - 1)
|
||||
$pdf->SetTextColor(0,0,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);
|
||||
|
||||
$pdf->SetDrawColor(128,128,128);
|
||||
|
||||
// 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);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
|
||||
$pdf->SetXY ($this->posxdesc-1, $tab_top+2);
|
||||
$pdf->MultiCell(80,2, $outputlangs->transnoentities("Tasks"),'','L');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Affiche en-tete bon livraison
|
||||
* \param pdf objet PDF
|
||||
* \param delivery object delivery
|
||||
* \param showadress 0=non, 1=oui
|
||||
*/
|
||||
function _pagehead(&$pdf, $object, $showadress=1, $outputlangs)
|
||||
{
|
||||
global $langs,$conf,$mysoc;
|
||||
|
||||
pdf_pagehead($pdf,$outputlangs,$pdf->page_hauteur);
|
||||
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->SetFont('Arial','B',13);
|
||||
|
||||
$posy=$this->marge_haute;
|
||||
|
||||
$pdf->SetXY($this->marge_gauche,$posy);
|
||||
|
||||
// Logo
|
||||
$logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo;
|
||||
if ($mysoc->logo)
|
||||
{
|
||||
if (is_readable($logo))
|
||||
{
|
||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, 24);
|
||||
}
|
||||
else
|
||||
{
|
||||
$pdf->SetTextColor(200,0,0);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L');
|
||||
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
|
||||
}
|
||||
}
|
||||
else $pdf->MultiCell(100, 4, $this->emetteur->nom, 0, 'L');
|
||||
|
||||
$pdf->SetFont('Arial','B',13);
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Project")." ".$outputlangs->convToOutputCharset($object->ref), '' , 'R');
|
||||
$pdf->SetFont('Arial','',12);
|
||||
|
||||
$posy+=6;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateStart")." : " . dol_print_date($object->date_start,'day',false,$outputlangs,true), '', 'R');
|
||||
$posy+=6;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
|
||||
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
|
||||
// Add list of linked orders
|
||||
// TODO mutualiser
|
||||
$object->load_object_linked();
|
||||
|
||||
if ($conf->commande->enabled)
|
||||
{
|
||||
$outputlangs->load('orders');
|
||||
foreach($object->linked_object as $key => $val)
|
||||
{
|
||||
if ($key == 'commande')
|
||||
{
|
||||
for ($i = 0; $i<sizeof($val);$i++)
|
||||
{
|
||||
$newobject=new Commande($this->db);
|
||||
$result=$newobject->fetch($val[$i]);
|
||||
if ($result >= 0)
|
||||
{
|
||||
$posy+=4;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$text=$newobject->ref;
|
||||
if ($newobject->ref_client) $text.=' ('.$newobject->ref_client.')';
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : ".$outputlangs->transnoentities($text), '', 'R');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($showadress)
|
||||
{
|
||||
// Emetteur
|
||||
/* $posy=42;
|
||||
$hautcadre=40;
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->SetXY($this->marge_gauche,$posy-5);
|
||||
$pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":");
|
||||
|
||||
|
||||
$pdf->SetXY($this->marge_gauche,$posy);
|
||||
$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');
|
||||
|
||||
// Sender properties
|
||||
$carac_emetteur = pdf_build_address($outputlangs,$this->emetteur);
|
||||
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$pdf->SetXY($this->marge_gauche+2,$posy+9);
|
||||
$pdf->MultiCell(80, 3, $carac_emetteur);
|
||||
|
||||
// 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);
|
||||
}
|
||||
var $emetteur; // Objet societe qui emet
|
||||
|
||||
/**
|
||||
* \brief Constructor
|
||||
* \param db Database handler
|
||||
*/
|
||||
function pdf_baleine($db)
|
||||
{
|
||||
global $conf,$langs,$mysoc;
|
||||
|
||||
$langs->load("main");
|
||||
$langs->load("projects");
|
||||
$langs->load("companies");
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "baleine";
|
||||
$this->description = $langs->trans("DocumentModelBaleine");
|
||||
|
||||
// Dimension page pour format A4
|
||||
$this->type = 'pdf';
|
||||
$this->page_largeur = 210;
|
||||
$this->page_hauteur = 297;
|
||||
$this->format = array($this->page_largeur,$this->page_hauteur);
|
||||
$this->marge_gauche=10;
|
||||
$this->marge_droite=10;
|
||||
$this->marge_haute=10;
|
||||
$this->marge_basse=10;
|
||||
|
||||
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
|
||||
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
|
||||
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||
|
||||
// Recupere emmetteur
|
||||
$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
|
||||
|
||||
// Defini position des colonnes
|
||||
$this->posxref=$this->marge_gauche+1;
|
||||
$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
|
||||
* \return int 1 if OK, <=0 if KO
|
||||
*/
|
||||
function write_file($object,$outputlangs)
|
||||
{
|
||||
global $user,$langs,$conf;
|
||||
|
||||
if (! is_object($outputlangs)) $outputlangs=$langs;
|
||||
// Force output charset to ISO, because, FPDF expect text encoded in ISO
|
||||
$sav_charset_output=$outputlangs->charset_output;
|
||||
$outputlangs->charset_output='ISO-8859-1';
|
||||
|
||||
$outputlangs->load("main");
|
||||
$outputlangs->load("dict");
|
||||
$outputlangs->load("companies");
|
||||
$outputlangs->load("projects");
|
||||
|
||||
if ($conf->projet->dir_output)
|
||||
{
|
||||
// If $object is id instead of object
|
||||
if (! is_object($object))
|
||||
{
|
||||
$id = $object;
|
||||
$object = new Project($this->db);
|
||||
$object->fetch($id);
|
||||
|
||||
if ($result < 0)
|
||||
{
|
||||
dol_print_error($db,$object->error);
|
||||
}
|
||||
}
|
||||
|
||||
$nblignes = sizeof($object->lines);
|
||||
|
||||
$objectref = dol_sanitizeFileName($object->ref);
|
||||
$dir = $conf->projet->dir_output;
|
||||
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref;
|
||||
$file = $dir . "/" . $objectref . ".pdf";
|
||||
|
||||
if (! file_exists($dir))
|
||||
{
|
||||
if (create_exdir($dir) < 0)
|
||||
{
|
||||
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Protection et encryption du pdf
|
||||
if ($conf->global->PDF_SECURITY_ENCRYPTION)
|
||||
{
|
||||
$pdf=new FPDI_Protection('P','mm',$this->format);
|
||||
$pdfrights = array('print'); // Ne permet que l'impression du document
|
||||
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
|
||||
$pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
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);
|
||||
|
||||
$object->lines=$tasksarray;
|
||||
$nblignes=sizeof($object->lines);
|
||||
|
||||
$pdf->Open();
|
||||
$pagenb=0;
|
||||
$pdf->SetDrawColor(128,128,128);
|
||||
|
||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||
$pdf->SetSubject($outputlangs->transnoentities("Project"));
|
||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Project"));
|
||||
if ($conf->global->MAIN_DISABLE_PDF_COMPRESSION) $pdf->SetCompression(false);
|
||||
|
||||
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||
$pdf->SetAutoPageBreak(1,0);
|
||||
|
||||
// New page
|
||||
$pdf->AddPage();
|
||||
$pagenb++;
|
||||
$this->_pagehead($pdf, $object, 1, $outputlangs);
|
||||
$pdf->SetFont('Arial','', 9);
|
||||
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
|
||||
$tab_top = 50;
|
||||
$tab_height = 200;
|
||||
$tab_top_newpage = 40;
|
||||
$tab_height_newpage = 210;
|
||||
|
||||
// Affiche notes
|
||||
if (! empty($object->note_public))
|
||||
{
|
||||
$pdf->SetFont('Arial','', 9);
|
||||
$pdf->SetXY ($this->posxref-1, $tab_top-2);
|
||||
$pdf->MultiCell(190, 3, $outputlangs->convToOutputCharset($object->note_public), 0, 'J');
|
||||
$nexY = $pdf->GetY();
|
||||
$height_note=$nexY-($tab_top-2);
|
||||
|
||||
// Rect prend une longueur en 3eme param
|
||||
$pdf->SetDrawColor(192,192,192);
|
||||
$pdf->Rect($this->marge_gauche, $tab_top-3, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1);
|
||||
|
||||
$tab_height = $tab_height - $height_note;
|
||||
$tab_top = $nexY+6;
|
||||
}
|
||||
else
|
||||
{
|
||||
$height_note=0;
|
||||
}
|
||||
|
||||
$iniY = $tab_top + 7;
|
||||
$curY = $tab_top + 7;
|
||||
$nexY = $tab_top + 7;
|
||||
|
||||
// Boucle sur les lignes
|
||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||
{
|
||||
$curY = $nexY;
|
||||
|
||||
// Description of ligne
|
||||
$ref=$object->lines[$i]->ref;
|
||||
$libelleline=$object->lines[$i]->label;
|
||||
$progress=$object->lines[$i]->progress.'%';
|
||||
$datestart=dol_print_date($object->lines[$i]->date_start,'day');
|
||||
$dateend=dol_print_date($object->lines[$i]->date_end,'day');
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gerer multi-page
|
||||
|
||||
$pdf->SetXY($this->posxref, $curY);
|
||||
$pdf->MultiCell(60, 3, $outputlangs->convToOutputCharset($ref), 0, 'L');
|
||||
$pdf->SetXY($this->posxlabel, $curY);
|
||||
$pdf->MultiCell(108, 3, $outputlangs->convToOutputCharset($libelleline), 0, 'L');
|
||||
$pdf->SetXY($this->posxprogress, $curY);
|
||||
$pdf->MultiCell(16, 3, $progress, 0, 'L');
|
||||
$pdf->SetXY($this->posxdatestart, $curY);
|
||||
$pdf->MultiCell(20, 3, $datestart, 0, 'L');
|
||||
$pdf->SetXY($this->posxdateend, $curY);
|
||||
$pdf->MultiCell(20, 3, $dateend, 0, 'L');
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // On repositionne la police par defaut
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
$nexY+=2; // Passe espace entre les lignes
|
||||
|
||||
// Cherche nombre de lignes a venir pour savoir si place suffisante
|
||||
if ($i < ($nblignes - 1)) // If it's not last line
|
||||
{
|
||||
//on recupere la description du produit suivant
|
||||
$follow_descproduitservice = $object->lines[$i+1]->label;
|
||||
//on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres)
|
||||
$nblineFollowDesc = (dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4);
|
||||
}
|
||||
else // If it's last line
|
||||
{
|
||||
$nblineFollowDesc = 0;
|
||||
}
|
||||
|
||||
if (($nexY+$nblineFollowDesc) > ($tab_top+$tab_height) && $i < ($nblignes - 1))
|
||||
{
|
||||
$this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY, $outputlangs);
|
||||
|
||||
$this->_pagefoot($pdf, $object, $outputlangs);
|
||||
|
||||
// New page
|
||||
$pdf->AddPage();
|
||||
$pagenb++;
|
||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||
$pdf->SetFont('Arial','', 9);
|
||||
$pdf->MultiCell(0, 3, '', 0, 'J'); // Set interline to 3
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
|
||||
$tab_top=$tab_top_newpage;
|
||||
$tab_height=$tab_height_newpage;
|
||||
|
||||
$nexY = $tab_top + 7;
|
||||
}
|
||||
}
|
||||
|
||||
// Show square
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
|
||||
$bottomlasttab=$tab_top + $tab_height + 1;
|
||||
|
||||
/*
|
||||
* Pied de page
|
||||
*/
|
||||
$this->_pagefoot($pdf,$object,$outputlangs);
|
||||
$pdf->AliasNbPages();
|
||||
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
$this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* \brief Affiche la grille des lignes
|
||||
* \param pdf objet PDF
|
||||
*/
|
||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
|
||||
{
|
||||
global $conf,$mysoc;
|
||||
|
||||
// Montants exprimes en (en tab_top - 1)
|
||||
$pdf->SetTextColor(0,0,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);
|
||||
|
||||
$pdf->SetDrawColor(128,128,128);
|
||||
|
||||
// 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);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
|
||||
$pdf->SetXY ($this->posxref-1, $tab_top+2);
|
||||
$pdf->MultiCell(80,2, $outputlangs->transnoentities("Tasks"),'','L');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Affiche en-tete bon livraison
|
||||
* \param pdf objet PDF
|
||||
* \param delivery object delivery
|
||||
* \param showadress 0=non, 1=oui
|
||||
*/
|
||||
function _pagehead(&$pdf, $object, $showadress=1, $outputlangs)
|
||||
{
|
||||
global $langs,$conf,$mysoc;
|
||||
|
||||
pdf_pagehead($pdf,$outputlangs,$pdf->page_hauteur);
|
||||
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->SetFont('Arial','B',13);
|
||||
|
||||
$posy=$this->marge_haute;
|
||||
|
||||
$pdf->SetXY($this->marge_gauche,$posy);
|
||||
|
||||
// Logo
|
||||
$logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo;
|
||||
if ($mysoc->logo)
|
||||
{
|
||||
if (is_readable($logo))
|
||||
{
|
||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, 24);
|
||||
}
|
||||
else
|
||||
{
|
||||
$pdf->SetTextColor(200,0,0);
|
||||
$pdf->SetFont('Arial','B',8);
|
||||
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L');
|
||||
$pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L');
|
||||
}
|
||||
}
|
||||
else $pdf->MultiCell(100, 4, $outputlangs->transnoentities($this->emetteur->nom), 0, 'L');
|
||||
|
||||
$pdf->SetFont('Arial','B',13);
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Project")." ".$outputlangs->convToOutputCharset($object->ref), '' , 'R');
|
||||
$pdf->SetFont('Arial','',12);
|
||||
|
||||
$posy+=6;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateStart")." : " . dol_print_date($object->date_start,'day',false,$outputlangs,true), '', 'R');
|
||||
$posy+=6;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateEnd")." : " . dol_print_date($object->date_end,'day',false,$outputlangs,true), '', 'R');
|
||||
|
||||
$pdf->SetTextColor(0,0,60);
|
||||
|
||||
// Add list of linked orders
|
||||
// TODO mutualiser
|
||||
$object->load_object_linked();
|
||||
|
||||
if ($conf->commande->enabled)
|
||||
{
|
||||
$outputlangs->load('orders');
|
||||
foreach($object->linked_object as $key => $val)
|
||||
{
|
||||
if ($key == 'commande')
|
||||
{
|
||||
for ($i = 0; $i<sizeof($val);$i++)
|
||||
{
|
||||
$newobject=new Commande($this->db);
|
||||
$result=$newobject->fetch($val[$i]);
|
||||
if ($result >= 0)
|
||||
{
|
||||
$posy+=4;
|
||||
$pdf->SetXY(100,$posy);
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$text=$newobject->ref;
|
||||
if ($newobject->ref_client) $text.=' ('.$newobject->ref_client.')';
|
||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefOrder")." : ".$outputlangs->transnoentities($text), '', 'R');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* \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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
* \brief Fichier de la classe des gestion lion des codes clients
|
||||
* \version $Id$
|
||||
@@ -109,7 +109,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
|
||||
$posindice=8;
|
||||
$sql = "SELECT MAX(SUBSTRING(".$field.",".$posindice.")) as max";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."societe";
|
||||
$sql.= " WHERE ".$field." LIKE '".$prefix."%'";
|
||||
$sql.= " WHERE ".$field." LIKE '".$prefix."____-%'";
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* 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
|
||||
* 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
|
||||
\brief Fichier de gestion des triggers phenix
|
||||
\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");
|
||||
|
||||
// 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.=$object->note;
|
||||
@@ -247,7 +247,7 @@ class InterfacePhenixsynchro
|
||||
$this->desc=$langs->transnoentities("InvoicePaidInDolibarr",$object->ref);
|
||||
$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);
|
||||
$langs->load("other");
|
||||
@@ -296,7 +296,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("Author").': '.$user->login;
|
||||
}
|
||||
@@ -310,7 +310,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("Author").': '.$user->login;
|
||||
}
|
||||
@@ -324,7 +324,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("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');
|
||||
@@ -340,7 +340,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("Author").': '.$user->login;
|
||||
}
|
||||
@@ -354,7 +354,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("Author").': '.$user->login;
|
||||
}
|
||||
@@ -368,7 +368,7 @@ class InterfacePhenixsynchro
|
||||
$this->duree=0;
|
||||
$this->texte=$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("Author").': '.$user->login;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -149,7 +149,7 @@ if ($_POST["action"] == "set" || preg_match('/upgrade/i',$_POST["action"]))
|
||||
$conf->setValues($db);
|
||||
|
||||
// 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->id=0;
|
||||
@@ -288,10 +288,11 @@ if ($_POST["action"] == "set")
|
||||
$fp = @fopen($lockfile, "w");
|
||||
if ($fp)
|
||||
{
|
||||
fwrite($fp, "This is a lock file to prevent use of install pages");
|
||||
fclose($fp);
|
||||
@chmod($lockfile, octdec(444));
|
||||
$createlock=1;
|
||||
if ($force_install_lockinstall == 1) $force_install_lockinstall=444; // For backward compatibility
|
||||
fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
|
||||
fclose($fp);
|
||||
@chmod($lockfile, octdec($force_install_lockinstall));
|
||||
$createlock=1;
|
||||
}
|
||||
}
|
||||
if (empty($createlock))
|
||||
@@ -311,7 +312,7 @@ if ($_POST["action"] == "set")
|
||||
{
|
||||
// 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("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 "<br>";
|
||||
|
||||
@@ -337,10 +338,11 @@ elseif (preg_match('/upgrade/i',$_POST["action"]))
|
||||
$fp = @fopen($lockfile, "w");
|
||||
if ($fp)
|
||||
{
|
||||
fwrite($fp, "This is a lock file to prevent use of install pages");
|
||||
fclose($fp);
|
||||
@chmod($lockfile, octdec(444));
|
||||
$createlock=1;
|
||||
if ($force_install_lockinstall == 1) $force_install_lockinstall=444; // For backward compatibility
|
||||
fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
|
||||
fclose($fp);
|
||||
@chmod($lockfile, octdec($force_install_lockinstall));
|
||||
$createlock=1;
|
||||
}
|
||||
}
|
||||
if (empty($createlock))
|
||||
|
||||
@@ -198,6 +198,15 @@ print $langs->trans("Examples").":<br>";
|
||||
</ul>
|
||||
</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 -->
|
||||
|
||||
<tr>
|
||||
@@ -394,7 +403,7 @@ while (($file = readdir($handle))!==false)
|
||||
<script type="text/javascript" language="javascript">
|
||||
|
||||
function checkDatabaseName(databasename) {
|
||||
if (databasename.match(/[-;\.]/)) { return false; }
|
||||
if (databasename.match(/[;\.]/)) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,11 @@
|
||||
|
||||
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)
|
||||
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);
|
||||
@@ -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 (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)
|
||||
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);
|
||||
@@ -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 ( 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)
|
||||
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);
|
||||
@@ -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 ( 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,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)
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 71, 7, '17.5','0','VAT standard rate',1);
|
||||
|
||||
@@ -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_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;
|
||||
|
||||
|
||||
-- Not used. Just to be compatible with upgrade process of higher versions
|
||||
alter table llx_const add column entity integer DEFAULT 1 NOT NULL;
|
||||
|
||||
@@ -1176,3 +1176,9 @@ ALTER TABLE llx_commande_fournisseurdet MODIFY fk_product integer;
|
||||
-- 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_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';
|
||||
|
||||
@@ -345,3 +345,9 @@ update llx_societe set fk_typent = 0 where fk_typent is null;
|
||||
|
||||
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';
|
||||
|
||||
|
||||
@@ -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 (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';
|
||||
|
||||
@@ -135,3 +135,7 @@ ALTER TABLE llx_usergroup DROP INDEX nom;
|
||||
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_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';
|
||||
|
||||
@@ -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 uk_bank_class_lineid;
|
||||
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';
|
||||
|
||||
@@ -6,14 +6,45 @@
|
||||
-- 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 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);
|
||||
|
||||
-- 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_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 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_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 localtax2 double(24,8) DEFAULT 0 after localtax1;
|
||||
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 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 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_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 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 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 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;
|
||||
|
||||
-- custom list
|
||||
-- Custom list
|
||||
DROP 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
|
||||
)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),
|
||||
(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),
|
||||
@@ -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);
|
||||
|
||||
|
||||
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;
|
||||
|
||||
-- add milestone module
|
||||
-- Drop old tables
|
||||
DROP TABLE llx_projet_milestone;
|
||||
create table llx_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_projet drop column fk_milestone;
|
||||
|
||||
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_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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
@@ -22,16 +22,8 @@
|
||||
create table llx_boxes_def
|
||||
(
|
||||
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
|
||||
tms timestamp,
|
||||
note text
|
||||
note varchar(130)
|
||||
)type=innodb;
|
||||
|
||||
--
|
||||
-- List of codes for the field entity
|
||||
--
|
||||
-- 1 : first company boxes
|
||||
-- 2 : second company boxes
|
||||
-- 3 : etc...
|
||||
--
|
||||
@@ -27,7 +27,7 @@
|
||||
include_once("./inc.php");
|
||||
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($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
|
||||
*/
|
||||
|
||||
pHeader('',"upgrade2",$_REQUEST['action'],'versionfrom='.$versionfrom.'&versionto='.$versionto);
|
||||
pHeader('',"upgrade2",isset($_REQUEST['action'])?$_REQUEST['action']:'','versionfrom='.$versionfrom.'&versionto='.$versionto);
|
||||
|
||||
$actiondone=0;
|
||||
|
||||
@@ -80,7 +80,7 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -112,13 +112,13 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
if ($db->connected == 1)
|
||||
{
|
||||
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"));
|
||||
$ok = 1;
|
||||
}
|
||||
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));
|
||||
$ok = 0;
|
||||
}
|
||||
@@ -128,13 +128,13 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
if($db->database_selected == 1)
|
||||
{
|
||||
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");
|
||||
$ok=1;
|
||||
}
|
||||
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));
|
||||
$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');
|
||||
if (sizeof($versioncommande) && sizeof($versionarray)
|
||||
@@ -279,9 +279,7 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
*/
|
||||
if ($ok)
|
||||
{
|
||||
if ($choix==1) $dir = "mysql/migration/";
|
||||
elseif ($choix==2) $dir = "pgsql/migration/";
|
||||
else $dir = "mssql/migration/";
|
||||
$dir = "mysql/migration/"; // We use mysql migration scripts whatever is database driver
|
||||
|
||||
$filelist=array();
|
||||
$i = 0;
|
||||
@@ -292,11 +290,18 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
# Recupere list fichier
|
||||
$filesindir=array();
|
||||
$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
|
||||
foreach($filesindir as $file)
|
||||
@@ -315,12 +320,12 @@ if (! isset($_GET["action"]) || preg_match('/upgrade/i',$_GET["action"]))
|
||||
foreach($filelist as $file)
|
||||
{
|
||||
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);
|
||||
|
||||
// Run sql script
|
||||
$ok=run_sql($dir.$file, 0);
|
||||
$ok=run_sql($dir.$file, 0, '', 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* 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) 2010 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
@@ -28,17 +28,17 @@
|
||||
include_once('./inc.php');
|
||||
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($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 . '/comm/propal/propal.class.php');
|
||||
require_once($dolibarr_main_document_root . '/contrat/contrat.class.php');
|
||||
require_once($dolibarr_main_document_root . '/commande/commande.class.php');
|
||||
require_once($dolibarr_main_document_root . '/fourn/fournisseur.commande.class.php');
|
||||
require_once($dolibarr_main_document_root . '/compta/facture/class/facture.class.php');
|
||||
require_once($dolibarr_main_document_root . '/comm/propal/class/propal.class.php');
|
||||
require_once($dolibarr_main_document_root . '/contrat/class/contrat.class.php');
|
||||
require_once($dolibarr_main_document_root . '/commande/class/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 . '/core/menubase.class.php');
|
||||
require_once($dolibarr_main_document_root . '/core/class/menubase.class.php');
|
||||
|
||||
$grant_query='';
|
||||
$etape = 2;
|
||||
@@ -214,8 +214,6 @@ if (isset($_POST['action']) && preg_match('/upgrade/i',$_POST["action"]))
|
||||
|
||||
migrate_links_transfert($db,$langs,$conf);
|
||||
|
||||
migrate_delete_old_files($db,$langs,$conf);
|
||||
|
||||
|
||||
// Script pour V2.2 -> V2.4
|
||||
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_module_menus($db,$langs,$conf);
|
||||
|
||||
|
||||
// Script pour V2.5 -> V2.6
|
||||
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_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.
|
||||
// La procedure etant concue pour pouvoir passer plusieurs fois quelquesoit la situation.
|
||||
$db->commit();
|
||||
$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>';
|
||||
@@ -1708,100 +1711,6 @@ function migrate_modeles($db,$langs,$conf)
|
||||
//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
|
||||
@@ -2227,6 +2136,7 @@ function migrate_menus($db,$langs,$conf)
|
||||
|
||||
/*
|
||||
* Migration du champ fk_adresse_livraison dans expedition
|
||||
* 2.6 -> 2.7
|
||||
*/
|
||||
function migrate_commande_deliveryaddress($db,$langs,$conf)
|
||||
{
|
||||
@@ -2760,9 +2670,14 @@ function migrate_project_task_time($db,$langs,$conf)
|
||||
{
|
||||
$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.= " task_duration = ".$newtime;
|
||||
@@ -2805,15 +2720,6 @@ function migrate_project_task_time($db,$langs,$conf)
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
if ($error == 0)
|
||||
{
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->rollback();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2823,7 +2729,6 @@ function migrate_project_task_time($db,$langs,$conf)
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
$db->rollback();
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2836,6 +2741,15 @@ function migrate_project_task_time($db,$langs,$conf)
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
if ($error == 0)
|
||||
{
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->rollback();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -3064,9 +2979,10 @@ function migrate_shipping_delivery2($db,$langs,$conf)
|
||||
$sqlSelect.= " WHERE l.rowid = el.fk_target";
|
||||
$sqlSelect.= " AND el.targettype = 'delivery'";
|
||||
$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
|
||||
$sqlSelect.= " AND (l.ref_customer IS NULL or l.ref_customer = '')";
|
||||
$sqlSelect.= " AND (l.date_delivery IS NULL or l.date_delivery = '')";
|
||||
$sqlSelect.= " AND (l.ref_customer IS NULL".($db->type!='pgsql'?" or l.ref_customer = ''":"").")";
|
||||
$sqlSelect.= " AND (l.date_delivery IS NULL".($db->type!='pgsql'?" or l.date_delivery = ''":"").")";
|
||||
|
||||
$resql = $db->query($sqlSelect);
|
||||
if ($resql)
|
||||
@@ -3082,7 +2998,7 @@ function migrate_shipping_delivery2($db,$langs,$conf)
|
||||
|
||||
$sqlUpdate = "UPDATE ".MAIN_DB_PREFIX."livraison SET";
|
||||
$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;
|
||||
|
||||
$result=$db->query($sqlUpdate);
|
||||
@@ -3120,7 +3036,7 @@ function migrate_shipping_delivery2($db,$langs,$conf)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* Migration directory
|
||||
*/
|
||||
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
|
||||
|
||||
On recherche facture incorrecte:
|
||||
|
||||
@@ -23,7 +23,7 @@ HTMLCharset=ولدت لمحارف صفحات هتمل
|
||||
DBStoringCharset=محارف قاعدة بيانات لتخزين البيانات
|
||||
DBSortingCharset=قاعدة بيانات محارف لفرز البيانات
|
||||
WarningModuleNotActive=نميطة <b>٪ ق</b> يجب تمكين
|
||||
WarningOnlyPermissionOfActivatedModules=فقط الأذونات المتعلقة بتنشيط وحدات تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية> الإعداد -> نمائط الصفحة.
|
||||
WarningOnlyPermissionOfActivatedModules=فقط الأذونات المتعلقة بتنشيط وحدات تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية> الإعداد -> نمائط الصفحة.
|
||||
DolibarrSetup=Dolibarr الإعداد
|
||||
DolibarrUser=Dolibarr المستخدم
|
||||
InternalUser=المستخدم الداخلي
|
||||
@@ -155,7 +155,7 @@ No=لا
|
||||
AutoDetectLang=اكتشاف (اللغة المتصفح)
|
||||
FeatureDisabledInDemo=سمة المعوقين في عرض
|
||||
Rights=أذونات
|
||||
BoxesDesc=صناديق منطقة الشاشة التي تظهر قطعة من المعلومات عن بعض الصفحات. يمكنك الاختيار بين عرض المربع أو عن طريق اختيار ليست هدفا في الصفحة والنقر على 'تفعيل' ، أو عن طريق النقر فوق مزبلة لتعطيله.
|
||||
BoxesDesc=صناديق منطقة الشاشة التي تظهر قطعة من المعلومات عن بعض الصفحات. يمكنك الاختيار بين عرض المربع أو عن طريق اختيار ليست هدفا في الصفحة والنقر على 'تفعيل' ، أو عن طريق النقر فوق مزبلة لتعطيله.
|
||||
OnlyActiveElementsAreShown=Only elements from <a href=إلا عناصر من <a href="modules.php">وحدات مكن</a> ترد.
|
||||
ModulesDesc=Dolibarr تحديد الوحدات التي تم تمكين وظيفة في مجال البرمجيات. وتتطلب بعض وحدات الأذونات ، يجب ان تمنح للمستخدمين ، وبعد أن تمكن وحدة.
|
||||
ModulesInterfaceDesc=فإن التفاعل بين وحدات Dolibarr يسمح لك بإضافة السمات الخارجية تعتمد على البرمجيات والنظم والخدمات.
|
||||
@@ -223,7 +223,7 @@ MenuAdmin=قائمة تحرير
|
||||
ThisIsProcessToFollow=هذا هو الإعداد لهذه العملية :
|
||||
StepNb=الخطوة ق ٪
|
||||
DownloadPackageFromWebSite=التحميل من الموقع حزمة ٪ s.
|
||||
UnpackPackageInDolibarrRoot=تفريغ الملف إلى مجموعة Dolibarr 'sجذور دليل <b>٪ ق</b>
|
||||
UnpackPackageInDolibarrRoot=تفريغ الملف إلى مجموعة Dolibarr 'sجذور دليل <b>٪ ق</b>
|
||||
SetupIsReadyForUse=الانتهاء من تركيب وDolibarr على استعداد لاستخدام هذا العنصر الجديد.
|
||||
CurrentVersion=Dolibarr النسخة الحالية
|
||||
CallUpdatePage=الذهاب إلى صفحة التحديثات وdatas هيكل قاعدة البيانات : ٪ s.
|
||||
@@ -245,12 +245,12 @@ UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس
|
||||
UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur.
|
||||
SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة
|
||||
UseACacheDelay=التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
|
||||
DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
|
||||
DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى
|
||||
DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
|
||||
DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى
|
||||
ModuleDisabled=نميطة المعوقين
|
||||
ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا
|
||||
ConfirmPurge=هل أنت متأكد من ذلك لتنفيذ تطهير؟ <br> وهذا من شأنه بالتأكيد حذف جميع بيانات ملفك بأي حال من الأحوال لترميمها (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...).
|
||||
Module0Name=& مجموعات المستخدمين
|
||||
Module0Name=& مجموعات المستخدمين
|
||||
Module0Desc=إدارة المستخدمين والمجموعات
|
||||
Module1Name=أطراف ثالثة
|
||||
Module1Desc=شركات الاتصالات وإدارة
|
||||
@@ -394,7 +394,7 @@ Permission94=تصدير المساهمات الاجتماعية
|
||||
Permission95=قراءة تقارير
|
||||
Permission96=ارسال الإعداد
|
||||
Permission97=قراءة ارسال الفواتير والمحاسبة
|
||||
Permission98=ارسال الفاتورة 'sخطوط المحاسبة
|
||||
Permission98=ارسال الفاتورة 'sخطوط المحاسبة
|
||||
Permission101=قراءة الإرسال
|
||||
Permission102=إنشاء / تعديل الإرسال
|
||||
Permission104=صحة الإرسال
|
||||
@@ -514,7 +514,6 @@ Permission1185=الموافقة على أوامر المورد
|
||||
Permission1186=من أجل المورد أوامر
|
||||
Permission1187=باستلام المورد أوامر
|
||||
Permission1188=وثيقة أوامر المورد
|
||||
Permission1189=المورد إلغاء أوامر
|
||||
Permission1201=ونتيجة للحصول على التصدير
|
||||
Permission1202=إنشاء / تعديل للتصدير
|
||||
Permission1231=قراءة فواتير الموردين
|
||||
@@ -557,7 +556,7 @@ VATReceivedOnly=سعر خاص لا تحمل
|
||||
VATManagement=إدارة الضريبة على القيمة المضافة
|
||||
VATIsNotUsedDesc=افتراضي المقترحة 0 ضريبة القيمة المضافة هو الذي يمكن أن يستخدم في حالات مثل الجمعيات والأفراد والشركات الصغيرة où.
|
||||
VATIsUsedExampleFR=في فرنسا ، فإن ذلك يعني وجود منظمات أو شركات حقيقية في النظام المالي (المبسطة حقيقية أو طبيعية حقيقية). نظام ضريبة القيمة المضافة هي التي أعلنت.
|
||||
VATIsNotUsedExampleFR=في فرنسا ، فإن ذلك يعني أن الجمعيات غير المعلنة ضريبة القيمة المضافة أو شركات أو مؤسسات المهن الحرة التي اختارت المشاريع الصغيرة النظام الضريبي (ضريبة القيمة المضافة في الانتخاب) ، ودفع ضريبة القيمة المضافة في الانتخاب دون أي إعلان من ضريبة القيمة المضافة. هذا الخيار سيتم عرض المرجعي "غير الضريبة على القيمة المضافة المطبقة -- الفن - 293B من المجموعة الاستشارية لاندونيسيا" على الفواتير.
|
||||
VATIsNotUsedExampleFR=في فرنسا ، فإن ذلك يعني أن الجمعيات غير المعلنة ضريبة القيمة المضافة أو شركات أو مؤسسات المهن الحرة التي اختارت المشاريع الصغيرة النظام الضريبي (ضريبة القيمة المضافة في الانتخاب) ، ودفع ضريبة القيمة المضافة في الانتخاب دون أي إعلان من ضريبة القيمة المضافة. هذا الخيار سيتم عرض المرجعي "غير الضريبة على القيمة المضافة المطبقة -- الفن - 293B من المجموعة الاستشارية لاندونيسيا" على الفواتير.
|
||||
LabelUsedByDefault=العلامة التي يستخدمها التقصير إذا لم يمكن العثور على ترجمة للقانون
|
||||
LabelOnDocuments=علامة على وثائق
|
||||
NbOfDays=ملاحظة : من الأيام
|
||||
@@ -568,7 +567,7 @@ UpdateRequired=Your system needs to be updated. To do this, click on <a href=ا
|
||||
Upgrade=ترقية
|
||||
AddExtensionThemeModuleOrOther=إضافة التمديد) الموضوع ، وحدة ،...)
|
||||
WebServer=خادم الويب
|
||||
DocumentRootServer=خادم الويب 'sالدليل الرئيسي
|
||||
DocumentRootServer=خادم الويب 'sالدليل الرئيسي
|
||||
DataRootServer=دليل ملفات البيانات
|
||||
IP=الملكية الفكرية
|
||||
Port=الميناء
|
||||
@@ -629,8 +628,8 @@ DoNotSuggestPaymentMode=لا توحي
|
||||
NoActiveBankAccountDefined=لا يعرف في حساب مصرفي نشط
|
||||
OwnerOfBankAccount=صاحب الحساب المصرفي ق ٪
|
||||
BankModuleNotActive=الحسابات المصرفية وحدة لا يمكن
|
||||
ShowBugTrackLink=وتظهر وصلة "تقرير خلل"
|
||||
ShowWorkBoard=وتظهر "طاولة العمل" على الصفحة الرئيسية
|
||||
ShowBugTrackLink=وتظهر وصلة "تقرير خلل"
|
||||
ShowWorkBoard=وتظهر "طاولة العمل" على الصفحة الرئيسية
|
||||
Alerts=تنبيهات
|
||||
Delays=التأخير
|
||||
DelayBeforeWarning=قبل التحذير من التأخير
|
||||
@@ -649,8 +648,8 @@ DelaysOfToleranceTransactionsToConciliate=تأخير التسامح (في يوم
|
||||
DelaysOfToleranceChequesToDeposit=تأخير التسامح (في يوم) في حالة تأهب قبل لإيداع الشيكات للقيام
|
||||
SetupDescription1=جميع البارامترات المتاحة في مجال الإعداد تسمح لك قبل البدء في الإعداد Dolibarr استخدامه.
|
||||
SetupDescription2=2 إن أهم الخطوات هي الإعداد 2 أول من غادر في إعداد القائمة ، وهذا يعني الشركة / المؤسسة صفحة إعداد صفحة إعداد وحدات :
|
||||
SetupDescription3=البارامترات في <b>إعداد</b> القائمة <b>--> الشركة / المؤسسة</b> المطلوب لأن مدخلات تستخدم المعلومات عن Dolibarr عرض وتعديل السلوك Dolibarr (على سبيل المثال لخصائص تتعلق بلدكم).
|
||||
SetupDescription4=البارامترات في <b>إعداد</b> القائمة <b>--> الوحدات</b> المطلوبة لأن Dolibarr ليست ثابتة تخطيط موارد المؤسسات وإدارة علاقات العملاء ولكن مبلغ من عدة وحدات ، وكلها مستقلة بشكل أو بآخر. انه فقط بعد تفعيل وحدات للاهتمام كنت في ذلك سترى ملامح وردت في القوائم.
|
||||
SetupDescription3=البارامترات في <b>إعداد</b> القائمة <b>--> الشركة / المؤسسة</b> المطلوب لأن مدخلات تستخدم المعلومات عن Dolibarr عرض وتعديل السلوك Dolibarr (على سبيل المثال لخصائص تتعلق بلدكم).
|
||||
SetupDescription4=البارامترات في <b>إعداد</b> القائمة <b>--> الوحدات</b> المطلوبة لأن Dolibarr ليست ثابتة تخطيط موارد المؤسسات وإدارة علاقات العملاء ولكن مبلغ من عدة وحدات ، وكلها مستقلة بشكل أو بآخر. انه فقط بعد تفعيل وحدات للاهتمام كنت في ذلك سترى ملامح وردت في القوائم.
|
||||
EventsSetup=الإعداد للمناسبات الجذوع
|
||||
LogEvents=مراجعة الحسابات الأحداث الأمنية
|
||||
Audit=المراجعة
|
||||
@@ -663,7 +662,7 @@ SystemAreaForAdminOnly=هذا المجال المتاح لمدير المستخ
|
||||
CompanyFundationDesc=تعديل على هذه الصفحة كل المعلومات المعروفة للشركة أو مؤسسة تحتاج لإدارة
|
||||
DisplayDesc=يمكنك ان تختار كل معلمة إلى Dolibarr هنا الشكل والمظهر
|
||||
AvailableModules=تتوفر وحدات
|
||||
ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية> الإعداد -> الوحدات).
|
||||
ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية> الإعداد -> الوحدات).
|
||||
SessionTimeOut=للمرة الخمسين
|
||||
SessionExplanation=تضمن هذا العدد أن الدورة لن ينتهي قبل هذا التأخير. PHP sessoin ولكن الإدارة لا الكفالة التي دائما تنتهي الدورة بعد هذا التأخير : ويحدث هذا إذا كان نظام لتنظيف مخبأ الدورة الجارية. <br> ملاحظة : مع أي نظام الداخلي PHP عملية تنظيف كل دورة حوالي <b>٪ ق / ق ٪</b> فقط ولكن وصول وصول أدلى به خلال دورات أخرى.
|
||||
TriggersAvailable=محفزات متاحة
|
||||
@@ -675,7 +674,7 @@ TriggerActiveAsModuleActive=يطلق في هذا الملف كما ينشط حد
|
||||
GeneratedPasswordDesc=هنا تعريف القاعدة التي تريد استخدامه لكلمة السر اذا كنت أسأل لصناعة السيارات ولدت كلمة السر
|
||||
DictionnaryDesc=تعرف هنا إشارة datas. يمكنك استكمال مسبقا مع قيمة لك.
|
||||
ConstDesc=تسمح لك هذه الصفحة لتحرير جميع البارامترات الأخرى غير المتوفرة في الصفحات السابقة. فهي محفوظة لمعايير متقدمة للمطورين أو troubleshouting.
|
||||
OnceSetupFinishedCreateUsers=تحذير فأنت Dolibarr مدير المستخدم. مدير المستخدمين تستخدم لإعداد Dolibarr. لالمعتاد استخدام Dolibarr ، يوصى باستخدام غير مستخدم مدير خلق مجموعات من المستخدمين & القائمة.
|
||||
OnceSetupFinishedCreateUsers=تحذير فأنت Dolibarr مدير المستخدم. مدير المستخدمين تستخدم لإعداد Dolibarr. لالمعتاد استخدام Dolibarr ، يوصى باستخدام غير مستخدم مدير خلق مجموعات من المستخدمين & القائمة.
|
||||
MiscellanousDesc=هنا تعريف جميع البارامترات الأخرى ذات الصلة بالأمن.
|
||||
LimitsSetup=حدود / الدقيقة الإعداد
|
||||
LimitsDesc=يمكنك تحديد الحدود ، وoptimisations الايضاحات التي تستخدمها Dolibarr هنا
|
||||
@@ -684,7 +683,7 @@ MAIN_MAX_DECIMALS_TOT=الحد الأقصى لمجموع أسعار عشرية
|
||||
MAIN_MAX_DECIMALS_SHOWN=ماكس عشرية لأسعار تظهر على الشاشة (يضاف هذا العدد <b>بعد...</b> إذا كنت تريد أن <b>ترى...</b> عندما العدد مبتورة عندما تظهر على الشاشة)
|
||||
MAIN_DISABLE_PDF_COMPRESSION=الاستخدام الشعبي للضغط الشعبي ولدت الملفات.
|
||||
ParameterActiveForNextInputOnly=معلمة فعالة للمساهمة المقبل فقط
|
||||
NoEventOrNoAuditSetup=لا أمن الحدث وقد سجلت حتى الآن. هذا طبيعي ويمكن مراجعة الحسابات اذا لم يتم تمكين "الإعداد -- الأمن -- مراجعة" الصفحة.
|
||||
NoEventOrNoAuditSetup=لا أمن الحدث وقد سجلت حتى الآن. هذا طبيعي ويمكن مراجعة الحسابات اذا لم يتم تمكين "الإعداد -- الأمن -- مراجعة" الصفحة.
|
||||
NoEventFoundWithCriteria=لا أمن حال تم العثور على مثل هذا البحث criterias.
|
||||
SeeLocalSendMailSetup=انظر المحلية الإعداد sendmail
|
||||
BackupDesc=لتقديم دعم كامل للDolibarr ، يجب عليك :
|
||||
@@ -703,13 +702,13 @@ GeneratePassword=وتشير ولدت كلمة السر
|
||||
RuleForGeneratedPasswords=قاعدة لتوليد كلمات السر واقترح
|
||||
DoNotSuggest=لا توحي بأي كلمة السر
|
||||
EncryptedPasswordInDatabase=السماح للتشفير كلمات السر في قاعدة البيانات
|
||||
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
|
||||
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
|
||||
CompanySetup=وحدة الإعداد للشركات
|
||||
CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد)
|
||||
AccountCodeManager=رمز وحدة لتوليد المحاسبة (عميل أو مورد)
|
||||
ModuleCompanyCodeAquarium=عودة محاسبة قانون بناها "401" التي تنتهجها لطرف ثالث مورد للمورد مدونة قواعد المحاسبة ، و "411" التي تنتهجها طرف ثالث رمز العميل عميل لقانون المحاسبة.
|
||||
ModuleCompanyCodeAquarium=عودة محاسبة قانون بناها "401" التي تنتهجها لطرف ثالث مورد للمورد مدونة قواعد المحاسبة ، و "411" التي تنتهجها طرف ثالث رمز العميل عميل لقانون المحاسبة.
|
||||
ModuleCompanyCodePanicum=العودة فارغة مدونة المحاسبة.
|
||||
ModuleCompanyCodeDigitaria=قانون المحاسبة طرف ثالث يعتمد على الرمز. الشفرة تتكون من طابع "جيم" في المركز الأول يليه 5 الحروف الأولى من طرف ثالث المدونة.
|
||||
ModuleCompanyCodeDigitaria=قانون المحاسبة طرف ثالث يعتمد على الرمز. الشفرة تتكون من طابع "جيم" في المركز الأول يليه 5 الحروف الأولى من طرف ثالث المدونة.
|
||||
UseNotifications=استخدام الإخطارات
|
||||
NotificationsDesc=إشعارات البريد الإلكتروني ميزة تسمح لك صمت إرسال البريد الآلي ، وبالنسبة لبعض الأحداث Dolibarr ، لأطراف ثالثة (العملاء أو الموردين) التي هي لتهيئتها. اختيار نشط الاشعار الاتصالات واعتماد أهداف واحدة لطرف ثالث في الوقت المناسب.
|
||||
WebCalSetup=Webcalendar ربط الإعداد
|
||||
@@ -723,9 +722,9 @@ WebCalServer=خدمة استضافة قاعدة بيانات التقويم
|
||||
WebCalDatabaseName=اسم قاعدة البيانات
|
||||
WebCalUser=المستخدم من الوصول إلى قاعدة البيانات
|
||||
WebCalSetupSaved=أنقذ Webcalendar الإعداد بنجاح.
|
||||
WebCalTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
WebCalTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
WebCalTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
WebCalTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
WebCalTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
WebCalTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
WebCalErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن Webcalendar في قاعدة البيانات.
|
||||
WebCalAddEventOnCreateActions=إضافة تقويم الحدث على خلق الأعمال
|
||||
WebCalAddEventOnCreateCompany=إضافة جدول زمني بشأن إنشاء شركات
|
||||
@@ -777,7 +776,7 @@ FicheinterNumberingModules=الترقيم وحدات التدخل
|
||||
TemplatePDFInterventions=تدخل بطاقة نماذج الوثائق
|
||||
WatermarkOnDraftInterventionCards=العلامة المائية على التدخل بطاقة الوثائق (أي إذا كانت فارغة)
|
||||
ClickToDialSetup=انقر لإعداد وحدة الاتصال الهاتفي
|
||||
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).
|
||||
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
|
||||
InterventionsSetup=وحدة التدخل الإعداد
|
||||
MembersSetup=أعضاء وحدة الإعداد
|
||||
@@ -793,8 +792,8 @@ LDAPContactsSynchro=اتصالات
|
||||
LDAPMembersSynchro=أعضاء
|
||||
LDAPSynchronization=LDAP نمازتلا
|
||||
LDAPFunctionsNotAvailableOnPHP=LDAP وظائف لا تتوفر على PHP
|
||||
LDAPToDolibarr=LDAP --> Dolibarr
|
||||
DolibarrToLDAP=Dolibarr --> LDAP
|
||||
LDAPToDolibarr=LDAP --> Dolibarr
|
||||
DolibarrToLDAP=Dolibarr --> LDAP
|
||||
LDAPNamingAttribute=الرئيسية في LDAP
|
||||
LDAPSynchronizeUsers=تزامن Dolibarr المستخدمين LDAP
|
||||
LDAPSynchronizeGroups=تزامن مع Dolibarr مجموعات LDAP
|
||||
@@ -826,7 +825,7 @@ LDAPDnContactActiveYes=تفعيل التزامن
|
||||
LDAPDnContactActiveExample=تفعيل / Unactivated التزامن
|
||||
LDAPDnMemberActive=أعضاء تزامن
|
||||
LDAPDnMemberActiveExample=تفعيل / Unactivated التزامن
|
||||
LDAPContactDn=Dolibarr اتصالات 'DN
|
||||
LDAPContactDn=Dolibarr اتصالات 'DN
|
||||
LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN الكامل (مثلا : où= اتصالات العاصمة= المجتمع ، العاصمة= كوم)
|
||||
LDAPMemberDn=Dolibarr الأعضاء DN
|
||||
LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN الكامل (مثلا : où= أعضاء العاصمة= المجتمع ، العاصمة= كوم)
|
||||
@@ -841,7 +840,7 @@ LDAPContactObjectClassListExample=قائمة objectClass سجل تحديد ال
|
||||
LDAPMemberTypeDn=Dolibarr عضو نوع DN
|
||||
LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN الكامل (مثلا : où= type_members العاصمة= المجتمع ، العاصمة= كوم)
|
||||
LDAPTestConnect=اختبار LDAP الصدد
|
||||
LDAPTestSynchroContact=اختبار الاتصال 'sالتزامن
|
||||
LDAPTestSynchroContact=اختبار الاتصال 'sالتزامن
|
||||
LDAPTestSynchroUser=تجربة المستخدم التزامن
|
||||
LDAPTestSynchroGroup=اختبار المجموعة التزامن
|
||||
LDAPTestSynchroMember=اختبار العضو التزامن
|
||||
@@ -863,7 +862,7 @@ LDAPLdapMapping=LDAP الخرائط
|
||||
LDAPFieldLoginUnix=ادخل (يونكس)
|
||||
LDAPFieldLoginExample=على سبيل المثال : رمز المستخدم
|
||||
LDAPFilterConnection=البحث عن مرشح
|
||||
LDAPFilterConnectionExample=Example : &(objectClass=مثال ذلك : & (objectClass= inetOrgPerson)
|
||||
LDAPFilterConnectionExample=Example : &(objectClass=مثال ذلك : & (objectClass= inetOrgPerson)
|
||||
LDAPFieldLoginSamba=ادخل (سامبا ، activedirectory)
|
||||
LDAPFieldLoginSambaExample=مثال ذلك : samaccountname
|
||||
LDAPFieldFullname=Firstname الاسم
|
||||
@@ -929,7 +928,7 @@ SyslogFacility=مرفق
|
||||
SyslogLevel=المستوى
|
||||
SyslogSimpleFile=ملف
|
||||
SyslogFilename=اسم الملف ومسار
|
||||
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
|
||||
YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف.
|
||||
ErrorUnknownSyslogConstant=ق المستمر ٪ ليست معروفة syslog مستمر
|
||||
DonationsSetup=وحدة الإعداد للتبرع
|
||||
BarcodeSetup=الباركود الإعداد
|
||||
@@ -969,18 +968,18 @@ FCKeditorForProductDetails=WYSIWIG إنشاء / الطبعة تفاصيل خطو
|
||||
FCKeditorForProductDetailsPerso=WYSIWIG إنشاء / الطبعة تفاصيل خطوط المنتجات الشخصية لجميع الكيانات (المقترحات والأوامر والفواتير ، الخ...)
|
||||
FCKeditorForMailing=WYSIWIG إنشاء / الطبعة بالبريد
|
||||
OSCommerceErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن قاعدة بيانات OSCommerce (ق ٪ الرئيسية غير موجودة في الجدول ٪).
|
||||
OSCommerceTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
OSCommerceTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
OSCommerceTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
OSCommerceTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
OSCommerceTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
OSCommerceTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
MantisSetup=فرس النبي ربط الإعداد
|
||||
MantisURL=عنوان الوصول لفرس النبي
|
||||
MantisServer=فرس النبي استضافة خادم قاعدة البيانات
|
||||
MantisDatabaseName=اسم قاعدة البيانات
|
||||
MantisUser=المستخدم من الوصول إلى قاعدة البيانات
|
||||
MantisSetupSaved=فرس النبي الإعداد انقذ بنجاح.
|
||||
MantisTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
MantisTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
MantisTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
MantisTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة.
|
||||
MantisTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
|
||||
MantisTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
|
||||
MantisErrorConnectOkButWrongDatabase=قاعدة بيانات لكنه نجح الصدد لا يبدو أن فرس النبي قاعدة البيانات.
|
||||
StockSetup=تكوين وحدة المخزون
|
||||
UserWarehouse=استخدام الأرصدة الشخصية للمستخدم
|
||||
@@ -1062,3 +1061,130 @@ OnPayment=عن الدفع
|
||||
DelaysOfToleranceMembers=تأخير التسامح (في يوم) في حالة تأهب قبل يوم تأخير رسوم العضوية
|
||||
SetupDescription5=القيود الأخرى القائمة في إدارة اختياري البارامترات.
|
||||
// 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).
|
||||
|
||||
@@ -21,10 +21,9 @@ InvoiceStandardDesc=هذا النوع من الفاتورة هي فاتورة ع
|
||||
InvoiceDeposit=إيداع فاتورة
|
||||
InvoiceDepositAsk=إيداع فاتورة
|
||||
InvoiceDepositDesc=هذا النوع من الفاتورة يتم فيه ايداع وقد وردت.
|
||||
InvoiceProFormat=Proformat الفاتورة
|
||||
InvoiceProFormatAsk=Proformat الفاتورة
|
||||
InvoiceProFormatDesc=<b>Proformat الفاتورة</b> هو صورة حقيقية فاتورة المحاسبة ولكن ليس له قيمة.
|
||||
InvoiceReplacement=استبدال الفاتورة. ويجب أن تحل محل الفاتورة مع الإشارة
|
||||
InvoiceProForma=Proforma الفاتورة
|
||||
InvoiceProFormaAsk=Proforma الفاتورة
|
||||
InvoiceProFormaDesc=<b>Proforma الفاتورة</b> هو صورة حقيقية فاتورة المحاسبة ولكن ليس له قيمة.
|
||||
InvoiceReplacementAsk=استبدال فاتورة الفاتورة
|
||||
InvoiceAvoir=علما الائتمان
|
||||
InvoiceAvoirAsk=علما الائتمان لتصحيح الفاتورة
|
||||
@@ -75,7 +74,7 @@ PaymentConditions=مدة السداد
|
||||
PaymentConditionsShort=مدة السداد
|
||||
PaymentAmount=دفع مبلغ
|
||||
PaymentHigherThanReminderToPay=دفع أعلى من دفع تذكرة
|
||||
ClassifyClosed=تصنيف 'مغلقة'
|
||||
ClassifyClosed=تصنيف 'مغلقة'
|
||||
CreateBill=إنشاء الفاتورة
|
||||
AddBill=تضيف المذكرة الائتمان أو فاتورة
|
||||
DeleteBill=شطب فاتورة
|
||||
@@ -182,7 +181,7 @@ DateInvoice=تاريخ الفاتورة
|
||||
NoInvoice=لا الفاتورة
|
||||
ClassifyBill=تصنيف الفاتورة
|
||||
SupplierBillsToPay=دفع فواتير الموردين
|
||||
DispenseMontantLettres=ليه factures rédigées قدم المساواة طرائق mécanographiques sont l' arrêté dispensées دي én lettres
|
||||
DispenseMontantLettres=ليه factures rédigées قدم المساواة طرائق mécanographiques sont l' arrêté dispensées دي én lettres
|
||||
DispenseMontantLettres=المكتوب من خلال فواتير mecanographic إجراءات الاستغناء حسب الترتيب رسائل
|
||||
NonPercuRecuperable=غير القابلة للاسترداد
|
||||
SetConditions=تحدد شروط الدفع
|
||||
@@ -196,9 +195,9 @@ Repeatables=محددة مسبقا
|
||||
ChangeIntoRepeatableInvoice=تحويل محددة مسبقا
|
||||
CreateRepeatableInvoice=إنشاء فاتورة محددة مسبقا
|
||||
CreateFromRepeatableInvoice=خلق من فاتورة محددة مسبقا
|
||||
CustomersInvoicesAndInvoiceLines=فواتير العملاء والفواتير 'خطوط
|
||||
CustomersInvoicesAndInvoiceLines=فواتير العملاء والفواتير 'خطوط
|
||||
CustomersInvoicesAndPayments=العملاء والفواتير والمدفوعات
|
||||
ExportDataset_invoice_1=قائمة العملاء والفواتير والفواتير 'خطوط
|
||||
ExportDataset_invoice_1=قائمة العملاء والفواتير والفواتير 'خطوط
|
||||
ExportDataset_invoice_2=العملاء والفواتير والمدفوعات
|
||||
ProformaBill=Proforma بيل :
|
||||
Reduction=تخفيض
|
||||
@@ -350,11 +349,11 @@ BillsCustomersUnpaid=غير المدفوعة للعملاء الفواتير
|
||||
BillsCustomersUnpaidForCompany=غير المدفوعة للعملاء فواتير ق ٪
|
||||
BillsSuppliersUnpaid=غير المدفوعة الموردين
|
||||
BillsUnpaid=غير المدفوعة
|
||||
InvoiceReplacementDesc=<b>استبدال الفاتورة</b> يستخدم لالغاء واستبدال تماما مع فاتورة الدفع لا تلقى بالفعل. <br><br> ملاحظة : ليس فقط من فاتورة الدفع على أنه يمكن الاستعاضة عنها. إن لم تكن مغلقة ، سيكون تلقائيا مغلقة 'المهجورة.
|
||||
InvoiceReplacementDesc=<b>استبدال الفاتورة</b> يستخدم لالغاء واستبدال تماما مع فاتورة الدفع لا تلقى بالفعل. <br><br> ملاحظة : ليس فقط من فاتورة الدفع على أنه يمكن الاستعاضة عنها. إن لم تكن مغلقة ، سيكون تلقائيا مغلقة 'المهجورة.
|
||||
InvoiceAvoirDesc=<b>الفضل</b> في <b>المذكرة</b> سلبية الفاتورة تستخدم لحل كون فاتورة بمبلغ قد يختلف عن المبلغ المدفوع فعلا (لأنه دفع الكثير من العملاء عن طريق الخطأ ، أو لن تدفع بالكامل منذ عودته لبعض المنتجات على سبيل المثال).
|
||||
HelpPaymentHigherThanReminderToPay=الاهتمام ، على دفع مبلغ واحد أو أكثر من فواتير أعلى من الراحة على الدفع. <br> تعديل الدخول ، تؤكد خلاف ذلك والتفكير في خلق الائتمان علما الزائدة وتلقى كل الفواتير الزائدة.
|
||||
ClassifyPaid=تصنيف 'مدفوع'
|
||||
ClassifyPaidPartially=تصنيف 'مدفوع جزئيا'
|
||||
ClassifyPaid=تصنيف 'مدفوع'
|
||||
ClassifyPaidPartially=تصنيف 'مدفوع جزئيا'
|
||||
BillStatusPaid=دفع
|
||||
BillStatusPaidBackOrConverted=يدفع أو تحويلها إلى الخصم
|
||||
BillStatusValidated=مصادق عليه (لا بد من دفعها)
|
||||
@@ -364,7 +363,7 @@ BillStatusClosedPaidPartially=دفعت (جزئيا)
|
||||
BillShortStatusPaid=دفع
|
||||
BillShortStatusNotPaid=لم تدفع
|
||||
BillShortStatusClosedPaidPartially=دفعت (جزئيا)
|
||||
ConfirmCancelBillQuestion=لماذا تريدها لتصنيف هذه الفاتورة 'المهجورة؟
|
||||
ConfirmCancelBillQuestion=لماذا تريدها لتصنيف هذه الفاتورة 'المهجورة؟
|
||||
ConfirmClassifyPaidPartiallyQuestion=هذه الفاتورة لم تدفع بالكامل. ما هي أسباب قريبة لك هذه الفاتورة؟
|
||||
ConfirmClassifyPaidPartiallyReasonOther=التخلي عن المبلغ لسبب آخر
|
||||
AlreadyPaid=دفعت بالفعل
|
||||
@@ -377,7 +376,7 @@ ShowUnpaidLateOnly=وتبين في وقت متأخر من الفواتير غي
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2009-08-19 21:36:45).
|
||||
// Reference language: en_US
|
||||
ClassifyCanceled=تصنيف 'المهجورة'
|
||||
ClassifyCanceled=تصنيف 'المهجورة'
|
||||
BillStatusCanceled=المهجورة
|
||||
BillShortStatusCanceled=المهجورة
|
||||
Unpaid=غير المدفوعة
|
||||
@@ -386,3 +385,33 @@ ConfirmCustomerPayment=هل تؤكد ذلك دفع مساهمات <b>٪</b> ٪ <
|
||||
ConfirmValidatePayment=هل أنت متأكد أنك تريد التحقق من صحة هذا الدفع؟ لم يطرأ أي تغيير يمكن الدفع مرة واحدة على صحتها.
|
||||
HelpEscompte=هذا الخصم هو الخصم الممنوح للعميل لأن الدفع قبل البعيد.
|
||||
// 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).
|
||||
|
||||
@@ -73,3 +73,20 @@ BoxTitleLastProductsInContract=الماضي ٪ ق المنتجات / الخدم
|
||||
NoUnpaidCustomerBills=لا العميل الفواتير غير المدفوعة
|
||||
NoUnpaidSupplierBills=لا المورد الفواتير غير المدفوعة
|
||||
// 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).
|
||||
|
||||
@@ -12,11 +12,11 @@ CHARSET=UTF-8
|
||||
MenuManager=قائمة مدير
|
||||
ErrorLoginAlreadyExists=ادخل ٪ ق موجود بالفعل.
|
||||
ErrorGroupAlreadyExists=المجموعة ٪ ق موجود بالفعل.
|
||||
ErrorFailToDeleteFile=فشل إزالة الملف <b>'٪ ق.</b>
|
||||
ErrorFailToCreateFile=فشل إنشاء الملف <b>'٪ ق.</b>
|
||||
ErrorFailToRenameDir=فشل إعادة تسمية الدليل <b>'٪ ق'</b> الى <b>'٪ ق.</b>
|
||||
ErrorFailToCreateDir=فشل إنشاء الدليل <b>'٪ ق.</b>
|
||||
ErrorFailToDeleteDir=فشل حذف الدليل <b>'٪ ق.</b>
|
||||
ErrorFailToDeleteFile=فشل إزالة الملف <b>'٪ ق.</b>
|
||||
ErrorFailToCreateFile=فشل إنشاء الملف <b>'٪ ق.</b>
|
||||
ErrorFailToRenameDir=فشل إعادة تسمية الدليل <b>'٪ ق'</b> الى <b>'٪ ق.</b>
|
||||
ErrorFailToCreateDir=فشل إنشاء الدليل <b>'٪ ق.</b>
|
||||
ErrorFailToDeleteDir=فشل حذف الدليل <b>'٪ ق.</b>
|
||||
ErrorFailedToDeleteJoinedFiles=لا يمكن حذف كيان لان هناك انضم بعض الملفات. إزالة ملفات الانضمام الأولى.
|
||||
ErrorThisContactIsAlreadyDefinedAsThisType=هذا الاتصال هو اتصال بالفعل تعريف لهذا النوع.
|
||||
ErrorCashAccountAcceptsOnlyCashMoney=هذا الحساب المصرفي هو الحساب النقدي ، وذلك ما وافق على نوع من المدفوعات النقدية فقط.
|
||||
@@ -38,8 +38,8 @@ ErrorFieldsRequired=تتطلب بعض المجالات لم تملأ.
|
||||
ErrorFailedToCreateDir=فشل إنشاء دليل. تأكد من أن خادم الويب المستخدم أذونات لكتابة وثائق Dolibarr في الدليل. إذا تم تمكين المعلم <b>safe_mode</b> على هذا PHP ، تحقق من أن ملفات Dolibarr php تملك لخدمة الويب المستخدم (أو مجموعة).
|
||||
ErrorNoMailDefinedForThisUser=البريد لا يعرف لهذا المستخدم
|
||||
ErrorFeatureNeedJavascript=هذه الميزة تحتاج إلى تفعيل جافا سكريبت في العمل. هذا التغيير في البنية -- عرض.
|
||||
ErrorTopMenuMustHaveAParentWithId0=وهناك قائمة من نوع 'توب' لا يمكن أن يكون أحد الوالدين القائمة. 0 وضعت في القائمة أو الأم في اختيار قائمة من نوع 'اليسار'.
|
||||
ErrorLeftMenuMustHaveAParentId=وهناك قائمة من نوع 'اليسار' يجب أن يكون لها هوية الوالد.
|
||||
ErrorTopMenuMustHaveAParentWithId0=وهناك قائمة من نوع 'توب' لا يمكن أن يكون أحد الوالدين القائمة. 0 وضعت في القائمة أو الأم في اختيار قائمة من نوع 'اليسار'.
|
||||
ErrorLeftMenuMustHaveAParentId=وهناك قائمة من نوع 'اليسار' يجب أن يكون لها هوية الوالد.
|
||||
ErrorFileNotFound=لم يتم العثور على الملف (باد الطريق الخطأ أو أذونات الوصول نفى المعلم openbasedir)
|
||||
ErrorFunctionNotAvailableInPHP=<b>ق ٪</b> وظيفة مطلوبة لهذه الميزة ولكن لا تتوافر في هذه النسخة / الإعداد للPHP.
|
||||
ErrorDirAlreadyExists=دليل بهذا الاسم بالفعل.
|
||||
@@ -52,9 +52,44 @@ ErrorNoAccountancyModuleLoaded=أي وحدة المحاسبة وتفعيل
|
||||
ErrorExportDuplicateProfil=هذا ملف الاسم بالفعل لتصدير هذه المجموعة.
|
||||
ErrorLDAPSetupNotComplete=Dolibarr - LDAP المطابقة وليس كاملا.
|
||||
ErrorLDAPMakeManualTest=ألف. ldif الملف قد ولدت في الدليل ٪ s. انها محاولة لتحميل يدويا من سطر في الحصول على مزيد من المعلومات عن الأخطاء.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage=لا يمكن انقاذ عمل مع "المركز الخاص لم تبدأ" اذا الميدان "الذي قام به" كما شغلها.
|
||||
ErrorBillRefAlreadyExists=المرجع المستخدمة لإنشاء موجود بالفعل.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage=لا يمكن انقاذ عمل مع "المركز الخاص لم تبدأ" اذا الميدان "الذي قام به" كما شغلها.
|
||||
ErrorRefAlreadyExists=المرجع المستخدمة لإنشاء موجود بالفعل.
|
||||
ErrorPleaseTypeBankTransactionReportName=الرجاء كتابة اسم البنك استلام المعاملات ويقال فيها (شكل YYYYMM أو YYYYMMDD)
|
||||
ErrorRecordHasChildren=فشل حذف السجلات منذ نحو الطفل.
|
||||
// Date 2009-08-11 13:27:01
|
||||
// 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).
|
||||
|
||||
@@ -16,7 +16,7 @@ ConfFileExists=ملفات موجودة <b>٪ ق.</b>
|
||||
ConfFileDoesNotExists=ملفات <b>ل ٪</b> لا وجود له!
|
||||
ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود له وأنه لا يمكن خلق!
|
||||
ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ.
|
||||
ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
|
||||
ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
|
||||
ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b>
|
||||
PHPSupportSessions=ويدعم هذا PHP الدورات.
|
||||
PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف.
|
||||
@@ -31,14 +31,14 @@ ErrorPHPDoesNotSupportGD=PHP تركيب الخاص بك لا يدعم وظيفة
|
||||
ErrorPHPDoesNotSupportUTF8=PHP تركيب الخاص بك لا يدعم UTF8 المهام. Dolibarr لا يمكن أن تعمل بشكل صحيح. لحل هذه قبل تثبيت Dolibarr.
|
||||
ErrorDirDoesNotExists=دليل ٪ ق لا يوجد.
|
||||
ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح الخطأ البارامترات.
|
||||
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
|
||||
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
|
||||
ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق.
|
||||
ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق.
|
||||
ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق.
|
||||
ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق.
|
||||
ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب.
|
||||
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
|
||||
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
|
||||
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
|
||||
IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار.
|
||||
ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه.
|
||||
ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل.
|
||||
IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات".
|
||||
IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار.
|
||||
PHPVersion=PHP الإصدار
|
||||
YouCanContinue=يمكنك الاستمرار...
|
||||
PleaseBePatient=يرجى التحلي بالصبر...
|
||||
@@ -52,7 +52,7 @@ DatabaseChoice=اختيار قاعدة البيانات
|
||||
DatabaseType=قاعدة بيانات من نوع
|
||||
DriverType=سائق نوع
|
||||
Server=الخادم
|
||||
ServerAddressDescription=الملكية الفكرية في اسم أو عنوان خادم قاعدة البيانات ، وعادة 'localhost' عندما يستضيف خادم قاعدة البيانات على نفس الخادم من خدمة الويب
|
||||
ServerAddressDescription=الملكية الفكرية في اسم أو عنوان خادم قاعدة البيانات ، وعادة 'localhost' عندما يستضيف خادم قاعدة البيانات على نفس الخادم من خدمة الويب
|
||||
ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة.
|
||||
DatabaseServer=خادم قاعدة البيانات
|
||||
DatabaseName=اسم قاعدة البيانات
|
||||
@@ -89,16 +89,15 @@ SetupEnd=نهاية الإعداد
|
||||
SystemIsInstalled=هذا التثبيت الكامل.
|
||||
SystemIsUpgraded=وقد تم تطوير Dolibarr بنجاح.
|
||||
YouNeedToPersonalizeSetup=عليك تكوين Dolibarr لتناسب احتياجاتك (ظهور مقالات...). لذلك ، يرجى اتباع الوصلة التالية :
|
||||
AdminLoginCreatedSuccessfuly=مدير Dolibarr ادخل <b>'٪ ق'</b> خلق بنجاح.
|
||||
AdminLoginCreatedSuccessfuly=مدير Dolibarr ادخل <b>'٪ ق'</b> خلق بنجاح.
|
||||
GoToDolibarr=الذهاب إلى Dolibarr
|
||||
GoToSetupArea=الذهاب إلى Dolibarr (مجال الإعداد)
|
||||
MigrationNotFinished=النسخة الخاصة بك ليست dtabase تماما حتى الآن ، لذلك سيكون لديك لادارة عملية رفع مستوى جديد.
|
||||
GoToUpgradePage=الذهاب لتحديث الصفحة مرة أخرى
|
||||
Examples=أمثلة
|
||||
WithNoSlashAtTheEnd=بدون خفض "/" في نهاية
|
||||
WithNoSlashAtTheEnd=بدون خفض "/" في نهاية
|
||||
LoginAlreadyExists=موجود بالفعل
|
||||
DolibarrAdminLogin=ادخل Dolibarr مشرف
|
||||
AdminLoginAlreadyExists=Dolibarr حساب مشرف <b>'٪ ق'</b> موجود بالفعل.
|
||||
AdminLoginAlreadyExists=Dolibarr حساب مشرف <b>'٪ ق'</b> موجود بالفعل.
|
||||
WarningRemoveInstallDir=تحذير ، لأسباب أمنية ، بعد تثبيت أو تحديث كاملة ، يجب إزالة <b>تثبيت أو إعادة تسمية الدليل على install.lock من أجل تجنب استخدام الخبيثة.</b>
|
||||
ThisPHPDoesNotSupportTypeBase=PHP هذا النظام لا يدعم أي واجهة للحصول على قاعدة بيانات من نوع ق ٪
|
||||
FunctionNotAvailableInThisPHP=لا تتوفر على هذا PHP
|
||||
@@ -107,9 +106,9 @@ ChoosedMigrateScript=اختار الهجرة سكريبت
|
||||
DataMigration=بيانات الهجرة
|
||||
DatabaseMigration=هيكل قاعدة بيانات الهجرة
|
||||
ProcessMigrateScript=السيناريو تجهيز
|
||||
ChooseYourSetupMode=اختر طريقة الإعداد وانقر على "ابدأ"...
|
||||
ChooseYourSetupMode=اختر طريقة الإعداد وانقر على "ابدأ"...
|
||||
FreshInstall=تركيب جديد
|
||||
FreshInstallDesc=استخدام هذا الأسلوب إذا كان هذا هو أول تركيب. إذا لم يكن هذا الوضع لا يمكن إصلاح تثبيت سابقة غير مكتملة ، ولكن إذا كنت ترغب في تحديث الإصدار الخاص بك ، اختر "ترقية" واسطة.
|
||||
FreshInstallDesc=استخدام هذا الأسلوب إذا كان هذا هو أول تركيب. إذا لم يكن هذا الوضع لا يمكن إصلاح تثبيت سابقة غير مكتملة ، ولكن إذا كنت ترغب في تحديث الإصدار الخاص بك ، اختر "ترقية" واسطة.
|
||||
Upgrade=ترقية
|
||||
UpgradeDesc=استخدام هذه الطريقة إذا كنت قد حلت محل القديمة Dolibarr الملفات من الملفات مع إصدار أحدث. وهذا من شأنه رفع مستوى قاعدة البيانات والبيانات.
|
||||
Start=يبدأ
|
||||
@@ -125,7 +124,7 @@ CharsetChoice=اختيار مجموعة حروف
|
||||
CharacterSetClient=مجموعة الحروف المستخدمة في توليدها صفحات هتمل
|
||||
CharacterSetClientComment=اختيار الطابع المحدد لعرضها على الإنترنت. <br/> واقترحت مجموعة الطابع الافتراضي هو واحد من قاعدة البيانات.
|
||||
CollationConnection=طابع الفرز بغية
|
||||
CollationConnectionComment=اختر صفحة المدونة التي تحدد طبيعة النظام 'sفرز قاعدة البيانات التي تستخدمها. هذا هو المعلم كما دعا 'مقارنتها' بعض قواعد البيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل.
|
||||
CollationConnectionComment=اختر صفحة المدونة التي تحدد طبيعة النظام 'sفرز قاعدة البيانات التي تستخدمها. هذا هو المعلم كما دعا 'مقارنتها' بعض قواعد البيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل.
|
||||
CharacterSetDatabase=الطابع المحدد لقاعدة البيانات
|
||||
CharacterSetDatabaseComment=اختيار مجموعة حروف تريد لإنشاء قاعدة بيانات. <br/> هذا المعلم لا يمكن أن يعرف إذا كانت قاعدة البيانات موجودة بالفعل.
|
||||
YouAskDatabaseCreationSoDolibarrNeedToConnect=كنت أسأل لإنشاء قاعدة بيانات <b>٪ ق</b> ، ولكن لهذا ، Dolibarr الحاجة الى الاتصال بخادم <b>٪ ق</b> السوبر مع المستخدم أذونات <b>٪ ق.</b>
|
||||
@@ -136,8 +135,8 @@ RemoveItManuallyAndPressF5ToContinue=إزالته يدويا واضغط F5 لل
|
||||
KeepDefaultValuesWamp=استخدام معالج الإعداد DoliWamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
|
||||
KeepDefaultValuesMamp=استخدام معالج الإعداد DoliMamp ، حتى القيم المقترحة هنا بالفعل الأمثل. تغييرها إلا إذا كنت تعرف ما تفعله.
|
||||
FieldRenamed=تغيير اسم الميدان
|
||||
IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم"
|
||||
ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة.
|
||||
IfLoginDoesNotExistsCheckCreateUser=اذا ادخل لا يوجد حتى الآن ، يجب عليك التحقق من خيار "تكوين المستخدم"
|
||||
ErrorConnection=الخادم <b>"٪ ل"</b> اسم قاعدة بيانات <b>"٪ ل"</b> ادخل <b>"٪ ل"</b> أو كلمة سر قاعدة البيانات قد تكون خاطئة أو PHP العميل نسخة قديمة جدا ويمكن مقارنة مع قاعدة البيانات نسخة.
|
||||
InstallChoiceSuggested=<b>اقترح تثبيت اختيار المثبت.</b>
|
||||
MigrationOrder=بيانات الهجرة طلبات الزبائن
|
||||
MigrationSupplierOrder=بيانات الهجرة من أجل الموردين أوامر
|
||||
@@ -193,3 +192,32 @@ MigrationBankTransfertsUpdate=تحديث الروابط بين المعاملا
|
||||
// Reference language: en_US
|
||||
InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة <b>٪ المستندات</b> الخاصة بك من النسخة الحالية <b>ل ٪</b>
|
||||
// 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).
|
||||
|
||||
46
htdocs/langs/ar_AR/languages.lang
Normal file
46
htdocs/langs/ar_AR/languages.lang
Normal 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).
|
||||
@@ -148,7 +148,7 @@ DescADHERENT_ETIQUETTE_TYPE=علامات الشكل
|
||||
DescADHERENT_CARD_HEADER_TEXT=نص مطبوع على رأس عضو البطاقات
|
||||
DescADHERENT_CARD_TEXT=نص مطبوع على بطاقات الأعضاء
|
||||
DescADHERENT_CARD_FOOTER_TEXT=نص مطبوع على أسفل بطاقات الأعضاء
|
||||
ShowTypeCard=وتبين من نوع '٪ ق'
|
||||
ShowTypeCard=وتبين من نوع '٪ ق'
|
||||
HTPasswordExport=الملف htpassword جيل
|
||||
NoThirdPartyAssociatedToMember=لم يرتبط بها من طرف ثالث لهذا العضو
|
||||
ThirdPartyDolibarr=Dolibarr طرف ثالث
|
||||
@@ -161,3 +161,27 @@ MembersAndSubscriptions=وأعضاء Suscriptions
|
||||
// Reference language: en_US
|
||||
FundationMembers=أعضاء المؤسسة
|
||||
// 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).
|
||||
|
||||
@@ -92,7 +92,7 @@ ConfirmValidateOrder=هل أنت متأكد أنك تريد التحقق من ص
|
||||
ConfirmCancelOrder=هل أنت متأكد من أنك تريد إلغاء هذا النظام؟
|
||||
ConfirmMakeOrder=هل أنت متأكد من أن يؤكد لك هذا النظام على <b>٪ ق؟</b>
|
||||
GenerateBill=توليد الفاتورة
|
||||
ClassifyBilled=تصنيف "فواتير"
|
||||
ClassifyBilled=تصنيف "فواتير"
|
||||
ComptaCard=بطاقة المحاسبة
|
||||
DraftOrders=مشروع أوامر
|
||||
RelatedOrders=الأوامر ذات الصلة
|
||||
@@ -103,19 +103,19 @@ CustomerOrder=عملاء النظام
|
||||
RefCustomerOrderShort=المرجع. العملاء. ترتيب
|
||||
SendOrderByMail=لكي ترسل عن طريق البريد
|
||||
ActionsOnOrder=إجراءات من أجل
|
||||
NoArticleOfTypeProduct=أي مادة من نوع 'منتج' حتى لا مادة للشحن لهذا النظام
|
||||
NoArticleOfTypeProduct=أي مادة من نوع 'منتج' حتى لا مادة للشحن لهذا النظام
|
||||
OrderMode=طريقة أوامر
|
||||
AuthorRequest=طلب مقدم البلاغ
|
||||
UseCustomerContactAsOrderRecipientIfExist=استخدام العميل عنوان الاتصال إذا حددت بدلا من التصدي لطرف ثالث من أجل التصدي للمتلقي
|
||||
RunningOrders=أوامر بشأن عملية
|
||||
UserWithApproveOrderGrant=مع منح المستخدمين "الموافقة على أوامر" إذن.
|
||||
UserWithApproveOrderGrant=مع منح المستخدمين "الموافقة على أوامر" إذن.
|
||||
PaymentOrderRef=من أجل دفع ق ٪
|
||||
CloneOrder=استنساخ النظام
|
||||
ConfirmCloneOrder=هل أنت متأكد من أن هذا الأمر استنساخ <b>٪ ق؟</b>
|
||||
Error_COMMANDE_SUPPLIER_ADDON_NotDefined=لم تعرف COMMANDE_SUPPLIER_ADDON مستمر
|
||||
Error_COMMANDE_ADDON_NotDefined=لم تعرف COMMANDE_ADDON مستمر
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File=لم يتم تحميل الملف وحدة '٪ ق'
|
||||
OrderSource0=اقتراح التجارية
|
||||
OrderSource1=الإنترنت
|
||||
OrderSource2=حملة بريدية
|
||||
@@ -126,6 +126,29 @@ OrderSource6=مخزن
|
||||
QtyOrdered=الكمية أمرت
|
||||
AddDeliveryCostLine=تضاف تكلفة توصيل خط يبين الوزن من أجل
|
||||
PDFEinsteinDescription=من أجل نموذج كامل (logo...)
|
||||
MarbreNumRefDesc=Renvoie جنيه numéro sous لوس انجليس في شكل syymm ٪ nnnn - où l' année السنة بتوقيت شرق الولايات المتحدة ، مم جنيه mois ét nnnn الامم المتحدة compteur sequentiel بلا انقطاع ét بلا remise ه 0
|
||||
// Date 2009-08-11 13:27:01
|
||||
// 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).
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
CHARSET=UTF-8
|
||||
ErrorPasswordDiffers=وتختلف كلمات السر ، يرجى منها من نوع جديد.
|
||||
ErrorForbidden=الوصول ممنوع. <br> محاولة الوصول إلى صفحة ، أو منطقة دون سمة في الدورة من صحة أو عدم السماح لالمستخدم.
|
||||
ErrorForbidden2=إذن لدخول هذا يمكن تعريف بلدكم من قائمة مدير Dolibarr ٪ ق -> ٪ s.
|
||||
ErrorForbidden2=إذن لدخول هذا يمكن تعريف بلدكم من قائمة مدير Dolibarr ٪ ق -> ٪ s.
|
||||
ErrorForbidden3=يبدو أن Dolibarr لا يستخدم من صحتها من خلال هذه الدورة. إلقاء نظرة على Dolibarr إعداد الوثائق لمعرفة كيفية ادارة التوثيقات (htaccess ، mod_auth أو غيرها...).
|
||||
ErrorNoImagickReadimage=وظيفة imagick_readimage لا يوجد في هذا PHP. لا يمكن معاينة المتاحة. يمكن للمشرفين تعطيل هذه القائمة من علامة التبويب إعداد -- عرض.
|
||||
ErrorRecordAlreadyExists=سجل موجود بالفعل
|
||||
ErrorCantReadFile=فشل في قراءة الملف '٪ ق'
|
||||
ErrorCantReadDir=فشل في قراءة الدليل '٪ ق'
|
||||
ErrorFailedToFindEntity=لم يقرأ كيان '٪ ق'
|
||||
ErrorCantReadFile=فشل في قراءة الملف '٪ ق'
|
||||
ErrorCantReadDir=فشل في قراءة الدليل '٪ ق'
|
||||
ErrorFailedToFindEntity=لم يقرأ كيان '٪ ق'
|
||||
ErrorBadLoginPassword=سوء قيمة أو كلمة السر للدخول
|
||||
ErrorLoginDisabled=لقد تم تعطيل حسابك
|
||||
ErrorFailedToRunExternalCommand=فشل القيادة الخارجية التي تديرها. تأكد من أن يصبح متاحا في بلدكم وrunnable الخادم PHP. إذا PHP تمكين <b>الوضع الآمن</b> ، وتأكد من أن القيادة داخل حددها دليل المعلم <b>safe_mode_exec_dir.</b>
|
||||
@@ -183,3 +183,48 @@ InvoicePaidInDolibarr=ق ٪ الفاتورة المدفوعة في تغيير Do
|
||||
// Reference language: en_US
|
||||
NumberOfUnitsProposals=عدد من الوحدات على مقترحات بشأن 12 الشهر الماضي
|
||||
// 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).
|
||||
|
||||
@@ -122,7 +122,7 @@ ProductAssociationList=قائمة المنتجات المتعلقة / الخدم
|
||||
ErrorAssociationIsFatherOfThis=واحد من اختيار المنتج الأم الحالية المنتج
|
||||
DeleteProduct=حذف المنتجات / الخدمات
|
||||
ConfirmDeleteProduct=هل أنت متأكد من حذف هذه المنتجات / الخدمات؟
|
||||
ProductDeleted=المنتجات والخدمات "٪ ل" حذفها من قاعدة البيانات.
|
||||
ProductDeleted=المنتجات والخدمات "٪ ل" حذفها من قاعدة البيانات.
|
||||
DeletePicture=حذف الصورة
|
||||
ConfirmDeletePicture=هل أنت متأكد من أنك تريد حذف هذه الصورة؟
|
||||
ExportDataset_produit_1=المنتجات
|
||||
@@ -143,7 +143,7 @@ NoSupplierPriceDefinedForThisProduct=لا مورد السعر الكمية ال
|
||||
RecordedProducts=المنتجات المسجلة
|
||||
RecordedProductsAndServices=المنتجات / الخدمات المسجلة
|
||||
GenerateThumb=يولد الإبهام
|
||||
ProductCanvasAbility=خاصة استخدام "قماش" addons
|
||||
ProductCanvasAbility=خاصة استخدام "قماش" addons
|
||||
ServiceNb=خدمة ق # ٪
|
||||
ListProductByPopularity=قائمة المنتجات / الخدمات شعبية
|
||||
Finished=المنتجات المصنعة
|
||||
@@ -161,3 +161,30 @@ ClonePricesProduct=استنساخ الرئيسية معلومات والأسعا
|
||||
LastRecordedProductsAndServices=٪ ق الماضي سجلت المنتجات / الخدمات
|
||||
ContractStatusToRun=ألف mettre én الخدمة
|
||||
// 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).
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,10 +8,10 @@ BoxLastCustomerBills=Últimes factures a clients
|
||||
BoxOldestUnpaidCustomerBills=Factures a clients més antigues pendents de pagament
|
||||
BoxOldestUnpaidSupplierBills=Factures de proveïdors més antigues pendents de pagament
|
||||
BoxLastProposals=Últims pressupostos
|
||||
BoxLastProspects=Últims clients potencials
|
||||
BoxLastCustomers=Últims clients
|
||||
BoxLastProspects=Últims clients potencials modificats
|
||||
BoxLastCustomers=Últims clients modificats
|
||||
BoxLastSuppliers=Últims proveïdors modificats
|
||||
BoxLastCustomerOrders=Últimes comandes
|
||||
BoxLastSuppliers=Últims proveïdors
|
||||
BoxLastBooks=Últims books
|
||||
BoxLastActions=Últimes accions
|
||||
BoxLastContracts=Últims contractes
|
||||
@@ -24,13 +24,16 @@ BoxTitleNbOfCustomers=Nombre de clients
|
||||
BoxTitleLastRssInfos=Les %s últimes infos de %s
|
||||
BoxTitleLastProducts=Els %s darrers productes/serveis registrats
|
||||
BoxTitleLastCustomerOrders=Les %s darreres comandes de clients modificades
|
||||
BoxTitleLastSuppliers=Els %s darrers proveïdors modificats
|
||||
BoxTitleLastCustomers=Els %s darrers clients modificats
|
||||
BoxTitleLastSuppliers=Els %s darrers proveïdors registrats
|
||||
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
|
||||
BoxTitleLastPropals=Els %s darrers pressupostos registrats
|
||||
BoxTitleLastCustomerBills=Les %s últimes factures a clients 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
|
||||
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
|
||||
@@ -52,6 +55,9 @@ NoRecordedInvoices=Sense factures a clients registrades
|
||||
NoUnpaidCustomerBills=Sense factures a clients pendents de cobrament
|
||||
NoRecordedSupplierInvoices=Sense factures de proveïdors
|
||||
NoUnpaidSupplierBills=Sense factures de proveïdors pendents de pagament
|
||||
NoModifiedSupplierBills=Sense factures de proveïdors modificades
|
||||
NoRecordedProducts=Sense productes/serveis registrats
|
||||
NoRecordedProspects=Sense clients potencials registrats
|
||||
NoContractedProducts=Sense productes/serveis contractats
|
||||
NoRecordedContracts=Sense contractes registrats
|
||||
|
||||
|
||||
@@ -1,66 +1,75 @@
|
||||
# Dolibarr language file - ca_ES - errors
|
||||
CHARSET= UTF-8
|
||||
MenuManager= Gestor de menú
|
||||
Error= Error
|
||||
Errors= Errors
|
||||
ErrorBadEMail= e-mail %s incorrecte
|
||||
ErrorBadUrl= Url %s invàlida
|
||||
ErrorLoginAlreadyExists= El login %s ja existeix.
|
||||
ErrorGroupAlreadyExists= El grup %s ja existeix.
|
||||
ErrorRecordNotFound= Registre no trobat
|
||||
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>'
|
||||
ErrorFailToDeleteFile= Error al suprimir el fitxer '<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>'
|
||||
ErrorFailToDeleteDir= Error en eliminar la carpeta '<b>%s</b>'.
|
||||
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.
|
||||
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.
|
||||
ErrorBadThirdPartyName= Nom de tercer incorrecte
|
||||
ErrorBadCustomerCodeSyntax= La sintaxi del codi client és incorrecta
|
||||
ErrorCustomerCodeRequired= Codi client obligatori
|
||||
ErrorCustomerCodeAlreadyUsed= Codi de client ja utilitzat
|
||||
ErrorPrefixRequired= Prefix obligatori
|
||||
ErrorUrlNotValid= L'adreça del lloc web és incorrecta
|
||||
ErrorBadSupplierCodeSyntax= La sintaxi del codi proveïdor és incorrecta
|
||||
ErrorSupplierCodeRequired= Codi proveïdor obligatori
|
||||
ErrorSupplierCodeAlreadyUsed= Codi de proveïdor ja utilitzat
|
||||
ErrorBadParameters= Paràmetres incorrectes
|
||||
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)
|
||||
ErrorUserCannotBeDelete= L'usuari no pot ser eliminat. Potser estigui associat a elements de Dolibarr.
|
||||
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.
|
||||
ErrorNoMailDefinedForThisUser= E-Mail no definit per a aquest usuari
|
||||
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'
|
||||
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)
|
||||
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.
|
||||
ErrorDirAlreadyExists= Ja existeix una carpeta amb aquest nom.
|
||||
ErrorFieldCanNotContainSpecialCharacters= El camp <b>%s</b> no ha de contenir caràcters especials
|
||||
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
|
||||
WarningBuildScriptNotRunned= L'script <b>%s</b> encara no ha executat la construcció de gràfics.
|
||||
WarningBookmarkAlreadyExists= Ja existeix un marcador amb aquest títol o aquest URL.
|
||||
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ò.
|
||||
ErrorNoAccountancyModuleLoaded= Mòdul de comptabilitat no activat
|
||||
ErrorExportDuplicateProfil= El nom del perfil ja existeix per a aquest lot d'exportació
|
||||
ErrorLDAPSetupNotComplete= La configuració Dolibarr-LDAP és incompleta.
|
||||
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.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage= No es pot canviar una acció al estat no començada si teniu un usuari realitzant de l'acció.
|
||||
ErrorBillRefAlreadyExists= La referència utilitzada per a la creació ja existeix
|
||||
ErrorPleaseTypeBankTransactionReportName= Introduïu el nom del registre bancari sobre el qual l'escrit està constatat (format AAAAMM o AAAMMJJ)
|
||||
ErrorRecordHasChildren= No es pot esborrar el registre perquè té fills.
|
||||
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.
|
||||
ErrorModuleRequireJavascript= Javascript ha d'estar activat per a que aquesta opció pugui utilitzar-se. Per activar/desactivar JavaScript, aneu al menú Inici->Configuració->Entorn.
|
||||
ErrorPasswordsMustMatch= Les 2 contrasenyes indicades s'han de correspondre
|
||||
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.
|
||||
CHARSET=UTF-8
|
||||
MenuManager=Gestor de menú
|
||||
Error=Error
|
||||
Errors=Errors
|
||||
ErrorBadEMail=e-mail %s incorrecte
|
||||
ErrorBadUrl=Url %s invàlida
|
||||
ErrorLoginAlreadyExists=El login %s ja existeix.
|
||||
ErrorGroupAlreadyExists=El grup %s ja existeix.
|
||||
ErrorRecordNotFound=Registre no trobat
|
||||
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>'
|
||||
ErrorFailToDeleteFile=Error al suprimir el fitxer '<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>'
|
||||
ErrorFailToDeleteDir=Error en eliminar la carpeta '<b>%s</b>'.
|
||||
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.
|
||||
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.
|
||||
ErrorBadThirdPartyName=Nom de tercer incorrecte
|
||||
ErrorBadCustomerCodeSyntax=La sintaxi del codi client és incorrecta
|
||||
ErrorCustomerCodeRequired=Codi client obligatori
|
||||
ErrorCustomerCodeAlreadyUsed=Codi de client ja utilitzat
|
||||
ErrorPrefixRequired=Prefix obligatori
|
||||
ErrorUrlNotValid=L'adreça del lloc web és incorrecta
|
||||
ErrorBadSupplierCodeSyntax=La sintaxi del codi proveïdor és incorrecta
|
||||
ErrorSupplierCodeRequired=Codi proveïdor obligatori
|
||||
ErrorSupplierCodeAlreadyUsed=Codi de proveïdor ja utilitzat
|
||||
ErrorBadParameters=Paràmetres incorrectes
|
||||
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)
|
||||
ErrorUserCannotBeDelete=L'usuari no pot ser eliminat. Potser estigui associat a elements de Dolibarr.
|
||||
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.
|
||||
ErrorNoMailDefinedForThisUser=E-Mail no definit per a aquest usuari
|
||||
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'
|
||||
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)
|
||||
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.
|
||||
ErrorDirAlreadyExists=Ja existeix una carpeta amb aquest nom.
|
||||
ErrorFileAlreadyExists=Ja existeix un fitxer amb aquest nom.
|
||||
ErrorPartialFile=Arxiu no rebut íntegrament pel servidor.
|
||||
ErrorNoTmpDir=Directori temporal de recepció %s inexistent
|
||||
ErrorUploadBlockedByAddon=Pujada bloquejada per un plugin PHP/Apache.
|
||||
ErrorFileSizeTooLarge=La mida del fitxer és massa gran.
|
||||
ErrorFieldCanNotContainSpecialCharacters=El camp <b>%s</b> no ha de contenir caràcters especials
|
||||
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>.
|
||||
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
|
||||
WarningBuildScriptNotRunned=L'script <b>%s</b> encara no ha executat la construcció de gràfics.
|
||||
WarningBookmarkAlreadyExists=Ja existeix un marcador amb aquest títol o aquest URL.
|
||||
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ò.
|
||||
ErrorNoAccountancyModuleLoaded=Mòdul de comptabilitat no activat
|
||||
ErrorExportDuplicateProfil=El nom del perfil ja existeix per a aquest lot d'exportació
|
||||
ErrorLDAPSetupNotComplete=La configuració Dolibarr-LDAP és incompleta.
|
||||
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.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage=No es pot canviar una acció al estat no començada si teniu un usuari realitzant de l'acció.
|
||||
ErrorRefAlreadyExists=La referència utilitzada per a la creació ja existeix
|
||||
ErrorPleaseTypeBankTransactionReportName=Introduïu el nom del registre bancari sobre el qual l'escrit està constatat (format AAAAMM o AAAMMJJ)
|
||||
ErrorRecordHasChildren=No es pot esborrar el registre perquè té fills.
|
||||
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.
|
||||
ErrorModuleRequireJavascript=Javascript ha d'estar activat per a que aquesta opció pugui utilitzar-se. Per activar/desactivar JavaScript, aneu al menú Inici->Configuració->Entorn.
|
||||
ErrorPasswordsMustMatch=Les 2 contrasenyes indicades s'han de correspondre
|
||||
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
|
||||
@@ -7,7 +7,9 @@ Language_da_DA=Danès
|
||||
Language_de_DE=Alemany
|
||||
Language_en_AU=Anglès (Australia)
|
||||
Language_en_GB=Anglès (Regne Unit)
|
||||
Language_en_IN=Anglès (Índia)
|
||||
Language_en_US=Anglès (Estats Units)
|
||||
Language_es_AR=Espanyol (Argentina)
|
||||
Language_es_ES=Espanyol
|
||||
Language_fi_FI=Finès
|
||||
Language_fr_BE=Francès (Bèlgica)
|
||||
@@ -24,3 +26,7 @@ Language_pt_PT=Portuguès
|
||||
Language_ro_RO=Romanès
|
||||
Language_ru_RU=Rus
|
||||
Language_tr_TR=Turc
|
||||
Language_sl_SL=Eslovè
|
||||
Language_sv_SV=Suec
|
||||
Language_zh_CN=Xinès
|
||||
Language_is_IS=Islandès
|
||||
|
||||
@@ -6,6 +6,7 @@ SeparatorThousand=
|
||||
FormatDateShort=%d/%m/%Y
|
||||
FormatDateShortJava=dd/MM/yyyy
|
||||
FormatHourShort=%H:%M
|
||||
FormatHourShortDuration=%H:%M
|
||||
FormatDateTextShort=%d %b %Y
|
||||
FormatDateText=%d %B %Y
|
||||
FormatDateHourShort=%d/%m/%Y %H:%M
|
||||
@@ -110,7 +111,7 @@ AddActionDone=Afegir acció realitzada
|
||||
Close=Tancar
|
||||
Close2=Tancar
|
||||
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
|
||||
Remove=Retirar
|
||||
Resiliate=Cancel·lar
|
||||
@@ -172,7 +173,6 @@ Action=Acció
|
||||
Model=Model
|
||||
DefaultModel=Model per defecte
|
||||
About=Sobre
|
||||
WelcomeString=<font class="body">Som</font> %s<font class="body">, i es connecta com</font> %s
|
||||
Number=Número
|
||||
NumberByMonth=Nombre per mes
|
||||
Numero=Número
|
||||
@@ -237,7 +237,7 @@ Quadri=Trimistre
|
||||
MonthOfDay=Mes del dia
|
||||
HourShort=H
|
||||
Rate=Tipus
|
||||
Bytes=Octets
|
||||
Bytes=Bytes
|
||||
KiloBytes=Kilobytes
|
||||
MegaBytes=Megabytes
|
||||
GigaBytes=Gigabytes
|
||||
@@ -283,6 +283,8 @@ TotalHT=Import
|
||||
TotalTTC=Total
|
||||
TotalTTCToYourCredit=Total a crèdit
|
||||
TotalVAT=Total IVA
|
||||
TotalLT1ES=Total RE
|
||||
TotalLT2ES=Total IRPF
|
||||
IncludedVAT=IVA inclòs
|
||||
HT=Sense IVA
|
||||
TTC=IVA inclòs
|
||||
@@ -311,7 +313,7 @@ ActionRunningNotStarted=No començat
|
||||
ActionRunningShort=Començat
|
||||
ActionDoneShort=Acabat
|
||||
CompanyFoundation=Empresa o institució
|
||||
ContactsForCompany=Contactes d'aquest tercer
|
||||
ContactsForCompany=Contactes/adreces d'aquest tercer
|
||||
ActionsOnCompany=Accions front a aquest tercer
|
||||
NActions=%s accions
|
||||
NActionsLate=%s en retard
|
||||
@@ -325,10 +327,11 @@ Duration=Duració
|
||||
TotalDuration=Duració total
|
||||
Summary=Resum
|
||||
MyBookmarks=Els meus marcadors
|
||||
OtherInformationsBoxes=Altres caixes d'informació
|
||||
OtherInformationsBoxes=Altres panells d'informació
|
||||
DolibarrBoard=Indicadors
|
||||
DolibarrStateBoard=Estadístiques
|
||||
DolibarrWorkBoard=Indicadors de treball
|
||||
Available=Disponible
|
||||
NotYetAvailable=Encara no disponible
|
||||
NotAvailable=No disponible
|
||||
Popularity=Popularitat
|
||||
@@ -368,7 +371,7 @@ ByUsers=Per usuari
|
||||
Links=Links
|
||||
Link=Link
|
||||
Receipts=Rebuts
|
||||
Rejects=Rebutjat
|
||||
Rejects=Devolucions
|
||||
Preview=Vista prèvia
|
||||
NextStep=Següent pas
|
||||
PreviousStep=Pas anterior
|
||||
@@ -500,7 +503,7 @@ RecordModifiedSuccessfully=Registre modificat amb èxit
|
||||
AutomaticCode=Creació automàtica de codi
|
||||
NotManaged=No generat
|
||||
FeatureDisabled=Funció desactivada
|
||||
MoveBox=Desplaçar la caixa %s
|
||||
MoveBox=Desplaçar el panell %s
|
||||
Offered=Oferta
|
||||
NotEnoughPermissions=No té autorització per aquesta acció
|
||||
SessionName=Nom sesió
|
||||
@@ -560,6 +563,9 @@ ValidateBefore=Per poder utilitzar aquesta funció ha de validar la fitxa
|
||||
Visibility=Visibilitat
|
||||
Private=Privat
|
||||
Hidden=Memòria cau
|
||||
Resources=Recursos
|
||||
Source=Orige
|
||||
Prefix=Prefixe
|
||||
# Week day
|
||||
Day1=Dillus
|
||||
Day2=Dimarts
|
||||
|
||||
@@ -1,151 +1,155 @@
|
||||
# Dolibarr language file - ca_ES - members
|
||||
CHARSET= UTF-8
|
||||
MembersArea= Àrea membres
|
||||
PublicMembersArea= Àrea pública dels membres
|
||||
MemberCard= Fitxa membre
|
||||
SubscriptionCard= Fitxa cotització
|
||||
Member= Membre
|
||||
Members= Membres
|
||||
ShowMember= Mostrar fitxa membre
|
||||
MemberAccount= Login membre
|
||||
UserNotLinkedToMember= Usuari no vinculat a un membre
|
||||
MembersTickets= Etiquetes membres
|
||||
FundationMembers= Membres de l'associació
|
||||
Attributs= Atributs
|
||||
ErrorMemberTypeNotDefined= No s'ha indicat el tipus de membre
|
||||
ListOfPublicMembers= Llista de membres públics
|
||||
ListOfValidatedPublicMembers= Llista de membres públics validats
|
||||
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).
|
||||
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
|
||||
CardContent= Contingut de la seva fitxa de membre
|
||||
SetLinkToUser= Vincular a un usuari Dolibarr
|
||||
SetLinkToThirdParty= Vincular a un tercer Dolibarr
|
||||
MembersCards= Carnets de membres
|
||||
MembersList= Llistat de membres
|
||||
MembersListToValid= Llistat de membres esborrany (a validar)
|
||||
MembersListValid= Llistat de membres validats
|
||||
MembersListUpToDate= Llistat dels membres vàlids al dia d'adhesió
|
||||
MembersListNotUpToDate= Llistat dels membres vàlids no al dia d'adhesió
|
||||
MembersListResiliated= Llistat dels membres donats de baixa
|
||||
MembersListQualified= Llistat dels membres qualificats
|
||||
MenuMembersToValidate= Membres esborrany
|
||||
MenuMembersValidated= Membres validats
|
||||
MenuMembersUpToDate= Membres al dia
|
||||
MenuMembersNotUpToDate= Membres no al dia
|
||||
MenuMembersResiliated= Membres donats de baixa
|
||||
DateAbonment= Data afiliació
|
||||
DateSubscription= Data afiliació
|
||||
DateNextSubscription= Data propera afiliació
|
||||
DateEndSubscription= Data fi afiliació
|
||||
EndSubscription= Fi afiliació
|
||||
SubscriptionId= ID afiliació
|
||||
MemberId= ID membre
|
||||
NewMember= Nou membre
|
||||
NewType= Nou tipus de membre
|
||||
MemberType= Tipus de membre
|
||||
MemberTypeId= ID tipus de membre
|
||||
MemberTypeLabel= Etiqueta tipus de membre
|
||||
MembersTypes= Tipus de membres
|
||||
MembersAttributes= Atributs membres
|
||||
SearchAMember= Cercar un membre
|
||||
MemberStatusDraft= Esborrany (a validar)
|
||||
MemberStatusDraftShort= A validar
|
||||
MemberStatusActive= Validat (en espera d'afiliació)
|
||||
MemberStatusActiveShort= Validat
|
||||
MemberStatusActiveLate= Afiliació no al dia
|
||||
MemberStatusActiveLateShort= No al dia
|
||||
MemberStatusPaid= Afiliació al dia
|
||||
MemberStatusPaidShort= Al dia
|
||||
MemberStatusResiliated= Membre donat de baixa
|
||||
MemberStatusResiliatedShort= De baixa
|
||||
MembersStatusToValid= Membres esborrany
|
||||
MembersStatusToValidShort= Membres esborrany
|
||||
MembersStatusValidated= Membres validats
|
||||
MembersStatusPaid= Afiliacions al dia
|
||||
MembersStatusPaidShort= Al dia
|
||||
MembersStatusNotPaid= Afiliacions no al dia
|
||||
MembersStatusNotPaidShort= No al dia
|
||||
MembersStatusResiliated= Membres donats de baixa
|
||||
MembersStatusResiliatedShort= Membres donats de baixa
|
||||
NewCotisation= Nova afiliació
|
||||
PaymentSubscription= Pagament de quotes
|
||||
EditMember= Edició membre
|
||||
SubscriptionEndDate= Data fi afiliació
|
||||
NewAttribute= Nou atribut
|
||||
AttributeCode= Codi atribut
|
||||
OptionalFieldsSetup= Configuració dels camps opcionals
|
||||
MembersTypeSetup= Configuració dels tipus de membres
|
||||
NewSubscription= Nova afiliació
|
||||
Subscription= Afiliació
|
||||
Subscriptions= Afiliacions
|
||||
SubscriptionLate= En retard
|
||||
SubscriptionNotReceived= Afiliació no rebuda
|
||||
SubscriptionLateShort= En retard
|
||||
SubscriptionNotReceivedShort= No rebuda
|
||||
ListOfSubscriptions= Llista d'afiliacions
|
||||
SendCardByMail= Enviar fitxa
|
||||
AddMember= Afegir membre
|
||||
NoTypeDefinedGoToSetup= Cap tipus de membre definit. Aneu a Configuració->Tipus de membres
|
||||
NewMemberType= Nou tipus de membre
|
||||
WelcomeEMail= E-mail
|
||||
SubscriptionRequired= Subjecte a cotització
|
||||
EditType= Edició del tipus de membre
|
||||
DeleteType= Eliminar
|
||||
VoteAllowed= Vot autoritzat
|
||||
Physical= Físic
|
||||
Moral= Moral
|
||||
MorPhy= Moral/Físic
|
||||
Reenable= Reactivar
|
||||
ResiliateMember= Donar de baixa un membre
|
||||
ConfirmResiliateMember= Esteu segur de voler donar de baixa a aquest membre?
|
||||
DeleteMember= Eliminar un membre
|
||||
ConfirmDeleteMember= Esteu segur de voler eliminar aquest membre (Eliminar un membre suprimeix també totes les seves cotitzacions)?
|
||||
DeleteSubscription= Eliminar una afiliació
|
||||
ConfirmDeleteSubscription= Esteu segur de voler eliminar aquesta afiliació?
|
||||
Filehtpasswd= Arxiu htpasswd
|
||||
ValidateMember= Validar un 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.
|
||||
PublicMemberList= Llistat públic de membres
|
||||
BlankSubscriptionForm= Formulari d'inscripció
|
||||
MemberPublicLinks= Links/pàgines publiques
|
||||
ExportDataset_member_1= Membres i afiliacions
|
||||
LastMembers= Els %s darrers membres
|
||||
LastMembersModified= Els %s darrers membres modificats
|
||||
AttributeName= Nom de l'atribut
|
||||
FieldEdition= Edició del camp %s
|
||||
AlphaNumOnlyCharsAndNoSpace= només carateres alfanumèrics sense espais
|
||||
String= Cadena
|
||||
Text= Text llarg
|
||||
Int= Numèric
|
||||
Date= Data
|
||||
DateAndTime= Data i hora
|
||||
PublicMemberCard= Fitxa pública membre
|
||||
MemberNotOrNoMoreExpectedToSubscribe= No sotmesa a cotització
|
||||
AddSubscription= Afegir afiliació
|
||||
ShowSubscription= Mostrar afiliació
|
||||
MemberModifiedInDolibarr= Membre modificat en Dolibarr
|
||||
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= E-mail enviat quan un convidat es autoinscrigui
|
||||
DescADHERENT_MAIL_VALID_SUBJECT= Assumpte del correu electrònic 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= E-mail de validació d'una afiliació
|
||||
DescADHERENT_MAIL_RESIL_SUBJECT= Assumpte d'e-mail de baixa
|
||||
DescADHERENT_MAIL_RESIL= E-mail de baixa
|
||||
DescADHERENT_MAIL_FROM= E-mail emissor per als e-mails automàtics
|
||||
DescADHERENT_ETIQUETTE_TYPE= Format pàgines etiquetes
|
||||
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_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_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)
|
||||
ShowTypeCard= Veure tipus '%s'
|
||||
HTPasswordExport= Generació fitxer htpassword
|
||||
NoThirdPartyAssociatedToMember= Cap tercer associat a aquest membre
|
||||
ThirdPartyDolibarr= Tercers Dolibarr
|
||||
MembersAndSubscriptions= Membres y afiliacions
|
||||
CHARSET=UTF-8
|
||||
MembersArea=Àrea membres
|
||||
PublicMembersArea=Àrea pública dels membres
|
||||
MemberCard=Fitxa membre
|
||||
SubscriptionCard=Fitxa cotització
|
||||
Member=Membre
|
||||
Members=Membres
|
||||
ShowMember=Mostrar fitxa membre
|
||||
MemberAccount=Login membre
|
||||
UserNotLinkedToMember=Usuari no vinculat a un membre
|
||||
MembersTickets=Etiquetes membres
|
||||
FundationMembers=Membres de l'associació
|
||||
Attributs=Atributs
|
||||
ErrorMemberTypeNotDefined=No s'ha indicat el tipus de membre
|
||||
ListOfPublicMembers=Llista de membres públics
|
||||
ListOfValidatedPublicMembers=Llista de membres públics validats
|
||||
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).
|
||||
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
|
||||
CardContent=Contingut de la seva fitxa de membre
|
||||
SetLinkToUser=Vincular a un usuari Dolibarr
|
||||
SetLinkToThirdParty=Vincular a un tercer Dolibarr
|
||||
MembersCards=Carnets de membres
|
||||
MembersList=Llistat de membres
|
||||
MembersListToValid=Llistat de membres esborrany (a validar)
|
||||
MembersListValid=Llistat de membres validats
|
||||
MembersListUpToDate=Llistat dels membres vàlids al dia d'adhesió
|
||||
MembersListNotUpToDate=Llistat dels membres vàlids no al dia d'adhesió
|
||||
MembersListResiliated=Llistat dels membres donats de baixa
|
||||
MembersListQualified=Llistat dels membres qualificats
|
||||
MenuMembersToValidate=Membres esborrany
|
||||
MenuMembersValidated=Membres validats
|
||||
MenuMembersUpToDate=Membres al dia
|
||||
MenuMembersNotUpToDate=Membres no al dia
|
||||
MenuMembersResiliated=Membres donats de baixa
|
||||
DateAbonment=Data afiliació
|
||||
DateSubscription=Data afiliació
|
||||
DateNextSubscription=Data propera afiliació
|
||||
DateEndSubscription=Data fi afiliació
|
||||
EndSubscription=Fi afiliació
|
||||
SubscriptionId=ID afiliació
|
||||
MemberId=ID membre
|
||||
NewMember=Nou membre
|
||||
NewType=Nou tipus de membre
|
||||
MemberType=Tipus de membre
|
||||
MemberTypeId=ID tipus de membre
|
||||
MemberTypeLabel=Etiqueta tipus de membre
|
||||
MembersTypes=Tipus de membres
|
||||
MembersAttributes=Atributs membres
|
||||
SearchAMember=Cercar un membre
|
||||
MemberStatusDraft=Esborrany (a validar)
|
||||
MemberStatusDraftShort=A validar
|
||||
MemberStatusActive=Validat (en espera d'afiliació)
|
||||
MemberStatusActiveShort=Validat
|
||||
MemberStatusActiveLate=Afiliació no al dia
|
||||
MemberStatusActiveLateShort=No al dia
|
||||
MemberStatusPaid=Afiliació al dia
|
||||
MemberStatusPaidShort=Al dia
|
||||
MemberStatusResiliated=Membre donat de baixa
|
||||
MemberStatusResiliatedShort=De baixa
|
||||
MembersStatusToValid=Membres esborrany
|
||||
MembersStatusToValidShort=Membres esborrany
|
||||
MembersStatusValidated=Membres validats
|
||||
MembersStatusPaid=Afiliacions al dia
|
||||
MembersStatusPaidShort=Al dia
|
||||
MembersStatusNotPaid=Afiliacions no al dia
|
||||
MembersStatusNotPaidShort=No al dia
|
||||
MembersStatusResiliated=Membres donats de baixa
|
||||
MembersStatusResiliatedShort=Membres donats de baixa
|
||||
NewCotisation=Nova afiliació
|
||||
PaymentSubscription=Pagament de quotes
|
||||
EditMember=Edició membre
|
||||
SubscriptionEndDate=Data fi afiliació
|
||||
NewAttribute=Nou atribut
|
||||
AttributeCode=Codi atribut
|
||||
OptionalFieldsSetup=Configuració dels camps opcionals
|
||||
MembersTypeSetup=Configuració dels tipus de membres
|
||||
NewSubscription=Nova afiliació
|
||||
Subscription=Afiliació
|
||||
Subscriptions=Afiliacions
|
||||
SubscriptionLate=En retard
|
||||
SubscriptionNotReceived=Afiliació no rebuda
|
||||
SubscriptionLateShort=En retard
|
||||
SubscriptionNotReceivedShort=No rebuda
|
||||
ListOfSubscriptions=Llista d'afiliacions
|
||||
SendCardByMail=Enviar fitxa per e-mail
|
||||
AddMember=Afegir membre
|
||||
NoTypeDefinedGoToSetup=Cap tipus de membre definit. Aneu a Configuració->Tipus de membres
|
||||
NewMemberType=Nou tipus de membre
|
||||
WelcomeEMail=E-mail
|
||||
SubscriptionRequired=Subjecte a cotització
|
||||
EditType=Edició del tipus de membre
|
||||
DeleteType=Eliminar
|
||||
VoteAllowed=Vot autoritzat
|
||||
Physical=Físic
|
||||
Moral=Moral
|
||||
MorPhy=Moral/Físic
|
||||
Reenable=Reactivar
|
||||
ResiliateMember=Donar de baixa un membre
|
||||
ConfirmResiliateMember=Esteu segur de voler donar de baixa a aquest membre?
|
||||
DeleteMember=Eliminar un membre
|
||||
ConfirmDeleteMember=Esteu segur de voler eliminar aquest membre (Eliminar un membre suprimeix també totes les seves cotitzacions)?
|
||||
DeleteSubscription=Eliminar una afiliació
|
||||
ConfirmDeleteSubscription=Esteu segur de voler eliminar aquesta afiliació?
|
||||
Filehtpasswd=Arxiu htpasswd
|
||||
ValidateMember=Validar un 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.
|
||||
PublicMemberList=Llistat públic de membres
|
||||
BlankSubscriptionForm=Formulari d'inscripció
|
||||
MemberPublicLinks=Links/pàgines publiques
|
||||
ExportDataset_member_1=Membres i afiliacions
|
||||
LastMembers=Els %s darrers membres
|
||||
LastMembersModified=Els %s darrers membres modificats
|
||||
AttributeName=Nom de l'atribut
|
||||
FieldEdition=Edició del camp %s
|
||||
AlphaNumOnlyCharsAndNoSpace=només carateres alfanumèrics sense espais
|
||||
String=Cadena
|
||||
Text=Text llarg
|
||||
Int=Numèric
|
||||
Date=Data
|
||||
DateAndTime=Data i hora
|
||||
PublicMemberCard=Fitxa pública membre
|
||||
MemberNotOrNoMoreExpectedToSubscribe=No sotmesa a cotització
|
||||
AddSubscription=Afegir afiliació
|
||||
ShowSubscription=Mostrar afiliació
|
||||
MemberModifiedInDolibarr=Membre modificat en Dolibarr
|
||||
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=E-mail enviat quan un convidat es autoinscrigui
|
||||
DescADHERENT_MAIL_VALID_SUBJECT=Assumpte del correu electrònic 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=E-mail de validació d'una afiliació
|
||||
DescADHERENT_MAIL_RESIL_SUBJECT=Assumpte d'e-mail de baixa
|
||||
DescADHERENT_MAIL_RESIL=E-mail de baixa
|
||||
DescADHERENT_MAIL_FROM=E-mail emissor per als e-mails automàtics
|
||||
DescADHERENT_ETIQUETTE_TYPE=Format pàgines etiquetes
|
||||
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_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_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)
|
||||
ShowTypeCard=Veure tipus '%s'
|
||||
HTPasswordExport=Generació fitxer htpassword
|
||||
NoThirdPartyAssociatedToMember=Cap tercer associat a aquest membre
|
||||
ThirdPartyDolibarr=Tercers Dolibarr
|
||||
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
|
||||
|
||||
@@ -1,134 +1,134 @@
|
||||
# Dolibarr language file - ca_ES - orders
|
||||
CHARSET= UTF-8
|
||||
OrdersArea= Àrea comandes de clients
|
||||
SuppliersOrdersArea= Àrea comandes a proveïdors
|
||||
OrderCard= Fitxa comanda
|
||||
Order= Comanda
|
||||
Orders= Comandes
|
||||
OrderLine= Línia de comanda
|
||||
OrderFollow= Seguiment
|
||||
OrderContact= Contactes comanda
|
||||
OrderDate= Data comanda
|
||||
OrderToProcess= Comanda a processar
|
||||
NewOrder= Nova comanda
|
||||
ToOrder= Realitzar comanda
|
||||
MakeOrder= Realitzar comanda
|
||||
SupplierOrder= Comanda a proveïdor
|
||||
SuppliersOrders= Comandes a proveïdor
|
||||
SuppliersOrdersRunning= Comandes a proveïdor en curs
|
||||
CustomerOrder= Comada de client
|
||||
CustomersOrders= Comandes de client
|
||||
CustomersOrdersRunning= Comandes de client en curs
|
||||
CustomersOrdersAndOrdersLines= Comandes de client i línies de comanda
|
||||
OrdersToValid= Comandes a validar
|
||||
OrdersToBill= Comandes a facturar
|
||||
OrdersInProcess= Comandes en procés
|
||||
OrdersToProcess= Comandes a processar
|
||||
StatusOrderCanceledShort= Anul·lada
|
||||
StatusOrderDraftShort= Esborrany
|
||||
StatusOrderValidatedShort= Validada
|
||||
StatusOrderOnProcessShort= En curs
|
||||
StatusOrderProcessedShort= Processada
|
||||
StatusOrderToBillShort= A facturar
|
||||
StatusOrderApprovedShort= Aprovada
|
||||
StatusOrderRefusedShort= Rebutjada
|
||||
StatusOrderToProcessShort= A processar
|
||||
StatusOrderReceivedPartiallyShort= Rebuda parcialment
|
||||
StatusOrderReceivedAllShort= Rebuda
|
||||
StatusOrderCanceled= Anul-lada
|
||||
StatusOrderDraft= Esborrany (a validar)
|
||||
StatusOrderValidated= Validada
|
||||
StatusOrderOnProcess= En procés
|
||||
StatusOrderProcessed= Processada
|
||||
StatusOrderToBill= A facturar
|
||||
StatusOrderApproved= Aprovada
|
||||
StatusOrderRefused= Rebutjada
|
||||
StatusOrderReceivedPartially= Rebuda parcialment
|
||||
StatusOrderReceivedAll= Rebuda
|
||||
DraftOrWaitingApproved= Esborrany o aprovat encara no controlat
|
||||
DraftOrWaitingShipped= Esborrany o validada encara no expedida
|
||||
SearchOrder= Cercar una comanda
|
||||
MenuOrdersToBill= Comandes a facturar
|
||||
Sending= Enviament
|
||||
Sendings= Enviaments
|
||||
ShipProduct= Enviar producte
|
||||
Discount= Descompte
|
||||
CreateOrder= Crear comanda
|
||||
RefuseOrder= Rebutjar la comanda
|
||||
ApproveOrder= Acceptar la comanda
|
||||
ValidateOrder= Validar la comanda
|
||||
DeleteOrder= Eliminar la comanda
|
||||
CancelOrder= Anul·lar la comanda
|
||||
AddOrder= Crear comanda
|
||||
AddToMyOrders= afegir a les meves comandes
|
||||
AddToOtherOrders= Afegir a altres comandes
|
||||
ShowOrder= Mostrar comanda
|
||||
NoOpenedOrders= Cap comanda esborrany
|
||||
NoOtherOpenedOrders= Cap altra comanda esborrany
|
||||
OtherOrders= Altres comandes
|
||||
LastOrders= Les %s darreres comandes
|
||||
LastModifiedOrders= Les %s darreres comandes modificades
|
||||
LastClosedOrders= Les %s darreres comandes tancades
|
||||
AllOrders= Totes les comandes
|
||||
NbOfOrders= Nombre de comandes
|
||||
OrdersStatistics= Estadístiques de comandes
|
||||
OrdersStatisticsSuppliers= Estadístiques de comandes a proveïdors
|
||||
NumberOfOrdersByMonth= Nombre de comandes per mes
|
||||
AmountOfOrdersByMonthHT= Import total de comandes per mes (Sense IVA)
|
||||
ListOfOrders= Llistat de comandes
|
||||
CloseOrder= Tancar comanda
|
||||
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
|
||||
ConfirmDeleteOrder= Esteu segur de voler eliminar aquest comanda?
|
||||
ConfirmValidateOrder= Esteu segur de voler validar aquesta comanda sota la referència <b>%s</b> ?
|
||||
ConfirmCancelOrder= Esteu segur de voler anul lar aquesta comanda?
|
||||
ConfirmMakeOrder= Esteu segur de voler confirmar aquest comanda a data de <b>%s</b> ?
|
||||
GenerateBill= Facturar
|
||||
ClassifyBilled= Classificar "Facturat"
|
||||
ComptaCard= Fitxa comptable
|
||||
DraftOrders= Comandes esborrany
|
||||
RelatedOrders= Comandes adjuntes
|
||||
OnProcessOrders= Comandes en procés
|
||||
RefOrder= Ref. comanda
|
||||
RefCustomerOrder= Ref. comanda client
|
||||
RefCustomerOrderShort= Ref. com. client
|
||||
SendOrderByMail= Enviar comanda per e-mail
|
||||
ActionsOnOrder= Accions sobre la comanda
|
||||
NoArticleOfTypeProduct= No hi ha articles de tipus 'producte' i per tant enviables en aquesta comanda
|
||||
OrderMode= Mètode de comanda
|
||||
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
|
||||
RunningOrders= Comandes en curs
|
||||
UserWithApproveOrderGrant= Usuaris habilitats per aprovar les comandes
|
||||
PaymentOrderRef= Pagament comanda %s
|
||||
CloneOrder= Clonar comanda
|
||||
ConfirmCloneOrder= Esteu segur de voler clonar aquesta comanda <b>%s</b>?
|
||||
##### Types de contacts #####==
|
||||
TypeContact_commande_internal_SALESREPFOLL= Responsable seguiment comanda client
|
||||
TypeContact_commande_internal_SHIPPING= Responsable enviament comanda client
|
||||
TypeContact_commande_external_BILLING= Contacte client facturació comanda
|
||||
TypeContact_commande_external_SHIPPING= Contacte client lliurament comanda
|
||||
TypeContact_commande_external_CUSTOMER= Contacte client seguiment comanda
|
||||
TypeContact_order_supplier_internal_SALESREPFOLL= Responsable seguiment comanda a proveïdor
|
||||
TypeContact_order_supplier_internal_SHIPPING= Responsable recepció comanda a proveïdor
|
||||
TypeContact_order_supplier_external_BILLING= Contacte proveïdor facturació comanda
|
||||
TypeContact_order_supplier_external_SHIPPING= Contacte proveïdor lliurament comanda
|
||||
TypeContact_order_supplier_external_CUSTOMER= Contacte proveïdor seguiment comanda
|
||||
Error_COMMANDE_SUPPLIER_ADDON_NotDefined= Constant COMMANDE_SUPPLIER_ADDON no definida
|
||||
Error_COMMANDE_ADDON_NotDefined= Constant COMMANDE_ADDON no definida
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File= Error en la càrrega de l'arxiu mòdul '%s'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File= Error en la càrrega de l'arxiu mòdul '%s'
|
||||
# Sources==
|
||||
OrderSource0= Pressupost
|
||||
OrderSource1= Internet
|
||||
OrderSource2= Campanya per correu
|
||||
OrderSource3= Campanya telefònica
|
||||
OrderSource4= Campanya per fax
|
||||
OrderSource5= Comercial
|
||||
OrderSource6= Revistes
|
||||
QtyOrdered= Qt. demanda
|
||||
AddDeliveryCostLine= Afegir una línia de despeses de ports indicant el pes de la comanda
|
||||
# Document models==
|
||||
PDFEinsteinDescription= Model de pressupost complet (logo...)
|
||||
# NumRef Modules==
|
||||
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
|
||||
CHARSET=UTF-8
|
||||
OrdersArea=Àrea comandes de clients
|
||||
SuppliersOrdersArea=Àrea comandes a proveïdors
|
||||
OrderCard=Fitxa comanda
|
||||
Order=Comanda
|
||||
Orders=Comandes
|
||||
OrderLine=Línia de comanda
|
||||
OrderFollow=Seguiment
|
||||
OrderContact=Contactes comanda
|
||||
OrderDate=Data comanda
|
||||
OrderToProcess=Comanda a processar
|
||||
NewOrder=Nova comanda
|
||||
ToOrder=Realitzar comanda
|
||||
MakeOrder=Realitzar comanda
|
||||
SupplierOrder=Comanda a proveïdor
|
||||
SuppliersOrders=Comandes a proveïdor
|
||||
SuppliersOrdersRunning=Comandes a proveïdor en curs
|
||||
CustomerOrder=Comada de client
|
||||
CustomersOrders=Comandes de client
|
||||
CustomersOrdersRunning=Comandes de client en curs
|
||||
CustomersOrdersAndOrdersLines=Comandes de client i línies de comanda
|
||||
OrdersToValid=Comandes a validar
|
||||
OrdersToBill=Comandes a facturar
|
||||
OrdersInProcess=Comandes en procés
|
||||
OrdersToProcess=Comandes a processar
|
||||
StatusOrderCanceledShort=Anul·lada
|
||||
StatusOrderDraftShort=Esborrany
|
||||
StatusOrderValidatedShort=Validada
|
||||
StatusOrderOnProcessShort=En curs
|
||||
StatusOrderProcessedShort=Processada
|
||||
StatusOrderToBillShort=A facturar
|
||||
StatusOrderApprovedShort=Aprovada
|
||||
StatusOrderRefusedShort=Rebutjada
|
||||
StatusOrderToProcessShort=A processar
|
||||
StatusOrderReceivedPartiallyShort=Rebuda parcialment
|
||||
StatusOrderReceivedAllShort=Rebuda
|
||||
StatusOrderCanceled=Anul-lada
|
||||
StatusOrderDraft=Esborrany (a validar)
|
||||
StatusOrderValidated=Validada
|
||||
StatusOrderOnProcess=En procés
|
||||
StatusOrderProcessed=Processada
|
||||
StatusOrderToBill=A facturar
|
||||
StatusOrderApproved=Aprovada
|
||||
StatusOrderRefused=Rebutjada
|
||||
StatusOrderReceivedPartially=Rebuda parcialment
|
||||
StatusOrderReceivedAll=Rebuda
|
||||
DraftOrWaitingApproved=Esborrany o aprovat encara no controlat
|
||||
DraftOrWaitingShipped=Esborrany o validada encara no expedida
|
||||
SearchOrder=Cercar una comanda
|
||||
MenuOrdersToBill=Comandes a facturar
|
||||
Sending=Enviament
|
||||
Sendings=Enviaments
|
||||
ShipProduct=Enviar producte
|
||||
Discount=Descompte
|
||||
CreateOrder=Crear comanda
|
||||
RefuseOrder=Rebutjar la comanda
|
||||
ApproveOrder=Acceptar la comanda
|
||||
ValidateOrder=Validar la comanda
|
||||
DeleteOrder=Eliminar la comanda
|
||||
CancelOrder=Anul·lar la comanda
|
||||
AddOrder=Crear comanda
|
||||
AddToMyOrders=afegir a les meves comandes
|
||||
AddToOtherOrders=Afegir a altres comandes
|
||||
ShowOrder=Mostrar comanda
|
||||
NoOpenedOrders=Cap comanda esborrany
|
||||
NoOtherOpenedOrders=Cap altra comanda esborrany
|
||||
OtherOrders=Altres comandes
|
||||
LastOrders=Les %s darreres comandes
|
||||
LastModifiedOrders=Les %s darreres comandes modificades
|
||||
LastClosedOrders=Les %s darreres comandes tancades
|
||||
AllOrders=Totes les comandes
|
||||
NbOfOrders=Nombre de comandes
|
||||
OrdersStatistics=Estadístiques de comandes
|
||||
OrdersStatisticsSuppliers=Estadístiques de comandes a proveïdors
|
||||
NumberOfOrdersByMonth=Nombre de comandes per mes
|
||||
AmountOfOrdersByMonthHT=Import total de comandes per mes (Sense IVA)
|
||||
ListOfOrders=Llistat de comandes
|
||||
CloseOrder=Tancar comanda
|
||||
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
|
||||
ConfirmDeleteOrder=Esteu segur de voler eliminar aquest comanda?
|
||||
ConfirmValidateOrder=Esteu segur de voler validar aquesta comanda sota la referència <b>%s</b> ?
|
||||
ConfirmCancelOrder=Esteu segur de voler anul lar aquesta comanda?
|
||||
ConfirmMakeOrder=Esteu segur de voler confirmar aquest comanda a data de <b>%s</b> ?
|
||||
GenerateBill=Facturar
|
||||
ClassifyBilled=Classificar "Facturat"
|
||||
ComptaCard=Fitxa comptable
|
||||
DraftOrders=Comandes esborrany
|
||||
RelatedOrders=Comandes adjuntes
|
||||
OnProcessOrders=Comandes en procés
|
||||
RefOrder=Ref. comanda
|
||||
RefCustomerOrder=Ref. comanda client
|
||||
RefCustomerOrderShort=Ref. com. client
|
||||
SendOrderByMail=Enviar comanda per e-mail
|
||||
ActionsOnOrder=Accions sobre la comanda
|
||||
NoArticleOfTypeProduct=No hi ha articles de tipus 'producte' i per tant enviables en aquesta comanda
|
||||
OrderMode=Mètode de comanda
|
||||
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
|
||||
RunningOrders=Comandes en curs
|
||||
UserWithApproveOrderGrant=Usuaris habilitats per aprovar les comandes
|
||||
PaymentOrderRef=Pagament comanda %s
|
||||
CloneOrder=Clonar comanda
|
||||
ConfirmCloneOrder=Esteu segur de voler clonar aquesta comanda <b>%s</b>?
|
||||
DispatchSupplierOrder=Recepció de la comanda a proveïdor %s
|
||||
##### Types de contacts #####
|
||||
TypeContact_commande_internal_SALESREPFOLL=Responsable seguiment comanda client
|
||||
TypeContact_commande_internal_SHIPPING=Responsable enviament comanda client
|
||||
TypeContact_commande_external_BILLING=Contacte client facturació comanda
|
||||
TypeContact_commande_external_SHIPPING=Contacte client lliurament comanda
|
||||
TypeContact_commande_external_CUSTOMER=Contacte client seguiment comanda
|
||||
TypeContact_order_supplier_internal_SALESREPFOLL=Responsable seguiment comanda a proveïdor
|
||||
TypeContact_order_supplier_internal_SHIPPING=Responsable recepció comanda a proveïdor
|
||||
TypeContact_order_supplier_external_BILLING=Contacte proveïdor facturació comanda
|
||||
TypeContact_order_supplier_external_SHIPPING=Contacte proveïdor lliurament comanda
|
||||
TypeContact_order_supplier_external_CUSTOMER=Contacte proveïdor seguiment comanda
|
||||
Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON no definida
|
||||
Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON no definida
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Error en la càrrega de l'arxiu mòdul '%s'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File=Error en la càrrega de l'arxiu mòdul '%s'
|
||||
# Sources
|
||||
OrderSource0=Pressupost
|
||||
OrderSource1=Internet
|
||||
OrderSource2=Campanya per correu
|
||||
OrderSource3=Campanya telefònica
|
||||
OrderSource4=Campanya per fax
|
||||
OrderSource5=Comercial
|
||||
OrderSource6=Revistes
|
||||
QtyOrdered=Qt. demanda
|
||||
AddDeliveryCostLine=Afegir una línia de despeses de ports indicant el pes de la comanda
|
||||
# Document models
|
||||
PDFEinsteinDescription=Model de comanda complet (logo...)
|
||||
PDFEdisonDescription=Model de comanda simple
|
||||
|
||||
@@ -1,187 +1,199 @@
|
||||
# Dolibarr language file - ca_ES - other
|
||||
CHARSET= UTF-8
|
||||
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.
|
||||
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 ...).
|
||||
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
|
||||
ErrorCantReadFile= Error de lectura del fitxer '%s'
|
||||
ErrorCantReadDir= Error de lectura de la carpeta '%s'
|
||||
ErrorFailedToFindEntity= Error de lectura de l'entitat '%s'
|
||||
ErrorBadLoginPassword= Identificadors d'usuari o contrasenya incorrectes
|
||||
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>.
|
||||
ErrorFailedToChangePassword= Error en la modificació de la contrasenya
|
||||
ErrorLoginDoesNotExists= El compte d'usuari de <b>%s</b> no s'ha trobat.
|
||||
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 ...
|
||||
SecurityCode= Codi de seguretat
|
||||
Calendar= Calendari
|
||||
AddTrip= Crear desplaçament
|
||||
Tools= Utilitats
|
||||
Birthday= Aniversari
|
||||
BirthdayDate= Data aniversari
|
||||
DateToBirth= Data de naiximent
|
||||
BirthdayAlertOn= alerta aniversari activada
|
||||
BirthdayAlertOff= alerta aniversari desactivada
|
||||
Notify_NOTIFY_VAL_FICHINTER= Validació fitxa intervenció
|
||||
Notify_NOTIFY_VAL_FAC= Validació factura
|
||||
Notify_NOTIFY_APP_ORDER_SUPPLIER= Aprovació comanda a proveïdor
|
||||
Notify_NOTIFY_REF_ORDER_SUPPLIER= Rebuig comanda a proveïdor
|
||||
Notify_NOTIFY_VAL_ORDER= Validació comanda client
|
||||
Notify_NOTIFY_VAL_PROPAL= Validació pressupost client
|
||||
NbOfAttachedFiles= Número arxius/documents adjunts
|
||||
TotalSizeOfAttachedFiles= Mida total dels arxius/documents adjunts
|
||||
MaxSize= Tamany màxim
|
||||
AttachANewFile= Adjuntar nou arxiu/document
|
||||
LinkedObject= Objecte adjuntat
|
||||
Miscellanous= Diversos
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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
|
||||
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ó.
|
||||
ChooseYourDemoProfil= Voleu veure el perfil de demostració que millor correspongui a la seva activitat ...
|
||||
DemoFundation= Gestió de membres d'una associació
|
||||
DemoFundation2= Gestió de membres i tresoreria d'una associació
|
||||
DemoCompanyServiceOnly= Gestió d'un treballador per compte propi realitzant serveis
|
||||
DemoCompanyShopWithCashDesk= Gestió d'una botiga amb caixa
|
||||
DemoCompanyProductAndStocks= Gestió d'una PIME amb venda de productes
|
||||
DemoCompanyAll= Gestió d'una PIME amb activitats múltiples (tots els mòduls principals)
|
||||
GoToDemo= Accedir a la demo
|
||||
CreatedBy= Creat per %s
|
||||
ModifiedBy= Modificat per %s
|
||||
ValidatedBy= Validat per %s
|
||||
CanceledBy= Anul·lat per %s
|
||||
ClosedBy= Tancat per %s
|
||||
FileWasRemoved= L'arxiu %s s'ha eliminat
|
||||
DirWasRemoved= La carpeta %s s'ha eliminat
|
||||
FeatureNotYetAvailableShort= Disponible en una propera versió
|
||||
FeatureNotYetAvailable= Funcionalitat encara no disponible en aquesta versió
|
||||
FeatureExperimental= Funcionalitat experimental. No és estable en aquesta versió
|
||||
FeatureDevelopment= Funcionalitat en desenvolupament. No estable en aquesta versió
|
||||
FeaturesSupported= Funcionalitats suportades
|
||||
Width= llarg
|
||||
Height= alt
|
||||
Depth= fons
|
||||
Weight= Pes
|
||||
TotalWeight= Pes total
|
||||
WeightUnitton= Tones
|
||||
WeightUnitkg= kg
|
||||
WeightUnitg= g
|
||||
WeightUnitmg= mg
|
||||
Length= Longitud
|
||||
LengthUnitm= m
|
||||
LengthUnitdm= dm
|
||||
LengthUnitcm= cm
|
||||
LengthUnitmm= mm
|
||||
Surface= Superfície
|
||||
SurfaceUnitm2= m2
|
||||
SurfaceUnitdm2= dm2
|
||||
SurfaceUnitcm2= cm2
|
||||
SurfaceUnitmm2= mm2
|
||||
Volume= Volum
|
||||
TotalVolume= Volum total
|
||||
VolumeUnitm3= m3
|
||||
VolumeUnitdm3= dm3 (l)
|
||||
VolumeUnitcm3= cm3 (ml)
|
||||
VolumeUnitmm3= mm3 (µl)
|
||||
Size= tamany
|
||||
SizeUnitm= m
|
||||
SizeUnitdm= dm
|
||||
SizeUnitcm= cm
|
||||
SizeUnitmm= mm
|
||||
BugTracker= Incidències
|
||||
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.
|
||||
BackToLoginPage= Tornar a la pàgina de connexió
|
||||
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.
|
||||
EnableGDLibraryDesc= Ha d'activar o instal·lar la llibreria GD en el seu PHP per poder activar aquesta opció
|
||||
EnablePhpAVModuleDesc= Ha d'instal·lar un mòdul PHP compatible amb el seu antivirus. (Clamav: php4-clamavlib ó php5-clamavlib)
|
||||
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>.
|
||||
DolibarrDemo= Demo de Dolibarr ERP/CRM
|
||||
StatsByNumberOfUnits= Estadístiques en nombre d'unitats de producte/servei
|
||||
StatsByNumberOfEntities= Estadístiques en nombre d'identitats referents
|
||||
NumberOfProposals= Nombre de pressupostos en els darrers 12 mesos
|
||||
NumberOfCustomerOrders= Nombre de comandes de clients en els darrers 12 mesos
|
||||
NumberOfCustomerInvoices= Nombre de factures a clients en els darrers 12 mesos
|
||||
NumberOfSupplierInvoices= Nombre de factures de proveïdors en els darrers 12 mesos
|
||||
NumberOfUnitsProposals= Nombre d'unitats en els pressupostos en els darrers 12 mesos
|
||||
NumberOfUnitsCustomerOrders= Nombre d'unitats en les comandes de clients en els darrers 12 mesos
|
||||
NumberOfUnitsCustomerInvoices= Nombre d'unitats en les factures a clients en els darrers 12 mesos
|
||||
NumberOfUnitsSupplierInvoices= Nombre d'unitats en les factures de proveïdors en els darrers 12 mesos
|
||||
EMailTextInterventionValidated= Fitxa intervenció %s validada
|
||||
EMailTextInvoiceValidated= Factura %s validada
|
||||
EMailTextProposalValidated= El pressupost %s que el concerneix ha estat validat.
|
||||
EMailTextOrderValidated= La comanda %s que el concerneix ha estat validada.
|
||||
EMailTextOrderApproved= Comanda %s aprovada
|
||||
EMailTextOrderApprovedBy= Comanda %s aprovada per %s
|
||||
EMailTextOrderRefused= Comanda %s rebutjada
|
||||
EMailTextOrderRefusedBy= Comanda %s rebutjada per %s
|
||||
ImportedWithSet= Lot d'importació (import key)
|
||||
DolibarrNotification= Notificació automàtica
|
||||
ResizeDesc= Introduïu l'ample <b>O</b> la nova alçada. La relació es conserva en canviar la mida...
|
||||
NewLength= Nou ample
|
||||
NewHeight= Nova alçada
|
||||
NewSizeAfterCropping= Noves dimensions després de retallar
|
||||
DefineNewAreaToPick= Indiqueu la zona d'imatge a conservar (Clic sobre la imatge i arrossegueu fins a la cantonada oposada)
|
||||
CurrentInformationOnImage= Informació actual sobre la imatge
|
||||
##### Bookmark #####==
|
||||
Bookmark= Marcador
|
||||
Bookmarks= Marcadors
|
||||
NewBookmark= Nou marcador
|
||||
ShowBookmark= Mostrar marcadors
|
||||
BookmarkThisPage= Afegeix aquesta pàgina als seus marcadors
|
||||
OpenANewWindow= Obrir una nova finestra
|
||||
ReplaceWindow= Reemplaça la finestra actual
|
||||
BookmarkTargetNewWindowShort= Nova finestra
|
||||
BookmarkTargetReplaceWindowShort= Finestra actual
|
||||
BookmarkTitle= Títol del marcador
|
||||
UrlOrLink= URL
|
||||
BehaviourOnClick= Comportament al fer clic a la URL
|
||||
CreateBookmark= Crear marcador
|
||||
SetHereATitleForLink= Indiqueu aquí un títol del marcador
|
||||
UseAnExternalHttpLinkOrRelativeDolibarrLink= Indicar una URL http externa o una URL Dolibarr relativa
|
||||
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark= Triar si ha de obrir-se la pàgina en una nova finestra o en l'actual
|
||||
BookmarksManagement= Gestió de marcadors
|
||||
ListOfBookmarks= Llista de marcadors
|
||||
##### Webcal #####==
|
||||
LoginWebcal= Login Webcalendar
|
||||
ErrorWebcalLoginNotDefined= El login webcalendar associat al seu usuari Dolibarr <b>%s</b> no està definit
|
||||
##### Phenix #####==
|
||||
ErrorPhenixLoginNotDefined= El login Phenix associat al seu compte Dolibarrr <b>%s</b> no està definit
|
||||
##### Calendar common #####==
|
||||
AddCalendarEntry= Afegir entrada al calendari
|
||||
NewCompanyToDolibarr= Empresa %s inserida en Dolibarr
|
||||
ContractValidatedInDolibarr= Contracte %s validat en Dolibarr
|
||||
ContractCanceledInDolibarr= Contracte %s anul·lat en Dolibarr
|
||||
ContractClosedInDolibarr= Contracte %s tancat en Dolibarr
|
||||
PropalClosedSignedInDolibarr= Pressupost %s signat en Dolibarr
|
||||
PropalClosedRefusedInDolibarr= Pressupost %s signat en Dolibarr
|
||||
PropalValidatedInDolibarr= Pressupost %s validat en Dolibarr
|
||||
InvoiceValidatedInDolibarr= Factura %s validada en Dolibarr
|
||||
InvoicePaidInDolibarr= Factura %s passada a pagada en Dolibarr
|
||||
InvoiceCanceledInDolibarr= Factura %s anul·lada en Dolibarr
|
||||
PaymentDoneInDolibarr= Pagamat %s realitzat en Dolibarr
|
||||
CustomerPaymentDoneInDolibarr= Pagament de client %s en Dolibarr
|
||||
SupplierPaymentDoneInDolibarr= Pagament a proveïdor %s en Dolibarr
|
||||
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ó
|
||||
CHARSET=UTF-8
|
||||
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.
|
||||
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 ...).
|
||||
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
|
||||
ErrorCantReadFile=Error de lectura del fitxer '%s'
|
||||
ErrorCantReadDir=Error de lectura de la carpeta '%s'
|
||||
ErrorFailedToFindEntity=Error de lectura de l'entitat '%s'
|
||||
ErrorBadLoginPassword=Identificadors d'usuari o contrasenya incorrectes
|
||||
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>.
|
||||
ErrorFailedToChangePassword=Error en la modificació de la contrasenya
|
||||
ErrorLoginDoesNotExists=El compte d'usuari de <b>%s</b> no s'ha trobat.
|
||||
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 ...
|
||||
SecurityCode=Codi de seguretat
|
||||
Calendar=Calendari
|
||||
AddTrip=Crear desplaçament
|
||||
Tools=Utilitats
|
||||
Birthday=Aniversari
|
||||
BirthdayDate=Data aniversari
|
||||
DateToBirth=Data de naiximent
|
||||
BirthdayAlertOn=alerta aniversari activada
|
||||
BirthdayAlertOff=alerta aniversari desactivada
|
||||
Notify_NOTIFY_VAL_FICHINTER=Validació fitxa intervenció
|
||||
Notify_NOTIFY_VAL_FAC=Validació factura
|
||||
Notify_NOTIFY_APP_ORDER_SUPPLIER=Aprovació comanda a proveïdor
|
||||
Notify_NOTIFY_REF_ORDER_SUPPLIER=Rebuig comanda a proveïdor
|
||||
Notify_NOTIFY_VAL_ORDER=Validació comanda client
|
||||
Notify_NOTIFY_VAL_PROPAL=Validació pressupost client
|
||||
NbOfAttachedFiles=Número arxius/documents adjunts
|
||||
TotalSizeOfAttachedFiles=Mida total dels arxius/documents adjunts
|
||||
MaxSize=Tamany màxim
|
||||
AttachANewFile=Adjuntar nou arxiu/document
|
||||
LinkedObject=Objecte adjuntat
|
||||
Miscellanous=Diversos
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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
|
||||
PredefinedMailContentSendOrder=Us adjuntem la comanda __ORDERREF__ \n\nCordialment\n\n
|
||||
PredefinedMailContentSendSupplierOrder=Us adjuntem la nostra 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ó.
|
||||
ChooseYourDemoProfil=Voleu veure el perfil de demostració que millor correspongui a la seva activitat ...
|
||||
DemoFundation=Gestió de membres d'una associació
|
||||
DemoFundation2=Gestió de membres i tresoreria d'una associació
|
||||
DemoCompanyServiceOnly=Gestió d'un treballador per compte propi realitzant serveis
|
||||
DemoCompanyShopWithCashDesk=Gestió d'una botiga amb caixa
|
||||
DemoCompanyProductAndStocks=Gestió d'una PIME amb venda de productes
|
||||
DemoCompanyAll=Gestió d'una PIME amb activitats múltiples (tots els mòduls principals)
|
||||
GoToDemo=Accedir a la demo
|
||||
CreatedBy=Creat per %s
|
||||
ModifiedBy=Modificat per %s
|
||||
ValidatedBy=Validat per %s
|
||||
CanceledBy=Anul·lat per %s
|
||||
ClosedBy=Tancat per %s
|
||||
FileWasRemoved=L'arxiu %s s'ha eliminat
|
||||
DirWasRemoved=La carpeta %s s'ha eliminat
|
||||
FeatureNotYetAvailableShort=Disponible en una propera versió
|
||||
FeatureNotYetAvailable=Funcionalitat encara no disponible en aquesta versió
|
||||
FeatureExperimental=Funcionalitat experimental. No és estable en aquesta versió
|
||||
FeatureDevelopment=Funcionalitat en desenvolupament. No estable en aquesta versió
|
||||
FeaturesSupported=Funcionalitats suportades
|
||||
Width=llarg
|
||||
Height=alt
|
||||
Depth=fons
|
||||
CalculatedWeight=Pes calculat
|
||||
CalculatedVolume=Volume calculat
|
||||
Weight=Pes
|
||||
TotalWeight=Pes total
|
||||
WeightUnitton=Tones
|
||||
WeightUnitkg=kg
|
||||
WeightUnitg=g
|
||||
WeightUnitmg=mg
|
||||
WeightUnitpound=lliura
|
||||
Length=Longitud
|
||||
LengthUnitm=m
|
||||
LengthUnitdm=dm
|
||||
LengthUnitcm=cm
|
||||
LengthUnitmm=mm
|
||||
Surface=Superfície
|
||||
SurfaceUnitm2=m2
|
||||
SurfaceUnitdm2=dm2
|
||||
SurfaceUnitcm2=cm2
|
||||
SurfaceUnitmm2=mm2
|
||||
Volume=Volum
|
||||
TotalVolume=Volum total
|
||||
VolumeUnitm3=m3
|
||||
VolumeUnitdm3=dm3 (l)
|
||||
VolumeUnitcm3=cm3 (ml)
|
||||
VolumeUnitmm3=mm3 (µl)
|
||||
VolumeUnitounce=unça
|
||||
VolumeUnitlitre=litre
|
||||
VolumeUnitgallon=galó
|
||||
Size=tamany
|
||||
SizeUnitm=m
|
||||
SizeUnitdm=dm
|
||||
SizeUnitcm=cm
|
||||
SizeUnitmm=mm
|
||||
SizeUnitinch=polzada
|
||||
SizeUnitfoot=peu
|
||||
BugTracker=Incidències
|
||||
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.
|
||||
BackToLoginPage=Tornar a la pàgina de connexió
|
||||
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.
|
||||
EnableGDLibraryDesc=Ha d'activar o instal·lar la llibreria GD en el seu PHP per poder activar aquesta opció
|
||||
EnablePhpAVModuleDesc=Ha d'instal·lar un mòdul PHP compatible amb el seu antivirus. (Clamav: php4-clamavlib ó php5-clamavlib)
|
||||
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>.
|
||||
DolibarrDemo=Demo de Dolibarr ERP/CRM
|
||||
StatsByNumberOfUnits=Estadístiques en nombre d'unitats de producte/servei
|
||||
StatsByNumberOfEntities=Estadístiques en nombre d'identitats referents
|
||||
NumberOfProposals=Nombre de pressupostos en els darrers 12 mesos
|
||||
NumberOfCustomerOrders=Nombre de comandes de clients en els darrers 12 mesos
|
||||
NumberOfCustomerInvoices=Nombre de factures a clients en els darrers 12 mesos
|
||||
NumberOfSupplierInvoices=Nombre de factures de proveïdors en els darrers 12 mesos
|
||||
NumberOfUnitsProposals=Nombre d'unitats en els pressupostos en els darrers 12 mesos
|
||||
NumberOfUnitsCustomerOrders=Nombre d'unitats en les comandes de clients en els darrers 12 mesos
|
||||
NumberOfUnitsCustomerInvoices=Nombre d'unitats en les factures a clients en els darrers 12 mesos
|
||||
NumberOfUnitsSupplierInvoices=Nombre d'unitats en les factures de proveïdors en els darrers 12 mesos
|
||||
EMailTextInterventionValidated=Fitxa intervenció %s validada
|
||||
EMailTextInvoiceValidated=Factura %s validada
|
||||
EMailTextProposalValidated=El pressupost %s que el concerneix ha estat validat.
|
||||
EMailTextOrderValidated=La comanda %s que el concerneix ha estat validada.
|
||||
EMailTextOrderApproved=Comanda %s aprovada
|
||||
EMailTextOrderApprovedBy=Comanda %s aprovada per %s
|
||||
EMailTextOrderRefused=Comanda %s rebutjada
|
||||
EMailTextOrderRefusedBy=Comanda %s rebutjada per %s
|
||||
ImportedWithSet=Lot d'importació (import key)
|
||||
DolibarrNotification=Notificació automàtica
|
||||
ResizeDesc=Introduïu l'ample <b>O</b> la nova alçada. La relació es conserva en canviar la mida...
|
||||
NewLength=Nou ample
|
||||
NewHeight=Nova alçada
|
||||
NewSizeAfterCropping=Noves dimensions després de retallar
|
||||
DefineNewAreaToPick=Indiqueu la zona d'imatge a conservar (Clic sobre la imatge i arrossegueu fins a la cantonada oposada)
|
||||
CurrentInformationOnImage=Aquesta pàgina us permet canviar la mida o quadrar la imatge. Aquí hi ha informació sobre la imatge que s'està editant
|
||||
ImageEditor=Editor d'imatge
|
||||
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.
|
||||
YouReceiveMailBecauseOfNotification2=L'esdeveniment en qüestió és el següent:
|
||||
##### Bookmark #####
|
||||
Bookmark=Marcador
|
||||
Bookmarks=Marcadors
|
||||
NewBookmark=Nou marcador
|
||||
ShowBookmark=Mostrar marcadors
|
||||
BookmarkThisPage=Afegeix aquesta pàgina als seus marcadors
|
||||
OpenANewWindow=Obrir una nova finestra
|
||||
ReplaceWindow=Reemplaça la finestra actual
|
||||
BookmarkTargetNewWindowShort=Nova finestra
|
||||
BookmarkTargetReplaceWindowShort=Finestra actual
|
||||
BookmarkTitle=Títol del marcador
|
||||
UrlOrLink=URL
|
||||
BehaviourOnClick=Comportament al fer clic a la URL
|
||||
CreateBookmark=Crear marcador
|
||||
SetHereATitleForLink=Indiqueu aquí un títol del marcador
|
||||
UseAnExternalHttpLinkOrRelativeDolibarrLink=Indicar una URL http externa o una URL Dolibarr relativa
|
||||
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Triar si ha de obrir-se la pàgina en una nova finestra o en l'actual
|
||||
BookmarksManagement=Gestió de marcadors
|
||||
ListOfBookmarks=Llista de marcadors
|
||||
##### Webcal #####
|
||||
LoginWebcal=Login Webcalendar
|
||||
ErrorWebcalLoginNotDefined=El login webcalendar associat al seu usuari Dolibarr <b>%s</b> no està definit
|
||||
##### Phenix #####
|
||||
ErrorPhenixLoginNotDefined=El login Phenix associat al seu compte Dolibarrr <b>%s</b> no està definit
|
||||
##### Calendar common #####
|
||||
AddCalendarEntry=Afegir entrada al calendari
|
||||
NewCompanyToDolibarr=Empresa %s inserida en Dolibarr
|
||||
ContractValidatedInDolibarr=Contracte %s validat en Dolibarr
|
||||
ContractCanceledInDolibarr=Contracte %s anul·lat en Dolibarr
|
||||
ContractClosedInDolibarr=Contracte %s tancat en Dolibarr
|
||||
PropalClosedSignedInDolibarr=Pressupost %s signat en Dolibarr
|
||||
PropalClosedRefusedInDolibarr=Pressupost %s signat en Dolibarr
|
||||
PropalValidatedInDolibarr=Pressupost %s validat en Dolibarr
|
||||
InvoiceValidatedInDolibarr=Factura %s validada en Dolibarr
|
||||
InvoicePaidInDolibarr=Factura %s passada a pagada en Dolibarr
|
||||
InvoiceCanceledInDolibarr=Factura %s anul·lada en Dolibarr
|
||||
PaymentDoneInDolibarr=Pagamat %s realitzat en Dolibarr
|
||||
CustomerPaymentDoneInDolibarr=Pagament de client %s en Dolibarr
|
||||
SupplierPaymentDoneInDolibarr=Pagament a proveïdor %s en Dolibarr
|
||||
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 #####
|
||||
ExternalSites= Llocs externs
|
||||
ExternalSites=Llocs externs
|
||||
|
||||
@@ -1,161 +1,164 @@
|
||||
# Dolibarr language file - ca_ES - products
|
||||
CHARSET= UTF-8
|
||||
ProductRef= Ref. producte
|
||||
ProductLabel= Etiqueta producte
|
||||
ProductServiceCard= Fitxa producte/servei
|
||||
Products= Productes
|
||||
Services= Serveis
|
||||
Product= Producte
|
||||
ProductList= Llistat productes
|
||||
Service= Servei
|
||||
ProductId= ID producte/servei
|
||||
Reference= Referència
|
||||
NewProduct= Nou producte
|
||||
NewBook= Nou llibre
|
||||
Book= Llibre
|
||||
Books= Llibres
|
||||
BookList= Llistat llibres
|
||||
NewService= Nou servei
|
||||
ProductCode= Codi producte
|
||||
ServiceCode= Codi servei
|
||||
ProductAccountancyBuyCode= Codi comptable compres
|
||||
ProductAccountancySellCode= Código contable vendes
|
||||
ProductOrService= Producte o servei
|
||||
ProductsOrServices= Productes o serveis
|
||||
ProductsAndServices= Productes i serveis
|
||||
ProductsAndServicesOnSell= Productes i serveis a la venda
|
||||
ProductsAndServicesNotOnSell= Productes i serveis fora de venda
|
||||
ProductsAndServicesStatistics= Estadístiques productes i serveis
|
||||
ProductsStatistics= Estadístiques productes
|
||||
ProductsOnSell= Productes en venda
|
||||
ProductsNotOnSell= Productes fora de venda
|
||||
ServicesOnSell= Serveis en venda
|
||||
ServicesNotOnSell= Serveis fora de venda
|
||||
InternalRef= Referència interna
|
||||
LastRecorded= Ultims productes/serveis en venda registrats
|
||||
LastRecordedProductsAndServices= Els %s darrers productes/serveis registrats
|
||||
LastModifiedProductsAndServices= Els %s darrers productes/serveis registrats
|
||||
LastRecordedProducts= Els %s darrers productes registrats
|
||||
LastRecordedServices= Els %s darrers serveis registrats
|
||||
LastProducts= Ultims productes
|
||||
CardProduct0= Fitxa producte
|
||||
CardProduct1= Fitxa servei
|
||||
CardContract= Fitxa contrate
|
||||
Warehouse= Magatzem
|
||||
Warehouses= Magatzems
|
||||
WarehouseOpened= Magatzem obert
|
||||
WarehouseClosed= Magatzem tancat
|
||||
Stock= Stock
|
||||
Stocks= Stocks
|
||||
Movement= Moviment
|
||||
Movements= Moviments
|
||||
OnSell= En venda
|
||||
NotOnSell= Fora de venda
|
||||
ProductStatusOnSell= En venda
|
||||
ProductStatusNotOnSell= Fora de venda
|
||||
ProductStatusOnSellShort= En venta
|
||||
ProductStatusNotOnSellShort= Fora de venda
|
||||
UpdatePrice= Canviar preu
|
||||
AppliedPricesFrom= Preu de venda vàlid a partir de
|
||||
SellingPrice= Preu de venda
|
||||
SellingPriceHT= PVP sense IVA
|
||||
SellingPriceTTC= PVP amb IVA
|
||||
PublicPrice= Preu públic
|
||||
CurrentPrice= Preu actual
|
||||
NewPrice= Nou preu
|
||||
MinPrice= Preu de venda min.
|
||||
CantBeLessThanMinPrice= El preu de venda no ha de ser inferior al mínim per a aquest producte (%s sense IVA)
|
||||
ContractStatus= Estat de contracte
|
||||
ContractStatusClosed= Tancat
|
||||
ContractStatusRunning= En servei
|
||||
ContractStatusExpired= Expirat
|
||||
ContractStatusOnHold= Fora de servei
|
||||
ContractStatusToRun= A posar en servei
|
||||
ContractNotRunning= Aquest contracte no està en servei
|
||||
ErrorProductAlreadyExists= Un producte amb la referència %s ja existeix.
|
||||
ErrorProductBadRefOrLabel= El valor de la referència o etiqueta és incorrecte
|
||||
Suppliers= Proveïdors
|
||||
SupplierRef= Ref. proveïdor
|
||||
ShowProduct= Mostrar producte
|
||||
ShowService= Mostrar servei
|
||||
ProductsAndServicesArea= Àrea productes i serveis
|
||||
ProductsArea= Àrea Productes
|
||||
ServicesArea= Àrea Serveis
|
||||
AddToMyProposals= Adjuntar als meus pressupostos
|
||||
AddToOtherProposals= Adjuntar a altres pressupostos
|
||||
AddToMyBills= Adjuntar a les meves factures
|
||||
AddToOtherBills= Adjuntar a altres factures
|
||||
CorrectStock= Corregir stock
|
||||
AddPhoto= Adjuntar una foto
|
||||
ListOfStockMovements= Llistat de moviments de stock
|
||||
NoPhotoYet= No hi ha fotografia disponible per el moment
|
||||
BuiingPrice= Preu de compra
|
||||
SupplierCard= Fitxa proveïdor
|
||||
CommercialCard= Fitxa comercial
|
||||
AllWays= Ruta per trobar el seu producte en el stock
|
||||
NoCat= El seu producte no pertany a cap categoria
|
||||
PrimaryWay= Ruta Primaria:
|
||||
DeleteFromCat= Eliminar de la categoria
|
||||
PriceRemoved= Preu eliminat
|
||||
BarCode= Codi de barra
|
||||
BarcodeType= Tipus de codi de barres
|
||||
BarcodeValue= Valor del codi de barres
|
||||
GenbarcodeLocation= Eina generació codi de barra en línia de comanda (utilitzat pel motor phpbar per a determinats tipus de codis barra)
|
||||
SetDefaultBarcodeType= Definiu el tipus de codi de barres
|
||||
NoteNotVisibleOnBill= Nota (no visible en les factures, pressupostos, etc.)
|
||||
CreateCopy= Crear còpia
|
||||
ServiceLimitedDuration= Si el servei és de durada limitada:
|
||||
MultiPricesAbility= Activar múltiples preus
|
||||
MultiPricesNumPrices= Nº de preus
|
||||
MultiPriceLevelsName= Categoria de preus
|
||||
AssociatedProductsAbility= Activar productes compostos
|
||||
AssociatedProducts= Productes compostos
|
||||
AssociatedProductsNumber= Nº de productes compostos
|
||||
EditAssociate= Compondre
|
||||
Translation= Traducció
|
||||
KeywordFilter= Filtre per clau
|
||||
CategoryFilter= Filtre per categoria
|
||||
ProductToAddSearch= Cercar productes a adjuntar
|
||||
AddDel= Adjuntar/Retirar
|
||||
Quantity= Quantitat
|
||||
NoMatchFound= No s'han trobat resultats
|
||||
ProductAssociationList= Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició
|
||||
ErrorAssociationIsFatherOfThis= Un dels productes seleccionats és pare del producte en curs
|
||||
DeleteProduct= Eliminar un producte/servei
|
||||
ConfirmDeleteProduct= Esteu segur de voler eliminar aquest producte/servei?
|
||||
ProductDeleted= El producte/servei "%s" s'ha eliminat de la base de dades.
|
||||
DeletePicture= Eliminar una foto
|
||||
ConfirmDeletePicture= Esteu segur de voler eliminar aquesta foto?
|
||||
ExportDataset_produit_1= Productes i serveis
|
||||
ExportDataset_service_1= Serveis
|
||||
DeleteProductLine= Eliminar línia de producte
|
||||
ConfirmDeleteProductLine= Esteu segur de voler eliminar aquesta línia de producte?
|
||||
NoProductMatching= Cap producte/servei respon al criteri
|
||||
MatchingProducts= Productes/Serveis trobats
|
||||
NoStockForThisProduct= No hi ha stock d'aquest producte
|
||||
NoStock= Sense stock
|
||||
Restock= Reposar
|
||||
ProductSpecial= Especial
|
||||
QtyMin= Quantitat mínima
|
||||
PriceQty= Preu per la quantitat
|
||||
PriceQtyMin= Preu quantitat min.
|
||||
NoPriceDefinedForThisSupplier= Cap preu/quant. definit per a aquest proveïdor/producte
|
||||
NoSupplierPriceDefinedForThisProduct= Cap preu/quant. proveïdor definit per a aquest producte
|
||||
RecordedProducts= Productes en venda
|
||||
RecordedProductsAndServices= Productes/serveis en venda
|
||||
GenerateThumb= Generar l'etiqueta
|
||||
ProductCanvasAbility= Utilitzar les extensions especials "canvas"
|
||||
ServiceNb= Servei nº %s
|
||||
ListProductServiceByPopularity= Llistat de productes/serveis per popularitat
|
||||
ListProductByPopularity= Llistat de productes/serveis per popularitat
|
||||
ListServiceByPopularity= Llistat de serveis per popularitat
|
||||
Finished= Producte manofacturat
|
||||
RowMaterial= Matèria prima
|
||||
CloneProduct= Clonar producte/servei
|
||||
ConfirmCloneProduct= Esteu segur de voler clonar el producte o servei <b>%s</b> ?
|
||||
CloneContentProduct= Clonar només la informació general del producte/servei
|
||||
ClonePricesProduct= Clonar la informació general i els preus
|
||||
ProductIsUsed= Aquest producte és utilitzat
|
||||
NewRefForClone= Ref. del nou producte/servei
|
||||
CustomerPrices= Preus clients
|
||||
SuppliersPrices= Preus proveïdors
|
||||
CHARSET=UTF-8
|
||||
ProductRef=Ref. producte
|
||||
ProductLabel=Etiqueta producte
|
||||
ProductServiceCard=Fitxa producte/servei
|
||||
Products=Productes
|
||||
Services=Serveis
|
||||
Product=Producte
|
||||
ProductList=Llistat productes
|
||||
Service=Servei
|
||||
ProductId=ID producte/servei
|
||||
Reference=Referència
|
||||
NewProduct=Nou producte
|
||||
NewService=Nou servei
|
||||
ProductCode=Codi producte
|
||||
ServiceCode=Codi servei
|
||||
ProductAccountancyBuyCode=Codi comptable compres
|
||||
ProductAccountancySellCode=Código contable vendes
|
||||
ProductOrService=Producte o servei
|
||||
ProductsOrServices=Productes o serveis
|
||||
ProductsAndServices=Productes i serveis
|
||||
ProductsAndServicesOnSell=Productes i serveis a la venda
|
||||
ProductsAndServicesNotOnSell=Productes i serveis fora de venda
|
||||
ProductsAndServicesStatistics=Estadístiques productes i serveis
|
||||
ProductsStatistics=Estadístiques productes
|
||||
ProductsOnSell=Productes en venda o compra
|
||||
ProductsNotOnSell=Productes fora de venda o compra
|
||||
ServicesOnSell=Serveis en venda o compra
|
||||
ServicesNotOnSell=Serveis fora de venda o compra
|
||||
InternalRef=Referència interna
|
||||
LastRecorded=Ultims productes/serveis en venda registrats
|
||||
LastRecordedProductsAndServices=Els %s darrers productes/serveis registrats
|
||||
LastModifiedProductsAndServices=Els %s darrers productes/serveis registrats
|
||||
LastRecordedProducts=Els %s darrers productes registrats
|
||||
LastRecordedServices=Els %s darrers serveis registrats
|
||||
LastProducts=Ultims productes
|
||||
CardProduct0=Fitxa producte
|
||||
CardProduct1=Fitxa servei
|
||||
CardContract=Fitxa contrate
|
||||
Warehouse=Magatzem
|
||||
Warehouses=Magatzems
|
||||
WarehouseOpened=Magatzem obert
|
||||
WarehouseClosed=Magatzem tancat
|
||||
Stock=Stock
|
||||
Stocks=Stocks
|
||||
Movement=Moviment
|
||||
Movements=Moviments
|
||||
Sell=Vendes
|
||||
Buy=Compres
|
||||
OnSell=En venda
|
||||
OnBuy=En compra
|
||||
NotOnSell=Fora de venda
|
||||
ProductStatusOnSell=En venda
|
||||
ProductStatusNotOnSell=Fora de venda
|
||||
ProductStatusOnSellShort=En venta
|
||||
ProductStatusNotOnSellShort=Fora de venda
|
||||
ProductStatusOnBuy=En compra
|
||||
ProductStatusNotOnBuy=Fora de compra
|
||||
ProductStatusOnBuyShort=En compra
|
||||
ProductStatusNotOnBuyShort=Fora de compra
|
||||
UpdatePrice=Canviar preu
|
||||
AppliedPricesFrom=Preu de venda vàlid a partir de
|
||||
SellingPrice=Preu de venda
|
||||
SellingPriceHT=PVP sense IVA
|
||||
SellingPriceTTC=PVP amb IVA
|
||||
PublicPrice=Preu públic
|
||||
CurrentPrice=Preu actual
|
||||
NewPrice=Nou preu
|
||||
MinPrice=Preu de venda min.
|
||||
CantBeLessThanMinPrice=El preu de venda no ha de ser inferior al mínim per a aquest producte (%s sense IVA)
|
||||
ContractStatus=Estat de contracte
|
||||
ContractStatusClosed=Tancat
|
||||
ContractStatusRunning=En servei
|
||||
ContractStatusExpired=Expirat
|
||||
ContractStatusOnHold=Fora de servei
|
||||
ContractStatusToRun=A posar en servei
|
||||
ContractNotRunning=Aquest contracte no està en servei
|
||||
ErrorProductAlreadyExists=Un producte amb la referència %s ja existeix.
|
||||
ErrorProductBadRefOrLabel=El valor de la referència o etiqueta és incorrecte
|
||||
Suppliers=Proveïdors
|
||||
SupplierRef=Ref. proveïdor
|
||||
ShowProduct=Mostrar producte
|
||||
ShowService=Mostrar servei
|
||||
ProductsAndServicesArea=Àrea productes i serveis
|
||||
ProductsArea=Àrea Productes
|
||||
ServicesArea=Àrea Serveis
|
||||
AddToMyProposals=Adjuntar als meus pressupostos
|
||||
AddToOtherProposals=Adjuntar a altres pressupostos
|
||||
AddToMyBills=Adjuntar a les meves factures
|
||||
AddToOtherBills=Adjuntar a altres factures
|
||||
CorrectStock=Corregir stock
|
||||
AddPhoto=Adjuntar una foto
|
||||
ListOfStockMovements=Llistat de moviments de stock
|
||||
NoPhotoYet=No hi ha fotografia disponible per el moment
|
||||
BuiingPrice=Preu de compra
|
||||
SupplierCard=Fitxa proveïdor
|
||||
CommercialCard=Fitxa comercial
|
||||
AllWays=Ruta per trobar el seu producte en el stock
|
||||
NoCat=El seu producte no pertany a cap categoria
|
||||
PrimaryWay=Ruta Primaria:
|
||||
DeleteFromCat=Eliminar de la categoria
|
||||
PriceRemoved=Preu eliminat
|
||||
BarCode=Codi de barra
|
||||
BarcodeType=Tipus de codi de barres
|
||||
BarcodeValue=Valor del codi de barres
|
||||
GenbarcodeLocation=Eina generació codi de barra en línia de comanda (utilitzat pel motor phpbar per a determinats tipus de codis barra)
|
||||
SetDefaultBarcodeType=Definiu el tipus de codi de barres
|
||||
NoteNotVisibleOnBill=Nota (no visible en les factures, pressupostos, etc.)
|
||||
CreateCopy=Crear còpia
|
||||
ServiceLimitedDuration=Si el servei és de durada limitada:
|
||||
MultiPricesAbility=Activar múltiples preus
|
||||
MultiPricesNumPrices=Nº de preus
|
||||
MultiPriceLevelsName=Categoria de preus
|
||||
AssociatedProductsAbility=Activar productes compostos
|
||||
AssociatedProducts=Productes compostos
|
||||
AssociatedProductsNumber=Nº de productes compostos
|
||||
EditAssociate=Compondre
|
||||
Translation=Traducció
|
||||
KeywordFilter=Filtre per clau
|
||||
CategoryFilter=Filtre per categoria
|
||||
ProductToAddSearch=Cercar productes a adjuntar
|
||||
AddDel=Adjuntar/Retirar
|
||||
Quantity=Quantitat
|
||||
NoMatchFound=No s'han trobat resultats
|
||||
ProductAssociationList=Llistat de productes/serveis components d'aquest producte: el nombre entre parèntesis és la quantitat afectada en aquesta composició
|
||||
ErrorAssociationIsFatherOfThis=Un dels productes seleccionats és pare del producte en curs
|
||||
DeleteProduct=Eliminar un producte/servei
|
||||
ConfirmDeleteProduct=Esteu segur de voler eliminar aquest producte/servei?
|
||||
ProductDeleted=El producte/servei "%s" s'ha eliminat de la base de dades.
|
||||
DeletePicture=Eliminar una foto
|
||||
ConfirmDeletePicture=Esteu segur de voler eliminar aquesta foto?
|
||||
ExportDataset_produit_1=Productes i serveis
|
||||
ExportDataset_service_1=Serveis
|
||||
DeleteProductLine=Eliminar línia de producte
|
||||
ConfirmDeleteProductLine=Esteu segur de voler eliminar aquesta línia de producte?
|
||||
NoProductMatching=Cap producte/servei respon al criteri
|
||||
MatchingProducts=Productes/Serveis trobats
|
||||
NoStockForThisProduct=No hi ha stock d'aquest producte
|
||||
NoStock=Sense stock
|
||||
Restock=Reposar
|
||||
ProductSpecial=Especial
|
||||
QtyMin=Quantitat mínima
|
||||
PriceQty=Preu per la quantitat
|
||||
PriceQtyMin=Preu quantitat min.
|
||||
NoPriceDefinedForThisSupplier=Cap preu/quant. definit per a aquest proveïdor/producte
|
||||
NoSupplierPriceDefinedForThisProduct=Cap preu/quant. proveïdor definit per a aquest producte
|
||||
RecordedProducts=Productes en venda
|
||||
RecordedProductsAndServices=Productes/serveis en venda
|
||||
GenerateThumb=Generar l'etiqueta
|
||||
ProductCanvasAbility=Utilitzar les extensions especials "canvas"
|
||||
ServiceNb=Servei nº %s
|
||||
ListProductServiceByPopularity=Llistat de productes/serveis per popularitat
|
||||
ListProductByPopularity=Llistat de productes/serveis per popularitat
|
||||
ListServiceByPopularity=Llistat de serveis per popularitat
|
||||
Finished=Producte manofacturat
|
||||
RowMaterial=Matèria prima
|
||||
CloneProduct=Clonar producte/servei
|
||||
ConfirmCloneProduct=Esteu segur de voler clonar el producte o servei <b>%s</b> ?
|
||||
CloneContentProduct=Clonar només la informació general del producte/servei
|
||||
ClonePricesProduct=Clonar la informació general i els preus
|
||||
ProductIsUsed=Aquest producte és utilitzat
|
||||
NewRefForClone=Ref. del nou producte/servei
|
||||
CustomerPrices=Preus clients
|
||||
SuppliersPrices=Preus proveïdors
|
||||
|
||||
@@ -14,7 +14,6 @@ OrderDate= Data comanda
|
||||
BuyingPrice= Preu de compra
|
||||
AddSupplierPrice= Afegir 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
|
||||
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
|
||||
|
||||
@@ -62,7 +62,7 @@ UseCaptchaCode=Brug grafisk kode på loginsiden
|
||||
UseAvToScanUploadedFiles=Brug anti-virus scanner uploadede filer
|
||||
ComptaSetup=Accounting modul opsætning
|
||||
UserSetup=Brugernes forvaltning setup
|
||||
MenuSetup=Menuer 'ledelse setup
|
||||
MenuSetup=Menuer 'ledelse setup
|
||||
MenuLimits=Grænseværdier og nøjagtighed
|
||||
MenuIdParent=Moderselskab menuen ID
|
||||
DetailMenuIdParent=ID for moder menu (0 for en top-menuen)
|
||||
@@ -150,7 +150,7 @@ No=Nej
|
||||
AutoDetectLang=Autodetect (browsersprog)
|
||||
FeatureDisabledInDemo=Funktionen slået fra i demo
|
||||
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å 'Aktiver', 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.
|
||||
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.
|
||||
@@ -209,7 +209,7 @@ MenuAdmin=Menu editor
|
||||
ThisIsProcessToFollow=Det er opsætningen til processen:
|
||||
StepNb=Trin %s
|
||||
DownloadPackageFromWebSite=Download pakken fra websted %s.
|
||||
UnpackPackageInDolibarrRoot=Pak pakke filen i Dolibarr'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.
|
||||
CurrentVersion=Dolibarr aktuelle version
|
||||
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
|
||||
Module0Desc=Brugere og grupper forvaltning
|
||||
Module1Name=Tredjemand
|
||||
Module1Desc=Virksomheder og kontakter "forvaltning
|
||||
Module1Desc=Virksomheder og kontakter "forvaltning
|
||||
Module2Name=Kommerciel
|
||||
Module2Desc=Kommerciel ledelse
|
||||
Module10Name=Regnskabsmæssig
|
||||
Module10Desc=Simpelt regnskabspool forvaltning (faktura og betaling lastfordelingen)
|
||||
Module20Name=Forslag
|
||||
Module20Desc=Kommerciel forslag 'ledelse
|
||||
Module20Desc=Kommerciel forslag 'ledelse
|
||||
Module22Name=E-mails
|
||||
Module22Desc=E-mails' ledelse
|
||||
Module22Desc=E-mails' ledelse
|
||||
Module25Name=Kunden Ordrer
|
||||
Module25Desc=Kunden ordrer 'ledelse
|
||||
Module25Desc=Kunden ordrer 'ledelse
|
||||
Module30Name=Fakturaer
|
||||
Module30Desc=Fakturaer og kreditnotaer 'forvaltning for kunderne. Faktura 'forvaltning for leverandører
|
||||
Module30Desc=Fakturaer og kreditnotaer 'forvaltning for kunderne. Faktura 'forvaltning for leverandører
|
||||
Module40Name=Leverandører
|
||||
Module40Desc=Suppliers' ledelse og opkøb (ordrer og fakturaer)
|
||||
Module40Desc=Suppliers' ledelse og opkøb (ordrer og fakturaer)
|
||||
Module42Name=Syslog
|
||||
Module42Desc=Logføring faciliteter (syslog)
|
||||
Module49Name=Redaktion
|
||||
Module49Desc=Editors' ledelse
|
||||
Module49Desc=Editors' ledelse
|
||||
Module50Name=Produkter
|
||||
Module50Desc=Produkter «forvaltning
|
||||
Module52Name=Lagre
|
||||
Module52Desc=Lagre 'håndtering af produkter
|
||||
Module52Desc=Lagre 'håndtering af produkter
|
||||
Module53Name=Services
|
||||
Module53Desc=Services' ledelse
|
||||
Module53Desc=Services' ledelse
|
||||
Module54Name=Kontrakter
|
||||
Module54Desc=Kontrakter og tjenesteydelserne forvaltning
|
||||
Module55Name=Stregkoder
|
||||
Module55Desc=Stregkoder 'ledelse
|
||||
Module55Desc=Stregkoder 'ledelse
|
||||
Module56Name=Telefoni
|
||||
Module56Desc=Telefoni integration
|
||||
Module57Name=Stående ordrer
|
||||
Module57Desc=Stående ordrer og tilbagetrækninger 'ledelse
|
||||
Module57Desc=Stående ordrer og tilbagetrækninger 'ledelse
|
||||
Module58Name=ClickToDial
|
||||
Module58Desc=ClickToDial integration
|
||||
Module59Name=Bookmark4u
|
||||
Module59Desc=Tilføj funktion til at generere Bookmark4u konto fra en Dolibarr konto
|
||||
Module70Name=Interventioner
|
||||
Module70Desc=Interventioner "forvaltning
|
||||
Module70Desc=Interventioner "forvaltning
|
||||
Module75Name=Udgifter og ture noter
|
||||
Module75Desc=Udgifter og ture noter 'ledelse
|
||||
Module75Desc=Udgifter og ture noter 'ledelse
|
||||
Module80Name=Sendings
|
||||
Module80Desc=Sendings og levering ordrer 'ledelse
|
||||
Module80Desc=Sendings og levering ordrer 'ledelse
|
||||
Module85Name=Banker og penge
|
||||
Module85Desc=Forvaltning af bank-eller kontokurantkonti
|
||||
Module200Name=LDAP
|
||||
@@ -285,9 +285,9 @@ Module310Desc=Instituttets medlemmer forvaltning
|
||||
Module320Name=RSS Feed
|
||||
Module320Desc=Tilføj RSS feed inde Dolibarr skærmen sider
|
||||
Module330Name=Bogmærker
|
||||
Module330Desc=Bogmærker 'ledelse
|
||||
Module330Desc=Bogmærker 'ledelse
|
||||
Module400Name=Projekter
|
||||
Module400Desc=Projekter 'håndtering indeni andre moduler
|
||||
Module400Desc=Projekter 'håndtering indeni andre moduler
|
||||
Module410Name=Webcalendar
|
||||
Module410Desc=Webcalendar integration
|
||||
Module500Name=Skatter, sociale bidrag og udbytte
|
||||
@@ -295,7 +295,7 @@ Module500Desc=Skatter og sociale bidrag «forvaltning
|
||||
Module600Name=Adviséringer
|
||||
Module600Desc=Send meddelelser (via email) på Dolibarr business-arrangementer
|
||||
Module700Name=Donationer
|
||||
Module700Desc=Gaver 'ledelse
|
||||
Module700Desc=Gaver 'ledelse
|
||||
Module800Name=OsCommerce direkte
|
||||
Module800Desc=Interface til at vise en osCommerce eller OSCSS shop via direkte database adgang
|
||||
Module900Name=OsCommerce fra WAS
|
||||
@@ -305,11 +305,11 @@ Module1200Desc=Mantis integration
|
||||
Module1400Name=Regnskabsmæssig ekspert
|
||||
Module1400Desc=Regnskabsmæssig forvaltning for eksperter (dobbelt parterne)
|
||||
Module1780Name=Kategorier
|
||||
Module1780Desc=Kategorier 'forvaltning (produkter, leverandører og kunder)
|
||||
Module1780Desc=Kategorier 'forvaltning (produkter, leverandører og kunder)
|
||||
Module2200Name=Udlånsrettighederne
|
||||
Module2200Desc=Udlånsrettighederne forvaltning
|
||||
Module2300Name=Menuer
|
||||
Module2300Desc=Menuer 'ledelse
|
||||
Module2300Desc=Menuer 'ledelse
|
||||
Module2400Name=Agenda
|
||||
Module2400Desc=Handlinger / opgaver og dagsorden forvaltning
|
||||
Module2500Name=Elektronisk Content Management
|
||||
@@ -317,8 +317,8 @@ Module2500Desc=Gemme og dele dokumenter
|
||||
Module50100Name=Cash desk
|
||||
Module50100Desc=Cash desk modul
|
||||
Permission11=Læs fakturaer
|
||||
Permission12=Opret fakturaer
|
||||
Permission13=Modify fakturaer
|
||||
Permission12=Opret/Modify fakturaer
|
||||
Permission13=Unvalidate fakturaer
|
||||
Permission14=Valider fakturaer
|
||||
Permission15=Send fakturaer via e-mail
|
||||
Permission16=Opret betalinger for fakturaer
|
||||
@@ -360,7 +360,7 @@ Permission93=Slet sociale bidrag og moms
|
||||
Permission95=Læs rapporter
|
||||
Permission96=Setup lastfordelingen
|
||||
Permission97=Læs faktura regnskabspool lastfordelingen
|
||||
Permission98=Ekspeditionscentre faktura's regnskabslinjer
|
||||
Permission98=Ekspeditionscentre faktura's regnskabslinjer
|
||||
Permission101=Læs sendings
|
||||
Permission102=Opret / ændre sendings
|
||||
Permission104=Valider sendings
|
||||
@@ -448,7 +448,6 @@ Permission1185=Godkend leverandør ordrer
|
||||
Permission1186=Bestil leverandør ordrer
|
||||
Permission1187=Anerkende modtagelsen af leverandør ordrer
|
||||
Permission1188=Luk leverandør ordrer
|
||||
Permission1189=Annuller leverandør ordrer
|
||||
Permission1201=Få resultatet af en eksport
|
||||
Permission1202=Opret / Modify en eksport
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
LabelOnDocuments=Etiketten på dokumenter
|
||||
NbOfDays=Nb dage
|
||||
@@ -522,7 +521,7 @@ TableName=Tabel navn
|
||||
TableLineFormat=Line format
|
||||
NbOfRecord=Nb af optegnelser
|
||||
Constraints=Begrænsninger
|
||||
ConstraintsType=Constraint's type
|
||||
ConstraintsType=Constraint's type
|
||||
ConstraintsToShowOrNotEntry=Constraint til at vise eller ikke menuen indrejse
|
||||
AllMustBeOk=Alle disse skal kontrolleres
|
||||
Host=Server
|
||||
@@ -560,8 +559,8 @@ DoNotSuggestPaymentMode=Ikke tyder
|
||||
NoActiveBankAccountDefined=Nr. aktiv bankkonto defineret
|
||||
OwnerOfBankAccount=Ejer af bankkonto %s
|
||||
BankModuleNotActive=Bankkonti modul er ikke aktiveret
|
||||
ShowBugTrackLink=Vis linket "Fejlmeld"
|
||||
ShowWorkBoard=Show "arbejdsbord" på hjemmeside
|
||||
ShowBugTrackLink=Vis linket "Fejlmeld"
|
||||
ShowWorkBoard=Show "arbejdsbord" på hjemmeside
|
||||
Alerts=Indberetninger
|
||||
Delays=Forsinkelser
|
||||
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_DISABLE_PDF_COMPRESSION=Brug PDF-komprimering for genereret PDF filer.
|
||||
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å "setup - sikkerhed - revision" 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.
|
||||
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.
|
||||
@@ -625,13 +624,13 @@ GeneratePassword=Foreslå genereret adgangskode
|
||||
RuleForGeneratedPasswords=Regel at generere foreslået passwords
|
||||
DoNotSuggest=Ikke tyder på nogen adgangskode
|
||||
EncryptedPasswordInDatabase=At lade kryptering af adgangskoder i databasen
|
||||
DisableForgetPasswordLinkOnLogonPage=Ikke viser linket "Glem adgangskode" på loginsiden
|
||||
DisableForgetPasswordLinkOnLogonPage=Ikke viser linket "Glem adgangskode" på loginsiden
|
||||
CompanySetup=Selskaber modul opsætning
|
||||
CompanyCodeChecker=Modul for tredjemand code generation og kontrol (kunde eller leverandør)
|
||||
AccountCodeManager=Modul til regnskabsformål kode generation (kunde eller leverandør)
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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
|
||||
@@ -645,9 +644,9 @@ WebCalServer=Server hosting kalender database
|
||||
WebCalDatabaseName=Database navn
|
||||
WebCalUser=Brugeren at få adgang til databasen
|
||||
WebCalSetupSaved=Webcalendar opsætning gemt.
|
||||
WebCalTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
WebCalTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
WebCalTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
WebCalTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
WebCalTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
WebCalTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
WebCalErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Webcalendar database.
|
||||
WebCalAddEventOnCreateActions=Tilføj kalenderbegivenheder på aktioner skabe
|
||||
WebCalAddEventOnCreateCompany=Tilføj kalenderbegivenheder på virksomhederne skabe
|
||||
@@ -715,8 +714,8 @@ LDAPContactsSynchro=Kontakter
|
||||
LDAPMembersSynchro=Medlemmer
|
||||
LDAPSynchronization=LDAP synkronisering
|
||||
LDAPFunctionsNotAvailableOnPHP=LDAP funktioner ikke availbale på din PHP
|
||||
LDAPToDolibarr=LDAP -> Dolibarr
|
||||
DolibarrToLDAP=Dolibarr -> LDAP
|
||||
LDAPToDolibarr=LDAP -> Dolibarr
|
||||
DolibarrToLDAP=Dolibarr -> LDAP
|
||||
LDAPNamingAttribute=Indtast LDAP
|
||||
LDAPSynchronizeUsers=Synkronisere Dolibarr brugere 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
|
||||
LDAPDnSynchroActive=Brugere og grupper synkronisering
|
||||
LDAPDnSynchroActiveExample=LDAP til Dolibarr eller Dolibarr til LDAP synkronisering
|
||||
LDAPDnContactActive=Kontaktpersoner 'synkronisering
|
||||
LDAPDnContactActive=Kontaktpersoner 'synkronisering
|
||||
LDAPDnContactActiveYes=Aktiveret synkronisering
|
||||
LDAPDnContactActiveExample=Aktiveret / Unactivated synkronisering
|
||||
LDAPDnMemberActive=Medlemmernes synkronisering
|
||||
LDAPDnMemberActiveExample=Aktiveret / Unactivated synkronisering
|
||||
LDAPContactDn=Dolibarr kontakter "DN
|
||||
LDAPContactDn=Dolibarr kontakter "DN
|
||||
LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=Komplet DN (ex: ou= kontakter, dc= samfundet, dc= dk)
|
||||
LDAPMemberDn=Dolibarr medlemmernes DN
|
||||
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:
|
||||
FCKeditorForUsers=WYSIWIG oprettelsen / udgave af brugernes beskrivelse og noter
|
||||
FCKeditorForCompany=WYSIWIG oprettelsen / udgave af virksomhedernes beskrivelse og noter
|
||||
FCKeditorForProduct=WYSIWIG oprettelsen / udgave af produkter / services' beskrivelse og noter
|
||||
FCKeditorForProduct=WYSIWIG oprettelsen / udgave af produkter / services' 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.
|
||||
FCKeditorForProductDetailsPerso=WYSIWIG oprettelsen / udgave af produkter personlige oplysninger linjer for alle enheder (forslag, ordrer, fakturaer, etc. ..)
|
||||
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).
|
||||
OSCommerceTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
OSCommerceTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
OSCommerceTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
OSCommerceTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
OSCommerceTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
OSCommerceTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
MantisSetup=Mantis link setup
|
||||
MantisURL=URL for Mantis adgang
|
||||
MantisServer=Server hosting Mantis database
|
||||
MantisDatabaseName=Database navn
|
||||
MantisUser=Brugeren at få adgang til databasen
|
||||
MantisSetupSaved=Mantis opsætning gemt.
|
||||
MantisTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
MantisTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
MantisTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
MantisTestOk=Forbindelse til server ' %s' på database' %s' med brugeren ' %s' succes.
|
||||
MantisTestKo1=Forbindelse til server ' %s' lykkes men database' %s' kunne ikke være nået.
|
||||
MantisTestKo2=Forbindelse til server ' %s' med brugeren' %s' mislykkedes.
|
||||
MantisErrorConnectOkButWrongDatabase=Forbindelsesstyring lykkedes, men databasen ikke ser sig at være en Mantis database.
|
||||
StockSetup=Konfiguration modul lager
|
||||
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
|
||||
ConfirmDeleteLine=Er du sikker på du vil slette denne linje?
|
||||
TaxSetup=Skatter, sociale bidrag og udbytte modul opsætning
|
||||
OptionVatMode=Mulighed d'exigibilit de TVA
|
||||
OptionVatMode=Mulighed d'exigibilit de TVA
|
||||
OptionVATDefault=Standard
|
||||
OptionVATDebitOption=Mulighed tjenester sur overførselsautorisation
|
||||
OptionVatDefaultDesc=L'exigibilit de la TVA est: <br> - Sur livraison pour les biens <br> - Sur paiement pour les tjenester
|
||||
OptionVatDebitOptionDesc=L'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
|
||||
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.
|
||||
@@ -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>
|
||||
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)
|
||||
DisableLinkToHelpCenter=Skjul linket <b>"Har du brug for hjælp eller støtte"</b> på loginsiden
|
||||
DisableLinkToHelp=Skjul link <b>" %s Online Hjælp"</b> på menu til venstre
|
||||
DisableLinkToHelpCenter=Skjul linket <b>"Har du brug for hjælp eller støtte"</b> på loginsiden
|
||||
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.
|
||||
ModuleDisabled=Modul handicappede
|
||||
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 ...).
|
||||
Module51Name=Masseforsendelser
|
||||
Module51Desc=Masse papir postforsendelser 'ledelse
|
||||
Module51Desc=Masse papir postforsendelser 'ledelse
|
||||
Module5000Name=Multi-selskab
|
||||
Module5000Desc=Giver dig mulighed for at administrere flere selskaber
|
||||
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>
|
||||
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
|
||||
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.
|
||||
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
|
||||
DetailEnabled=Betingelse for at vise eller ikke indrejse
|
||||
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)
|
||||
OnPayment=Om betaling
|
||||
// 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).
|
||||
|
||||
@@ -20,7 +20,7 @@ BillsStatisticsSuppliers=Leverandørernes fakturaer statistik
|
||||
InvoiceStandard=Standard faktura
|
||||
InvoiceStandardAsk=Standard 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
|
||||
InvoiceAvoir=Credit note
|
||||
InvoiceAvoirAsk=Credit note til korrekt faktura
|
||||
@@ -69,9 +69,9 @@ PaymentConditions=Betaling sigt
|
||||
PaymentConditionsShort=Betaling sigt
|
||||
PaymentAmount=Indbetalingsbeløb
|
||||
PaymentHigherThanReminderToPay=Betaling højere end påmindelse om at betale
|
||||
ClassifyPaid=Klassificere "betales"
|
||||
ClassifyPaidPartially=Klassificere 'betales delvist'
|
||||
ClassifyClosed=Klassificere "lukket"
|
||||
ClassifyPaid=Klassificere "betales"
|
||||
ClassifyPaidPartially=Klassificere 'betales delvist'
|
||||
ClassifyClosed=Klassificere "lukket"
|
||||
CreateBill=Opret Faktura
|
||||
AddBill=Tilføj faktura eller kreditnota
|
||||
DeleteBill=Slet faktura
|
||||
@@ -146,7 +146,7 @@ ConfirmClassifyPaidPartiallyReasonOtherDesc=Brug dette valg, hvis alle andre ikk
|
||||
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.
|
||||
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'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
|
||||
NumberOfBills=Nb af fakturaer
|
||||
NumberOfBillsByMonthHT=Nb af fakturaer måned (efter skat)
|
||||
@@ -186,7 +186,7 @@ DateInvoice=Fakturadato
|
||||
NoInvoice=Nr. faktura
|
||||
ClassifyBill=Klassificere faktura
|
||||
SupplierBillsToPay=Leverandører fakturaer til at betale
|
||||
DispenseMontantLettres=Les factures rdiges par procdsmcanographiques sont dispenserer de l'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
|
||||
NonPercuRecuperable=Ikke-refunderbar
|
||||
SetConditions=Indstil aflønningsvilkår
|
||||
@@ -199,9 +199,9 @@ Repeatables=Forhånd definerede
|
||||
ChangeIntoRepeatableInvoice=Konverter til på forhånd definerede
|
||||
CreateRepeatableInvoice=Opret prædefinerede faktura
|
||||
CreateFromRepeatableInvoice=Opret fra prædefinerede faktura
|
||||
CustomersInvoicesAndInvoiceLines=Kunden fakturaer og fakturaer 'linjer
|
||||
CustomersInvoicesAndInvoiceLines=Kunden fakturaer og fakturaer 'linjer
|
||||
CustomersInvoicesAndPayments=Kunden fakturaer og betalinger
|
||||
ExportDataset_invoice_1=Kunden fakturaer listen og fakturaer 'linjer
|
||||
ExportDataset_invoice_1=Kunden fakturaer listen og fakturaer 'linjer
|
||||
ExportDataset_invoice_2=Kunden fakturaer og betalinger
|
||||
ProformaBill=Proforma Bill:
|
||||
Reduction=Reduktion
|
||||
@@ -338,9 +338,9 @@ PlutonNumRefModelDesc1=Retur en tilpasselig faktura i henhold til en defineret m
|
||||
InvoiceDeposit=Indbetaling faktura
|
||||
InvoiceDepositAsk=Indbetaling faktura
|
||||
InvoiceDepositDesc=Denne form for fakturaen er gjort, når en indbetaling er modtaget.
|
||||
InvoiceProFormat=Proformat faktura
|
||||
InvoiceProFormatAsk=Proformat faktura
|
||||
InvoiceProFormatDesc=<b>Proformat fakturaen</b> er et billede af en ægte faktura, men har ingen regnskabspool værdi.
|
||||
InvoiceProForma=Proforma faktura
|
||||
InvoiceProFormaAsk=Proforma faktura
|
||||
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
|
||||
ConsumedBy=Forbruges af
|
||||
NotConsumed=Ikke forbruges
|
||||
@@ -378,12 +378,40 @@ BillsCustomersUnpaid=Ulønnet kundernes fakturaer
|
||||
BillsCustomersUnpaidForCompany=Ulønnet kundernes fakturaer for %s
|
||||
BillsSuppliersUnpaid=Ulønnet leverandørernes fakturaer
|
||||
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 "opgivet".
|
||||
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)
|
||||
BillShortStatusClosedUnpaid=Lukket
|
||||
Unpaid=Ulønnet
|
||||
ConfirmCancelBillQuestion=hvorfor har du lyst til at klassificere denne faktura 'opgivet'?
|
||||
ConfirmCancelBillQuestion=hvorfor har du lyst til at klassificere denne faktura 'opgivet'?
|
||||
ConfirmClassifyPaidPartiallyReasonOther=Beløb opgives for andre grunde
|
||||
NoSupplierBillsUnpaid=Nr. leverandører fakturaer vederlagsfri
|
||||
CustomerBillsUnpaid=Vederlagsfri kunder fakturaer
|
||||
// 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).
|
||||
|
||||
@@ -37,7 +37,7 @@ BoxTitleLastPropals=Seneste %s registreres forslag
|
||||
BoxTitleLastCustomerBills=Seneste %s kundens fakturaer
|
||||
BoxTitleLastSupplierBills=Seneste %s leverandørens fakturaer
|
||||
BoxTitleLastProspects=Seneste %s registreres udsigter
|
||||
BoxTitleCurrentAccounts=Løbende poster's tilgodehavender
|
||||
BoxTitleCurrentAccounts=Løbende poster's tilgodehavender
|
||||
BoxTitleSalesTurnover=Omsætning
|
||||
BoxMyLastBookmarks=Min sidste %s bogmærker
|
||||
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
|
||||
NoUnpaidSupplierBills=Nr. ubetalte leverandørens fakturaer
|
||||
// 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).
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
CHARSET=UTF-8
|
||||
ErrorLoginAlreadyExists=Log ind %s eksisterer allerede.
|
||||
ErrorGroupAlreadyExists=Gruppe %s eksisterer allerede.
|
||||
ErrorFailToDeleteFile=Det lykkedes ikke at fjerne filen <b>' %s'.</b>
|
||||
ErrorFailToCreateFile=Kunne ikke oprette filen <b>' %s'.</b>
|
||||
ErrorFailToRenameDir=Kunne ikke omdøbe mappe <b>' %s' i' %s'.</b>
|
||||
ErrorFailToCreateDir=Kunne ikke oprette mappen <b>' %s'.</b>
|
||||
ErrorFailToDeleteDir=Det lykkedes ikke at slette mappen <b>' %s'.</b>
|
||||
ErrorFailToDeleteFile=Det lykkedes ikke at fjerne filen <b>' %s'.</b>
|
||||
ErrorFailToCreateFile=Kunne ikke oprette filen <b>' %s'.</b>
|
||||
ErrorFailToRenameDir=Kunne ikke omdøbe mappe <b>' %s' i' %s'.</b>
|
||||
ErrorFailToCreateDir=Kunne ikke oprette mappen <b>' %s'.</b>
|
||||
ErrorFailToDeleteDir=Det lykkedes ikke at slette mappen <b>' %s'.</b>
|
||||
ErrorFailedToDeleteJoinedFiles=Kan ikke slette enhed, fordi der er nogle tiltrådte filer. Fjern slutte filer først.
|
||||
ErrorThisContactIsAlreadyDefinedAsThisType=Denne kontaktperson er allerede defineret som kontaktperson for denne type.
|
||||
ErrorCashAccountAcceptsOnlyCashMoney=Denne bankkonto er et kontant-konto, så det accepterer betaling af type cash only.
|
||||
@@ -38,7 +38,7 @@ ErrorFieldsRequired=Nogle krævede felter ikke var fyldt.
|
||||
ErrorFailedToCreateDir=Det lykkedes ikke at oprette en mappe. Kontroller, at web-serveren bruger har tilladelse til at skrive i Dolibarr dokumenter bibliotek. Hvis parameter <b>safe_mode</b> er aktiveret på dette PHP, kontrollere, at Dolibarr php filer ejer til web-serveren bruger (eller gruppe).
|
||||
ErrorNoMailDefinedForThisUser=Nr. mail defineret for denne bruger
|
||||
ErrorFeatureNeedJavascript=Denne funktion skal have Javascript skal aktiveres for at arbejde. Ændre dette i opsætningen - displayet.
|
||||
ErrorTopMenuMustHaveAParentWithId0=En menu af type 'Top' kan ikke have en forælder menuen. Sæt 0 i moderselskabet menu eller vælge en menu af typen »Venstre«.
|
||||
ErrorTopMenuMustHaveAParentWithId0=En menu af type 'Top' kan ikke have en forælder menuen. Sæt 0 i moderselskabet menu eller vælge en menu af typen »Venstre«.
|
||||
ErrorLeftMenuMustHaveAParentId=En menu af typen »Venstre« skal have en forælder id.
|
||||
ErrorFileNotFound=Filen blev ikke fundet (Forkert sti, forkerte tilladelser eller adgang nægtet ved openbasedir parameter)
|
||||
ErrorFunctionNotAvailableInPHP=<b>Funktion %s</b> er påkrævet for denne funktion, men er ikke tilgængelig i denne version / opsætning af PHP.
|
||||
@@ -52,8 +52,8 @@ ErrorNoAccountancyModuleLoaded=Nr. regnskabspool modul aktiveret
|
||||
ErrorExportDuplicateProfil=Denne profil navn eksisterer allerede for denne eksport sæt.
|
||||
ErrorLDAPSetupNotComplete=Dolibarr-LDAP matchende er ikke komplet.
|
||||
ErrorLDAPMakeManualTest=A. LDIF-fil er blevet genereret i mappen %s. Prøv at indlæse den manuelt fra kommandolinjen for at få flere informationer om fejl.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage=Kan ikke gemme en aktion med "vedtægt ikke startes", hvis feltet "udført af" er også fyldt.
|
||||
ErrorBillRefAlreadyExists=Ref bruges til oprettelse eksisterer allerede.
|
||||
ErrorCantSaveADoneUserWithZeroPercentage=Kan ikke gemme en aktion med "vedtægt ikke startes", hvis feltet "udført af" er også fyldt.
|
||||
ErrorRefAlreadyExists=Ref bruges til oprettelse eksisterer allerede.
|
||||
ErrorPleaseTypeBankTransactionReportName=Please type bank modtagelsen navn, hvor transaktionen er rapporteret (Format ÅÅÅÅMM eller ÅÅÅÅMMDD)
|
||||
ErrorRecordHasChildren=Det lykkedes ikke at slette poster, da det har nogle Childs.
|
||||
// Date 2009-01-19 21:26:39
|
||||
@@ -65,3 +65,38 @@ ErrorRecordHasChildren=Det lykkedes ikke at slette poster, da det har nogle Chil
|
||||
MenuManager=Menu manager
|
||||
ErrorUrlNotValid=Adressen på webstedet er forkert
|
||||
// STOP - Lines generated via autotranslator.php tool (2009-08-13 20:39:59).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
|
||||
// Reference language: en_US
|
||||
Error=Fejl
|
||||
Errors=Fejl
|
||||
ErrorBadEMail=EMail %s er forkert
|
||||
ErrorBadUrl=Url %s er forkert
|
||||
ErrorRecordNotFound=Optag ikke fundet.
|
||||
ErrorDirNotFound=Directory <b>%s</b> ikke fundet (Bad sti, forkerte rettigheder eller adgang nægtet af PHP openbasedir eller safe_mode parameter)
|
||||
ErrorFileAlreadyExists=En fil med dette navn findes allerede.
|
||||
ErrorPartialFile=Fil ikke modtaget helt af serveren.
|
||||
ErrorNoTmpDir=Midlertidig directy %s ikke eksisterer.
|
||||
ErrorUploadBlockedByAddon=Upload blokeret af en PHP / Apache plugin.
|
||||
ErrorFileSizeTooLarge=Filstørrelse er for stor.
|
||||
WarningSafeModeOnCheckExecDir=Advarsel, PHP option <b>safe_mode</b> er på så kommandoen skal opbevares i en mappe angivet af php parameter <b>safe_mode_exec_dir.</b>
|
||||
WarningConfFileMustBeReadOnly=Advarsel, config fil <b>(htdocs / conf / conf.php)</b> kan din blive overskrevet af den web-server. Dette er en alvorlig sikkerhedsrisiko hul. Rediger tilladelserne til filen skal være i read only mode i operativsystemet bruger bruges af web-serveren. Hvis du bruger Windows og FAT format til din disk, skal du vide, at denne fil systemet ikke lader til at tilføje tilladelser på filen, kan så ikke helt sikker.
|
||||
ErrorModuleRequireJavascript=Javascript skal ikke være deaktiveret for at have denne funktion virker. For at aktivere / deaktivere Javascript, gå til menu Home-> Setup-> Display.
|
||||
ErrorPasswordsMustMatch=Begge har skrevet passwords skal matche hinanden
|
||||
ErrorContactEMail=En teknisk fejl opstod. Venligst, administrator til at kontakte folowwing <b>email%</b> en give fejlkode <b>%s</b> i din besked, eller endnu bedre ved at tilføje en skærm kopi af denne side.
|
||||
ErrorWrongValueForField=Forkert værdi for felt nummer <b>%s</b> (værdi <b>'%s'</b> passer ikke regex regel <b>%s)</b>
|
||||
ErrorsOnXLines=Fejl på <b>%s</b> kildelinjer
|
||||
WarningsOnXLines=Advarsler om <b>%s</b> kildelinjer
|
||||
ErrorFileIsInfectedWithAVirus=Det antivirusprogram var ikke i stand til at validere filen (filen kan være inficeret med en virus)
|
||||
ErrorSpecialCharNotAllowedForField=Specialtegn er ikke tilladt for feltet "%s"
|
||||
WarningNoDocumentModelActivated=Ingen model, for dokument generation, er blevet aktiveret. En model vil være choosed som standard, indtil du tjekke din modul opsætning.
|
||||
ErrorDatabaseParameterWrong=Database setup parameter <b>'%s'</b> har en værdi ikke er forenelige at bruge Dolibarr (skal have værdi <b>'%s</b> «).
|
||||
ErrorNumRefModel=En henvisning findes i databasen (%s) og er ikke kompatible med denne nummerering regel. Fjern optage eller omdøbt henvisning til aktivere dette modul.
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:20:21).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
ErrorQtyTooLowForThisSupplier=Mængde for lav for denne leverandør eller nogen pris fastlagt på denne vare for denne leverandør
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:41:54).
|
||||
|
||||
@@ -18,7 +18,7 @@ ConfFileExists=<b>Konfigurationsfil %s</b> eksisterer.
|
||||
ConfFileDoesNotExists=<b>Konfigurationsfil %s</b> eksisterer ikke!
|
||||
ConfFileDoesNotExistsAndCouldNotBeCreated=<b>Konfigurationsfil %s</b> eksisterer ikke og kunne ikke oprettes!
|
||||
ConfFileCouldBeCreated=<b>Konfigurationsfil %s</b> kunne oprettes.
|
||||
ConfFileIsNotWritable=<b>Konfigurationsfil %s</b> er ikke skrivbar. Check permissions. For første installation, webserveren skal ydes for at kunne skrive i denne fil under konfigurationen ( "chmod 666" for eksempel på Unix-lignende OS).
|
||||
ConfFileIsNotWritable=<b>Konfigurationsfil %s</b> er ikke skrivbar. Check permissions. For første installation, webserveren skal ydes for at kunne skrive i denne fil under konfigurationen ( "chmod 666" for eksempel på Unix-lignende OS).
|
||||
ConfFileIsWritable=<b>Konfigurationsfil %s</b> er skrivbar.
|
||||
PHPSupportSessions=Denne PHP understøtter sessioner.
|
||||
PHPSupportPOSTGETOk=Denne PHP understøtter variabler POST og GET.
|
||||
@@ -33,14 +33,14 @@ ErrorPHPDoesNotSupportGD=Din PHP installation ikke understøtter grafiske funkti
|
||||
ErrorPHPDoesNotSupportUTF8=Din PHP installation ikke støtte UTF8 funktioner. Dolibarr kan ikke fungere korrekt. Løse dette, før du installerer Dolibarr.
|
||||
ErrorDirDoesNotExists=Directory %s ikke eksisterer.
|
||||
ErrorGoBackAndCorrectParameters=Gå tilbage og rette forkerte parametre.
|
||||
ErrorWrongValueForParameter=Du kan have indtastet en forkert værdi for parameter ' %s'.
|
||||
ErrorFailedToCreateDatabase=Kunne ikke oprette databasen ' %s'.
|
||||
ErrorFailedToConnectToDatabase=Det lykkedes ikke at oprette forbindelse til databasen ' %s'.
|
||||
ErrorWrongValueForParameter=Du kan have indtastet en forkert værdi for parameter ' %s'.
|
||||
ErrorFailedToCreateDatabase=Kunne ikke oprette databasen ' %s'.
|
||||
ErrorFailedToConnectToDatabase=Det lykkedes ikke at oprette forbindelse til databasen ' %s'.
|
||||
ErrorPHPVersionTooLow=PHP version for gammel. Version %s er påkrævet.
|
||||
ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren vellykket men database ' %s' blev ikke fundet.
|
||||
ErrorDatabaseAlreadyExists=Database ' %s' eksisterer allerede.
|
||||
IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke findes, gå tilbage og tjekke valgmulighed "Opret database".
|
||||
IfDatabaseExistsGoBackAndCheckCreate=Hvis database findes allerede, gå tilbage og fjerne markeringen "Opret database" valgmulighed.
|
||||
ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren vellykket men database ' %s' blev ikke fundet.
|
||||
ErrorDatabaseAlreadyExists=Database ' %s' eksisterer allerede.
|
||||
IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke findes, gå tilbage og tjekke valgmulighed "Opret database".
|
||||
IfDatabaseExistsGoBackAndCheckCreate=Hvis database findes allerede, gå tilbage og fjerne markeringen "Opret database" valgmulighed.
|
||||
PHPVersion=PHP Version
|
||||
YouCanContinue=Du kan fortsætte ...
|
||||
PleaseBePatient=Vær tålmodig ...
|
||||
@@ -54,7 +54,7 @@ DatabaseChoice=Database valg
|
||||
DatabaseType=Database type
|
||||
DriverType=Driver type
|
||||
Server=Server
|
||||
ServerAddressDescription=Navn eller IP-adresse til database-serveren, som normalt 'localhost', når database-serveren er hostet på samme server end webserver
|
||||
ServerAddressDescription=Navn eller IP-adresse til database-serveren, som normalt 'localhost', når database-serveren er hostet på samme server end webserver
|
||||
ServerPortDescription=Database serverport. Opbevar tomme hvis ukendt.
|
||||
DatabaseServer=Database server
|
||||
DatabaseName=Database navn
|
||||
@@ -92,13 +92,13 @@ SetupEnd=Slutningen af setup
|
||||
SystemIsInstalled=Denne installationen er færdig.
|
||||
SystemIsUpgraded=Dolibarr er blevet opgraderet med succes.
|
||||
YouNeedToPersonalizeSetup=Du er nødt til at konfigurere Dolibarr at matche dine behov (udseende, funktioner, ...). For at gøre dette, skal du følge nedenstående link:
|
||||
AdminLoginCreatedSuccessfuly=Dolibarr administrator login <b>' %s'</b> skabt successfuly.
|
||||
AdminLoginCreatedSuccessfuly=Dolibarr administrator login <b>' %s'</b> skabt successfuly.
|
||||
GoToSetupArea=Gå til Dolibarr (setup-området)
|
||||
Examples=Eksempler
|
||||
WithNoSlashAtTheEnd=Uden skråstreg "/" i slutningen
|
||||
WithNoSlashAtTheEnd=Uden skråstreg "/" i slutningen
|
||||
LoginAlreadyExists=Allerede findes
|
||||
DolibarrAdminLogin=Dolibarr admin login
|
||||
AdminLoginAlreadyExists=Dolibarr administratorkonto <b>' %s'</b> eksisterer allerede.
|
||||
AdminLoginAlreadyExists=Dolibarr administratorkonto <b>' %s'</b> eksisterer allerede.
|
||||
WarningRemoveInstallDir=Advarsel, af sikkerhedshensyn, når de installerer eller opgraderer er færdig, bør du fjerne <b>installationen mappe eller omdøbe den til install.lock for at undgå sin ondsindet brug.</b>
|
||||
ThisPHPDoesNotSupportTypeBase=Denne PHP system understøtter ikke nogen grænseflade for at få adgang til databasen type %s
|
||||
FunctionNotAvailableInThisPHP=Ikke til rådighed på dette PHP
|
||||
@@ -107,9 +107,9 @@ ChoosedMigrateScript=Valgt migrere script
|
||||
DataMigration=Data migration
|
||||
DatabaseMigration=Struktur database migration
|
||||
ProcessMigrateScript=Script forarbejdning
|
||||
ChooseYourSetupMode=Vælg din opsætning mode, og klik på "Start" ...
|
||||
ChooseYourSetupMode=Vælg din opsætning mode, og klik på "Start" ...
|
||||
FreshInstall=Friske installere
|
||||
FreshInstallDesc=Brug denne tilstand, hvis dette er din første installation. Hvis ikke, denne tilstand kan reparere en tidligere ufuldstændige installere, men hvis du ønsker at opgradere din version, kan du vælge "Opdater"-tilstand.
|
||||
FreshInstallDesc=Brug denne tilstand, hvis dette er din første installation. Hvis ikke, denne tilstand kan reparere en tidligere ufuldstændige installere, men hvis du ønsker at opgradere din version, kan du vælge "Opdater"-tilstand.
|
||||
Upgrade=Upgrade
|
||||
UpgradeDesc=Brug denne tilstand, hvis du har erstattet gamle Dolibarr filer med filerne fra en nyere version. Dette vil opgradere din database og data.
|
||||
Start=Start
|
||||
@@ -125,7 +125,7 @@ CharsetChoice=Tegnsæt valg
|
||||
CharacterSetClient=Tegnsæt anvendes til genererede HTML-websider
|
||||
CharacterSetClientComment=Vælg tegnsættet for web displayet. <br/> Default foreslåede tegnsæt er den ene af din database.
|
||||
CollationConnection=Tegn sortering orden
|
||||
CollationConnectionComment=Vælg side kode, der definerer karakter's sortering rækkefølge anvendes af databasen. Denne parameter kaldes også »samling« af nogle databaser. <br/> Denne parameter kan ikke defineres, hvis database findes allerede.
|
||||
CollationConnectionComment=Vælg side kode, der definerer karakter's sortering rækkefølge anvendes af databasen. Denne parameter kaldes også »samling« af nogle databaser. <br/> Denne parameter kan ikke defineres, hvis database findes allerede.
|
||||
CharacterSetDatabase=Tegnsæt for database
|
||||
CharacterSetDatabaseComment=Vælg tegnsættet ønskede for database oprettelse. <br/> Denne parameter kan ikke defineres, hvis database findes allerede.
|
||||
YouAskDatabaseCreationSoDolibarrNeedToConnect=Du beder om at oprette <b>databasen %s,</b> men for dette, Dolibarr behovet for at oprette forbindelse til <b>serveren %s</b> med <b>superbruger %s</b> tilladelser.
|
||||
@@ -136,8 +136,8 @@ RemoveItManuallyAndPressF5ToContinue=Fjern det manuelt, og tryk på F5 for at fo
|
||||
KeepDefaultValuesWamp=Du bruger DoliWamp opsætningsguiden, så værdier foreslås her allerede er optimeret. Ændre dem kun, hvis du ved hvad du gør.
|
||||
KeepDefaultValuesMamp=Du bruger DoliMamp opsætningsguiden, så værdier foreslås her allerede er optimeret. Ændre dem kun, hvis du ved hvad du gør.
|
||||
FieldRenamed=Felt omdøbt
|
||||
IfLoginDoesNotExistsCheckCreateUser=Hvis login ikke findes endnu, skal du kontrollere option "Opret bruger"
|
||||
ErrorConnection=Server <b>" %s",</b> databasenavn <b>" %s"</b> login <b>" %s",</b> eller database password kan være forkerte eller PHP klientversionen kan være for gammel i forhold til database version.
|
||||
IfLoginDoesNotExistsCheckCreateUser=Hvis login ikke findes endnu, skal du kontrollere option "Opret bruger"
|
||||
ErrorConnection=Server <b>" %s",</b> databasenavn <b>" %s"</b> login <b>" %s",</b> eller database password kan være forkerte eller PHP klientversionen kan være for gammel i forhold til database version.
|
||||
MigrationOrder=Data migration for kundernes ordrer
|
||||
MigrationSupplierOrder=Data migration for leverandører ordrer
|
||||
MigrationProposal=Data migration til kommercielle forslag
|
||||
@@ -180,7 +180,6 @@ MigrationDeliveryDetail=Levering opdatering
|
||||
// START - Lines generated via autotranslator.php tool (2009-08-13 20:39:59).
|
||||
// Reference language: en_US
|
||||
GoToDolibarr=Gå til Dolibarr
|
||||
MigrationNotFinished=Version af din dtabase er ikke helt up to date, så du er nødt til at køre opgraderingsprocessen igen.
|
||||
GoToUpgradePage=Gå til opgradere siden igen
|
||||
InstallChoiceSuggested=<b>Installer valg foreslået af installationsprogrammet.</b>
|
||||
MigrationStockDetail=Update materiel værdi af produkter
|
||||
@@ -194,3 +193,33 @@ MigrationDeliveryAddress=Update leverings adresse i forsendelser
|
||||
MigrationUpdateFailed=Mislykket Opgraderingsprocessen
|
||||
MigrationBankTransfertsUpdate=Update forbindelser mellem bank transaktion og en bankoverførsel
|
||||
// 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
|
||||
ForceHttps=Force sikre forbindelser (https)
|
||||
CheckToForceHttps=Markér dette for at tvinge sikre forbindelser (https). <br> Dette kræver, at web-serveren er konfigureret med en SSL-certifikat.
|
||||
DirectoryRecommendation=Det er opfordres der til at bruge en mappe uden for din mappe på dine websider.
|
||||
KeepDefaultValuesDeb=Du bruger Dolibarr opsætningsguiden fra en Ubuntu eller Debian-pakke, så værdier, der foreslås her, er allerede optimeret. Kun den password i databasen ejeren for at oprette skal udfyldes. Ændre andre parametre kun hvis du ved hvad du gør.
|
||||
InstallChoiceRecommanded=Anbefalet valg til at installere version <b>%s</b> fra din nuværende version <b>%s</b>
|
||||
CheckThatDatabasenameIsCorrect=Kontroller, at databasen navnet <b>"%s"</b> er korrekt.
|
||||
IfAlreadyExistsCheckOption=Hvis dette navn er korrekte, og at databasen ikke findes endnu, skal du kontrollere indstillingen "Opret database".
|
||||
OpenBaseDir=PHP openbasedir parameter
|
||||
YouAskToCreateDatabaseSoRootRequired=Du har markeret afkrydsningsfeltet "Opret database". Til dette skal du give login / password på superbruger (i bunden af skemaet).
|
||||
YouAskToCreateDatabaseUserSoRootRequired=Du har markeret afkrydsningsfeltet "Opret database ejer". Til dette skal du give login / password på superbruger (i bunden af skemaet).
|
||||
NextStepMightLastALongTime=Nuværende trin kan vare flere minutter. Vent venligst indtil det næste skærmbillede vises helt, før du fortsætter.
|
||||
MigrationCustomerOrderShipping=Migræne shipping for kundeordrer opbevaring
|
||||
MigrationShippingDelivery=Opgrader opbevaring af skibsfart
|
||||
MigrationShippingDelivery2=Opgrader opbevaring af shipping 2
|
||||
MigrationFixData=Fix for denormalized data
|
||||
MigrationRelationshipTables=Data migration for forholdet tabeller (%s)
|
||||
MigrationProjectTaskActors=Data migration for llx_projet_task_actors tabel
|
||||
MigrationProjectUserResp=Data migration inden fk_user_resp af llx_projet til llx_element_contact
|
||||
MigrationProjectTaskTime=Update tid i sekunder
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:22:05).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
MigrationNotFinished=Version af din database er ikke helt up to date, så du bliver nødt til at køre opgraderingen igen.
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:57:21).
|
||||
|
||||
46
htdocs/langs/da_DA/languages.lang
Normal file
46
htdocs/langs/da_DA/languages.lang
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Language code: da_DA
|
||||
* Automatic generated via autotranslator.php tool
|
||||
* Generation date 2010-07-17 11:19:38
|
||||
*/
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
|
||||
// Reference language: en_US
|
||||
CHARSET=UTF-8
|
||||
Language_ar_AR=Arabisk
|
||||
Language_ca_ES=Catalansk
|
||||
Language_da_DA=Danske
|
||||
Language_de_DE=Tysk
|
||||
Language_en_AU=Engelsk (Australien)
|
||||
Language_en_GB=English (United Kingdom)
|
||||
Language_en_IN=Engelsk (Indien)
|
||||
Language_en_US=Engelsk (USA)
|
||||
Language_es_ES=Spansk
|
||||
Language_es_AR=Spansk (Argentina)
|
||||
Language_fi_FI=Finner
|
||||
Language_fr_BE=Fransk (Belgien)
|
||||
Language_fr_CA=Fransk (Canada)
|
||||
Language_fr_CH=Fransk (Schweiz)
|
||||
Language_fr_FR=Fransk
|
||||
Language_is_IS=Islandsk
|
||||
Language_it_IT=Italiensk
|
||||
Language_nb_NO=Norsk (Bokmål)
|
||||
Language_nl_BE=Hollandsk (Belgien)
|
||||
Language_nl_NL=Hollandsk (Nederlandene)
|
||||
Language_pl_PL=Polsk
|
||||
Language_pt_BR=Portugisisk (Brasilien)
|
||||
Language_pt_PT=Portugisisk
|
||||
Language_ro_RO=Rumænsk
|
||||
Language_ru_RU=Russisk
|
||||
Language_tr_TR=Tyrkisk
|
||||
Language_sl_SL=Slovenske
|
||||
Language_zh_CN=Kinesisk
|
||||
Language_is_IS=Islandsk
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:20:09).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
Language_sv_SV=Svensk
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:40:15).
|
||||
@@ -142,7 +142,7 @@ DescADHERENT_ETIQUETTE_TYPE=Etiketter format
|
||||
DescADHERENT_CARD_HEADER_TEXT=Tekst trykt på toppen af medlem-kort
|
||||
DescADHERENT_CARD_TEXT=Tekst påtrykt medlem kort
|
||||
DescADHERENT_CARD_FOOTER_TEXT=Tekst trykt på bunden af medlem-kort
|
||||
ShowTypeCard=Vis type ' %s'
|
||||
ShowTypeCard=Vis type ' %s'
|
||||
HTPasswordExport=htpassword fil generation
|
||||
// Date 2009-01-19 21:26:39
|
||||
// STOP - Lines generated via parser
|
||||
@@ -169,3 +169,27 @@ MembersAndSubscriptions=Medlemmer og Suscriptions
|
||||
// Reference language: en_US
|
||||
FundationMembers=Instituttets medlemmer
|
||||
// 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
|
||||
DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=E-mail emne til medlem autosubscription
|
||||
DescADHERENT_AUTOREGISTER_MAIL=EMail for medlem autosubscription
|
||||
DescADHERENT_CARD_TYPE=Format af kort side
|
||||
DescADHERENT_CARD_TEXT_RIGHT=Tekst trykt på medlem-kort (tilpasning til højre)
|
||||
DescADHERENT_MAILMAN_LISTS=Liste (r) for automatisk insription af nye medlemmer (adskilt af et komma)
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:19:58).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
MoreActions=Supplerende aktion om kontrolapparatet
|
||||
MoreActionBankDirect=Opret en direkte transaktion record på grund
|
||||
MoreActionBankViaInvoice=Opret en faktura og acontobeløb
|
||||
MoreActionInvoiceOnly=Opret en faktura uden betaling
|
||||
LinkToGeneratedPages=Generer besøg kort
|
||||
LinkToGeneratedPagesDesc=Denne skærm giver dig mulighed for at generere PDF-filer med visitkort til alle dine medlemmer eller et bestemt medlem.
|
||||
DocForAllMembersCards=Generer visitkort for alle medlemmer (Format for output faktisk setup: <b>%s)</b>
|
||||
DocForOneMemberCards=Generer visitkort for et bestemt medlem (Format for output faktisk setup: <b>%s)</b>
|
||||
DocForLabels=Generer adresse ark (Format for output faktisk setup: <b>%s)</b>
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:37:48).
|
||||
|
||||
@@ -23,12 +23,12 @@ NewOrder=Ny ordre
|
||||
ToOrder=Foretag orden
|
||||
MakeOrder=Foretag orden
|
||||
SupplierOrder=Leverandør orden
|
||||
SuppliersOrders=Suppliers' ordrer
|
||||
SuppliersOrders=Suppliers' ordrer
|
||||
SuppliersOrdersRunning=Nuværende leverandører ordrer
|
||||
CustomerOrder=Kunden for
|
||||
CustomersOrders=Kundernes ordrer
|
||||
CustomersOrdersRunning=Nuværende kundernes ordrer
|
||||
CustomersOrdersAndOrdersLines=Kundens ordrer og kendelser 'linjer
|
||||
CustomersOrdersAndOrdersLines=Kundens ordrer og kendelser 'linjer
|
||||
OrdersToValid=Ordrer på gyldige
|
||||
OrdersToBill=Ordrer til lovforslag
|
||||
OrdersInProcess=Ordrer i processen
|
||||
@@ -93,7 +93,7 @@ ConfirmValidateOrder=Er du sikker på at du ønsker at validere denne ordre unde
|
||||
ConfirmCancelOrder=Er du sikker på du vil annullere denne ordre?
|
||||
ConfirmMakeOrder=Er du sikker på du vil bekræfte, du har foretaget denne ordre <b>på %s?</b>
|
||||
GenerateBill=Generer faktura
|
||||
ClassifyBilled=Klassificere "Billed"
|
||||
ClassifyBilled=Klassificere "Billed"
|
||||
ComptaCard=Regnskabsmæssig kortet
|
||||
DraftOrders=Udkast til ordrer
|
||||
RelatedOrders=Relaterede ordrer
|
||||
@@ -104,16 +104,16 @@ CustomerOrder=Kunden for
|
||||
RefCustomerOrderShort=Ref. kunde. rækkefølge
|
||||
SendOrderByMail=Send ordre ved mail
|
||||
ActionsOnOrder=Aktioner på bestilling
|
||||
NoArticleOfTypeProduct=Nr. artiklen af type 'produkt', så ingen shippable artikelnummer for denne ordre
|
||||
NoArticleOfTypeProduct=Nr. artiklen af type 'produkt', så ingen shippable artikelnummer for denne ordre
|
||||
OrderMode=Bestil metode
|
||||
AuthorRequest=Anmodning forfatter
|
||||
UseCustomerContactAsOrderRecipientIfExist=Brug kunde kontakt adresse, hvis defineret i stedet for tredjepart adresse som for modtagerens adresse
|
||||
RunningOrders=Ordrer på processen
|
||||
UserWithApproveOrderGrant=Useres ydes med "godkende ordrer" tilladelse.
|
||||
UserWithApproveOrderGrant=Useres ydes med "godkende ordrer" tilladelse.
|
||||
Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstant COMMANDE_SUPPLIER_ADDON ikke defineret
|
||||
Error_COMMANDE_ADDON_NotDefined=Konstant COMMANDE_ADDON ikke defineret
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Det lykkedes ikke at indlæse modulet fil ' %s'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File=Det lykkedes ikke at indlæse modulet fil ' %s'
|
||||
Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Det lykkedes ikke at indlæse modulet fil ' %s'
|
||||
Error_FailedToLoad_COMMANDE_ADDON_File=Det lykkedes ikke at indlæse modulet fil ' %s'
|
||||
OrderSource0=Kommerciel forslag
|
||||
OrderSource1=Internet
|
||||
OrderSource2=Mail-kampagne
|
||||
@@ -124,7 +124,6 @@ OrderSource6=Opbevare
|
||||
QtyOrdered=Qty bestilt
|
||||
AddDeliveryCostLine=Tilføj en leveringsrapport omkostninger linje angiver vægten af den rækkefølge
|
||||
PDFEinsteinDescription=En fuldstændig orden model (logo. ..)
|
||||
MarbreNumRefDesc=Renvoie le numro sous la forme %syymm-nnnn ou yy est l'année, mm le mois et nnnn un compteur sequentiel sans ruptur et sans bedre e 0
|
||||
// Date 2009-01-19 21:26:39
|
||||
// STOP - Lines generated via parser
|
||||
|
||||
@@ -136,3 +135,27 @@ PaymentOrderRef=Betaling af for %s
|
||||
CloneOrder=Klon orden
|
||||
ConfirmCloneOrder=Er du sikker på at du vil klone denne <b>ordre %s?</b>
|
||||
// STOP - Lines generated via autotranslator.php tool (2009-08-13 20:39:59).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-07-17 11:19:38).
|
||||
// Reference language: en_US
|
||||
OrderToProcess=For at kunne behandle
|
||||
TypeContact_commande_internal_SALESREPFOLL=Repræsentant opfølgning kundeordre
|
||||
TypeContact_commande_internal_SHIPPING=Repræsentant opfølgning shipping
|
||||
TypeContact_commande_external_BILLING=Kundefaktura kontakt
|
||||
TypeContact_commande_external_SHIPPING=Kunde shipping kontakt
|
||||
TypeContact_commande_external_CUSTOMER=Kundekontakt følgende retskendelse
|
||||
TypeContact_order_supplier_internal_SALESREPFOLL=Repræsentant opfølgning leverandør for
|
||||
TypeContact_order_supplier_internal_SHIPPING=Repræsentant opfølgning shipping
|
||||
TypeContact_order_supplier_external_BILLING=Leverandør faktura kontakt
|
||||
TypeContact_order_supplier_external_SHIPPING=Leverandør shipping kontakt
|
||||
TypeContact_order_supplier_external_CUSTOMER=Leverandør kontakt efter retskendelse
|
||||
PDFEdisonDescription=En simpel orden model
|
||||
PDFQuevedoDescription=En komplet orden model med spanske RE og IRPF
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:19:41).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
DispatchSupplierOrder=Modtagelse leverandør for %s
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:34:00).
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
CHARSET=UTF-8
|
||||
ErrorPasswordDiffers=Passwords er forskellig, skal du skrive dem igen.
|
||||
ErrorForbidden=Adgang forbudt. <br> Du forsøger at få adgang til en side, et område eller funktion uden at være i en authenticated samling, eller som ikke er tilladt til din brugerkonto.
|
||||
ErrorForbidden2=Tilladelse til dette login kan defineres af din Dolibarr administrator fra menuen %s-> %s.
|
||||
ErrorForbidden2=Tilladelse til dette login kan defineres af din Dolibarr administrator fra menuen %s-> %s.
|
||||
ErrorForbidden3=Det lader til, at Dolibarr ikke anvendes gennem en authenticated session. Tag et kig på Dolibarr setup dokumentation for at vide, hvordan man forvalter authentications (htaccess, mod_auth eller andre ...).
|
||||
ErrorNoImagickReadimage=Funktion imagick_readimage er ikke fundet i denne PHP. Intet eksempel kan være til rådighed. Administratorer kan deaktivere denne fane fra menuen Setup - Display.
|
||||
ErrorRecordAlreadyExists=Optag allerede findes
|
||||
ErrorCantReadFile=Kunne ikke læse filen ' %s'
|
||||
ErrorCantReadDir=Kunne ikke læse directory ' %s'
|
||||
ErrorFailedToFindEntity=Kunne ikke læse enhed ' %s'
|
||||
ErrorCantReadFile=Kunne ikke læse filen ' %s'
|
||||
ErrorCantReadDir=Kunne ikke læse directory ' %s'
|
||||
ErrorFailedToFindEntity=Kunne ikke læse enhed ' %s'
|
||||
ErrorBadLoginPassword=Bad værdi for brugernavn eller password
|
||||
ErrorLoginDisabled=Din konto er blevet deaktiveret
|
||||
ErrorFailedToRunExternalCommand=Det lykkedes ikke at køre eksterne kommando. Check den er tilgængelig og runnable af din PHP server. Hvis PHP <b>Safe Mode</b> er aktiveret, skal du kontrollere, at kommandoen er inde i en mappe defineret ved parameter <b>safe_mode_exec_dir.</b>
|
||||
@@ -179,3 +179,49 @@ DolibarrNotification=Automatisk anmeldelse
|
||||
DemoFundation=Administrer medlemmer af en fond
|
||||
DemoFundation2=Administrer medlemmer og bankkonto i en fond
|
||||
// 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
|
||||
Notify_NOTIFY_VAL_ORDER=Kundeordre valideret
|
||||
Notify_NOTIFY_VAL_PROPAL=Kunde forslag valideret
|
||||
PredefinedMailTest=Dette er en test mail. \ NDen to linjer er adskilt af et linjeskift.
|
||||
PredefinedMailTestHtml=Dette er en <b>test</b> mail (ordet test skal være i fed). <br> De to linjer er adskilt af et linjeskift.
|
||||
CalculatedWeight=Beregnet vægt
|
||||
CalculatedVolume=Beregnet mængde
|
||||
Length=Længde
|
||||
LengthUnitm=m
|
||||
LengthUnitdm=dm
|
||||
LengthUnitcm=cm
|
||||
LengthUnitmm=mm
|
||||
Surface=Område
|
||||
SurfaceUnitm2=m2
|
||||
SurfaceUnitdm2=dm2
|
||||
SurfaceUnitcm2=cm2
|
||||
SurfaceUnitmm2=mm2
|
||||
NumberOfUnitsProposals=Antal enheder på forslag om sidste 12 måneder
|
||||
EMailTextProposalValidated=Forslaget %s er blevet valideret.
|
||||
EMailTextOrderValidated=Ordren %s er blevet valideret.
|
||||
ResizeDesc=Indtast nye bredde <b>OR</b> ny højde. Ratio vil blive holdt i resizing ...
|
||||
NewLength=Ny bredde
|
||||
NewHeight=Ny højde
|
||||
NewSizeAfterCropping=Ny størrelse efter beskæring
|
||||
DefineNewAreaToPick=Definer et nyt område på billedet for at vælge (til venstre klik på billedet og derefter trække, indtil du når det modsatte hjørne)
|
||||
CurrentInformationOnImage=Informationer om aktuelle billede
|
||||
YouReceiveMailBecauseOfNotification=Du modtager denne besked fordi din e-mail er blevet føjet til listen over mål, der skal informeres om bestemte begivenheder i %s software %s.
|
||||
YouReceiveMailBecauseOfNotification2=Denne begivenhed er følgende:
|
||||
ExternalSites=Eksterne sites
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:22:00).
|
||||
|
||||
|
||||
// START - Lines generated via autotranslator.php tool (2010-09-04 01:33:40).
|
||||
// Reference language: en_US -> da_DA
|
||||
PredefinedMailContentSendSupplierOrder=Du vil her finde vores ordre __ORDERREF__ \ n \ nSincerely \ n \ n
|
||||
WeightUnitpound=pund
|
||||
VolumeUnitounce=unse
|
||||
VolumeUnitlitre=liter
|
||||
VolumeUnitgallon=gallon
|
||||
SizeUnitinch=tomme
|
||||
SizeUnitfoot=mund
|
||||
ImageEditor=Image editor
|
||||
// STOP - Lines generated via autotranslator.php tool (2010-09-04 01:56:50).
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user