From c477c9e25951a5c98f76bb3ca1f175d27d33206d Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Sat, 13 Sep 2008 21:09:55 +0000 Subject: [PATCH] Merged revisions 1909-1911,1914-1915,1917-1920,1922-1925,1927,1929-1943,1945,1947-1953,1955-1965,1967-1977,1979-1993,1995-2018,2020-2040,2042-2046,2048-2160 via svnmerge from svn+ssh://danydb@svn/svn/phpcompta/branches/rel410-exp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ r1909 | danydb | 2008-03-03 18:01:14 +0100 (Mon, 03 Mar 2008) | 1 line New branches for the rel410 : priority = interface ........ r1914 | danydb | 2008-03-05 18:53:35 +0100 (Wed, 05 Mar 2008) | 1 line Code cleaning for the predefined operation ........ r1918 | danydb | 2008-03-07 16:56:47 +0100 (Fri, 07 Mar 2008) | 1 line The database version is now in a constant ........ r1920 | danydb | 2008-03-10 12:07:00 +0100 (Mon, 10 Mar 2008) | 1 line Not needed patch ........ r1922 | danydb | 2008-03-10 16:45:29 +0100 (Mon, 10 Mar 2008) | 1 line COSMETIC : improve login page ........ r1923 | danydb | 2008-03-10 17:10:52 +0100 (Mon, 10 Mar 2008) | 1 line COSMETIC : improve interface template of document ........ r1924 | danydb | 2008-03-10 18:34:12 +0100 (Mon, 10 Mar 2008) | 1 line Cosmetic : improve interface "preference" ........ r1929 | danydb | 2008-03-11 16:08:53 +0100 (Tue, 11 Mar 2008) | 1 line Complete workaround (see rev 1927) ........ r1930 | danydb | 2008-03-11 18:28:23 +0100 (Tue, 11 Mar 2008) | 1 line Task 46 : rewrite Rapport before adding miniRapport ........ r1931 | danydb | 2008-03-11 18:36:31 +0100 (Tue, 11 Mar 2008) | 1 line class_periode was removed by mistake, it is readded ........ r1932 | danydb | 2008-03-12 19:12:07 +0100 (Wed, 12 Mar 2008) | 1 line task 46 : rewritting of rapport ........ r1934 | danydb | 2008-03-13 14:13:23 +0100 (Thu, 13 Mar 2008) | 1 line Task 46 Rapport are completely rewritted ........ r1935 | danydb | 2008-03-13 17:06:36 +0100 (Thu, 13 Mar 2008) | 1 line Task 46 mini report on welcome page -> task finished ........ r1936 | danydb | 2008-03-14 10:55:15 +0100 (Fri, 14 Mar 2008) | 1 line Correct documentation ........ r1937 | danydb | 2008-03-14 12:13:54 +0100 (Fri, 14 Mar 2008) | 1 line if the browser doesn\'t accept the cookie, the PHPSESSID must be put into the url ........ r1938 | danydb | 2008-03-14 16:26:01 +0100 (Fri, 14 Mar 2008) | 1 line Fix unknow pass_1 ........ r1939 | danydb | 2008-03-14 16:27:15 +0100 (Fri, 14 Mar 2008) | 1 line Duplicate DBVERSION ........ r1940 | danydb | 2008-03-14 16:50:14 +0100 (Fri, 14 Mar 2008) | 1 line Cosmetic ........ r1941 | danydb | 2008-03-14 16:51:19 +0100 (Fri, 14 Mar 2008) | 1 line In .htaccess the value of error_reporting must different in prod. ........ r1943 | danydb | 2008-03-15 20:13:47 +0100 (Sat, 15 Mar 2008) | 1 line task 50 : check if bcmath avail. ........ r1952 | danydb | 2008-03-18 16:43:48 +0100 (Tue, 18 Mar 2008) | 1 line Improve code ........ r1955 | danydb | 2008-03-18 18:19:35 +0100 (Tue, 18 Mar 2008) | 1 line Code cleaning : Replace InsertJrn and InsertJrnx by Acc_Operation:insert_jrn and Acc_Operation:insert_jrnx, replace also the reconciliation by Acc_Reconciliation:insert ........ r1956 | danydb | 2008-03-19 19:12:37 +0100 (Wed, 19 Mar 2008) | 1 line Improve code : tva is now an object acc_tva ........ r1957 | danydb | 2008-03-20 13:43:38 +0100 (Thu, 20 Mar 2008) | 1 line Fix some vulnerabilities for SQL Injection ........ r1959 | danydb | 2008-03-20 23:07:24 +0100 (Thu, 20 Mar 2008) | 1 line task 34 : Improve CSS ........ r1960 | danydb | 2008-03-20 23:45:04 +0100 (Thu, 20 Mar 2008) | 1 line task 48 : improve report ........ r1961 | danydb | 2008-03-20 23:52:32 +0100 (Thu, 20 Mar 2008) | 1 line Fix small cosmetic bugs and improve the search account_windows ........ r1962 | danydb | 2008-03-20 23:55:07 +0100 (Thu, 20 Mar 2008) | 1 line improve the search account_windows ........ r1968 | danydb | 2008-03-21 18:46:26 +0100 (Fri, 21 Mar 2008) | 1 line Improve the account search functionnality ........ r1969 | danydb | 2008-03-21 20:29:39 +0100 (Fri, 21 Mar 2008) | 1 line task #31 & task #34 : mail follow-up, 2 step instead of 3 and improve appearance ........ r1970 | danydb | 2008-03-21 22:01:30 +0100 (Fri, 21 Mar 2008) | 1 line Task #27 : modify detail of folder and template ........ r1971 | danydb | 2008-03-21 22:22:20 +0100 (Fri, 21 Mar 2008) | 1 line Task 53 : add the tva rate in the generated invoice ........ r1972 | danydb | 2008-03-21 22:26:41 +0100 (Fri, 21 Mar 2008) | 1 line Make a insensitive search for the folder name ........ r1990 | danydb | 2008-03-26 23:36:46 +0100 (Wed, 26 Mar 2008) | 1 line Conversion to unicode ........ r1991 | danydb | 2008-03-26 23:58:06 +0100 (Wed, 26 Mar 2008) | 1 line cosmetic ........ r1992 | danydb | 2008-03-26 23:58:08 +0100 (Wed, 26 Mar 2008) | 1 line Remove last latin1 code ........ r1995 | danydb | 2008-03-31 17:35:30 +0200 (Mon, 31 Mar 2008) | 1 line report : Add the button Search for new line ........ r1996 | danydb | 2008-03-31 17:38:56 +0200 (Mon, 31 Mar 2008) | 1 line report : add the set_poste_child ........ r1997 | danydb | 2008-03-31 22:32:05 +0200 (Mon, 31 Mar 2008) | 1 line Next SQL Upgrade for class_acc_tva ........ r1998 | danydb | 2008-03-31 22:32:53 +0200 (Mon, 31 Mar 2008) | 1 line Rewriting of class_acc_parm_code ........ r1999 | danydb | 2008-03-31 23:13:23 +0200 (Mon, 31 Mar 2008) | 1 line Improve VAT class and form ........ r2000 | danydb | 2008-03-31 23:16:37 +0200 (Mon, 31 Mar 2008) | 1 line Rewrite TVA insert ........ r2001 | danydb | 2008-04-01 16:01:52 +0200 (Tue, 01 Apr 2008) | 5 lines Start to rewrite ledger encoding Move predefined operation to preod.inc.php Add the menu Predefined operation in the parameter module ........ r2003 | danydb | 2008-04-01 22:02:26 +0200 (Tue, 01 Apr 2008) | 1 line Ergonomy : drop folder and template ........ r2004 | danydb | 2008-04-03 22:59:45 +0200 (Thu, 03 Apr 2008) | 1 line Fix undefined variable in class_periode.php ........ r2005 | danydb | 2008-04-04 00:13:05 +0200 (Fri, 04 Apr 2008) | 1 line Fix undefined variable in gestion->customer->operation ........ r2006 | danydb | 2008-04-07 14:23:01 +0200 (Mon, 07 Apr 2008) | 1 line Login & mot de passe en français ........ r2007 | danydb | 2008-04-07 15:24:56 +0200 (Mon, 07 Apr 2008) | 1 line Documentation : change to unicode ........ r2008 | danydb | 2008-04-07 16:42:02 +0200 (Mon, 07 Apr 2008) | 1 line Protect against SQL Injection ........ r2009 | danydb | 2008-04-07 16:43:07 +0200 (Mon, 07 Apr 2008) | 1 line Download the definition of a report ........ r2010 | danydb | 2008-04-07 16:57:55 +0200 (Mon, 07 Apr 2008) | 2 lines Remove debug info ........ r2011 | danydb | 2008-04-07 17:32:17 +0200 (Mon, 07 Apr 2008) | 1 line Upload and save of a definition of a report ........ r2012 | danydb | 2008-04-08 17:04:00 +0200 (Tue, 08 Apr 2008) | 1 line task 50 : use of bcmat to avoid rounding problem ........ r2013 | danydb | 2008-04-09 13:48:30 +0200 (Wed, 09 Apr 2008) | 2 lines task #36 : add a warning if no mini report is defined ........ r2024 | danydb | 2008-04-11 18:02:22 +0200 (Fri, 11 Apr 2008) | 1 line Task #25 : feature backup / restore useful, restore is always in unicode ........ r2025 | danydb | 2008-04-11 18:35:55 +0200 (Fri, 11 Apr 2008) | 1 line task 51 : warning when trying to create a new folder ........ r2026 | danydb | 2008-04-12 16:00:09 +0200 (Sat, 12 Apr 2008) | 2 lines Cosmetic : change in the detailled operation Debit by Montant ........ r2027 | danydb | 2008-04-12 16:04:32 +0200 (Sat, 12 Apr 2008) | 2 lines Operation ; without details by default ........ r2028 | danydb | 2008-04-12 16:04:47 +0200 (Sat, 12 Apr 2008) | 2 lines Remove details from operation supplier ........ r2029 | danydb | 2008-04-12 16:15:17 +0200 (Sat, 12 Apr 2008) | 1 line Gestion : fix bug in return button when adding a customer ........ r2030 | danydb | 2008-04-12 16:19:19 +0200 (Sat, 12 Apr 2008) | 1 line Gestion : bug remove delete message ........ r2031 | danydb | 2008-04-12 16:22:25 +0200 (Sat, 12 Apr 2008) | 3 lines Remove php tag and replace by echo Add in "Comptabilité" the Great Ledger ........ r2032 | danydb | 2008-04-12 17:10:06 +0200 (Sat, 12 Apr 2008) | 1 line Fix Bilan : France bug with unicode ........ r2033 | danydb | 2008-04-12 17:17:55 +0200 (Sat, 12 Apr 2008) | 3 lines Separate the user setting from the general constant.php, a template file is given (config.inc) Fix some cosmetic bug for this shit of IE ........ r2034 | danydb | 2008-04-18 14:51:13 +0200 (Fri, 18 Apr 2008) | 2 lines Fix bug : missing coma ........ r2035 | danydb | 2008-04-19 23:39:09 +0200 (Sat, 19 Apr 2008) | 1 line class_widget fix button_href to work on the same way with IE and firefox ........ r2036 | danydb | 2008-05-01 18:17:06 +0200 (Thu, 01 May 2008) | 2 lines task #33 start rewriting of encoding operation (VEN) ........ r2037 | danydb | 2008-05-01 18:18:26 +0200 (Thu, 01 May 2008) | 2 lines task #33 start rewriting of encoding operation (VEN) ........ r2040 | danydb | 2008-05-07 20:53:32 +0200 (Wed, 07 May 2008) | 1 line Unicode for doxygen ........ r2043 | danydb | 2008-05-25 17:32:51 +0200 (Sun, 25 May 2008) | 2 lines Default pref is TEXT instead of SELECT ........ r2045 | danydb | 2008-06-14 17:48:46 +0200 (Sat, 14 Jun 2008) | 1 line Add a style input_type ........ r2046 | danydb | 2008-06-14 17:49:58 +0200 (Sat, 14 Jun 2008) | 3 lines 1. Replace the CSS class u_content by content, the u_content existed for historic reason 2. Start the coding of ledger sold ........ r2048 | danydb | 2008-06-14 18:31:55 +0200 (Sat, 14 Jun 2008) | 1 line remove javascript warning ........ r2049 | danydb | 2008-06-14 18:32:26 +0200 (Sat, 14 Jun 2008) | 1 line Ledger SOLD add row ........ r2050 | danydb | 2008-06-14 19:54:29 +0200 (Sat, 14 Jun 2008) | 1 line Ledger sold : replace dot by style ........ r2051 | danydb | 2008-06-14 21:08:48 +0200 (Sat, 14 Jun 2008) | 1 line correct unicode char in doc folder ........ r2052 | danydb | 2008-06-14 23:58:01 +0200 (Sat, 14 Jun 2008) | 1 line Ledger SOLD : automatic update of the total ........ r2053 | danydb | 2008-06-15 12:05:02 +0200 (Sun, 15 Jun 2008) | 1 line Performance : the prototype.js is quite heavy, and is not any more included in every page, instead now, there is a html_min_start_page with a minimum of javascript files and a mintoolkit.js which contains the minimum for javascript ........ r2054 | danydb | 2008-06-15 12:17:22 +0200 (Sun, 15 Jun 2008) | 1 line Prototype.js performance, included only if needed, improve performance for access.php, user_login.php ........ r2055 | danydb | 2008-06-19 11:29:52 +0200 (Thu, 19 Jun 2008) | 1 line Cosmetic : Adapt CSS for F3 ........ r2056 | danydb | 2008-06-19 12:18:13 +0200 (Thu, 19 Jun 2008) | 1 line remove useless comment and debug message ........ r2057 | danydb | 2008-06-19 12:32:58 +0200 (Thu, 19 Jun 2008) | 1 line Update CSS classic ........ r2058 | danydb | 2008-06-24 01:14:21 +0200 (Tue, 24 Jun 2008) | 1 line ........ r2059 | danydb | 2008-06-28 14:05:23 +0200 (Sat, 28 Jun 2008) | 1 line task #67 : infobulle ........ r2060 | danydb | 2008-06-28 14:16:37 +0200 (Sat, 28 Jun 2008) | 1 line Bug in add_row ........ r2061 | danydb | 2008-06-28 14:16:49 +0200 (Sat, 28 Jun 2008) | 1 line task #67 : infobulle ........ r2062 | danydb | 2008-06-28 15:21:57 +0200 (Sat, 28 Jun 2008) | 1 line Compute the sold amount via javascript ........ r2063 | danydb | 2008-06-28 15:34:38 +0200 (Sat, 28 Jun 2008) | 1 line Correct typo ........ r2064 | danydb | 2008-07-01 23:02:29 +0200 (Tue, 01 Jul 2008) | 1 line Add predef operation for VEN ........ r2065 | danydb | 2008-07-02 23:57:45 +0200 (Wed, 02 Jul 2008) | 1 line Fixed undefined use_predef ........ r2066 | danydb | 2008-07-03 15:27:22 +0200 (Thu, 03 Jul 2008) | 2 lines Work without prototype.js ........ r2067 | danydb | 2008-07-03 18:33:03 +0200 (Thu, 03 Jul 2008) | 2 lines Fix bug with undefined variable ........ r2068 | danydb | 2008-07-03 18:43:53 +0200 (Thu, 03 Jul 2008) | 2 lines typo ........ r2069 | danydb | 2008-07-03 20:37:06 +0200 (Thu, 03 Jul 2008) | 1 line New version for Ledger sold and invoice ........ r2070 | danydb | 2008-07-03 20:56:47 +0200 (Thu, 03 Jul 2008) | 1 line Update infobulle + typo ........ r2071 | danydb | 2008-07-04 12:55:16 +0200 (Fri, 04 Jul 2008) | 1 line Correct last bug for compta_ven ........ r2072 | danydb | 2008-07-04 14:34:24 +0200 (Fri, 04 Jul 2008) | 1 line Task#39 Migrate to unicode ........ r2073 | danydb | 2008-07-04 14:34:47 +0200 (Fri, 04 Jul 2008) | 1 line Task#39 Migrate to unicode ........ r2074 | danydb | 2008-07-04 14:40:38 +0200 (Fri, 04 Jul 2008) | 2 lines Add documentation for task #39 (unicode) ........ r2075 | danydb | 2008-07-04 14:53:47 +0200 (Fri, 04 Jul 2008) | 2 lines cosmetic ........ r2076 | danydb | 2008-07-04 16:52:56 +0200 (Fri, 04 Jul 2008) | 2 lines cosmetic ........ r2077 | danydb | 2008-07-04 18:02:23 +0200 (Fri, 04 Jul 2008) | 1 line Update CSS ........ r2078 | danydb | 2008-07-04 18:22:11 +0200 (Fri, 04 Jul 2008) | 2 lines Add reset type ........ r2079 | danydb | 2008-07-04 21:50:24 +0200 (Fri, 04 Jul 2008) | 1 line Rewriting of the financial ledger ........ r2080 | danydb | 2008-07-04 21:53:43 +0200 (Fri, 04 Jul 2008) | 1 line Cosmetic ........ r2081 | danydb | 2008-07-05 00:18:17 +0200 (Sat, 05 Jul 2008) | 1 line Ledger Purchase ........ r2082 | danydb | 2008-07-05 00:18:42 +0200 (Sat, 05 Jul 2008) | 1 line rename compta_ach.php ........ r2083 | danydb | 2008-07-05 03:49:35 +0200 (Sat, 05 Jul 2008) | 1 line Finish ledger purchase ........ r2084 | danydb | 2008-07-05 04:22:50 +0200 (Sat, 05 Jul 2008) | 1 line bugs ledger purchase + javascript : need to trim parameters for Ajax (qcode and amounts) ........ r2085 | danydb | 2008-07-05 06:04:21 +0200 (Sat, 05 Jul 2008) | 1 line Rewriting of the ledger is complete, now we can remove dead code and files ........ r2086 | danydb | 2008-07-05 14:10:23 +0200 (Sat, 05 Jul 2008) | 1 line Correct javascript bugs ........ r2087 | danydb | 2008-07-05 14:13:16 +0200 (Sat, 05 Jul 2008) | 1 line code cleaning ........ r2088 | danydb | 2008-07-05 14:34:16 +0200 (Sat, 05 Jul 2008) | 1 line code cleaning ........ r2089 | danydb | 2008-07-05 17:18:48 +0200 (Sat, 05 Jul 2008) | 1 line Adapt a little bit the direct writing ........ r2090 | danydb | 2008-07-05 21:53:50 +0200 (Sat, 05 Jul 2008) | 1 line Improve installation ........ r2091 | danydb | 2008-07-05 21:54:00 +0200 (Sat, 05 Jul 2008) | 1 line Improve installation ........ r2092 | danydb | 2008-07-05 22:20:11 +0200 (Sat, 05 Jul 2008) | 1 line Setup ........ r2093 | danydb | 2008-07-05 22:33:36 +0200 (Sat, 05 Jul 2008) | 1 line Readd user_action_gl.php ........ r2094 | danydb | 2008-07-05 22:38:15 +0200 (Sat, 05 Jul 2008) | 1 line Re-add user_action_gl.php ........ r2095 | danydb | 2008-07-06 00:52:23 +0200 (Sun, 06 Jul 2008) | 1 line New setup ........ r2096 | danydb | 2008-07-06 02:02:41 +0200 (Sun, 06 Jul 2008) | 1 line small bugs ........ r2097 | danydb | 2008-07-06 19:27:05 +0200 (Sun, 06 Jul 2008) | 1 line Fix security bug with domain ........ r2098 | danydb | 2008-07-06 19:39:55 +0200 (Sun, 06 Jul 2008) | 1 line fix bug : javascript Purchase does not update correctly when a card is blanked ........ r2099 | danydb | 2008-07-13 00:31:41 +0200 (Sun, 13 Jul 2008) | 1 line Task #49 add a simple todo list ........ r2100 | danydb | 2008-07-13 00:32:08 +0200 (Sun, 13 Jul 2008) | 1 line remove print_r ........ r2101 | danydb | 2008-07-13 00:43:55 +0200 (Sun, 13 Jul 2008) | 1 line Add sql patch 49 ........ r2102 | danydb | 2008-07-13 00:44:08 +0200 (Sun, 13 Jul 2008) | 1 line Add sql patch 49 ........ r2103 | danydb | 2008-07-13 00:59:01 +0200 (Sun, 13 Jul 2008) | 1 line Fix bug in the table todo_list ........ r2104 | danydb | 2008-07-13 01:09:49 +0200 (Sun, 13 Jul 2008) | 1 line Task #49 cosmetic todo list ........ r2105 | danydb | 2008-07-15 19:56:35 +0200 (Tue, 15 Jul 2008) | 1 line remove var_dump ........ r2106 | danydb | 2008-07-16 21:42:42 +0200 (Wed, 16 Jul 2008) | 1 line Fix bug : creating card ........ r2107 | danydb | 2008-07-17 12:46:16 +0200 (Thu, 17 Jul 2008) | 1 line Fix numerous small bugs ........ r2108 | danydb | 2008-07-17 13:20:51 +0200 (Thu, 17 Jul 2008) | 1 line Fix bug : if the account changed for a card then the ledgers are update with the new account ........ r2109 | danydb | 2008-07-17 14:44:42 +0200 (Thu, 17 Jul 2008) | 1 line Fix : character encoding ........ r2110 | danydb | 2008-07-17 20:34:15 +0200 (Thu, 17 Jul 2008) | 1 line task : the attribut of a card are now ordered by the users ........ r2111 | danydb | 2008-07-18 13:45:10 +0200 (Fri, 18 Jul 2008) | 1 line Import of opening are now concerned by the qcode ........ r2112 | danydb | 2008-07-18 14:05:47 +0200 (Fri, 18 Jul 2008) | 2 lines Fix bug : quick_writing_add_row duplicates value ........ r2113 | danydb | 2008-07-18 14:23:28 +0200 (Fri, 18 Jul 2008) | 1 line Cosmetic : add comment, fix bug for quick_writing (add a verify ) ........ r2114 | danydb | 2008-07-21 22:25:33 +0200 (Mon, 21 Jul 2008) | 1 line SQL Patch Add order to the card ........ r2115 | danydb | 2008-07-22 15:17:33 +0200 (Tue, 22 Jul 2008) | 1 line Release candidate : fix bug ledger sold ........ r2116 | danydb | 2008-07-22 17:50:14 +0200 (Tue, 22 Jul 2008) | 1 line Fix Bug : Ledger SOLD & PURCHASE ........ r2117 | danydb | 2008-07-24 18:11:57 +0200 (Thu, 24 Jul 2008) | 1 line Fix Bug Ledger FIN + import FIN ........ r2118 | danydb | 2008-07-24 18:29:20 +0200 (Thu, 24 Jul 2008) | 1 line Fix Bug Import FIN utf8 encoding ........ r2119 | danydb | 2008-07-24 22:19:23 +0200 (Thu, 24 Jul 2008) | 1 line Fix Bug Printing and Quick Writing ........ r2120 | danydb | 2008-07-24 22:46:50 +0200 (Thu, 24 Jul 2008) | 1 line Fix Bug Security ........ r2121 | danydb | 2008-07-24 22:51:05 +0200 (Thu, 24 Jul 2008) | 1 line Cosmetic ........ r2122 | danydb | 2008-07-24 23:00:38 +0200 (Thu, 24 Jul 2008) | 2 lines Fix problem with simple printing French ........ r2123 | danydb | 2008-07-24 23:01:48 +0200 (Thu, 24 Jul 2008) | 2 lines Missing { ........ r2124 | danydb | 2008-07-24 23:02:45 +0200 (Thu, 24 Jul 2008) | 2 lines Unicode ........ r2125 | danydb | 2008-07-24 23:04:31 +0200 (Thu, 24 Jul 2008) | 2 lines Unicode ........ r2126 | danydb | 2008-07-25 17:40:28 +0200 (Fri, 25 Jul 2008) | 1 line Fix Bug install on windows ........ r2127 | danydb | 2008-07-25 17:42:01 +0200 (Fri, 25 Jul 2008) | 1 line Add version ........ r2128 | danydb | 2008-07-25 17:44:38 +0200 (Fri, 25 Jul 2008) | 1 line short tag ........ r2129 | danydb | 2008-07-25 18:40:34 +0200 (Fri, 25 Jul 2008) | 1 line Add Generate invoice + Fix bug for show_ledger() ........ r2130 | danydb | 2008-07-25 20:51:47 +0200 (Fri, 25 Jul 2008) | 1 line remove debug ........ r2131 | danydb | 2008-07-25 20:52:12 +0200 (Fri, 25 Jul 2008) | 1 line set version ........ r2132 | danydb | 2008-07-27 22:55:03 +0200 (Sun, 27 Jul 2008) | 1 line Unicode ........ r2133 | danydb | 2008-08-28 17:52:50 +0200 (Thu, 28 Aug 2008) | 1 line add pguser for documentation ........ r2134 | danydb | 2008-08-28 19:55:26 +0200 (Thu, 28 Aug 2008) | 1 line correst documentation script ........ r2135 | danydb | 2008-08-28 21:23:05 +0200 (Thu, 28 Aug 2008) | 1 line Improve install. : automatic writing of htaccess file ........ r2136 | danydb | 2008-08-28 21:23:21 +0200 (Thu, 28 Aug 2008) | 1 line Improve install. : automatic writing of htaccess file ........ r2137 | danydb | 2008-08-28 22:43:31 +0200 (Thu, 28 Aug 2008) | 1 line Remove the useless category of card ........ r2138 | danydb | 2008-08-29 15:57:33 +0200 (Fri, 29 Aug 2008) | 1 line update version ........ r2139 | danydb | 2008-09-04 21:49:29 +0200 (Thu, 04 Sep 2008) | 1 line update doc ........ r2140 | danydb | 2008-09-06 20:47:13 +0200 (Sat, 06 Sep 2008) | 1 line Remove a not wanted hidden value which makes failed the searching for card ........ r2141 | danydb | 2008-09-07 18:57:42 +0200 (Sun, 07 Sep 2008) | 1 line Update doc. ........ r2142 | danydb | 2008-09-08 13:38:00 +0200 (Mon, 08 Sep 2008) | 1 line Fix small in fin ........ r2143 | danydb | 2008-09-08 13:49:52 +0200 (Mon, 08 Sep 2008) | 1 line Fix small bugs in ach & ven ........ r2144 | danydb | 2008-09-08 13:57:25 +0200 (Mon, 08 Sep 2008) | 1 line bug : courrier concerne ........ r2145 | danydb | 2008-09-08 14:24:00 +0200 (Mon, 08 Sep 2008) | 2 lines Fix bug with export of report ........ r2146 | danydb | 2008-09-08 15:25:50 +0200 (Mon, 08 Sep 2008) | 1 line Add the security ........ r2147 | danydb | 2008-09-09 21:31:52 +0200 (Tue, 09 Sep 2008) | 1 line files cleaning ........ r2148 | danydb | 2008-09-09 21:34:40 +0200 (Tue, 09 Sep 2008) | 1 line files cleaning ........ r2149 | danydb | 2008-09-10 13:52:56 +0200 (Wed, 10 Sep 2008) | 1 line Fix bug in ledger sold, purchase for negative amount and financial for qcode ........ r2150 | danydb | 2008-09-10 14:33:07 +0200 (Wed, 10 Sep 2008) | 1 line update version ........ r2151 | danydb | 2008-09-10 14:42:24 +0200 (Wed, 10 Sep 2008) | 1 line Add patch for insert_jrnx ........ r2152 | danydb | 2008-09-10 14:42:56 +0200 (Wed, 10 Sep 2008) | 1 line update version ........ r2153 | danydb | 2008-09-10 17:53:28 +0200 (Wed, 10 Sep 2008) | 1 line typo ........ r2154 | danydb | 2008-09-10 18:07:51 +0200 (Wed, 10 Sep 2008) | 1 line Fix layout ........ r2155 | danydb | 2008-09-13 18:08:09 +0200 (Sat, 13 Sep 2008) | 1 line Update documentation ........ r2156 | danydb | 2008-09-13 18:11:52 +0200 (Sat, 13 Sep 2008) | 1 line Update version ........ r2157 | danydb | 2008-09-13 22:27:29 +0200 (Sat, 13 Sep 2008) | 1 line Add document to upload ........ r2158 | danydb | 2008-09-13 22:28:52 +0200 (Sat, 13 Sep 2008) | 1 line Add document ........ --- .cvsignore | 3 - class_periode.php | 274 + contrib/document_test/facture-calc.ods | Bin 10414 -> 10443 bytes {scripts => dev}/add-db.sh | 0 {scripts => dev}/cleanup.sh | 2 +- doc/.cvsignore | 3 - doc/INSTALL-fr.sgml | 329 -- doc/Makefile | 18 +- doc/developper/.cvsignore | 2 - doc/developper/create_doc.sh | 7 +- doc/developper/html/.htaccess | 2 + doc/install_windows_fr.sxw | Bin 369436 -> 0 bytes doc/manuel-fr.odt | Bin 42524 -> 44243 bytes doc/manuel-fr.pdf | Bin 177486 -> 0 bytes doc/manuel.odt | Bin 42524 -> 0 bytes doc/manuel_win2.odt | Bin 0 -> 387695 bytes doc/testing-scenario.txt | 18 - html/.htaccess | 4 +- html/access.php | 142 + html/addon/class.ezpdf.php | 5 +- html/addon/class.pdf.php | 2 +- html/admin/htaccess.cfg | 2 +- html/admin/setup.php | 258 +- .../sql/account_repository/constraint.sql | 2 +- html/admin/sql/account_repository/data.sql | 6 +- html/admin/sql/account_repository/make-sql | 2 +- html/admin/sql/account_repository/schema.sql | 2 +- html/admin/sql/mod1/comment.sql | 2 +- html/admin/sql/mod1/constraint.sql | 2 +- html/admin/sql/mod1/data.sql | 682 +-- html/admin/sql/mod1/make-sql | 2 +- html/admin/sql/mod1/schema.sql | 4 +- html/admin/sql/mod2/data.sql | 340 +- html/admin/sql/patch/ac-upgrade8.sql | 6 + html/admin/sql/patch/downgrade7.sql | 2 +- html/admin/sql/patch/upgrade11.sql | 8 +- html/admin/sql/patch/upgrade13.sql | 12 +- html/admin/sql/patch/upgrade14.sql | 2 +- html/admin/sql/patch/upgrade28.sql | 4 +- html/admin/sql/patch/upgrade31.sql | 5 - html/admin/sql/patch/upgrade36.FR.sql | 2 +- html/admin/sql/patch/upgrade36.sql | 6 - html/admin/sql/patch/upgrade4.sql | 4 +- html/admin/sql/patch/upgrade40.sql | 2 +- html/admin/sql/patch/upgrade48.sql | 71 + html/admin/sql/patch/upgrade49.sql | 23 + html/admin/sql/patch/upgrade50.sql | 57 + html/admin/sql/patch/upgrade6.sql | 2 +- html/admin/sql/patch/upgrade7.sql | 2 +- html/admin/sql/patch/upgrade8.sql | 12 +- html/admin/test.php | 2 +- html/admin/test_me.php | 10 +- html/admin_repo.php | 14 +- html/ajax_report.php | 68 + html/annulation.php | 36 +- html/backup.php | 75 + html/bal_csv.php | 2 +- html/bud_ajax.php | 4 +- html/bud_search_poste.php | 2 +- html/commercial.php | 26 +- html/compta.php | 41 +- html/compute.php | 67 + html/confirm_remove.php | 42 +- html/control.php | 6 + html/ecrit_ouv.php | 199 - html/export_ouv.php | 4 +- html/fiche.php | 20 +- html/fiche_new.php | 24 +- html/fiche_search.php | 33 +- html/fid.php | 21 +- html/form.php | 109 - html/form_csv.php | 4 +- html/form_pdf.php | 17 +- html/get_predef.php | 64 + html/htaccess.cfg | 2 +- html/import.php | 3 +- html/index.php | 44 +- html/jrn_pdf.php | 74 +- html/jrn_search.php | 8 +- html/js/ajax_fiche.js | 16 +- html/js/compute_direct.js | 2 +- html/js/infobulle.js | 54 + html/js/mintoolkit.js | 226 + html/js/prototype.js | 4408 +---------------- html/js/scripts.js | 471 +- html/js/search_card.js | 11 +- html/js/search_poste.js | 67 +- html/js/todo_list.js | 80 + html/line_update.php | 2 +- html/modify_op.php | 22 +- html/parametre.php | 40 +- html/poste_csv.php | 10 +- html/poste_pdf.php | 8 +- html/poste_search.php | 64 +- html/print_balance.php | 10 +- html/priv_user.php | 6 +- html/quick_code_csv.php | 16 +- html/quick_code_pdf.php | 8 +- html/remove_op.php | 2 +- html/sec_pdf.php | 14 +- html/send_jrn_pdf.php | 34 +- html/send_poste_pdf.php | 6 +- html/show_fiche.php | 2 +- html/show_tva.php | 2 +- html/style-color.css | 53 +- html/style-light.css | 116 +- html/style.css | 104 +- html/test.php | 41 +- html/todo_list.php | 58 + html/user_advanced.php | 120 +- html/user_jrn.php | 2 +- html/user_login.php | 39 +- html/user_pref.php | 12 +- html/user_sec.php | 20 +- include/.htaccess | 2 - include/ac_common.php | 87 +- include/action.inc.php | 63 +- include/anc_group.inc.php | 2 +- include/anc_imp.inc.php | 2 +- include/anc_od.inc.php | 2 +- include/argenta_be.inc.php | 10 +- include/balance.inc.php | 10 +- include/bank.inc.php | 26 +- include/bud_detail.inc.php | 2 +- include/bud_sacc.inc.php | 2 +- include/bud_sga.inc.php | 2 +- include/bud_spo.inc.php | 2 +- include/bud_svglobal.inc.php | 2 +- include/cbc_be.inc.php | 4 +- include/central.inc.php | 4 +- include/check_priv.php | 20 +- include/class_acc_account.php | 4 +- include/class_acc_account_ledger.php | 12 +- include/class_acc_compute.php | 323 ++ include/class_acc_ledger.php | 232 +- include/class_acc_ledger_fin.php | 725 +++ ...jrn_info.php => class_acc_ledger_info.php} | 6 +- include/class_acc_ledger_purchase.php | 1000 ++++ include/class_acc_ledger_sold.php | 949 ++++ include/class_acc_operation.php | 79 +- include/class_acc_parm_code.php | 175 + include/class_acc_report.php | 405 ++ include/class_acc_report_row.php | 111 + include/class_acc_tva.php | 179 + include/class_action.php | 48 +- include/class_admin.php | 2 +- include/class_attribut.php | 1 + include/class_contact.php | 4 +- include/class_customer.php | 55 +- include/class_document.php | 22 +- include/class_document_modele.php | 55 +- include/class_dossier.php | 78 +- include/class_fiche.php | 169 +- include/class_fiche_def.php | 84 +- include/class_own.php | 2 +- include/class_parm_code.php | 2 +- include/class_periode.php | 45 +- include/class_pre_op_ach.php | 2 +- include/class_pre_op_ven.php | 2 + include/class_pre_operation.php | 65 + include/class_rapport.php | 286 +- include/class_rapport_row.php | 111 + include/class_supplier.php | 33 +- include/class_todo_list.php | 179 + include/class_user.php | 102 +- include/class_widget.php | 99 +- include/client.inc.php | 35 +- include/compta_ach.inc.php | 292 ++ include/compta_fin.inc.php | 223 + include/compta_ven.inc.php | 322 ++ include/config.inc | 38 + include/config_file.php | 117 + include/constant.php | 40 +- include/contact.inc.php | 4 +- include/decla.BE.inc.php | 2 +- include/depense.inc.php | 30 +- include/dexia.inc.php | 2 +- include/dexia_be.inc.php | 6 +- include/dossier.inc.php | 199 +- include/eub_be.inc.php | 2 +- include/facture.inc.php | 30 +- include/fiche.inc.php | 59 +- include/fiche_inc.php | 2 +- include/form_inc.php | 310 -- include/fortis_be.inc.php | 5 +- include/import_inc.php | 125 +- include/impress_bilan.inc.php | 2 +- include/impress_fiche.inc.php | 8 +- include/impress_inc.php | 18 +- include/impress_jrn.inc.php | 16 +- include/impress_listing_client.inc.php | 6 +- include/impress_poste.inc.php | 17 +- include/impress_rapport.inc.php | 16 +- include/ing_be.inc.php | 9 +- include/jrn.php | 41 +- include/modele.inc.php | 205 +- include/opening.inc.php | 170 + include/param_jrn_add.inc.php | 16 +- include/param_jrn_detail.inc.php | 18 +- include/param_pcmn.inc.php | 16 +- include/param_sec.inc.php | 22 +- include/param_user.inc.php | 22 +- include/periode.inc.php | 6 +- include/poste.inc.php | 18 +- include/poste.php | 2 +- include/postgres.php | 214 +- include/pref.inc.php | 152 +- include/preference.php | 5 +- include/preod.inc.php | 109 + include/quick_writing.inc.php | 80 +- include/report.inc.php | 150 + include/restore.inc.php | 171 + include/stock.inc.php | 2 +- include/stock_inc.php | 6 +- include/supplier.inc.php | 25 +- include/tva.inc.php | 92 +- include/user_action_ach.php | 39 +- include/user_action_fin.php | 22 +- include/user_action_gl.php | 42 +- include/user_action_ods.php | 39 +- include/user_action_ven.php | 70 +- include/user_common.php | 118 +- include/user_form_ach.php | 12 +- include/user_form_fin.php | 2 +- include/user_form_ods.php | 453 -- include/user_form_ven.php | 2 +- include/user_menu.php | 197 +- include/verif_bilan.inc.php | 2 +- install.sh | 81 - release-note | 53 - setenv.sh | 10 - sql/5306/parm_code.sql | 16 - sql/5306/tva_delete.sql | 20 - sql/5306/tva_insert.sql | 44 - sql/5306/tva_modify.sql | 41 - sql/log/log.sql | 29 - sql/upgrade.sql | 56 +- 237 files changed, 11679 insertions(+), 8536 deletions(-) delete mode 100755 .cvsignore create mode 100644 class_periode.php rename {scripts => dev}/add-db.sh (100%) rename {scripts => dev}/cleanup.sh (96%) delete mode 100644 doc/.cvsignore delete mode 100644 doc/INSTALL-fr.sgml delete mode 100644 doc/developper/.cvsignore create mode 100644 doc/developper/html/.htaccess delete mode 100644 doc/install_windows_fr.sxw delete mode 100644 doc/manuel-fr.pdf delete mode 100644 doc/manuel.odt create mode 100644 doc/manuel_win2.odt delete mode 100644 doc/testing-scenario.txt create mode 100644 html/admin/sql/patch/ac-upgrade8.sql create mode 100644 html/admin/sql/patch/upgrade48.sql create mode 100644 html/admin/sql/patch/upgrade49.sql create mode 100644 html/admin/sql/patch/upgrade50.sql create mode 100644 html/ajax_report.php create mode 100644 html/backup.php create mode 100644 html/compute.php delete mode 100644 html/ecrit_ouv.php delete mode 100644 html/form.php create mode 100644 html/get_predef.php create mode 100644 html/js/infobulle.js create mode 100644 html/js/mintoolkit.js create mode 100644 html/js/todo_list.js create mode 100644 html/todo_list.php delete mode 100644 include/.htaccess create mode 100644 include/class_acc_compute.php create mode 100644 include/class_acc_ledger_fin.php rename include/{class_acc_jrn_info.php => class_acc_ledger_info.php} (97%) create mode 100644 include/class_acc_ledger_purchase.php create mode 100644 include/class_acc_ledger_sold.php create mode 100644 include/class_acc_parm_code.php create mode 100644 include/class_acc_report.php create mode 100644 include/class_acc_report_row.php create mode 100644 include/class_acc_tva.php create mode 100644 include/class_rapport_row.php create mode 100644 include/class_todo_list.php create mode 100644 include/compta_ach.inc.php create mode 100644 include/compta_fin.inc.php create mode 100644 include/compta_ven.inc.php create mode 100644 include/config.inc create mode 100644 include/config_file.php delete mode 100644 include/form_inc.php create mode 100644 include/opening.inc.php create mode 100644 include/preod.inc.php create mode 100644 include/report.inc.php create mode 100644 include/restore.inc.php delete mode 100644 include/user_form_ods.php delete mode 100755 install.sh delete mode 100644 release-note delete mode 100755 setenv.sh delete mode 100644 sql/5306/parm_code.sql delete mode 100644 sql/5306/tva_delete.sql delete mode 100644 sql/5306/tva_insert.sql delete mode 100644 sql/5306/tva_modify.sql delete mode 100644 sql/log/log.sql diff --git a/.cvsignore b/.cvsignore deleted file mode 100755 index bfaef7e97..000000000 --- a/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -cache -compile -tmp diff --git a/class_periode.php b/class_periode.php new file mode 100644 index 000000000..4aa2ae6d6 --- /dev/null +++ b/class_periode.php @@ -0,0 +1,274 @@ +cn=$p_cn; + } + function set_jrn($p_jrn) { + $this->jrn_def_id=$p_jrn; + } + function set_periode($pp_id){ + $this->p_id=$pp_id; + } + function is_closed() { + if ( $this->jrn_def_id != 0 ) + $sql="select status from jrn_periode ". + " where jrn_def_id=".$this->jrn_def_id. + " and p_id =".$this->p_id; + else + $sql="select p_closed as status from parm_periode ". + " where ". + " p_id =".$this->p_id; + $res=ExecSql($this->cn,$sql); + $status=pg_fetch_result($res,0,0); + echo_debug(__FILE__.':'.__LINE__.'- is_closed','return ',$status); + if ( $status == 'CL' || $status=='t' ||$status=='CE') + return 1; + return 0; + } + function is_open() { + if ( $this->jrn_def_id != 0 ) + $sql="select status from jrn_periode ". + " where jrn_def_id=".$this->jrn_def_id. + " and p_id =".$this->p_id; + else + $sql="select p_closed as status from parm_periode ". + " where ". + " p_id =".$this->p_id; + $res=ExecSql($this->cn,$sql); + $status=pg_fetch_result($res,0,0); + if ( $status == 'OP' || $status=='f' ) + return 1; + return 0; + } + function is_centralized() { + if ( $this->jrn_def_id != 0 ) + $sql="select status from jrn_periode ". + " where jrn_def_id=".$this->jrn_def_id. + " and p_id =".$this->p_id; + else + $sql="select p_centralized as status from parm_periode ". + " where ". + " p_id =".$this->p_id; + $res=ExecSql($this->cn,$sql); + $status=pg_fetch_result($res,0,0); + if ( $status == 'CE' || $status=='t' ) + return 1; + return 0; + } + function close() { + if ( $this->jrn_def_id == 0 ) { + ExecSql($this->cn,"update parm_periode set p_closed=true where p_id=". + $this->p_id); + ExecSql($this->cn,"update jrn_periode set status='CL' ". + " where p_id = ".$this->p_id); + + return; + }else { + ExecSql($this->cn,"update jrn_periode set status='CL' ". + " where jrn_def_id=".$this->jrn_def_id." and ". + " p_id = ".$this->p_id); + /* if all ledgers have this periode closed then synchro with + the table parm_periode + */ + $nJrn=CountSql( $this->cn,"select * from jrn_periode where ". + " p_id=".$this->p_id); + $nJrnPeriode=CountSql( $this->cn,"select * from jrn_periode where ". + " p_id=".$this->p_id." and status='CL'"); + + if ( $nJrnPeriode==$nJrn) + ExecSql($this->cn,"update parm_periode set p_closed=true where p_id=".$this->p_id); + return; + } + + } + function centralized() { + if ( $this->jrn_def_id == 0 ) { + ExecSql($this->cn,"update parm_periode set p_central=true"); + return; + }else { + ExecSql($this->cn,"update jrn_periode set status='CE' ". + " where ". + " p_id = ".$this->p_id); + return; + } + + } +/*! + * \brief Show all the periode and their status + * + * \param $p_cn database connection + * + * \return nothing + * + * + */ + + function display_form_periode() { + $str_dossier=dossier::get(); + + if ( $this->jrn_def_id==0 ) { + $Res=ExecSql($this->cn,"select p_id,to_char(p_start,'DD.MM.YYYY') as date_start,to_char(p_end,'DD.MM.YYYY') as date_end,p_central,p_closed,p_exercice + from parm_periode order by p_start,p_end"); + $Max=pg_NumRows($Res); + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ""; + + for ($i=0;$i<$Max;$i++) { + $l_line=pg_fetch_array($Res,$i); + echo ''; + echo ''; + echo ''; + echo ''; + + if ( $l_line['p_closed'] == 't' ) { + $closed=($l_line['p_central']=='t')?'':''; + $change=''; + $remove=''; + } else { + $closed=''; + + } + echo ''; + echo dossier::hidden(); + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + echo '
Date début Date fin Exercice
'.$l_line['date_start'].' '.$l_line['date_end'].' '.$l_line['p_exercice'].'CentraliséeFermée'; + $closed.=' Cloturer'; + $change=''; + $change.=' Changer"; + $remove=''; + $remove.=' Efface"; + + } + echo "$closed"; + echo $change; + + echo $remove; + + echo '
'; + echo '
'; + + } else { + $Res=ExecSql($this->cn,"select p_id,to_char(p_start,'DD.MM.YYYY') as date_start,to_char(p_end,'DD.MM.YYYY') as date_end,status,p_exercice + from parm_periode join jrn_periode using (p_id) where jrn_def_id=".$this->jrn_def_id." + order by p_start,p_end"); + $Max=pg_NumRows($Res); + $r=ExecSql($this->cn,'select jrn_Def_name from jrn_Def where jrn_Def_id='. + $this->jrn_def_id); + $jrn_name=pg_fetch_result($r,0,0); + echo '

Journal '.$jrn_name.'

'; + echo ''; + echo ""; + echo ''; + echo ''; + echo ''; + echo ""; + + for ($i=0;$i<$Max;$i++) { + $l_line=pg_fetch_array($Res,$i); + echo ''; + echo ''; + echo ''; + echo ''; + + if ( $l_line['status'] != 'OP' ) { + $closed=($l_line['status']=='CE')?'':''; + } else { + $closed=''; + } + echo "$closed"; + + echo ''; + + } + echo '
Date début Date fin Exercice
'.$l_line['date_start'].' '.$l_line['date_end'].' '.$l_line['p_exercice'].'CentraliseeFermée'; + $closed.=' Cloturer'; + $closed.='
'; + + } + } + function insert($p_date_start,$p_date_end,$p_exercice) { + if (isDate($p_date_start) == null || + isDate($p_date_end) == null || + strlen (trim($p_exercice)) == 0 || + (string) $p_exercice != (string)(int) $p_exercice) + { + return 1; + } + $p_id=NextSequence($this->cn,'s_periode'); + $sql=sprintf(" insert into parm_periode(p_id,p_start,p_end,p_closed,p_exercice)". + "values (%d,to_date('%s','DD.MM.YYYY'),to_date('%s','DD.MM.YYYY')". + ",'f','%s')", + $p_id, + $p_date_start, + $p_date_end, + $p_exercice); + try { + StartSql($this->cn); + $Res=ExecSql($this->cn,$sql); + $Res=ExecSql($this->cn,"insert into jrn_periode (jrn_def_id,p_id,status) ". + "select jrn_def_id,$p_id,'OP' from jrn_def"); + Commit($this->cn); + } catch (Exception $e) { + Rollback($this->cn); + echo_debug(__FILE__.':'.__LINE__.'- Periode insert','Exception ',$e); + echo_debug(__FILE__.':'.__LINE__.'- Periode insert','Exception ',$e->getMessage()); + return 1; + } + return 0; + } + static function test_me() { + $cn=DbConnect(dossier::id()); + $obj=new Periode($cn); + $obj->set_jrn(1); + $obj->display_form_periode(); + } +} diff --git a/contrib/document_test/facture-calc.ods b/contrib/document_test/facture-calc.ods index 1061427b41f7d386a2e6fb6a12d3ed547c86a73f..5c450090f6ddec7e094908fda46f0dfbf6199e85 100644 GIT binary patch delta 5740 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 Bp~?UN delta 5640 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 -
- PhpCompta Installation - -originally written by Dany De Bontridder - -$Revision$ $Date$ - -Ce document dcrit l'installation complte de PhpCompta et explique comment -ont t installs les programmes dont PhpCompta dpend. -PhpCompta , -site savannah - - - -Avertissement -

Si vous installez sur Linux, l'installation d'apache, postgres et php doit se -faire avec les "packages" standards -fournis; ces "packages" sont largement suffisants. Les explications -donnes ici sur l'installation de ces produits sont destines des -utilisateurs avancs. En gnral vous pourrez l'installer assez facilement - -Il existe aussi un manuel d'installation exhaustif pour Debian, pleins d'informations utiles -. - - -

Si vous installez sous Windows, il est assez compliqu de recompiler. -Il est prfrable d'utiliser les programmes fournis sur - et -. - - -

Cependant, les configurations des diffrents produits sont importantes -et devraient tre lues avant d'appeler l'aide. - - - -Postgresql (version 8.0.1 minimum) -Installation -

-Soit avec des binaires prpars, soit partir du code source -

-

Le plus simple est d'utiliser les binaires de votre distribution, ne -compiler ces programmes que si vraiment vous devez le faire ou que vous prfrez -avoir la dernire version disponible. -

-

-Si vous dcidez de le compiler vous-mme, les -options suivantes fonctionnent - -./configure -with-tk --with-python --with-perl --prefix=/ou_vous_voulez - -

- -Configuration et dmarrage de PostgreSql -Optimisation -

Posgresql est une base de donnes trs rapide, cependant, il vous faudra configurer -pour pouvoir en bnficier. Les paramtres par dfaut sont prvus pour une machine qui n'a -que 16 Mb de RAM... Donc, aller voir la documentation sur Postgresql.org, chapitre -Run-time Configuration. - -

Les paramtres que vous pouvez utiliser si vous avez une machine d'au moins 256 Mb: - - Augmenter la zone mmoire pour les tri (dans postgres.conf) work_mem = 8192; cette -zone mmoire est important car elle a trait la mmoire utilise pour les tris et les -jointures! attention ce paramtre donne la consommation mmoire par session ! - - Faites tourner rgulirement vacumdb -a -z grce au crontab(une fois par jour) - Dans postgres.conf, les shared_buffers: calcules en page de 8Kb, -la valeur par dfaut -est de seulement 64, ce qui correspond 512Kb, une meilleure valeur est 640 - - - - Pour la scurit -

Vous pouvez ajouter la scurit votre server Postgresql en changeant -dans pg_hba.conf. Mais avant de faire cela, ajoutez un mot de passe -vos utilisateurs avec la commande remplacer .1. par le nom de l'utilisateur -et .2. par son mot de passe - -changement mot de passe -alter user .1. password '.2.' - - - -Scurit -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host all phpcompta 172.16.30.0 255.255.255.0 md5 -local all phpcompta 172.16.30.0 255.255.255.0 md5 - -Ensuite soit vous utilisez la variable d'environnement PGPASSWORD qui contient -votre mot de passe soit avec le fichier .pgpass dont la syntaxe est - - host:port:database:username:password - -N'oubliez pas de mettre ce fichier en mode 600 !!!! Pour executer sans demande -de mot de passe host = localhost - - - - Apache -Installation d'Apache -

-Si vous dcidez de le compiler vous-mme, les -options suivantes fonctionnent - -./configure --prefix=/opt/http2/ \ - --enable-ssl \ - --enable-http \ - --enable-cgi \ - --enable-so \ - --enable-usertrack \ - --enable-headers \ - --enable-info - -

-
- - Configuration d'Apache -

-Le fichier httpd.conf doit au moins contenir. - -LoadModule php4_module modules/libphp4.so -AddType application/x-httpd-php .php4 .php3 .php .phtml - -Et si vous dcidez d'avoir la mme configuration que moi, mais ce -n'est pas obligatoire -Il est possible d'utiliser les virtuals hosts ainsi - -<VirtualHost *> - Servername ... - DocumentRoot /var/www/acapulco/htdocs - <Directory /var/www/acapulco/htdocs/phpcompta/html/> - AddDefaultCharset iso-8859-1 - php_value include_path .:../../include:../include:addon - php_flag magic_quotes_gpc off - php_flag session.auto_start on - php_value session.save_path /tmp - php_value max_execution_time 120 - php_flag short_open_tag on - php_flag session.use_trans_sid on - </Directory> -</VirtualHost> - - -

-Actuellement, le rpertoire html, contient un fichier .htaccess -qui contient le ncessaire pour que les variables php soient -correctes (voir ). - -

-Apache se dmarre avec apachectl start -

-

-Remarque : Pour plus d'information, voir le manuel d'Apache. - - - - - -PHP -Installation de PHP 4.3.1 -

-Il doit tre compil le dernier !!! -Si vous dcidez de le compiler vous-mme, les -options suivantes fonctionnent - -./configure --prefix=/opt/php431 \ - --with-apxs2=/opt/http2/bin/apxs \ - --with-fastcgi \ - --with-zlib \ - --with-pgsql=/usr/local/psql \ - --with-mysql \ - --with-apache2=/software/httpd-2.0.44 - - -le rpertoire /software/httpd-2.0.44 est le rpertoire ou vous installer -les sources d'apache -

-
- -Configuration de PHP : Fichier php.ini -

-s'il n'existe pas, vous devez le crer, l'endroit -o vous le trouverez dpend des options de compilation. Dans le cas, -o vous avez compil php de la mme manire que moi, il se trouve -dans /opt/php431/lib. -Recopier simplement le fichier fourni cet endroit. - -Sinon, adaptez votre fichier, il doit avoir au minimum les options -suivantes - - -magic_quotes_gpc = Off -magic_quotes_runtime = Off -magic_quotes_sybase = Off - - -[Session] -session.save_handler = files ; handler used to store/retrieve data -session.save_path = /tmp ; argument passed to save_handler - ; in the case of files, this is the - ; path where data files are stored -session.use_cookies = 1 ; whether to use cookies -session.name = PHPSESSID - ; name of the session - ; is used as cookie name -session.auto_start = 1 ; initialize session on request startup -session.cookie_lifetime = 0 ; lifetime in seconds of cookie - ; or if 0, until browser is restarted -session.cookie_path = /tmp ; the path the cookie is valid for - -allow_call_time_pass_reference = on -register_argc_argv = on -session.bug_compat_42 = 1 -session.bug_compat_warn = 0 -session.use_trans_sid = 1 -include_path=".:../include:addon" - -

- configuration de .htaccess
- - -
diff --git a/doc/Makefile b/doc/Makefile index 0425f265e..1093b6500 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -2,26 +2,12 @@ # html, txt format # $Revision$ -.PHONY: all html .pdf clean .txt devel +.PHONY: clean devel -all: manuel html INSTALL-fr.pdf INSTALL-fr.txt devel +all: devel devel: cd developper && ./create_doc.sh -html: - linuxdoc -B html --charset=latin INSTALL-fr.sgml -manuel: - cp manuel-fr.pdf ../manuel-fr.pdf - -INSTALL-fr.pdf:INSTALL-fr.sgml - linuxdoc -B latex --papersize=a4 --charset=latin --output=pdf INSTALL-fr.sgml - -INSTALL-fr.txt: INSTALL-fr.sgml - linuxdoc -B txt --charset=latin INSTALL-fr.sgml - cp INSTALL-fr.txt .. clean: rm -f *~ - rm -f FAQ-fr.txt FAQ-fr*.html FAQ-fr.pdf FAQ-fr.dvi FAQ-fr.tex - rm -f manuel-fr.txt manuel-fr*.html manuel-fr.pdf manuel-fr.dvi manuel-fr.tex - rm -f INSTALL-fr.txt INSTALL-fr*.html INSTALL-fr.pdf INSTALL-fr.dvi INSTALL-fr.tex diff --git a/doc/developper/.cvsignore b/doc/developper/.cvsignore deleted file mode 100644 index 067823c13..000000000 --- a/doc/developper/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -html/* -latex/* diff --git a/doc/developper/create_doc.sh b/doc/developper/create_doc.sh index 280206662..5b722086a 100755 --- a/doc/developper/create_doc.sh +++ b/doc/developper/create_doc.sh @@ -1,3 +1,6 @@ doxygen -postgresql_autodoc -d mod1 -postgresql_autodoc -d account_repository +cd html; sed -i "s/utf-8/utf-8/g" * +if [ ! -z "$PGUSER" ] ; then + postgresql_autodoc -u $PGUSER --password $PGPASSWORD -h localhost -d mod1 + postgresql_autodoc -u $PGUSER --password $PGPASSWORD -h localhost -d account_repository +fi diff --git a/doc/developper/html/.htaccess b/doc/developper/html/.htaccess new file mode 100644 index 000000000..f111ed173 --- /dev/null +++ b/doc/developper/html/.htaccess @@ -0,0 +1,2 @@ +AddDefaultCharset utf-8 + diff --git a/doc/install_windows_fr.sxw b/doc/install_windows_fr.sxw deleted file mode 100644 index 2b59c72a7b8ba020553988bc4d1411dc9c5bcd6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369436 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 z 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≫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 KW6l9(VE+$HT0cAh diff --git a/doc/manuel-fr.odt b/doc/manuel-fr.odt index 53a914af28ecbc900adba08a5732e8d239653b03..65391f05e31d8c3071e46fed3d5731940f1e95d6 100644 GIT binary patch delta 42923 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

QT6akruX6Vr$WIk|j6Uc~2&mWQ#pf_>K#&2d}N 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 ae(jJlTqxPBSfWDg*tRm%_v_hzVgC=tQxLxZ diff --git a/doc/manuel-fr.pdf b/doc/manuel-fr.pdf deleted file mode 100644 index c7ef46642ee9b556986f10319fce48a39fdda038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177486 zcma&tQ}Xa#gG(sKy@eY!o8b(Q3TPW~VS`8_|UR`-bhG9a(i&G@93P74hUd@LFw`^o#-udm~6d28(geo=9-{@1Q+Dkwm1s94TGL#NjT<`!}Mk9X|u!JC=U2(!Hkw^R9fZ~ ziC9Qq_+Pa47^|%>qQ;hXFLVJ28OkFNM0!&?keJ8JAZ~KYJ&@! zmT>p+=74NcnCgd!YcTu+LmH-t_kOv}5h)6P_YYVdAnn$Xe6y*Br#$oZq@)l~QR?v{ z433j(V8LJd_?0)WxC7j9P1G}gFyX|9<=W{W%>?lKi7F>E5>iY;LCZ2y+&WU}*k^gZdgl&$5MC zD|ndgd?~i-6-Ud_oSRun%ZNGn*5vGFYTb{E4Q4@|# z`Rwt(Khse0DT1Le_x+;}A7nNpNDLP;EFf>%P$I%XHZD0Lvm!069`C?MG`l_nf72)6HV;;gJ+l(}$DkZtDTDDx?9!|Aj=Z;ZTXD)PJcuW(yM$tjajtC(7i0 zB+0leeUWf|w`lH4nba8JJ`;1Px?Q%{drPvQclD1Gg2GtFI+WP*r(eMr+?Of@wh~9_K2gCp#66yJ1;M zfO|4}>yy+xEbv#rIdSFZ;2sq%0!|?oD8lM(;vOd#$e~+YwMYU@JUkc7heyv8jdn$$u}RcdNu)`RXq# zs=<_a=mOfqV*1&JCn$RU@R!+S>~ZIp5(G6W{>kPda(mV;+>Q=bRbLJ4|LTrnCTNj` z*h?Ax(-Nit9=0gnKR$SAPK9?DVHpD z7Am#$sd^+MIIEVlx6l)o$}~#F6EBei7oiD+q3YDw)kwioYIJdEp4TU`JLcv z{>2vx0YEKmtzs{a zRa-Twlj5MtbFgfoL2H?i{I}kd_YJOke6V!}XdhdOxI?QD!rgX4Rv9rq$)aeP13G=4)>)Kx z8MyxCUJExOhr5Wp#I>24sgg5gy%5f~+eo9{(qS{dse`u-b9)(gs}~R%x8UfARz(4cLAsN{X_pvMbJC>K1Q6(!^>!7H++N#vXcR z=DL034=*!g3!K@%v?46R50<5B2c6h@k!H(y4UtW+bX{5<8{ky7dSbt;6rn}&#v~sRoLF$r}eMbf4aNr<5L!|1Ht$q;!Ej70U*$wxiamy2uy*LX0 z)U22~Na@B0iCE{R@yTUHlS;UK#R21L6W@R0py%{hs<)%G?4kr&7OpUP>O9^xKL1AL zKBjyFOA%Oq8yr9YBh8hA+&uQL9z_oD;)w14=kYlKWfKywu2su6- zmP*qrc{j?q}G*GmY*pNWOk{N#S8nFTVo^_G64HItEHNA@K5N(XEC{djO*F|V83y!F6N7AG; zNVb>p`;}Y#3_Fu9(_F$mz7)Bt#`U_#;&a+uI20M|JslhNU-D*G;jSsn-cZxwuNaw8 z2e=AQto8NTiv;ZGro3}!$C~sw9rH8eE9VC*D(kc~wE?xAks-NBSSrQ)7w7cRv5R>` zsumG3!BEfIICsAXYzZ7P(!){k&xhOZUy%{D03dZ+r^xc-3%n=r0CaVfawb4@l56= zNH4qw&P`uYYVDx9&6+dLJ>?8!w7wb$4AG^e%|64yGfQ3U^}-v~$LYH+kxg(qalS$0 zQdLpoBv8wk?8 zw%2WFUo662J}Hz~UNOT^tC<8RQ)=Ax_9lnktl*$HSHLJW98G15M(&>C>>Ja&fV)Pa zVX^i<&?y0ho46OxG>)^FQbUjfk8b-gf z61-R3mswU{)`|7|zVT26tLLf0r!O}I$Z_=Yy%NbGYqXTc<%9XUe9&IzuFa<%248XrSbrwfn>s19aKXcuBe3$6 z518CkhCfxV+^zZ@vj%)XjJuDUeR@~t_woGwd9emdws;9J1|jLbZ};=|{)ulXtXUpa zXn};+j^3X-F+&n);TNl4X$y%<2aj#vkF_JG&~gd4XeAf2<_BL8_9zV!=<@XH@AIN%kHF_~Qua%+xQOE5Ie zegL4yk5sH5G9N8fKY+GQq6Y{EEUn%c%YJao@N~fJ2m3luan(ex#IEUYh?iRrYL1@e zIHWynf95tBjkw3FyWS5)NugRl38m+;U#lq!4Hu_VvQg!-BPpMDLZESE2<1!)+PKBk z;LpVBVKGUq${otYdfyU*4m#P76c6D%=>Hythd0bkI+004yzYgv02WQ{HsEg^yS(DA zYzP1_LUhkz;$sM+9yQw;#!HTVtgTJsFya zjyHbk8)1B}x40d(gtiTi>jva&>;&*ij965I$ZUuK+3Jn48%8{eU1dT0N04P_p;pqJm-V+y0c^e$q#vi_+GOS zq-Pk0V90r7L;;a+;)j>|jJ4U(TnxP+0$*SJL|KYuy~>f=HTKLii=vBZ)&v6_jfl>v zH|14Kh_H_h&M*wfAlCFNQ1>(;1b?faJ7aQd=BGpMixP$}Yh=lh5DV^vAghTZp3+K# zAhC>$vL%?A>TEchL}KU;E9(4!WcHi?f-b~U=GH&RYDRJV#)169U$pIBT#+3Bz(`Q! ztN|Da#;UO&MqrNuZ@Hc(Gb-hRqi^$Wa!U-6|IV=O2Cy?n0t9MC7N~_RIQWo7Y(pBD ztS&IAKNP56*$?bpKcQl6I#kiQ8^v{V;7>wmGUY!lqV8EOXC^2d&<=z~LYT12X%vZm zPZIjoVO3hKA!v}L!5FjJ?}8A03WCajvKC-eKtQ#qm*lX!X}&LN5EMNMda-RlnW$F? zrrTcNWrhTqQXgsT2QrIrawFY?5{sf&`mKqpv;w(g)9~*TOpe%!+_4dvm#ZxmoNkH( zMXiONNB^3}OyPJe76UJNAkcF`+&=qs#PF3u=)l+TwmL(c@e%?#qvM0!{%0$W9}6I%Ze8W|3*GdZ|Bm@kHPWi4!@Tpn@m%AXffsfkVmt<^ab8t!86HmUaN_Le~_~gOzkfszNw#V)LD3 zpfsE%%Ej>t=dq^juma+ZHTD6R!61e`M03=uQj@H^gfq{?;DJ=L8!vTj|3`b}s z<}vfn!Bn0mJ{%L#hBdIW5?Xa_Qr_gsZia?b+f1CPd;st6STw;~3Qykr_JIJTd@^2^ zhA^M3O@+Kns7u#NpVTNTMNu1f*8+pH;!0})pnfDu^Oy3{LKV%BN>SjwwWo~RXebk$ zI5z`yNdkmsUdXfFOt3EGR5QP{C=SUKPF!o(Fhh4Ai;JqYsGWJ+7iExGRSY53mj?NY zQT0bUtUE(`MYm9LRfF=m^$ArQwND``RDUE-D5Ed6V?6LkvQdA46l?5#EYIGZz_1e)p8^!zMpl z-esU(xm8aR`JdD8>boMx%>nihzy)ngJu$+qi`6puGick-atUD#iWO&NDW20WQzp82 zC?RtY6}Nm_(ZlfeZfd59-;&0)qNf(~txr=R;tvM;hqGN^A1_}wcFA=j4+&^&!q`MZ zy|oCQ;BY+Wg~IgD{)ZgEu5!d_YC|H>TcCJKYD>Xu67Lx(F={#LXQXC#>QcSaLJ>?c z>5G)HSO4{ddM7{M5cctWCO-;v?8Df*(|1A`Yq+^8Pb^&%eF5w%vZj_+sG_gOF|DBu zu3ag$)RwcsS|RmvNK7L;@*>LA>g+zZ7}l+_Kl`kbBSV>2m$O1O&3^r!*|NffXBMSn zj-cLG!xFTvC}q`fD!IjktOpJD9dw|1EJf7Wc=J7I9Sr4SdWs=~kUZq9&=Q-2+*QGO zwW{g9R=JQlpIxn-&Cac)v|Ro!F4f09kCangpFiKQ5p=RsfDyiJ0*nk(Uk!-~`Z z=@_)1zWv*Ni2xT^-HF$VXX@*cevGZiHs>tM${Jk6g91-elJBS`tZaZUg;fRg8v~w_+S!&q|#J)X5yBla3stcRm{HBuCmW^S%h-J zBDH2Qeyt@wYO23?N|02?q7t>5CR*F%c+NrYtv|QbHzW%5ud7X0$8MGEl}+0KbZhtk zDg(&sjcmEdhY_{gu6`5h>}yxeV;9oXfD&6dLQu5Z`|U>kDNx8cBOQZpEOhG;kUC&( zeQKULL(5ZS_i2~d*-d=OJ!deD8+XYqZ>{Z7GIn*SRv5Rk=4*+u+#}ujOJY5m_rRxz z4AdH{$z@rPb~EnJ4wG>NU%&z0D;t5G#71{TaV_$sl9|M3cIA!rbi=Uyv%w^se^ zcTE5;Arkjpv_#S-L+7;h>*+?Dn(!E*55@Z$gOWWiux5sn0DNS5ZH9-kv%#{waxVpr ztA2P`fH#GEoWHc73(T=TuiNDi*SSf zuJ?i0EeKi*kmUv%5Urmp&ZiEOVFY(b?z)GW=BFFswC+S=(F)2p{9?Yh8s(;G`DmAm zH=XV_s(+V=Z+llIZ-1g=tu<*YmM5#_d%qd}i@zaqU8dp22d|-C-N2#O zEG}|ZDG1oUKJWPDu_z+{2ci9!UjHLBX3qa5G>-pGXq^8)gm#lH6?fE*ICl3#=?%xA z+l%jSpwD!~cWn~@_F6wq3r`RRup!m!t8Sc7I7}q+Hcevdu>juIMH{tvH|N-}iTPGG|A>nY}ZiiOF~Wy0#=&cQ`z9 zadX$FQ{3mfcuQof=BA)mn@7@zfvfv1Qh$%{%BWYD$DxM)grytOi;<#h^PUWAH^itq zY=jdxMv=fbr2Spxc9M1dlGJcf^lNDHp4Yj4uYlW21~b&)j)WiEr}Ovt`ZRTObCNdW zVt*Df1u?|`IQMdsx7;)TF9#J?Wps-|M~dh==3G;}K;5^Kmk|Bg(6t zI*D(%XaV4U0M5AeT>-myf%3f&&+=%t6LTFoU{`2|C<~Bw1f$s-{(Q}y=9@Vie|*qv zAEW+eBHC;V&QM%$Dx+d$J}E%$%ym61bpXQ)+8&JC?SKw$psK4sC@M8AOU{@3dtm~o z1xHEUt)>HNwGwx$;9@qZG@a0j&v0fL&nl)G*uq1BDb$N0B1gN!@P3*H>&|?L_q!oX z@v@0j_J@UH4>}`|6>!7db+_TTQ~<7^0}7``tMI;#QuvMZ8wm6rDJ0Ay>!(HhfL$!e z$IRMRXZ+vh0AB=6=($8N^LfpNkR7zA+rj}gY#f+2=^>RotHb3G_k?3)D;r1(`xyGo z5ulVM`~4=N?Aow+Uho&6SL6YV7xADsR-;>nkNB?3WQzbG6_GF~Nbrt5j%02ZDqNy}-R?wmxEsAXLyyfkoFx6vqiDW!^2_0nERpG&fnpj1) z0M>q$4f1V6F9p7jK&?j@O8IGrf2l&GH2H+YvytgDc_u^mfRns84ER_pe@Hx__F&!m zN&6#g;laxcGv59ci`l7sq9~)M-UZN|Bndx>_L)cbA_FttMGXOuOKH!Jc@2Q@Z=@lT zd&btq4E+@yd+_=D4UH5b`Hh_`8uDn&g!fqrsnsbZfX0TPZg@$v#`;v^9i9G=6Ih8_ z5|4P|+ZRpbp}zp}zj;Xc^0yKM+Y;(tNW~DU4-=}O2BWIBU^OvN%(qTJIf^q#b)s7Z zR!TsM4fkuwUH&@Z%v{}t!Ts9G3bRDzy2bq>?eI4%IMV1ssPQys$_S2srNX>Lfum>J zMS(WOk?Tck0(XF*vE@iK4y12Odd^7Np~f{m*=31%l}* z+d7p?oQqNw6cEF&lur5E(I@be)RQPxoRj~ucf2Uj_28FqcJG(j`qeu8>7ypn!Rcy5 zGFO!FriE^0D+_xJLKGRqqW}CSF`CLCW*f|IeXdX3^z*C`F|fKz`RQoE2a1ep`4Irj zj!kf6fs6pNwJs7zCHcB81ze$Ys70Q@spLeztp6`0(?D#FAk;j_nX>m6m z(XHtxX`uC~m_i!kS{O&xOLLL8i*QVC%EH4siewdt7|kxtv*TLZt_(vvR;QzV=4}`z zl`H9j&i(eHcmKzzN&2S{g0{iz9g}Zo8)Mg&wQ|*DUVB);`74gv%wm=u^lVdyG6#M7 z>}Yc7ryylcF=Z)#53?Xxwo;iNcwf7mclcPE%}$U3BPE-`C(0*U9HK?g`A_A@t>)zXs7{p(%9r`X29p2}K z4A_@sETscGfvSq--`pRetwE<&U)AeIuwVWE+ubXr+0(Y<-m4H;1Za364 z)MnV~)!xEuWk?|x;T4@R*b>HBx}xZS;AO?w62=JX9<>OVDq^0JA#pMg)NLOXm zWSf-GmT5i^>5{ZP-b8bNsp2fpn^k{v0g#b_Lw2l)o4n1BeseG+B`fpnOaYi%(gBXI zsbQ2O-~HyCC=HhObIPY74Hiz^5wz7QsGep6P@hL#I3viTrDj5&3$OZ|&&Se<51Bj2 zZa@(Hwj)Zn!HBTlYv!)eqJd_2Z@@&+t4dd5dr7R>uDYnM1w2k7?3-UBK{7A#g8dzS z#ho4)T1jv*TRwOpp+ZyA=_{nBJBnyUC=DS%j;R7)nfji1R7E#q=zgEyH;07&s_d9w zUx>3U4wvfo^+lqyHnbbpygDl-yg|=@@kbl*q^S8k1%Y+I-Az?pgVHl;5ZorHHqc@f2C|RjXS$;-i1>3*}^I@`+;w z59rQnb=~zZdAc99ivSHf58dM+%4Q>VI1UOnP;kr0D+YXdMI9gIB%_0#ry{o5P#`qa z{Dqa;SK|b3m&;HqlWH{wO-iF6-M1kaAsml5qT7|;IFjAC#ZRZD0+dgZVTG9v#oBdI z_caW4S{)5#7gNK2#|B0@XB`3U!<~{6LHUpsax)kL~M8p|+ z-62Ek)zz)UiHW3dYXLX;n&%{S6~|;~+_Y9__9_tZ8S=jC3xp-vaTAdTaO&$rFtv{ba%VdYg{h!&wkJy>Uh$7wH*;8Pp1{3B}lNjn1^?0u0fj3$7YT z-|J^omcHTF{7oLRsS9&;NdP~n)V^YSaG|3FZ&QTBZ6;yGw=QTy!v;~Wf&} z!pyado?7**^Zg(xClOK23Bo6O0~v&TgL#Doh7#Lte|+mth1*`hd!}`6e@%+1bN7Q= z&AMK$32L#jRR(6%rmY^pp^bRd1ETWHk<5I?;kBAmzO1LaAq5z}dOE6#%?2dGirGRj zYk8gVOP!c~-eErbJ%4*wFiAhrz_kmXNZKkhHBZ9JW~!B3DvninD=2(((Dr%@nGbcC zG93gN=#;+f4=7QkBH;fJ(*K*j{~OYoI5;@}-!Td!)26#H$M*L@;IcaKip`SpE&z^D18^_Bej{++e8&DpK$42@Xj;Jtruoy6gP z63KX;JmLFwSa`7Cmg2qj`TkyP9X)N?4OQ_KW3JX^y03kn;qWtu`h|HkU1<2C^OV_imQ%nyX8EQtG49>n=3i_Vi}(JzL2vZlXC9OfDKXUy#9yb zkX}P7^C0f77P;n^fb+KZYB-OGkBjfA2CS{Pxy&0ZtENI5Oj*oF#-`xJRmVUg_n&8d zsdGU^?fJE){yQI&F@;Jl=IUyE(pT(!_&nb-sZV2j)_~W<{1I6|(wG`=WKe_m$w^}< z#hBleUvmaI7wG^N7Ld(!DhUY2KA^Lh)zwpF_~HEN;-7(#7ahzd<_uQYK%QUe2*Iay zz7G^Z19IBpzMVWGN<5qD5bEmO9OdI>>DRM3ETNxZ)?A;6GcI}h#VAbc{YVRz%E#mW8fbOB{=w!o#d@*GL5@tjC zFjHUV1w;YSM2Z6wlfxEoAP8KuNSp>m2qWg+TB4E7d)>)~Lif-%Oy@4HIXfE1IT}ta zL$d@(R$^1a7)y|U^Nx#r&){>o3?Ymk=?vY#RQL17c%Z&PjEJ(wc`#Hfv=7^i!q}`r zC})Cd*K>M>LWg`x@~xR=^h?%^UI^>mCeSb%3(DZ6;z|r-A>C<8+QyIyXtXmJtrM`P z50oMmXcQU{K-(eTM`or)EPrsSL}a4ON0-wh(dqu~mRQ9oy;6O%%lcYHA4Nn}AqcLC z122U1&JiggXJRxEo-+tO;hDPC94{;mVrk3Ya!Mm%~VG!ygUY8cg;O8HEaJ65^1~ll`#9%!HNyFLnpBF6{I~t ziX^1YFUE*fT{%ci6_D?Plz5*qiP2~#RoV)>L9!&lA(IOeWT#P}CB@)of4MM&OZGFY z51AEYhN&Hyffs6S;jooW&_Kwes)cC{WvHzTEB9`xa3#8@GUK8t>5Sr#4xzHlcBxiC zOeNRwziFb#LpX+|8{Hko!|o^&g|^tXaj^oLJR-mFY3=oQP2?xXMloK3dWO+w-Di+z zS(khw*EwfLb;L0-_4Hbj_l5n8Tp&kHkHv7=jTM?!$Qcy>4fZ0;xVFsd{%8+TQP99! zskeEs)@YArxwxe@CCmuaWAU^9+LCf~Pr%utert(UI+@g(?Kz=#i`nb8B`5Pr4;pE; z&9%5ODO3*SaI6c}X9*@km$)abnmFZCp}GddOfJZrF-f0v8#0|yD;Maa=Q6%2cCX_g zRS(WBX_0O9F%V{L#F)t8-K@I{jp^{-!+t}+rJQFmcgr`^?lZ|nwJO59D$PF}kOu6=$MUkTuNpL^kme7tQ(oMWrSJt}l(~n2Vm<$67Cc>)- zSCU6EcGK^4ws!+(JV!i6Q*b{>;F|osUu~T_l+`)PRh9uqs|SxSO`Ogbqer>iwvqDIA9(25*}bKK(SaRq%U-aq$xvVs z84&ZUbZKy5L;LV1V7F{Vl(}PZJ z3a|$+{^(Imz}P%j)@?eD6$R^f^)b^va(N6ti_zj4{JJvNQICWCUT&Zdutwr!3^nDd zj@2iu2%cRn5;#c+`jbE`Yubvj0PZetIbncfR8lQ^GZAR=m`?$*=GNymtv(6p%qxcv zm2uBrQC_qcwOVbiw44SNtc~f5JXEzGBCr-$*IiiQE3cBbkefHMc2k+&tzYStp3vQm zi2KIH7Mrhg6Dqf`!O`+TUK{gN9UH=2S>hR(!XtpUp-Vi5J(mg7Uw*A*!#QmUSL!hp zt$b#__Dzuud%Z8rHE>{X3^Ab!SgKXIiJ#GEcQLa^P<>=bmNMNEHS0y6lmW690;frL z9o~X{GM~LldvK< zh`L{jasgPqA;tZB1f|wiofnRZ-*uG@#$OM2&=D1zRa>AKX(a72tse26&hGw@0p|7e za5R|j+|`S2<>;y5RWmGyO;5fhL|#BCiCtr0M$2)JhyIqza(G~yCVFm zxRdB2LnTpA^o1x%nVx_u2u*IT(phpeh; z%}rfsOh2Y9F(|l!QAix6wS5;(!HM+FRD*NXw%u`0U5=4$l;rOCr4ash7F0`flL`ch zZO3i4p`Ql?$xS5M5}p?NE;t|mvy)NBgyZ&qE`3>dsvLxN6GIhLII={x8|RX^x({PH z7xkS^#8Cz|0Z)ChNaMn!T!KjRZmm5jzS5NKlUMk+L_-~hW9~liF-c~$;?u=g)@0)x%s+}gO-r&E2r+DE$LpVfdTC!AaS#V>5YroNd*a@gbR>=?t6u8 zi8r-uEXla$!af1vrlN-t6o4lKE16!kvyf2~OZL5UjR&Ty9(h71q#g#wpk4D0=U1w- z$3ro z7(Rs&RlxHYUM>$BF`5y(cqNKx`@bO*DUlZ&E5`(eY=V#Z;K(p$bR|Uo)L^r9V zhrNB*E{Z=*M2>{Yim4*bP1u1qmx>5EUdhX*)AnoLcIHO=wHIo$o9UwK| zF)j=xX=)$A9`H4c3VLK1NI^S$7W2PS)N~61Ul(YLy+}d!k2dU_zEwbKgZiVRG zkN(i=^Tft!lIUHhv`axC&&~_2LUeZG{h3EOba%LV>56zfUW5CX<|(;%0fWiT&ciu< z#>t@ybrpcyI{)x{J^bA?JPy zqkq=<|8172F|Zl5bgkdnQaSp@|Fy8WcOCSs#Oy;`FlW!+lOH-eRErX#3_6CPY*E)_ zv2S}?qGsJKM;}Q0TXy`0dsmEY$~bv~mf`dc4mP=V_5Pc&qrnxIx!FWcs=DJo_<(j` z8o#(qP6g(l2_c$R@B+l3GzEyq>uxu4L3lj%lCQBJg(JTr$+)yEZ_-$;DJ;D7;;zG@ z2DMwAHFU1v95CAV0^K5$<7BTY)8f+fdDu1-+p)6Mx55p68ZUqdR$Tp#37q&ADey5h zaf5PiLu8#<<=QQ*E>T0>hia9WQV942uBXBc`-INJ-%O>QbY?LQoqWETIu(shRzO)h zGgUS+T>P{WZ4SXvlK4}w4h{QOeX_I{>KFKA-uH2l0@I@W@D*}vtGwdFxnT;e;I5td z+Zh8#Ew0EiC{)iMn{dPhwo+R8yr}_4L_OP4S^Hy@jo#Flkud7YMA#JOw^G!w6^sFr zt2bMJGPFd#Qowv4QPpTA`ScI0#h$)?Fh)XN754d33D$g5-t>FukVBWs zLAA0wR_KmAVEepz)z1aoY;I$ZFS4gbNVFFJD=%>v!E|T_Ohq%x+UpPPrrXg zw!HDZ(`%zk=`N%_%WSE1ki2_`GqT`6g!1SdE{2|$<8$v-@lciwFSwO*)9_G)e9dfr z;A)eJbUrESE+YK={-)Z-zS{KC4zbyx?iAb+)Tg>>>z-zHs=32D{c*T?X z+f3dX#9vOUPG$4I`JCxKP6Vg9SpttRWzx}H55x(rV;Xq$PA$+ z%1Vse2!q9Dx~)3VPf%SMcA{OaeUN`hD{k9hYHeW@wO;0%U`NnWtVlw@hZO$7YHJ8A z>ka<3wZ>otw7q$)nfH}`BvTcxS5^x2?gl*#9Afh-?E`@#98@sn_bnV64UmEi*F{*W zH85YDBf0mGuFUWHFK>U>3slp=s_QwiB9aR{L#{KUhm{IBli9T-l|l(J`Qf4F^N6sb zJVDPA@5!LKojWlHFuK~Yg&=7WHBXKT69WSrTk01;zP{uGgZVM1tk^C z%RdW5UU)k{L$!kq*_9KuSwt#0lQ>pxP$kfaPKA%gREHDX#Trj{!&^cTSHkaiNcgo2 zC1dCF9vlQmMpq)@iU=*!qq8I%I}o&`pa>{WFcwXiQTF*cQ|YeIwC$c!v<0rF_i&Xn zgjz2V{1xj;DW~Ng=K<4A_0L+9K?Rq1)}U|Cs0qBqVb036Y@DJxlW3;4g~K0a@xr9$ z`>#XHkI~O~@9V{Svzw46()MKu0O{39uc;|6 z>U;qkn58orj1p7R&12^+6X#H&TclIDqelB-xW;;HAO!1O)zGt0)g$Q6$r!v|U#$s` zaro0r?#YEdTkp45m8R@*jy;NDgi85hlF4ryL5n*xL3?KbDr7osuu0;QC%szJw*aoe z7;uMDC>`pM(`H?Tod$hsE$rBA=UK&*+7Y`hC2`sPZC#_n^cxD<&8d{HI>nfQR7r%6 z#e1}E-wtK`%p}~x)12Hj!24|77WIlm8_L2hE$us~k&j8%1Has*n7Jy_Ts^EdXAz-F zv3w(YwUU9D*@A9iN+hQ#elD@DNpNKo2rD9au!&pOid3loNz@RE@U(!}5%XnXgTETe z(zXU*ZTDXeB=i+J?4zD2*SW4&6F(-UIIOiNz7_Ml`h5(RzBmjMib^W9TJR5A<7lO<8TZ)#u3@ zio=t-bFaI3E^3<_R%389R|h5IqXegt&zF zCnF-*H9ldh@h{x7S0f8HCQ>`A=FeKQeAn6gs6Vmpq25uY-EfuZ=fIXda*>fk8m-9% zTk%xu@jZC7nc!;k*Tp;60qfT7#j;XcyI>~q<@-k+)_NjUlOlkU@2VYDgM1^i(S|X)EWS<$ zL&F#CE3$AQQ(nm?Kv-InJ2(|bVE{tflTI~c$lgL zfw66rWh3w_+5!s^39J@(H+$q>#vsbo)@IX$di9Tp{{(RZ?lU|Aej^mo$P0rA_so-X zCn3^y0=s_@`NfXsq+~u-tal^7a6}zxMN+m6B~(Y&adGo$9V!8RM@`JZ%9A;0RD!Qg z1?2QrHhC3b33fh$-Ea_=K_*(QqkjXFLCNB7OtMF=B+NkzBO}tXBDeL*`G&$PEuHp1 z-L2tkCe%8{XlM8o`?D5)v+thDB>->2{E@_;V#5A#AxR!#gR{D|hKaY>vBI#aE#Hi=FMaz!S$RUlTaav4dpq}0MDPGBP;OUrW~y}RdQ2~>mpWt$>I ztL@0p84tD}qeSf7TMTA!Ian4>W&SI0ol*m>GifwerW~SFV{dZNZQ2eo%^m<|1Wc!C zc$M@;EiJA&vZWfFp{i5a3Nu=z_N)YVu$|@d=&~5`Qh~c{X3zqJ_lC>}1>BUj()Sa9 z>FqK#DM%_}2tF(a!%*8K{AW3ryYCn?<=96W!+-)m8^(1{XTX(YZW z&CANs=vqlv-X@@y3#$X%$)ocQ6ez({WkvCgv)NsIg}8 zf&$IoYwe|e=*Q)DgWK5kXgnLdy^F*%7%RaTyD?cRa*=5*a{8W-Dbl}z@RlRoE=I)< zVvraEfH-JzBMHDW#5hP4o3SN9(KZ0V^|Cilf(w?Dl31NIjxyQgR_;=!9^E1rI1?uc9F z;98RdLtBwY>Yd=mVmEG%DK?=yn#OaLq(&ad(JjF>XWrzRo~LG;Z#8JF@5Wf5wf z{3GxBHKEjpZU`L5`w-=)a#tisPdP}`4qFD8LWllt9$Y0>UK~;}bw8WAK=3>&D6q9! zYdf=A>UDSY=nt$4E3ek?#_4l#uyy-{C8%g4--O(5oR@0N;R}Hh$^rniwHy&bqF0_k z&=L94I=D^m8F6&4*5+%5Z@xoV(dI}8J(MLXiFD;!Xro~nRc*crTjEXZ zu)PUaZ!@-mEW94F_-I@GOi%)>?_7+InF9Hazhzee;B5IsB=?A2PY;By!RF=_;qgwv zcGvp>8H;=;iNKo^DF{-RQi9x_o#R#$RjF*f;H@$2mITOBZ~|*0SPOFs)ARH{a!FeA zaOY*NJYpszZ<+oZsfe+;r?LkXg7!2XWS|IP^sa$@NA1VII*kGL?mg7;$39!nM%9U@ z##zL(JR$z|NP>KgLk;!`7<*%9#bLyHVxKm4ol}hxv)KY%y{v5a4kr zFz~6G6!yn(O$QFh6MK#vEq&@a$r!+v%FipQ&ywD|UB%oSeI*8|eCjock%LFdk;vJ( zQoQGFzSyTdB#g727SKDoPf=ogJ$R-<`aLH9_qb9s>mz!1dVy6*tOb;9=@QQdW+_> zH#M|{y|TCm?d-)3>Q2y;f@)cw7x~vm_l|Ve-bj?TBhKsodKw(^;pf9|*5%SHe zb!+oGlHNWy{>jn&x098L9{^g3<(>b;K>lUQVP<4t|M!WB{r@tMe`v%08v_~A)T$wF zf%SQ*xpnkAh$fN50u1)wYH;!IF5>uwAKp!BgJ2BILjUzaDk7QBl3tfVBTrMycQE&d zh~KAkbYdv;$MOBeos<4GMecilnmSdA>*x94&2A^l_sI42ro}gl&o|Snwekc57w+|S z@3SO?7u)mu^<<}J&%u*<;y3K`^YMz6TTfS;6D(xTC+pzn5pE8U_Emr!2a>Jbm@aL% z6vyChO5U{R3~^vjSJg3=!&K6Ve-~JY9Eb4`{D_bu9+II?%JL^%it3Fy@fuo6uzJcc zq{Grp<&^E4mC-jEf7j{Y?aHqhK6=E-rR@eq`yyYj z&m*TF4sZUYCOK@K0rJc-u@EY538`>jV~O$Q#uSarWgRCI`PLQz$Z-!R4@LQgpwf!8 z=;wOfi!hhx$`5*LJo&(XaJDCi1`fnnh|*Qs$fsq%X$I1C&nbZcFl^3YI%lX@18 zuW1B@V*6Uxg>c=nO1J$0?-{f#y_Vq_Bmn z1jNz#f6opbbMgT=wMefz&MXR-dE%gyF_+XP8jLbceeDsy&|^`X5ekp^eYQtvf)MM- zgtCpvIQp6sQaPT9v!!}!8~RfZg>>kSMtjk7=Q5y z`IzkV!vj@|sI`dH;#QDFkl;^+7vok2RRoktwJ6zT5x3hF$x47OWhQKaX z_Yg&Zw(cdLQ!UfBuU0Xz3?juxzyA4U)XCZc8iThG~4iRi6*!n6wX(11|&S5@A=gdLnM-K_HFg2tPtSsJUhz8R)l z597qEmnwE>Gskxujs+n;Xnk^YD5-ixJ>1~Ej}TI>G<~gwnki?|N?(E4fK)$`?PJ+* zptb%biZgF#WS1U7t&D}>pg(+LZiK03r}mcYkjG_YB-U<*W(ExAWo0-G@b=7{eX@>Z zT*TbJql;++PZf_n%c+p6iCdecar3j$%L&q6M-4(DtfQ3rR6XKg7&UQ2GBlV8!%BIK zz`0`gQMlzoNoX#bk^FUKG+ys1HEn!o!7_2xhs#0am>5Pq$cxa@Q$>p#Wf9QI6(pB! zu-;IN^V|&Ucleyko{c%A8S}FigSM z4L7RZb?e6?^ppv}jfs!9d$$({iI#?1-N)5Pf;3j4C_hPW-~>w1gkT=%_B^zXc{jNKCZr(ce8GqSDe*^@`j^t&}^9jPpqler(%G88xx3L&#-8TnjaCK zgB%&`dIUmltrb{8zJA)aNodU*R=LLVUUEfGbPg3SKy4o6Bp_%??n478Us?2$aT6?c zSfHU=ZF-tWnWV?dhwxf?FE?Qp)Ob*xFN2X3&fY6u@+a9hz;X9_L^e%13WBz3C_@@6T;79mq!21MjG2fH3cEs!ok6&q2kTpiXW=GM zoXt9CGi&b`AcY6|7F+0i6$IFl^ph+o-&HN;pxK8jYX_+l6QULwBkD#fs!A0I4GdRe z!I!azL0=lS*qV0Mr%viUNs&7Fr2|(ic-kJxD+&7hEUHq9b`@pokrF;TnX2lPC8vVs zQzCvRp_k?jfLn^tWy4|u#d${G@@q(T<7(!~eUp7tPW?zrL#+tOs>$=L%qOo}X(x-l zXiwpIfCE1oOZjcFmM+Cj`>GwieCv&=eO;s!SbQpC{-cuW9K*Zq&*Yr3QLDgp=I-ce zp(tBgn>Sy>1Za0dkuDqyU%j8Z$;ar=Nsqfs_C&>vdU=Y-SGlMV6+uHaw9**p~8T~Ny#vbGwayZE@c+I5yV3) z)WcDO%fgQ$?v=+}b5}F|CfZh2!gqkStdwa!7P=4^wT2sTv$oU$r1@NbD$(6>xbo6X z@f&=W=Os0N`D&TMv;L}V0onOOW06)|E>iZvF=x`Jl0M~&s?*vv23t@S(x2aP+iJ%( zk7Z2#+MBvmemxFR`sHF8*}3z| z)R*t`d_&iUHcGtwZQe>L+EOn<(fbbj7rLUy|uvV(T3c`}-e->dgptQ4AE zUUaRVQXwX4BsJM>lH|>FV4c67-h;4%P8MNnZSIOKt~dfaJ_d^l4|dgYknb9}hGzpJsopALa^LR0>(*QAs8 z$2zy$PqQABaHHj_uV~~v%+hE)#}1zl*`$`n2>QKf<($n7qxLL#n4JuP&o-9lwuCe& zG`iF9^6f->cGMS`e=Y&3NR(?J#LJqBgcyf_;PIES1pN%@{Tkb28C?u+Q zPf0l!Q`2ZV^lIzyrq1tvWMgJ+aVAXEPz+7x!^L_Oo#^tD%qF<_!m3Ql7*$&W+?~HHWu{qn8Pnwf!Gy z1~un9P3?iB7(Ke5zq+HIw~p7Fm>u11e!YN5c8-#L*qop4&o4@PL0vxIuQwUrP2H;u z)E2e8okJH-){Ts%yBb=3oPVuYXH zM-m^S2Lo<>cmA0YE&UUhEw3fgzRO}>9#XMiDBXP(CYpbg-r_hsG6iN$_@;-QhcS5$ zT+1s5$K2+;STZ>y?Q+A*lel0|_DrAA~9hh6ciQf#ZT)YxaYL(zpnD&Bad%VJo% z4O#NAhmeWaLa4>?x6`f?Ud8oc--=CiH-disK)>#3=f*AJ zU{bG<-faVm>Ss>LAZ49?TI>x-Jn}Ib?!I7)#a2k9=`VkXO%09nm)*L14`l7M3hsBS`b27vG463(ugrO&_*~5 zkf0?#^`3*^khrf}x?0mvqQ?7>llT)3DNN?1a&h4x_h0(r>ZIXGob5uZZcszl(B@F`7;CPw4nh6q%RO5+7 zB|d?Cz&W({5rSUPVuqlvpL81QsdkHj)YQn8V>Sgdl z#89Z%D_bno6V*Z{67Xrd)k-oDRT)Z^i`2#B?uR>GxZaNiI51rqgN_7%alh9XpQeRM z)e-T?YhS8i%j{_=mS#Xv`h%Kkp});!NkS3>xvf?VGjJ45NsfpoZ6a&bmr7Yi__n`( zwJ<85gWbf;L|N)9al*n4|1cL&-@PcAp=B)OpqbKP<0*rLVlt#M_k>_NHzr5jcVgDx z4mp%KXzu#BtE5FO-5>KkOW4rR0wle65U*7x1y_|t z9oY8G9o5)cm0g@%DFr0*KP;S}&`r8(YytxcDlN_iK8TdAAY-gwJaNDA{OidI(6xhv zX0z{ClOJ*eV9Fww_L*5z*Zec;iyy2FR4I>#dSx6QT*h4}0eXS6;ZpP2YytEonr5(w zXxCItrCEg25+G@^s%+;q%P2aKdJ;s*hrAgjhcc{NDkj>8`t3WGR4QIe6}l5o_GTl* zMT|((k^Lbvw+l|zVpp^257}}+N0r*EE&VJ- z5B5OQGVyS9(yh8k)yE8X;N6Nb7pfN|n}N=8kXO3ax@c9ae9p6BO1^7WX0|%Rv!C46 zs8h~+-#O}iD^8kLT~`AbU&-;bx%&mw#NdWvR0!us)=gE1;e0Vq9gM6? z3BGNe8nJ@guC5a9{1iQvD(!5Br(U<*(8NTi$PR0u~I=O(ver#A%{oO0Y5TBGi0S-^W~a(#S=U^DyKwo3-_5&6fu<@SW3^qA?+~|-D%pKH?&No z3nj#Gw@kqSYcDhsN&1NUf;^Y^pk<0#7&S%N`@-FS@A%&vwIOYC2nQ1Ju#6Q#ed7M*?X+HK2U78Z|aLYhdOc~+X-1TFiW1MlQ5&S zXL6*Ji#BTQ;1+72ihEMw2wk)J%{Sezg_n*vfTr}jpw{8b!`0eYJ(NM>u=CZ0;7S^k z+w=6-U=OX8gRF=X?Bz1CjsvVG#zTA^@BuUVPM}$OGt%%QFPY8 zQ|z9>W>^H&WwtOsIYedxJGarl{duG+9-r&H_=?>gN@U%LO{LOHqV=|yW)Jc2eG?%l z&DWb;x2DBHQ*R;5;4f*7BJE$oM6Cn-?5@?Ob%JSaIO^^(v%z9*{E(4%mZbcfUKQl# zDS7+6m}b4e=IRnXe)U*wTEY37pIYpN8}75p@V=<`C+YZSmE=>BC|fy8v@}jy} zBaQ>7b zz{V15klnj6FdlET!6GOiy747Z^$BK<;oL=14A}Nb+lbW54yaVNL22InGYWkQ-rk!L z`Nv#xMr5t`YXn)b%8Z9!!A$ot{-ht}Nh~)Ug``oE0yuP8aT{(LJK#%(xVyj_Ua9BE zFxmRl zN7Mn9)%$W%ZIl5E2@+XXH8cHNSE&3O4_DACx zwqKCUEAifC$;zogCaM^&pQj%d1+86X`%QVmlHhNYIo)}WXst3@9`ijc(BNO>Zw#5U z<)08hKwShQTV5(tS1vEH94$%Ce6DlSNjJmGLPwBDMP%mHaa6>B3Gra&MW*_UyFQXI3d)T2=Q?92suxLdnD`Wt8t66U`a?I6` zM`fXcWL4D>VPJ_8H)#J5faLE0j1YffvF^T9UcyMy9gXKRXKYQzl2J|(C@-mEU-b$9 z)y$>WhBk1N&Y`JZ<&mw|SwOC2F~CG|!-Nz-=QTIUi!uS0b#Z3)py=z%l9VLp)Wt6D zpv4b#=LWgpRhRhs)(YKVe(-!>spRs^w?J38wFrN?up5J;4^#w19%SwFp+azD=*GZM~&+$2&m*H!Ms!*2v)$dr63jSN>;V> z>`HKZTK_B(XZ#LKs$0iv8s@7iQ^%Y~8>P4Dr5JoMBkEGiM~k;RKwTP+@OB&830w-+ zB7DAm6X(J(w!(Jy_VO6Mk`;jm<7r0K z-zPD{%LS&J$!`x9t-GDc>RvS5N3rZ`D+Id%N#akGHH{bf68F=B3FK^wp+vdO)u-y5 zoI@4r+x`hZO!3n7ALzoMa5KYenr) zBbIUpT^z`=oC&@i7Uh)Tv>4P0Bem`H<>=V<+O%6(Shhlo#mUJ`_|?#M!qXIOpN#&; z{o{&=j_7Mb)N>(4|BzPK=dXgM=I_I6UKjnfH(y+p)UaRJ?(OSH$9R8z-Jg_ni-Z1r zpU}J7uw7lB*I|nMEFV|1et+2M`MP_0b$#)`q#bW!&wE*`Zf0#&wtIGAI;t5eU0;Jr z?-PA~LELssxQ39Mw05|<4R3t9es7f&9l0)WOxuj_a&QD}D*Ks5_U?2I#O>*HbwH}u zvtOHzlPRwYZwIh$EET=vY_J~xIh1;56vlYO0*>@Z5*!Gxsf~@fvb5NA-&D~3;_>Vw0)X*{L2(1+F#Z&v;M)}mmUerAm?{m$re+0qo8ruraOJ%9nUQ)YEo z)u>=2?w%$7jY!pPqq(Q_JUkCrtpD!dZBjAj|6gI%APF}fs$72Vt2+U8rkF& ztf!Q$Ai6hURR}2M1}z1xj~Op{`HMni;VB*8#N{ltZHTVgKvhBhYj+Ode%PELS_pP} z;$7O8QlgFA5P|_p?cJ&_1PReS%NW-$CWbg0`qg4qYJ+}&Gt?}!qXje($8aJ&JPu+F za~Q7=fkxzt@^u-sa20Y|b5+>+mcr zpeu1GPZWhY-pkTb$m3&lEZ5@v?V=ShRN9S-X|54Pfq($sI-^TsGEvC&UMjzO00F4| zNoob)Xt}40G6;$@LY~O(dNt0-r-8%ZsRv(qyMqcnv-2ohG(zpBW~d`9%LBu~s6mGJ z8Z$@QzD|Ig)r{Y2Rh2UGM$7TcO}{NwE9~OYI0M%_y3Q-nD@#XA@C%{q;TAX(dT~L| zm*WaT%VP*Zrqd3l5KH)2)rB~*od}lHO#VbWiF(06Kv7TyM<58yzo8M667IzkBjkD$ zQnBp;Xe1RR5?cJ?lWZ6`yJU=k_ETCJz-UV9wYtv>WPkbvn=l%2QwzkY>0VsRa}ax! z}a1}7$dNUag>oWbteQ1OYWu}{Q4p#3cb%%*bPIKGB^M+!v!BLQgyupfm2}VGHl%>jH`@p?>QGkScai} z94)K=dL|cUk5W#L*eLWd=K$2lkpxPR7}a>*eBDp~?t?B-c%$=L9(^f6mN1Exw)75j zFp)e4^ofkixIRGC!JyUYVxoBk?FXR|`$82pA#4{=?szRT zO8w{ef`qJQl~tyD61iowN>LYnN}?9ka@rdO_X6Xi3@dOiqXErX5hg?_nP!d4bGUqLgW(QWVibkBZ-8x{JY+}`lu>eT5Dq4I+60Q@U8vDdpB)N`I^2i~Q)WYZrc^AjDR}u}Yw6Gx`k2R9XCcJqJ zeR_!^C}7IXg2QMhSu)`AI2{`aGZuxvpX*t_Xr^aW6o!!{XXGlxX|{#J5S!vyId+ZF zaRUOW8X2mw;|vBpNsFJ-`E>o21V&n#4(sSXm6SAe1j2Z!nwnj<`YIh5(!Du+%hq)oXLxy>Rz_jFV(-BQ+oR_EZ z^~A_i1gcBguSx!${)~9p?oga7CIV;5qbU3~ z>^kvaShruU2||*DKd#7*Dhr3bDRz{S`+UuhmL3w#zaZJl^{qWyJcz3rECUs2CgZau z*yriTBntJM@Kgd*#uk>zRU!b7jU3$_#@-i7+ow$V*i%x9FUIxf<`btNzY7A{Yo-(q zQPWfLN}*ZTP7G(`b{RW*hU)x=w0{q>DzB>J3&6m z+69YfA5u%%Eh`l?2$N`maaBp?EMsc+&Q%K?0pFSYVt+lB2)3k>qm~>mi>0p_Iv?eA z%+dWF4E#~l^5AipbV|h~KdL=UWkmu@{g{6kjUpAoK&cuP=%gOaVsXqRE>#|L)&{ry z8YX#$WYM?^5KEGfvA=6;nN^fByN`o`3C2F|Brt9*^5tqZRj3l_G6P`0{3N!3hwnC8 zCLX2o#))r9DM*!7AH;^%PW`j)~(9XU`Gs|c@K7L)_l$!uF0^;%}Jl8)nE_s-a@RE!Qffn#-IjE>H!6M+sW zAEBqFs&Cdi^6W#^8vC#$l^0xP+l9CO7F{K6?v2aeDAZZ=<^-r>l1oT0Lh#|{zd4Dy zSNHWj$Jy=aAqOz<4`i&Ka$%bLXqR1tgtWm@Ny)pE5>Xv<^}>Q0;(wjKzoJ4%+Al=& zvU#Yt(vs6f8u}A=;dI!*;7FZnVTtok{2lxZ4-W{~56?zjf2R_{@yppDR3*9~1V005 z-6{7nx#=5)EQ}b`bZ~TL?A}OnIo_3+%2MjBxJdItcvF)wBZr^(5gsnb+f=g(Fc=TN z;{^W_%YsD^;IV6^{G&J*ZLvb0PNCSEopd6-@who~8^w#&rC;k#|DIx);3FZgfz72H z49=I!v>2S+5@yt0trX%&5DX#u=X@tdapq&tRvIvq5MxZMPM!P8A)yqFEbF3I)JSVq z9A?l*TMzvdF2aT`!aZ7HargHm`EjQu3vto@g(fRA{lX7?Ivtz|f`CRUp&aj`Dke`J zT?wg!HL#;EBq!m5T&o%p*Lgu{S}xs2@NTY$??!&|PT<1jV5l0d3h|N*ozul&SLtEW ze*WNqxwk`pWJ7)%*Njbov!66+c!Ht2jZX&Gk=5@j)_d;8P%J8Uo-+g?o}2VgonerL z&h2Q2`$F-4fL?gkqPZ_chGT^IrQB)2AH<+do6kszFH;*XCH|Y_^O1->DJ>Drz&{-# zBYpV#;N_=A2o>=Jc3)-?1IE^AU%eA=Fi<>VXOaBN417&+8VbMu{&%j=qH7T@EYeqgK{s3v!gXD z8z2)PrzY<*imsT$rNz-v4C%|hLu@UU6LynY zA&i}dj(tq)^ZAq2{h&@LnD+$LF^~Vb zX&v1vyUU*cN?J1M>No~#_44E?`z>Q3&`Da4u0+|yhS?tO`$l?J#Gacnovrea;F?8Y z`e8ZMzAmKp6nd)t)hLWp_(dM{pmQHR`Lf)JU z9*Oj}IXRi|1&nfh7Whvr@?TaAW>(gJJMfwQ6`u9KSmZwxQ~!-cE@@7L)3hP}b>J_q z&mJvm1rX)g$vyRV_=C|$y88H`gUt;0+=R-DLs1r0o^w0)4gAs4NlNn&&g5_)O59M< z`Tn@i`Fr)+rBB&h(#}^|ae6ztN#Xz5yT9>*{rKO>>aDSb9doS40tLlDh>=Au+34vFt(eUEg3<#9F8lM65 zk-e?h*7MFKUjiHW28k)o2=P?v1P$!La<`jznj6mWDRCI5VengSM+hXRxwastIfn^a^c48d#m^x&= zg)oN!&FIYEnJhvUDvw6%p}vmQ0L<@U(a{gW}q|MU&e(k||}=QCuOaHS32Q*Q&5 zk#POga+}OQ;nykI$hHjw2T6CsjOvNU@VGL=-?hoF=Yv;g&ZGYfA&Rs6ptnE{(M5+l z%e`8}+22WPR#F#eoB;~GvoKtyx)LPM+nutUAzF2v>?F_{c&BwdI@qcsw5hx zBUA{FgR@+>dFV}?%6pbSG@l5!Vt;4R@l4h?cd{+N-P<)nesAlB-bg7Di`0=Os9{Y8 z>)6 zNf&r-M(yT(sl?}rY@}GbxgPo+(*ayck3KT@>dB?a$oiW?Rk67;)^V5@oT|OpG+@+o z4=s;>ugeEkN(kl!!M(&eNebxfj=k=?Opl@XOiUI^hf))pRuuP3JTA?Dp zEL@Vdv9EC64T9feh!sL?*)}>AAZMg?4)p-dU2b}rpjpL)jt(v8ZNC9&s-1D} zOTN8vy=rK!SE7#jo6~?St-?(~G6RQ69oZpm4jrxPbN7-Wv6)7aV+d7mJa+%nWEVTg zezjbR1FaNeq6jsAFMBJ?iYMEtbP^BXK2f7eQExG2gghA~$^0r6n*k@Myrx^4i!43x z9_Uv$mPoTufLTG?bUd3@n@Ur2d9>u=RK7a5X$h+F3DP~_$nEKlf*F${S-<{dw;(TC zWHfxuz@UwY2&BMB{1iLqh)j^+MvtM;r_4P`^kVF0DZHpW?XxCuuA78*WgQsL+7a3n z-cd4Yb7J5rN5F*ut+f|d?p054sRp3(oxdmI9Dtq5>?bsg!*knrpa0*{!Qz zX5OJu7~tK{NA`va)qb@;&TZSmk+0ZG=M`p}Gsvr+(ymoK+}{NmBwE$M79=sLc0J%J zjxj>2ikVz~M@D_vi0t%;F1M>&4L>R~n;vhXBF@08kr5YE%<@IWTz?VqP5sP`!RE7PSmZvSU+UnviQDoKLMd6``rZZs*bz`yWy_+>T@`@qBh? zoTpdh?$2(tY5RnX87%Oe3Dcsjl4SLsinC` z<_M3|PLD4EicTq%@N>aMFIlS6{3vq{;_^sL*nvi@8gR8B5>*-k^EuOEBVARNxzXw^ z#rdF$EWay6t}mBge4NDK5xugdz3pw5Xto(8`1U3PR!VYVQ zLt2_c8;nM|W!_Z)Z;3T1?aK76ov$y_me6B$JPqM$?0u)i@*4*hLREa$(Op=9+Vl>& zb!YBYTrOOf#700iK^s526faY%;sf~H);pGoL-OSTj9Ve2>{acF@8n6p(Pku3r3ELr zjpVhky^*Hb8q|7QG{jE!uy_<#7(vy8w^AZiCm0UOqt%*uyL%~@+jOu(7 zYF%HFzA{kqF0-$GHd@Mm(uZl{9j&Ds(TN!#QmKuuejdv?Tr`1%J1O$CJgZ=EDIjiW zN&J!C6KGzWNvK~$c#HvTo*_ce*tC%eS>N8jh4(bB!p{lyeg`r)v20Povr3_xOXNYN z0a5o5x_QAt*nR``46$|{A>mxnP%Gg?LD0$oHIp1G+e<`}zH#!sFp zXq7#EDBP%5WMftpPVbpm{0WMtyV{!vnC7%ie!-pzg_2uzf}Jo2^FO*GOa|BK6f6=I zaRXTcRxWqq(Y)SwsEFjTQ?=K6UOk|W94PYewKsQux}UwiBtt*Pf!(VM3nJRGkhDWn zWXOFe*_t?1XeX5*t1TP64l+*Wp$N{3`-KWO(+&V{^QH07I za39(6#&$Q4qadYCkmj}Wg`A!qck{uex?SG1!3%8pdULKmZ}o<|_QkHdXZYv5;|1Kk zMxUuC+|=L!;VJ>&ghS5Rc$i_~>QeMQg@1)U9jtYx6LFhIj1K4!;hFQ!U*&2@Xd1kX z%)!h#EUUl)@$3767Fm%~t81(!XI+i4=Su_7A)VdaOnoU*n%%5(QOfUX&{~lPWy)L> z_KwSagx(zXZ{qadY@tt{V20DC$|dHPLU4t!OaY- zPQu_9L^p3y@LT|toTMB`f84vA<@6y}Nqa}<08y@K=Cj^Tg>KlAfs?(0;;*_EUls{m zuW$3CHbPTFOeK$o?h@_XnBAsAL)1cjY&P!FfSkVs|27Y(z4KBjQ&n0tN;MI2f^Nm> za;9lyoK#k*xG28`GI#P+9+&dt05-8VjxhT@4~uI=w6GkSZD`kBjG zu)_=&P4I2BFo(5=$ua~Xzn3)1ZR!rJx zZfPs`&gs@NE{?cJ;5VD?oOG1Fn}_w^B}GPlLRp=fGfH!2O+}q;?M%U{dx2tXE!s`qQ^#ieV}iL zu0fJwZb=T5QW3hRw*4?eV{roJ3@jpNpbYb=j%sLusmzD9P-oZqx|b~jOkMMW!xRF# z1I>hipJ6J0hwMRvEx<|CMj;D%5yA3m8GVUJy?s?WyXqv9a%f#Lu;JL|`)%at<)p?P z1)c@I>}=kyT28+gC?Kzm02^~>AiT!|c)35j8Uapon(}!A!Y04_6{!m~Mm5~=sch;J6F%kB#TmF?|VQSRXeq$-LVjKDo+-LNG zzWF%F6XE7w1&~&r<(wzT5ixlfr7ro8Q{;gh5*i}VKI{zuP-c~@8={*ZVY6oQ1kkug z8ZI~?2Xp4=w+Q7FG0@JPu1ldFZDH#vvlkp4T)C~Pxi}o0UT&bPa^gr`laUH5JcQaj z5znK$5w_dODW>do!uoJWV6U5URhgfsL*buf0y8@b1^50#TY5<}lGBT;e{o;dAaC5^l z8EcIg2HJ~dB_$X#Q=SF}2gPQ4UK<=U{)eASF~;QtVj7Kz*hV@n(Do50^I=uPQ1|mq z@}Y!1j7{pS`f{qOwdlXa^evY$jpZRiw_DhP`@i9grf*HkUiaxu+e8(mYhQl3gde8( z40(eh!SWf%(d~a`KOclBf+S&GFK#owqa8=qvP52sgN$jL$2*9iaEIV7|2)d7&-dtIETHfOdMg3$zIlmQCl}m80zF zY;iCsm$@sw6d;f}xK|>OwVu0A=;F;Z-G0%jLz3T}p;T&;t%Fw#Ly9t*H40LTxSRrB zVr$Bjw&W&d789b2|z_5mIaSiJ1Hu|&aHz2TUmp!OLX)u1`IOrt27BVO}M%h zKFXzY!NrZ!Psm4P6E1y%34OTl(UfUoG`I~UTEaCooj201OFk=W#p8mR^xf;Jpt(mt z?@`%cfpd#>9(NIUxf2Qdz1+H<%$dA?;1xl3D7}Nrf~_7{6l7bn)1`9`^Kgce%V^}| z_ycV#yaU7diQj>sg@%$~85;0WZ)7&?A}g5zG2(Qthtye6kfzV)OICLfdWm!V8f8|_ zs9*$Dj~`8_m`YSl&kN%}rb%(mP{Q(Q3(mbK%cQl7Ql9EHA-MKDOPYgU&^g`2sOYK= z9s!E3(t_exIkdIZzFH(>tU^M}Rmn=OS!~@rki1aexCRZAh`lkz=c1g=9J^iP-V)Vf zQXE!Iv+0O4I2Q-mQN&qt}0^I-5%&nk=T-KMwkbQi%5w&!1hMfT(Ci$5!{ZY}>QyG!WfeaPe6Soj0?l8c@A{(tK`Yk!({Tt^hd%!a$~dRfEgq-&J2^uimVm zsD2z#TIH*gFuTbP_(pOFv3J#u!m%uJ7ob0GVn^*pO>5k5q0%=|R7YrdcAbnc#pzDf z*nqP5T4qkZAVpRLv6+Xu&apAFbyOeTN7OZaEFm%N9N+u-%00Ig4aQB_#elRR5tpnM zX(Ey#hl*zDI7CVI-Rf9qDMoF9*~) zyx>yNc1YQy<%um-LZvU%8Ga|jIHesdjgmeGM*OhQH(LJ^vWPhq#wUJc60Dih>z0uO zwtP$=R8urQLp!~mS9Z@KsWdk_%KQMt5(9&|(K?sd{Ng1V4BME{Zy#;ruevzfB84^9 zJwm&B57%-6l3nC$;isx8JR8zZLZQ_!5bV^?r!2;&WvA%J*=CZlTOL(CE=SJ$MIXG;ilZm zR-Uu1+;Zo#o$A7>%;3dW0-1wTDxVCDZ8j)5pK{4=KFD7uYaZl4OEbEAa&rMhYVSz< zjfSO=^mUkdrv>v6PmO)i&eOeAaKSz~Ee0OpamYdU8C*?+doJ#>kAxVIsGhmCLDAmR^!BJ$AnC9z9RELR>ARy)VITzgE4! z%Ras{uG!r~d~`hGiwGw^zz$j-^l7;y|S{1jT* zFE9roM=m(hm3#t%Cn-7H-{(6*-x^_MY@S7?7&PjEg2LHz75E{^ao%^t+vlSTv{H28 zfMcg8L_+>;!`A8-cse{kBGxtDCn3xB)ZN_<$D`f<* z;t_80+O?7>`3yjx+v%{rCIo&x(ExAAh?kh`y#Uc>%M%lImvHO~X&1cMSTe?+KfBkh zZs&i?mm+ODKL|i8_D2;wN$_>p6ZDLgIJ5dj^&P53raB~mjly{T6p4!$WdvVZ#@%iR zUR#6Cf8ZDrJQni4Hz1-P|8fu4*vV&s zfA3tSiD#CjoTbr^5twsUz+V(zIf`rKl8PQG49m=Qyu-7Jb9P9!{A*GPv7HDU`I*QC zTvw7q8oNnE!U|~ILtA`JXiQ|V!Bb>-#Ue_j-TSk%_H5;*Cv3i+R23)IZ?RKPQe8}8 zi>N1~k7BZs3FA*3R*p}{*UH&-GvT6xFy-e@YSfpjuS{zic+g>VQvB)??h5uIf2SMs z!;f0P@~ek#$d8$lL1BcWB+yQv*I{yLRJd|i`PR9DGP6vU0Pg5-FVd2~QPCoRh%;#; zI~;Rqy|WXYS&`95kujU5i#XRb-fb2C+SB&TUk%+BNnct7g%D%vgXQL1vx|6HvPcF` zGs@Cr7W&8|bm!up?(R=(w6L?QbOeI6P+WZMqp>Gt>9nC>gTX8E6Q^`Kh(Xh9RpZ)p zYdXhw4f%9cx>5B8X+KRY0X|NBys3SOhpALW>BiXA{tyz za*B`SDkJn8mdR~Zy=CvnLV-3aG5Bv|mR;Ri znysCz6LxwCt{}@R>0EEwIBl(MqC>tHE;>OECHu;YBJ~fo^5dxfG0})|6|67;g5=s7Oczg%D zd;~H>1ra1#39`{OqlFekZR$Cq7no%oR?!rF%*Eg1CVnTgY+a5!jrcpF;cB1ctimmO z{K=!$w#mXfS!VHhy~}aqrj^hizrg{a<5yyBp$77jlQ~xwlx!x!$} z1$F^tM>+#rQFTCa(8PkTbu;0TAZQ)9lGFS^;q)AwBNi%zWW4FbC%FowwMF14p8%Z0 z78q|1oHln^tnJ^i^vWo@`z`8-hCxr%_Z}z7s}CA+u5BIC)h9T{`cAtzu0}e`CiU25 z*>f~GoHLTY1^l|#MZOOJt{&h3I=wqlHjp_@lw*_ z*;T+Omag>Y`SQnao~N8#vvp`JySj zdBjb0Pl!e`JqoLLN?FY9aN)0WqPp73KkGh_xtu*sU2gH{4uq4}O4wUoj)P#;*Qg^%%w};ISfpn=(H9`NEQm731va z%zXd{%{oQ#g98IXifA|Y_c`=G-JucUfAg$&o=7p?@aTK~Ud>wZB!mrG9+AMp9~W z^a}59zW2Li)x5r+?ng@6#hu?iKb{C}bACSWUqA0B+(H&^EFDH(D%e_DN~_nmw+j)} zs>Zbxw#y$ahn5B(k!r57y)0{V4*TG-91`8KyZ ztJKaPv+_0;uy%#o>E%ccvAeq8SGP)SecwJ8EW4JwLL%60)hlHRINhI`rCDIngnc?I z;GJH0gkC1$?@hShF}c)h>fJHibfi&5{mPQJV*8J}0%3Do;G13R;i~wf)kuVZMy-3T zIkjj?ZfP6zu`p;(d8YagQZ@soR44r=|4s`15c%Lhv*1qNzPY4Hzq9|x*gFMh7Pj5G zv2EKnI<{@ww%xI9+sPZ-cG9tJo4xy6Ro`B#YX4Pxoz0r_?5XEq-eX+%7z2Ncfsqde z;V$_?-(1IDJ6T(=r$G*^cC)UN+=R1ghOenXOQZ;~$H;Gm`!k=;j)p7=a$8TFWDczY zTtI$y;86ST|3Pyev=J@X4HPp0XsUZ$6z#`{IV$1^S{io;pr-t>lA(#7g zkTD^owi@XB`|?8@=A6OU1yae+eid9ner)Ug=Uw59K-9RBZ^C~P86Dd|N_Zbn%GZw_ zCZ^I5(6|^Lm&;swDf!PA*0cC$MWXvp!JA}V5X?j`VWdPq7!K7}S_aWdhn*%jN-b53 zrgUxnwYEU3zo>>d(^)4FQ6blv>@`@ZxwFxJF_P$k`5rg*?7H&ytA|z0P;3jMK~e4P z@ zOr|8qaCT*kt7+m%@rlm9ON8Ca-$Q_w=V(&d=ScP=tkZbk`K%QMT!_+a$(loFuge_g zhG+V?@?lAw{H5Q4or?{hHLLY&3vs~~l*2(5DWU66h;ZLDTyvygWnvjGovUvoA{oD5 zWH>-*u5X$$KTRN46*Mig?Qbb_tMYoSS}9V zYTDe>_2v(@XlmdZwvM^=>IGVJ$l)Uh3PxkrW>nvssMECC%WQ7MZNg&P4na0TluhIC(whi_+>#ocA;BjJlw1W$0*0!>0wX}v_zW~G)M7Im zsRPc|I#4qw2!?3TnzjkfB@|sk4$FKialEtr8PrVk+j#4AVu@W?@IJG|?=1`b{WBWD z7fG~X(hlQZJNTI|yOpA8n0=kaP>|-QX%bW<6a+hOOR`K5HLq~wfyAW> zR+a_i8Ma2YC;krqr_2qZK|WEmz;k6v4udBfZ6uu-iWMVrL^EPBNE8SXKY^u^0yL@e z0IPf0 z8u1{FyCgqy6rv;bqHw8l4oYkV&Cf#I7!~Mr23GQ!fz1pF4D*juICY|bRwf3!UM<}l zmFe~u2s{|dVczO^8jK+9h%8`%V(Yg09#9<642R%&2$Q()+cj+&@vC`?JdF1M%Wj^b zBD6<8ydcZa?FfT{S=(~8EfAa#Lvyfnr%qP^rO5topQXcqvD+XR5 zniUVha?fE3W&(mExD&hptt%k+u@uBOD)}NTOc~LN`d6vFA%}S8_wOi6f7*)-Vf3(W zqPGXnGST43hZ~;qy+owuYpx-`$=n;~;B#@c5Q-+B|&$Gj6i#tQ{KqYmqzw?QZffTbT!_JOHhcU-J5t8Ao89CJAq8}b?sXFZi$qL7fCaoq*=K}$ZnFYM zp~(iZZzDq>%4^LSD*=K_?~awTw(2T0MslwePAut7$q5go?9LSd)w$gB>;rP>JFn^r#7gWX#=J1FQ8` z2CzYG-Vl*x3}hbA*H}rZd71zP@=jAItUqkfQBqoak@xaO@NOXWHiDgP1IDR@^x(Bo zZ&VvA#?T}^C)ud;It2xTbC)d~2zF1aVztni!{!>)&Z#xUb;gl3xl-t~IyEV)zpa0$8If=FeBOY4e*oXxV@F z6d8U~END$jX)Dnp5lF+3mp!R<>C`p}=U{7vsVz|x2-uWDt9xcCLiZv~b0*9Q!yW?e zz_=$!5(*M^-aYpXTB@4PN^a35&gIoRgBCm-?gtse87bzQi83gyx|q!Q0np4dn+ z*ig4BBwpEEO8Qa|tN*}L4J6uRUa-4$jTvwB+Ykx3!(;c+249E#nu8A$1YF29vf0q^ zebhOz$rrIpn!k@Y*A;U>SN~-UJJNcKCLifIVsYU(g8&ktW)IC~1b zJ_O;Xw5`v{T%ub!b$ItaiyQ2g9tEWJ=G>C_UQH5uRa0-KfofoG8O>{HIL#Cxk540f zdY!UyvmD&kotGFQ!jh) z$`%H*9o;DFsEVkQrE)d`9X7O*B89T5V95=d{?iB#h7|H@>!=PdIMphCe6S`-yE^ny zOPW_mF#C{cOm^yqj})4f!<(0na9tZ|(bF)0zrdVS ziuz-QSofm1fYYH5-K~RPh8YwPWykn+3XZ@gb97g$Xga&^t0%#D9)5why0M~PPJd6Y z@1wZCG@S_jx*YP&#@N1RsV87PZ+(W95Yy4FiRr%dZ z&g5aBG2%fZH>{0kI<|2KiN|`ZNI}S>J|h1+rAmemN$XE+q^{%>CDLHEp8iU!1Nhz# zwu(s-NB(5P6(zokUSV!KMST``sRnIbj%viS1uJi0NylJ%?=)UfdUYcZ?0O35i9E?1 z1e4s8k23nLdCUQ_UOJ28PdMd-na$>^3Q11K|JJnZ{G!naH@wQCln-%zs-*-aIm-#^0xe|S4 z;-t=-&D|N^$uxeFgjplFa%oPjtuP^1hu>7b>qm ziVxH37DU+-*Npx+;K}YNc{+bcJh-A_F{w{YXv*YDJ_ z(yr(;ZEn4(*p1c{LV&%FcXNNi>Eo?{YtRWLLpYZUcuHC;o2*=#Rf>B1)x(nvZ)^G;rDWF-@wdADICE(V-aM_v=(ZUR*ip-=icS zW`%{S^rxrC-Ta@g@bZAe+lRjVzwgJFuZ**O!{tb_z5AcLc|UK3`6>P%Kk5mhb3h<&!yUlqd~5zCCREHp#yU-Trv{tVmD9rqc3wBi)G({MK-qRmc53huSiOBVC_x z>IC!qN_E^f6Ylqw6)=pKKLz8b{}e4#qCW=)2SmUQT&CW$z2v9A$owz(y=HKbjgU>J z5w4-p*{6TGsC;@S73bH;L5@8)L!cW3IM2J;R zl2t)in}rAj0Y3>lR9TEL;{4_zb4Et1K9fXYh+mR85%jX=Hq9}3d;*GRc$7#JTirQC z&Di$zOQaF#ibHXwkP9vpfxAt+*`|`^OgCGQ`-``bz zg_b-;=(WkR6gq1$)J(0wj9ZJSkoJ_I|Orta+n5EKP8_g{D2{6OrHG}UX5WjtD?fLD=h#d~qql2s6?^@Qe|g6T!zs`tS6LF8L&ePr z?D)|fntp8kL}^ZJY8DZ|jPu6YM0JSlSA# z4I!49|53=CT18?$tVU`=3GS9(L#guFa7{ULMs@<}h~&yrzw?BJ%BWHCyCRDRH3x9l zkrifXYFK_k(R&8oSyz+8f{K@kr{2ws9JU^e<{C{Rh|YE6h7TtUYAi+5WQ1Ci%CaIf zW!Kh8o($bdGSc1uZkpwD1KC87G;|^HvKrO)uRQK#rCrTR>tF1_5#N-(TxiI-9i1)!*a%tq{)d5)E+d-=HYv$Oj*e*2~2m|s-64CxI z83FSPIo-TButT=8zilArCeG>D^*$2IhrZ$1QP=WdXY-VrT@DjX*8Sube?fNJ)xz>< z3bkFG@l13Np2;@OqpPl$mP_SC&7XdXtw6MxZ37GkNU=vOZ%5$}R9SYe?6gRh%7XKz zVt~CGAqF?C{92@5ABJT9^MS*%AX_p(0hnIV6MXZGVl8itnms|@%O2#Ot`z=()hh}!OPyVb8PcfcZ*^QWlWVkYey?dB`p&9IHEB^k|b)6$bSbv-m zZb09_8p3%^SqD`Dchf31{U>I zYy@ZU_~XrqnV^n{Soe9F55b%h5?vyd!Hib#uGuU0vA2OwrAnewybQaWV#;jQI8F;g zJ>rE>=*Wb{ut*|QtDA3JKqrR-hd}hOWA#O;`ZDO_9mBq^OlRb~z!!j#74G%yo}fVW zZN@MT!hR+WwFrg?4O(F5-ehuQdjC%#w~=j|WmSKTZP~}^WVMIZw6%HhHk@wMl=<#7z z@8_QCEAv~{XSV9Tzs3oc85MnY9b$60a*`Eltm*^NOP5u&XzF{l9Jki%KF? z%x_8r4RJBrxB*X{eUJNaSTuJwWtZo-0l1XA=_0gBGb60zhwB@k8p(bj@B(v!-Yrb8d#&UOar zZ`>wkSEsWt@<(CuM)T9~bY3rg94e;@-I#=N)u4KIk-#YgRR3lYT}e%lQU3P2m`VfJ zrNt1b`U||`#&!tnH6mgRL=ylYj?E~vqc=uXsJ_pKLPnGVC?ruM+Igvc#g|P1vf3V8 zn$}A03yL%xc*{m{00e&OdCr5?AT_kD|P)=-(a&6 z^rMq&@VT^p;@pK7eVBy08ryED42v;K;*4nS^IuWuAU-Wh*{a4cEK$e)vtwxXPi~k| z5;L2Ago*P4WKboZ!j)W6w>qji9U~lWWZxpnKht!?eZpSjzlJq*5_C{_9M2EaJl4&j zv8iy)MRKUi?*-=`@HdHcY)a{*FDi4g>MN3* zSI99P)=v?aQb2eYc-oyn0xNnPvR_V^RSSj2uFqh>844z67 zbW3vP2_dEzrkPOoNvDjq!O5z%@}=VS;g%Qsb@F^nr+7lHVRHTL=N|lW8zNm!gi@3a zbcsv&nEIxBNC5nj7ZO(15NCLQEIPJBkanF;mcWxUgntS!jXEruu7~cpEtLGJlRiXz zh$O_&wwN0_zF*P2^UqQ6azx0H8c!d`gcai{P*00o=HQA2l94H0XGvH;@m|@GTY3&7y}}>a$%sL<|-(a?4qTTPRhow#!imG<@1@XUu&i8a+h( zf2&W~q(_^dF4?%GCu5qW%}Hg5L>3bIRd}=x<`{#xYh~hA75D|*NgZ}%?|Fvmv#L#f zj^iXd?Kn3tv>`%y03Ob(ujET}daAK&Bv-8&=?kzN6TS0H8Zy+EFh0LvX)dz;3o0x0 zaJ_Uy5(R02BUsqU#x8qR{ocAa5h0~+f{3j6O4LdP{)n`h|MY>2uN7|$;(V?Dv7dK8 znO^xviWWvyBrsMohV{&SI&SaY||IPq$$IX@Xw3FWg1E}y9}fR(BK z+EQ$z-MrADpHMeYr)_R;Ov$?yW7g1t=yJ`wOws~!5*Nbi-Iy8*CFDYO8AoN7x;5@Z zq&RnEM9nP{a==sNLg)*as7x=kPCKCpJx@@)C)}!SqjFq1TIHnLHm~-+jidG11|s{( z0JG_}yw;Z#<4|ATWcU>hPw4ORkhV>{nhast)_;m#u)SsN0Z+efuNLzgYW%{kWrG84 zimOA$Tpq9SV$S?Uuj?~yw!idhRu@5Z!>;>D)?nN8B;Bljd!nZ9xUc%yo9D|ZNblJ_ zHHoWzSi*6@%-(CIp1selH&E7pZxW}A{9}oVO~Pc8SQWrE@?2nE4|B&fmK?TtSA^Nn zGuWZ$di0D-@B33mDbXzQ!UyKrxWR$pJ%>k)RNi^`5MgpZt`=f?4(pr(mbSiMJ6Cj7 zIazcKHEJ+oArqc7oAI=TOe;42_^SKIcuD(lthXsCn7V>iI(Ki+e%+$W=+AkMn8aV> z)ne1FPC>Q~{7aTzg4{t;O~B4xhVG@eBdiU2-I1{`*!yB({h9^^%)*U0?9&+OU3)tH zi4XxU&$kGo1Uw8`TiGKA+~S-$k^kC^0{v|{Wx>y_6kTg>QBKcXp{`S4@2M~CT4cv- z%~%_gp_i&_@#g0a%1)ZmLn`@7+TbgO@IoS{>4Q#4&g8@^u;C)X-=`;mxCkBZ|49}2 zFF(%4#KQXjdbDi+-^yXO|C`F;T3wlFvj0%!^%YG&RgyTOq!lqUZh9c|gancX_jIkI*25Hs84SSW6)DORC39gMq34qU}`4 z-iq~DCyD-08L#i_Orf!HI*-!3?4iN%@t7+A!Qn$|bRP}_;>l{?h`4ok&uHMu@ALM( z>RE@&aj3PfFJh=IwAl<_P4Za7EZWugOvl3vw!y6(Iw zu&VFpZ7KaUp0N+10l;kfHq#zV`SrGHEec*FgNjsbYZ8KbQ;-XarvmeIFO_}D(t724 z_arzZGZnM}_|saVO8Fia!5x)D z`w_>I{YzOQ_v6nC4$8&4TOhutHCJl&gYWGFSZYOtHkHo~50wubY0l<}Tjn+g>E7ea zDBJdLO5m8P{STw!%E`Bs?RS!Ym# z^22TVc~5YIO9@(QkHPX=KsL>8j zKPddt8CXvj({Zy5UEGQgjSufcD&hT7PM#=BwhbV0;_a%b+)e?ATZg%yKISNUv&B03 z_OeFhGu~C!QJmr!eiYLeXEFwOelBStunyUU+4B(QP9b5QG6d(@Y};;(Id=d*=MbzlQ6)un$mjlIjM{N+{h3 zRiTwg!)~|O2AmD?@RfKZ#A7nj!K-6=*6@f#{1$Pi#eP_s+gn2PCV(S{`V}&7{DNx* ztUQt&XiGZ}#ryWU#vsg9(eHwzk#Lj>RbuItOVx>_4$9tVOF6p*XE0jFwi*62D0yx@ zL+La->Z#z&ylyuEqM(>FD ze4`i=S(a?%baLiP{mvN?E*KBC1&)HNBqpLGoNY}dgf}00A%o&sq7%lAx;n9BUnYXf zlrWRl@v(A#Vl94znXOCMz&yxr1<|F&k^N=iEYD&PM1gqYYL6dbOU&#Du-DrJVV|Rt za&F*}-Uz*Az*7gtG3~rC%|b`PeoF&RN+95z2mT{Awu+dnV!I3FEWXERiWzAEYVu0oWBo>oG@Cq{++b@$fl%ksLd*J4;8$FwDmxNh_e#r>0A=n<-hN?G$z zkwYr}@f9n|UoyP;LH!!(4#FG@kh!5s89YMHlphmQ`2X=%;>&7y)x!w5|4b z-8@4l6*au#tDXq85Rp}w=n5~jC%A3p5DkU}A$S(-glqJ0m4vB)2lE?7&`i5M2N^Rj z7v3W>5&#h8fn~xKOw3kJqsveb>|PAB-UlCw+^S_jnUrmbz(IWEM@1mNh(`)!Bb<(Z zHz?3kU{EX@Tio}WVh_NMkcpx_yqix}s;6y$*|Vj%)1z+qMbV6~5Hw$5FQ?;uI8jF> z^R(}olCYDDlA`_kXC)d~nK#QcLz1Wn8cIn5HZz6_k{sog9?R)5g(hNIrXe|%EMY{; zbOnK;O#eHQ6knk2O9t^F(iV)|wI~9y;V$Gu&;#%Y-AUY&9oRIEE>@t~jo(4-;xBt2 zLZ%=h=Y|ODs9&&7k)LW92ZjR>9Niu7FIz~-Ti3d&1oU`~M#>vTO(GvtNJqMhnXkA{ z_RG?Ut3g4EZ(%d5`9@leBMk}}HoMG*AjHZ5(sJ+E z_9@{yt7%~?t@TaKzNIvPxqDX)Ar+s9o*Obh9Jra@S`^x+sC2JMDA^cT+8lOk0>EOC z{&_cVML@vfk3mpd6}?3&Gq`+K^*bDrb~~q0%;unq$T(_XI+_XRZx3yRC(!Z%vARIj zqvHsFS5aoGq{62%5;d;-NPg8??|Y!I6n}h`P+faGKZn3+ji@mq`>_!n7N45@T0&|! z|DIY>q>?n5>2QkKK&slgR_l~nHTe}I?Py}87j?9p9(MLs%XMahJkzH5=?Yku@7a!K zaEIF`_iH6zpa^-E$QQ%%z`AfVsYk6ko#Bxa7n&xl43>ABpsXp~ii>MnLt zAIdtem09T@U^i4Z$yD~hZM41+tcS_V+1^rabUs#z#RlRqSWYB+{Ncv_6jo8XX_1s} z;5&1sVJB(m;(xR{8SZ(@;N?U%dc_>e(b=#g{*tZ;c*C&c*tcrpqOv>FcMGA0lP=q2 zKCE1?TorL_u^C=Ov4GdgFU#>$YzAlp?%C!Sts@6$=R4U-;eWsHKL<=?JVV}`z9ZSG z27%MUJ@`_FNNIvIo7$R*=iD{6qNX6nr$iV}4(f2mcit%n8{#q@ZR0F)j8$!UjzY>I z_)2slhGAKPxcO7?O@QvpTe;xkI%oHYvTBP$cz*V~3|c2cxnfBfxh*E{iDcfb55=mGlBRqUO)PT{Ij#dPge~D2Y<=$N|YDgQvJHr zIx|LmMbz~~a{>FJqYw^Ptc^Ffqe+Etb5OYkZ4hA0=fnwxVip>`@M=qtCgVe8W))RgYVz;4YzNkj@M3dL$VA3~~L7={`-NFEY zTm~8IclwVSo8Sy|yOGCPhB56-=TeX5X#ELox8Qi~PN$r5*c5cxS^}Ze=zp*V!O)~U zyHDjyHz~);pmNnM%}x?~Z9R(}0+d|qqe=u~Bvl_?f1_oFS(804#3h;K+&?F;QVsOR zA9=t^_3xUV1$EPrm)96_RAbaNDyc))I`@h}#!MCJcntZ#!oqO!I!cARsfELLl~O_(Ho4|R+hHL?`vulX9*azGq9 z2C58s72Xw=zr+f7nEwsnwk19U=6`U>gjas`BjnmfGtyn^TA&)=ixmJym3{jP8FI#+?~~8;JK@kugDM!MF943dio!~}ztN$4 z-+*W*fPiOSDNY3hwU4?O8;qVs{rkmfAMe3Ph@sdvE|?@ z>F}xr93}56Mmfl;FAOJW?`YNYUxXfMB9m@6bcb6aU6ln=W<;6Z@saQI^)+M@xu_dd zr=HeLFVy*YL(FX_+}n|;%m*jJV!;6_6PYw`0_ZA}9$s|Vw^ffsI*cmSSu~V?!r5`p z^yjz(=2XB+>0*DpmCq?%Hbj=qmibz#-bVb+W5|oWRDx3kWO&&06W1zjO`x0l=fPcM z-0k)JUk>EpR9*s~!LxppvC0`Rlhk{X{a3?%gt;_%;-~RbmS?=bc+BxrajyD1KYWz0 zQT-CG_yi&97FC)U(;}~ue3b(G3i}3e$n)Cdo`e`X$pFhndMGIh2|LN(l_ANm-}O2q za?=ZAU=y%VV;#f~YMnDU;U01jDgA^YE$d9i&whzl1}|LBOVgi4I7piLSN#pgu-H~- zl|^0#mvEYs=7ton9D{VpYPtElhM+(>3DWz+Dp5s|c0n+~6`d<3zTYnI^dNlvOhh>eF zqx>P3R(z}$oKog?vom(xKP&x4D6dUzq}6n$eZ0I5I1s%r{2xZ*|266U#~f$nPFKpG9pxUr;Gnj{&;%Uj~zba={MTu$9c30*ypPfB|bV!z} z860z1gQ2e%KZjdpE@Q8D|7a8_v)(tV*@^dVEKibc&}zx(fwqAdM;dp&&6_u!d`m$-=;j>J`a!Wg%4TQX)k6#UQ2f=Db#73nL-+Y(f-P zFzMD#lcyQi!|oV^ruKV*%%A zVwcC$0oSV4*&cJ-$o$D=%wMK#e%M1!v&*W&CRKo1%M{T1NI zm&Tk83!JW`2Xg^>yV6UiiWzkNU~{F8y;<$l(^8gNaWuH-ni3pe z;@Dv5!AZ2tXCM_omPz(%`Ed0}-qO<1$9ERrp=P@k+)4rV(?hF2jd=(>aA>|A?Ksu4 zAT1aTaSgOhcyrWJHT4o~gQ;pap1y~7i4gakcdD}~cGfmtkJm9`i)QtA@R8>&#+pq1 z*B$|v4YK^Eh{DhFKYUiPGzD%Q$jB zhAbqAOT$?`mf2y_H0m2{`TKWujAAV!rd9eWUVU_>7dJ`I&2yyGjcbNu+z)=xr1{q} zcRS#pbUhy1=|EK!5UXCG5q7X4Cd`(&4X~IagNAR}%=T+7IxWx&FJWHhV?L6IZtVbh zs33$UIl&+_PH!qy(Q${pPy6u$eo$t)~{MOfOSGYZS3> zf$1L5q+_9fe@%?270Y6Zg{W7^XRc0N&w0t~T4X)%D9du*w@+U){J*f!4< z-fGNs#lzy+o=yKWWbZ9BYXf-%!Ts>jYNg8}@h@s$fIgXRh+R#Y+IrSbVxGj|x^t4H z(3J$P(#zOZ-?bwp*E|*pW#0mw)A5x@6_Jpj+yN0VUQ&hEGFNzXYa_1QW!4vNQX85v z-_h+W_Q;ciZS99oP=I={*aDj6I$DLC)PFh@T6}D=1&ooE=TwgKHGh9^2^Y1|7ay(x zEg`hOUN+jwy=4N_`fS#%U04MaT0cDKby~h<*Ryt8Z2yJe{(JNCN~eRnOtg6$Oq2Fg zlf-=FIKbVnhy2&|co;IZ*R-%(R%=i7%BieJM%^cW$P@f@jI803vs>+~Duxt~9l9RdK4z|FphukEA(l65QJ zS|L?H<=uP5`Y(8%h+w6sSe)w1;?wU@-Df2~EvK2gT8)W23x8z{+cGc^?N19wzj&7n58Ci(&-bGo~{( zYzYoF19Co76W|k0@ymt9D0A6FcJn(`QmPsWCNK6l=;-aWt%35GA$eL%G(@(3dgSJ# zz|nbxsB&f>j5skf%iNNA>k^d}c-$VSPli={@BP3kGw?f&u-xu7T{gWa8nHYn$o<9F zrqRPAoPJO^ahTG;QeN86VtJ8RY;+Ap?S`$T-Vt@kv=GI9@W;6O%|l57+( zm8j*%;3?$c;fZArDa7^TZ2nE^(+lrfQ91%QDiay$En{Y8V8+ju?iLKoBgE+gQ72mP zLmc=D(kPfT zSejCLX?Je_D_@Ced>$j@wH$e;vARQJjIA}TOJTR_bpmTYkIk&VzaFJm;xaEAsAG)D zV`$*$UfE4-87akBM~d=txEoI!>E^4}V)$w@96K``gGr+wrY8Z|Hu<>vv;BxZB4sPhkTi<}LdXW~Hx( zgP{iJ*}Y{8L2G{B`LC|fIfly8BW#nl1?Rn&Cb5E*38OSIv0vSJ*-T2I2G8SllB-8X z2Qk7gfbWZpXExg`HS&V$yAq=(f*inRIfOrbSa>#r;4284=DBb09#(1ha@O-{RRTJ8 z(_l=|Wu)8QZ9IELjTv!tD6kco@a-PxNN5BAWOPH7Euhnv*4xRviPPYsb}kJjX`k>F zu^aAONzc~7%sEzp;YKk8Fl~4o*}AMmbd{aIOg7%Ikxf*Lci9Hp@Y-<~R6UuDfKBv{ zaLF@F5TjFl_BXgcIqg;t(e>cku|lWzdIi^H<-zn5%|nOuN{&{Y_i-S`-ROd{dpaVQ zb2HED9Q@MN;KyV7fmTOfus({2T01m)-k_)8&g$Ij4I7-qgm3L+7eYrby08L<+&js` z+6j)u12G$F%5KNDh8fKK0?}l2SXVRT65?>L4vtjUH&IQ}u>)HmM|Xbp*9jF1!W;Fd zW@K)x*<+(l-jSYkjF@H=x8!D&$2qah?M78`U$nD12f>bp@CP%r zmm5cD@>G@g^1B{3njd+Q>`0hTi668!`qarKtf$+;^WJFt3F29(Ye4!u<^}`#Vr|TT zsT4`335Giu)4Bu@9tcOa2wYk~a&~Y}s28D-T=+0T7o%v}Y|kx<4EHMOC!vFuPigAv zn^v}OLwPln?IwO8r`*P~8%xZM7@{4gnG13z>fR)9&@ZG*SDsj!S@;j#hG-e@jg7eU z^AExIr+$D$E(BU7%L_@4P3wxuX=%&3|4}=WEXbK({6G@E28!MPl}6XkYTq$Lc$KNt z!FtlfGt_v%ny~~w^EdI*RDOj@zCuxX1s9mM61RP|*^lAec&NF2n)|%o9Moy!w(32IlJIW~M#w35ReyfCj%AA}iI1jM*FH8-<#p;!yR3rsg3$rdib*1A7_&vfyG z7EZWaAqp|b!6t%B8Cvb^8ikHgqEVOlWqo%#jQ5gxuuw!py-mS#EN&|BHwry%nE5oK zOLE4td*GUIRSz5knr%v>&uF`0k0t4TLRtaipV%;sNAt4)+Jz z<%g@nQC{t|`LJKwH`;)`5gVBUQ6k;Y&tQUA!a&xg0L)HXbrV|e z!iGUfsA|xVQ9Hbb&s_-MyNMYEM3{p|c1QrvFulg(ed zDP?f+(6NUapCPQ^c$cJLik+|2^h8T!f*KC`Q~j~gXu1;ERo>dl0OA351r8TQO$v@z zO?Yfc<_3`i=EEXCdif`qo`*dwiQ$@N>iYO!@>|x{1cZt`uEMQcgaOGb1Agh>NXygq zzZP*>%shthQB-%0pqASMEf;viCStTk{Z=2!^@y#*a8#($#_=qk{(rJ1+*H-Oa?zwL zsE=8drEE^U5_v(-$~TubK~MTHm?3t(w{j~Ttc@EjDC|d*9S=$f1Gpg$i`gQ>HGeTq z=d2;RQ4tvLn z-?&(JSWg=jW96nI7m0Ltj_`kU9Uev~3{}}aC(ys>3B)}_819dQAZH^hEq$AP zp8-l>93>sf|fEXdNR;o=@zrZ~j%ODLSuzpPr=XG3Y$IdMa%V8eU%UBnn zF^EfU*0vehnc7;`7`cey9yY#43Q2dbuVpm;qmp#-n|ALfu`qFW2nHDW_-|doMk{v; zGs#X1DA*?Jubu{AuZF7dXcahk%SBxYeyIv@OJoH+1&~{&SbF~7kxF)Z)dl;n7E0!v7-l^zA9(@QZ(;LbM{O+n!^-4;jWM@ zars@3uGl_%cXB_%fFU@?Daq-EZ?37UcrIei^69JaBoLC&LOL-o%1g?OuW3on(madv ztW3=!a&Mx~#lMi%#$&o$%LwJwr=wg5Wx?LRfwgpFKu#x$+;`s_O6&@&?b#ZV&l)ZZ z!HsyI{=4CPk4^#?NJzi7P4F^S$CbL9?%i#VVd~J>e1_A5Jlw zK2h?mbw45LAd)b*r0%5EM_Q-N90ZAb;n`}RX4^_vLDXdXsF!9^UXyKP3oA&t-WCRg z=dW!-M)R;LvggomJ~|vX4tA|1*A-fEJ1!$FK5Oa%frvn?6~=SZdv9YkE(9(B0Ro3| z*pQh~`zNdF=^Pxq&>$gN?;E!7llX6IwbB9M-}O!_f=X6d=yMGo8I-QDVW8HtZ8zcz zmsBSxm-2H~q}*3lHrEZ^y?0Sr~fp|C5CC-yL%{ zw*R9Hi0!`#djE%n^MBKFf2<=HZQB9A-DjY5DdIpq?#OeF}FUVQpKS9pVuYJ1TW7i{L)gEo>6?Fqggg;en zUlM-L`E8gjBR1oG6n;JBU!;G_rX2K_cdxETHmm3A!9RxGpI<*vS6oi2Zrl3&zt6|M zFURJl{ImqFF8q&+B7Y^WZr_JT=ZP!n5cf?JO zYYC=RpXq2yD==S5UK#=BBfsH?5Pg|r&}zBhP|xIv6}~c75i^H&$*Ik+vu?9=Ia{&kEc1!P2(p}EY zs{4f;2Ho(KBZ%8=&Oh(ehGH6cYq)e&qN;w#u|oN`wkTcU@Kdy&PKe5r3K7BVy+0j@ zg2iJE6{E;+;{q#h4ed5;$hj$3?-P^|UvFPpDnD7@F{h9why@!o6)D$($29)^RCg?b z3hl6k_HHgg^s~iokA%652vS+bS+?@9{SuB^nu6&HFBLi1q<1#G`~u5u84nnQmzjD^ z`UsF;fwT3QwuXB51s6-yRAAa4o>{`+1ZK+X*_9Noajk1<)hB|0@th}P81_`bj!RJ; zWlqPiFAttFMs!xl*SE%278F7#+c;Nt+(j=hB%nO&mC`1AlN{eNYl0|41G_h^{A2Za z(L))$x#-{-;x!@exb(2KGyaV{b*kF+R)!6W>>+-C{kF?Ck-Ou`{(g0jaQm31Ea@$#c-jl3dZm)Je?t^CQZl|3^9?inf& z=G>Z5&Otq_Mxe&IOnT<|pMAT8#;#HrVKtMGS$eeLGbp%~ERpfMvEV7lzrW18Ulq-M zTZxYf3ULfJxZ0B&eMlBUnM(xUv-yJ+n3{c18agcsx&@yY2q>3z5rfBLady`Y2+b;RNu zJsFbw7o3_L>mcc;sB{1W;V2Sf?0;z}7kA_G+cj6b%uL$FG38IY8v95HaptbF@Gs{( z*LRx5Lg?I#9{!8jtwwT=zZV$1DD@nFZFuqXA})b{8XT6bBN~VwRrWZ;oz*aK3r{7* z_*1z>BPF*FM7w0@Up!Mn8eUR^xF`49aI{G#YtxJ{Wi7(@$Z&&eg(ZODERIIM7k$eA zAHv=#M%IAc*6rE0ZQHhO+qP!gwr$(CZQHi(-t*r%D{G%*CF`zIbz7+#&-V^+W3Zh4 z0bE?z+Dmo|gG4*H)Sd&P1gKhJb*Rkjk8q~?>yIy?a1l^6n$%HrM0qW&5fJ7%AzUsN zvdqZsffSZNgLZIo!42F?Q%aFzYQkIM)i1d*7KmgbN0$4{6)>q<47hBO&|#UbmbVuE zb(@d0{et;I5}?x1A?dNzY)Lo;T7F;2&FNLQ^1gfCpMGzh>~yD1j;-!jLJvA7D0&mx zr`=ehh>)L^VYve9qLVGRg|8SPE?iF`=LT*stcQMivh>4p(>`yg+_KHJx8U&3Ju{A} zJvIo768It(=m1E6!njG{NV&*|U!zhF3<{t6Zgt-OEzcx z-N5O~ixr5GF1*n!TW78nEpOvgsul{%6f)1HYVwpA4>|pX!2AQtlR-dYn%$9aD-O&J z7f~VgoxdwM)$_4I3(Q(rjaP&shIZ&zeZ}OiGNB=HaRmiXL`CGZem5O?|h51Tl?xZ4K83cK-a^Ki3`7uY9CnyO!&Rbepd?0BK7-*318 z&ST?dqI(h_4D-_4QWV}Kp^=*a-TDLN>1J~2SkqcBqH_l|!jR1CISm7zn3Ebo>@BiU5z2Trvu5g{P9G9m% zC+_L_w=VH);+TS&rGqOw(DyoqgV|Hb6tDtE;8hI={^%Q6EfjY0CVLLrpa-s0b?EcA z2m$P58Y&j4DsJR2>#?AO%->W5RU;6#HfeS&6|e?|Re(}93gK4~=2KCkEOK|RTI>Kz zQ=1y~dJF3n3?EFza4U(PN3fR6W0cIywgi_2^m&SEQ}Epbp))lrF*d-m*~x9IDcaCY z2+L)d-yIkAK2Wv{q?f>Di7nA*A>ozgb(b49-kndwmmMoR8Zz?GlLph}!QY(rJV0cD zcOPj0@XLQvJ!hk;63C8V}m zfjBRDibLh8stVHevKx0_+|sKg6ZL8^0@|VDHZal4cJCpGKyVe z;Gx@fE`qQOnGog5lr;DRUaum-Pj_n++PAQ{%EiLmAg#sVWH*;!2PX|GE)W(s2Heq( zrFEK~=|Ee!Wq90pm@*T0u3lvy2!0{ZK9c2US z-YNM$zTS1SW1;c%|Mt?2upoVVz0>(^MkoX4A1$6hzlHM1Nize$vS>2NDg~nly{$6~ajAwP54Cws-0FPC4vI zr=9*~P}BM)iB-$FX~4n*2G^!8E!P3-ab)+1G~VJF^FfmqCr0zQSflCE_R?IPY8-bQ zy0pK!x{R8|mX=gI@uc+5s505$ub&P#++ZFdGT*uj>l84O>b2)w-;{xFM6(39U+{H@+-Mf1$_w`{wlN^T}c(pG@4no__&bdycDx_+(%PBHNLzz)(_g>ztd7OEZ{&sOv}Lx zmn9fUrIQLuw2}R}U&ql)D#txq3BzJ@apVxcC!=qCVM-G8Y}FQk+>~)klMAWV zTVoz}Y@1~_!%%!yFk)FHCm+*a1*6^C74*I#f93o`c50>zFAka*@-^fY@8d`2^<57d z4@cw9z^FKk0j{W()oEWEmcyVn*#-9~4*V}VZ=iBuq5QU|hx#602pF)e8KEf2p_%@Q z7}~mqPZrF2n3A&ahAS-uvjy2oc+hiHup|b$hfpeZ3s{FEX8*FRjiVeGegENBKgn1%$?vY1#O^>{=NH<60S2nisHuC0fWL9z z6?Qbj3BbJPE6W=VX!|TZ1RS7wKxJn}UShLs_`)BQfCmy77#wb4r zL2pIA^^e!lZnL$RSVvjCK6;k+{q-23MP848c=#7@#GL zoGzsqA&z{1jq-+V-y??Lzi6NTaTRi2Eok!_?19H@B@XN!E-k|Zj2j9t?1sXQtpF^t zKrxW%EW?Wn>Ql`NkO1L`^J6BVV&*x;Bx~;t(&Z(D1lKn3%TXg!pK?&?kta6Sw0lkt z_>w0NpVIIX#U7}wMa|swEB%0U!=uq_lS7sQn`eGxl(ck0EQ#J@XsCcjH+c@LOgoHK zNhUh!{q3wM&@>N3$PmJ^5S&Zk5L;ZCO^yXyuQFbW|Ln@l?(lBG)QhKner4XQ z-`x?(dC1$A&UXc?wP{F4AfmWDsIlP_1kyjmQS$?G{z1&*;^Fs+jVm+Vh_SN?-r#lQ_gW_ zS4!FPga(-`h;<8Y}y{`_}5 zSd|7j)vhDXc~`$E^@AJ0Y@7TUQn?$75?75Qv{v&}`xL+nC1vcRqVfGw8bh9$0nLOU zs{t&^m*t}f4uXL#;Zm#-NjpAI+rghAc^H|zVVGRWJckAaVaOBecji?qcK4{%`aY9p zr!^Q(P^nQxJ7I=y)t#5<{m=9=)x~xm|0y|W*i(;%E>}reM~lpyls2EBA~eS?W&Kw? zW$&`hZNL!>0q7g|xw6brGB6HPkEFBPijE-(m`Q5{LbWzxw|{F!MI&WRUZ+k~t-yPD zTo;-~K|CQ8cq4T~USYllfK*cx@OAkHB^Yi1?p zZ7AMu%Uk**2nzT(Mg5ygQ4U?w8~jFVZ$cM8eAqA&>oyn2%2$a7nq%E*8<=a|x~)t1 z(M-wXh%Kfi-ip^3`6L^9z9QMpGzd`PQJLcO2jA~ zarem1<{V;%vhux-l7hc>A zSRBBBJuVk4L&e4vyCPkp@aR5;FwPeS5?NPrTNg9u{r+!mf>rdCL%V2y`3(M&@$o4x zs!2bdsI3EW87Xz{L{g3WO0D%g)}CC@l!(7d7JCY13uRoG%)2XSQ@8okd2YJmK`p#Q zm*sxmV(6CM7=x%Os}8%eIgj`WVqUma{cWt1<`dO&zKe z9(Bj~vn38(Xs`ryO&X|>T3xY-=v_F{%knmdNI7!K`u@_gin~TmD{lQ}VZt%Z@9?6| zXtfrO!)0G|Z8OpUbvEa^d5&&x?@rCiBuI0NsL=#nJME|;mO>>0ANAN)Lls*dB*$$J zmyd0v+r_3H5XiPkUR!SIpeB4do}cV6!~nsN+cT%7I*R~8Gl6i~HqB`D+Y8ROwhbQg z7`7&4a@`-hDjy`$zU)v$J-UTkaK1c(+iB+%pG7or_bVy^?;5O$QA<=zQz-A zASVn9!zO0?1vym?kBIitbn?Az;R(1rL#$v#zT5F=8a)myOf&^Df0~mEN?xbBulTzV zuYpm}RzY5^im%m#N|Lq`DOqn*Q1{D}_MCLjuYKVYJH`EL#yDFyT;K8$`QR~1(;M%@ zc^fyHz#6y^jiQ))UfGPB$k|;pRUk)C-l<7DBTHX$!@vV zXfKF5SJ_C69xY}SVCwPL%Ij;+Zvg|I!nSfXT&(0^ZQVgIGb1+J!6Phe3~F!_*mANi{VK58#^zXzI)#yqaT|A}wdOd03{u`0G-F>K@KeYg6ih3Eyik>~>N*)bGIb&Y%aV3yLr5%aW zGriU+2D8qKEscEB_GaO}dGLCfK4#;}wR@)2d+wl_O}>5cx<7vu%W>4iwMO+?@r2QB zap!dk{AY8#?3*`;-)Yfu(ny}J99WNs=;OS*@43s%nX_C2D8#MX zBGy?}hC_{=_>mJAtZvx&RE*Fchi8CJ4R7nhT0XcRpZ+E3QcfX;wGm zW}Ut5Px6@vOAQ5!Qr$DSAk%i%Y{1^VBvQPaB|pOSxGe;!2=$0^1MF=J$AmVGbfah@ z)?lSNJ=OsG`fW)Gb7C~1Q*YA-CykV;JLqaV>*}#gTM+9@ml<{w3;yS&^CE;o01#xy zyHo9Hxb8c5A|Sk7U91o)Om#zEIgpLhnM*(p1(TFZ;cULQ7-PW3LL6^HeL2V{hdAch z;T7qbb8&Q9`WZp*RwZ)#_z**j{Jv$Tysevl4`&InfYaQejKm@pa{$9Sd8pbJ9@uV( ze_MUWyMQb&O3MLPFJdyYYsA*;W%KMAv&KKvC16BZsdml#k$Y{t>=0#}Dk#=GYQ=(nm4+B!Ki7I@$Pj#RI}ZdJe)Hh4jSt*ThYx&5;ZLmS|?PDGacsCMlIJO5&SL> zLMVh9k2@Tt@g-ysX3Gs4m})}F`y4lH6w%(ZAB~wlL18BUwa=KuYd=!St*T|kwy@Of z)dq0>iW-s*Lf@lDy3T_EzaI|!gjdU^(MKBkYOF=60!?Q{Vm~ra;7S}mw5_Q+_CFJV z0)Q=^8VYO22&|=AeVEzjElh6wzcre=pC|dv^4o=zX=uTpE4+yv83|?m7|lBrn^t?N z{swr25@#ME4G%cmEoDpQO))+0dr84W@fsj(z(|_`Bj_5R4moJwkQ3qu^-jB4R1FT6 z1>&{{b5p=5Zej&5M@)=;(t`l;F?0kHcMdg?3&9suVk>;Y{a}8Ac=K`TwmW{~3F7%f zbVr$7bEf%jrr09Z{3@%ubk^eWBz$c_U>4`{dwl>5ungA8BYk5+WPsUG>9EbMOz-}; zj^@LcK>2bjL6!Zt7ZfX?5fYB$vGSBL?A&D(FKEpbrBRPd!j#uk_t85$S)d*$Uso*H z4pID?-DTKGY1SI7Hiu=(A*irN;lrds$}q&hri5?BD{JLJ|2us`8R;8chJ zcYBhzRCiS~5@Od;V(C!a%H?xan!5h%5&@bxr{`>sYliPqJS(iw~727yc>3UJg{@lmCksz8)?V zSrPfQewyTU^eFL~xnNGVw6~Wp&4jq5`)?4*h8ha%Z5;1-PsElDqH$`QMZ+cv4&`QM z?aFjdM-!R_f3TgG&Vqq)JK9c|b)faE3Q zHUSZO&qedd$A#;5On4=b^RhJ{+cAM158a@UNI6Bjsj=#BEM<|Ac8l;I_}^mHoN|YS zANq>>pjbftQgZ<83IXCaR{#M-*qz>_r^V2c!RF*J(A1MS3Fi!z9AfO8Q@?Fdb}{BB z(<(~t%`%n*V%t9?(s^O$alNE~6}5n9WaH!Ktg_)Hm;2&(hdR`u=9bGl{e~!mINYi- zFAsU()n=UTB|}>3l=X4Gr=2EcK(3BcY3X(0FBE$d+KX1$Ct>APJHVv`l@p6UJtU{x z5N?|W*r#6W0NCSGM6>Y~bxQb_y#Ca|{0xS$ZI@DiQ{F7Aa*>R(S2KGHXE;Ne{q=r^ z+;aToi3*8cMUlP5HDKL^SByz0Po&xy)drD}7-apDBN(LCDuM}6LBrL_x>gk=yb#vg z=>$TiL#eRv(v>QKQRAxp9Zf9-Gf6mEB~4ix@bie>m?4K*5EPz?{KG^P+I`&Tk@Y??4ju#>pbF~YjWm$;i zMv)Y5es+V|cuH~zuLMfwd^|*AiDv9Az?rwv$l{SlF}8p8=BzQqZ{iR~sLe}iU+-!H zzD!&{@`GgtipMh)X_^W7 zPF%i=^Tun=6bZP>-ITB`r%}HcNbz0FW$gj+Pc3TA!-@qC0P{1_p)J`_8@<|s$e{=A zQa{THW{bmmGJWYy##yjp`_mN`#tmjPEtNfRJ1&uOK3I!ffD6L;f`X%f}4#ZScTV z1Ogd~^^s&~z*PcngHkv5y(%TT1U$_*5S)cDZT+j-zJMDL7Q~uOLzqqmP+u8-YR-CnX%cS=gHG_`rx0 zr#DPZwUkd}w?kKpn7S;RU$v$0Td%SsUWPJP^apkf${J>_e1x*RS@3`QS+mbYl^1BQ z$L=P&JwC@TvAXXQ+d@So3O(Q4fI7L%Cf9U7%{;p()6-u=-p^Ic7TJa1wTfD$ND#@| zxx^UmTp@nw+8epYw_4}8sZ2>Q80VG^r{i8Ln7;9SLceii=!C@YH~qE`#&llM__HLH z@D@{qF9E?3#EW9rH9Nw<=})WJTBq1sE3$gK7#ev<qS)=Bcentbal$C(?~;Yk&AAYyO9qPYsvae z3!{EZRpRJO!JGeaO89<6{jrc6tcW4>cMfZ$Q;Q4B0fO)QNLDuMn**>p0_~PR3e|(Z zqYDOR%USXUQG=)NS^rCqD@@rv-jAYsL(?tai(0PuwVeHW|N7_bk|;oJEQXFOt<@;`C?ebbH_m+!>fgeKDc%Wanv%-4@*$$B`^ls zkox_pAVE@2oZNA}U3ceU?OIv9prj(lLs`o{xj1Y0%M+d$=DV&x`*9S_9l9vz%lCcG zR{DE%d+_hoH!>Pf-S^LE+f3&!qn z>$#GfcVA^EyIZYw`_#poA?=LzZmZk;>ht!;Br2biL!Xw{xSFPegI3p2u~gU0VAxxE zh}t%fO1TpXcQx;FpUKO?(lbvPGX>tn*yi^~%^?>WULI{Md~f18EM9NoJ!tL@h?*V! z`@V&ZVIfn{`XRK82PpSE*2fV0G_w`OWSza3HaRsHFGdPZtwJm_c?`~VlTHhJvt_#> zai*@lfk_{`Rc38090-w{P6@y)Yzb{Ky7WnLA3HmWTj#qq-B(K*5;TBXFlWJ|g%^Et z&(HDat6l7ED<0^Zdhtw1Kit&ur`{FL=6Y@x4AS1h4`ePGvDda<(=-rSN-Kb?(+(>MLC+4l%U)2Z6yLR-H*-4)ZpmbbAUZng{}T5JsrTVbNV%%OD@RY=YLUgJh7 zpw*gK#7r$W$u9266|ByY`a>hmVgG zAefnH)!QH(irfn)m=R*_%*6H1>#OL-c}x5JIE3f=lSfP%%OjSX0FW^q=&d@PsL;P$&)*X$R@UFn})uMikv^jG^ zdkm&?r#dsOWpmiuwp%g!%2Zs4s9cD>o5t=7RGUdMx?2$;7Q1KQFea!%4Es|jW`9^#+la3syx<7*^e2h5h> z56t#pdZ=uj8?qj)NOv*zl-@--LXN*8s%-8pur(?u+w?0*$p&WhIw2ui!t6J=QDCY= zSSC{IX)e)t@R3E4Ltu4vHJ$Xrp%A8q_4>1oD>Jzwy3;94A+vR@DgEg+?EbgPFKXK~ zgu%_y0IZ=t_vr?sMOJ-sVCd+8QH%GhZw&!50sizz(0R<_n*%0k#h-k4V3XIGqy1>62!=DCDTiKe8>83FU#yNs}bKop~HTYs1|bQs1za&t8^TNtjTXczI6^g{7fdefkh;cH;&$kQYRFK(jf^DneJ}=p^UBUh11X7ow5=iUdSm5NI(lbVN{_#~KmhYYvrm^U0YI|T zJ0x{=GJ>9NaO6d%lC*$Z64(zw!VV6q1M?AS0XTQ7`;!G(t%ATjZ*E>kg)kGzf z_)ikc=>L2AwP2^rJNA{690pG--mBnB7f|CS>IXhO@1qlNW0E%950WphqCy6ZZQE13 z$f~}^J{7?v&HbHfLBbkf*EU1Lj&=xi{{fy2*4zb6}R6h zlRk?f8l0nHA?G9&o_R_A^i1?)^D@vgEd~moGg!1Z(?(=~g2I?a>@X>D%uyDdqM#yV znq%(@tc;_c_wcM6&crH(rv-xzTIN`f1G-}5GhVJdirdBQoo1CMMg!kf=wBJGilS^- zkS_x)2q_a3WHJTfW5ekqL*nbjEy!g&9e(y3?XRElOjCu@4c*>dyMP0m2&}&u7N{h4 zv?|H5JOc_k)zkORFVA9SqoOZFG4r>>rGSpzxsE~qZ3kth>gwO#IIWpjVbZ@&__rN} zH%YM3tthb6yFQn^sk8ttwZ4FQD%Z0S5~`-f(>W`sLR!(TVinG4{RBm*TpT7a+&ex! z#uu@AV)ONC*p)lI`Oft;+Du3V|p7P*T_o@=)xh`St&>f%z8OJ_70u>-}voc&_)x+l?o2)55A zW1Sl8L@+8<6}dT<4cT#LpH?^>lPR#_dK8Oychpv>z4blrmIB+%uh+Tb({e97(i>kD zq6lf|+D`V^vtzRO@tUlt2Xyysbv!7uwPQ|p_t7J)Ch|Mk+))iYs?2z@>x;-`n5nwu z`SQ^o2Gt!{5KA&ag07G`9fq~Pgpdptz6v-PXKgEXT$U@eC7!#y)INZhh2xio=+dmQ zWw5Yme5e-5Rtg2fiF|ci|CMwmJ0O)Y9++Dg&tZBiustr?bwU=nJZg~RV-xdTWhAhm z9rQP&sc_)`=)?qDXzr-&yeUPL2b=48kP@KHOU%fnM29DU(C5UwpNs!3B~Z9al7F`{ z{yjnZ$cgIOh*bG|sMMq+|C(y)b_EI9Y;C%c?L?!NO+x`Y-oH^anFTe&8hC_%dSS!c zMZC>Dq98a0)dJP=G$p}8l)%+}hnEpb@AkxGD-gBhDRAlRjJj z+1R8a7Fv|Ky514L?PwDyemQ;2Ku9hcBGlrMLgfe~jp<8gWyyo*pc$WW5Sf)_ zo}9=DXzkYbSa6w9!mU~SN)bC|qHY#_A%j&U0^wobxr!824B;{>J**pRR8#8k?~iX_ zodKT9k^OxAgSw2s9}Vn`J#-IsVx{bZr5(EpTH#bz0)7VA#L783w)%wq@d$U{XY>U3q-?^&@)H7H+u?7(^k>RtJGPx_;ZBz4jBNJ^tsLbzBmzTO0zNf<5rS(6z5cP->$Rr=NP4eLhc5FJL= zY9T*R))Q*CqEZ$Nzj>eZH@i06v%S>^qeKZK9kZXFBMEbotvHi7&e_PQ%riXt2Xu}opHfZ6XK>|*v<7@nwsa6w%A%a=%O#6pj(8M9g(7&D4X zrO?^Cdoh^c$cv6kml^9h_YW?f?i!4KV%=oafdqCt+hq3rRIkV9N#RZbQ`3>&>KeE$ zFT-h6ivY_9%5zNIVeE9##8TD;JzuXtnqLgOr_kN*@WoE<$;H@G@ok--&)rf!*~ECk z`bNDPR$G4Ti{N9?0t^nQMqO}&9H0?Rfn?I&DUGk4 zzxX5}PIBRxrJs1!z`k)??LztQtD(V#R|;nvUyHvJ5V5sm9vc#{xEigR*^0zfm0q?e zgCW!9xlXsxDN1=4rTVvPr7#K8Vx*1KaT{w2F9)@}q#KI=OSl=u3jjY8B2gw{1)kLL7 z&=yLi*b}DcVB;8eA@`PuSitvcCHwdhvusQfYzj5cZwpJunJAzNH-u`JHdvz!9$R5)_?zBnt=caa_fDvSk^Iq@8 zOIA*(a5`@>a}`ookG-~aF0WADRYS|Yrk3UF{yJ^SZh1?EIH{7=jr`00{nome>+|=+ z^@sN7^^i}u$GZpJ^M&kGxohvSwshBLEHSQhwpXvG{qmGg?k)5r#`**%KBmtA!K?vjv6*D()hx8`k>qp?mkSqc(ZH{595SQ z>t(g~Xu8%D*vggAHFvRNw3gDb`kW3AcQlyzS#QPMXX8d(uz3}cbCJmk z%TzeCZ zP-DN4y$~I11I^inh(CT^Nydv@GKp+dP{k0{?&iW8ps?~hgbx|eB9q{{k z00Kr=-HrX-K32$nu}sA3YwtBHg;z4KOmO7_d)|sQlVZ08Sp_F zIVwh#tlLL$!$?g~dqq8$T%{kD8g2AUa4_7OKQ!vBkKCVqY#hqvV7`gU`Hpvx=!9wi ziBX@OYx_j?)}&e*u`k3&lA6%y{l#by&qH>j$3vDL`ef)himShb?r2Cc)?-?PMMny0ZMZMTjCA5+^xrLS?Vpy=tkw)y(8TR0 zges~D&f!GBpATAlt_4aIdm=xwbSKTmJ*K8l0rs7M#2K}5>pn;hAtJSAkKntCWl;f& zM^|1N?_+r$m^I4D)dniiAEy!=UNbBDlpgCh$I&CSPf&)BCB zACuXL6iSDPDLf3yF+?uFJS~LG zW?SM#m%FjP7Ka%Mx8PC#t-16}MsO>=4U!1VCl(uEX#7G#JYFSl3*XXW8pg@1!$;P# zSH|Ro*k=T~g*L2FiO5NK%j{_EbV@MbLDt}su6XbQEoa9uV^W1J1k{=dMqdkA7s0Y!M3855ggO`mkG{Pil)7)c zVV-amw2Gh?lDHOP$Xa9$(TAZM=$c=an)am7cKTwpHHGoCj3zUg^gG|KDBwnYyFTC~ z`fMlYoF_+^j;e{x@~xxK*ebY{KjQka+^djXLRvuWK%2BOEKA$IUyBMF{)ZSHG@su@ zgDNu*_#A`@9#FSm76U<12-f=CKavn_9EJ;BYNNmqzZog6wjI@O}>tu^kYUYHYrHWC)ebdx) zevsR&Ef?5$@Y2E+k6CQ30EO4Fl{qYM$rTzE-tLqV9BXDQgSq2q!v_E{J@;#rQw%nD z+2-bwREVY?3nW!c0w=KR+{k_m;o?P88x2pH%QC?wz>M19Ax1IRtq9 zjdY<~wLHUJq{0I1)hpYbJxHM66F*wro_a*Wy^mt>nd`rj&}yXM=>;HAYPI{fZT4TAW7!~q5l~a8OE;Da6iXDDEEJZe+sDL08<9Sp6-UhJ z3uVT-C@vG|e^S^Mq?u%BEZ@JanBP@~t~3GR^+lkNszen1tvak6j6|n z4fcuxO7Lvg?}R2cANzqMdzvsh{K|UgdY;N|D)EFc#@!r??q(wQY~Gkr4r0i;^Gz;n8wGxp#Y3# zcqa|IH*Kk$dWKvkbk{QS!oqP$?(*(70ba7hY60PrJ;=Kbq3q{b)=VP|d!_kNP3*UI zQRK!yaamH0Xjy#M#xG_$6kL={yHO=K*xW4R(llk#C=QmhS@2%u)1?;sGkp5jlEeFW zNK%ITp)c6kUTB_#Bhns)M1WqF9Nz4d!w2i)9n;5UlQ#@SZ=$Zb=(zT)0W6<$c?p)E z8Hg-NfmnYNHta$i`BZ9TuO{(mo#;6P9%Fm7NWC)gG5lzfLuZV{+HX~>>sGTxSP!$$oZ;;^NCwXaD-=0nG?p3AMevl@Z{y6MmspI%(MpW!O;xQ6 zN$80zoKtXe#ylj5@%KzgOhD$z9c74QjM4GfzR0=XSpkB^>6Izg0tpLbQZf^W0p}I- zxze`DMp99&HUqPR)-0c{r1q@1bjuCZxw25CC}bRpu1FdXcPGG<%cG}uIZluRZlEY7 zPxG`ymL(b%9AuO2!rchPabW#~D-8u_Pdr`wFX^L*N18GsK2<(WEk2ibk;uuC;pl{qnYKN@FiKer*itshRY3S)I@dH+4W7&l5T5LtWBRW zruGeo4qx;Mf~)kfI$fP)V~t%=p=9#Jc)SAyFjoN3G#mb=3;B#=%mAcYMQ5-V3eeS{ zKMRUJj7Xs+AqVBPHIeaRmo;iUC-!aXSojt7#YRhAdfh5CN~kk4hO;x{3>Lz3Ea!Zd z3)wKe#FdPQ%kva)vat<^R}(cM@8G*yN>1b?ZkEmpz^58o)uQp#74h#}{r)1dM$ZcI zqU933tjXjJ80z*34FR?#RKuV|*CV zvsP#|bIwz?N>jVhBIP2Q_TdoCkgoxhe&Lt++?ob+UFH~vR5PLW{s_g#$kj}A)rN_c zZ>pIMlgHbKpsL4-Hx1V8^~1yG@zL@WVM9RLO28IdMgZL!)8hGOcGwOa_ffRcy(~j4 zf)kCO8h4?Tz-{8i#%as4fJOk;kXUwvsaAAJ)+OdnIO&)=uARrZ)U-S6C)!4?&Nxl` zs08l)-MZ0uRt0Io%0Ykz)j3wCKdUYvD7pacIRlqD$9uh#l_*W54%COYkvIi%)y4VB&QJo&lXdKR+$iu-j-Q@6~4;(AwB_?XrH}ymz(k# zc(9kAX*#bo&joqMS$$^|-vA3|I$e*jA5d$P1v^QPzuiG*9C)CtsH9$VIsFe+DG=`p zUVnIk1gE+$T*H(nYzI2rypSANW)uao^#Gr^SmCs}(Z}Umt!F46TMrQZg<#7I)1%wI zd3i><7G{u?4cO!f@%4ub36RVoH-MvxF0^4WyJFO+Lz>gcNWGJ~12!m^5BIec2s)0m+jTyuTx9i`A-7vfsLJD0@Xkfp%~+fjA_ivn@LilAg;V z)fTBih(ZEBC_`TDkL!$J+meDuyW#*4b%O&N6O-fh*Vv>!PJ71#@8yRY3hg8_{e$G; zOka0WPAA10_9l+}nee@49CgH__TfwgygR@no&@xCtu_rv0#BuvN4g zilB-=1xj4RiF?P}O^h*J-1H@NYJOiVKk2Yv!vLsx4j$l*|8mzfkw_DhQkO-tmT4Ih z-8jC(m#sHre4KS-kJT?&lwoYwc!3Zo_hLypE#SjL(Xa(V_JNx)@a#v0+f73EG(SLw zqi^4F5_FCo%U>n7%?OHZXgXUrTJF7?Jz|8*uBE?#3pasY{{s{MU)252{q6m*v)9+ed5WL5eJ-^TYf{Q027H{vjzCD?5clR~9v3ob7JXs;R+b(P`2Ham?skgpg zFJC{`rv~H3cD7~`mw2kX-T@|GjbGZRBe~Oqnr}--zc^dOXQ2|V-8@abpKx!g_IJMC zqdm#D4X=;StOJ&HJsxLYk6cwDtGBy2I}G-tUld)tH$ASx?DBO#rk4oLyoMZke`D1y z^@mqIDp&Jv1$cB5Ludx1bU#(fy#{h0YV&_O-XBn!hdt}=F7zjB?F*`VvgI`RT;3}7 zS(+!k+`2yOeNV7NRd}Z)1B;C)dyhX`sCFNvzNynZ>EB6SW~JR5x1n6hnr=M(s`q1* zsP$Ab&v&bDSB#KhP#~5(%{V5725u?sqD95gmF*&g9U7s*i4k$Q`u3nI@Q6KPQ2vcIl_9F1=kcHO z?NU-!-WSLhuAufd3!D-Z4m&sKK@@ z+qP}nwr$(CZCBm0ZQHhOyXux*bHASGd2b>*qJQVljEp!d&)#dxQKz085ua;j@Tj5n z28(93YHJ8w!9-KZXyptn+l8Y~c2%!f?ogHH{%Aml&jHFHNO zKPzPQydNmAK_jf>+q{~j$w7r1&MFK-yJy*S75l2KXr{n)ZQn2BANOFD8b7;$Lc?5o zbe&SN_cm5|t$p}6p_ZhbN?%%^|CWzl-&euh=ZmA^J_PC3VAnt(c;M$~T(h&=!}myX z?{dwqtLfOVO|>P32^(b0Xj4e%mqGB~FL*E?b1*OUbFnL#xT!N5wTYRDR(*0%EndZHxB zzTB9x%tXPFUC%#V(0E0auVQ%cA*tg)3-P@^me-@h8+0~?^~m4k%HQyC6u|iK z?TFk_h7_U9BYU_T5xUn(Q^StM+9ZL(OBON;vuXL_>0z%#Qel^vQwnS!WS9f$1i}mb zt@Jvw(W7eE8p}eA#K-XR6zq^C`sm}fog|J!5+~U&E??@9g#d%moRt@Qv8;P*)@m78 z#|&;}{NwLnaEPO@V4#;tF$I!LkXkJw6&Q(2lBudDG3ZrgDIM)!yG8Ssc?+TnFAmUw z9KEDn+W{Uey;E@*R?cj2M+o~=ccv(1}m!HV_9>qW^MPQE7A~nJ9y^RpF176m7aI_Q#ug z=C2QBLclmKhU%g;^GYC5F;tHQ`BUL_fu2_5#|K6zZ$cD z>u-eJ(_BpFzh$GQKIN3su2OEz{im(UYQJjAetC|L=}=&ial~8HTzc!3&Mk~cKy$B# zQ*<+6I)nhy5*5ia{Psk>{-w3^=yO}myqTtg>Vitty)BF$27|di_~?7*!>U@~HIe?6 z*SzAl{MP?8jmrb;T_eE5zh?wHwJ%?cR(HVGBsBd87rkj7P7cHbTVMb)SGcX8DA6JDKw}*=laxD!m}X zc$>4&qR%c_vZLb3p)*@-%#I@K**Q?fVBP>ygR3rOn)B=zqlv&p*H=6289E)RC18b>AO6?QDSB2s#*#%J3PHrv?lkl=T4=R$BN?wL}M#wSY%;#DLW+o$? zq-0*EiYARx3+0xySfO0@u3r+5VrWw=t|YMES7Vf5v$!WaBF8|suVOi75|L%%D+8v~ zi_kV`nvQKM{AtNI)Z$(KQxDc;Jpn#2H!(*kRW)oLGl3IX$ibMWU4po- zNoeV+BJusJ-g^So+>ab-z9Z~$wP~^e154d=%N@F>vT?ch@&)1p!`>>eoEbul8Fi&P z#!MxU;yWZ9a=QZk#xMywJ?y8E_2->pp^;Da6L1ZB3Xwe+vCNSU5lgksWeR!FO*Qv3MGyaTJm6LrX z#Eu%k0L3qTm(5uMg-$}@v?y)zxqbFuwa+)9M73z4jv?yC|+IM&@8%*^<_2F<|<- zH>jXuha_57C+7Xns1HkDWl4?et}lEt6%B#s>Ca@w6i%R{_S9D}mAc$232h<7>SA!U zQsPSYERb!rcsG$&#+CM~fVyiybzZ^fV$a`TGA4Pc>sj{elOEwdt@?SKj$u#Ok=0f7 z)SdFQdp!$yV-+tqB5}A*603nkko%O>vXei3HIJOiFM+cqB%ssvX&dPjsV@jNHeg3E z6U;DIlmU5!@^Ogkvk&yt3Zr+c!8~o8@I`Fra$B}-dd*&{!Svyj8omF1m^Dh$L>uC< zsRfG`%JP}ErZR(BC9XsL^h9(JM*z2)a7CWO?vf^9TLXg|P~TX^(wS7Zp5+7eUq3?D zb%ygtbo91zS2$RZ;xnr>7pjUowIP91#JzC^7h!>K^C^bPOQNC)FxeyF>@ul+uz+0z zcVCDb=T?iKWwaf$S~3bVZsFAznbdJ44=~}k+KR7+yu-(|Q{-odt6c|`WiI~ntJa=T zV-!>%_fg;r(&e_tFLTX2VCT7GR4WdBDzD$xX6?;DEzZbg@C4t31=j;dz`wOXJEof6 zFP|A4<#smFI84G`bEm4Oy3l7YFd99^OleG$<{Rcuz%rXV%(2TE|C=A5*QM=!m{OE9 z2w@-L=!h=iG|B18y9;~blPWP9Iz@>u#v$?SBH~CrjKdAhaYQ23S;K;K0J57 zAM98)XcnGskXrcnSzQ^~GEjlbw+jO|y@D5_Xt+!k%ju~?+KPQUGfO-FY#Lr{zxNGcCmcEif&Ik-uF&d4;HJIqKv()XW(zxgKyZ*lIJWJ71*lwyc?ysTdpiBGt0 zO*oW}v^AxvqJ3&+uuJ)0KVLLc#cCqRrliE>@M6DiI*;)4QC$);ZOs6ym`FL9QseY9 zN}9gMd(pxxW|jDVAt}9JR9-rIYB zkzpDm*sV^&Hk*dRWp18S8Zz9qB!m%Z!qsq5-<5Ep%Nlj$UDs> zZA|;{j&qy>_95lW6X;#1vkwol6_JF(Z0O=(RVi>ys=QLUg!|GPOqT(Q*gg)D%T zwe}=`*CptbWCVGDxMPN8sx_vjGzH+}*u~wT-mU$U0%NJK7a!JC+SSdzH~`0J7{K&0 zXlN7IopJeJuiZ+`rp?1LJ~M_EKq@9ePeYQB$&dZB5KmQg{|;$Rz_Syh9Sy9HJ0*Ui zYhq3Cx6X4tXyN}R!eu55-Db!q1MB_>;xn!f;x%N)(&X@oGRuh86PbJP5xMDeW>Is7 z%7y8`@gHp%p9!$M-s&L-%ii}3%380h5p}QyGCm&iiQ(zXHEUs zi@ui@A?KjaKu4n5gmm-yF{_L^%FKqKga8R#oTM z-AP~iP2-6^U5C1Jq*_nu6n>ws-_OsX)OZl7MZe{8yetli7=+|(Zb%|Fuq z{-kF|z8l?pI%cN@r>ZA(K7cQ&1HK`%Xy z!u4TppKEP3rLJR3AvD_k%AgMu!%9oiw$cr+W3S=cz|&UOj76AwFlaG@XQT@jr6mBy z_51dI2lGgolXwIk9p7&TG_Wku1szd~MTF5zY!y9dWuRD(BE+6vfqQI<>ZqyKu`S&= zYS;#7p!IBCRA!~Hfi|M;b}b?lic0TSW`wh|+-<#XR5!OkH@M&5)I)lz)`3|Ee0d^l zL&I$pf)sNy3su3N%r*pVSO-Ga-85-O!?s6#>bU8a$tE@gOmsW87<8bft~U?HKMXa; zaz>u<)2rp^UteOFKj!p~Sh-}S0q_W0M=&3rh5HjF491e1bRZr`O%!$|wE%7@@6!TQ zgi7~ah&{@O`QpjofjSnF57M4OR#5&C31@13#S@u-LZp+$b}iAY3@!!Ivz_R`6=99K zPc(^|VX%Lr(4=UwHe+VEgQbKh!llZ^bUj?UsoJuRmX7!`P6eDh5&P;82klwR zzU5P&6WgPXdP!x{=R7522hbNN{;=XZRQU3?17-ih~IU%#j{ow^xY5;zCHEVK;7! zk&?WSNvWOW{!I4f&AHz9lZ_diST!SygqJAm1z;?S6H&|#;=#bPkTXT>6D3%#YSS!O z@$5#H*8C`%OHJUbTsz2Nxa^|h(J zSNT$P?b{KS^QTq`b7^H3_kmIRJd`pEN;ZE$>{Kf%)yrPzL>6zcRDcE-yqEWdDOf52 z<&^zF<#8TCrGLs&Ey8^IePdkQqm}O@>A;gG`X%Pf2D>Vg-hL(BwF#w^z+{j}J4ZxD z26!Gh3Ed%Koz0VEG-XTMc)S$RP=enjN1xm8T&6#Is>Il3iNxup!}VUb1@9tDwu`lWwZ`x9nk?Y zDpnJh7(|Ec&76Bg5=GEkek=mz{ro8q$jj*?8Oxx|3Am?lGL&IpWf)F7tBT&dqeddd z%J5WzdI>|*xio%Rl&rh5D3`p|RthjqZ zEWSli!J(oJYAo)hiu%I?jelRn6l(t3u&SvmDMnARKt*Re8tFb^oX)s^xJ*8jR=%@I zMJzVV;Yf05#8Y}K1qsU08yISoN^E&xNG zKZA__Z$#T={mf;BCC~IIB^s<0(MT^{Slc?eC}V*aUIc^DT)SGx{#Y|D7N&)l)Ea-5 zM5F}WVS@@1>KpCjHrE9PqRT+BtFCdQvrXH*P0CDvY~|r;!|CD^ZR#MfnOl z9bviAg*B3ry>^E~(m+ej%3spIxGtDWmpV}2J$5MCJ@k#B<8lOg4JPx$2Q`X_*d}rK za)w||vU2i_u|A3w3&$FLE}Q8JJP4t4;FK!;1O+l@1f_6Q+MyvoL>?}gL8H!-KkOb) zWRW|J@wbr}S1uH3cYmC~)!9N|Dlj$7|BBJ8*lU@sAOk2;!ePbV52cE@Rv*X5?{&&W z#3S(*-3xdtPnefebg~)U4Yui8RapVDXE}0NT_KtVHi>b2EWSvLEfT_jX=qWOSVEF`ia!W=YXbq zw_(|x_?r~tEsxj>X*LAenJkX}?btT{*D=l;x-xECwb;o_&f(TqLkhCT(zkd{k92n3 zOU&J4lx+QWz#KSnmSUXThWxg7B5V5{&ntF@(gW-W(`&^CPoS2lkr{8j@brRK5Y(}K z|8Q{Sm4Cb-ndzbxe3v#@;O}j7e}i@R`F%4wnDw7YC(z1X=)ZCMB#=XJ-p<^b| z<1*zKWT^G2PLtG@`quly$F8$aMh` z@Ymc;rWdKtoDEjK$J^s;rilXW1$?_)m>I-%I6T+~c_g@Xjkr2)e)c%+UCT)s%Fv4f z8J(>*Vr7iC7^-&IEIF{Fohj=7|OWYKF&-oRj$&_f`10doNIeZls{R z$a@lY1>i5+w$40o0piap9n$5(M>Iu6_h<@Aa(Rq(6>QUU{`6^0=T+B7k~;q(rL;#e z`^XL-4$+VY!-deTT|UZ&_yTLMR!?<+r#-5b+`ji$AVdgvj2z;%Y7*LgT?-#fwh!-i zSoog!l~4Z#z8g^s`Jax?|J@E`V&`D^&-4H446^;Vb@Tr^I{zom`M(~WbtI$zxqy1- z>du=AHno^ZDWEQAs`%bs4En*3ve54b_TB&PwFyNf5H*{a#b*W9(kfGi_OACr#ComS z|9-#Zu|JnCa^rt@`9jO}jr~&r{k)vB=x9=N#zTo|uQC{B}s_0ULPbPb~8shND8+APRiGn{f zz zvcK%>Xb;@^!uzR}WRe(*Y@5NsK@Ta2z0G#YO}o{(f7#j;r?323lPetUMHro*AGd*#T%+ zi?=zf$F4WkT4S~TY7u}7OHz{h1SEn;JC<~!+>#thrL2HD_)_t>Ic`EYl7@7s&oUri zPZ0!Hq;>e)It{FThUf+B%mDy!nJPXO-u_gw1R~<~K)q*J_FEC}m$PB~MyQR_tP#E&?ivqxwEN!C{YQA)5^UV+M z=}UNtbU||OM~e+nZ6`M3Wb_u!EZ-1bA<&mK;_0Zq zl7|bKQJ8q2e#fYaW(G+P6i2V;4wnNbWA96%Pt|vroSnO-g&G?ad7!7R>8D&8h#vtf zdr_9$;W7pfSzt?G8J`T*%-XB3Er608begtR&}heU8|z-R86aS;fe+<8l&Z>0vyHDF zjaxDc5argBHw$cV{z;^5NZiP#;D@6U@j&|y)%ixdg-=j%Uxa(K zIvg4W`B>EAK^nJwUygyLp_2%0M-M?L+Eh34bdyNaVjm&Fpv|0$2hw6;Ss&Iy@}{di z^c_=#K`d)Q<*p~JGLDiJBhej9)flWivzR4d**ub{xX*YiZVK1kw~_8if^QzqnK&Gw z4KjQmB0Hs7=o8`X4TCSVCrC)^x)qjIhEqSCEAX)l4~C4I7To1qRgdnSHP5J|{mFXC z2JYJ>LU~OP3Zse<&CsQ#i#7ESipv=uJdxn_PRWsKmmZT)pV%GD@FVQy$@CC_$Yc2G& zSSsh!1P~B?L$kL}sAxr*BUb|j-{tP(;YZAlLDAl!g`n(|l4K4+_3e52 z{0SQ49qmtuXvA02=$}UFY2f9Eg$%R;cNHN_#wPkqqEsA0s)Qq?sZW4uW*mE8w}#nt zg|2xxW*0bzL$N=afEvHd*o+g3GV{VBDYy8CAPM|=Te8NuFg=*y`RHl-tjEU)T?^KH zGG?JzkQvsWb3_bw-5K!)VgxLk#A<$XRGUC9Q00~+kAa?n)WPG4TbDtX=B~%Prz}F} zmLO=x=$f?zRWGl$0tc8DJ-&A{cO-uLq}m%qENq0$$4--C0Wktbh~g?uF~1y{IqQ0n zM`lB1f@!bdpn*h4s*=U3x`tf}>KX7yt>TPspxX-M5b*vfN@ietH(n8)XEKDK#KQvJ z7_CoqAvk`U`1c?^kDf~rubO{E0Lxn|7$bbT|M<0bSoaCx<$I~9SM=`OO9UpqGwJhG zNHimE%N-1;-P6&&kUz)|l2GzCbj;`#RGb9f8(2>;h@_>{bU?n|l1p$kAk5wYKk;?d zE$F1W6y!`DHZNy95_nMxJIEv+a3Pfn3B{r_^RFsB#F}~aQKf0Kf+7prIZazjl|m1U z$5?O!lQ$2)PG6P3Q2Lqfu0Pog5C@Br#$69pmmM2$JDe)1-oDUMYnA?Y==R8C+p?kn ztmBoMuH?pDEYW5bSFGeVMV3C5BhGI#NSyYkI)g(QClEwm|l@AzS3h35K7JXT&R&kAil6ua^_)X$V;R=|7l>M1ddD=QF@@vf_wiLv|u2= zInPR+LL+LIi;X%)e9#{2sAcrD>7^y7o|!hp5HL!szcso~#XrjaEh%=E)W@o40tT3? zj&T)^9!`3M($>u`w~2_bP&iSA+GC5Nyb`E5NbN$El}c?61|!>8oX;?wu&FI=K;mMy ziYZf3XG@wctHluE50vDtqJ6s8n2HK?G(i2y1Ie^LYZjpUfLjqHxpU(lSi%IDSuYxD z>Y&3@VnrJ97*DmO*c!VWL-!`8qMRafGvd{R+h7H>>%2PPeuTEVesQp@O)$I2c4rdv zLYD#FIzO5=vU59~Nh_S5Bz0CZ>p|0{!&*8o@HIcJ>Llmb`enHRlgSmq? zh|GJ{p>H4qvn|$*BQbh5e5e6ttqWAoSJ^jYm_UwY3n}5GTGX{^x?QwFjRpgq29k@g zNe+^6786W)l~h^9N#0zb4|jPv=&`XhR}ok%zpcQ{RR#}@=s$gx;oE0L6L*HA1jX^6 zQ};tKEx4d8Im#QQFM5|!v#ECMjggu86n6>v`?3=Yi`M$!VF4`mTkNUQbz*5w(mZP# zv&`-;I|Z3qlohot+Yk_A%5?8&)W?Z|+3PX9HhCnszBzyXak}bby^k3K+yI}bN>QF` z;I;W!Z2gtL z5XwpO(HKFsu|OE~ilRnU0_#;iTyVLSJsbX_Ghv=Twq!q9+A4}z&=qwj;L#9AV^;H7;)b__V^T^;_9m+1+tpSwU z65)H28SuB{c%iJk2(c?g7Ao@9Y0M@(ZYFZ{OpVbW;PC@#R16j6Tu%tmVGgWG^K#7w z92V@#2J#G;)yflXMYA12ul(Gg{$MbO!KH*Nj#xF0*kF$hYW#I}D~CvYWSY|RB+4MXm(Fj5qr9S~FVdKkA5(`W!kXam@(9_LhGfqJvl)aZrWiG^X0tmgnh!DBbyLcUPgG+1bmS$L>O;f+*FiLmd4N-I^1bH9U`B z(p+vTWS$3Sujr$|qLh3Se-rBHG1|J~ykzPYc{|P~pwJ=VuJTxq!!%iLej%iXu@%3H z-FDU@S8a4|OjJO-!}5!%4x7Ibrs~_6&d5=oL+fn-7>v1j=(@*BXFJE{F`XQBq?6OV zcj==Z=vhssej&B?m;9Z?&Oi0aD{qjCvoR5`z$|rP>cX#2bCoM->is6%b1?I{eEl_Rn}FzhP9M*^9X zQtvwVKuAR4(Y<4H2OeXF%@mh7o2rIjp4aEs(qBOqDxT!O}GExi_ zVZidI3nfKwUpBw6<3Ny+v8U^LtO~QIsHo5R&1Smi7W)wd1qf&iu?ldTw{C zK8!lsoHb?Lg<2%!9RrqZ_9x-zF0KfNK1QT$2)JFBMY>(!8A+{!59ge#Wt3c32_X~D zeH`u6>Lvfeio4=1L)ov`6zu#)Fmr{~RT#|yu<$1Po*a)9D!BiV%P#Ky?uc6=ju3{4 z3c*!OERXpqR|+kI3U{V8J`XC5{8s0mxsZ^{=MTO|)^#%$81I@Wdqy6~pZe4g9lHpb z%UU5Z1&|8aeTA$v`&AaQc+gLcD?Pukm{JX&QuG{!+)M$zw_OxJ>kHE>r|ULO4OClr zn9-sA)C;-bkXxW($%l(LPP=Yv`vuhUGkW=-=>5Mtmdu>Y|0iY2{+}s~|9{Gq{XfCe z|Bc>Pbflw6{>%7N-c&GE(FP(q;L>%vzcm;DA8hXz01tLI;=cz)DFoHS)a2Ef&I-N7 zt4mpe@$ zqMxn&H}KBC>+5e;H-zW=Pdq+5_AR~A?)BEUs4aWPj{dY;)637{^i0&J^gX-zExpl} zo!pRoGTtJSuazs-#bICXj(&G1CuaC~mhyc$)#HeNr2u`P`Y58@vA8Uj#eulQ(ShzY zu2GXKBnSOhGvN$MdVswoK2#w5r&;Y=Lr6(U2}TxQ)9p(@NqOT!yP&a!Z+%fa-=~Ec zrW(o^NID)GQ{1<5nxdzSIbmowcVO^k?vb@+9hZEfSz76})l`?HeSmHvgiB`9Okhyh z+CbCb$qGcyS;TMY$mz`{4KPCabSxF}F)tL$u4o#dRf zbFYQXryY+LWZJD94!MJGQJLquRCDloajbAHA}6VzM)rqSk{v2%hfRZ%G{;hH4tf7L zMh^xMo?9;Xk;?e-!dBHN^O=1bkbJ~6E7ohrUjnUDK?vG!JTcCH)(m~kVRzWPs;l*f zS7FY(m;i^wcULq4;Tv(b(7aH?YuIJ_@Y!PVOa*_77`j)Fs}Q`!q}6Dc<>joePhHgUqBRyli#`mVkJR}@z|UC z=g{Gl+qLfHZr!CR1m1c%iAoxdB2IH{`7}P`IPfIu47jog1?DK`lx*=)DwR=(KnKD9 ze%99;gC2EdoDXJ8kbz7935IBzd>WiLAD3mPHw&$_in8+!UJ4}IuGjY9W5zn(e?dg` zq==eEJB*LS_oB3d#2HaLnAL`z?~M+DCF>fRN?@_bIJ9xcr-Gr0awBcP2ZgKkkPlc| ztjRD}CReX!ZV)s(hu-9OdA^bLTCWjfnfzJx>Opt#Jtoq|LlZ*KZ>;Hy5SO6*xV%JB>VHTa|JUOGi5qmi+Z z>5R0)>4`RQZ~S5Ka#Xm16X+TuLT%jrBl%^{P>Soz8Q7G@{J=S}!YY|-b%3&ljmKaE z9jvU(?}(oQ@3f)rLoL8eYP*6t7}|g-DF6qatvL+1vWJ|;Kj&fI2Ru8?Z8s_ZCfK^e zFrQd9U~LjXfz#jtqIbg&-|hV1$8^m1u(QEuxnnL@D!Go8z1g0qa9u+g*0+AVfbXJ7 z)1PC7YBNCTA5DU+PyucpzPQ)YZi!3`9%1EDaKQ5k;BDX>k@b-|JbF!a89s$+boR+? zq1QBSg2Pt}{NXH3afueY=MhZ16OI?k@qEV+u5wKS7X% zZ^~)!M5+%U6iJjF{Xc|d2+ zX-#nhnCz7|tRZ3smfj_ZYO%yKVg?PS_zs*` zv?QgcsF4uD;G?WT%AIM;$*Id`K!ox~6NkFnr=} zxER7_cbFXEmJTA1U7bMCDh!)uqAXJn0SjiLCuLn!;l%F{^ooGST7J1)k?m3@|IJ40 zK3E{u&fVdDm)|6%{SUs!}2q zZ*c++x3FwD4BitZ^$?|OBz008Ye;E+<_aN$v%skr)vQ_U#{NFi18!f$sd4DWVdAH_ zl)YIGgqKIo3E@Dt$61v;RL;`D{@!TCDB5dHH8^T0sno$NIz&Dts3n9#_v3B;`Liy< zO12TDLYUEQmsu2I^+Fk`Rr9#U2Fv=ln4x9{X&*j!Fph6>K~;jKfM`D87Ci~Iy^K*J>5QLwv9~_ZJ?HW#sFyq6RYv89WTDqZMN;H$ zsJRNHK)slL>@4)PbNKm;mEn~%h4H#{A_o&C^iC#AvGVa7LNsM02U!$U(<44)g_-WA^~2*HIvv&b5G7@EAsdX z{XJDS8<`3ZH$Y<0-1Y>MvLjuokTAiZ5Iot|EsK$EZRVAsEjJ3p3fL;zc6XKqgr7x9Ly;c}cs$Qyh5;DKjOsIK(6~MIt6$IpaFw6c1WyYJ1kx(C>k_d)C;U z`4mP}@b~uRZS$-e?EDTfW0ADiQE$M@O!tGhYPVYRufmHX?4~uhYx0d%#Zn|+VkRip z#_wRXbhU|iO%JTcXR+d%WRu(xk^a!pNRa{HtV_jKE_aFo3O=JdfD-0)Mk*E)5$p2~ zn&}^~2BFIs{8v&omK0!LepTh0iN=ZZwv*{k6=dr$j}$RDiIW7pOEY!z1@p`+w&rJ3 zD^o3Dv!*7vZg>fArPhQt9DCDFta)Ck=pm}^W-F)^ViV5|__vQv41_%bGvGA)dWB_7 z@UMM!F1Y)RW;C~Z9SI?c&t=6sgSO8CLcKt7!GIOJ6%zP*w96pSjg@<*LnrHcYG4T??y5sk3S}HHiXS?7Gtg4Olyr4M#?J+vUk)kdZj3kR*&6ej`L$7FbySjiuU<&`5<2i z>&j*LC&1oI37kyqIdTbnT4Z>(lst@5Y;>v6hz14H;I7mn${w)tK5;bROKq)$k(<-j ze>WdXYE0%Tw*3bEeeIQ8E`D)csN7SL+i?$+I|1|X2Rq$iTNH*$Km?K~Pq01|Kl8&O z8d)vEFcDdzh7(oA)XGzX6<|u_`$KAHeJs4I&#Q0(9=P=>VN4-wA`ey3?97@S4|QC@pv_xUz<*V56hI zh|vt88@Lb?!8hxAFgG{k$@G)Y2S6I<8^UBeR+h5+3KnUQ6MB1GoA+DlDw|iKZxdu0 zKeQ}~Q%$?t+gX*`2xIJnGv9StG->vDUd-BrEbR9DMFyNm5Zg4>`sUS>3t!d$$oG}v z7JaRD3Wi_b%h{TB0?Hw-=490SBLJb$cv~X@Nh{}&Oq0im;#y-RHdR!=G+J08W{h#8 zTC`9N2`dZ3tL@qx$hg?*wXg`rb;O3hiCLD=S1y(+yY{CCVxLyDP2!6kcLKdB@#F^A@uU<|yWA*&*cA11TgXjrj zcodd}+$X8~JHhse)%r*;jYa)&qOGD(MOLYJgpdZ2*(R*QuN|kf_pUqLYIi@)9(BDZ zutd-xpt^Vl~0ddG)>nH zfKS?FmX+ap_v>de z)Co)NO@Wyj3*6h2*tLeynT$K;x{nSdAwS#rUYXtAXWz+4BqQ6P8_A>oBNyic)~E9W z{sNqM|33ime{t=9P?wpVh3)^lzGnY#5$^xFzGnYV81#Pw;1TWr7l8lGL;eSV&7~Aj zT-H?ZeY7#|4gb!-|GU2KdArjtfS?qro6a1F*37uBtxXa7`_UUQZ>R41KDX6Jzhx@T z-*H}hid5Y>I%WS4a^K<8{SWpQ{rkR;ZXQ3g9@iW;d}Z`Mf7brxLa+a;WZAbX(~j-G zH0RC0-n91(#{YZrnYWv}x94|}23bGngNc1-*Y$4iUS|IZ#((!=cR17a71^N;{aaeY zjI*)|Oi$>v=% z&~i;$EIEcYL$3RqquTC!7SeUCmZez8S4X zMQa_bgjH;_5;oeE4@)+LM?32O^Fl7Pm2ff)3d{h!iCp$vx7Felv2P@6W18Q&IV%gYIdEsk0ab3 z*GWI7`_Ny&Ka(~wgtmp01g&7w=?;r>ICs;^Ih~ig%1eMPbhV;Vptu4GN|_|WH%zIr zF6fHxTPRHIaaJ6xHWe6M?&>5SVORsgDk-4WYQqpj+$jv9n3qF&Uy z2njg|KraDxK`9ekx%(RTrXRQ_>p3is6l9-m0;!h;vId2Hf?9?D6nDF){Wa=mdzAP* zm)rueaSglH$`&}pXXu$(2u-OV4T4BeB`Tb-Mxf!zJb zQl!x!DVifho2y%r$4UM*Htv$%i*>Vf=7msCfE+I4Cn-qsXU758cL{-5js^OS$rYJEbn3x{@DTas;jYorDOEc)qj(L#gl)Qq z^>h^|p=YyU^u+z;fB>BVmyNFe!C^rHBo2`F>{v>H9@)N)Cx^jg_(veT(kYX=*gI-G zT4)Rz2tb~H_6e9sv<#SRAB~8u=t~;xaeRS==PU=2k)Wwh?Hs2N+GGdf4pLwt#4=JA zIzbz3KxFhkpZ~b#@q#rhZPQsnGADCdaeUVVpK;~$8Yy<@@wTzq%2)*61r6JA_r*1@ z=8|7m85ByffjHSKaz2t#i!Lm8EhqsPp2VF8DBObF9roD{r#OmRiHqX(<}&y2)(l^r zYcP$A6p2!a+!y0_L+a<4+l$sBn@3=Q(HgI9R_35-sdp3FwS8dbPl|J0w%k_5T8;v@ z`QZwDPI3waa+zGll@p|X4yC1lGH2t8*Yxr*ggAbq>BoGgcgS((Ho%(CwthKfD?}4KqiI?I$qFGGY^mX!~-L3Y@|i85lDqn zrZ58;zX{Tm-}-5jST3U97?#|9m}ycIq0G+NzbRwvFIy!bBpoP>M3{hf?uz1)TvF!F zq8}5qkx?zMnktAO$Mcluj3F>#iBurbLKexg#uO zY<*rGV=r9yyBs%)2G2hi&+!UAaom%uRgwXGchU4?tczXAaRH#y+mO0@-o-hKy z@i9px<}HOOmCTA@8)u<|_JTg2NVKO_<8p>TxZ&dkRYCT=`wnzu9%;u*)s32&we4v zW_!PV6p(gdLFtZwt|?Ne*w)5{ly?)sQi6fIqLf9{wNZjyPo!K0zIC=TPVg?0x!>#a z=^}mX^M0mzB|v@HnzGQMD=ftVn(O7n$+=Ch>n8X#lW{xwLYSMk(? zZOzUlzQUGlMrD z8GME&1{xE%u<|NcYdlr50*P$hM{>Lm04jjDG-lvrgu>Vog5O=+4zLmm?Ax>txX_=L zF|`LY4p%KA;YOYl8|`?=KAlz}6>FGdBs-b2m*9fHU&#$9hb|^~g7Vx@?{n%hCGtHr zctw*@%6?`oxt~qSM$)F|WA9WkdZJk~xwF346eU~SW^P4q=0}w!A2(Pp!e^66=e07$ z@#*K7NO!pPnh4o<|21~1-@FE8I|bSlvgw3DV)JHrx}eP-IMRO0IocAM2px??b2t^c zpO+U=6hltAmcd3PlLe+^VFde5hKp(=bIjGD$aFJo14LXCH6f=jU@7p=URs_c9{oh$ zo<(tfMZCK(0CJM=gs!tlleAfp!+k)ZDR>xWEWt8!9o`y|O?j>!eyTAt+XZJA*dDHv zb82g~tFD90?Zt9OdhBvVFR;&4GEbf2%v?#bMx;U4;_A{TIdwEQ>Tq@^gv0yr1BjXY zjHZClqud%qiSqza>_kj}c5z7wm)AWXZBgT&)- zPsRxIi4LPns_@FInzx7xR9(zc*6n>3a>=Rdihx6Su?>kX9V2YDTQWT8N>4a0jcl4` z3V30usc5C5igdQPm1C@M!8fvCh|E9Ku;g{Ld(UmR7-A3iQEm)PN7C8aEqExIoI|G+ z)jKN?YLF`T1=9T5^2Qvw!#R>QCuLc48xY0s82lXn<-3=EKZWNx(q(^~ZSd{v{#eek zQC)~YLo6gc(iD63sD zQD173OGp2I2z$pKQ35q>w{6?DZQHi(?$x$!+qP}nwryMMtUbwO-jhr+U#osVJy+cd zE=f}Ud*vL-edkFeir`jm5{?(^2tPV2@Y9FOU9wZ>GuKd@Lmp0l_kkSaDMgFgDwQ!c z@mqYp)tr`F(Ib1kjJJb#ZjL!fHPBp!>YY$!b_t8N^i+Tf#LIT1&qX_;eZT zPap`oB%)*;Rb^*COcPD~dgNp(*c9|2hFtrUBWYThft`b#+x*w^m8az%Cq?bu zL&Ep#2NvB~y;Rg|xJ8R}Ob3&8s2vM2aMJ*u{zlYjZI#NG6`AJjAcegI4T>ZBclZD` z2%;z9IB``G9n@2x1B#E%)bM~|QL)VNv;@1Hh&F^NrRJ}-bd(wp3SqDC3|;a2qO}?> zCwB+s^{5v~o);aH6u(0#hOqs_g{?B$oaWksu8JmMQz4)I!H7Za*2Tn=jg@cehCq(3 z%;g{lHO1BiDLfEJp6wlCxDE9s=+Pgs;zfPBzo3`CKnnjGnEZG6jG2-7e|)v<|J{`O z|A5JVthWCbn6&6f#xZxm_Po{Ia|&>m=mJFpc{adzz|IT61#L4y#tZvTllt)&ibO1{ zo!pXO>^p7IRgpXc2+FsQpcXz2`{yzSBX{SKYveRRF=-TC=> z{Pkpfy`-NFb{|;Nr}y(7kBU#L>-+Kaa{H=sVQ;&s)7!Z=_Cwurbpq2j^-X!OZrZ61 zr++=Y{=Jmx#NdN@$dO4Kg`Y~ne;6so*T~^pen4vJ1IzhCbd;9&pc?YsIr4T<+DcdO zWNJy@SPR3AnpIXaDjI^oj!yqZNQc&jjppHrsckM`LhU>RmpD975z3*c>h6# ztsc5F8r1rA?}FMI7th~vNXEaoXsWJgq(p{E`8iJ}>OTzBMSZiKuN5qvC)O~?wRz$q z=pxow6-Y>GlV2r^Ua@E2xt+8SE7Vn2t$5?<<1AuAJ@m_+zkPgFa4=57TYEC6F zEtYkQcB!eQI}L(?sC64_Zk%rRI%pG(nQQkZ+o&HPGYM#1zrM!58jr&F*^8DOo=MJw zk_}7uF>Ymy(6W*`86cZlW`Y-%!(SImZnJ}6)oBCH8t@uPhXjkNVA)sk3YH&O4bMn1 zufg_=)pJI3wqQv-A?{%}upf)}p<>44`BJ>Gk-uD{jY-Ll!eV0_iA+OKoGt;m4=d)of=xUCJ6ji?@tnJ+pW!p#n z(rgg#-+WvQQ25_b<&(ZB@z)7Ivo!>I^Y<2%5rxxS6Fk!yTJ(jR#}+CvLVN!D5Ot_B zE-4-JKjl8UTPvc%t-8T}5AuOqob7Y(K?V@DTlrSb&Vp+2%N_7&e472%*_S)&e}@Jk zf>3c%jEJz(R+OudYK=LI=1|AskLwKy1o@=Xq48p1LGzAQ7WXc1GK>m)YIL$|(-%WK@8nQUNU9>}EoLMvY-@1QGV45;V6V{ zLqmU9mSuWw8m;)n)-3!H^olyi-mz%4Z6yuvfxb_2QX2E=IIk zZ8j}ji&^oQQpsksotW%4ZUP5domz7=MUiQ$DYVgvK`C^CLta;$RZZJp8DRH8kd^=h zvBg5n(mI;U5MYgiS2K7gZ2OH!vjdenGrgf1A295H6-6;XWsxOMA*rKC-q>?57!HMO zjBLWRCFHy>z1U~ORK#S-J`ipsqYSgws{L=lj6|>*ik>2QT z3;Zs+doY*+=}0UzqvVoMWK^n{S3Foar_zIn$i0BxCW7qx2};nDz$l`^3H7{;OJeA}>W;ltWYL%j{?1D4kkib8 zaE41}>5{@ysW#8zDv&4d-k<6$Be7ROdK18=$5!=8fexJ6pQ-8FwmCt_F@|*_!%7Vn zx{I5{EZ9ssY9O6ZWV|NtFEZ(h8f&0bd(ZAjFDGor3nAN<+iajBakQA6grYzWoRNZ? z>^j}Ma*G%?iASW%ceD2nl2UW}4*r^Ree&85f`%z|t_BS&@Eq-e8(##S@6g!9F6Wnw$hllsigg$j$H}?Ldd9r^ zV;azUHeyk{p@ujIIxSNsBW%Q($DuS)OtDT%3Fww156UZ=^BocIiQ2A+0qpId(?>)~3$#1wp|dtgCLAa_~iJi5kzVj|^BDukxVXgaCl zL5b##F(oqneko&)P@^7S)KQUMMr!jSA&Q?oiic3A93@muo6MG2Qdq<47A*Cewu!xh z&QN5DN{OyBiV8Tm4eR|gC&&^34u;M-qp}$&{>$Z~xFYou9=WGnMHBa=eno(-H_ma| z%ZG7of0qx@zNyI20*Uz8Z%Q)dng3)PlBJli2yhIK0*k>%qu(d?edVdL|*&*EIP*#Fu|Q#v=GblDM)P`KKbSP!&)$lm1mTB1>8pTf?8!|H9IK7PUdx z76i6hvm`8!iPR;{%SU=qoREFX3)d|}(IeN#^HA?4i)6MV{6tS;F;6s}pSZg;!6dWQ zD+Q=i`Dm-IUw8MH3S#p$AX1QLyrj@EWa}ge?bcL-hWp#L3UrDg2q(KfwCsH(n%FBR zZi-m$PvAqD(xE`Kt5JrXc##-!aalN-AUxB&HF`UzT-j>!WI+W(b(Os9u_f-&MpDCN zG$LE?m^fxp({=9U<)#1KUs;v@W8eV}o#695P1;sz-+@X?Y8K zfuh&Aw<<}*DU%fpm7_wzBSA;KL*g}&C#_xUEkH{`v_N)Nm1NaChAQ`-vuJod5-!3} zZ?A>K%3l@6%U}71^Tr?xJag$7M%T*2eaPZiW-c}w{xSeoo-9pn+S{v^9f5(SGi&yx z!E0_&AkWq#D)3j25w1mp z0jZFuhR{|%Ja#;a#S`O*>cc=yOEI|ObldE?G^fV6Aw?T3S#$Fci8|V#RW@gcv7=P6 z7|BIgS(!k7ru5u&hiPSbW4u_|=bngu7uLDCnExT%Xb_%>KGMqOI56NeDCl&8a7+^Y zNW0p>^w%e)C`Pp;x4|99Xu_zKvRE!!;nG3tpGOwKD3oM%<@tgm4j=q^(;SMzog&rH zij&gTxCDuP-jxRmJajnl+vU6GcU@IdISQ7Q;>MdVM1_9{;0Nvt&m)pKhRrRxm{g7D z)3(R5)%ckd3pK)ZyVyEBb|ZwK4cCgmxOLW;pEPd_xd!H~lSx63ee60c#R(L&-Jau> zWZ$w1G1$C3#TAE`C;fre135Qe7K>smx4C9xh_0Gc>I#8pgF=}5?cjxxt6bv1Dk-iD zEP7ZaO~Z?v)_e)4#6x;R`H`b~Sm+x%jH)w?Wf)}AM(PKWgngA2$b%qej2sZl{PVyE zh+EunNn1C;v5qXBYbYN>T(isbI z5us_;U7h^wsC0%pQa8ZfCV(GDUBP3}QZ1mhmRKgA_D9nqt5>b5yS+7Qn!SH}N`RC* zf~CrLLIo{?hZZyxQ}+et3qC(1nH zU5(ih`!SM68rN{j_F0_-9B{>UnlXoM^3EptwoHwO^c3Yy!1N<31`lwX0*@AZrJa5k z&0JHz&AgCzg**lGUWf_2NaKOkFv{r%94;L6;lYEUgc9 zss@V+cnz~hsacqdSB~-2V}76Ch=^@!JdZrDT(3;_#z`vPd^YpH1Ee;63E zjf#N_Ff%ok-QNGg$ow_Od|{mQ<#EcetTFGDnlqD$kFz?Z84(Cs7Le7kd9Ko{mbe^1 zb|dnP2jnOB9gDnpa;=q0OqiHQ8>|myXdL^lmXOp?m&KrsphHBz$;*4cb!r2p*}9ap z{7&8sdcP*6*j))~QbT!h)aK`Y&Cp_KI3wR^=eI^StZ;qFfANM88XQwnEpmQ=q^y@+ zjT$_(I+OP6_y#}r!8QEf`24>UuFRYa|KptH_|HJe|KB;w@gFno|Husd_= z?zsIqR6U>=uMAb>K!9a7ZvNG?;wFZLRo=Ar zeZOt_>9wZO{+JZ?T%;MiYI}eD+|mCd^r^n7y~V!0zaKYWYwTBc2P4=yc3+=cQ~3Nd zQ?>hNe%~juVO_3&E*;n-{eG|3@_KoD|10*oJwp@9_{AH{es@dP-SKnV%Kp~A_1xF1 z{qh=KML0FhmQ$J=wmg+l60kJ4+k5e2H$6a8)Uh!Ve~N2%#Aj%>JJ_$cBb(oGd%yO~ z`OQib7B-->KDAE;s~7s)-p7S;=pvuAbz8^qFPNz9A69Jb=`XwXZ2orid%47O_`_=R zCoZ1OtCup}TmBPPT;eonPp6agG-7C^4Bpu9j96Ewde7+sl1&~w75(XHAM)PtGk47; zmf>h;sPT!|HT$s0`&y=xD(jBT6s*4R`^>o{&P6xysea32k%vENMhndQ-k)LN%_wrt zh%j4}QDb=QILE`qQVIVwrJp=c^I&E%~N^DXt{6^{tsS9*3+Cz;pvfD~m z5jrUBn?j5hZk2yP>-Eb1n4BG(iC}u`90v*mmP5O&y@dY| zfgfU6yn*L51jl6i#$G5Ho-y5etvmA%tSp5ATMxgjkGU-yklhAT!x{cr6IOzIKX?x+0PKJg-`eIv3h>Tpj2BTrd=Rstiy9&NxQFR>r3mAY?lSJ z%zObjx)ayPyoeDdRT-M8%DM?A=&ehliju0`S20i%O+@D{$7piknr8CgI=+!^cufbg za(4Iwe1@QUKvM}BZA2QY4v8BQZ~!3R5ME+iym4wSGE`X{%{#akCvWTX$p z>079<5@KAWbf?Kk$qw0Urg){0oC!t|*k7dA0nhm=;4c6w-4B*kdN42_bwXnjzhsVs zlB7rz@B--+Z9XepXvNE-TP8=kW}Gz$B8sHU`nInC$N6@9SJY~0_4Z{17;%GK(+pjB ziCa_ZT!dQs1T_=BV^#zsTg zNdVfci$kIku~k6rNntzHm3+NVgj>n(s**#1S(Z*isDe+S-eW#Q?(1B2e?Iy|dh+;M zqW29gx@l*E*a~#gxYlvh$@Rp6FGv*mdTXQZk6glruLcXMaHrBy>z!I{;0QhdZWSNQ zL!w5ehJ@up=z3XMdW^5)(m&5Qm2>fukfzBsHoyf+k;Dy%l=YY6h9)Efy5kW?Rv2cO zOxSBhY-)M)E!B(%G*MW6Wq-GRnk+e#I}jU~B>7{RK-0(7IU_nwgF1r7WARy8-$l`~ zsSA?YSrQp9Fw=3hSKx;L2FsMwOgVK6g|$ce0V>5(8WQ5MRq_!%^k)*0o%%m=%9qcsb6um_!mYjkXgP0v4Gyh^SbZC5|7pgRb``EZ@eo0cV_Y8lXLq3dM|3fL_G zhrM@}WKVlI^s^dY`KdR`B@b51ftK-T4YX4;x2 z4Gh`Jp9TfQQx_U4U9XPNPRwn0o4NQH)6OY!gG?_{A`{e}E+$h0tB(Urjp zG-a}-k4*y|mFsgzC~lVXWuo)P&E>Wk7%Kn3Nk%Yn^P??BQ-u%Pp`n z3u0?1)u$5c6<1hSa|e{`WX7HPiDaA@idBcjS*fbA_n~1j>-SzEi)R@u2Ezq4e-&2+ zPUD(O3Gdh4?mokIN>SaWGw&bqc2sJ*k~Q(Cw@9r{ZF7>2_%i8NVlKi8|HNekhYX$`)Oa634?&G&UjvAnukMpvgjX>W zSTRfK;?$hh7$^K}M*d!CHNmz%!Pp%2E6nsLSGf{ouAdI1gQbgiC_f$K-=v$^+EMfq zavWF|_EU1p{1}lf=ubL?dhnG@Ej3{%quzI(fM8m1Tfw?yOwGGg23g~wY3StBoAj#* zGwY!Rk=S3WwsX;usvLq|av83oLp*s)7zZ$vjYtkwGgq-@0A4(L(3#1qS<8rpIZBj4 zZ^#KOa5|(wRKfnp>~R%tPsWPN0d!Q%BaVyWF_fDNMLej5;_&(NFlCt9^cOQG*!!+% z`fFra(YlIK#(u)6l~A{MLo;ndQSS9I8;Z}lw#YA8hU%)aFX>pME54!1baJjSll2IP zBptWPasAU!PMrz_rKxI=V=x7s6M2(!aYzM6M;$AT^LCWNouiK&OcCz0 zs7AK1>?_5EBUcw&36WEFx%|@bx?lLmhH!bm zr{gRio_4;~Kd)6FE@G^e6e6~r3;2*Pm;GzP*R<5E-n#_e2|d6j%_rmaK3M6EC1BW& zB_;e`XUBEGXh<_`3Fzben@m)Dy1~7&C8mhMoD_a)3bYY{{qnYNS5-S4vW^B_N<8Os ziR?@92G!x)YH;-CU+Lw7+`JP|8*gmb^zR&^flx{|`7EiP941^WzoOFY(^O%e9vmV> z&VDhIOvuTL)}T%~sTnYq4}DA0jKi$S&!mkC?=^#sP^hB@X0p_wNc3JzMh`q&_gj1I z?C=)uA&v1m!t_p&=iD;m^+O$jnp&Wn{n*1|c z@5IQCP#wu!0efR+QnqfGo8#!kCw18raWy&vK^4RGPq;w0yvEXqI#+0$gUqI^v2~cG zd07>c1+47-tJwpa^q;(ix5ac%er2I|maUY1Q+klPi}2Gi-U1x#FwHM}K3}YFajs?t_fq8O0Ep-?PBy9~%^Iz2G#M-#9GOxnjQUackoZBCo?MkrV3N|i0 zO6`g`bkD9PIz6DKUp-gD<)+a$?_4{yR`Hh)n9qSrM1}9tFom?$IxP4lK8~(ZF_{UR z`>mjvrtDS=a-ebE0JLodU2clC=pJksK?fiWoS6@2;`XGBBGkE0Qs)ce3t)uXbYvp>c+VuX2P^$E{VfBfYw!|N*Qa7b! z+{1ZAnTqu8(e<^2ZaS&uI!0HwLw@AjyS(GO91R?*+G=EJ-EFm%7GLSz{#oAK zX!`*~v%0Elrq+k9rNKx&|B^fmd@9`cZK&g>@a^hU!{3xg)6bOK%NlWDN%CGst~vw% zYCR~$f6L?l`}+9q{ow#fmquo<`CdX@c2#9*+fykyf)kE>_F1r+LWDLS{n=9;b3hFY z?YFyna}}uCC&h?^!Tx-=?6$3dXqyA3{l{WQ1+fLwu1(@LKr96RWC*?iBO#~mru?fM z4+RP*yIr=KT7pw23ToQ}E12uG?XcYx(L6T`BDt~}5{_17{%mfa?q=Q~0;t~s1pWtw z7OQe4(AwR0Po!>Y&)N4GO2bR#r2H}Le#IXq|8rq^WuS7O$=fYN?UkTHJv{i!@7D`| za1|cF_0`Uf?$7Er4M!3Xz5C6W!N6$cH3njgwrE_V1?#=@z5C4ct6IhA@=zRgpbx#T z`mY8jZ9E`|B@;$T`*1yT*>9CmEJ@Jc!BLd}u>Gz?U>&_g;p(di2>|t$Os|qUJn$&z zor(-`S(M#zwIwnnTx0jDy6Fi3PP;(+S7$WEeww=#iFTWOw1JcQYjAQbaC%hh{f-p6 z`^-h5{y&{vfSuM`=22J}1D9CT`OJ5yc2QrmfnFrexCoGV$UqjaJ0}zP$P)1JQPS(3 zW9R7G0BUtv1`Lp%Or4j7!2XeWnQglHSWYg`#kn6ZX5<#uKI*;e>#k|GAf@A`%+Yua z%nFF?71sKXM zg)Kg~5;V~kIob%c=-geddB#E|VP)5|@3WF6&76k|;;@mR@15dXR&vMZ{+|_KNbjK4 zRd@)Y*&BA;@lA*zuhIF);~&ksFXN@5<=QTp>FrjQ1jkgiPy#B7#wVuM$u7e;eBwed zwq$i=XHfNc|C)G*LK;QC`VJU)e!b2TIXBk3OkT;u!|vWZzgyRa0Q^_ScD(AV z=>6+YU~Fvm*6!21Ln42BNc&-X0(xN0zkTa!i#y=~&-?p!t@979#KR54M`uVCbJ4qj z))lze;KccT&py8~XLd}eK!*>DS!>}c<0$d4JGD~jww}+lUoa4*HSS05S8hijv&HqF zE3c_#F&nR_UGvX`JW&X@NQyN}TNL(^EeU1o)2Em!QAEYs6On~cZuvK37!I(|#<`r_ zYRD;K$p@0Lfe@0Erb!w>vH5V+`=tZ_ghq~xLtiUq8&bNnAzP$Kj3QU&$-uY@Qtpmi zor=iF2NC%c<5fOJ6>H`S5|;)*kjZ>4(?2DfxlG7$l9#*a0wU<7*)EQtWjYD?BxTZ= zs>|pw8z@!;sG?F-z?yN8moERirQkH=u$J-Qy=1d(%gzpNR`|xAJc`J+bNCKDy1XRI z?oS1iU*A+uYT02DDv|@D_!H-%k^yr*dmYoTg5qJA zH>hYZQMF4PW+tGL6Gf!D9uV?p6$Gu67WXw0f|aV_ZBqW?)r>ub5cB+R&P~_fMMTuY0&|vOX6;9|} zL1AZKpx2rc*)|li$=+(y4X_y7>)N$Kujwf5lE=b0#eZ0( zoxDaDBkLLkLt z)VNa{_7s`Uu)?yOp4PL}R-J@doxwaCV2Jl*E)BM|;JqJL5rMR*G>vYeMju4?S3VW0 zfIVlIAd@svaX?;XGe#zRWRW}po=?82*Z}4Kxznz%pvwa7EKUP_#>DLlx7ojgkeBe2 znaMa>$1r47aOl*OEY4zf)17Q9nROK)RmrznOD)vNut z6)#~TAyt2RF)#It{0Y9da8H^th^2itE8xw64)T8TkM)G2>Tx^@w%jZ= zgRS1w?Ic3EyUmX9h;j9IWwXYl=pyGZpn27y{laU@xee;fNhZC)9SJ!)2H72ah9vl{ zF)sY%&5%W~g_mE|3K=Y0h41c)y7B-&g-%hre)rxDtvUeGr0&(N3O5&&=TgB?9Spj^ zF-}(FIAr8EHl;bn$Z*Mc!HqRqhrh?GyLxuWdGl%TqGbfj$2Hb*L z#c+{SihP#=t9n!aE~JKw*0a{xAVeMd<0M3Ephp+Tnn5IOZEdM#7*#1zvT2sdnH0PvT9Ra84&+NCoYFo9}A(!Kp$h+1)D1afHpq{&|q+Vk_zqVe8~&K8UJTxB3^GTpd;e(=C!< zHI-6WU3>biBu8n~*p?I1(~pbV6V1?p)rvU88pVmH9rI2ot}1p!k4{)pwB$4RW|5Gu zFD76HW0YCCL|h0^w}FJoEz}pLK?^)QZOz}h>}0i|RWYk|c`O>tDEO|HmLpsPI}~#2 z!=zJLSkQG#l|E)o2$?kIzcPBtx^A3LNy$nXzw$eB5OW5ieLMNb-%?tYp7wik0p#g4 zzcBs;0GQ@jtUSXgJ9{l*by>Wq_WnzOAUF1Yf$W57tr#MM7{j z1+uy%C;U#%kQayioe7Wc2o7E(G-;(sH!{|@~zvoNv$=ly?Z4vOQy z`)&Upg8PpN_x~ce8EwfZlYd<}Z*}8M1&f>L6iAhwO>n)iDDMpKr=Z>#=^gKP+(J;2 z1vfp@w_sVJv$JXPN)(4tyjnUZC;a-pec@65ej65bpGeW&qf_{Q+rMAr)Ak2|swJlp#x^v$DN8cdw=`}wRql&(~D?)|=gq|v|4(f7ef`?Pn?C_TNH zT~{@+AL*sEPrP6D?o|7^;ImihMJ20ue5W^{ zR*9E}1{@IqL(pLZ#6LD~3oDYsn>`)nK>zKLKUMnYgvj2~dI`xKuK@7_^h-2vl>m{d z3CNY5@1{(Y6M8Q=&g)tuQbt;7G)|~%w8u12w2*TF?@Cid>X);4EKxGm4zN#49q*Ag zLco2Dn?T{H4Ysg)QN7C_#qR6l?j*9mX)&=G>sL zLSGaHMxTUaM4NyUlHAIOqeTY+GkLvIzz0MxC6zF1Jxm)sSlgb!vPgj1AE9kbk&y08 zT#pZq2HG2&O|=oQ(mSov8bE0_YS;*1NzsD2G;@Gcx3Q-MU=zte;jOQQVGr{v zeAfPt)4-mg68qLvc5=8@NY|!_4_D!khISl@W=KcOuzkB1?Z?NBmp~_%a+&u(_O%fy zqx)1j*=drV?#C86gYCxl&HeZ$G?+1FUIV-NTAR*h4?L@;C6iKCwu&!$lERGsk~WJf zJ14Gr(EzvWJW|uQl;McvBLU%LqD+W_&Sk`RuI^;q*efPeracrH&gPYZ-dDolNdu|! zcAdFAc1`TgL4|PV$ZS&MK4`G!Tmahobc#Rt6?acReG#2MOm>$Oj z+z$o8trSg@x<5c><5ceXgi`KGdzb)j8`(HCo6|zyG&2FI7CfwFuy&bB8hn# z*LzUA!XV0l!p}=Gjwnp^*}CW0DSn<-n)ks*lHK&|5F;JI29$cn z3=g|pg}+}vZ`~N85vXa?+~G#elk+ES~OaZ{h!qdF_FU>t8Bts9KUE{ksiGkd0F<`Dpg z-(XlyLCNRS(QNV+vniQdVy0&5Z4nRG);5eq4Aq*5@46U-6iPwnGfrV-nX4Q08s6mx zW^M!zjM!|Z+N%Rd&JPrzlUe{pQTf+)-{ z)MERs0|99LfV!hV$M$p33AkWBXRj3oRO{EdKj~KZr$L}C z(iwjbLf2kVIE-weWz5;7uY^r5aRYl+$XhfpbvdmYh|}Ps?%@U0sK!^p7$U^SNWN;v zsJQ1R)cHwWYvq&{?i`|wut;cRel3hq{ zqdPJe*qhI95rKY$f!!49tk(d<@{MP~Fx|fcl!v(2fL1B}R1z6M`8;|tX)(I0XRZ{b zWlGVb<%A`}iBy%@7to@D0(S)_;l3Wbcb_LT;1^#KuEva2fguo3dKlT9YGL<0lfM7MD3d~5PNl)BLw6Sx%P@`X+0e26aDaBMh^2)$O|bAvL6x1C0IHx$c6A;MWyv{d)BKfG z?7YNRMUdmEhw_E`pqbAFBKe6X^sNR;-%z5eX;g~Le(EOI1yJgY^tsmNSh&FNTvhNv zOOgF1j8#MQ6b2u$5Yp z+myBkjzu$os~_z};RLs8SI>=fHVi!*RZjhBKA%?{yB&_k;3hRBMbTSj596BFPE|?M zjV!oao4PDl`%VtXS4`elaM)qU((8xhXj{OdPR<_accXu=JAFfCxAIm)aiiK3g}o_s!)vvLz3CBicRCUyLPwhxyI?4D@- zS?zj4bIL=P9t+|xd(k<=vd?EbFZ!kYf@oYcT3i%My)&dUz%wA0GXR#<>#7?qaFtiQ z74Cza(UF(_1Dzg9d^dDTn|{C-O`$PV=4sGG%!wo<&tqdLMpM+;1Dl2 zvt$fE3;SGRwu+a;DiJf|6%Xb&tW68V$Mrna5*tJ08e87Fy6Hv9t57r4mA%3NIj#x& z>~6E4@4qE4;Qd$UDte^^;g*&(H51lO%xuCM#Py%hTXJ8IYhI$ge?6^`&Jc5DW9*6s zo8)}k;=RpdV>Q4E-<7!&g$dQsKFu+s8u+3Rh8UQqHqH6*7oulrs4)hXXEB|MMIJZ= z9>7lq;ICoT)Nu-HEUKjTmV6wpe9jSmV~0a?H_C zL|#1VGfcTf(NniDA|K1?2amf{@r8MVbL;qJRXQ|BW-=c>DKsO=N;g~NAAv2CjwxZ? zq_`~D=WH(0i)9`>SRl60-%y{&zgCmHDMfaXs>*orWF}g?`InT`Fk^aA(j6KXdTtuW zuNr0U@dNZ}e}O!zlmE*;=j7~YYH0gEXZL>x-IzGonEvPKf7ez1&oR#VAIIJQb&R+C zTV(rpjQ?kmZBxOt2R~ltykb(zon2u+L-3j<{T#tgyN1Zk77^ za0D`81-sAJ&&gU=XT@XM-0#e8;?kdw*Ddls8;_eS z{5F2S&Mdb3H~zn_Z5~Yrc6k5(eO;a3_4)mroIJcdJ}t{a{khG@ero{rf%k>J#KX%{ ze>*?$D`G>woweQF!}oYP#alT=?!M6RS{l4NNeeP$hCxzwf8wa796HSRUHZgZdetJs ze}26j;$6RC-Sl!kDRTX+biq6~_L@QLs{}Yol~>&h95YR=GbNg5OHSiISku6^th!hJ z*yJkvWolNfh}8~r-+yb&eAIng+nu_$KW5^7M?8h%#R?+EjPprBjGECasgKwdNJu+{Bc$Fvj;WBZenoY!=5G}PWvm*4H>kMn0JYa;;8 z`RnCw2W_9SfZ$)JA9RCOvqAgjo1!}0o&izmCQNUK%1rclown?jn6jD$V}!6krZ5kk z238FM@a?7f4aiMRC+21^Rcl*6N^?wa98MqOqh+e8C*i>}f=E4$1(KJvo^@728ECw4 z3>}biKx#+feZqX#Iswr3UcHlko2HG8ZNdZbz6vuJii>h-rnAq|*K73#q(PnhI}H0) z$zVZQ^LbwW$d6t2j?jzdFoR9pmd*=-x~w7>U+5pw-h7uMZ8AO$I$A#FELj1Loh)W9 zLK3vD!QHhw_-2b+Z=`fqeoObhyEpRhbu&mFe>^_f#PHHrQ`;O<5eO3wFBDI0i# z{X}Y*R-^sE0q)0=flH-$CaIt>c6DG=KuPgyTXL2DC?eq=&cJE#$$AW|dugH3 zdV2iPqrDW%sF~^-a;^7QC^4Gw#T+$euvt?60SFZH-T(t56QT-Inn)?(k9(A}M&viG z!E%+Mrb;XM!9Q-4p{MXW}YXfH}jX)R@OH)UzH`L4(Ll7Jb-dZ5ooCAobC8 zPh!nouWmL*8ol;ZPMpBsTSJ{{(;>g-_mF2euB5_35?RN=+LJPs|R|ofr z7xB}QQXp#oDD!P*?L3r-T_z-%g7W9wtCY!ex}=L*-@kG2WN=3pM3SxJD_9R^okhHGHW?cMP_u`^l)-2Oxu47#pr)50ZUq1WqB(uUziiO8h@4%qt0 z1q!Fo3yJyIfA}>yku9WXizqKanqMUk8KB z3e*l$!Zvth{I;}X1~MPa@{Md|(m9;eIUE5wkG=n;=!;3A=?QEkL(WHMF!*CwZ>+#!9SOp;aOU@kK63Y=CBIjP-gTN_2p@=@BdFF+_H! zi7m|7W74+GvO^80QoNJ;=Txc2FaNT>DZNeb;b+8eptApuUH6WT3sN?*U6W*SWx3d& z0<)2fZqCOh|`kpUdeYL$P(-G~Kcb09+sj%I5OrZtx z{u070*&y&$YzI9ab6y?-kP?dP7Vijl(g9Vd)XzFE+YZ{72mQ8A$#&F*{96FZ_JHg7 zE_Dswt`~a58~jG((}JLQ9f69Zz*&gS1C*MuIIsCn zUCRW(*~RnnYly<~nEq{^fDNpM?m7F;+vJ;nqzEwYMC`cdIw7vhB!m{|1LY;$&^#}< z{X*J_2rqoz3iIq4K36S5d|aMy6XppUyzfx?YP+kuXFc-niyP1r@ko@q@p-Vz{8ZLs zO8s3yXF*qGU#kwSD_vpE1A&->{EtlW1d^BK&|I?Z<%}b1f`i0pc;a)24nrsB_VsFt z`%EBo)1hR+vN*;Ec5ohH9IWJM<($)a1gtHcrVhno8kjy*c0Guoe(1j`rXE){o{Z@K z6o*a|#nO%>7(fHyR2Wd>|4d`_TttJ(YRKc_ylbI<4VO-B8}!d#q{U%^>gS<~iK&bW zpMT(F*ny|pg;{)oxL(nMw5kv@Y}N)ZQq%O8L@U62y~BNlDcz z=0K85f+3JQ`nmAFt&i1DXOs>7MkQy&rBz8|?p;B2v6{P14v}o!2wX=p{QO=B>Qm~D zjW;MOAN|fT%HW2xZbNmV*C$cub*xq}WA^E}Q|_Px!qpmS#1=SZmjx#Cw1I>`lP}=Y z)=Q=`PUz0=>X1L+>O#!==1d{evf^jz+|-9Npml>5(9We!YulIL%X>d7uq>HzIG1X} z5WCS;1egDC5Tj~wysfkX;)Z!sh-U*uV6-MHlZ_QxNRhi*a!8kirpjl#(62XtQBbhL zhji?Y9H+cl_V~XOMPoLVKsg7k37re2cHc8C?mC4xqj`e01;m$nJte)faDZrpRq-|T z-7FI8YG}ZnrsJJ0L%!LHT#p=>CE4Hk{C|X?Hwr$(Cot)UVZJp%Awr$(C zZQDtox4UnDx2tZ|{kLn^`njs+oNGK|jJ~nvVr5J@g5Dvtr|b&3Q{xnD#h(_CFpBgm8%~=3_$F!(=Mh8Wsw!n}To+ChOb*C^yy!s4OYjm0dVc#hE9oIIFcXIK(5J*>B zuUNyp-oWpVM{vk2nbzf*e0o3`k+ z9JI1{pL!dd<{_--ZnZ-%hV5#fMXce>;%tPIi-w7ZsKl*fIU`Kx*jj*vm(aGQRAbOUN!UUM`gADC1*TG$y&KBAkUkP< zOcoEAojN9wEsq&!f9g2dvdegmeeYz$4=|~p%=$lkXa3(C>p$O?nbpMdp$ z{{6Sr_8)lYzpb`cI(@N+t*~7)>W`cPsx+F3q`3+LZgx+EEudhdgrl?>0GuGBdiNiQ zq*6qpW3DcqNF)$wt7&JhYe-KLe0=jwI!hCOyUxB$JT&)rtZP@EhOk{=>3hEK?>}}r zKWTsH{syn>cX#>xm~JigSWgc@cmJFnwcuYwG2IdG{CtLOlwY%LE+2J=X83OYyneau z;O+E$ZEp2$RAg=TcJ9P|7pHVUvA-;A*|NVlw7eg~eEK!KEbVN5_~`CQxi31d z!1-?YxrX!%m@W8BdTyY#nlitzZp#+!oPU(t(iL)dmi(0ToLJ!je#f~@tnkk(qwuiT z7)r0~@(RC4NXd^~G%_N~6sdO-8mk5$3s|@^;hvs)fuSbkw zTM@C(t{^|sV&t522o)CY)$arHOy=z)@ONZ79zM=0Mb%)R5dJp>!&9cl2fYb+W`nWh z+g(#scRrm1-8L{;F}|9l^G?SywElXVpi^+_;+V?D=cr6%1e0B3Ou*6slc z>%NRggnB_37z2>seTC;eySWQZ(!kk8D`-JY9poEyQ&+;!mbaL-+R(qc^Q%|E71e2X zcsn)u*0F#k-f)4MvU`Drt)K}(-B3n`P!1&kAhdmLHAe`>5ot~;{QoT+hw6~6Sc=qD%IkEb{*xbQ9 zfDJbsXOd(aqD7%p3^nlb9kPIY#7YltoZ$!{EXNzEn~EX+HK0%9WNn}g6l}Z?KBcvG zTZP5Xa}2u_JUraLH(m3#m^k%XzL~g=H)0Fe-|fPSu)Pz0o~az6x2Hp@3*F}+;sxz- z3BkT}p1oT$G)SWi*LhDDh)9-SN^Bn$ltd|BdvF&{$Uw`7yT~9I z#Ea*3d3{?DAFKdZ*T9gHXFWU}9ztiz*Q*_pIgt0t?$_~;$r4o8-zxG>7+ue21BFKrn9VgDDi7yY+ez;pxahvNv9^h$cD=HxL}G(k(CTn5whvMy#CQGYWCB{n|YC9(ue9dJOLnk=bYkuzm*EJblWYrBdmhR z+ec^yk6T8@A!f%q2F|!aq=z;2gbx~UrtuGbi43Ett++OKa}AcSBIRS&q~apTZcV_1-3!)fkB}FU zT=SL%T7;M85~LPn@Gy%`mjIwxd~D03KgkGBp4OdH1<)>oyEFGrDXm->97+%{0-e(K zu3)j(r%XMN3qh*o;!!^e1WI-DO(%h&eqoSzg5CvIb0 zT1RWQqN65(`B5=s4PsFvlARzb%$>vPXC5i#?YMJjtHvTo$O<4tVc9EJmK!LJNzx;_ z1V|*q0354E%Jn437WysDOH64v4_B9rtOWS}8_+6GE{d)o>6ofy-N9x<19vRFT>RUg z8gC5du#7vu-2XmRJm$ivpH!QMx;trsPt$%B7nttxb|3l+qlnth9M z(9giF%10+1k+LXPa@8tJG7yO=Ac?G-4kUh`1Vf5NQYSD+ zNW`3Gm|KtWqZ$s7Rrn+D3CVO_$Uctm0BGZ{6O9leV_y`VGF>u3B}-i$S*_}Vvr|zR zK4PtuE83JU))PuHf}(9fWhL&z{$@me~l}c%34Ffnt-fB**ovJ2jb(n%=AwH`T6j9kR!f^}M zO`%0FMGb8a?03^Rj)mgrESB3&XX&9<<-(OPs|xWMXxbP_lOcmK+eeXhPoVH}?47=S ze?1kUWElCWqbUi3OW^mUC2;*jOAH~3I+T>K844JWn9yWQ!2n=U{jk@BL$kAO3Yb=W zzrfpzuV`2YIH>FAV)VFTOjn7K{Kv-p;{AE`j-Xf~*wNoU-VDM_nEd>SmeFob8r!+N zIJ6C46c#mQsi=~O7?$+T{@MMCP$|NaB;K?BJcZE2e!E~l zpZ7Y}d-EA;H?44<0EqcMjkFhhS3e-s2nz(-3U~4=)2zywp}{p<0+ZQVfUazqo}0*M zcwRBeBN78GVWtRT+nh@L9awo#Fy>Ms!!vDUEPY69gqlTi4oD+(GFu{ETy=yO_G=_R7p0mJ_L<>CG^h zGq;Qj0oDu7usc@96Y!3#qia^xe=}Mgjg+u}KeWGh6}{^-QVSVtP%XvoYlTd-P#!B` z4Ry1c>`>z*SPoS>_E4C@ZrvBFjo2}IRVY&lpH#W1Vda-5aLJ27JZu|cLz>AC2bH?8 zWCsAI+w-|L*NF?q=0Smh1honvP;IXsdNFW3T7A&rxWXX;A4cutVM}MH!tUO{1;i^* z)-NxKHoHS$wjTnR7aNnsaTto?t0}JfN5z|(^rfPGnFx4Ko8hoNm74Fg+_Z-p=%4QONHDVaq@KdgY;;_l1v!L-02A{sV46I@NGSgK%q+Y1` z7-X35wjS8bYHo4`FL?rp6@S%DN>zBH_ge9!=Pk8C{W?azpObU#J#UI6E-YCZ?`NVc z#_H9U*HijF89jb%ijds$B@=3=Vo&&WwoSs%Y}a-+CM}d$X{|a=seShZEZh53;8Aub z0fI=zm$5n>O~e4}%|!>sYYN#7Y^K5n(U@H%r2|MFIK0Bp|7^PGk650U`0E@5Ys_CG z)WE2Y^(;wwECDFBPfO7JFUwK1j$yv%+-*?E3kMLe>Dtf;7Jp?WXnJ~`YAm^MU)=G> z74hN~Jt;GOM_wdf@K@uU^Li&qSxl@+b8sfPg4>W6_zZ#lP}m~82L5goz-VH*Xna?Zp6miZ&{0fhy& z9-Vgp-QVhi!IO7y2?&1$M#0v`p?AA<^Cpjr7;jr0_=pI1UWc#Ioh>H-+$Pu_t}{PX za#a}u6u{J;TB+bUdNuOl%_Q)9Hl8WV>osey3}(s+XlrX^r`1DkW%Cf+*4)ADwg}4} zv7R#-5E)>}OkB`SljNQ3$25ynCT!Q+ES^ca%k?va$FlDT^Rie{oqHt)%;M04Ujr>2 zJC+9>Kp*iQ_jtq=HT>A9{2x9N2MMc*t1a23dn*B>L0NcchDW9OXm(ia(5*LeW5H1- zCBf%_%>(mMAM+n_3}0VBUVeXaqEju>Sg>^JH&b6pE-mntHNN&qgf&|G@ z!Wa1X4uu$G-`C{me?#U!qWvfP59hy(KFpk~9RE+R;`~>L)WkwZVqAL<9)o39L?mM_k(_Z&h%`N z`eC@GT;?t6cH*UP6}d|Q^Z$HZ(A(A2wCJ}_bwZd;vnv}id$1$1HJlR;ZM}xMx>@aF z4`ke^zWyM?vCzM2)`Gja73_Kx5OZD68&*N``*~rww!l0?a#M$u zU?9G{v;u$L80I*?PyF6`6^70Qq>!}YH>ir4QLv7c^qkEWs) zT~&kK2u01LZnb{h8XDj{IjXA-S$2r(9r-+B*C`m&vL*hyjfm^wcUh%jfT;$b*ky;0 z4x$C_sfh(1yLiP=LQI8B>gaD4nwJuZ zEQ<&>*jnj1nc2ul8)u==J0!7R?ihXUHzy=s`|Fyb`(lk0G~26GmB4i3mdrCze)n$+ zj)E#%O29irHpg7mF{t{TFe-3Q7o(M$!7KX9QD_rZB(NH!PIL{(h2mmVJKiB5LK6pu zdp%hG{Yi0gQskg}-F!CdMI{vs^0%&{pvrW* zY&i~i?1454mx6lX=I+(sQjQRKniEiXMg2X(tyBg=#p4QdLzyNyqXgt z<`>7jf-$_n{7OXBfQZud-k7&W${Go;Kl9^c7ud7kO&6N>ad(w6Qe#Z0?FARLL-3Y? z>Rq$+>GLqB^|B8DU-3&^-JLlebj=k*ueWrbP7OF!0qm5Cl|n!zSsRxc(2FBPGTxEz zxnX3D5G1iD(Aa?$%zYz<$q$V;{>?i@%~b(YD~kWeGB7?Z?4q0SF4~+-kLnZiS-TIj zB~7&#@u-?w`uBUGC5be%k;=h<1XBY-my5w~fbirbz}Zmg>d0jKKnCDSV4sS7#!vvH z5j201)>G^NsoijCz9@9VHDjyOX9m%7n6OfSgnp6wJ}9O2%smQIjX@|T&pbgSh|_v< zd0KPF;*JS{KQe7v3PuoJN709qPX6M_Rz%AP7ffye$Jo4uTElQDkGj>KNh-2x|lZu+hXQt%VMv3}Hi1W48C3m`dB9I`s90 zlJ^OU%-Gh{HtKb;jq~$wOGb(s?OME$w>H4y= zC)`HDgRbEF%hw7OS(1JM5^f)8uzAoV{TiEz{4t~W*_&(|*10gBjEN0KMTmTt^ZxlE zJ5{?$1U7(eS7H-v3CNE0kBQ06SdhVTPAP{9c~*RQR$+bR*(sxnIC4*Rp&{o=0hNxX zyX9HVjpWg%q0>}Dap*`QiYJ!_%1RSMh>}m{!N!JCn4MVD4FR(OrSK9(@GQDcvUp__ z=P{0a)T*FIe(YfJKGI>D@a_RkZ zE|DXLce*gezF>$Q>r*}dBQ*wc6~5H-tsqXbC1uc|(ClXPl_gWT30@`Pr@KRM&!S_~ zTmxkcirKk>_KScKv&`r%5o$ev5P&j`9)VKAX4D{BN(GFvNs%rFmVYW2c|#NQ)FEM&a?*nILkou*FKe;4p z83CaPWcJ4!jb?A75iknUuc2v8K2T+J7V1h%PtgHYi#WL}ZT7j%)#BR7SDNtSwDRg- z_T+cvxm~JT+wZ%$;x?<0E8}SZO(XU;6*pyg8?O||(PgI*owTZFF{7vLu2wpMS85=n z8bAbZs!u(7C@KnDc5ti%OXx>nge+oQ!8I|59j0TjspHs(wR8(e>KOWsx{J#0Lo9nN0LzB@ z^Q2W%{*({qQNbwjSOV_;1#Mlrgu^gmb0~D4?dzP9V$g@!iuQn>J((+4FEg|x2L*6f zn0c-q#YM$#tOxg~*;wio#8Wo@q)KRolIbcB)ANDy4W4)L#&Ao#O7IOsWQNbVuKZfB zOM(PT#w5zEd^ytudP`$z>Y(Ozu%0L>oPBG+5Ri|-yIt(1gP1*QL(|}dLXLhWXp~c! zdk-Gtl1CmzE=cHvfsenWT#d<2MU{_Myp++a1Otr0om~k|-gN_HStJ!@^Tt3z4wN^x z@bK5AZ2tzn0c3i{)lo5Cz^H}PtQ~`F946!m(Aq}}I|i~zmH<9)I;r~<9%Z_inTiN7 z)ZgVVy*rKCYes}BrYlysc4jvEtQ3l7*q)lM)G;W<+q_@fFsC2(wJk~Fgt!isb+ZG6 z2(8#}KcofpL+T1h8tRg#z^8kHi4L~ahz~>S9qKiS3LTqSI?A1x#h$g+P^p3wNo*C$ zYEXiSF$mG1DsL5FxKBDD2L~%08#C7}=YAB)D?6Mwt`zegG5h%ICQpoqgYKEy!xl;` zpwR)zqb89nGuE|{(62@y4@-&BYYL3IPVn|RGwT@nnBhe$%g}w{P8}^FsM!O3gNO?C z^=?ZjR-dX<3!t1?@F0BGC>43@{8#O6#3kkQe5>r?Ut#sVU_* z$!fh{Y>Hco_IHVv=_IhJ%G$o`U{Y=fa@Nc7+orfK2Fy=;Go$uO!pL&PegV)Ry3n+v z*cFx!tbk6=j!Q7NRyp9?+>QzRgAaebYXB#}OUb`;n?{c~+g;+JwJ3hf&GokL?o2tt zZH3dUmwSp5s?OD~-(>s0q|wHA|9!#%IumXpiB_faYDtc&V8Gh}e9MLw%7BNt>1go~ zqCvN#;YFNQ%b=wm8m=f&QPmYFg2B~#=NAD(dyguIq=S)0#Jm_Hh|=fE{)gAT!Q^VirUOH zYO}=jIT}OLjS2utjbOM+iwGq=ouUKiWAm(VMpE~r$wu+A`?^CT@1AR8GxfXdyLh8k za0ujlr!AK6z@jx@mq!XQJuiPTR^dh=s zRIR^3E?1NlNy7S;PAW1it0cm{x+UjUcV&vP+XL2awZnmApl1Wz^ddebx@mG1qia`% zqE`}4HM8;U-I#hSdBn`G3Nc`Bx&?8j7{6QlbjXdOi+OvY<`MA|4nxCtB~*wCpj_-R z0CluaZ4Oscy-c{A+A8F32XQ?R(-XNsT=1qW(3u_7^w2j3@W?AVAF@;>G@T#R%q)(J z_x;hDx+ib}m8<)!*CDn&P8Q4V@-xM=kak}OX zSiIFz+I*d_X;Z4Khyl7h(G>U*1b7T|YR=#HbIrIoWy(qr{_ZZyC9tkmVG(8+bry+V znVe_8%=2-x2G<2+lT@H%T``?sXbUs|^>!a6`(6}`J#U)AIQc1+*WFbu^ZmJ@D&Cy` zxRPQs5l7yb#J|AMu%4+(;0oi_f?r=7GU)E0)|O8NTK)! zq=PX=te*g`Z?(T6^W#sX*|;w#_Y9Thuzy!Qsy8|N;FHY064m|wIB1!0UE9r)z8=!a zSEWC@|KO+h`&u|!`NaPG_}bz3_5HU0Ce;g+w_iKq{~NW>fL?U>)${Gje16@Mv39+@ z{djP_+tq;`cN5cvIdJpy{g#3sH-p~;16(2dw;L*zz4>n|6_a}t&o^mr6g{8^hlFhWQH_<;IW6}A`e30pjbqdYk=-_Cz^9np+7$1Lmz&FF4RM_Y7kaR^;4v^V1CQcaSd8#nA_m@Jx}hd-DWgf;lVb!?f2681->UCroO zB6Yb_uK-=(iA`whbbnUYq_74(`8>cikeZITHTP0E&299n4-E&<>!*h0$evkEaf1|pVcmrA zYN~)g>q8F0f?Wv2a-f(mvFkO__QYQwTEFaj)!I)Qp)N+5^KwR}Q#64lg`)EHoV`E8 z%FZ5DFrxJsaP?lIe91?jb~~=h@VP5!X?`8yY~D2$B0AL)E-1%d6$Vol-9(G;D_}z} zYo=xx6Y)V=JJKB5jMevud%d`XdMaMYNnU5bnL|hJGCunoyVXgX-VW`t;oE-&RyMgu zn>L#8SAdu`E)n&yzijuetC`cpG<$#^Hq=3<$QocdiK=!|&7JHC7Za;xlv}%7!5uB7zG#nS zb`aT2&COjp?2;}v?Is|gChkJzz1J$u$y*ywf3@rMpCxTb6N_k(7A2;5d_7Q4)00X^ z=31=uT+05g^mB>&4wT)!u*5DiHfefN8s}edkxxQ4+6y(ZO$0;O%s>H&m5K;OB0P@y z%QiY-AYyr9xs?&OA*6S=WjQy%u6U^jj& z?iXRg&=p`D41l=1q$mnvuXlM`YtFYmy%FMSXtf<^&9tm*PG${)N?hE_kST5EWb($a zfgKvAK&PS2y(T@X8TB}a@+6I%iXOxvM9VSj5YeYih2O^Dj8ChDMgy$i>gM`V^^Lvn zC6h7Mgqi7z*+%9o+sWFdxJB)0A;*jUTX|VOXPovMtnx#M-z#qc5 zcz0k8ID$UMEuXL;e$~4ife5Cxj!WsY>Kd*WbjQh zsQA``p6idJo2K%g9Y*5bx2(~q1tsY7V>dZgc=y6d{w+p6wVs31GdWd z%SNrD=y)nt!Xs6s& zN#A2-!Ieqq#!)n6QTm2{MViM+F3irviS>t!9wK8MI@;e=-|0!DZ-NB>d4yzk)P8aI z&Lz%7!3%Cns6N7{Gkd&9EUF?5yI>~C)XH%~nt&5r6z;(fIq?{zA4ANkS|9v_3bHjX zCYB<;H^-Z^L=DdKuxdl+63HPiSO2E4=c+0Bj4IGm?G}|TeaF*wKuR%WVm+DP?0mx~ zhZn8Dc!`**Z$OmIywcf^o{4bgMm?I^-ke$DuR(92~7&}QDJ^SL5J@E*R zV1g#%(v6F*0(3>q4EAtTP&76-P6Yj+iZOoalhHue+E;4MaM!9VU!+s}#A=H!~ zS&PD>*mJT{c16D~_jEd7dr$bK+963X`dILIG)PB#d&{7l!FxMtqMCW(mES&wL%Vp% zETVi+a|cvaokdT%Nx68IsrIY+Rx7H$UcP=Kh?7r${se_$wT9u{GD1Vz=EJ!@uG>1nJ^LO)DL=nc-fD<42 z!_xOcf==Xy$B%^vR7F!b0)e(Y3~d;HF$xJ}2{e4dh-2|c-%3v8`}45Ad^_NeyljVC zFa_vs@mk4rCPOr5f11KIyjBuaD3`Q&bQ!L*lVYx2-c{fw?PmkUo6avzpSj2$Rw*a-cY|0p8_c} zfdj~0?sE=W1PKgFQr&aAm&r*5upv z4G)b9XsA+zsz?@2Bz5<7TdGGk76v>_wlqN`4}|tkSABZ9N_bHE@o*!#`U$SmY881G z7(X^9c7D0}UOd$`v6&U}Y;`-hfZ+DZ&}o1p&zU#FB;D9Ppx#505}S##xu+@{Dl;3$ zi#&QLJe)~1|3#IawV#gayj0GlXU7SvCv^#AtxSv`0<+_uQp48EEn_~HZkbW^3aC0y z-2scwMpo$Ri9h$R%Fqsoi~A_0JaqMLLT2_SL51LgyIpLN%aZbXvw|j@GjtTX&nbW7 z=h{cC_5ag(^Dk!B9AWyfq#dJ`=a|h~R+#Jl*7dy;o10 z=69G((6549Id);8_r9|6K~Xn~eMi%YkhjsTT{YjR*qLyu!CLUHf~EnY(KahV z%ARG9CWqGcoUuZ?7WNxJ!0xyrl5)wWwUf?(F$#q6FcJgqfvOaz*dYS#1}RL%qqwZN zbQLe1LX(d&5l-6MomGpY@112{OW^y%8~^*S^{sY!wg1b}+M^?q_8rkpV^`u=_Re|= zrONMkTB<09PIm{|*VxX{NZzgQ{=6-grQY8r5nZeGBKXEc-h_i%5%C2g5ci3+IRlqd zKHL}?x2EW&oq=^v(A%Q?R2FwD42UHZ#xe*M2xPPGfl#XAA-q9R@jLgl>lSeljUyuV z^J&0U1kuWP#GkfENGH>fYlT!o#}_e?k5YB3;3ITtf+UNuWBx)_ZwxDx7 z#?Mo<((WRhGl=9X!jss%-Xfa$lVX4Lk~C(~QuaQ0vbpgH$=%ZtFIwniOmRDNvZ#t& ze(1P*#KFCAj&3T7Q{g}^{i!=0GRoQ#x^3FtJ$}D+6rV0&HK(jq732@7e9x*S{ftY% zO@&?@pD}-acM;SZO25X{Rid1W1DVZt)&%)%_bh5zK1a*rC%L3TKsK+DYIc`GW)~ zq$5KGTCdw>^2X=5wr%28rC7H0{z-!>?xYV=Vi(jeT!y5;Q8zDBkxib>zb|d=t%gI7 z%Zo+^x9#N9V$6Q5KQ4R+iVhQS7Rz7XQ0~MXl|%NfzI7dJd!nVJ8#Ho65 zZlgH=Y{^`9Y=ylM0^t?%kkAPv}|SSkb`hlw}H0I6_1@prspS~ZLr>s{w5ww_TPn1P~n0#?LlLUazOn?5C zv1+j$yZXfOG8!^DDS*Cnq{mL#VCq<3h+m&II*vt9x)hFc6eZ^j`y^b*Ss*3}FD*#h zdV_t%N)n$O2@AyUp?WCwDKigRn7ThFOSv$~gW|R=c}4aMi*%0ANyI{4#L8B>X%%wk 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

p+N)0rRXiV1s= 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˻hr^^5`$8;5cXmxEJP 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 literal 0 HcmV?d00001 diff --git a/doc/testing-scenario.txt b/doc/testing-scenario.txt deleted file mode 100644 index 5f50f29bc..000000000 --- a/doc/testing-scenario.txt +++ /dev/null @@ -1,18 +0,0 @@ -Testing of PhpCompta scenario ------------------------------ -For each month -add invoice, card, expense - -print journal -> pdf, csv - -retrieve operation - -Upload piece - -create an user -create an modele -create an folder based on the last modele -grant to user -check security (what the user can do, check privilege) - - diff --git a/html/.htaccess b/html/.htaccess index 5893c3e8a..4a4ab8d17 100644 --- a/html/.htaccess +++ b/html/.htaccess @@ -6,6 +6,6 @@ php_value session.save_path /tmp php_value max_execution_time 240 php_value memory_limit 12M # for php 5 php_value upload_tmp_dir /tmp -AddDefaultCharset latin1 +AddDefaultCharset utf-8 php_value session.use_trans_sid 1 - +php_value error_reporting 10239 diff --git a/html/access.php b/html/access.php index e69de29bb..ea5d27a87 100644 --- a/html/access.php +++ b/html/access.php @@ -0,0 +1,142 @@ +'; +echo menu_tool('access'); +echo ''; +echo '

'; +/* + * Todo list + */ +echo JS_PROTOTYPE; +echo JS_TODO; +if ( isset($_REQUEST['save_todo_list'])) { + /* Save the new elt */ + $add_todo=new Todo_List($cn); + $add_todo->set_parameter('id',$_REQUEST['tl_id']); + $add_todo->set_parameter('title',$_REQUEST['p_title']); + $add_todo->set_parameter('desc',$_REQUEST['p_desc']); + $add_todo->set_parameter('date',$_REQUEST['p_date']); + $add_todo->save(); +} +$todo=new Todo_List($cn); +$array=$todo->load_all(); +echo '
'; +echo '
Liste des tâches'; +echo ''; +echo widget::button('add','Ajout','onClick="add_todo()"'); +if ( ! empty ($array) ) { + echo ''; + $nb=0; + foreach ($array as $row) { +if ( $nb % 2 == 0 ) $odd='class="odd" '; else $odd='class="even" '; +$nb++; + echo ''. + ''. + ''. + ''. + ''; + } + echo '
'. + $row['tl_date']. + ''. + $row['tl_title']. + ''. + widget::button('mod','M','onClick="todo_list_show('.$row['tl_id'].')"'). + widget::button('del','E','onClick="todo_list_remove('.$row['tl_id'].')"'). + '
'; +} +echo '
'; +echo '
'; +/* + * Mini Report + */ +$report=$user->get_mini_report(); +if ( $report != 0 ) { + $rapport=new Acc_Report($cn); + $rapport->id=$report; + echo '
'; + echo '
'.$rapport->get_name().''; + $exercice=$user->get_exercice(); + if ( $exercice == 0 ) { + echo ""; + } else { + $periode=new Periode($cn); + $limit=$periode->limit_year($exercice); + + $result=$rapport->get_row($limit['start'],$limit['end'],'periode'); + $ix=0; + echo ''; + foreach ($result as $row) { + $ix++; + $bgcolor=($ix%2==0)?' style="background-color:lightgrey"':''; + echo ''; + + echo ''. + '"; + echo ''; + } + echo '
'.$row['desc'].''.sprintf("% 10.2f",$row['montant'])." €
'; + } + echo '
'; + echo '
'; + } else { + echo '
'; + } +echo '
'; diff --git a/html/addon/class.ezpdf.php b/html/addon/class.ezpdf.php index dd5d723e3..6012e7aa8 100644 --- a/html/addon/class.ezpdf.php +++ b/html/addon/class.ezpdf.php @@ -604,7 +604,7 @@ function ezPrvtGetTextWidth($size,$text){ // ------------------------------------------------------------------------------ -function ezTable(&$data,$cols='',$title='',$options=''){ +function ezTable(&$data,$cols='',$title='',$options='',$utf8decode=false){ // add a table of information to the pdf document // $data is a two dimensional array // $cols (optional) is an associative array, the keys are the names of the columns from $data @@ -1054,6 +1054,7 @@ function ezTable(&$data,$cols='',$title='',$options=''){ } $this->y -= $options['rowGap']; foreach ($lines as $line){ + if($utf8decode)$line=utf8_decode($line); $line = $this->ezProcessText($line); $start=1; @@ -1552,4 +1553,4 @@ function uline($info){ // ------------------------------------------------------------------------------ } -?> \ No newline at end of file +?> diff --git a/html/addon/class.pdf.php b/html/addon/class.pdf.php index 34a15b17e..00fb086fd 100644 --- a/html/addon/class.pdf.php +++ b/html/addon/class.pdf.php @@ -1232,7 +1232,7 @@ function output($debug=0){ $this->checkAllHere(); $xref=array(); - $content="%PDF-1.3\n%\n"; + $content="%PDF-1.3\n%âãÏÓ\n"; // $content="%PDF-1.3\n"; $pos=strlen($content); foreach($this->objects as $k=>$v){ diff --git a/html/admin/htaccess.cfg b/html/admin/htaccess.cfg index 93f64799e..efc0742f3 100755 --- a/html/admin/htaccess.cfg +++ b/html/admin/htaccess.cfg @@ -5,5 +5,5 @@ php_value session.save_path c:\temp php_value max_execution_time 240 php_value memory_limit 12M # for php 5 php_value upload_tmp_dir /tmp -AddDefaultCharset latin1 +AddDefaultCharset utf8 diff --git a/html/admin/setup.php b/html/admin/setup.php index 7c63f5b26..a3d5314d6 100644 --- a/html/admin/setup.php +++ b/html/admin/setup.php @@ -61,188 +61,68 @@ h2.error { $inc_path=get_include_path(); if ( strpos($inc_path,";") != 0 ) { $new_path=$inc_path.';..\..\include;addon'; + $os=0; /* $os is 0 for unix */ } else { $new_path=$inc_path.':../../include:addon'; + $os=1; /* $os is 0 for windos */ } - set_include_path($new_path); +require_once('config_file.php'); +/* The config file is created here */ +if (isset($_POST['save_config'])) { + $url=config_file_create($_POST); + } + + +/* if the config file is not found we propose to create one */ +if ( is_writable ('..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'constant.php') == false ) { +echo '

On ne peut pas écrire dans le répertoire de phpcompta, changez-en les droits

'; +exit(); +} +if ( ! file_exists('..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'config.inc.php')) { + echo '
'; +echo '

Entrez les informations nécessaires à phpcompta

'; + echo config_file_form(); + echo widget::submit('save_config','Sauver la configuration'); + echo '
'; + exit(); + } include_once('constant.php'); include_once('postgres.php'); include_once('debug.php'); include_once('ac_common.php'); -/*! - ************************************************** - * \brief Get version of a database, the content of the - * table version - * - * \param $p_cn database connection - * - * \return version number - * +/* If htaccess file doesn't exists we create them here + * if os == 1 then windows, 0 means Unix */ -function GetVersion($p_cn) { - $Res=ExecSql($p_cn,"select val from version"); - $a=pg_fetch_array($Res,0); - return $a['val']; +$file='..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'.htaccess'; +if ( ! file_exists ( $file) ) { + $hFile=@fopen($file,'a+'); + if ( ! $hFile ) exit('Impossible d\'écrire dans le répertoire include'); + fwrite($hFile,'order deny,allow'."\n"); + fwrite($hFile,'deny from all'."\n"); + fclose($hFile); } -/*! ExecuteScript - ************************************************** - * \brief Execute a sql script - * - * \param $p_cn database - * \param $script script name - */ -function ExecuteScript($p_cn,$script) { - if ( DEBUG=='false' ) ob_start(); - $hf=fopen($script,'r'); - if ( $hf == false ) { - echo 'Ne peut ouvrir '.$script; - exit(); - } - $sql=""; - $flag_function=false; - while (!feof($hf)) { - $buffer=fgets($hf); - $buffer=str_replace ("$","\$",$buffer); - print $buffer."
"; - // comment are not execute - if ( substr($buffer,0,2) == "--" ) { - //echo "comment $buffer"; - continue; - } - // Blank Lines Are Skipped - If ( Strlen($buffer)==0) { - //echo "Blank $buffer"; - Continue; - } - if ( strpos(strtolower($buffer),"create function")===0 ) { - echo "found a function"; - $flag_function=true; - $sql=$buffer; - continue; - } - if ( strpos(strtolower($buffer),"create or replace function")===0 ) { - echo "found a function"; - $flag_function=true; - $sql=$buffer; - continue; - } - // No semi colon -> multiline command - if ( $flag_function== false && strpos($buffer,';') == false ) { - $sql.=$buffer; - continue; - } - if ( $flag_function ) { - if ( strpos(strtolower($buffer), "language plpgsql") === false && - strpos(strtolower($buffer), "language 'plpgsql'") === false ) { - $sql.=$buffer; - continue; - } - } else { - // cut the semi colon - $buffer=str_replace (';','',$buffer); - } - $sql.=$buffer; -echo_debug('setup.php',__LINE__,"Execute sql $sql"); - if ( ExecSql($p_cn,$sql,false) == false ) { - Rollback($p_cn); - if ( DEBUG=='false' ) ob_end_clean(); - print "ERROR : $sql"; - exit(); - } - $sql=""; - $flag_function=false; - print "
"; - } // while (feof) - fclose($hf); - if ( DEBUG=='false' ) ob_end_clean(); -} -/*!\brief loop to apply all the path to a folder or - * a template - * \param $p_cn database connexion - * \param $p_name database name - * - */ -function apply_patch($p_cn,$p_name) -{ - $MaxVersion=DBVERSION-1; - echo '
    '; - for ( $i = 4;$i <= $MaxVersion;$i++) - { - $to=$i+1; - if ( GetVersion($p_cn) <= $i ) { - echo "
  • Patching ".$p_name. - " from the version ".GetVersion($p_cn)." to $to
  • "; +$file='..'.DIRECTORY_SEPARATOR.'.htaccess'; +if ( ! file_exists ( $file) ) { + $hFile=@fopen($file,'a+'); + if ( ! $hFile ) exit('Impossible d\'écrire dans le répertoire html'); + $array=array("php_flag magic_quotes_gpc off", + "php_flag session.auto_start on", + "php_value max_execution_time 240", + "php_value memory_limit 12M", + "AddDefaultCharset utf-8", + "php_value error_reporting 10239", + "php_flag short_open_tag on", + "php_value upload_max_filesize 10M"); - ExecuteScript($p_cn,'sql/patch/upgrade'.$i.'.sql'); - if ( DEBUG=='false' ) ob_start(); - // specific for version 4 - if ( $i == 4 ) - { - $sql="select jrn_def_id from jrn_def "; - $Res=ExecSql($p_cn,$sql); - $Max=pg_NumRows($Res); - for ($seq=0;$seq<$Max;$seq++) { - $row=pg_fetch_array($Res,$seq); - $sql=sprintf ("create sequence s_jrn_%d",$row['jrn_def_id']); - ExecSql($p_cn,$sql); - } - } - // specific to version 7 - if ( $i == 7 ) - { - // now we use sequence instead of computing a max - // - $Res2=ExecSql($p_cn,'select coalesce(max(jr_grpt_id),1) as l from jrn'); - $Max2= pg_NumRows($Res2) ; - if ( $Max2 == 1) { - $Row=pg_fetch_array($Res2,0); - var_dump($Row); - $M=$Row['l']; - ExecSql($p_cn,"select setval('s_grpt',$M,true)"); - } - } - // specific to version 17 - if ( $i == 17 ) - { - ExecuteScript($p_cn,'sql/patch/upgrade17.sql'); - $max=getDbValue($p_cn,'select last_value from s_jnt_fic_att_value'); - AlterSequence($p_cn,'s_jnt_fic_att_value',$max+1); - } // version - - // reset sequence in the modele - //-- - if ( $i == 30 && $p_name=="mod" ) - { - $a_seq=array('s_jrn','s_jrn_op','s_centralized', - 's_stock_goods','c_order','s_central'); - foreach ($a_seq as $seq ) { - $sql=sprintf("select setval('%s',1,false)",$seq); - $Res=ExecSql($p_cn,$sql); - } - $sql="select jrn_def_id from jrn_def "; - $Res=ExecSql($p_cn,$sql); - $Max=pg_NumRows($Res); - for ($seq=0;$seq<$Max;$seq++) { - $row=pg_fetch_array($Res,$seq); - $sql=sprintf ("select setval('s_jrn_%d',1,false)",$row['jrn_def_id']); - ExecSql($p_cn,$sql); - } - - } - if ( $i == 36 ) { - /* check the country and apply the path */ - $res=ExecSql($p_cn,"select pr_value from parameter where pr_id='MY_COUNTRY'"); - $country=pg_fetch_result($res,0,0); - ExecuteScript($p_cn,"sql/patch/upgrade36.".$country.".sql"); - ExecSql($p_cn,'update tmp_pcmn set pcm_type=find_pcm_type(pcm_val)'); - } - if ( DEBUG == 'false') ob_end_clean(); - } - } - echo '
'; + if ( $os == 0 ) + fwrite($hFile,'php_value include_path .;..\..\include;..\include;addon'."\n"); + else + fwrite($hFile,'php_value include_path .:../../include:../include:addon'."\n"); + foreach ($array as $value ) fwrite($hFile,$value."\n"); + fclose($hFile); } //---------------------------------------------------------------------- // End functions @@ -280,6 +160,12 @@ if ( in_array('pgsql',$module) == false ) $flag_php++; } +if ( in_array('bcmath',$module) == false ) +{ + print '

Désolé mais soit vous n\'avez pas installé le package pour bcmath soit php n\'a pas pas été compilé avec les bonnes options

'; + $flag_php++; +} + if ( ini_get("max_execution_time") < 60 ) { print '

max_execution_time should be set to 60 minimum

'; } @@ -408,35 +294,35 @@ if ($account == 0 ) { echo "Creation of ".domaine."account_repository"; if ( DEBUG=='false') ob_start(); - ExecSql($cn,"create database ".domaine."account_repository encoding='latin1'"); + ExecSql($cn,"create database ".domaine."account_repository encoding='utf8'"); $cn=DbConnect(); StartSql($cn); - ExecuteScript($cn,"sql/account_repository/schema.sql"); - ExecuteScript($cn,"sql/account_repository/data.sql"); - ExecuteScript($cn,"sql/account_repository/constraint.sql"); + execute_script($cn,"sql/account_repository/schema.sql"); + execute_script($cn,"sql/account_repository/data.sql"); + execute_script($cn,"sql/account_repository/constraint.sql"); Commit($cn); if ( DEBUG=='false') ob_end_clean(); echo "Creation of Modele1"; if ( DEBUG=='false') ob_start(); - ExecSql($cn,"create database ".domaine."mod1 encoding='latin1'"); + ExecSql($cn,"create database ".domaine."mod1 encoding='utf8'"); $cn=DbConnect(1,'mod'); StartSql($cn); - ExecuteScript($cn,'sql/mod1/schema.sql'); - ExecuteScript($cn,'sql/mod1/data.sql'); - ExecuteScript($cn,'sql/mod1/constraint.sql'); + execute_script($cn,'sql/mod1/schema.sql'); + execute_script($cn,'sql/mod1/data.sql'); + execute_script($cn,'sql/mod1/constraint.sql'); Commit($cn); if ( DEBUG=='false') ob_end_clean(); echo "Creation of Modele2"; - ExecSql($cn,"create database ".domaine."mod2 encoding='latin1'"); + ExecSql($cn,"create database ".domaine."mod2 encoding='utf8'"); $cn=DbConnect(2,'mod'); StartSql($cn); if ( DEBUG=='false') { ob_start(); } - ExecuteScript($cn,'sql/mod1/schema.sql'); - ExecuteScript($cn,'sql/mod2/data.sql'); - ExecuteScript($cn,'sql/mod1/constraint.sql'); + execute_script($cn,'sql/mod1/schema.sql'); + execute_script($cn,'sql/mod2/data.sql'); + execute_script($cn,'sql/mod1/constraint.sql'); Commit($cn); if ( DEBUG=='false') ob_end_clean(); @@ -457,7 +343,7 @@ if ( ($Res=ExecSql($a,"select * from ac_users") ) == false ) { exit ("

".__LINE__." test has failed !!!

"); } else print "Connect to database success
"; -echo "

Congratulation : Installation réssie

"; +echo "

Félicitation : Installation réussie

"; echo '
'; echo "

Mise a jour du systeme

"; @@ -500,14 +386,14 @@ echo '
'; echo "

Mise à jour Repository

"; $cn=DbConnect(); if ( DEBUG == 'false') ob_start(); - $MaxVersion=7; + $MaxVersion=8; for ($i=4;$i<= $MaxVersion;$i++) { - if ( GetVersion($cn) <= $i ) { - ExecuteScript($cn,'sql/patch/ac-upgrade'.$i.'.sql'); + if ( get_version($cn) <= $i ) { + execute_script($cn,'sql/patch/ac-upgrade'.$i.'.sql'); } } if (DEBUG=='false') ob_end_clean(); - echo "

Voilà tout est installé ;-)

"; + echo "

Voilà tout est installé ;-)

"; ?> diff --git a/html/admin/sql/account_repository/constraint.sql b/html/admin/sql/account_repository/constraint.sql index 83f75685a..0ae84e958 100644 --- a/html/admin/sql/account_repository/constraint.sql +++ b/html/admin/sql/account_repository/constraint.sql @@ -1,4 +1,4 @@ - SET client_encoding = 'LATIN1'; + SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = public, pg_catalog; diff --git a/html/admin/sql/account_repository/data.sql b/html/admin/sql/account_repository/data.sql index f8ccc1b72..31b05fddd 100644 --- a/html/admin/sql/account_repository/data.sql +++ b/html/admin/sql/account_repository/data.sql @@ -2,7 +2,7 @@ -- PostgreSQL database dump -- -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; @@ -59,8 +59,8 @@ INSERT INTO ac_users (use_id, use_first_name, use_name, use_login, use_active, u -- Data for Name: modeledef; Type: TABLE DATA; Schema: public; Owner: phpcompta -- -INSERT INTO modeledef (mod_id, mod_name, mod_desc) VALUES (1, '(BE) Basique', 'Comptabilit Belge, tout doit tre adapte'); -INSERT INTO modeledef (mod_id, mod_name, mod_desc) VALUES (2, '(FR) Basique', 'Comptabilit Franaise, tout doit tre adapte'); +INSERT INTO modeledef (mod_id, mod_name, mod_desc) VALUES (1, '(BE) Basique', 'Comptabilité Belge, tout doit être adaptée'); +INSERT INTO modeledef (mod_id, mod_name, mod_desc) VALUES (2, '(FR) Basique', 'Comptabilité Française, tout doit être adaptée'); -- diff --git a/html/admin/sql/account_repository/make-sql b/html/admin/sql/account_repository/make-sql index ef1d6eb2a..790a29d72 100755 --- a/html/admin/sql/account_repository/make-sql +++ b/html/admin/sql/account_repository/make-sql @@ -5,7 +5,7 @@ awk '/CREATE TABLE/,/;/ { print $0;}' < schema.sql >> table.sql awk '/CREATE VIEW/,/;/ { print $0;}' < schema.sql > view.sql awk '/INDEX/,/;/ { print $0;}' < schema.sql > index.sql ( -echo " SET client_encoding = 'LATIN1';" +echo " SET client_encoding = 'utf8';" echo " SET check_function_bodies = false;" echo " SET client_min_messages = warning;" echo "SET search_path = public, pg_catalog;" diff --git a/html/admin/sql/account_repository/schema.sql b/html/admin/sql/account_repository/schema.sql index 1fe96f50c..8391c754d 100644 --- a/html/admin/sql/account_repository/schema.sql +++ b/html/admin/sql/account_repository/schema.sql @@ -1,4 +1,4 @@ -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; diff --git a/html/admin/sql/mod1/comment.sql b/html/admin/sql/mod1/comment.sql index cba6ad648..ba743d1b1 100644 --- a/html/admin/sql/mod1/comment.sql +++ b/html/admin/sql/mod1/comment.sql @@ -39,7 +39,7 @@ COMMENT ON TABLE plan_analytique IS 'Plan Analytique (max 5)'; COMMENT ON TABLE poste_analytique IS 'Poste Analytique'; COMMENT ON TABLE quant_sold IS 'Contains about invoice for customer'; COMMENT ON TABLE stock_goods IS 'About the goods'; -COMMENT ON TABLE tmp_pcmn IS 'Plan comptable minimum normalis'; +COMMENT ON TABLE tmp_pcmn IS 'Plan comptable minimum normalisé'; COMMENT ON TABLE tva_rate IS 'Rate of vat'; COMMENT ON TABLE user_local_pref IS 'The user''s local parameter '; COMMENT ON COLUMN user_local_pref.user_id IS 'user''s login '; diff --git a/html/admin/sql/mod1/constraint.sql b/html/admin/sql/mod1/constraint.sql index cfef9172e..75175c3e4 100644 --- a/html/admin/sql/mod1/constraint.sql +++ b/html/admin/sql/mod1/constraint.sql @@ -1,4 +1,4 @@ - SET client_encoding = 'LATIN1'; + SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = public, pg_catalog; diff --git a/html/admin/sql/mod1/data.sql b/html/admin/sql/mod1/data.sql index 983f94cc9..b70d7d92f 100644 --- a/html/admin/sql/mod1/data.sql +++ b/html/admin/sql/mod1/data.sql @@ -1,5 +1,5 @@ -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; @@ -227,24 +227,24 @@ SELECT pg_catalog.setval('seq_doc_type_9', 1, false); INSERT INTO "action" (ac_id, ac_description) VALUES (4, 'Impression'); -INSERT INTO "action" (ac_id, ac_description) VALUES (6, 'Mise jour Plan Comptable'); +INSERT INTO "action" (ac_id, ac_description) VALUES (6, 'Mise à jour Plan Comptable'); INSERT INTO "action" (ac_id, ac_description) VALUES (7, 'Gestion Journaux'); -INSERT INTO "action" (ac_id, ac_description) VALUES (8, 'Paramtres'); +INSERT INTO "action" (ac_id, ac_description) VALUES (8, 'Paramètres'); INSERT INTO "action" (ac_id, ac_description) VALUES (10, 'Centralise'); INSERT INTO "action" (ac_id, ac_description) VALUES (16, 'Voir le stock'); INSERT INTO "action" (ac_id, ac_description) VALUES (17, 'Modifie le stock'); INSERT INTO "action" (ac_id, ac_description) VALUES (20, 'Voir la balance des comptes'); -INSERT INTO "action" (ac_id, ac_description) VALUES (21, 'Import et export des critures d''ouverture'); +INSERT INTO "action" (ac_id, ac_description) VALUES (21, 'Import et export des écritures d''ouverture'); INSERT INTO "action" (ac_id, ac_description) VALUES (28, 'Module Suivi Document'); INSERT INTO "action" (ac_id, ac_description) VALUES (22, 'Module Client'); INSERT INTO "action" (ac_id, ac_description) VALUES (24, 'Module Fournisseur'); INSERT INTO "action" (ac_id, ac_description) VALUES (26, 'Module Administration'); INSERT INTO "action" (ac_id, ac_description) VALUES (30, 'Module Gestion'); INSERT INTO "action" (ac_id, ac_description) VALUES (1, 'Lecture du Grand-Livre'); -INSERT INTO "action" (ac_id, ac_description) VALUES (31, 'Gestion des priodes comptables'); +INSERT INTO "action" (ac_id, ac_description) VALUES (31, 'Gestion des périodes comptables'); INSERT INTO "action" (ac_id, ac_description) VALUES (3, 'Lecture des fiches'); INSERT INTO "action" (ac_id, ac_description) VALUES (15, 'Ajout de fiche et modification'); -INSERT INTO "action" (ac_id, ac_description) VALUES (5, 'Cration et modifications des rapports'); +INSERT INTO "action" (ac_id, ac_description) VALUES (5, 'Création et modifications des rapports'); INSERT INTO "action" (ac_id, ac_description) VALUES (50, 'Definir les Plans Analytiques et les postes'); INSERT INTO "action" (ac_id, ac_description) VALUES (51, 'Impression CA'); INSERT INTO "action" (ac_id, ac_description) VALUES (52, 'Operations Diverses CA'); @@ -256,28 +256,28 @@ INSERT INTO "action" (ac_id, ac_description) VALUES (52, 'Operations Diverses CA INSERT INTO attr_def (ad_id, ad_text) VALUES (1, 'Nom'); INSERT INTO attr_def (ad_id, ad_text) VALUES (2, 'Taux TVA'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (3, 'Numro de compte'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (3, 'Numéro de compte'); INSERT INTO attr_def (ad_id, ad_text) VALUES (4, 'Nom de la banque'); INSERT INTO attr_def (ad_id, ad_text) VALUES (5, 'Poste Comptable'); INSERT INTO attr_def (ad_id, ad_text) VALUES (6, 'Prix vente'); INSERT INTO attr_def (ad_id, ad_text) VALUES (7, 'Prix achat'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (8, 'Dure Amortissement'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (8, 'Durée Amortissement'); INSERT INTO attr_def (ad_id, ad_text) VALUES (9, 'Description'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (10, 'Date dbut'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (10, 'Date début'); INSERT INTO attr_def (ad_id, ad_text) VALUES (11, 'Montant initial'); INSERT INTO attr_def (ad_id, ad_text) VALUES (12, 'Personne de contact '); -INSERT INTO attr_def (ad_id, ad_text) VALUES (13, 'numro de tva '); +INSERT INTO attr_def (ad_id, ad_text) VALUES (13, 'numéro de tva '); INSERT INTO attr_def (ad_id, ad_text) VALUES (14, 'Adresse '); INSERT INTO attr_def (ad_id, ad_text) VALUES (16, 'pays '); -INSERT INTO attr_def (ad_id, ad_text) VALUES (17, 'tlphone '); +INSERT INTO attr_def (ad_id, ad_text) VALUES (17, 'téléphone '); INSERT INTO attr_def (ad_id, ad_text) VALUES (18, 'email '); INSERT INTO attr_def (ad_id, ad_text) VALUES (19, 'Gestion stock'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (20, 'Partie fiscalement non dductible'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (21, 'TVA non dductible'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (22, 'TVA non dductible rcuprable par l''impt'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (20, 'Partie fiscalement non déductible'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (21, 'TVA non déductible'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (22, 'TVA non déductible récupérable par l''impôt'); INSERT INTO attr_def (ad_id, ad_text) VALUES (23, 'Quick Code'); INSERT INTO attr_def (ad_id, ad_text) VALUES (24, 'Ville'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (25, 'Socit'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (25, 'Société'); INSERT INTO attr_def (ad_id, ad_text) VALUES (26, 'Fax'); INSERT INTO attr_def (ad_id, ad_text) VALUES (27, 'GSM'); INSERT INTO attr_def (ad_id, ad_text) VALUES (15, 'code postal'); @@ -489,7 +489,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (109, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (110, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (111, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (112, '610001'); -INSERT INTO attr_value (jft_id, av_text) VALUES (113, 'Electricit'); +INSERT INTO attr_value (jft_id, av_text) VALUES (113, 'Electricité'); INSERT INTO attr_value (jft_id, av_text) VALUES (114, '1'); INSERT INTO attr_value (jft_id, av_text) VALUES (115, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (117, 'Loyer'); @@ -501,7 +501,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (122, '3'); INSERT INTO attr_value (jft_id, av_text) VALUES (120, '610003'); INSERT INTO attr_value (jft_id, av_text) VALUES (123, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (124, '610004'); -INSERT INTO attr_value (jft_id, av_text) VALUES (125, 'Matriel bureau'); +INSERT INTO attr_value (jft_id, av_text) VALUES (125, 'Matériel bureau'); INSERT INTO attr_value (jft_id, av_text) VALUES (126, '1'); INSERT INTO attr_value (jft_id, av_text) VALUES (127, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (134, '7000002'); @@ -517,7 +517,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (131, '15'); INSERT INTO attr_value (jft_id, av_text) VALUES (132, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (133, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (140, '7000003'); -INSERT INTO attr_value (jft_id, av_text) VALUES (141, 'Dplacement'); +INSERT INTO attr_value (jft_id, av_text) VALUES (141, 'Déplacement'); INSERT INTO attr_value (jft_id, av_text) VALUES (142, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (143, '50'); INSERT INTO attr_value (jft_id, av_text) VALUES (144, ''); @@ -558,10 +558,10 @@ INSERT INTO bilan (b_id, b_name, b_file_template, b_file_form, b_type) VALUES (1 -INSERT INTO document_state (s_id, s_value) VALUES (1, 'Envoy'); +INSERT INTO document_state (s_id, s_value) VALUES (1, 'Envoyé'); INSERT INTO document_state (s_id, s_value) VALUES (2, 'Brouillon'); INSERT INTO document_state (s_id, s_value) VALUES (3, 'A envoyer'); -INSERT INTO document_state (s_id, s_value) VALUES (4, 'Reu'); +INSERT INTO document_state (s_id, s_value) VALUES (4, 'Reçu'); @@ -613,17 +613,17 @@ INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (1, 'Vente S INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (2, 'Achat Marchandises', 604); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (3, 'Achat Service et biens divers', 61); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (4, 'Banque', 5500); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (5, 'Prt > a un an', 17); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (6, 'Prt < a un an', 430); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (5, 'Prêt > a un an', 17); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (6, 'Prêt < a un an', 430); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (8, 'Fournisseurs', 440); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (9, 'Clients', 400); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (10, 'Salaire Administrateur', 6200); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (11, 'Salaire Ouvrier', 6203); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (12, 'Salaire Employ', 6202); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (13, 'Dpenses non admises', 674); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (12, 'Salaire Employé', 6202); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (13, 'Dépenses non admises', 674); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (14, 'Administration des Finances', NULL); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (15, 'Autres fiches', NULL); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (7, 'Matriel amortir', 2400); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (7, 'Matériel à amortir', 2400); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (16, 'Contact', NULL); @@ -631,10 +631,10 @@ INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (16, 'Contac INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000398, 3000000, 1, 'Prestation [ case 03 ]', '[700%]-[7000005]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000399, 3000000, 2, 'Prestation intra [ case 47 ]', '[7000005]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000400, 3000000, 3, 'Tva due [case 54]', '[4513]+[4512]+[4511] FROM=01.2005'); -INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000401, 3000000, 4, 'Marchandises, matire premire et auxiliaire [case 81 ]', '[60%]'); +INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000401, 3000000, 4, 'Marchandises, matière première et auxiliaire [case 81 ]', '[60%]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000402, 3000000, 7, 'Service et bien divers [case 82]', '[61%]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000403, 3000000, 8, 'bien d''invest [ case 83 ]', '[2400%]'); -INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000404, 3000000, 9, 'TVA dductible [ case 59 ]', 'abs([4117]-[411%])'); +INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000404, 3000000, 9, 'TVA déductible [ case 59 ]', 'abs([4117]-[411%])'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000405, 3000000, 8, 'TVA non ded -> voiture', '[610022]*0.21/2'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000406, 3000000, 9, 'Acompte TVA', '[4117]'); @@ -650,7 +650,7 @@ INSERT INTO format_csv_banque (name, include_file) VALUES ('Dexia', 'dexia_be.in -INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA dclaration Belge'); +INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA déclaration Belge'); @@ -887,12 +887,12 @@ INSERT INTO jnt_fic_attr (fd_id, ad_id, jnt_id) VALUES (4, 24, 52); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (2, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (4, 'Voir Impays', 'Voir toutes les factures non payes', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (1, 'Nouvelle', 'Cration d''une facture', 'user_jrn.php', 'action=insert_vente&blank', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (10, 'Nouveau', 'Encode un nouvel achat (matriel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'ACH'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (4, 'Voir Impayés', 'Voir toutes les factures non payées', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'VEN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (1, 'Nouvelle', 'Création d''une facture', 'user_jrn.php', 'action=insert_vente&blank', 'FR', 'VEN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (10, 'Nouveau', 'Encode un nouvel achat (matériel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'ACH'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (12, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'ACH'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (14, 'Voir Impays', 'Voir toutes les factures non payes', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'ACH'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (20, 'Nouveau', 'Encode un nouvel achat (matriel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'FIN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (14, 'Voir Impayés', 'Voir toutes les factures non payées', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'ACH'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (20, 'Nouveau', 'Encode un nouvel achat (matériel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'FIN'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (22, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'FIN'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (30, 'Nouveau', NULL, 'user_jrn.php', 'action=new&blank', 'FR', 'ODS'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (32, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'ODS'); @@ -900,10 +900,10 @@ INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_ -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (4, 'Opration Diverses', NULL, NULL, NULL, NULL, 5, 5, false, NULL, 'ODS', 'ODS-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (4, 'Opération Diverses', NULL, NULL, NULL, NULL, 5, 5, false, NULL, 'ODS', 'ODS-01'); INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (1, 'Financier', '5* ', '5*', '3,2,4', '3,2,4', 5, 5, false, NULL, 'FIN', 'FIN-01'); -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (3, 'Achat', '6*', '4*', '5', '4', 1, 3, true, 'chance', 'ACH', 'ACH-01'); -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (2, 'Vente', '4*', '7*', '2', '6', 2, 1, true, 'chance', 'VEN', 'VEN-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (3, 'Achat', '6*', '4*', '5', '4', 1, 3, true, 'échéance', 'ACH', 'ACH-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (2, 'Vente', '4*', '7*', '2', '6', 2, 1, true, 'échéance', 'VEN', 'VEN-01'); @@ -913,7 +913,7 @@ INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_ INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('FIN', 'Financier'); INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('VEN', 'Vente'); INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ACH', 'Achat'); -INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ODS', 'Oprations Diverses'); +INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ODS', 'Opérations Diverses'); @@ -943,15 +943,15 @@ INSERT INTO parameter (pr_id, pr_value) VALUES ('MY_COUNTRY', 'BE'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('DNA', '6740', 'Dpense non dductible'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('DNA', '6740', 'Dépense non déductible'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CUSTOMER', '400', 'Poste comptable de base pour les clients'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('COMPTE_TVA', '451', 'TVA payer'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('COMPTE_TVA', '451', 'TVA à payer'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('BANQUE', '550', 'Poste comptable de base pour les banques'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VIREMENT_INTERNE', '58', 'Poste Comptable pour les virements internes'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('COMPTE_COURANT', '56', 'Poste comptable pour le compte courant'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CAISSE', '57', 'Poste comptable pour la caisse'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('TVA_DNA', '6740', 'Tva non dductible s'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('TVA_DED_IMPOT', '619000', 'Tva dductible par l''impt'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('TVA_DNA', '6740', 'Tva non déductible s'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('TVA_DED_IMPOT', '619000', 'Tva déductible par l''impôt'); INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VENTE', '70', 'Poste comptable de base pour les ventes'); @@ -1005,349 +1005,349 @@ INSERT INTO parm_periode (p_id, p_start, p_end, p_exercice, p_closed, p_central) INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (10, 'Capital ', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040003, 'Petit matriel', 604); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (11, 'Prime d''mission ', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (12, 'Plus Value de rvaluation ', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (13, 'Rserve ', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (130, 'Rserve lgale', 13); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (131, 'Rserve indisponible', 13); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1310, 'Rserve pour actions propres', 131); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040003, 'Petit matériel', 604); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (11, 'Prime d''émission ', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (12, 'Plus Value de réévaluation ', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (13, 'Réserve ', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (130, 'Réserve légale', 13); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (131, 'Réserve indisponible', 13); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1310, 'Réserve pour actions propres', 131); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040004, 'Assurance', 604); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (55000001, 'Caisse', 5500); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (133, 'Rserves disponibles', 13); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (14, 'Bnfice ou perte reporte', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (140, 'Bnfice report', 14); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (141, 'Perte reporte', 14); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (133, 'Réserves disponibles', 13); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (14, 'Bénéfice ou perte reportée', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (140, 'Bénéfice reporté', 14); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (141, 'Perte reportée', 14); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (15, 'Subside en capital', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (16, 'Provisions pour risques et charges', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (160, 'Provisions pour pensions et obligations similaires', 16); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (161, 'Provisions pour charges fiscales', 16); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (162, 'Provisions pour grosses rparation et gros entretien', 16); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (17, ' Dettes plus d''un an', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (170, 'Emprunts subordonns', 17); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (162, 'Provisions pour grosses réparation et gros entretien', 16); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (17, ' Dettes à plus d''un an', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (170, 'Emprunts subordonnés', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1700, 'convertibles', 170); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1701, 'non convertibles', 170); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (171, 'Emprunts subordonns', 17); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (171, 'Emprunts subordonnés', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1710, 'convertibles', 170); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1711, 'non convertibles', 170); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (172, ' Dettes de locations financement', 17); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (173, ' Etablissement de crdit', 17); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (173, ' Etablissement de crédit', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1730, 'Dettes en comptes', 173); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1731, 'Promesses', 173); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1732, 'Crdits d''acceptation', 173); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1732, 'Crédits d''acceptation', 173); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (174, 'Autres emprunts', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (175, 'Dettes commerciales', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1750, 'Fournisseurs', 175); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1751, 'Effets payer', 175); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (176, 'Acomptes reus sur commandes', 17); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (178, 'Cautionnement reus en numraires', 17); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1751, 'Effets à payer', 175); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (176, 'Acomptes reçus sur commandes', 17); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (178, 'Cautionnement reçus en numéraires', 17); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (179, 'Dettes diverses', 17); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (20, 'Frais d''tablissement', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (20, 'Frais d''établissement', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (200, 'Frais de constitution et d''augmentation de capital', 20); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (201, ' Frais d''mission d''emprunts et primes de remboursement', 20); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (202, 'Autres frais d''tablissement', 20); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (201, ' Frais d''émission d''emprunts et primes de remboursement', 20); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (202, 'Autres frais d''établissement', 20); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (204, 'Frais de restructuration', 20); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (21, 'Immobilisations incorporelles', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (210, 'Frais de recherche et de dveloppement', 21); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (210, 'Frais de recherche et de développement', 21); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (211, 'Concessions, brevet, licence savoir faire, marque et droit similaires', 21); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (212, 'Goodwill', 21); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (213, 'Acomptes verss', 21); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (213, 'Acomptes versés', 21); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (22, 'Terrains et construction', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (220, 'Terrains', 22); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (221, 'Construction', 22); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (222, 'Terrains btis', 22); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (223, 'Autres droits rels sur des immeubles', 22); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (222, 'Terrains bâtis', 22); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (223, 'Autres droits réels sur des immeubles', 22); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (23, ' Installations, machines et outillages', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (24, 'Mobilier et Matriel roulant', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (25, 'Immobilisations dtenus en location-financement et droits similaires', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (24, 'Mobilier et Matériel roulant', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (25, 'Immobilisations détenus en location-financement et droits similaires', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (250, 'Terrains', 25); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (251, 'Construction', 25); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (252, 'Terrains btis', 25); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (253, 'Mobilier et matriels roulants', 25); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (252, 'Terrains bâtis', 25); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (253, 'Mobilier et matériels roulants', 25); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (26, 'Autres immobilisations corporelles', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (27, 'Immobilisations corporelles en cours et acomptes verss', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (28, 'Immobilisations financires', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (280, 'Participation dans des entreprises lies', 28); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (27, 'Immobilisations corporelles en cours et acomptes versés', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (28, 'Immobilisations financières', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (280, 'Participation dans des entreprises liées', 28); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2800, 'Valeur d''acquisition', 280); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2801, 'Montants non-appels(-)', 280); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2808, 'Plus-values actes', 280); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2809, 'Rductions de valeurs actes', 280); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (281, 'Crance sur des entreprises lies', 28); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2810, 'Crance en compte', 281); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2811, 'Effets recevoir', 281); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2812, 'Titre reveny fixe', 281); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2817, 'Crances douteuses', 281); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2819, 'Rduction de valeurs actes', 281); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2801, 'Montants non-appelés(-)', 280); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2808, 'Plus-values actées', 280); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2809, 'Réductions de valeurs actées', 280); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (281, 'Créance sur des entreprises liées', 28); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2810, 'Créance en compte', 281); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2811, 'Effets à recevoir', 281); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2812, 'Titre à reveny fixe', 281); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2817, 'Créances douteuses', 281); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2819, 'Réduction de valeurs actées', 281); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (282, 'Participations dans des entreprises avec lesquelles il existe un lien de participation', 28); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2820, 'Valeur d''acquisition', 282); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2821, 'Montants non-appels(-)', 282); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2828, 'Plus-values actes', 282); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2829, 'Rductions de valeurs actes', 282); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (283, 'Crances sur des entreprises avec lesquelles existe un lien de participation', 28); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2830, 'Crance en compte', 283); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2831, 'Effets recevoir', 283); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2821, 'Montants non-appelés(-)', 282); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2828, 'Plus-values actées', 282); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2829, 'Réductions de valeurs actées', 282); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (283, 'Créances sur des entreprises avec lesquelles existe un lien de participation', 28); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2830, 'Créance en compte', 283); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2831, 'Effets à recevoir', 283); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (57, 'Caisse', 5); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2832, 'Titre revenu fixe', 283); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2837, 'Crances douteuses', 283); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2839, 'Rduction de valeurs actes', 283); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2832, 'Titre à revenu fixe', 283); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2837, 'Créances douteuses', 283); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2839, 'Réduction de valeurs actées', 283); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (284, 'Autres actions et parts', 28); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2840, 'Valeur d''acquisition', 284); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2841, 'Montants non-appels(-)', 284); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2848, 'Plus-values actes', 284); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2849, 'Rductions de valeurs actes', 284); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (285, 'Autres crances', 28); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2850, 'Crance en compte', 285); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2851, 'Effets recevoir', 285); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2852, 'Titre revenu fixe', 285); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2857, 'Crances douteuses', 285); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2859, 'Rductions de valeurs actes', 285); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (288, 'Cautionnements verss en numraires', 28); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (29, 'Crances plus d''un an', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (290, 'Crances commerciales', 29); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2841, 'Montants non-appelés(-)', 284); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2848, 'Plus-values actées', 284); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2849, 'Réductions de valeurs actées', 284); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (285, 'Autres créances', 28); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2850, 'Créance en compte', 285); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2851, 'Effets à recevoir', 285); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2852, 'Titre à revenu fixe', 285); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2857, 'Créances douteuses', 285); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2859, 'Réductions de valeurs actées', 285); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (288, 'Cautionnements versés en numéraires', 28); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (29, 'Créances à plus d''un an', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (290, 'Créances commerciales', 29); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2900, 'Clients', 290); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2901, 'Effets recevoir', 290); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2906, 'Acomptes verss', 290); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2907, 'Crances douteuses', 290); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2909, 'Rductions de valeurs actes', 290); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (291, 'Autres crances', 29); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2910, 'Crances en comptes', 291); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2911, 'Effets recevoir', 291); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2917, 'Crances douteuses', 291); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2919, 'Rductions de valeurs actes(-)', 291); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (30, 'Approvisionements - Matires premires', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2901, 'Effets à recevoir', 290); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2906, 'Acomptes versés', 290); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2907, 'Créances douteuses', 290); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2909, 'Réductions de valeurs actées', 290); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (291, 'Autres créances', 29); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2910, 'Créances en comptes', 291); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2911, 'Effets à recevoir', 291); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2917, 'Créances douteuses', 291); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2919, 'Réductions de valeurs actées(-)', 291); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (30, 'Approvisionements - Matières premières', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (300, 'Valeur d''acquisition', 30); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (309, 'Rductions de valeur actes', 30); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (309, 'Réductions de valeur actées', 30); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (31, 'Approvisionnements - fournitures', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (310, 'Valeur d''acquisition', 31); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (319, 'Rductions de valeurs actes(-)', 31); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (319, 'Réductions de valeurs actées(-)', 31); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (32, 'En-cours de fabrication', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (320, 'Valeurs d''acquisition', 32); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (329, 'Rductions de valeur actes', 32); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (329, 'Réductions de valeur actées', 32); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (33, 'Produits finis', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (330, 'Valeur d''acquisition', 33); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (339, 'Rductions de valeur actes', 33); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (339, 'Réductions de valeur actées', 33); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (34, 'Marchandises', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (340, 'Valeur d''acquisition', 34); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (349, 'Rductions de valeur actes', 34); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (35, 'Immeubles destins la vente', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (349, 'Réductions de valeur actées', 34); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (35, 'Immeubles destinés à la vente', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (350, 'Valeur d''acquisition', 35); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (359, 'Rductions de valeur actes', 35); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (36, 'Acomptes verss sur achats pour stocks', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (359, 'Réductions de valeur actées', 35); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (36, 'Acomptes versés sur achats pour stocks', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (360, 'Valeur d''acquisition', 36); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (369, 'Rductions de valeur actes', 36); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (37, 'Commandes en cours xcution', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (369, 'Réductions de valeur actées', 36); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (37, 'Commandes en cours éxécution', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (370, 'Valeur d''acquisition', 37); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (371, 'Bnfice pris en compte ', 37); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (379, 'Rductions de valeur actes', 37); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (40, 'Crances commerciales', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (371, 'Bénéfice pris en compte ', 37); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (379, 'Réductions de valeur actées', 37); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (40, 'Créances commerciales', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (400, 'Clients', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (401, 'Effets recevoir', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (404, 'Produits recevoir', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (406, 'Acomptes verss', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (407, 'Crances douteuses', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (409, 'Rductions de valeur actes', 40); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (41, 'Autres crances', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (410, 'Capital appel non vers', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (411, 'TVA rcuprer', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4111, 'TVA rcuprer 21%', 411); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4112, 'TVA rcuprer 12%', 411); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4113, 'TVA rcuprer 6% ', 411); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4114, 'TVA rcuprer 0%', 411); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (412, 'Impts et prcomptes rcuprer', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4120, 'Impt belge sur le rsultat', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4121, 'Impt belge sur le rsultat', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4122, 'Impt belge sur le rsultat', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4123, 'Impt belge sur le rsultat', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4124, 'Impt belge sur le rsultat', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4125, 'Autres impts et taxes belges', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4126, 'Autres impts et taxes belges', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4127, 'Autres impts et taxes belges', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4128, 'Impts et taxes trangers', 412); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (414, 'Produits recevoir', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (416, 'Crances diverses', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (401, 'Effets à recevoir', 40); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (404, 'Produits à recevoir', 40); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (406, 'Acomptes versés', 40); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (407, 'Créances douteuses', 40); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (409, 'Réductions de valeur actées', 40); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (41, 'Autres créances', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (410, 'Capital appelé non versé', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (411, 'TVA à récupérer', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4111, 'TVA à récupérer 21%', 411); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4112, 'TVA à récupérer 12%', 411); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4113, 'TVA à récupérer 6% ', 411); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4114, 'TVA à récupérer 0%', 411); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (412, 'Impôts et précomptes à récupérer', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4120, 'Impôt belge sur le résultat', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4121, 'Impôt belge sur le résultat', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4122, 'Impôt belge sur le résultat', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4123, 'Impôt belge sur le résultat', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4124, 'Impôt belge sur le résultat', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4125, 'Autres impôts et taxes belges', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4126, 'Autres impôts et taxes belges', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4127, 'Autres impôts et taxes belges', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4128, 'Impôts et taxes étrangers', 412); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (414, 'Produits à recevoir', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (416, 'Créances diverses', 41); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4160, 'Comptes de l''exploitant', 416); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (417, 'Crances douteuses', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (418, 'Cautionnements verss en numraires', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (419, 'Rductions de valeur actes', 41); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (42, 'Dettes plus dun an chant dans l''anne', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (420, 'Emprunts subordonns', 42); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (417, 'Créances douteuses', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (418, 'Cautionnements versés en numéraires', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (419, 'Réductions de valeur actées', 41); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (42, 'Dettes à plus dun an échéant dans l''année', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (420, 'Emprunts subordonnés', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4200, 'convertibles', 420); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4201, 'non convertibles', 420); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (421, 'Emprunts subordonns', 42); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (421, 'Emprunts subordonnés', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4210, 'convertibles', 420); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4211, 'non convertibles', 420); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (422, ' Dettes de locations financement', 42); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (423, ' Etablissement de crdit', 42); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (423, ' Etablissement de crédit', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4230, 'Dettes en comptes', 423); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4231, 'Promesses', 423); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4232, 'Crdits d''acceptation', 423); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4232, 'Crédits d''acceptation', 423); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (424, 'Autres emprunts', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (425, 'Dettes commerciales', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4250, 'Fournisseurs', 425); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4251, 'Effets payer', 425); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (426, 'Acomptes reus sur commandes', 42); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (428, 'Cautionnement reus en numraires', 42); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4251, 'Effets à payer', 425); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (426, 'Acomptes reçus sur commandes', 42); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (428, 'Cautionnement reçus en numéraires', 42); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (429, 'Dettes diverses', 42); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43, 'Dettes financires', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (430, 'Etablissements de crdit - Emprunts compte terme fixe', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (431, 'Etablissements de crdit - Promesses', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (432, ' Etablissements de crdit - Crdits d''acceptation', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (433, 'Etablissements de crdit -Dettes en comptes courant', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43, 'Dettes financières', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (430, 'Etablissements de crédit - Emprunts à compte à terme fixe', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (431, 'Etablissements de crédit - Promesses', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (432, ' Etablissements de crédit - Crédits d''acceptation', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (433, 'Etablissements de crédit -Dettes en comptes courant', 43); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (439, 'Autres emprunts', 43); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44, 'Dettes commerciales', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (440, 'Fournisseurs', 44); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (441, 'Effets payer', 44); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (444, 'Factures recevoir', 44); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (441, 'Effets à payer', 44); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (444, 'Factures à recevoir', 44); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (45, 'Dettes fiscales, salariales et sociales', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (450, 'Dettes fiscales estimes', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4500, 'Impts belges sur le rsultat', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4501, 'Impts belges sur le rsultat', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4502, 'Impts belges sur le rsultat', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4503, 'Impts belges sur le rsultat', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4504, 'Impts belges sur le rsultat', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4505, 'Autres impts et taxes belges', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4506, 'Autres impts et taxes belges', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4507, 'Autres impts et taxes belges', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4508, 'Impts et taxes trangers', 450); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (451, 'TVA payer', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4511, 'TVA payer 21%', 451); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4512, 'TVA payer 12%', 451); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4513, 'TVA payer 6%', 451); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4514, 'TVA payer 0%', 451); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (452, 'Impts et taxes payer', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4520, 'Impts belges sur le rsultat', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4521, 'Impts belges sur le rsultat', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4522, 'Impts belges sur le rsultat', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4523, 'Impts belges sur le rsultat', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4524, 'Impts belges sur le rsultat', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4525, 'Autres impts et taxes belges', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4526, 'Autres impts et taxes belges', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4527, 'Autres impts et taxes belges', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4528, 'Impts et taxes trangers', 452); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (453, 'Prcomptes retenus', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (454, 'Office National de la Scurit Sociales', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (455, 'Rmunrations', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (456, 'Pcules de vacances', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (450, 'Dettes fiscales estimées', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4500, 'Impôts belges sur le résultat', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4501, 'Impôts belges sur le résultat', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4502, 'Impôts belges sur le résultat', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4503, 'Impôts belges sur le résultat', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4504, 'Impôts belges sur le résultat', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4505, 'Autres impôts et taxes belges', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4506, 'Autres impôts et taxes belges', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4507, 'Autres impôts et taxes belges', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4508, 'Impôts et taxes étrangers', 450); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (451, 'TVA à payer', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4511, 'TVA à payer 21%', 451); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4512, 'TVA à payer 12%', 451); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4513, 'TVA à payer 6%', 451); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4514, 'TVA à payer 0%', 451); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (452, 'Impôts et taxes à payer', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4520, 'Impôts belges sur le résultat', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4521, 'Impôts belges sur le résultat', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4522, 'Impôts belges sur le résultat', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4523, 'Impôts belges sur le résultat', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4524, 'Impôts belges sur le résultat', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4525, 'Autres impôts et taxes belges', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4526, 'Autres impôts et taxes belges', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4527, 'Autres impôts et taxes belges', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4528, 'Impôts et taxes étrangers', 452); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (453, 'Précomptes retenus', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (454, 'Office National de la Sécurité Sociales', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (455, 'Rémunérations', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (456, 'Pécules de vacances', 45); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (459, 'Autres dettes sociales', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (46, 'Acomptes reus sur commandes', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (47, 'Dettes dcoulant de l''affectation du rsultat', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (470, 'Dividendes et tantimes d''exercices antrieurs', 47); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (46, 'Acomptes reçus sur commandes', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (47, 'Dettes découlant de l''affectation du résultat', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (470, 'Dividendes et tantièmes d''exercices antérieurs', 47); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (471, 'Dividendes de l''exercice', 47); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (472, 'Tantimes de l''exercice', 47); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (472, 'Tantièmes de l''exercice', 47); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (473, 'Autres allocataires', 47); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (48, 'Dettes diverses', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (480, 'Obligations et coupons chus', 48); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (488, 'Cautionnements reus en numraires', 48); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (480, 'Obligations et coupons échus', 48); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (488, 'Cautionnements reçus en numéraires', 48); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (489, 'Autres dettes diverses', 48); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4890, 'Compte de l''exploitant', 489); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (49, 'Comptes de rgularisation', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (490, 'Charges reporter', 49); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (49, 'Comptes de régularisation', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (490, 'Charges à reporter', 49); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (491, 'Produits acquis', 49); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (492, 'Charges imputer', 49); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (493, 'Produits reporter', 49); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (492, 'Charges à imputer', 49); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (493, 'Produits à reporter', 49); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (499, 'Comptes d''attentes', 49); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (50, 'Actions propres', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (51, 'Actions et parts', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (510, 'Valeur d''acquisition', 51); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (511, 'Montant non appels', 51); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (519, 'Rductions de valeur actes', 51); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (52, 'Titres revenu fixe', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (511, 'Montant non appelés', 51); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (519, 'Réductions de valeur actées', 51); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (52, 'Titres à revenu fixe', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (520, 'Valeur d''acquisition', 52); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (529, 'Rductions de valeur actes', 52); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (53, 'Dpts terme', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (529, 'Réductions de valeur actées', 52); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (53, 'Dépôts à terme', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (530, 'de plus d''un an', 53); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (531, 'de plus d''un mois et d''un an au plus', 53); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (532, 'd''un mois au plus', 53); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (539, 'Rductions de valeur actes', 53); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (54, 'Valeurs chues l''encaissement', 5); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (55, 'Etablissement de crdit', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (539, 'Réductions de valeur actées', 53); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (54, 'Valeurs échues à l''encaissement', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (55, 'Etablissement de crédit', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (550, 'Banque 1', 55); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5500, 'Comptes courants', 550); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5501, 'Chques mis (-)', 550); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5509, 'Rduction de valeur acte', 550); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5501, 'Chèques émis (-)', 550); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5509, 'Réduction de valeur actée', 550); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5510, 'Comptes courants', 551); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5511, 'Chques mis (-)', 551); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5519, 'Rduction de valeur acte', 551); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5511, 'Chèques émis (-)', 551); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5519, 'Réduction de valeur actée', 551); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5520, 'Comptes courants', 552); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5521, 'Chques mis (-)', 552); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5529, 'Rduction de valeur acte', 552); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5521, 'Chèques émis (-)', 552); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5529, 'Réduction de valeur actée', 552); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5530, 'Comptes courants', 553); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5531, 'Chques mis (-)', 553); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5539, 'Rduction de valeur acte', 553); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5531, 'Chèques émis (-)', 553); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5539, 'Réduction de valeur actée', 553); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5540, 'Comptes courants', 554); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5541, 'Chques mis (-)', 554); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5549, 'Rduction de valeur acte', 554); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5541, 'Chèques émis (-)', 554); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5549, 'Réduction de valeur actée', 554); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5550, 'Comptes courants', 555); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5551, 'Chques mis (-)', 555); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5559, 'Rduction de valeur acte', 555); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5551, 'Chèques émis (-)', 555); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5559, 'Réduction de valeur actée', 555); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5560, 'Comptes courants', 556); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5561, 'Chques mis (-)', 556); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5569, 'Rduction de valeur acte', 556); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5561, 'Chèques émis (-)', 556); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5569, 'Réduction de valeur actée', 556); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5570, 'Comptes courants', 557); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5571, 'Chques mis (-)', 557); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5579, 'Rduction de valeur acte', 557); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5571, 'Chèques émis (-)', 557); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5579, 'Réduction de valeur actée', 557); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5580, 'Comptes courants', 558); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5581, 'Chques mis (-)', 558); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5589, 'Rduction de valeur acte', 558); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5581, 'Chèques émis (-)', 558); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5589, 'Réduction de valeur actée', 558); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5590, 'Comptes courants', 559); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5591, 'Chques mis (-)', 559); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5599, 'Rduction de valeur acte', 559); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (56, 'Office des chques postaux', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5591, 'Chèques émis (-)', 559); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5599, 'Réduction de valeur actée', 559); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (56, 'Office des chèques postaux', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (560, 'Compte courant', 56); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (561, 'Chques mis', 56); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (561, 'Chèques émis', 56); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (578, 'Caisse timbre', 57); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (58, 'Virement interne', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (60, 'Approvisionnement et marchandises', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (600, 'Achats de matires premires', 60); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (600, 'Achats de matières premières', 60); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (601, 'Achats de fournitures', 60); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (602, 'Achats de services, travaux et tudes', 60); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (603, 'Sous-traitances gnrales', 60); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (602, 'Achats de services, travaux et études', 60); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (603, 'Sous-traitances générales', 60); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (604, 'Achats de marchandises', 60); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (605, 'Achats d''immeubles destins la vente', 60); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (605, 'Achats d''immeubles destinés à la vente', 60); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (608, 'Remises, ristournes et rabais obtenus(-)', 60); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (609, 'Variation de stock', 60); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6090, 'de matires premires', 609); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6090, 'de matières premières', 609); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6091, 'de fournitures', 609); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6094, 'de marchandises', 609); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6095, 'immeubles achets destins la vente', 609); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6095, 'immeubles achetés destinés à la vente', 609); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (61, 'Services et biens divers', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (62, 'Rmunrations, charges sociales et pensions', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (620, 'Rmunrations et avantages sociaux directs', 62); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6200, 'Administrateurs ou grants', 620); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (62, 'Rémunérations, charges sociales et pensions', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (620, 'Rémunérations et avantages sociaux directs', 62); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6200, 'Administrateurs ou gérants', 620); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6201, 'Personnel de directions', 620); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6202, 'Employs,620', 6202); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6202, 'Employés,620', 6202); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6203, 'Ouvriers', 620); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6204, 'Autres membres du personnel', 620); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (621, 'Cotisations patronales d''assurances sociales', 62); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (622, 'Primes partonales pour assurances extra-lgales', 62); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (622, 'Primes partonales pour assurances extra-légales', 62); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (623, 'Autres frais de personnel', 62); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (624, 'Pensions de retraite et de survie', 62); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6240, 'Administrateurs ou grants', 624); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6240, 'Administrateurs ou gérants', 624); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6241, 'Personnel', 624); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (63, 'Amortissements, rductions de valeurs et provisions pour risques et charges', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (630, 'Dotations aux amortissements et rduction de valeurs sur immobilisations', 63); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6300, ' Dotations aux amortissements sur frais d''tablissement', 630); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (63, 'Amortissements, réductions de valeurs et provisions pour risques et charges', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (630, 'Dotations aux amortissements et réduction de valeurs sur immobilisations', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6300, ' Dotations aux amortissements sur frais d''établissement', 630); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (705, 'Ventes et prestations de services', 70); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6301, 'Dotations aux amortissements sur immobilisations incorporelles', 630); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6302, 'Dotations aux amortissements sur immobilisations corporelles', 630); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6308, 'Dotations aux rductions de valeur sur immobilisations incorporelles', 630); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6309, 'Dotations aux rductions de valeur sur immobilisations corporelles', 630); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (631, 'Rductions de valeur sur stocks', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6308, 'Dotations aux réductions de valeur sur immobilisations incorporelles', 630); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6309, 'Dotations aux réductions de valeur sur immobilisations corporelles', 630); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (631, 'Réductions de valeur sur stocks', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6310, 'Dotations', 631); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6311, 'Reprises(-)', 631); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (632, 'Rductions de valeur sur commande en cours d''xcution', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (632, 'Réductions de valeur sur commande en cours d''éxécution', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6320, 'Dotations', 632); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6321, 'Reprises(-)', 632); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (633, 'Rductions de valeurs sur crances commerciales plus d''un an', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (633, 'Réductions de valeurs sur créances commerciales à plus d''un an', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6330, 'Dotations', 633); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6331, 'Reprises(-)', 633); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (634, 'Rductions de valeur sur crances commerciales un an au plus', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (634, 'Réductions de valeur sur créances commerciales à un an au plus', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6340, 'Dotations', 634); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6341, 'Reprise', 634); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (635, 'Provisions pour pensions et obligations similaires', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6350, 'Dotations', 635); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6351, 'Utilisation et reprises', 635); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (636, 'Provisions pour grosses rparations et gros entretien', 63); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (636, 'Provisions pour grosses réparations et gros entretien', 63); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6360, 'Dotations', 636); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6361, 'Reprises(-)', 636); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (637, 'Provisions pour autres risques et charges', 63); @@ -1355,65 +1355,65 @@ INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6370, 'Dotations INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6371, 'Reprises(-)', 637); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (64, 'Autres charges d''exploitation', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (640, 'Charges fiscales d''exploitation', 64); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (641, 'Moins-values sur ralisations courantes d''immobilisations corporelles', 64); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (642, 'Moins-value sur ralisation de crances commerciales', 64); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (641, 'Moins-values sur réalisations courantes d''immobilisations corporelles', 64); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (642, 'Moins-value sur réalisation de créances commerciales', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (643, 'Charges d''exploitations', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (644, 'Charges d''exploitations', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (645, 'Charges d''exploitations', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (646, 'Charges d''exploitations', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (647, 'Charges d''exploitations', 64); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (648, 'Charges d''exploitations', 64); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (649, 'Charges d''exploitation portes l''actif au titre de frais de restructuration(-)', 64); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (65, 'Charges financires', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (649, 'Charges d''exploitation portées à l''actif au titre de frais de restructuration(-)', 64); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (65, 'Charges financières', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (650, 'Charges des dettes', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6500, 'Intrts, commmissions et frais affrents aux dettes', 650); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6501, 'Amortissements des frais d''missions d''emrunts et des primes de remboursement', 650); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6500, 'Intérêts, commmissions et frais afférents aux dettes', 650); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6501, 'Amortissements des frais d''émissions d''emrunts et des primes de remboursement', 650); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6502, 'Autres charges des dettes', 650); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6503, 'Intrts intercalaires ports l''actif(-)', 650); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (651, 'Rductions de valeur sur actifs circulants', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6503, 'Intérêts intercalaires portés à l''actif(-)', 650); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (651, 'Réductions de valeur sur actifs circulants', 65); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6510, 'Dotations', 651); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6511, 'Reprises(-)', 651); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (652, 'Moins-value sur ralisation d''actifs circulants', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (653, 'Charges d''escompte de crances', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (654, 'Diffrences de changes', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (652, 'Moins-value sur réalisation d''actifs circulants', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (653, 'Charges d''escompte de créances', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (654, 'Différences de changes', 65); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (655, 'Ecarts de conversion des devises', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (656, 'Charges financires diverses', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (657, 'Charges financires diverses', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (658, 'Charges financires diverses', 65); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (659, 'Charges financires diverses', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (656, 'Charges financières diverses', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (657, 'Charges financières diverses', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (658, 'Charges financières diverses', 65); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (659, 'Charges financières diverses', 65); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (66, 'Charges exceptionnelles', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (660, 'Amortissements et rductions de valeur exceptionnels (dotations)', 66); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6600, 'sur frais d''tablissement', 660); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (660, 'Amortissements et réductions de valeur exceptionnels (dotations)', 66); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6600, 'sur frais d''établissement', 660); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6601, 'sur immobilisations incorporelles', 660); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6602, 'sur immobilisations corporelles', 660); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (661, 'Rductions de valeur sur immobilisations financires (dotations)', 66); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (661, 'Réductions de valeur sur immobilisations financières (dotations)', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (662, 'Provisions pour risques et charges exceptionnels', 66); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (663, 'Moins-values sur ralisations d''actifs immobiliss', 66); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (663, 'Moins-values sur réalisations d''actifs immobilisés', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (664, 'Autres charges exceptionnelles', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (665, 'Autres charges exceptionnelles', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (666, 'Autres charges exceptionnelles', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (667, 'Autres charges exceptionnelles', 66); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (668, 'Autres charges exceptionnelles', 66); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (669, ' Charges exceptionnelles portes l''actif au titre de frais de restructuration', 66); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (67, 'impts sur le rsultat', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (670, 'Impts belge sur le rsultat de l''exercice', 67); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6700, 'Impts et prcomptes dus ou verss', 670); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6701, 'Excdents de versement d''impts et de prcomptes ports l''actifs (-)', 670); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6702, 'Charges fiscales estimes', 670); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (671, 'Impts belges sur le rsultats d''exercices antrieures', 67); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6710, 'Supplments d''impt dus ou verss', 671); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6711, 'Supplments d''impts estims', 671); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6712, 'Provisions fiscales constitues', 671); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (672, 'Impts trangers sur le rsultat de l''exercice', 67); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (673, 'Impts trangers sur le rsultat d''exercice antrieures', 67); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (68, 'Transferts aux rserves immunises', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (69, 'Affectations et prlvements', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (690, 'Perte reporte de l''exercice prcdent', 69); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (691, 'Dotation la rserve lgale', 69); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (692, 'Dotation aux autres rserves', 69); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (693, 'Bnfice reporter', 69); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (694, 'Rmunration du capital', 69); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (695, 'Administrateurs ou grants', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (669, ' Charges exceptionnelles portées à l''actif au titre de frais de restructuration', 66); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (67, 'impôts sur le résultat', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (670, 'Impôts belge sur le résultat de l''exercice', 67); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6700, 'Impôts et précomptes dus ou versés', 670); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6701, 'Excédents de versement d''impôts et de précomptes portés à l''actifs (-)', 670); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6702, 'Charges fiscales estimées', 670); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (671, 'Impôts belges sur le résultats d''exercices antérieures', 67); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6710, 'Suppléments d''impôt dus ou versés', 671); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6711, 'Suppléments d''impôts estimés', 671); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6712, 'Provisions fiscales constituées', 671); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (672, 'Impôts étrangers sur le résultat de l''exercice', 67); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (673, 'Impôts étrangers sur le résultat d''exercice antérieures', 67); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (68, 'Transferts aux réserves immunisées', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (69, 'Affectations et prélévements', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (690, 'Perte reportée de l''exercice précédent', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (691, 'Dotation à la réserve légale', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (692, 'Dotation aux autres réserves', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (693, 'Bénéfice à reporter', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (694, 'Rémunération du capital', 69); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (695, 'Administrateurs ou gérants', 69); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (696, 'Autres allocataires', 69); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (70, 'Chiffre d''affaire', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (700, 'Ventes et prestations de services', 70); @@ -1423,19 +1423,19 @@ INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (703, 'Ventes et INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (704, 'Ventes et prestations de services', 70); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (706, 'Ventes et prestations de services', 70); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (707, 'Ventes et prestations de services', 70); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (709, 'Remises, ristournes et rabais accords(-)', 70); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (71, 'Variations des stocks et commandes en cours d''xcution', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (709, 'Remises, ristournes et rabais accordés(-)', 70); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (71, 'Variations des stocks et commandes en cours d''éxécution', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (712, 'des en-cours de fabrication', 71); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (713, 'des produits finis', 71); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (715, 'des immeubles construits destins la vente', 71); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (717, ' des commandes en cours d''xcution', 71); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (715, 'des immeubles construits destinés à la vente', 71); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (717, ' des commandes en cours d''éxécution', 71); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7170, 'Valeur d''acquisition', 717); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7171, 'Bnfice pris en compte', 717); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (72, 'Production immobilise', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7171, 'Bénéfice pris en compte', 717); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (72, 'Production immobilisée', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (74, 'Autres produits d''exploitation', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (740, 'Subsides d'' exploitation et montants compensatoires', 74); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (741, 'Plus-values sur ralisation courantes d'' immobilisations corporelles', 74); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (742, 'Plus-values sur ralisations de crances commerciales', 74); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (741, 'Plus-values sur réalisation courantes d'' immobilisations corporelles', 74); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (742, 'Plus-values sur réalisations de créances commerciales', 74); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (743, 'Produits d''exploitations divers', 74); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (744, 'Produits d''exploitations divers', 74); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (745, 'Produits d''exploitations divers', 74); @@ -1444,76 +1444,76 @@ INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (747, 'Produits d INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (748, 'Produits d''exploitations divers', 74); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (749, 'Produits d''exploitations divers', 74); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (75, 'Produits financiers', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (750, 'Produits sur immobilisations financires', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (750, 'Produits sur immobilisations financières', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (751, 'Produits des actifs circulants', 75); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (752, 'Plus-value sur ralisations d''actis circulants', 75); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (753, 'Subsides en capital et intrts', 75); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (754, 'Diffrences de change', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (752, 'Plus-value sur réalisations d''actis circulants', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (753, 'Subsides en capital et intérêts', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (754, 'Différences de change', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (755, 'Ecarts de conversion des devises', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (756, 'Produits financiers divers', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (757, 'Produits financiers divers', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (758, 'Produits financiers divers', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (759, 'Produits financiers divers', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (76, 'Produits exceptionnels', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (760, 'Reprise d''amortissements et de rductions de valeur', 76); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (760, 'Reprise d''amortissements et de réductions de valeur', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7601, 'sur immobilisations corporelles', 760); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7602, 'sur immobilisations incorporelles', 760); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (761, 'Reprises de rductions de valeur sur immobilisations financires', 76); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (761, 'Reprises de réductions de valeur sur immobilisations financières', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (762, 'Reprises de provisions pour risques et charges exceptionnels', 76); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (763, 'Plus-value sur ralisation d''actifs immobilis', 76); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (763, 'Plus-value sur réalisation d''actifs immobilisé', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (764, 'Autres produits exceptionnels', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (765, 'Autres produits exceptionnels', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (766, 'Autres produits exceptionnels', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (767, 'Autres produits exceptionnels', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (768, 'Autres produits exceptionnels', 76); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (769, 'Autres produits exceptionnels', 76); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (77, 'Rgularisations d''impts et reprises de provisions fiscales', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (771, 'impts belges sur le rsultat', 77); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7710, 'Rgularisations d''impts dus ou vers', 771); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7711, 'Rgularisations d''impts estims', 771); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (77, 'Régularisations d''impôts et reprises de provisions fiscales', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (771, 'impôts belges sur le résultat', 77); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7710, 'Régularisations d''impôts dus ou versé', 771); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7711, 'Régularisations d''impôts estimés', 771); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7712, 'Reprises de provisions fiscales', 771); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (773, 'Impts trangers sur le rsultats', 77); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (79, 'Affectations et prlvements', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (790, 'Bnfice report de l''exercice prcdent', 79); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (791, 'Prlvement sur le capital et les primes d''mission', 79); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (792, 'Prlvement sur les rserves', 79); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (793, 'Perte reporter', 79); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (794, 'Intervention d''associs (ou du propritaire) dans la perte', 79); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1, 'Fonds propres, provisions pour risques et charges plus d''un an', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2, 'Frais d''tablissement, actifs immobiliss et crances plus d''un an', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (3, 'Stocks et commandes en cours d''xcution', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4, 'Crances et dettes un an au plus', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5, 'Placements de trsorerie et valeurs disponibles', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (773, 'Impôts étrangers sur le résultats', 77); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (79, 'Affectations et prélévements', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (790, 'Bénéfice reporté de l''exercice précédent', 79); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (791, 'Prélévement sur le capital et les primes d''émission', 79); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (792, 'Prélévement sur les réserves', 79); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (793, 'Perte à reporter', 79); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (794, 'Intervention d''associés (ou du propriétaire) dans la perte', 79); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1, 'Fonds propres, provisions pour risques et charges à plus d''un an', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2, 'Frais d''établissement, actifs immobilisés et créances à plus d''un an', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (3, 'Stocks et commandes en cours d''éxécution', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4, 'Créances et dettes à un an au plus', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5, 'Placements de trésorerie et valeurs disponibles', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6, 'Charges', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7, 'Produits', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4000001, 'Client 1', 400); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4000002, 'Client 2', 400); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4000003, 'Client 3', 400); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040001, 'Electricit', 604); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040001, 'Electricité', 604); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6040002, 'Loyer', 604); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (55000002, 'Banque 1', 5500); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (55000003, 'Banque 2', 5500); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4400001, 'Fournisseur 1', 440); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4400002, 'Fournisseur 2', 440); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4400003, 'Fournisseur 4', 440); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610001, 'Electricit', 61); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610001, 'Electricité', 61); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610002, 'Loyer', 61); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610003, 'Assurance', 61); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610004, 'Matriel bureau', 61); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (610004, 'Matériel bureau', 61); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7000002, 'Marchandise A', 700); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7000001, 'Prestation', 700); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7000003, 'Dplacement', 700); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (101, 'Capital non appel', 10); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6190, 'TVA rcuprable par l''impt', 61); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6740, 'Dpense non admise', 67); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7000003, 'Déplacement', 700); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (101, 'Capital non appelé', 10); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6190, 'TVA récupérable par l''impôt', 61); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6740, 'Dépense non admise', 67); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (9, 'Comptes hors Compta', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (100, 'Capital souscrit', 10); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1311, 'Autres rserves indisponibles', 131); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (132, ' Rserves immunises', 13); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1311, 'Autres réserves indisponibles', 131); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (132, ' Réserves immunisées', 13); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (1, '21%', 0.2100, 'Tva applicable tout ce qui bien et service divers', '4111,4511'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (1, '21%', 0.2100, 'Tva applicable à tout ce qui bien et service divers', '4111,4511'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (2, '12%', 0.1200, 'Tva ', '4112,4512'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (3, '6%', 0.0600, 'Tva applicable aux journaux et livres', '4113,4513'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (4, '0%', 0.0000, 'Tva applicable lors de vente/achat intracommunautaire', '4114,4514'); diff --git a/html/admin/sql/mod1/make-sql b/html/admin/sql/mod1/make-sql index 6c24f92da..ddacdac7e 100755 --- a/html/admin/sql/mod1/make-sql +++ b/html/admin/sql/mod1/make-sql @@ -5,7 +5,7 @@ awk '/CREATE TABLE/,/;/ { print $0;}' < schema.sql >> table.sql awk '/CREATE VIEW/,/;/ { print $0;}' < schema.sql > view.sql awk '/INDEX/,/;/ { print $0;}' < schema.sql > index.sql ( -echo " SET client_encoding = 'LATIN1';" +echo " SET client_encoding = 'utf8';" echo " SET check_function_bodies = false;" echo " SET client_min_messages = warning;" echo "SET search_path = public, pg_catalog;" diff --git a/html/admin/sql/mod1/schema.sql b/html/admin/sql/mod1/schema.sql index 58845f5dc..bbdf56020 100644 --- a/html/admin/sql/mod1/schema.sql +++ b/html/admin/sql/mod1/schema.sql @@ -1,5 +1,5 @@ -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; @@ -1933,7 +1933,7 @@ CREATE TABLE tmp_pcmn ( -COMMENT ON TABLE tmp_pcmn IS 'Plan comptable minimum normalis'; +COMMENT ON TABLE tmp_pcmn IS 'Plan comptable minimum normalisé'; diff --git a/html/admin/sql/mod2/data.sql b/html/admin/sql/mod2/data.sql index b80833950..4ca5b1f7e 100644 --- a/html/admin/sql/mod2/data.sql +++ b/html/admin/sql/mod2/data.sql @@ -1,5 +1,5 @@ -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET check_function_bodies = false; SET client_min_messages = warning; @@ -227,24 +227,24 @@ SELECT pg_catalog.setval('seq_doc_type_9', 1, false); INSERT INTO "action" (ac_id, ac_description) VALUES (4, 'Impression'); -INSERT INTO "action" (ac_id, ac_description) VALUES (6, 'Mise jour Plan Comptable'); +INSERT INTO "action" (ac_id, ac_description) VALUES (6, 'Mise à jour Plan Comptable'); INSERT INTO "action" (ac_id, ac_description) VALUES (7, 'Gestion Journaux'); -INSERT INTO "action" (ac_id, ac_description) VALUES (8, 'Paramtres'); +INSERT INTO "action" (ac_id, ac_description) VALUES (8, 'Paramètres'); INSERT INTO "action" (ac_id, ac_description) VALUES (10, 'Centralise'); INSERT INTO "action" (ac_id, ac_description) VALUES (16, 'Voir le stock'); INSERT INTO "action" (ac_id, ac_description) VALUES (17, 'Modifie le stock'); INSERT INTO "action" (ac_id, ac_description) VALUES (20, 'Voir la balance des comptes'); -INSERT INTO "action" (ac_id, ac_description) VALUES (21, 'Import et export des critures d''ouverture'); +INSERT INTO "action" (ac_id, ac_description) VALUES (21, 'Import et export des écritures d''ouverture'); INSERT INTO "action" (ac_id, ac_description) VALUES (28, 'Module Suivi Document'); INSERT INTO "action" (ac_id, ac_description) VALUES (22, 'Module Client'); INSERT INTO "action" (ac_id, ac_description) VALUES (24, 'Module Fournisseur'); INSERT INTO "action" (ac_id, ac_description) VALUES (26, 'Module Administration'); INSERT INTO "action" (ac_id, ac_description) VALUES (30, 'Module Gestion'); INSERT INTO "action" (ac_id, ac_description) VALUES (1, 'Lecture du Grand-Livre'); -INSERT INTO "action" (ac_id, ac_description) VALUES (31, 'Gestion des priodes comptables'); +INSERT INTO "action" (ac_id, ac_description) VALUES (31, 'Gestion des périodes comptables'); INSERT INTO "action" (ac_id, ac_description) VALUES (3, 'Lecture des fiches'); INSERT INTO "action" (ac_id, ac_description) VALUES (15, 'Ajout de fiche et modification'); -INSERT INTO "action" (ac_id, ac_description) VALUES (5, 'Cration et modifications des rapports'); +INSERT INTO "action" (ac_id, ac_description) VALUES (5, 'Création et modifications des rapports'); INSERT INTO "action" (ac_id, ac_description) VALUES (50, 'Definir les Plans Analytiques et les postes'); INSERT INTO "action" (ac_id, ac_description) VALUES (51, 'Impression CA'); INSERT INTO "action" (ac_id, ac_description) VALUES (52, 'Operations Diverses CA'); @@ -256,28 +256,28 @@ INSERT INTO "action" (ac_id, ac_description) VALUES (52, 'Operations Diverses CA INSERT INTO attr_def (ad_id, ad_text) VALUES (1, 'Nom'); INSERT INTO attr_def (ad_id, ad_text) VALUES (2, 'Taux TVA'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (3, 'Numro de compte'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (3, 'Numéro de compte'); INSERT INTO attr_def (ad_id, ad_text) VALUES (4, 'Nom de la banque'); INSERT INTO attr_def (ad_id, ad_text) VALUES (5, 'Poste Comptable'); INSERT INTO attr_def (ad_id, ad_text) VALUES (6, 'Prix vente'); INSERT INTO attr_def (ad_id, ad_text) VALUES (7, 'Prix achat'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (8, 'Dure Amortissement'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (8, 'Durée Amortissement'); INSERT INTO attr_def (ad_id, ad_text) VALUES (9, 'Description'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (10, 'Date dbut'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (10, 'Date début'); INSERT INTO attr_def (ad_id, ad_text) VALUES (11, 'Montant initial'); INSERT INTO attr_def (ad_id, ad_text) VALUES (12, 'Personne de contact '); -INSERT INTO attr_def (ad_id, ad_text) VALUES (13, 'numro de tva '); +INSERT INTO attr_def (ad_id, ad_text) VALUES (13, 'numéro de tva '); INSERT INTO attr_def (ad_id, ad_text) VALUES (14, 'Adresse '); INSERT INTO attr_def (ad_id, ad_text) VALUES (16, 'pays '); -INSERT INTO attr_def (ad_id, ad_text) VALUES (17, 'tlphone '); +INSERT INTO attr_def (ad_id, ad_text) VALUES (17, 'téléphone '); INSERT INTO attr_def (ad_id, ad_text) VALUES (18, 'email '); INSERT INTO attr_def (ad_id, ad_text) VALUES (19, 'Gestion stock'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (20, 'Partie fiscalement non dductible'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (21, 'TVA non dductible'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (22, 'TVA non dductible rcuprable par l''impt'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (20, 'Partie fiscalement non déductible'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (21, 'TVA non déductible'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (22, 'TVA non déductible récupérable par l''impôt'); INSERT INTO attr_def (ad_id, ad_text) VALUES (23, 'Quick Code'); INSERT INTO attr_def (ad_id, ad_text) VALUES (24, 'Ville'); -INSERT INTO attr_def (ad_id, ad_text) VALUES (25, 'Socit'); +INSERT INTO attr_def (ad_id, ad_text) VALUES (25, 'Société'); INSERT INTO attr_def (ad_id, ad_text) VALUES (26, 'Fax'); INSERT INTO attr_def (ad_id, ad_text) VALUES (27, 'GSM'); INSERT INTO attr_def (ad_id, ad_text) VALUES (15, 'code postal'); @@ -381,7 +381,7 @@ INSERT INTO attr_min (frd_id, ad_id) VALUES (18, 9); -INSERT INTO attr_value (jft_id, av_text) VALUES (366, 'Fournisseurs et Comptes rattachs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (366, 'Fournisseurs et Comptes rattachés'); INSERT INTO attr_value (jft_id, av_text) VALUES (367, '400'); INSERT INTO attr_value (jft_id, av_text) VALUES (368, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (369, ''); @@ -392,13 +392,13 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (373, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (374, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (375, 'Q400'); INSERT INTO attr_value (jft_id, av_text) VALUES (376, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (377, 'autres charges externes - Services extrieurs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (377, 'autres charges externes - Services extérieurs'); INSERT INTO attr_value (jft_id, av_text) VALUES (378, '101'); INSERT INTO attr_value (jft_id, av_text) VALUES (379, '61'); INSERT INTO attr_value (jft_id, av_text) VALUES (380, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (381, 'Q61'); INSERT INTO attr_value (jft_id, av_text) VALUES (393, 'Q53'); -INSERT INTO attr_value (jft_id, av_text) VALUES (394, 'valeurs mobilires de placement'); +INSERT INTO attr_value (jft_id, av_text) VALUES (394, 'valeurs mobilières de placement'); INSERT INTO attr_value (jft_id, av_text) VALUES (395, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (396, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (397, '50'); @@ -457,7 +457,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (449, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (450, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (451, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (452, 'Q76'); -INSERT INTO attr_value (jft_id, av_text) VALUES (453, 'Charges financires'); +INSERT INTO attr_value (jft_id, av_text) VALUES (453, 'Charges financières'); INSERT INTO attr_value (jft_id, av_text) VALUES (454, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (455, '66'); INSERT INTO attr_value (jft_id, av_text) VALUES (456, ''); @@ -489,7 +489,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (475, 'achat de marchandises'); INSERT INTO attr_value (jft_id, av_text) VALUES (476, '101'); INSERT INTO attr_value (jft_id, av_text) VALUES (477, '607'); INSERT INTO attr_value (jft_id, av_text) VALUES (478, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (480, 'Fournisseurs et Comptes rattachs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (480, 'Fournisseurs et Comptes rattachés'); INSERT INTO attr_value (jft_id, av_text) VALUES (481, '400'); INSERT INTO attr_value (jft_id, av_text) VALUES (482, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (483, ''); @@ -498,7 +498,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (485, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (486, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (487, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (488, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (489, 'Q408FACTRECEVOIR'); +INSERT INTO attr_value (jft_id, av_text) VALUES (489, 'Q408FACTàRECEVOIR'); INSERT INTO attr_value (jft_id, av_text) VALUES (490, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (491, 'achat de marchandises'); INSERT INTO attr_value (jft_id, av_text) VALUES (492, '101'); @@ -515,7 +515,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (511, '707'); INSERT INTO attr_value (jft_id, av_text) VALUES (512, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (513, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (514, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (516, 'Produits des activits annexes'); +INSERT INTO attr_value (jft_id, av_text) VALUES (516, 'Produits des activités annexes'); INSERT INTO attr_value (jft_id, av_text) VALUES (517, '101'); INSERT INTO attr_value (jft_id, av_text) VALUES (518, '708'); INSERT INTO attr_value (jft_id, av_text) VALUES (519, ''); @@ -534,17 +534,17 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (532, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (533, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (534, 'Q101'); INSERT INTO attr_value (jft_id, av_text) VALUES (539, 'Q62DEPLACEMENTS'); -INSERT INTO attr_value (jft_id, av_text) VALUES (540, 'autres charges externes - Autres services extrieurs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (540, 'autres charges externes - Autres services extérieurs'); INSERT INTO attr_value (jft_id, av_text) VALUES (541, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (542, '62'); INSERT INTO attr_value (jft_id, av_text) VALUES (543, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (544, 'Q62FRAISMISSIONS'); INSERT INTO attr_value (jft_id, av_text) VALUES (549, 'Q62FRAISTELECOM'); -INSERT INTO attr_value (jft_id, av_text) VALUES (545, 'autres charges externes - Autres services extrieurs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (545, 'autres charges externes - Autres services extérieurs'); INSERT INTO attr_value (jft_id, av_text) VALUES (546, '101'); INSERT INTO attr_value (jft_id, av_text) VALUES (547, '62'); INSERT INTO attr_value (jft_id, av_text) VALUES (548, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (550, 'Associs - Comptes courants'); +INSERT INTO attr_value (jft_id, av_text) VALUES (550, 'Associés - Comptes courants'); INSERT INTO attr_value (jft_id, av_text) VALUES (551, '455'); INSERT INTO attr_value (jft_id, av_text) VALUES (552, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (553, ''); @@ -555,11 +555,11 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (557, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (558, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (559, 'Q455ASSOCIE1'); INSERT INTO attr_value (jft_id, av_text) VALUES (560, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (535, 'autres charges externes - Autres services extrieurs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (535, 'autres charges externes - Autres services extérieurs'); INSERT INTO attr_value (jft_id, av_text) VALUES (536, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (537, '62'); INSERT INTO attr_value (jft_id, av_text) VALUES (538, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (561, 'Impts, taxes et versements assimiles'); +INSERT INTO attr_value (jft_id, av_text) VALUES (561, 'Impôts, taxes et versements assimiles'); INSERT INTO attr_value (jft_id, av_text) VALUES (562, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (563, '63'); INSERT INTO attr_value (jft_id, av_text) VALUES (564, ''); @@ -576,7 +576,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (574, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (575, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (576, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (577, 'Q75'); -INSERT INTO attr_value (jft_id, av_text) VALUES (583, 'Rmunration du travail de l''exploitant'); +INSERT INTO attr_value (jft_id, av_text) VALUES (583, 'Rémunération du travail de l''exploitant'); INSERT INTO attr_value (jft_id, av_text) VALUES (584, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (585, '644'); INSERT INTO attr_value (jft_id, av_text) VALUES (586, ''); @@ -587,7 +587,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (604, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (605, '646'); INSERT INTO attr_value (jft_id, av_text) VALUES (606, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (607, 'Q646'); -INSERT INTO attr_value (jft_id, av_text) VALUES (652, 'Personnel - Rmunrations dues'); +INSERT INTO attr_value (jft_id, av_text) VALUES (652, 'Personnel - Rémunérations dues'); INSERT INTO attr_value (jft_id, av_text) VALUES (653, '421'); INSERT INTO attr_value (jft_id, av_text) VALUES (654, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (655, ''); @@ -598,7 +598,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (659, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (660, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (661, 'Q421SALAIRENETNICOLE'); INSERT INTO attr_value (jft_id, av_text) VALUES (662, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (663, 'Personnel - Rmunrations dues'); +INSERT INTO attr_value (jft_id, av_text) VALUES (663, 'Personnel - Rémunérations dues'); INSERT INTO attr_value (jft_id, av_text) VALUES (664, '421'); INSERT INTO attr_value (jft_id, av_text) VALUES (665, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (666, ''); @@ -609,17 +609,17 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (670, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (671, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (672, 'Q421SALAIRENETPIERRE'); INSERT INTO attr_value (jft_id, av_text) VALUES (673, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (578, 'Rmunrations du personnel'); +INSERT INTO attr_value (jft_id, av_text) VALUES (578, 'Rémunérations du personnel'); INSERT INTO attr_value (jft_id, av_text) VALUES (580, '641'); INSERT INTO attr_value (jft_id, av_text) VALUES (581, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (582, 'Q641SALAIREBRUTNICOLE'); -INSERT INTO attr_value (jft_id, av_text) VALUES (674, 'Rmunrations du personnel'); +INSERT INTO attr_value (jft_id, av_text) VALUES (674, 'Rémunérations du personnel'); INSERT INTO attr_value (jft_id, av_text) VALUES (675, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (676, '641'); INSERT INTO attr_value (jft_id, av_text) VALUES (677, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (678, 'Q641SALAIREBRUTPIERRE'); INSERT INTO attr_value (jft_id, av_text) VALUES (617, 'Q431RETENUESURSSAFNICOLE'); -INSERT INTO attr_value (jft_id, av_text) VALUES (608, 'Scurit sociale'); +INSERT INTO attr_value (jft_id, av_text) VALUES (608, 'Sécurité sociale'); INSERT INTO attr_value (jft_id, av_text) VALUES (609, '431'); INSERT INTO attr_value (jft_id, av_text) VALUES (610, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (611, ''); @@ -629,7 +629,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (614, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (615, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (616, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (618, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (679, 'Scurit sociale'); +INSERT INTO attr_value (jft_id, av_text) VALUES (679, 'Sécurité sociale'); INSERT INTO attr_value (jft_id, av_text) VALUES (680, '431'); INSERT INTO attr_value (jft_id, av_text) VALUES (681, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (682, ''); @@ -640,7 +640,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (686, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (687, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (688, 'Q431RETENUESURSSAFPIERRE'); INSERT INTO attr_value (jft_id, av_text) VALUES (689, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (619, 'Cotis.Sal.+Pat. Retraite salaris des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (619, 'Cotis.Sal.+Pat. Retraite salariés dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (620, '43731'); INSERT INTO attr_value (jft_id, av_text) VALUES (621, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (622, ''); @@ -652,7 +652,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (627, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (628, 'Q43731RETRAITESALARIESNICOLE'); INSERT INTO attr_value (jft_id, av_text) VALUES (629, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (699, 'Q43731RETRAITESALARIESPIERRE'); -INSERT INTO attr_value (jft_id, av_text) VALUES (630, 'Cotis.Sal.+Pat. Retraite cadres des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (630, 'Cotis.Sal.+Pat. Retraite cadres dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (631, '43732'); INSERT INTO attr_value (jft_id, av_text) VALUES (632, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (633, ''); @@ -677,7 +677,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (730, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (731, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (732, 'Q431'); INSERT INTO attr_value (jft_id, av_text) VALUES (733, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (641, 'Cotis.Sal.+Pat. Chmage des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (641, 'Cotis.Sal.+Pat. Chômage dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (642, '4374'); INSERT INTO attr_value (jft_id, av_text) VALUES (643, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (644, ''); @@ -687,7 +687,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (647, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (648, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (649, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (651, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (712, 'Cotis.Sal.+Pat. Chmage des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (712, 'Cotis.Sal.+Pat. Chômage dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (713, '4374'); INSERT INTO attr_value (jft_id, av_text) VALUES (714, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (715, ''); @@ -697,7 +697,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (718, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (719, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (720, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (722, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (701, 'Cotis.Sal.+Pat. Retraite cadres des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (701, 'Cotis.Sal.+Pat. Retraite cadres dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (702, '43732'); INSERT INTO attr_value (jft_id, av_text) VALUES (703, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (704, ''); @@ -707,7 +707,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (707, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (708, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (709, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (711, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (690, 'Cotis.Sal.+Pat. Retraite salaris des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (690, 'Cotis.Sal.+Pat. Retraite salariés dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (691, '43731'); INSERT INTO attr_value (jft_id, av_text) VALUES (692, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (693, ''); @@ -717,7 +717,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (696, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (697, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (698, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (700, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (734, 'Cotis.Sal. Pat. Retraite salaris des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (734, 'Cotis.Sal. Pat. Retraite salariés dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (735, '43731'); INSERT INTO attr_value (jft_id, av_text) VALUES (736, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (737, ''); @@ -729,7 +729,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (742, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (743, 'Q43731'); INSERT INTO attr_value (jft_id, av_text) VALUES (744, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (754, 'Q43732'); -INSERT INTO attr_value (jft_id, av_text) VALUES (756, 'Cotis.Sal. Pat. Chmage des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (756, 'Cotis.Sal. Pat. Chômage dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (757, '4374'); INSERT INTO attr_value (jft_id, av_text) VALUES (758, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (759, ''); @@ -740,7 +740,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (763, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (764, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (765, 'Q4374'); INSERT INTO attr_value (jft_id, av_text) VALUES (766, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (745, 'Cotis.Sal.+Pat. Retraite cadres des'); +INSERT INTO attr_value (jft_id, av_text) VALUES (745, 'Cotis.Sal.+Pat. Retraite cadres dûes'); INSERT INTO attr_value (jft_id, av_text) VALUES (746, '43732'); INSERT INTO attr_value (jft_id, av_text) VALUES (747, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (748, ''); @@ -750,7 +750,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (751, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (752, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (753, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (755, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (767, 'Clients et Comptes rattachs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (767, 'Clients et Comptes rattachés'); INSERT INTO attr_value (jft_id, av_text) VALUES (768, '410'); INSERT INTO attr_value (jft_id, av_text) VALUES (769, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (770, ''); @@ -793,7 +793,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (796, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (797, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (798, 'Q410003PINAILLEUR'); INSERT INTO attr_value (jft_id, av_text) VALUES (799, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (800, 'Frais d''tablissement'); +INSERT INTO attr_value (jft_id, av_text) VALUES (800, 'Frais d''établissement'); INSERT INTO attr_value (jft_id, av_text) VALUES (801, '201'); INSERT INTO attr_value (jft_id, av_text) VALUES (802, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (803, ''); @@ -804,7 +804,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (807, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (808, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (809, 'Q2011'); INSERT INTO attr_value (jft_id, av_text) VALUES (810, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (811, 'Fournisseurs et Comptes rattachs'); +INSERT INTO attr_value (jft_id, av_text) VALUES (811, 'Fournisseurs et Comptes rattachés'); INSERT INTO attr_value (jft_id, av_text) VALUES (812, '400'); INSERT INTO attr_value (jft_id, av_text) VALUES (813, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (814, ''); @@ -820,7 +820,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (834, 'Amortissements des immobi INSERT INTO attr_value (jft_id, av_text) VALUES (835, '104'); INSERT INTO attr_value (jft_id, av_text) VALUES (836, '281'); INSERT INTO attr_value (jft_id, av_text) VALUES (837, ''); -INSERT INTO attr_value (jft_id, av_text) VALUES (839, 'Autres impts, taxes et versements assimils'); +INSERT INTO attr_value (jft_id, av_text) VALUES (839, 'Autres impôts, taxes et versements assimilés'); INSERT INTO attr_value (jft_id, av_text) VALUES (840, '447'); INSERT INTO attr_value (jft_id, av_text) VALUES (841, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (842, ''); @@ -845,7 +845,7 @@ INSERT INTO attr_value (jft_id, av_text) VALUES (860, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (861, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (862, ''); INSERT INTO attr_value (jft_id, av_text) VALUES (863, 'Q701'); -INSERT INTO attr_value (jft_id, av_text) VALUES (864, 'Rabais, remises et ristournes accords par l''entreprise'); +INSERT INTO attr_value (jft_id, av_text) VALUES (864, 'Rabais, remises et ristournes accordés par l''entreprise'); INSERT INTO attr_value (jft_id, av_text) VALUES (865, '101'); INSERT INTO attr_value (jft_id, av_text) VALUES (866, '709'); INSERT INTO attr_value (jft_id, av_text) VALUES (867, ''); @@ -874,10 +874,10 @@ INSERT INTO bilan (b_id, b_name, b_file_template, b_file_form, b_type) VALUES (1 -INSERT INTO document_state (s_id, s_value) VALUES (1, 'Envoy'); +INSERT INTO document_state (s_id, s_value) VALUES (1, 'Envoyé'); INSERT INTO document_state (s_id, s_value) VALUES (2, 'Brouillon'); INSERT INTO document_state (s_id, s_value) VALUES (3, 'A envoyer'); -INSERT INTO document_state (s_id, s_value) VALUES (4, 'Reu'); +INSERT INTO document_state (s_id, s_value) VALUES (4, 'Reçu'); @@ -959,23 +959,23 @@ INSERT INTO fiche_def (fd_id, fd_class_base, fd_label, fd_create_account, frd_id -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (13, 'Dpenses non admises', 674); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (13, 'Dépenses non admises', 674); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (14, 'Administration des Finances', NULL); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (15, 'Autres fiches', NULL); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (4, 'Banque', 51); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (5, 'Prt > a un an', 27); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (5, 'Prêt > a un an', 27); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (8, 'Fournisseurs', 400); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (6, 'Prt < a un an', NULL); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (6, 'Prêt < a un an', NULL); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (16, 'Contact', NULL); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (1, 'Vente Service', 706); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (2, 'Achat Marchandises', 603); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (9, 'Clients', 410); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (10, 'Salaire Administrateur', 644); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (11, 'Salaire Ouvrier', 641); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (12, 'Salaire Employ', 641); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (7, 'Matriel amortir, immobilisation corporelle', 21); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (12, 'Salaire Employé', 641); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (7, 'Matériel à amortir, immobilisation corporelle', 21); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (3, 'Achat Service et biens divers', 61); -INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (17, 'Escomptes accordes', 66); +INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (17, 'Escomptes accordées', 66); INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (18, 'Produits Financiers', 76); @@ -983,10 +983,10 @@ INSERT INTO fiche_def_ref (frd_id, frd_text, frd_class_base) VALUES (18, 'Produi INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000398, 3000000, 1, 'Prestation [ case 03 ]', '[700%]-[7000005]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000399, 3000000, 2, 'Prestation intra [ case 47 ]', '[7000005]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000400, 3000000, 3, 'Tva due [case 54]', '[4513]+[4512]+[4511] FROM=01.2005'); -INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000401, 3000000, 4, 'Marchandises, matire premire et auxiliaire [case 81 ]', '[60%]'); +INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000401, 3000000, 4, 'Marchandises, matière première et auxiliaire [case 81 ]', '[60%]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000402, 3000000, 7, 'Service et bien divers [case 82]', '[61%]'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000403, 3000000, 8, 'bien d''invest [ case 83 ]', '[2400%]'); -INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000404, 3000000, 9, 'TVA dductible [ case 59 ]', 'abs([4117]-[411%])'); +INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000404, 3000000, 9, 'TVA déductible [ case 59 ]', 'abs([4117]-[411%])'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000405, 3000000, 8, 'TVA non ded -> voiture', '[610022]*0.21/2'); INSERT INTO form (fo_id, fo_fr_id, fo_pos, fo_label, fo_formula) VALUES (3000406, 3000000, 9, 'Acompte TVA', '[4117]'); @@ -1002,7 +1002,7 @@ INSERT INTO format_csv_banque (name, include_file) VALUES ('Dexia', 'dexia_be.in -INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA dclaration Belge'); +INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA déclaration Belge'); @@ -1550,12 +1550,12 @@ INSERT INTO jnt_fic_attr (fd_id, ad_id, jnt_id) VALUES (4, 24, 52); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (2, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (4, 'Voir Impays', 'Voir toutes les factures non payes', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (1, 'Nouvelle', 'Cration d''une facture', 'user_jrn.php', 'action=insert_vente&blank', 'FR', 'VEN'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (10, 'Nouveau', 'Encode un nouvel achat (matriel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'ACH'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (4, 'Voir Impayés', 'Voir toutes les factures non payées', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'VEN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (1, 'Nouvelle', 'Création d''une facture', 'user_jrn.php', 'action=insert_vente&blank', 'FR', 'VEN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (10, 'Nouveau', 'Encode un nouvel achat (matériel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'ACH'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (12, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'ACH'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (14, 'Voir Impays', 'Voir toutes les factures non payes', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'ACH'); -INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (20, 'Nouveau', 'Encode un nouvel achat (matriel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'FIN'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (14, 'Voir Impayés', 'Voir toutes les factures non payées', 'user_jrn.php', 'action=voir_jrn_non_paye', 'FR', 'ACH'); +INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (20, 'Nouveau', 'Encode un nouvel achat (matériel, marchandises, services et biens divers)', 'user_jrn.php', 'action=new&blank', 'FR', 'FIN'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (22, 'Voir', 'Voir toutes les factures', 'user_jrn.php', 'action=voir_jrn', 'FR', 'FIN'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (40, 'Soldes', 'Voir les soldes des comptes en banques', 'user_jrn.php', 'action=solde', 'FR', 'FIN'); INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_jrn_type) VALUES (30, 'Nouveau', NULL, 'user_jrn.php', 'action=new&blank', 'FR', 'ODS'); @@ -1563,9 +1563,9 @@ INSERT INTO jrn_action (ja_id, ja_name, ja_desc, ja_url, ja_action, ja_lang, ja_ -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (3, 'Achat', '6*', '4*', '5', '4', 1, 3, true, 'chance', 'ACH', 'ACH-01'); -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (2, 'Vente', '4*', '7*', '2', '6', 2, 1, true, 'chance', 'VEN', 'VEN-01'); -INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (4, 'Opration Diverses', NULL, NULL, NULL, NULL, 5, 5, false, NULL, 'ODS', 'OD-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (3, 'Achat', '6*', '4*', '5', '4', 1, 3, true, 'échéance', 'ACH', 'ACH-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (2, 'Vente', '4*', '7*', '2', '6', 2, 1, true, 'échéance', 'VEN', 'VEN-01'); +INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (4, 'Opération Diverses', NULL, NULL, NULL, NULL, 5, 5, false, NULL, 'ODS', 'OD-01'); INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_cred, jrn_def_fiche_deb, jrn_def_fiche_cred, jrn_deb_max_line, jrn_cred_max_line, jrn_def_ech, jrn_def_ech_lib, jrn_def_type, jrn_def_code) VALUES (1, 'Financier', '5*', '5*', '3,2,4,5', '3,2,4,5', 5, 5, false, NULL, 'FIN', 'FIN-01'); @@ -1575,7 +1575,7 @@ INSERT INTO jrn_def (jrn_def_id, jrn_def_name, jrn_def_class_deb, jrn_def_class_ INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('VEN', 'Vente'); INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ACH', 'Achat'); -INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ODS', 'Oprations Diverses'); +INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('ODS', 'Opérations Diverses'); INSERT INTO jrn_type (jrn_type_id, jrn_desc) VALUES ('FIN', 'Banque'); @@ -1606,11 +1606,11 @@ INSERT INTO parameter (pr_id, pr_value) VALUES ('MY_COUNTRY', 'FR'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('BANQUE', '51', 'Poste comptable par dfaut pour les banques'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CAISSE', '53', 'Poste comptable par dfaut pour les caisses'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CUSTOMER', '410', 'Poste comptable par dfaut pour les clients'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VENTE', '707', 'Poste comptable par dfaut pour les ventes'); -INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VIREMENT_INTERNE', '58', 'Poste comptable par dfaut pour les virements internes'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('BANQUE', '51', 'Poste comptable par défaut pour les banques'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CAISSE', '53', 'Poste comptable par défaut pour les caisses'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('CUSTOMER', '410', 'Poste comptable par défaut pour les clients'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VENTE', '707', 'Poste comptable par défaut pour les ventes'); +INSERT INTO parm_code (p_code, p_value, p_comment) VALUES ('VIREMENT_INTERNE', '58', 'Poste comptable par défaut pour les virements internes'); @@ -1651,22 +1651,22 @@ INSERT INTO parm_periode (p_id, p_start, p_end, p_exercice, p_closed, p_central) INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1, 'comptes de capitaux', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (101, 'Capital', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (105, 'Ecarts de rvaluation', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1061, 'Rserve lgale', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1063, 'Rserves statutaires ou contractuelles', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1064, 'Rserves rglementes', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1068, 'Autres rserves', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (105, 'Ecarts de réévaluation', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1061, 'Réserve légale', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1063, 'Réserves statutaires ou contractuelles', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1064, 'Réserves réglementées', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (1068, 'Autres réserves', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (108, 'Compte de l''exploitant', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (12, 'rsultat de l''exercice (bnfice ou perte)', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (145, 'Amortissements drogatoires', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (146, 'Provision spciale de rvaluation', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (147, 'Plus-values rinvesties', 1); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (148, 'Autres provisions rglementes', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (12, 'résultat de l''exercice (bénéfice ou perte)', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (145, 'Amortissements dérogatoires', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (146, 'Provision spéciale de réévaluation', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (147, 'Plus-values réinvesties', 1); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (148, 'Autres provisions réglementées', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (15, 'Provisions pour risques et charges', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (16, 'emprunts et dettes assimilees', 1); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (2, 'comptes d''immobilisations', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (20, 'immobilisations incorporelles', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (201, 'Frais d''tablissement', 20); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (201, 'Frais d''établissement', 20); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (206, 'Droit au bail', 20); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (207, 'Fonds commercial', 20); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (208, 'Autres immobilisations incorporelles', 20); @@ -1675,144 +1675,144 @@ INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (23, 'immobilisat INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (27, 'autres immobilisations financieres', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (280, 'Amortissements des immobilisations incorporelles', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (281, 'Amortissements des immobilisations corporelles', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (290, 'Provisions pour dprciation des immobilisations incorporelles', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (291, 'Provisions pour dprciation des immobilisations corporelles (mme ventilation que celle du compte 21)', 2); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (297, 'Provisions pour dprciation des autres immobilisations financires', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (290, 'Provisions pour dépréciation des immobilisations incorporelles', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (291, 'Provisions pour dépréciation des immobilisations corporelles (même ventilation que celle du compte 21)', 2); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (297, 'Provisions pour dépréciation des autres immobilisations financières', 2); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (3, 'comptes de stocks et en cours', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (31, 'matieres premires (et fournitures)', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (31, 'matieres premières (et fournitures)', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (32, 'autres approvisionnements', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (33, 'en-cours de production de biens', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (34, 'en-cours de production de services', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (35, 'stocks de produits', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (37, 'stocks de marchandises', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (391, 'Provisions pour dprciation des matires premires (et fournitures)', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (392, 'Provisions pour dprciation des autres approvisionnements', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (393, 'Provisions pour dprciation des en-cours de production de biens', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (394, 'Provisions pour dprciation des en-cours de production de services', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (395, 'Provisions pour dprciation des stocks de produits', 3); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (397, 'Provisions pour dprciation des stocks de marchandises', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (391, 'Provisions pour dépréciation des matières premières (et fournitures)', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (392, 'Provisions pour dépréciation des autres approvisionnements', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (393, 'Provisions pour dépréciation des en-cours de production de biens', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (394, 'Provisions pour dépréciation des en-cours de production de services', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (395, 'Provisions pour dépréciation des stocks de produits', 3); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (397, 'Provisions pour dépréciation des stocks de marchandises', 3); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4, 'comptes de tiers', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (400, 'Fournisseurs et Comptes rattachs', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (409, 'Fournisseurs dbiteurs', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (410, 'Clients et Comptes rattachs', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (419, 'Clients crditeurs', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (421, 'Personnel - Rmunrations dues', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (428, 'Personnel - Charges payer et produits recevoir', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43, 'Scurit sociale et autres organismes sociaux', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (431, 'Scurit sociale', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43731, 'Cotis.Sal.+Pat. Retraite salaris des', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43732, 'Cotis.Sal.+Pat. Retraite cadres des', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4374, 'Cotis.Sal.+Pat. ASSEDIC des', 43); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (444, 'Etat - Impts sur les bnfices', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (400, 'Fournisseurs et Comptes rattachés', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (409, 'Fournisseurs débiteurs', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (410, 'Clients et Comptes rattachés', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (419, 'Clients créditeurs', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (421, 'Personnel - Rémunérations dues', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (428, 'Personnel - Charges à payer et produits à recevoir', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43, 'Sécurité sociale et autres organismes sociaux', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (431, 'Sécurité sociale', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43731, 'Cotis.Sal.+Pat. Retraite salariés dûes', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (43732, 'Cotis.Sal.+Pat. Retraite cadres dûes', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (4374, 'Cotis.Sal.+Pat. ASSEDIC dûes', 43); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (444, 'Etat - Impôts sur les bénéfices', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445, 'Etat - Taxes sur le chiffre d''affaires', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44562, 'T.V.A. sur immobilisations', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445661, 'T.V.A. dductible 19,6% sur autres biens et services', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445662, 'T.V.A. dductible 5,5% sur autres biens et services', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445663, 'T.V.A. dductible 2,1% sur autres biens et services', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44571, 'T.V.A. collecte 19,6%', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44572, 'T.V.A. collecte 5,5%', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44573, 'T.V.A. collecte 2,1%', 445); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (447, 'Autres impts, taxes et versements assimils', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445661, 'T.V.A. déductible 19,6% sur autres biens et services', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445662, 'T.V.A. déductible 5,5% sur autres biens et services', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (445663, 'T.V.A. déductible 2,1% sur autres biens et services', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44571, 'T.V.A. collectée 19,6%', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44572, 'T.V.A. collectée 5,5%', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (44573, 'T.V.A. collectée 2,1%', 445); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (447, 'Autres impôts, taxes et versements assimilés', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (45, 'Groupe et associes', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (455, 'Associs - Comptes courants', 45); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (46, 'Dbiteurs divers et crditeurs divers', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (455, 'Associés - Comptes courants', 45); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (46, 'Débiteurs divers et créditeurs divers', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (47, 'comptes transitoires ou d''attente', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (481, 'Charges rpartir sur plusieurs exercices', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (486, 'Charges constates d''avance', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (487, 'Produits constats d''avance', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (491, 'Provisions pour dprciation des comptes de clients', 4); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (496, 'Provisions pour dprciation des comptes de dbiteurs divers', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (481, 'Charges à répartir sur plusieurs exercices', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (486, 'Charges constatées d''avance', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (487, 'Produits constatés d''avance', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (491, 'Provisions pour dépréciation des comptes de clients', 4); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (496, 'Provisions pour dépréciation des comptes de débiteurs divers', 4); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (5, 'comptes financiers', 0); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (50, 'valeurs mobilires de placement', 5); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (51, 'banques, tablissements financiers et assimils', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (50, 'valeurs mobilières de placement', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (51, 'banques, établissements financiers et assimilés', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (53, 'Caisse', 5); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (54, 'rgies d''avance et accrditifs', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (54, 'régies d''avance et accréditifs', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (58, 'virements internes', 5); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (590, 'Provisions pour dprciation des valeurs mobilires de placement', 5); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (590, 'Provisions pour dépréciation des valeurs mobilières de placement', 5); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6, 'comptes de charges', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (60, 'Achats (sauf 603)', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (607, 'Achats de marchandises', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (603, 'variations des stocks (approvisionnements et marchandises)', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6031, 'Variation des stocks de matires premires (et fournitures)', 603); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6031, 'Variation des stocks de matières premières (et fournitures)', 603); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6032, 'Variation des stocks des autres approvisionnements', 603); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6037, 'Variation des stocks de marchandises', 603); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (61, 'autres charges externes - Services extrieurs', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (62, 'autres charges externes - Autres services extrieurs', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (63, 'Impts, taxes et versements assimiles', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (641, 'Rmunrations du personnel', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (644, 'Rmunration du travail de l''exploitant', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6451, 'Cotisations l''URSSAF', 645); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (61, 'autres charges externes - Services extérieurs', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (62, 'autres charges externes - Autres services extérieurs', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (63, 'Impôts, taxes et versements assimiles', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (641, 'Rémunérations du personnel', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (644, 'Rémunération du travail de l''exploitant', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6451, 'Cotisations à l''URSSAF', 645); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6453, 'Cotisations aux caisses de retraites', 645); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6454, 'Cotisations aux ASSEDIC', 645); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (646, 'Cotisations sociales personnelles de l''exploitant', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (65, 'Autres charges de gestion courante', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (66, 'Charges financires', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (66, 'Charges financières', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (67, 'Charges exceptionnelles', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (681, 'Dotations aux amortissements et aux provisions - Charges d''exploitation', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6811, 'Dotations aux amortissements sur immobilisations incorporelles et corporelles', 681); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6815, 'Dotations aux provisions pour risques et charges d''exploitation', 681); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6816, 'Dotations aux provisions pour dprciation des immobilisations incorporelles et corporelles', 681); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6817, 'Dotations aux provisions pour dprciation des actifs circulants', 681); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (686, 'Dotations aux amortissements et aux provisions - Charges financires', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6816, 'Dotations aux provisions pour dépréciation des immobilisations incorporelles et corporelles', 681); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (6817, 'Dotations aux provisions pour dépréciation des actifs circulants', 681); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (686, 'Dotations aux amortissements et aux provisions - Charges financières', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (687, 'Dotations aux amortissements et aux provisions - Charges exceptionnelles', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (691, 'Participation des salaris aux rsultats', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (695, 'Impts sur les bnfices', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (697, 'Imposition forfaitaire annuelle des socits', 6); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (699, 'Produits - Reports en arrire des dficits', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (691, 'Participation des salariés aux résultats', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (695, 'Impôts sur les bénéfices', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (697, 'Imposition forfaitaire annuelle des sociétés', 6); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (699, 'Produits - Reports en arrière des déficits', 6); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (7, 'comptes de produits', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (701, 'Ventes de produits finis', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (706, 'Prestations de services', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (707, 'Ventes de marchandises', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (708, 'Produits des activits annexes', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (709, 'Rabais, remises et ristournes accords par l''entreprise', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (708, 'Produits des activités annexes', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (709, 'Rabais, remises et ristournes accordés par l''entreprise', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (713, 'Variation des stocks (en-cours de production, produits)', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (72, 'Production immobilise', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (72, 'Production immobilisée', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (74, 'Subventions d''exploitation', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (75, 'Autres produits de gestion courante', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (753, 'Jetons de prsence et rmunrations d''administrateurs, grants,...', 75); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (754, 'Ristournes perues des coopratives (provenant des excdents)', 75); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (755, 'Quotes-parts de rsultat sur oprations faites en commun', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (753, 'Jetons de présence et rémunérations d''administrateurs, gérants,...', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (754, 'Ristournes perçues des coopératives (provenant des excédents)', 75); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (755, 'Quotes-parts de résultat sur opérations faites en commun', 75); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (76, 'Produits financiers', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (77, 'Produits exceptionnels', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (781, 'Reprises sur amortissements et provisions ( inscrire dans les produits d''exploitation)', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (786, 'Reprises sur provisions pour risques ( inscrire dans les produits financiers)', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (787, 'Reprises sur provisions ( inscrire dans les produits exceptionnels)', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (781, 'Reprises sur amortissements et provisions (à inscrire dans les produits d''exploitation)', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (786, 'Reprises sur provisions pour risques (à inscrire dans les produits financiers)', 7); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (787, 'Reprises sur provisions (à inscrire dans les produits exceptionnels)', 7); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (79, 'Transferts de charges', 7); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8, 'Comptes spciaux', 0); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8, 'Comptes spéciaux', 0); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80, 'Engagements hors bilan', 8); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (801, 'Engagements donns par l''entit', 80); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (801, 'Engagements donnés par l''entité', 80); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8011, 'Avals, cautions, garanties', 801); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8014, 'Effets circulant sous l''endos de l''entit', 801); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8016, 'Redevances crdit-bail restant courir', 801); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80161, 'Crdit-bail mobilier', 8016); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80165, 'Crdit-bail immobilier', 8016); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8018, 'Autres engagements donns', 801); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (802, 'Engagements reus par l''entit', 80); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8014, 'Effets circulant sous l''endos de l''entité', 801); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8016, 'Redevances crédit-bail restant à courir', 801); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80161, 'Crédit-bail mobilier', 8016); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80165, 'Crédit-bail immobilier', 8016); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8018, 'Autres engagements donnés', 801); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (802, 'Engagements reçus par l''entité', 80); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8021, 'Avals, cautions, garanties', 802); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8024, 'Crances escomptes non chues', 802); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8026, 'Engagements reus pour utilisation en crdit-bail', 802); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80261, 'Crdit-bail mobilier', 8026); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80265, 'Crdit-bail immobilier', 8026); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8028, 'Autres engagements reus', 802); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8024, 'Créances escomptées non échues', 802); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8026, 'Engagements reçus pour utilisation en crédit-bail', 802); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80261, 'Crédit-bail mobilier', 8026); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (80265, 'Crédit-bail immobilier', 8026); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8028, 'Autres engagements reçus', 802); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (809, 'Contrepartie des engagements', 80); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8091, 'Contrepartie 801', 809); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (8092, 'Contrepartie 802', 809); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (88, 'Rsultat en instance d''affectation', 8); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (88, 'Résultat en instance d''affectation', 8); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (89, 'Bilan', 8); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (890, 'Bilan d''ouverture', 89); -INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (891, 'Bilan de clture', 89); +INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (891, 'Bilan de clôture', 89); INSERT INTO tmp_pcmn (pcm_val, pcm_lib, pcm_val_parent) VALUES (9, 'Comptes hors Compta', 0); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (101, 'TVAFranceNormal', 0.1960, 'TVA 19,6% - France mtropolitaine - Taux normal', '445661,44571'); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (102, 'TVAFranceRduit', 0.0550, 'TVA 5,5% - France mtropolitaine - Taux rduit', '445662,44572'); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (103, 'TVAFranceSuperRduit', 0.0210, 'TVA 2,1% - France mtropolitaine - Taux super rduit', '445663,44573'); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (104, 'TVAFranceImmos', 0.1960, 'TVA 19,6% - France mtropolitaine - Taux immobilisations', '44562,0'); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (105, 'TVAFranceAnciens', 0.0000, 'TVA x% - France mtropolitaine - Taux anciens', '445,445'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (101, 'TVAFranceNormal', 0.1960, 'TVA 19,6% - France métropolitaine - Taux normal', '445661,44571'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (102, 'TVAFranceRéduit', 0.0550, 'TVA 5,5% - France métropolitaine - Taux réduit', '445662,44572'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (103, 'TVAFranceSuperRéduit', 0.0210, 'TVA 2,1% - France métropolitaine - Taux super réduit', '445663,44573'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (104, 'TVAFranceImmos', 0.1960, 'TVA 19,6% - France métropolitaine - Taux immobilisations', '44562,0'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (105, 'TVAFranceAnciens', 0.0000, 'TVA x% - France métropolitaine - Taux anciens', '445,445'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (201, 'TVADomNormal', 0.0850, 'TVA 8,5% - DOM - Taux normal', '445,445'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (202, 'TVADomNPR', 0.0850, 'TVA 8,5% - DOM - Taux normal NPR', '445,445'); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (203, 'TVADomRduit', 0.0210, 'TVA 2,1% - DOM - Taux rduit', '445,445'); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (203, 'TVADomRéduit', 0.0210, 'TVA 2,1% - DOM - Taux réduit', '445,445'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (204, 'TVADom-I', 0.0175, 'TVA 1,75% - DOM - Taux I', '445,445'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (205, 'TVADomPresse', 0.0105, 'TVA 1,05% - DOM - Taux publications de presse', '445,445'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (206, 'TVADomOctroi', 0.0000, 'TVA x% - DOM - Taux octroi de mer', '445,445'); @@ -1826,7 +1826,7 @@ INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUE INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (402, 'TVAacquisIntracomImmos', 0.0000, 'TVA x% - Acquisitions intracommunautaires immobilisations/Pays', '445,0'); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (501, 'TVAfranchise', 0.0000, 'TVA x% - Non imposable : Achats en franchise', ''); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (502, 'TVAexport', 0.0000, 'TVA x% - Non imposable : Exports hors CE/Pays', ''); -INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (503, 'TVAautres', 0.0000, 'TVA x% - Non imposable : Autres oprations', ''); +INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (503, 'TVAautres', 0.0000, 'TVA x% - Non imposable : Autres opérations', ''); INSERT INTO tva_rate (tva_id, tva_label, tva_rate, tva_comment, tva_poste) VALUES (504, 'TVAlivrIntracom', 0.0000, 'TVA x% - Non imposable : Livraisons intracommunautaires/Pays', ''); diff --git a/html/admin/sql/patch/ac-upgrade8.sql b/html/admin/sql/patch/ac-upgrade8.sql new file mode 100644 index 000000000..a6f14c70e --- /dev/null +++ b/html/admin/sql/patch/ac-upgrade8.sql @@ -0,0 +1,6 @@ +begin; +update modeledef set mod_desc='Comptabilité Belge, à adapter' where mod_id=1; +update modeledef set mod_desc='Comptabilité Française, à adapter' where mod_id=2; +update version set val=9; +commit; + diff --git a/html/admin/sql/patch/downgrade7.sql b/html/admin/sql/patch/downgrade7.sql index 0e42b50ae..ce05a2c79 100644 --- a/html/admin/sql/patch/downgrade7.sql +++ b/html/admin/sql/patch/downgrade7.sql @@ -1,6 +1,6 @@ begin; -insert into tva_rate values (5,'0%',0, 'Pas soumis la TVA',null); +insert into tva_rate values (5,'0%',0, 'Pas soumis à la TVA',null); update fiche_def_ref set frd_class_base=2400 where frd_id=7; diff --git a/html/admin/sql/patch/upgrade11.sql b/html/admin/sql/patch/upgrade11.sql index 3b0e806f1..ce2e89bb9 100644 --- a/html/admin/sql/patch/upgrade11.sql +++ b/html/admin/sql/patch/upgrade11.sql @@ -6,15 +6,15 @@ create table parm_code ( p_comment text ); -INSERT INTO parm_code VALUES ('DNA', '6740', 'Dpense non dductible'); +INSERT INTO parm_code VALUES ('DNA', '6740', 'Dépense non déductible'); INSERT INTO parm_code VALUES ('CUSTOMER', '400', 'Poste comptable de base pour les clients'); -INSERT INTO parm_code VALUES ('COMPTE_TVA', '451', 'TVA payer'); +INSERT INTO parm_code VALUES ('COMPTE_TVA', '451', 'TVA à payer'); INSERT INTO parm_code VALUES ('BANQUE', '550', 'Poste comptable de base pour les banques'); INSERT INTO parm_code VALUES ('VIREMENT_INTERNE', '58', 'Poste Comptable pour les virements internes'); INSERT INTO parm_code VALUES ('COMPTE_COURANT', '56', 'Poste comptable pour le compte courant'); INSERT INTO parm_code VALUES ('CAISSE', '57', 'Poste comptable pour la caisse'); -INSERT INTO parm_code VALUES ('TVA_DNA', '6740', 'Tva non dductible s'); -INSERT INTO parm_code VALUES ('TVA_DED_IMPOT', '619000', 'Tva dductible par l''impt'); +INSERT INTO parm_code VALUES ('TVA_DNA', '6740', 'Tva non déductible s'); +INSERT INTO parm_code VALUES ('TVA_DED_IMPOT', '619000', 'Tva déductible par l''impôt'); INSERT INTO parm_code VALUES ('VENTE ', '70', 'Poste comptable de base pour les ventes'); -- Function: tva_delete(p_tva_id int4) diff --git a/html/admin/sql/patch/upgrade13.sql b/html/admin/sql/patch/upgrade13.sql index 906b53b9f..9a3343d98 100644 --- a/html/admin/sql/patch/upgrade13.sql +++ b/html/admin/sql/patch/upgrade13.sql @@ -366,7 +366,7 @@ language plpgsql ; delete from form where fo_fr_id=3000000; delete from formdef where fr_id=3000000; -INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA dclaration Belge'); +INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA déclaration Belge'); -- -- Data for TOC entry 2 (OID 315304) -- Name: formdef; Type: TABLE DATA; Schema: public; Owner: dany @@ -376,10 +376,10 @@ INSERT INTO formdef (fr_id, fr_label) VALUES (3000000, 'TVA d INSERT INTO form VALUES (3000398, 3000000, 1, 'Prestation [ case 03 ]', '[700%]-[7000005]'); INSERT INTO form VALUES (3000399, 3000000, 2, 'Prestation intra [ case 47 ]', '[7000005]'); INSERT INTO form VALUES (3000400, 3000000, 3, 'Tva due [case 54]', '[4513]+[4512]+[4511] FROM=01.2005'); -INSERT INTO form VALUES (3000401, 3000000, 4, 'Marchandises, matire premire et auxiliaire [case 81 ]', '[60%]'); +INSERT INTO form VALUES (3000401, 3000000, 4, 'Marchandises, matière première et auxiliaire [case 81 ]', '[60%]'); INSERT INTO form VALUES (3000402, 3000000, 7, 'Service et bien divers [case 82]', '[61%]'); INSERT INTO form VALUES (3000403, 3000000, 8, 'bien d''invest [ case 83 ]', '[2400%]'); -INSERT INTO form VALUES (3000404, 3000000, 9, 'TVA dductible [ case 59 ]', 'abs([4117]-[411%])'); +INSERT INTO form VALUES (3000404, 3000000, 9, 'TVA déductible [ case 59 ]', 'abs([4117]-[411%])'); INSERT INTO form VALUES (3000405, 3000000, 8, 'TVA non ded -> voiture', '[610022]*0.21/2'); INSERT INTO form VALUES (3000406, 3000000, 9, 'Acompte TVA', '[4117]'); @@ -414,10 +414,10 @@ COMMENT ON TABLE document_state IS 'State of the document'; SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('document_state', 's_id'), 3, true); -INSERT INTO document_state VALUES (1, 'Envoy'); +INSERT INTO document_state VALUES (1, 'Envoyé'); INSERT INTO document_state VALUES (2, 'Brouillon'); INSERT INTO document_state VALUES (3, 'A envoyer'); -INSERT INTO document_state VALUES (4, 'Reu'); +INSERT INTO document_state VALUES (4, 'Reçu'); ALTER TABLE ONLY document_state ADD CONSTRAINT document_state_pkey PRIMARY KEY (s_id); alter sequence s_attr_def restart with 24; @@ -453,7 +453,7 @@ comment on table action_gestion is 'Action for Managing'; alter sequence s_fiche_def_ref restart 16; insert into fiche_def_ref(frd_text) values ('Contact'); -insert into attr_def(ad_text) values ('Socit'); +insert into attr_def(ad_text) values ('Société'); insert into attr_def(ad_text) values ('Fax'); insert into attr_min values(16,1); insert into attr_min values(16,17); diff --git a/html/admin/sql/patch/upgrade14.sql b/html/admin/sql/patch/upgrade14.sql index 5b899e2ba..b880124e0 100644 --- a/html/admin/sql/patch/upgrade14.sql +++ b/html/admin/sql/patch/upgrade14.sql @@ -24,7 +24,7 @@ alter table import_tmp add constraint chk_status check (status in ('n','w','d', alter table import_tmp drop column ok ; comment on table import_tmp is 'Table temporaire pour l''importation des banques en format CSV'; -comment on column import_tmp.status is 'Status doit tre w pour en attente, t pour transfrer ou d effacer'; +comment on column import_tmp.status is 'Status doit être w pour en attente, t pour transfèrer ou d à effacer'; create or replace function trim_cvs_quote() returns trigger as $trim$ diff --git a/html/admin/sql/patch/upgrade28.sql b/html/admin/sql/patch/upgrade28.sql index 88d8a6c2d..950b8956c 100644 --- a/html/admin/sql/patch/upgrade28.sql +++ b/html/admin/sql/patch/upgrade28.sql @@ -5,10 +5,10 @@ delete from action where ac_id=9; delete from action where ac_id=19; delete from action where ac_id=18; update action set ac_description='Lecture du Grand-Livre' where ac_id=1; -insert into action values (31,'Gestion des priodes comptables'); +insert into action values (31,'Gestion des périodes comptables'); update action set ac_description = 'Lecture des fiches' where ac_id=3; update action set ac_description = 'Ajout de fiche et modification' where ac_id=15; -update action set ac_description = 'Cration et modifications des rapports' where ac_id=5; +update action set ac_description = 'Création et modifications des rapports' where ac_id=5; update version set val=29; commit; \ No newline at end of file diff --git a/html/admin/sql/patch/upgrade31.sql b/html/admin/sql/patch/upgrade31.sql index 1faaa37f4..38345b2d5 100644 --- a/html/admin/sql/patch/upgrade31.sql +++ b/html/admin/sql/patch/upgrade31.sql @@ -219,7 +219,6 @@ CREATE TABLE poste_analytique ( ); -ALTER TABLE public.poste_analytique OWNER TO phpcompta; -- -- Name: TABLE poste_analytique; Type: COMMENT; Schema: public; Owner: phpcompta @@ -285,7 +284,6 @@ CREATE TABLE operation_analytique ( ); -ALTER TABLE public.operation_analytique OWNER TO phpcompta; -- -- Name: TABLE operation_analytique; Type: COMMENT; Schema: public; Owner: phpcompta @@ -392,7 +390,6 @@ CREATE TABLE bilan ( ); -ALTER TABLE public.bilan OWNER TO phpcompta; -- -- Name: TABLE bilan; Type: COMMENT; Schema: public; Owner: phpcompta @@ -498,7 +495,6 @@ CREATE TABLE op_predef ( ); -ALTER TABLE public.op_predef OWNER TO phpcompta; -- -- Name: TABLE op_predef; Type: COMMENT; Schema: public; Owner: phpcompta @@ -576,7 +572,6 @@ CREATE TABLE op_predef_detail ( ); -ALTER TABLE public.op_predef_detail OWNER TO phpcompta; -- -- Name: TABLE op_predef_detail; Type: COMMENT; Schema: public; Owner: phpcompta diff --git a/html/admin/sql/patch/upgrade36.FR.sql b/html/admin/sql/patch/upgrade36.FR.sql index 0201dfd50..a557b0815 100644 --- a/html/admin/sql/patch/upgrade36.FR.sql +++ b/html/admin/sql/patch/upgrade36.FR.sql @@ -2,7 +2,7 @@ -- PostgreSQL database dump -- -SET client_encoding = 'LATIN1'; +SET client_encoding = 'utf8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; diff --git a/html/admin/sql/patch/upgrade36.sql b/html/admin/sql/patch/upgrade36.sql index 9c2ef8200..82e2f3a5d 100644 --- a/html/admin/sql/patch/upgrade36.sql +++ b/html/admin/sql/patch/upgrade36.sql @@ -221,7 +221,6 @@ CREATE SEQUENCE bud_card_bc_id_seq CACHE 1; -ALTER TABLE public.bud_card_bc_id_seq OWNER TO phpcompta; -- -- Name: bc_id; Type: DEFAULT; Schema: public; Owner: phpcompta @@ -265,7 +264,6 @@ CREATE TABLE bud_detail ( ); -ALTER TABLE public.bud_detail OWNER TO phpcompta; -- -- Name: TABLE bud_detail; Type: COMMENT; Schema: public; Owner: phpcompta @@ -313,7 +311,6 @@ CREATE SEQUENCE bud_detail_bd_id_seq CACHE 1; -ALTER TABLE public.bud_detail_bd_id_seq OWNER TO phpcompta; -- @@ -374,7 +371,6 @@ CREATE TABLE bud_detail_periode ( ); -ALTER TABLE public.bud_detail_periode OWNER TO phpcompta; -- -- Name: TABLE bud_detail_periode; Type: COMMENT; Schema: public; Owner: phpcompta @@ -409,7 +405,6 @@ CREATE SEQUENCE bud_detail_periode_bdp_id_seq CACHE 1; -ALTER TABLE public.bud_detail_periode_bdp_id_seq OWNER TO phpcompta; -- -- Name: bdp_id; Type: DEFAULT; Schema: public; Owner: phpcompta @@ -470,7 +465,6 @@ NEW.bc_code:=sCode; return NEW; end;$BODY$ LANGUAGE 'plpgsql' VOLATILE; -ALTER FUNCTION bud_card_ins_upd() OWNER TO phpcompta; -- -- Name: t_bud_card_ins_up; Type: TRIGGER; Schema: public; Owner: phpcompta diff --git a/html/admin/sql/patch/upgrade4.sql b/html/admin/sql/patch/upgrade4.sql index fa8fd8ffc..3d76a1c06 100644 --- a/html/admin/sql/patch/upgrade4.sql +++ b/html/admin/sql/patch/upgrade4.sql @@ -20,7 +20,7 @@ comment on table jrn_type is 'Type of journal (Sell, Buy, Financial...)'; comment on table parm_money is 'Currency conversion'; comment on table parm_periode is 'Periode definition'; comment on table stock_goods is 'About the goods'; -comment on table tmp_pcmn is 'Plan comptable minimum normalis'; +comment on table tmp_pcmn is 'Plan comptable minimum normalisé'; comment on table tva_rate is 'Rate of vat'; create sequence s_central; @@ -52,7 +52,7 @@ alter table jrn add jr_pj_type text; delete from user_sec_act WHERE ua_act_id =14; delete from action where ac_id=14; insert into action values (18,'Devise'); -insert into action values (19,'Priode'); +insert into action values (19,'Période'); insert into action values (20,'Voir la balance des comptes'); -- task 3374 diff --git a/html/admin/sql/patch/upgrade40.sql b/html/admin/sql/patch/upgrade40.sql index 47ec42da4..d0edf6b95 100644 --- a/html/admin/sql/patch/upgrade40.sql +++ b/html/admin/sql/patch/upgrade40.sql @@ -1,7 +1,7 @@ begin; insert into parm_code values ('DEP_PRIV',4890,'Depense a charge du gerant'); -insert into attr_def values (31,'Depense à charge du gérant (partie privée)'); +insert into attr_def values (31,'Depense à  charge du gérant (partie privée)'); alter table quant_purchase add qp_dep_priv numeric(20,4) default 0.0; CREATE FUNCTION insert_quant_purchase(p_internal text, p_j_id numeric, p_fiche character varying, p_quant numeric, p_price numeric, p_vat numeric, p_vat_code integer, p_nd_amount numeric, p_nd_tva numeric, p_nd_tva_recup numeric,p_dep_priv numeric , p_client character varying) RETURNS void diff --git a/html/admin/sql/patch/upgrade48.sql b/html/admin/sql/patch/upgrade48.sql new file mode 100644 index 000000000..039a7bcaa --- /dev/null +++ b/html/admin/sql/patch/upgrade48.sql @@ -0,0 +1,71 @@ +begin; +create sequence s_tva start with 1000; + alter table tva_rate alter tva_id set default nextval('s_tva'); + alter table form drop constraint "$1"; + alter table form add constraint formdef_fk foreign key (fo_fr_id) references formdef(fr_id) on update cascade on delete cascade; +drop function tva_insert(integer,text,numeric,text,text); + +CREATE or replace FUNCTION tva_insert( text, numeric, text, text) +RETURNS integer + AS $_$ +declare +l_tva_id integer; +p_tva_label alias for $1; +p_tva_rate alias for $2; +p_tva_comment alias for $3; +p_tva_poste alias for $4; +debit text; +credit text; +nCount integer; +begin +if length(trim(p_tva_label)) = 0 then + return 3; +end if; + +if length(trim(p_tva_poste)) != 0 then + if position (',' in p_tva_poste) = 0 then return 4; end if; + debit = split_part(p_tva_poste,',',1); + credit = split_part(p_tva_poste,',',2); + select count(*) into nCount from tmp_pcmn where pcm_val=debit; + if nCount = 0 then return 4; end if; + select count(*) into nCount from tmp_pcmn where pcm_val=credit; + if nCount = 0 then return 4; end if; + +end if; +select into l_tva_id nextval('s_tva') ; +insert into tva_rate(tva_id,tva_label,tva_rate,tva_comment,tva_poste) + values (l_tva_id,p_tva_label,p_tva_rate,p_tva_comment,p_tva_poste); +return 0; +end; +$_$ + LANGUAGE plpgsql; + +CREATE TABLE todo_list ( + tl_id integer NOT NULL, + tl_date date NOT NULL, + tl_title text NOT NULL, + tl_desc text, + use_login text NOT NULL +); + + +COMMENT ON TABLE todo_list IS 'Todo list'; + + +CREATE SEQUENCE todo_list_tl_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + +ALTER TABLE todo_list ALTER COLUMN tl_id SET DEFAULT nextval('todo_list_tl_id_seq'::regclass); + + +ALTER TABLE ONLY todo_list ADD CONSTRAINT todo_list_pkey PRIMARY KEY (tl_id); + +update version set val=49; + +commit; + diff --git a/html/admin/sql/patch/upgrade49.sql b/html/admin/sql/patch/upgrade49.sql new file mode 100644 index 000000000..d3aa7ca19 --- /dev/null +++ b/html/admin/sql/patch/upgrade49.sql @@ -0,0 +1,23 @@ +begin; +alter table jnt_fic_attr add column jnt_order int; +update jnt_fic_attr set jnt_order = 1; +alter table jnt_fic_attr alter jnt_order set not null; +update jnt_fic_attr set jnt_order = 4 where ad_id=5; +update jnt_fic_attr set jnt_order = 120 where ad_id=6; +update jnt_fic_attr set jnt_order = 130 where ad_id=7; +update jnt_fic_attr set jnt_order = 20 where ad_id=9; +update jnt_fic_attr set jnt_order = 30 where ad_id=13; +update jnt_fic_attr set jnt_order = 40 where ad_id=14; +update jnt_fic_attr set jnt_order = 70 where ad_id=16; +update jnt_fic_attr set jnt_order = 80 where ad_id=17; +update jnt_fic_attr set jnt_order = 90 where ad_id=18; +update jnt_fic_attr set jnt_order = 400 where ad_id=23; +update jnt_fic_attr set jnt_order = 60 where ad_id=24; +update jnt_fic_attr set jnt_order = 100 where ad_id=26; +update jnt_fic_attr set jnt_order = 110 where ad_id=27; +update jnt_fic_attr set jnt_order = 50 where ad_id=15; +update jnt_fic_attr set jnt_order = 30 where ad_id=5; +update jnt_fic_attr set jnt_order = 0 where ad_id=1; + +update version set val=50; +commit; diff --git a/html/admin/sql/patch/upgrade50.sql b/html/admin/sql/patch/upgrade50.sql new file mode 100644 index 000000000..f2af255d6 --- /dev/null +++ b/html/admin/sql/patch/upgrade50.sql @@ -0,0 +1,57 @@ +begin; + +CREATE OR REPLACE FUNCTION insert_jrnx(p_date character varying, p_montant numeric, p_poste poste_comptable, p_grpt integer, p_jrn_def integer, p_debit boolean, p_tech_user text, p_tech_per integer, p_qcode text) + RETURNS void AS +$BODY$ +declare + sCode varchar; + nCount_qcode integer; +begin + sCode=trim(p_qcode); + + -- if p_qcode is empty try to find one + if length(sCode) = 0 or p_qcode is null then + + select count(*) into nCount_qcode + from vw_poste_qcode where j_poste=p_poste::text; + -- if we find only one q_code for a accountancy account + -- then retrieve it + if nCount_qcode = 1 then + select j_qcode::text into sCode + from vw_poste_qcode where j_poste=p_poste::text; + else + sCode=NULL; + end if; + + end if; + + insert into jrnx + ( + j_date, + j_montant, + j_poste, + j_grpt, + j_jrn_def, + j_debit, + j_tech_user, + j_tech_per, + j_qcode + ) values + ( + to_date(p_date,'DD.MM.YYYY'), + p_montant, + p_poste, + p_grpt, + p_jrn_def, + p_debit, + p_tech_user, + p_tech_per, + sCode + ); + +return; +end; +$BODY$ + LANGUAGE 'plpgsql' VOLATILE; +update version set val=51; +commit; diff --git a/html/admin/sql/patch/upgrade6.sql b/html/admin/sql/patch/upgrade6.sql index ea425e650..be19a83bd 100644 --- a/html/admin/sql/patch/upgrade6.sql +++ b/html/admin/sql/patch/upgrade6.sql @@ -1,7 +1,7 @@ begin; --make sure that p_start < p_end ALTER TABLE parm_periode ADD CHECK (p_end >= p_start); -insert into tva_rate values (5,'0%',0, 'Pas soumis la TVA',null); +insert into tva_rate values (5,'0%',0, 'Pas soumis à la TVA',null); update version set val=7; diff --git a/html/admin/sql/patch/upgrade7.sql b/html/admin/sql/patch/upgrade7.sql index cfbbefb17..7580a3376 100644 --- a/html/admin/sql/patch/upgrade7.sql +++ b/html/admin/sql/patch/upgrade7.sql @@ -1,6 +1,6 @@ begin; -insert into tva_rate values (5,'0%',0, 'Pas soumis la TVA',null); +insert into tva_rate values (5,'0%',0, 'Pas soumis à la TVA',null); update fiche_def_ref set frd_class_base=2400 where frd_id=7; diff --git a/html/admin/sql/patch/upgrade8.sql b/html/admin/sql/patch/upgrade8.sql index 447d4685a..c78a2765b 100644 --- a/html/admin/sql/patch/upgrade8.sql +++ b/html/admin/sql/patch/upgrade8.sql @@ -1,6 +1,6 @@ begin; -insert into action values (21,'Import et export des critures d''ouverture'); +insert into action values (21,'Import et export des écritures d''ouverture'); create sequence s_quantity; @@ -100,11 +100,11 @@ $trim$ language plpgsql; create trigger trim_quote before insert or update on import_tmp FOR EACH ROW execute procedure trim_cvs_quote(); alter sequence s_attr_def restart 20; -insert into attr_def(ad_text) values ('Partie fiscalement non dductible'); -insert into attr_def(ad_text) values ('TVA non dductible'); -insert into attr_def(ad_text) values ('TVA non dductible rcuprable par l''impt'); -insert into tmp_pcmn( pcm_val,pcm_lib,pcm_val_parent,pcm_country) select distinct 6190,'TVA rcuprable par l''impt',61,'BE' from tmp_pcmn where pcm_country='BE'; -insert into tmp_pcmn( pcm_val,pcm_lib,pcm_val_parent,pcm_country) select distinct 6740,'Dpense non admise',67,'BE' from tmp_pcmn where pcm_country='BE' and not exists (select pcm_val from tmp_pcmn where pcm_val=6740); +insert into attr_def(ad_text) values ('Partie fiscalement non déductible'); +insert into attr_def(ad_text) values ('TVA non déductible'); +insert into attr_def(ad_text) values ('TVA non déductible récupérable par l''impôt'); +insert into tmp_pcmn( pcm_val,pcm_lib,pcm_val_parent,pcm_country) select distinct 6190,'TVA récupérable par l''impôt',61,'BE' from tmp_pcmn where pcm_country='BE'; +insert into tmp_pcmn( pcm_val,pcm_lib,pcm_val_parent,pcm_country) select distinct 6740,'Dépense non admise',67,'BE' from tmp_pcmn where pcm_country='BE' and not exists (select pcm_val from tmp_pcmn where pcm_val=6740); -- Change for Stan alter table tmp_pcmn alter pcm_val type text; update version set val=9; diff --git a/html/admin/test.php b/html/admin/test.php index 3fae38ace..1596a7d4d 100644 --- a/html/admin/test.php +++ b/html/admin/test.php @@ -36,7 +36,7 @@ include_once("ac_common.php"); include_once("postgres.php"); require_once ('class_dossier.php'); if ( ! file_exists('authorized_debug') ) { -echo "Pour pouvoir utiliser ce fichier vous devez créer un fichier nomme authorized_debug +echo "Pour pouvoir utiliser ce fichier vous devez créer un fichier nomme authorized_debug dans le repertoire html du server"; exit(); diff --git a/html/admin/test_me.php b/html/admin/test_me.php index 7ac9a7601..1301b464f 100644 --- a/html/admin/test_me.php +++ b/html/admin/test_me.php @@ -74,10 +74,10 @@ $b=$a->GetRow('1','9999','off'); -echo 'class_jrn il y a '.count($b[0]).' donnes trouve
'; +echo 'class_jrn il y a '.count($b[0]).' données trouvée
'; $b=$a->GetRow('1','9999','on'); -echo 'Class_jrn il y a '.sizeof($b[0]).' donnes Centralisees trouve
'; +echo 'Class_jrn il y a '.sizeof($b[0]).' données Centralisees trouvée
'; echo '

$a->GetRowSimple

'; $per_from=67;$per_to=70;$jrn=3; $c=0; @@ -99,7 +99,7 @@ foreach ($b as $line) { echo '
'; } -echo "Il y a $c donnes trouves par GetRowSimple "; +echo "Il y a $c données trouvées par GetRowSimple "; $s=sql_filter_per($cn,$per_from,$per_to,'p_id','jr_tech_per'); $count_rowS=GetArray($cn,"select count(*) as mcount from jrn where $s and jr_def_id=$jrn"); if ( $c != $count_rowS[0]['mcount'] ) { @@ -138,11 +138,11 @@ echo '

Poste->GetRow

'; $a=new poste($cn,4511); // grand livre $b=$a->GetRow('1','9999'); -echo 'class_poste il y a '.sizeof($b[0]).' donnes trouve
'; +echo 'class_poste il y a '.sizeof($b[0]).' données trouvée
'; $a=new Balance($cn,4519); // grand livre $b=$a->GetRow('1','9999'); -echo 'class_balance il y a '.sizeof($b).' donnes trouve
'; +echo 'class_balance il y a '.sizeof($b).' données trouvée
'; echo_debug('Testing echo_debug'); echo_error('Testing echo_error'); diff --git a/html/admin_repo.php b/html/admin_repo.php index c4cf9249c..a467b2712 100644 --- a/html/admin_repo.php +++ b/html/admin_repo.php @@ -51,29 +51,33 @@ echo "
".MenuAdmin()."
"; ?>
diff --git a/html/ajax_report.php b/html/ajax_report.php new file mode 100644 index 000000000..a846acccd --- /dev/null +++ b/html/ajax_report.php @@ -0,0 +1,68 @@ +export($file); + fclose ($file); + $name=dirname($_SERVER['REQUEST_URI']).DIRECTORY_SEPARATOR.$name; + + $a='{"answer":"ok","link":"'.$name.'"}'; + +} + else + $a='{"answer":"nok"}'; +echo_debug("fid.php",__LINE__,"Answer is \n $a"); +header("Content-type: text/html; charset: utf8",true); +print $a; +?> diff --git a/html/annulation.php b/html/annulation.php index eb17c3acb..b146dc652 100644 --- a/html/annulation.php +++ b/html/annulation.php @@ -136,7 +136,7 @@ if ($p_id != -1 ) { // A if ( $p_id != -1 ) { //B // Test whether date of the operation is in a closed periode // get the period_id - $p=ExecSql($cn,"select jr_tech_per from jrn where jr_grpt_id=".$_REQUEST['jrn_op']); + $p=ExecSqlParam($cn,"select jr_tech_per from jrn where jr_grpt_id=$1",array($_REQUEST['jrn_op'])); $period_id=pg_fetch_result($p,0,0); // thanks jrn_op (jrn.jr_id) we find out the concerned ledger @@ -171,7 +171,7 @@ if ($p_id != -1 ) { // A from jrn where jr_grpt_id=".$_POST['p_id']; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -187,7 +187,7 @@ if ($p_id != -1 ) { // A from jrnx where j_grpt=".$_POST['p_id']; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -196,7 +196,7 @@ if ($p_id != -1 ) { // A // Mark the operation invalid into the ledger // to avoid to nullify twice the same op. $sql="update jrn set jr_comment='Annule : '||jr_comment where jr_grpt_id=".$_POST['p_id']; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -206,16 +206,16 @@ if ($p_id != -1 ) { // A $Res=ExecSql($cn,"update quant_sold set ". - " qs_valid='A' where qs_internal='".$l_array['jr_internal']."'", - false); + " qs_valid='A' where qs_internal='".$l_array['jr_internal']."'" + ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); $Res=ExecSql($cn,"update quant_purchase set ". - " qp_valid='A' where qp_internal='".$l_array['jr_internal']."'", - false); + " qp_valid='A' where qp_internal='".$l_array['jr_internal']."'" + ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -235,7 +235,7 @@ if ($p_id != -1 ) { // A // also in the stock table $sql="delete from stock_goods where sg_id = any ( select sg_id from stock_goods natural join jrnx where j_grpt=".$_POST['p_id'].")"; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); // Check return code if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -284,7 +284,7 @@ self.opener.RefreshMe(); // delete from the rapt table $sql="delete from jrn_rapt where jr_id = any (select jr_id from jrn ". " where jr_grpt_id = ".$_POST['p_id'].")"; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -292,16 +292,16 @@ self.opener.RefreshMe(); $Res=ExecSql($cn,"delete from quant_sold ". - " where qs_internal='".$l_array['jr_internal']."'", - false); + " where qs_internal='".$l_array['jr_internal']."'" + ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); $Res=ExecSql($cn,"delete from quant_purchase ". - " where qp_internal='".$l_array['jr_internal']."'", - false); + " where qp_internal='".$l_array['jr_internal']."'" + ); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); @@ -318,27 +318,27 @@ self.opener.RefreshMe(); // delete from the stock table $sql="delete from stock_goods where sg_id = any ( select sg_id from stock_goods natural join jrnx where j_grpt=".$_POST['p_id'].")"; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // delete from CA $sql="delete from operation_analytique where j_id in (select j_id from"; $sql.=" jrnx where j_grpt=".$_POST['p_id'].")"; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // delete from jrnx & jrn $sql="delete from jrnx where j_grpt=".$_POST['p_id']; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); if ( $Res == false) throw (new Exception(__FILE__.__LINE__."sql a echoue [ $sql ]")); // build the sql stmt for jrn $sql= "delete from jrn where jr_grpt_id=".$_POST['p_id']; - $Res=ExecSql($cn,$sql,false); + $Res=ExecSql($cn,$sql); if ( $Res == false) throw (new Exception(__FILE__.__LINE__." sql a echoue [ $sql ]")); diff --git a/html/backup.php b/html/backup.php new file mode 100644 index 000000000..fa6f31319 --- /dev/null +++ b/html/backup.php @@ -0,0 +1,75 @@ +Check(); + + +if ($User->admin != 1) { + echo ""; + return; +} + +/*!\file + * \brief Make and restore backup + */ +if ( isset ($_REQUEST['sa']) ) { + if ( ! isset ($_REQUEST['d']) || + ! isset($_REQUEST['t'])) + { + echo "Erreur : paramètre manquant "; + exit(); + } + + $sa=$_REQUEST['sa']; + // backup + if ( $sa=='b') { + $cmd=escapeshellcmd (PG_DUMP); + putenv("PGPASSWORD=".phpcompta_password); + putenv("PGUSER=".phpcompta_user); + + if ( $_REQUEST['t'] == 'd' ) { + $database=domaine."dossier".$_REQUEST['d']; + $args= " -Fc -Z9 -p ".phpcompta_psql_port." ".$database; + header('Content-type: application/octet'); + header('Content-Disposition:attachment;filename="'.$database.'.bin"',FALSE); + + passthru ($cmd.$args,$a); + + } + + if ( $_REQUEST['t'] == 'm' ) { + $database=domaine."mod".$_REQUEST['d']; + $args= " -Fc -Z9 -p ".phpcompta_psql_port." ".$database; + header('Content-type: bin/x-application'); + header('Content-Disposition: attachment;filename="'.$database.'.bin"',FALSE); + $a=passthru ($cmd.$args); + } + } + } + diff --git a/html/bal_csv.php b/html/bal_csv.php index 3d7569ece..f6bd2eed0 100644 --- a/html/bal_csv.php +++ b/html/bal_csv.php @@ -47,7 +47,7 @@ $t_cent=""; //$per=join(',',$periode); if ( isset($_POST['central']) ) { $bal->central='Y'; - $t_cent="centralise"; + $t_cent="centralisée"; } else $bal->central='N'; diff --git a/html/bud_ajax.php b/html/bud_ajax.php index 940179eac..afe5d214b 100644 --- a/html/bud_ajax.php +++ b/html/bud_ajax.php @@ -41,7 +41,7 @@ if ( $_POST['action'] == 'delete') { $obj->bd_id=$bd_id; $obj->delete_by_bd_id(); } - header("Content-type: application/json charset=\"ISO8859-1\"",true); + header("Content-type: application/json charset=\"utf8\"",true); echo '{"bd_id":"0","form_id":"'.$form_id.'"}'; } @@ -60,7 +60,7 @@ if ( $_POST['action'] == 'save' ) { $obj->update(); } - header("Content-type: application/json charset=\"ISO8859-1\"",true); + header("Content-type: application/json charset=\"utf8\"",true); echo '{"bd_id":"'.$obj->bd_id.'","form_id":"'.$form_id.'"}'; } diff --git a/html/bud_search_poste.php b/html/bud_search_poste.php index ff2ca8398..8623b90f1 100644 --- a/html/bud_search_poste.php +++ b/html/bud_search_poste.php @@ -79,7 +79,7 @@ echo ''; echo ''; -echo ''; +echo ''; echo ''; if ( ! isset ($p_comment) ) $p_comment=""; echo ''; diff --git a/html/commercial.php b/html/commercial.php index 4a8f1b689..f77cc44a6 100644 --- a/html/commercial.php +++ b/html/commercial.php @@ -79,16 +79,17 @@ $p_action=(isset ($_REQUEST['p_action']))?$_REQUEST['p_action']:""; echo '
'; echo ShowItem(array( array('?p_action=client&'.$str_dossier,'Client'), - array('?p_action=facture&'.$str_dossier,'Vente/Facture'), + array('?p_action=ven&'.$str_dossier,'Vente/Facture'), array('?p_action=fournisseur&'.$str_dossier,'Fournisseur'), - array('?p_action=depense&'.$str_dossier,'Achat/Dépense'), + array('?p_action=ach&'.$str_dossier,'Achat/Dépense'), + array('?p_action=bank&'.$str_dossier,'Banque'), array('?p_action=quick_writing&'.$str_dossier,'Ecriture directe'), array('?p_action=impress&'.$str_dossier,'Impression'), array('?p_action=stock&'.$str_dossier,'Stock'), - array('?p_action=bank&'.$str_dossier,'Banque'), array('?p_action=fiche&'.$str_dossier,'Fiche'), array('?p_action=periode&'.$str_dossier,'Ferm. Periode'), array('?p_action=central&'.$str_dossier,'Centralisation'), + array('?p_action=defreport&'.$str_dossier,'Rapport'), array('?p_action=contact&'.$str_dossier,'Contact'), array('?p_action=suivi_courrier&'.$str_dossier,'Suivi Courrier'), ), @@ -111,6 +112,7 @@ if ( $p_action == "pref" ) { require_once("pref.inc.php"); } + //----------------------------------------------------- // p_action == client //----------------------------------------------------- @@ -124,6 +126,7 @@ if ( $p_action == 'fournisseur') { require_once("supplier.inc.php"); } + //----------------------------------------------------- // action if ( $p_action == 'suivi_courrier') @@ -133,9 +136,9 @@ if ( $p_action == 'suivi_courrier') //----------------------------------------------------- // p_action == facture //----------------------------------------------------- -if ( $p_action == "facture" ) +if ( $p_action == "ven" ) { - require_once("facture.inc.php"); + require_once("compta_ven.inc.php"); } //----------------------------------------------------- // Contact @@ -145,15 +148,16 @@ if ( $p_action == 'contact') } //----------------------------------------------------- // Expense -if ( $p_action == 'depense') +if ( $p_action == 'ach') { - require_once("depense.inc.php"); + require_once("compta_ach.inc.php"); } + //----------------------------------------------------- // Banque if ( $p_action == 'bank') { - require_once("bank.inc.php"); + require_once("compta_fin.inc.php"); } if ( $p_action=='quick_writing') { require_once ('quick_writing.inc.php'); @@ -183,3 +187,9 @@ if ( $p_action=='periode') { if ( $p_action=='central') { require_once ('central.inc.php'); } +//----------------------------------------------------- +// Expense +if ( $p_action == 'defreport') +{ + require_once("report.inc.php"); +} diff --git a/html/compta.php b/html/compta.php index e9244e620..9dd59e5b8 100644 --- a/html/compta.php +++ b/html/compta.php @@ -21,12 +21,31 @@ /* $Revision$ */ /*! \file - * \brief Main page for the printing + * \brief Main page for accountancy */ require_once('class_dossier.php'); $gDossier=dossier::id(); include_once ("ac_common.php"); -html_page_start($_SESSION['g_theme']); +$action=(isset($_REQUEST['p_action']))?$_REQUEST['p_action']:''; +$use_html=1; +//---------------------------------------------------------------------- +/*!\todo find a way to improve performance : the calendar must not + * always be loaded and takes at least 50KB + */ +if ( $action == 'ven' && ! isset ($_REQUEST['sa']) ) + $use_html=1; + +if ( ! isset ($_SESSION['g_theme'])) { + echo '

Vous êtes déconnecté

'; + exit(); +} +if ( $action == 'ven' && isset ($_REQUEST['sa']) && in_array($_REQUEST['sa'],array('n','p') )) + $use_html=1; +if ( $use_html == 1) + html_page_start($_SESSION['g_theme']); +else + html_min_page_start($_SESSION['g_theme']); +//---------------------------------------------------------------------- include_once ("postgres.php"); @@ -41,7 +60,7 @@ $User->Check(); require_once ("check_priv.php"); include_once ("user_menu.php"); echo '
'; -$action=$_REQUEST['p_action']; + echo ShowMenuCompta("user_advanced.php?".dossier::get()); echo '
'; @@ -56,6 +75,7 @@ if ( $action == 'impress' ) { require_once('impress.inc.php'); } + if ( $action == 'fiche') { require_once('fiche.inc.php'); @@ -67,5 +87,20 @@ if ( $action == 'stock') { if ( $action=='quick_writing') { require_once ('quick_writing.inc.php'); } +if ( $action == 'gl' ) { + require_once ('user_action_gl.php'); + } +if ( $action == 'ven' || + $action == 'client') { + require_once ('compta_ven.inc.php'); + } +if ( $action == 'ach' || + $action == 'fournisseur') { + require_once ('compta_ach.inc.php'); + } +if ( $action == 'bank') { + require_once ('compta_fin.inc.php'); + } + html_page_stop(); ?> diff --git a/html/compute.php b/html/compute.php new file mode 100644 index 000000000..c02d8b4d3 --- /dev/null +++ b/html/compute.php @@ -0,0 +1,67 @@ +set_parameter('id',$t); +$tva_rate->load(); + +$total=new Acc_Compute(); +bcscale(4); +$amount=bcmul($p,$q); +$total->set_parameter('amount',$amount); +$total->set_parameter('amount_vat_rate',$tva_rate->get_parameter('rate')); +$total->compute_vat(); +$tvac=bcadd($total->get_parameter('amount_vat'),$amount); +header("Content-type: text/html; charset: utf8",true); +echo '{"ctl":"'.$n.'","htva":"'.$amount.'","tva":"'.$total->get_parameter('amount_vat').'","tvac":"'.$tvac.'"}'; +?> + diff --git a/html/confirm_remove.php b/html/confirm_remove.php index ecd3beb19..6c1a85143 100644 --- a/html/confirm_remove.php +++ b/html/confirm_remove.php @@ -36,7 +36,7 @@ html_page_start($User->theme,'onLoad="window.focus();"'); $User->Check(); if ($User->admin != 1) { -print "

Dsol mais vous n' tes pas administrateur

"; +print "

Désolé mais vous n' êtes pas administrateur

"; html_page_stop(); return; @@ -46,9 +46,9 @@ if ( ! isset ($_REQUEST['p_type'] ) || ! isset ($_REQUEST['ob_id'])) { print '

'; - print "Dsol vous n'avez pas appel cette fonction avec les bons paramtres"; + print "Désolé vous n'avez pas appelé cette fonction avec les bons paramètres"; print '

'; - print '
'; + print '
'; return; } $cn=DbConnect(); @@ -61,31 +61,31 @@ switch($_REQUEST['p_type']) if ( strlen(trim($name)) == 0 ) { echo "

$msg inexistant

"; - print '
'; + print '
'; return; } break; case 'mod': - $msg="modle"; + $msg="modèle"; $name=getDbValue($cn,"select mod_name from modeledef where mod_id=".$_REQUEST['ob_id']); if ( strlen(trim($name)) == 0 ) { echo "

$msg inexistant

"; - print '
'; + print '
'; return; } if ( $_REQUEST['ob_id'] < 3 ) { - echo "

Dsol mais vous ne pouvez pas effacer les modles de base

"; - print '
'; + echo "

Désolé mais vous ne pouvez pas effacer les modèles de base

"; + print '
'; return; } break; default: print '

'; - print "Dsol mais que voulez-vous effacer ? "; + print "Désolé mais que voulez-vous effacer ? "; print '

'; - print '
'; + print '
'; return; } @@ -106,17 +106,17 @@ if ( isset($_POST['remove']) ) ob_end_clean(); echo "

- Base de donne ".domaine."mod".$_POST['ob_id']." est accde, dconnectez-vous d'abord

"; - print '
'; + Base de donnée ".domaine."mod".$_POST['ob_id']." est accèdée, déconnectez-vous d'abord"; + print '
'; exit; } ob_flush(); $sql="delete from modeledef where mod_id=".$_POST['ob_id']; ExecSql($cn,$sql); print '

'; - print "Voil le modle $name est effac"; + print "Voilà le modèle $name est effacé"; print "

"; - print '
'; + print '
'; break; case 'db': $sql="drop database ".domaine."dossier".$_POST['ob_id']; @@ -125,8 +125,8 @@ if ( isset($_POST['remove']) ) ob_end_clean(); echo "

- Base de donne ".domaine."mod".$_POST['ob_id']." est accde, dconnectez-vous d'abord

"; - print '
'; + Base de donnée ".domaine."mod".$_POST['ob_id']." est accèdée, déconnectez-vous d'abord"; + print '
'; exit; } ob_flush(); @@ -137,20 +137,20 @@ if ( isset($_POST['remove']) ) $sql="delete from ac_dossier where dos_id=".$_REQUEST['ob_id']; ExecSql($cn,$sql); print '

'; - print "Voil le modle $name est effac"; + print "Voilà le modèle $name est effacé"; print "

"; - print '
'; + print '
'; } } else { print '

'; - print "$msg $name n'est pas effac"; + print "$msg $name n'est pas effacé"; print '

'; print "
"; - print "Vous n'avez pas coch la case"; - print '
'; + print "Vous n'avez pas coché la case"; + print '
'; } } diff --git a/html/control.php b/html/control.php index c51b93601..131c4907b 100644 --- a/html/control.php +++ b/html/control.php @@ -60,6 +60,12 @@ switch ($m) { case 'pref': get_redirect('user_pref.php?'.dossier::get().$phpsessid); break; + case 'home': + get_redirect('user_login.php'.$phpsessid); + break; + case 'access': + get_redirect('access.php?'.dossier::get().$phpsessid); + break; case 'logout': get_redirect('logout.php'); diff --git a/html/ecrit_ouv.php b/html/ecrit_ouv.php deleted file mode 100644 index f25530930..000000000 --- a/html/ecrit_ouv.php +++ /dev/null @@ -1,199 +0,0 @@ -Check(); - -include_once ("check_priv.php"); - -include_once ("user_menu.php"); -echo '
'; -echo ShowMenuCompta("user_advanced.php?".dossier::get()); -echo '
'; -// \todo add a check for permission - - -echo ShowMenuAdvanced(8); - -$User->can_request($cn,EXP_IMP_ECR); - - -echo ''; -echo '
'; -//----------------------------------------------------- -//EXPORT -//////////////////////////////////////////// -if ( isset ($_GET['export'])) { - // if the year is not set, ask it - // ask the exercice and do the export - $periode=make_array($cn,"select distinct p_exercice,p_exercice from parm_periode order by p_exercice"); - echo '
'; - $w=new widget('select'); - $w->table=0; - $w->label='Periode'; - $w->readonly=false; - $w->value=$periode; - $w->name="p_periode"; - echo 'Période : '.$w->IOValue(); - echo widget::submit('export','Export'); - echo dossier::hidden(); - echo ""; - exit(0); -} -//----------------------------------------------------- IMPORT -//////////////////////////////////////////// -if ( isset ($_GET['import'])) { - // show a form to upload the file - // that form will parse the file, create an ods operation - // and ask you to validate it - // if no file is given - if ( ! isset ($_REQUEST['p_submit']) ) { -?> -
-name='p_jrn'; - $x->value=$ods; - echo "Choississez votre journal ".$x->IOValue(); - - $w=new widget("file"); - $w->name='import_file'; - $w->label='p_file'; - echo $w->IOValue(); - echo widget::submit('p_submit','Charger le fichier'); -?> - -'; - $end=true; - continue; - } - if ( $end ) { - echo $line."
"; - continue; - } - // check if the first line contains the signature - if ( $valid ) - { - // skip blank line - if (strlen (trim($line)) == 0 ) continue; - // put the line into several array with the same index - echo_debug('ecrit_ouv',__LINE__," line $line"); - list($sign,$poste,$label,$amount)=explode(";",$line); - $asign[$idx]=$sign; $aposte[$idx]=$poste;$aamount[$idx]=$amount; - $alabel[$idx]=$label; - $idx++; - } - else - { - $valid = strpos($line, "OUVERTURE") !== false; - - } - } // read the file - // if valid is still false then there is nothing to do - if ( ! $valid) { echo 'Aucun enregistrement valide'; return ;} - // compose the array for the function FormODS - $array_ods['e_comm']='Ecriture d\'ouverture'; - for ($i=0;$i<$idx;$i++) { - $n="e_account$i"; - $array_ods[$n]=$aposte[$i]; - $n="e_account".$i."_type"; - $array_ods[$n]=$asign[$i]; - $n="e_account".$i."_amount"; - $array_ods[$n]=$aamount[$i]; - } - // Check if all the poste exist - // otherwise create it - for ($i=0;$i<$idx;$i++) - { - - $p=new Acc_Account_Ledger($cn,$aposte[$i]); - - // if the poste exists then check the next one - if ( $p->load() == true ) continue; - echo 'Attention creation de '.$p->id.' '.$alabel[$i].'
'; - $sql=sprintf("select account_add(%d,'%s')", - $p->id,$alabel[$i]); - - ExecSql($cn,$sql); - } - - // submit button in the form - $submit=' - '; - $r=FormODS($cn,$_POST['p_jrn'],$User->get_periode(),$submit, - $array_ods,false,$idx,$p_saved=false); - - echo $r; - echo "

On-line calculator

".JS_CALC_LINE."
"; - - } - } - } // else -> a file is given - }// if import -// IF import and export are not set then the choice is proposed -echo '
'; -html_page_stop(); -?> diff --git a/html/export_ouv.php b/html/export_ouv.php index 66457121c..88b68e956 100644 --- a/html/export_ouv.php +++ b/html/export_ouv.php @@ -45,7 +45,7 @@ $cn=DbConnect($gDossier); $User->can_request($cn,EXP_IMP_ECR); if ( !isset ($_GET['p_periode'])) { - echo 'Erreur : aucune periode demande'; + echo 'Erreur : aucune periode demandée'; exit(0); } $sql_from=get_array($cn,"select min(p_id) from parm_periode where p_exercice=".$_GET['p_periode']); @@ -59,7 +59,7 @@ $ret=get_array($cn,"select distinct j_poste::text j_tech_per <= ".$sql_to[0]['max']." and j_poste::text not like '7%' and j_poste::text not like '6%' order by j_poste::text"); -if ( $ret == null ) {echo 'Rien exporter'; exit();} +if ( $ret == null ) {echo 'Rien à exporter'; exit();} printf ("OUVERTURE\n"); // check if the account are balanced $sum=0; diff --git a/html/fiche.php b/html/fiche.php index 21bf7e636..8edf75989 100644 --- a/html/fiche.php +++ b/html/fiche.php @@ -98,7 +98,7 @@ $r=""; if ( isset ($_POST["add_line"]) ) { $r= '
'; if ( $write ==0) - $r.= "

Pas d'accs

"; + $r.= "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); @@ -114,7 +114,7 @@ if ( isset ($_POST["add_line"]) ) { if ( isset ($_POST["change_name"] ) ) { $r= '
'; if ( $write ==0) - $r.= "

Pas d'accs

"; + $r.= "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); @@ -150,7 +150,7 @@ if ( isset ( $_GET["action"]) ) { $t=false; if ( $write == 0) { - echo '

Vos changements ne seront pas sauvs

'; + echo '

Vos changements ne seront pas sauvés

'; $t=true; } $str=""; @@ -196,7 +196,7 @@ if ( isset ( $_GET["action"]) ) { if ($action == "modifier" ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { @@ -228,7 +228,7 @@ if ( isset ( $_GET["action"]) ) { if ( sizeof($all) != 0 ) { echo '
'; - echo "Nombre de rsultat : ".sizeof($all).'
'; + echo "Nombre de résultat : ".sizeof($all).'
'; foreach ($all as $f_id){ $fiche=new fiche($cn,$f_id['f_id']); echo 'IOValue('search_text',$search_text); echo widget::submit('submit','Rechercher'); echo ''; - echo "Aucun rsultat trouv"; + echo "Aucun résultat trouvé"; echo '
'; @@ -259,7 +259,7 @@ if ( isset ( $_GET["action"]) ) { if ( isset ($_POST["fiche"]) && isset ($_POST["add"] ) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $url=$_SERVER['REQUEST_URI']; @@ -282,7 +282,7 @@ if ( isset ($_POST["fiche"]) && isset ($_POST["add"] ) ) { if (isset($_POST['delete']) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche=new fiche($cn,$_POST["f_id"]); @@ -300,7 +300,7 @@ if ( isset ($_POST["add_fiche"]) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche=new fiche($cn); @@ -318,7 +318,7 @@ if ( isset ($_POST["add_fiche"]) ) { if ( isset ($_POST["update_fiche"]) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche=new fiche($cn,$_POST['f_id']); diff --git a/html/fiche_new.php b/html/fiche_new.php index 709a60043..e23dff71f 100644 --- a/html/fiche_new.php +++ b/html/fiche_new.php @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with PHPCOMPTA; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ + */ // Auteur Dany De Bontridder ddebontridder@yahoo.fr include_once ("ac_common.php"); include_once ("postgres.php"); @@ -25,6 +25,10 @@ require_once("class_fiche_def.php"); /*! \file * \brief Create a new card in a popup window + * \note parameter (GET) e_type (deb, cred, filter) if filter is + * specified, you can give a p_jrn parameter, otherwise e_type + * contains a list of value + * */ /* $Revision$ */ @@ -34,7 +38,7 @@ include_once ("class_user.php"); $User=new User($rep); $User->Check(); -html_page_start($User->theme,"onLoad='window.focus();'"); +html_min_page_start($User->theme,"onLoad='window.focus();'"); require_once('class_dossier.php'); $gDossier=dossier::id(); @@ -56,7 +60,7 @@ foreach ($_GET as $key=>$element) { echo_debug('fiche_new.php',__LINE__,"e_$key =$element
"); } - +echo JS_TVA; function new_fiche($p_cn,$p_type) { $fiche=new fiche($p_cn); $r='
'; @@ -69,7 +73,7 @@ function new_fiche($p_cn,$p_type) { $r.= '

'.$fiche_def->label.'
Nouveau

'; $r.= $fiche->blank($p_type); - $r.=''; + $r.=''; $r.=''; return $r; @@ -109,11 +113,11 @@ if ( isset($_POST['add_fiche'])) { } else { // We have to find it from the database if ( $e_type == 'deb' ) { $get='jrn_def_fiche_deb'; - $sql="select $get as fiche from jrn_def where jrn_def_id=".$_GET['p_jrn']; + $sql="select $get as fiche from jrn_def where jrn_def_id=$1"; } if ( $e_type == 'cred' ) { $get='jrn_def_fiche_cred'; - $sql="select $get as fiche from jrn_def where jrn_def_id=".$_GET['p_jrn']; + $sql="select $get as fiche from jrn_def where jrn_def_id=$1"; } if ($e_type=='filter') { @@ -121,13 +125,13 @@ if ( isset($_POST['add_fiche'])) { $get_deb='jrn_def_fiche_deb'; - $sql="select $get_cred||','||$get_deb as fiche from jrn_def where jrn_def_id=".$_GET['p_jrn']; + $sql="select $get_cred||','||$get_deb as fiche from jrn_def where jrn_def_id=$1"; } - $Res=ExecSql($cn,$sql); + $Res=ExecSqlParam($cn,$sql,array($_GET['p_jrn'])); // fetch it $Max=pg_NumRows($Res); @@ -138,7 +142,7 @@ if ( isset($_POST['add_fiche'])) { // Normally Max must be == 1 $list=pg_fetch_array($Res,0); if ( $list['fiche']=="") { - echo_warning("Journal mal paramtr"); + echo_warning("Journal mal paramètré"); return; } } @@ -165,7 +169,7 @@ if ( isset($_POST['cat'])) { // recharger avec var. cat if ( sizeof($a)>1 and !isset ($_POST['cat'])) { - echo "Choix catgories fiche"; + echo "Choix catégories fiche"; echo '
'; echo dossier::hidden(); foreach ($a as $element) { diff --git a/html/fiche_search.php b/html/fiche_search.php index d9e907382..4e817c104 100644 --- a/html/fiche_search.php +++ b/html/fiche_search.php @@ -31,14 +31,15 @@ $rep=DbConnect(); include_once ("class_user.php"); $User=new User($rep); $User->Check(); - +echo JS_SEARCH_CARD; +echo JS_MINTOOLKIT; //determine focus: if ( isset ( $_GET['search']) ) { - html_page_start($User->theme,"onLoad=\"window.focus();SetFocus('select0',0)\""); + html_min_page_start($User->theme,"onLoad=\"window.focus();SetFocus('select0',0)\""); } else { - html_page_start($User->theme,"onLoad=\"window.focus();SetFocus('fic_search',0)\""); + html_min_page_start($User->theme,"onLoad=\"window.focus();SetFocus('fic_search',0)\""); } @@ -51,7 +52,7 @@ $cn=DbConnect($gDossier); // Get The priv on the selected folder if ( $User->check_action($cn,FICHE_READ) == 0 ){ /* Cannot Access */ - echo '

Vous n\' avez pas accs

'; + echo '

Vous n\' avez pas accès

'; return; } @@ -69,7 +70,7 @@ function get_list_fiche($p_cn,$get,$p_jrn) // Normally Max must be == 1 $list=pg_fetch_array($Res,0); if ( $list['fiche']=="") { - echo_warning("Journal mal paramtr"); + echo_warning("Journal mal paramètré"); exit(); } $list_fiche=$list['fiche']; @@ -79,12 +80,18 @@ function get_list_fiche($p_cn,$get,$p_jrn) javascript=sprintf("NewCard('%s','%s','%s')", + $_REQUEST['PHPSESSID'], + $_GET['type'], + "fic_search"); +$add_card->label="Ajout d'une fiche"; foreach ($_GET as $key=>$element) { // The value are e_name e_type e_PHPSESSID @@ -95,9 +102,11 @@ foreach ($_GET as $key=>$element) { $e_fic_search=(isset ($_REQUEST['fic_search']))?$_REQUEST['fic_search']:""; $r.=""; -$r.="Recherche : ".''; +$r.="Recherche : ".''; $r.=''; - +if ( isset ($_REQUEST['p_jrn'])) + echo widget::hidden('p_jrn',$_REQUEST ['p_jrn']); +echo dossier::hidden(); $r.="
"; echo $r; $r=""; @@ -150,8 +159,7 @@ if ( // if e_type contains a list of value for filtering on fiche_def_ref.frd_id else{ $list_fiche=$e_type; - $sql="select * from vw_fiche_attr where frd_id in ( $list_fiche )"; - // $sql="select * from vw_fiche_attr "; + $sql="select * from vw_fiche_attr where fd_id in ( $list_fiche )"; } // e_fic_search contains the pattern @@ -166,7 +174,8 @@ if ( // Test whether rows are returned if ( ($Max = pg_NumRows($Res) ) == 0 ) { - echo_warning("Pas de fiche trouve"); + echo_warning("Pas de fiche trouvée"); + echo $add_card->IOValue(); return; } // Show the cards @@ -212,6 +221,6 @@ echo $r; ?> IOValue(); html_page_stop(); ?> diff --git a/html/fid.php b/html/fid.php index 86009af80..41c553b8f 100644 --- a/html/fid.php +++ b/html/fid.php @@ -36,16 +36,16 @@ echo_debug('fid.php',__LINE__,"Recherche fid.php".$_GET["FID"]); $cn=DbConnect($gDossier); if ( isset($_SESSION['isValid']) && $_SESSION['isValid'] == 1) { - $d=$_GET['d']; - $jrn=$_GET['j']; + $d=FormatString($_GET['d']); + $jrn=FormatString($_GET['j']); switch ($d) { case 'cred': - $filter_jrn=getDbValue($cn,"select jrn_def_fiche_cred from jrn_def where jrn_def_id=$jrn"); + $filter_jrn=getDbValue($cn,"select jrn_def_fiche_cred from jrn_def where jrn_def_id=$1",array($jrn)); $filter_card="and fd_id in ($filter_jrn)"; break; case 'deb': - $filter_jrn=getDbValue($cn,"select jrn_def_fiche_deb from jrn_def where jrn_def_id=$jrn"); + $filter_jrn=getDbValue($cn,"select jrn_def_fiche_deb from jrn_def where jrn_def_id=$1",array($jrn)); $filter_card="and fd_id in ($filter_jrn)"; break; case 'all': @@ -56,7 +56,7 @@ if ( isset($_SESSION['isValid']) && $_SESSION['isValid'] == 1) $get_deb='jrn_def_fiche_deb'; - $filter_jrn=getDbValue($cn,"select $get_cred||','||$get_deb as fiche from jrn_def where jrn_def_id=$jrn"); + $filter_jrn=getDbValue($cn,"select $get_cred||','||$get_deb as fiche from jrn_def where jrn_def_id=$1",array($jrn)); $filter_card="and fd_id in ($filter_jrn)"; break; @@ -64,11 +64,12 @@ if ( isset($_SESSION['isValid']) && $_SESSION['isValid'] == 1) $filter_card="and frd_id in ($d)"; } - - $array=get_array($cn,"select vw_name,vw_addr,vw_cp,vw_buy,vw_sell,tva_id + $sql="select vw_name,vw_addr,vw_cp,vw_buy,vw_sell,tva_id from vw_fiche_attr - where quick_code=upper('".$_GET['FID']."') $filter_card" - ); + where quick_code=upper($1)". $filter_card; + + $array=get_array($cn,$sql, array($_GET['FID'])); + echo_debug("fid",__LINE__,$array); $name=$array[0]['vw_name']." ".$array[0]['vw_addr']." ".$array[0]['vw_cp']; $sell=$array[0]['vw_sell'] ; @@ -87,6 +88,6 @@ if ( isset($_SESSION['isValid']) && $_SESSION['isValid'] == 1) else $a='{"answer":"nok"}'; echo_debug("fid.php",__LINE__,"Answer is \n $a"); -header("Content-type: text/html; charset: ISO8859-1",true); +header("Content-type: text/html; charset: utf8",true); print $a; ?> diff --git a/html/form.php b/html/form.php deleted file mode 100644 index ff537c284..000000000 --- a/html/form.php +++ /dev/null @@ -1,109 +0,0 @@ -Check(); - -include_once("form_inc.php"); - -include_once ("user_menu.php"); -echo '
'; -echo ShowMenuCompta("user_advanced.php?".dossier::get()); -echo '
'; - -include ("check_priv.php"); - -$cn=DbConnect($gDossier); -echo ShowMenuAdvanced(6); -// Get The priv on the selected folder -$User->can_request($cn,FORM); - - - - -if ( isset ($_POST["record"] )) { - // echo '
'; - AddForm($cn,$_POST); - //echo "
"; -} -if ( isset ($_POST["del_form"]) ) { - // echo '
'; - DeleteForm($cn,$_POST['fr_id']); - // echo "
"; -} - -ShowMenuComptaForm(); - -if ( isset( $_REQUEST['PHPSESSID'])) { - $sessid = $_REQUEST['PHPSESSID']; -} - - -if ( isset ($_GET["action"]) ) { - $action=$_GET["action"]; - if ($action == "add" ) - { - echo '
'; - EncodeForm(10,$sessid); - echo "
"; - } - if ($action=="view" ) { - echo '
'; - if ( ! $_GET["fr_id"] ) { - echo_error("fr_id n'est pas donn"); - return; - } - ViewForm($cn,$sessid,$_GET["fr_id"]); - echo "
"; - } -} // if $_GET -if ( isset ($_POST["add_line"]) ) { - echo '
'; - $line=$_POST["line"]; - EncodeForm($line+1,$sessid,$_POST); - echo "
"; -} -if ( isset ($_POST["update"]) ) { - echo '
'; - UpdateForm($cn,$_POST); - ViewForm($cn,$sessid,$_POST["fr_id"]); - - echo "
"; -} - - -//echo "
"; -html_page_stop(); -?> diff --git a/html/form_csv.php b/html/form_csv.php index 1c1c6d725..7bdd974f3 100644 --- a/html/form_csv.php +++ b/html/form_csv.php @@ -24,7 +24,7 @@ include_once("ac_common.php"); include_once ("postgres.php"); include ('class_user.php'); -require_once("class_rapport.php"); +require_once("class_acc_report.php"); require_once("impress_inc.php"); header('Content-type: application/csv'); header('Content-Disposition: attachment;filename="rapport.csv"',FALSE); @@ -39,7 +39,7 @@ $User=new User($cn); $User->Check(); -$Form=new rapport($cn,$_GET['form_id']); +$Form=new Acc_Report($cn,$_GET['form_id']); $Form->get_name(); // Step ? //-- diff --git a/html/form_pdf.php b/html/form_pdf.php index 1e4c9ab8e..f4d01687c 100644 --- a/html/form_pdf.php +++ b/html/form_pdf.php @@ -24,7 +24,7 @@ * \brief Send a report in PDF */ -include_once("class_rapport.php"); +include_once("class_acc_report.php"); include_once("ac_common.php"); include_once("postgres.php"); include_once("class.ezpdf.php"); @@ -32,6 +32,8 @@ include_once("impress_inc.php"); require_once('class_user.php'); require_once ('header_print.php'); require_once('class_dossier.php'); +require_once('class_acc_report.php'); + $gDossier=dossier::id(); $cn=DbConnect($gDossier); @@ -45,7 +47,7 @@ $pdf=new Cezpdf(); $pdf->selectFont('./addon/fonts/Helvetica.afm'); header_pdf($cn,$pdf); -$Form=new rapport($cn,$form_id); +$Form=new Acc_Report($cn,$form_id); // Step ?? //-- if ( $_GET['p_step'] == 0 ) @@ -72,7 +74,7 @@ if ( $_GET['p_step'] == 0 ) } -$Libelle=sprintf("(%s) %s ",$Form->id,$Form->get_name()); +$Libelle=utf8_decode(sprintf("(%s) %s ",$Form->id,$Form->get_name())); $pdf->ezText($Libelle,30); // without step @@ -81,13 +83,14 @@ if ( $_GET['p_step'] == 0 ) if ( $_GET['type_periode'] == 0 ) { $q=getPeriodeName($cn,$from_periode); if ( $from_periode != $to_periode){ - $periode=sprintf("Priode %s %s",$q,getPeriodeName($cn,$to_periode)); + $periode=sprintf("Période %s à %s",$q,getPeriodeName($cn,$to_periode)); } else { - $periode=sprintf("Priode %s",$q); + $periode=sprintf("Période %s",$q); } } else { $periode=sprintf("Date %s jusque %s",$_GET['from_date'],$_GET['to_date']); } + $periode=utf8_decode($periode); $pdf->ezText($periode,25); $pdf->ezTable($array, array ('desc'=>'Description', @@ -95,7 +98,7 @@ if ( $_GET['p_step'] == 0 ) ),$Libelle, array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('montant'=> array('justification'=>'right'), - ))); + )),true); //New page //$pdf->ezNewPage(); //} @@ -113,7 +116,7 @@ if ( $_GET['p_step'] == 0 ) ),$Libelle, array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('montant'=> array('justification'=>'right'), - ))); + )),true); } } $pdf->ezStream(); diff --git a/html/get_predef.php b/html/get_predef.php new file mode 100644 index 000000000..3f2fc6315 --- /dev/null +++ b/html/get_predef.php @@ -0,0 +1,64 @@ +set('ledger',$l); +$op->set('ledger_type',$t); +$op->set('direct',$d); +$array=$op->get_operation(); +$string='{"count":"'.count($array).'"'; +$idx=0; +if (! empty($array)) + foreach ($array as $a) { + $string.=',"value'.$idx.'":"'.$a['value'].'",'; + $string.='"label'.$idx.'":"'.$a['label'].'"'; + $idx++; + } +$string.="}"; + +header("Content-type: text/json; charset: utf8",true); +echo $string; + + +?> + diff --git a/html/htaccess.cfg b/html/htaccess.cfg index 93f64799e..efc0742f3 100755 --- a/html/htaccess.cfg +++ b/html/htaccess.cfg @@ -5,5 +5,5 @@ php_value session.save_path c:\temp php_value max_execution_time 240 php_value memory_limit 12M # for php 5 php_value upload_tmp_dir /tmp -AddDefaultCharset latin1 +AddDefaultCharset utf8 diff --git a/html/import.php b/html/import.php index c915ae8a1..d898b8248 100644 --- a/html/import.php +++ b/html/import.php @@ -40,7 +40,7 @@ $User=new User($cn); $User->Check(); html_page_start($User->theme); -echo JS_PROTOTYPE_JS; +echo JS_PROTOTYPE; /* Admin. Dossier */ @@ -89,6 +89,7 @@ if ( isset ($_GET["action"]) ) { if ($action == "transfer" ) { echo '
'; + echo ' Seulement les opérations de la période par défaut (voir préférence) seront transfèrées
'; // TransferCSV($cn, ConfirmTransfert($cn,$User->get_periode()); echo "
"; diff --git a/html/index.php b/html/index.php index cf26b6696..821efb343 100644 --- a/html/index.php +++ b/html/index.php @@ -7,20 +7,20 @@ * * \section intro_sec Introduction * - * Cette partie contient de la documentation pour les dveloppeurs. + * Cette partie contient de la documentation pour les développeurs. * * \section convention_code Convention de codage *

* Quelques conventions de codage pour avoir un code plus ou moins - * homogne + * homogène *

    - *
  1. Tant que possible rutiliser ce qui existe dj,
  2. - *
  3. Amliorer ce qui existe dj et vrifier que cela fonctionne toujours
  4. + *
  5. Tant que possible réutiliser ce qui existe déjà,
  6. + *
  7. Améliorer ce qui existe déjà et vérifier que cela fonctionne toujours
  8. *
  9. Documenter avec les tags doxygen votre nouveau code,
  10. - *
  11. Dans le rpertoire include: Les noms de fichiers sont *.inc.php pour les fichiers xcuter
  12. - *
  13. Dans le rpertoire include: Les noms de fichiers sont *.php pour les fichiers contenant des fonctions uniquement
  14. - *
  15. Dans le rpertoire include: Les noms de fichier sont class_*.php pour les fichiers contenant des classes.
  16. - *
  17. Utiliser sql/upgrade.sql comme fichier temporaire pour modifier la base de donnes, en gnral + *
  18. Dans le répertoire include: Les noms de fichiers sont *.inc.php pour les fichiers à éxécuter
  19. + *
  20. Dans le répertoire include: Les noms de fichiers sont *.php pour les fichiers contenant des fonctions uniquement
  21. + *
  22. Dans le répertoire include: Les noms de fichier sont class_*.php pour les fichiers contenant des classes.
  23. + *
  24. Utiliser sql/upgrade.sql comme fichier temporaire pour modifier la base de données, en général * ce fichier deviendra l'un des patch
  25. *
  26. Faire de la doc
  27. *
@@ -28,24 +28,30 @@ *

* \section conseil Conseils *

- * Utiliser cette documentation, elle est gnre automatiquement avec Doxygen, + * Utiliser cette documentation, elle est générée automatiquement avec Doxygen, *

    *
  • Related contient tous les \\todo
  • *
  • Global -> function pour lire toute la doc sur les fonctions
  • - *
  • Regarder dans dossier1.html et account_repository.html pour la doc des base de donnes + *
  • Regarder dans dossier1.html et account_repository.html pour la doc des base de données *
- * et il ne faut connatre que 7 tags + * et il ne faut connaître que 7 tags *
    - *
  • \\file en dbut de fichier
  • + *
  • \\file en début de fichier
  • *
  • \\todo ajouter un todo
  • *
  • \\enum pour commenter une variable
  • - *
  • \\param pour commenter le paramtre d'une fonction
  • + *
  • \\param pour commenter le paramètre d'une fonction
  • *
  • \\brief Commentaire du fichier, de la fonction ou de la classe
  • *
  • \\note des notes, des exemples
  • *
  • \\return ce que la fonction retourne
  • *
*/ +if ( ! file_exists('..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'config.inc.php')) { + $p_string='admin/setup.php'; + echo ' Connecting... '; + +} + echo ' @@ -75,9 +81,13 @@ BODY { - +'; + + + +echo ' -version 4.0.2 +version 4.1.0

@@ -93,11 +103,11 @@ version 4.0.2
Libell ou poste comptable Libellé ou poste comptable contient
'; echo ''; echo ''; - +echo '

Nombre de lignes affichées est limité

'; // if request search -if ( isset($_GET['search']) or isset($_GET['filter']) ) { - $Res=ExecSql($cn,"select pcm_val,pcm_lib from tmp_pcmn $condition order by pcm_val::text"); +if ( isset($_GET['search']) || isset($_GET['filter']) ) { + $Res=ExecSql($cn,"select pcm_val,pcm_lib from tmp_pcmn $condition order by pcm_val::text ". + " limit 70"); $MaxLine=pg_NumRows($Res); if ( $MaxLine==0) { html_page_stop(); return; } - echo '
- + - + diff --git a/html/jrn_pdf.php b/html/jrn_pdf.php index a06f99601..5913f5222 100644 --- a/html/jrn_pdf.php +++ b/html/jrn_pdf.php @@ -23,7 +23,10 @@ // $Revision$ /*! \file * \brief Send a ledger in a pdf format - */ + * + *\todo for the pdf, which doesn't support unicode you must + translate all the string to latin-1 with the utf8-decode function +*/ require_once('class_dossier.php'); $gDossier=dossier::id(); @@ -42,10 +45,10 @@ require_once ('header_print.php'); echo_debug('jrn_pdf.php',__LINE__,"imp pdf journaux"); $cn=DbConnect($gDossier); $l_type="JRN"; -$centr=" Non centralis"; +$centr=" Non centralisé"; $l_centr=0; if ($_GET['central'] == 'on' ) { - $centr=" centralis "; + $centr=utf8_decode(" centralisé "); $l_centr=1; } $Jrn=new Acc_Ledger($cn,$_GET['jrn_id']); @@ -102,44 +105,45 @@ if ( $Jrn->id==0 || $jrn_type=='FIN' || $jrn_type=='ODS' || $_REQUEST['p_simple $pdf->ezText($Jrn->name,30); if ( $l_centr == 1 ) { - // si centralis montre les montants de rappel - $str_debit=sprintf( "report Dbit % 10.2f",$rap_deb); - $str_credit=sprintf("report Crdit % 10.2f",$rap_cred); + // si centralisé montre les montants de rappel + $str_debit=utf8_decode(sprintf( "report Débit % 10.2f",$rap_deb)); + $str_credit=utf8_decode(sprintf("report Crédit % 10.2f",$rap_cred)); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); } - $pdf->ezTable($a_jrn, - array ('j_id'=>' Numro', + array ('j_id'=>utf8_decode(' Numéro'), 'j_date' => 'Date', 'poste'=>'Poste', 'description' => 'Description', - 'deb_montant'=> 'Dbit', - 'cred_montant'=>'Crdit')," ", + 'deb_montant'=>utf8_decode( 'Débit'), + 'cred_montant'=>utf8_decode('Crédit')), + " ", array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('deb_montant'=> array('justification'=>'right'), - 'cred_montant'=> array('justification'=>'right')))); + 'cred_montant'=> array('justification'=>'right'))), + true); $a=1; // Total Page $apage=array(array('deb'=>sprintf("%8.2f",$tot_deb),'cred'=>$tot_cred)); foreach ($apage as $key=>$element) echo_debug('jrn_pdf.php',__LINE__,"apage $key => $element"); $pdf->ezTable($apage, array ( - 'deb'=> 'Total Dbit', - 'cred'=>'Total Crdit')," ", + 'deb'=>utf8_decode( 'Total Débit'), + 'cred'=>utf8_decode('Total Crédit'))," ", array('shaded'=>0,'showHeadings'=>1,'width'=>200, 'xPos'=>'right','xOrientation'=>'left', 'cols'=>array('deb'=> array('justification'=>'right'), - 'cred'=> array('justification'=>'right')))); + 'cred'=> array('justification'=>'right'))),true); $count=count($a_jrn)-1; $last_id=$a_jrn[$count]['int_j_id']; $Exercice=get_exercice($cn,$a_jrn[$count]['periode']); if ( $l_centr == 1) { - // Montant de rappel si centralis + // Montant de rappel si centralisé list($rap_deb,$rap_cred)=get_rappel($cn,$last_id,$Jrn->id,$Exercice,LAST,$filter,$l_centr); - $str_debit=sprintf( " reporter Dbit % 10.2f",$rap_deb); - $str_credit=sprintf(" reporter Crdit % 10.2f",$rap_cred); + $str_debit=utf8_decode(sprintf( "à reporter Débit % 10.2f",$rap_deb)); + $str_credit=utf8_decode(sprintf("à reporter Crédit % 10.2f",$rap_cred)); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); } @@ -152,25 +156,25 @@ if ( $Jrn->id==0 || $jrn_type=='FIN' || $jrn_type=='ODS' || $_REQUEST['p_simple $apage=array('deb'=>$tot_deb,'cred'=>$tot_cred); $pdf->ezTable($apage, array ( - 'deb'=> 'Total Dbit', - 'cred'=>'Total Crdit')," ", + 'deb'=>utf8_decode( 'Total Débit'), + 'cred'=>utf8_decode('Total Crédit'))," ", array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('deb'=> array('justification'=>'right'), - 'cred'=> array('justification'=>'right')))); + 'cred'=> array('justification'=>'right'))),true); $count=count($a_jrn)-1; $last_id=$a_jrn[$count]['int_j_id']; $Exercice=get_exercice($cn,$a_jrn[$count]['periode']); list($rap_deb,$rap_cred)=get_rappel($cn,$last_id,$Jrn->id,$Exercice,LAST,$filter,$l_centr); - $str_debit=sprintf( " reporter Dbit % 10.2f",$rap_deb); - $str_credit=sprintf(" reporter Crdit % 10.2f",$rap_cred); + $str_debit=utf8_decode(sprintf( "à reporter Débit % 10.2f",$rap_deb)); + $str_credit=utf8_deccode(sprintf("à reporter Crédit % 10.2f",$rap_cred)); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); } $pdf->ezStream(); exit(0); -} // impression detaill +} // impression detaillé //---------------------------------------------------------------------- // Simple Printing //--------------------------------------------------------------------- @@ -196,9 +200,12 @@ if ( ($jrn_type=='ACH' || $jrn_type=='VEN' ) && $_REQUEST['p_simple']== 1 ) $tmp1=$line_tva['tva_label']; $rap_tva[$tmp1]=0.0; if ( $space == 0 ) - $col_tva=str_repeat(" ",6).$line_tva['tva_label']; - else - $col_tva.=str_repeat(" ",$space-strlen($line_tva['tva_label'])).$line_tva['tva_label']; + $col_tva=str_repeat(" ",6).utf8_decode($line_tva['tva_label']); + else { + $ecart=$space-strlen($line_tva['tva_label']); + $ecart=($ecart<0)?0:$ecart; + $col_tva.=str_repeat(" ",$ecart).utf8_decode($line_tva['tva_label']); + } $space=9; } @@ -222,7 +229,7 @@ if ( ($jrn_type=='ACH' || $jrn_type=='VEN' ) && $_REQUEST['p_simple']== 1 ) // page Header $t=sprintf("Rappel TVAC = %.2f HTVA= %.2f",$total_TVAC,$total_HTVA); foreach($rap_tva as $idx=>$am) { - $t.=sprintf('[ %s = % .2f]',$idx,$am); + $t.=utf8_decode(sprintf('[ %s = % .2f]',$idx,$am)); } $pdf->ezText($t,9,array('justification'=>'left')); @@ -239,7 +246,7 @@ if ( ($jrn_type=='ACH' || $jrn_type=='VEN' ) && $_REQUEST['p_simple']== 1 ) $pdf->ezTable($a_jrn, - array('num'=>'Numro', + array('num'=>utf8_decode('Numéro'), 'date'=>'Date', 'client'=>'Client', 'jr_internal'=>'Int.', @@ -247,8 +254,9 @@ if ( ($jrn_type=='ACH' || $jrn_type=='VEN' ) && $_REQUEST['p_simple']== 1 ) 'HTVA'=>'HTVA', 'TVA_INLINE'=>$col_tva, 'TVAC'=>'TVAC'), - $Jrn->name, - array('shaded'=>0,'showHeadings'=>1,'fontSize'=>8,'width'=>750,'Maxwidth'=>750) + utf8_decode($Jrn->name), + array('shaded'=>0,'showHeadings'=>1,'fontSize'=>8,'width'=>750,'Maxwidth'=>750), + true @@ -274,13 +282,13 @@ if ( ($jrn_type=='ACH' || $jrn_type=='VEN' ) && $_REQUEST['p_simple']== 1 ) //total page $t=sprintf("total page TVAC = %.2f HTVA= %.2f",$total_tvac_page,$total_htva_page); foreach($page_tva as $idx=>$am) { - $t.=sprintf('[ %s = % .2f ]',$idx,$am); + $t.=utf8_decode(sprintf('[ %s = % .2f ]',$idx,$am)); } $pdf->ezText($t,9,array('justification'=>'left')); - $t=sprintf("total reporter TVAC = %.2f HTVA= %.2f",$total_TVAC,$total_HTVA); + $t=utf8_decode(sprintf("total à reporter TVAC = %.2f HTVA= %.2f",$total_TVAC,$total_HTVA)); foreach($rap_tva as $idx=>$am) { - $t.=sprintf('[ %s = % .2f ]',$idx,$am); + $t.=utf8_decode(sprintf('[ %s = % .2f ]',$idx,$am)); } $pdf->ezText($t,9,array('justification'=>'left')); diff --git a/html/jrn_search.php b/html/jrn_search.php index e6b60f234..f41c917d4 100644 --- a/html/jrn_search.php +++ b/html/jrn_search.php @@ -32,7 +32,7 @@ $User=new User($rep); $User->Check(); -html_page_start($User->theme,"onLoad='window.focus();'"); +html_min_page_start($User->theme,"onLoad='window.focus();'"); require_once('class_dossier.php'); $gDossier=dossier::id(); @@ -144,9 +144,9 @@ echo ""; echo '
Loginutilisateur
Password mot de passe
'; echo ''; -echo ''; +echo ''; echo ''; -echo '
'; +echo '
'; // if a search is asked otherwise don't show all the rows if ( isset ($_GET["search"]) ) { $sql="select j_id,to_char(j_date,'DD.MM.YYYY') as j_date, @@ -184,7 +184,7 @@ echo '
'; echo ''; $l_id=""; // if ( $MaxLine > 250 ) { -// echo "Trop de lignes redfinir la recherche"; +// echo "Trop de lignes redéfinir la recherche"; // html_page_stop(); // return; // } diff --git a/html/js/ajax_fiche.js b/html/js/ajax_fiche.js index 79169a78f..e001d9bf6 100644 --- a/html/js/ajax_fiche.js +++ b/html/js/ajax_fiche.js @@ -53,21 +53,24 @@ function errorFid(request,json) { * \param p_ctl the ctrl to fill * \param p_deb if debit of credit * \param p_jrn the ledger + * \param phpsessid */ -function ajaxFid(p_ctl,p_deb,p_jrn) +function ajaxFid(p_ctl,p_deb,phpsessid) { var gDossier=$('gDossier').value; - var ctl_value=$(p_ctl).value; + var ctl_value=trim($(p_ctl).value); + $(p_ctl).value=ctl_value; + var p_jrn=$('p_jrn').value; if ( trim(ctl_value)==0 ) { nLabel=p_ctl+"_label"; $(nLabel).value=""; - $(nLabel).innerHTML=""; + $(nLabel).innerHTML=" "; clean_Fid(p_ctl); return; } queryString="?FID="+ctl_value; queryString=queryString+"&d="+p_deb+"&j="+p_jrn+'&gDossier='+gDossier; - queryString=queryString+'&ctl='+p_ctl; + queryString=queryString+'&ctl='+p_ctl+'&PHPSESSID='+phpsessid; /* alert(queryString); */ var action=new Ajax.Request ( "fid.php", @@ -92,9 +95,6 @@ function successFid(request,json) { var buy=answer.buy; var tva_id=answer.tva_id; var ctl=answer.ctl; - -/* alert('data:'+data+' sell:'+sell+' Tva id:'+tva_id); */ - var toSet=ctl+'_label'; if (trim(data) == "" ) { $(toSet).innerHTML="Fiche Inconnue"; @@ -112,7 +112,7 @@ function successFid(request,json) { if ( $(nSell ) ) { $(nSell).value=sell; } - $(nBuy).value=buy; + if ( $(nBuy) ) $(nBuy).value=buy; } } diff --git a/html/js/compute_direct.js b/html/js/compute_direct.js index 69a2652e7..ca98a6d36 100644 --- a/html/js/compute_direct.js +++ b/html/js/compute_direct.js @@ -27,7 +27,7 @@ function checkTotalDirect() { var total_cred=0.0; - var nb_item_id=document.getElementById('nb'); + var nb_item_id=document.getElementById('nb_item'); if ( ! nb_item_id ) {return; } diff --git a/html/js/infobulle.js b/html/js/infobulle.js new file mode 100644 index 000000000..f3937b710 --- /dev/null +++ b/html/js/infobulle.js @@ -0,0 +1,54 @@ +/* + * This file is part of PhpCompta. + * + * PhpCompta 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. + * + * PhpCompta 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 PhpCompta; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +/*!\file + * \brief create the infobulle, the internalization is not yet implemented + */ + +var posX=0,posy=0,offsetX=10,offsetY=10; +document.onmousemove=getPosition; +content[0]="Donnez le quickcode ou tapez une partie du nom de la fiche puis cliquer sur rechercher, si la recherche ne donne rien, il vous sera proposé de créer une nouvelle fiche"; +content[1]="(optionnel) La description est un commentaire libre qui sert à identifier cette opération"; +content[2]="Selectionnez le journal où l'opération doit être sauvée"; +content[3]="Les périodes comptables servent comme un second contrôle pour la date de l'opération. Modifiez dans vos préférence pour avoir une autre période par défaut"; +content[4]="(optionnel) L'échéance est la date limite de paiement"; +content[5]="(optionnel)Le numéro d'extrait permet de retrouver plus facilement l'extrait de banque"; +content[6]="Indiquez ici le prix hors tva si vous êtes affilié à la tva et que vous pouvez la déduire , sinon indiquez ici le total tva incluse et utilisez un taux tva de 0%"; +content[7]="(optionnel) Ces champs servent à contrôler que les montants correspondent à l'extrait"; +content[8]="(optionnel) Ce montant correspond au total tva, si vous le laissez à vide, il sera calculé automatiquement en fonction du taux"; +content[9]="Tapez le numéro de poste ou une partie du poste ou du libellé puis sur recherche, Si vous avez donné un quickcode, le poste comptable ne sera pas utilisé"; +function showBulle(p_ctl) { + d=document.getElementById('bulle'); + d.innerHTML=content[p_ctl]; + d.style.top=posY+offsetY; + d.style.left=posX+offsetX; + d.style.visibility="visible"; +} +function getPosition(e) { + if (document.all) { + posX=event.x+document.body.scrollLeft; + posY=event.y+document.body.scrollTop; + } + else { + posX=e.pageX; + posY=e.pageY; + } +} +function hideBulle(p_ctl) { + d=document.getElementById('bulle'); + d.style.visibility="hidden"; +} \ No newline at end of file diff --git a/html/js/mintoolkit.js b/html/js/mintoolkit.js new file mode 100644 index 000000000..abb91da0a --- /dev/null +++ b/html/js/mintoolkit.js @@ -0,0 +1,226 @@ +function $(element) { + if (arguments.length > 1) { + for (var i = 0, elements = [], length = arguments.length; i < length; i++) + elements.push($(arguments[i])); + return elements; + } + if (Object.isString(element)) + element = document.getElementById(element); + return Element.extend(element); +} +Object.extend = function(destination, source) { + for (var property in source) + destination[property] = source[property]; + return destination; +}; + +Object.extend(Object, { + inspect: function(object) { + try { + if (object === undefined) return 'undefined'; + if (object === null) return 'null'; + return object.inspect ? object.inspect() : object.toString(); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } + }, + + toJSON: function(object) { + var type = typeof object; + switch (type) { + case 'undefined': + case 'function': + case 'unknown': return; + case 'boolean': return object.toString(); + } + + if (object === null) return 'null'; + if (object.toJSON) return object.toJSON(); + if (Object.isElement(object)) return; + + var results = []; + for (var property in object) { + var value = Object.toJSON(object[property]); + if (value !== undefined) + results.push(property.toJSON() + ': ' + value); + } + + return '{' + results.join(', ') + '}'; + }, + + toQueryString: function(object) { + return $H(object).toQueryString(); + }, + + toHTML: function(object) { + return object && object.toHTML ? object.toHTML() : String.interpret(object); + }, + + keys: function(object) { + var keys = []; + for (var property in object) + keys.push(property); + return keys; + }, + + values: function(object) { + var values = []; + for (var property in object) + values.push(object[property]); + return values; + }, + + clone: function(object) { + return Object.extend({ }, object); + }, + + isElement: function(object) { + return object && object.nodeType == 1; + }, + + isArray: function(object) { + return object && object.constructor === Array; + }, + + isHash: function(object) { + return object instanceof Hash; + }, + + isFunction: function(object) { + return typeof object == "function"; + }, + + isString: function(object) { + return typeof object == "string"; + }, + + isNumber: function(object) { + return typeof object == "number"; + }, + + isUndefined: function(object) { + return typeof object == "undefined"; + } +}); + +Object.extend(Function.prototype, { + argumentNames: function() { + var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); + return names.length == 1 && !names[0] ? [] : names; + }, + + bind: function() { + if (arguments.length < 2 && arguments[0] === undefined) return this; + var __method = this, args = $A(arguments), object = args.shift(); + return function() { + return __method.apply(object, args.concat($A(arguments))); + } + }, + + bindAsEventListener: function() { + var __method = this, args = $A(arguments), object = args.shift(); + return function(event) { + return __method.apply(object, [event || window.event].concat(args)); + } + }, + + curry: function() { + if (!arguments.length) return this; + var __method = this, args = $A(arguments); + return function() { + return __method.apply(this, args.concat($A(arguments))); + } + }, + + delay: function() { + var __method = this, args = $A(arguments), timeout = args.shift() * 1000; + return window.setTimeout(function() { + return __method.apply(__method, args); + }, timeout); + }, + + wrap: function(wrapper) { + var __method = this; + return function() { + return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); + } + }, + + methodize: function() { + if (this._methodized) return this._methodized; + var __method = this; + return this._methodized = function() { + return __method.apply(null, [this].concat($A(arguments))); + }; + } +}); +var Prototype = { + Version: '1.6.0_rc1', + + Browser: { + IE: !!(window.attachEvent && !window.opera), + Opera: !!window.opera, + WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, + Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, + MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) + }, + + BrowserFeatures: { + XPath: !!document.evaluate, + ElementExtensions: !!window.HTMLElement, + SpecificElementExtensions: + document.createElement('div').__proto__ !== + document.createElement('form').__proto__ + }, + + ScriptFragment: ']*>([\\S\\s]*?)<\/script>', + JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, + + emptyFunction: function() { }, + K: function(x) { return x } +}; + +if (Prototype.Browser.MobileSafari) + Prototype.BrowserFeatures.SpecificElementExtensions = false; + +if (Prototype.Browser.WebKit) + Prototype.BrowserFeatures.XPath = false; +Element.extend = (function() { + if (Prototype.BrowserFeatures.SpecificElementExtensions) + return Prototype.K; + + var Methods = { }, ByTag = Element.Methods.ByTag; + + var extend = Object.extend(function(element) { + if (!element || element._extendedByPrototype || + element.nodeType != 1 || element == window) return element; + + var methods = Object.clone(Methods), + tagName = element.tagName, property, value; + + // extend methods for specific tags + if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); + + for (property in methods) { + value = methods[property]; + if (Object.isFunction(value) && !(property in element)) + element[property] = value.methodize(); + } + + element._extendedByPrototype = Prototype.emptyFunction; + return element; + + }, { + refresh: function() { + // extend methods for all tags (Safari doesn't need this) + if (!Prototype.BrowserFeatures.ElementExtensions) { + Object.extend(Methods, Element.Methods); + Object.extend(Methods, Element.Methods.Simulated); + } + } + }); + + extend.refresh(); + return extend; +})(); diff --git a/html/js/prototype.js b/html/js/prototype.js index f193e81fb..35047ba4a 100644 --- a/html/js/prototype.js +++ b/html/js/prototype.js @@ -1,4152 +1,258 @@ -/* Prototype JavaScript framework, version 1.6.0_rc1 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ -var Prototype = { - Version: '1.6.0_rc1', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - -if (Prototype.Browser.WebKit) - Prototype.BrowserFeatures.XPath = false; - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - - for (var property in source) { - var value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (value !== undefined) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && arguments[0] === undefined) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); - if (match == null) return ''; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (value !== undefined) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - if (function() { - var i = 0, Test = function(value) { this.key = value }; - Test.prototype.key = 'foo'; - for (var property in new Test('bar')) i++; - return i > 1; - }()) { - function each(iterator) { - var cache = []; - for (var key in this._object) { - var value = this._object[key]; - if (cache.include(key)) continue; - cache.push(key); - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } else { - function each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: each, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = xml === undefined ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - try { - return json ? json.evalJSON(this.request.options.sanitizeJSON) : null; - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - try { - if (options.evalJSON == 'force' || (options.evalJSON && - (this.getHeader('Content-type') || '').include('application/json'))) - return this.transport.responseText.evalJSON(options.sanitizeJSON); - return null; - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = options || { }; - var onComplete = options.onComplete; - options.onComplete = (function(response, param) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, param); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - - if (this.success()) { - if (this.onComplete) this.onComplete.bind(this).defer(); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, t, range; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - t = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - t.insert(element, content); - continue; - } - - content = Object.toHTML(content); - - range = element.ownerDocument.createRange(); - t.initializeRange(element, range); - t.insert(element, range.createContextualFragment(content.stripScripts())); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')).each(Element.extend); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return expression ? Selector.findElement(ancestors, expression, index) : - ancestors[index || 0]; - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - var descendants = element.descendants(); - return expression ? Selector.findElement(descendants, expression, index) : - descendants[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return expression ? Selector.findElement(previousSiblings, expression, index) : - previousSiblings[index || 0]; - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return expression ? Selector.findElement(nextSiblings, expression, index) : - nextSiblings[index || 0]; - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = value === undefined ? true : value; - - for (var attr in attributes) { - var name = t.names[attr] || attr, value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - - -if (!document.createRange || Prototype.Browser.Opera) { - Element.Methods.insert = function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = { bottom: insertions }; - - var t = Element._insertionTranslations, content, position, pos, tagName; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - pos = t[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - pos.insert(element, content); - continue; - } - - content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - if (t.tags[tagName]) { - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - if (position == 'top' || position == 'after') fragments.reverse(); - fragments.each(pos.insert.curry(element)); - } - else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); - - content.evalScripts.bind(content).defer(); - } - - return element; - }; -} - -if (Prototype.Browser.Opera) { - Element.Methods._getStyle = Element.Methods.getStyle; - Element.Methods.getStyle = function(element, style) { - switch(style) { - case 'left': - case 'top': - case 'right': - case 'bottom': - if (Element._getStyle(element, 'position') == 'static') return null; - default: return Element._getStyle(element, style); - } - }; - Element.Methods._readAttribute = Element.Methods.readAttribute; - Element.Methods.readAttribute = function(element, attribute) { - if (attribute == 'title') return element.title; - return Element._readAttribute(element, attribute); - }; -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - if (!element.currentStyle.hasLayout) element.style.zoom = 1; - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - var attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Position.cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: { - adjacency: 'beforeBegin', - insert: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - initializeRange: function(element, range) { - range.setStartBefore(element); - } - }, - top: { - adjacency: 'afterBegin', - insert: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - initializeRange: function(element, range) { - range.selectNodeContents(element); - range.collapse(true); - } - }, - bottom: { - adjacency: 'beforeEnd', - insert: function(element, node) { - element.appendChild(node); - } - }, - after: { - adjacency: 'afterEnd', - insert: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - initializeRange: function(element, range) { - range.setStartAfter(element); - } - }, - tags: { - TABLE: ['
', '
', 1], - TBODY: ['', '
', 2], - TR: ['', '
', 3], - TD: ['
', '
', 4], - SELECT: ['', 1] - } -}; - -(function() { - this.bottom.initializeRange = this.top.initializeRange; - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = self['inner' + D] || - (document.documentElement['client' + D] || document.body['client' + D]); - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - compileMatcher: function() { - // Selectors with namespaced attributes can't use the XPath version - if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression)) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: "[@#{1}]", - attr: function(m) { - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, m, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, children = [], child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - tagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() == tagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','), expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (options.hash === undefined) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (value === undefined) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (value === undefined) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (index === undefined) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - if (Prototype.Browser.IE) { - function isButton(event, code) { - return event.button == ({ 0: 1, 1: 4, 2: 2 })[code]; - } - - } else if (Prototype.Browser.WebKit) { - function isButton(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - } - - } else { - function isButton(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - } - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - return element.match(expression) ? element : element.up(expression); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.match(/:/)) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (event.eventName && event.eventName != eventName) - return false; - - Event.extend(event); - handler.call(element, event) - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - if (document.createEvent) { - var event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - var event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return event; - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize() -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer, fired = false; - - function fireContentLoadedEvent() { - if (fired) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - fired = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write("'; echo " @@ -220,13 +220,13 @@ if ( isset($_POST['update_record']) ) { save_upload_document($cn,$_POST['jr_grpt_id']); } if ( isset ($_POST['is_paid'] )) - $Res=ExecSql($cn,"update jrn set jr_rapt='paid' where jr_id=".$_POST['jr_id']); + $Res=ExecSqlParam($cn,"update jrn set jr_rapt='paid' where jr_id=$1",array($_POST['jr_id'])); if ( isset ($_POST['to_remove'] )) { /*! \note we don't remove the document file if another * operation needs it. */ - $ret=ExecSql($cn,"select jr_pj from jrn where jr_id=".$_POST['jr_id']); + $ret=ExecSqlParam($cn,"select jr_pj from jrn where jr_id=$1",array($_POST['jr_id'])); if (pg_num_rows($ret) != 0) { $r=pg_fetch_array($ret,0); $old_oid=$r['jr_pj']; @@ -237,8 +237,8 @@ if ( isset($_POST['update_record']) ) { if ( $c == 1 ) pg_lo_unlink($cn,$old_oid); } - ExecSql($cn,"update jrn set jr_pj=null, jr_pj_name=null, ". - "jr_pj_type=null where jr_id=".$_POST['jr_id']); + ExecSqlParam($cn,"update jrn set jr_pj=null, jr_pj_name=null, ". + "jr_pj_type=null where jr_id=$1",array($_POST['jr_id'])); } } @@ -278,8 +278,8 @@ if ( isset($_POST['update_record']) ) { // so we fetch them all from the db $sql="select j_id,j_poste,to_char(j_date,'DD.MM.YYYY') as j_date,j_debit ". "from jrn join jrnx on (j_grpt=jr_grpt_id) ". - "where jr_id=".$_POST['jr_id']; - $res=ExecSql($cn,$sql); + "where jr_id=$1"; + $res=ExecSqlParam($cn,$sql,array($_POST['jr_id'])); $array_jid=pg_fetch_all($res); // if j_poste match 6 or 7 we insert them diff --git a/html/parametre.php b/html/parametre.php index 6d54ffe65..0b60a1958 100644 --- a/html/parametre.php +++ b/html/parametre.php @@ -40,17 +40,6 @@ $User->Check(); include_once("preference.php"); include_once("user_menu.php"); echo '
'; -/* -echo '
'; -echo "

Paramètre ".dossier::name().'

'. -'

'.' -
- - - - -
-*/ echo menu_tool('param'); echo '
'; @@ -98,6 +87,9 @@ switch ($p_action) { case 'company': $default=1; break; + case 'preod': + $default=12; + break; default: $default="parametre.php?p_action=".$p_action; } @@ -208,7 +200,7 @@ if ( $p_action=='company') { $array=array ( array("value"=>"ob",'label'=>"obligatoire"), array("value"=>"op",'label'=>"optionnel"), - array("value"=>"nu",'label'=>"non utilis") + array("value"=>"nu",'label'=>"non utilisé") ); $compta=new widget("select"); $compta->table=1; @@ -219,15 +211,15 @@ if ( $p_action=='company') { echo ''; echo dossier::hidden(); echo ""; - echo "".$all->IOValue("p_name",$my->MY_NAME,"Nom socit").""; - echo "".$all->IOValue("p_tel",$my->MY_TEL,"Tlphone").""; + echo "".$all->IOValue("p_name",$my->MY_NAME,"Nom société").""; + echo "".$all->IOValue("p_tel",$my->MY_TEL,"Téléphone").""; echo "".$all->IOValue("p_fax",$my->MY_FAX,"Fax").""; echo "".$all->IOValue("p_street",$my->MY_STREET,"Rue ").""; - echo "".$all->IOValue("p_no",$my->MY_NUMBER,"Numro").""; + echo "".$all->IOValue("p_no",$my->MY_NUMBER,"Numéro").""; echo "".$all->IOValue("p_cp",$my->MY_CP,"Code Postal").""; echo "".$all->IOValue("p_Commune",$my->MY_COMMUNE,"Commune").""; echo "".$all->IOValue("p_pays",$my->MY_PAYS,"Pays").""; - echo "".$all->IOValue("p_tva",$my->MY_TVA,"Numro de Tva").""; + echo "".$all->IOValue("p_tva",$my->MY_TVA,"Numéro de Tva").""; echo "".$compta->IOValue("p_compta",$array,"Utilisation de la compta. analytique").""; echo "
"; $submit=new widget("submit"); @@ -239,7 +231,7 @@ if ( $p_action=='company') { //----------------------------------------------------- echo "
"; if ( $p_action == 'document' ) { - echo '
'; + echo '
'; require_once('document_modele.inc.php'); echo '
'; } @@ -255,13 +247,25 @@ if ( $p_action == 'pcmn' ) { if ( $p_action == 'sec' ) { require_once('param_sec.inc.php'); } +//---------------------------------------------------------------------- +// Predefined operation +//---------------------------------------------------------------------- +if ( $p_action == 'preod' ) { + require_once('preod.inc.php'); +} +//--------------------------------------------------------------------------- +// Definition of report +//--------------------------------------------------------------------------- +if ( $p_action == 'defrapport' ) { + require_once('report.inc.php'); +} //---------------------------------------------------------------------- // Ledger parameter //---------------------------------------------------------------------- if ( $p_action == 'jrn' ) { $sa=(isset($_REQUEST['sa']))?$_REQUEST['sa']:""; - // echo '
'; + // echo '
'; if ( $sa == "add") require_once ('param_jrn_add.inc.php'); elseif ($sa=='detail') diff --git a/html/poste_csv.php b/html/poste_csv.php index fa5e9055d..d63b135a9 100644 --- a/html/poste_csv.php +++ b/html/poste_csv.php @@ -65,15 +65,15 @@ if ( ! isset ($_REQUEST['oper_detail'])) { "\"Code interne\";". "\"Date\";". "\"Description\";". - "\"Dbit\";". - "\"Crdit\""; + "\"Débit\";". + "\"Crédit\""; printf("\n"); foreach ( $Poste->row as $op ) { echo '"'.$pos['pcm_val'].'";'. '"'.$op['jr_internal'].'"'.";". - '"'.$op['j_date'].'"'.";". + '"'.$op['jr_date'].'"'.";". '"'.$op['description'].'"'.";". sprintf("%8.4f",$op['deb_montant']).";". sprintf("%8.4f",$op['cred_montant']); @@ -81,7 +81,7 @@ if ( ! isset ($_REQUEST['oper_detail'])) { } - $solde_type=($tot_deb>$tot_cred)?"solde dbiteur":"solde crditeur"; + $solde_type=($tot_deb>$tot_cred)?"solde débiteur":"solde créditeur"; $diff=abs($tot_deb-$tot_cred); printf( '"'."$solde_type".'"'.";". @@ -123,7 +123,7 @@ if ( ! isset ($_REQUEST['oper_detail'])) { $r['j_poste'], $r['j_qcode'], $r['jr_internal'], - $r['j_date'], + $r['jr_date'], $a['description'], $r['j_montant'], $r['debit']); diff --git a/html/poste_pdf.php b/html/poste_pdf.php index f94473200..5b1519545 100644 --- a/html/poste_pdf.php +++ b/html/poste_pdf.php @@ -66,7 +66,7 @@ foreach ($a_poste as $poste) // $pdf->ezText($Libelle,30); $pdf->ezTable($array, - array ('jr_internal'=>'Opration', + array ('jr_internal'=>'Operation', 'j_date' => 'Date', 'jrn_name'=>'Journal', 'description'=>'Description', @@ -75,9 +75,9 @@ foreach ($a_poste as $poste) ),$Libelle, array('shaded'=>1,'showHeadings'=>1,'width'=>500, 'cols'=>array('montant'=> array('justification'=>'right'), - ))); - $str_debit=sprintf("Dbit % 12.2f",$tot_deb); - $str_cred=sprintf("Crdit % 12.2f",$tot_cred); + )),true); + $str_debit=utf8_decode(sprintf("Débit % 12.2f",$tot_deb)); + $str_cred=utf8_decode(sprintf("Crédit % 12.2f",$tot_cred)); $diff_solde=$tot_deb-$tot_cred; if ( $diff_solde < 0 ) { $solde=" C "; diff --git a/html/poste_search.php b/html/poste_search.php index c17d49117..4c7e589ab 100644 --- a/html/poste_search.php +++ b/html/poste_search.php @@ -25,7 +25,7 @@ include_once ("ac_common.php"); require_once('class_acc_ledger.php'); -html_page_start($_SESSION['g_theme'],'onLoad="window.focus();"'); +html_min_page_start($_SESSION['g_theme'],'onLoad="window.focus();"'); include_once ("postgres.php"); include_once("jrn.php"); /* Admin. Dossier */ @@ -46,13 +46,12 @@ $condition=""; $cn=DbConnect($gDossier); if ( isset($_GET['search']) ) { $c1=0; - foreach( $_GET as $key=>$element){ - ${"$key"}=$element; - } + extract ($_GET); + $condition=""; if ( strlen(trim($p_comment)) != 0 ) { - $condition=" where (upper(pcm_lib) like upper('%$p_comment%') or ". - " pcm_val::text like '$p_comment%') "; + $condition=" where (upper(pcm_lib) like upper('%".pg_escape_string($p_comment)."%') or ". + " pcm_val::text like '%".pg_escape_string($p_comment)."%') "; } } @@ -80,9 +79,9 @@ if ( isset($_GET['filter']) && $_GET['filter'] != 'all') { if ( strlen (trim($item_cred))) { if ( strstr($item_cred,"*") == true ) { $item_cred=strtr($item_cred,"*","%"); - $Sql=" pcm_val like '$item_cred' or"; + $Sql=" pcm_val::text like '$item_cred' or"; } else { - $Sql=" pcm_val = '$item_cred' or"; + $Sql=" pcm_val::text = '$item_cred' or"; } $SqlCred=$SqlCred.$Sql; } @@ -98,7 +97,7 @@ if ( isset($_GET['filter']) && $_GET['filter'] != 'all') { echo_debug('poste_search.php',__LINE__,"l_line[jrn_def_class_deb] $l_line[jrn_def_class_deb] item_deb $item_deb"); if ( strstr($item_deb,"*") == true ) { $item_cred=strtr($item_deb,"*","%"); - $Sql=" pcm_val like '$item_deb' or"; + $Sql=" pcm_val::text like '$item_deb' or"; } else { $Sql=" pcm_val = '$item_deb' or"; } @@ -126,53 +125,64 @@ echo_debug('poste_search.php',__LINE__,"condition = $condition"); echo ''; echo dossier::hidden(); if ( isset($p_ctl) ) { - if ($p_ctl != 'not') echo ''; + echo ''; } -echo ''; -echo ''; +if (isset ($ret)) echo widget::hidden('ret',$ret); /* echo ''; */ /* if ( ! isset ($p_class) ) $p_class=""; */ /* $opt=" "; */ /* echo ''; */ -echo ''; -echo ''; +echo 'Libellé ou poste comptable '; +echo ' contient '; if ( ! isset ($p_comment) ) $p_comment=""; -echo ''; -echo '
Poste Comptable Commence par Libell ou poste comptable contient
'; +echo '
'; + echo '
'; $l_id=""; - + $ahref=""; + $end_ahref=""; for ( $i=0; $i < $MaxLine; $i++) { $l_line=pg_fetch_array($Res,$i); - echo ""; + $even=($i%2 == 0)?"odd":"even"; + echo ""; // if p_ctl is set we need to be able to return the value - if (isset($p_ctl) && $p_ctl != 'not' ){ - echo ''; + $end_ahref=''; + } - echo ''; echo ''; echo ""; diff --git a/html/print_balance.php b/html/print_balance.php index 485d6eaf5..d826a3cef 100644 --- a/html/print_balance.php +++ b/html/print_balance.php @@ -61,7 +61,7 @@ $t_cent=""; if ( isset($central) ) { $bal->central='Y'; - $t_cent="centralise"; + $t_cent=utf8_decode("centralisée"); } else $bal->central='N'; @@ -83,14 +83,14 @@ if ( sizeof($array) == 0 ) { } $a=get_periode($cn,$from_periode); $b=get_periode($cn,$to_periode); -$per_text=" priode du ".$a['p_start']." au ".$b['p_end']; +$per_text=utf8_decode(" période du ").$a['p_start']." au ".$b['p_end']; $pdf=new Cezpdf('a4'); $pdf->selectFont('./addon/fonts/Helvetica.afm'); $pdf->ezSetCmMargins(2,2,2,2); header_pdf($cn,$pdf); -$pdf->ezTable($array,array('poste'=>'Poste','label'=>'Libell','sum_deb'=>'Total Dbit', - 'sum_cred'=>'Total crdit','solde_deb'=>'Solde dbiteur', - 'solde_cred'=>'Solde crditeur'),'Balance des comptes '.$t_cent.$per_text); +$pdf->ezTable($array,array('poste'=>'Poste','label'=>utf8_decode('Libellé'),'sum_deb'=>utf8_decode('Total Débit'), + 'sum_cred'=>utf8_decode('Total crédit'),'solde_deb'=>utf8_decode('Solde débiteur'), + 'solde_cred'=>utf8_decode('Solde créditeur')),'Balance des comptes '.$t_cent.$per_text,null,true); $pdf->ezStream(); diff --git a/html/priv_user.php b/html/priv_user.php index 56171283b..60ed1379e 100644 --- a/html/priv_user.php +++ b/html/priv_user.php @@ -39,7 +39,7 @@ if ($User->admin != 1) { } if (! isset ($_GET['UID']) && ! isset($_POST['UID']) ) { - //Message d'erreur si UID non positionn + //Message d'erreur si UID non positionné echo_debug('priv_user.php',__LINE__,"UID NOT DEFINED"); html_page_stop(); return; @@ -76,7 +76,7 @@ if ( isset ( $_GET['reset_passwd']) ){ $cn=DbConnect(); $l_pass=md5('phpcompta'); $Res=ExecSql($cn, "update ac_users set use_pass='$l_pass' where use_id=$uid"); - echo '

Password remis phpcompta

'; + echo '

Password remis à phpcompta

'; } if ( isset ($_POST['SAVE']) ){ $uid = $_POST['UID']; @@ -187,7 +187,7 @@ echo ""; "; echo ''; echo ''; } if ( $right == 1 ) { - echo ''; + echo ''; echo ""; echo ''; } if ( $right == 2 ) { - echo ''; + echo ''; echo ''; echo "'; + echo ''; echo ''; echo ""; $l_change=$l_change."&access=1"; - echo ''; + echo ''; } if ( $right == 1) { $l_change=$l_change."&access=0"; - echo ''; + echo ''; echo ""; } @@ -263,7 +263,7 @@ if ( $action == "view" ) { echo ''; echo ""; } diff --git a/include/.htaccess b/include/.htaccess deleted file mode 100644 index ff2beb844..000000000 --- a/include/.htaccess +++ /dev/null @@ -1,2 +0,0 @@ -order deny,allow -deny from all diff --git a/include/ac_common.php b/include/ac_common.php index 47da621ec..f6402ee1e 100644 --- a/include/ac_common.php +++ b/include/ac_common.php @@ -90,12 +90,12 @@ function isNumber(&$p_int) { } /*! - * \brief Verifie qu'une date est bien format + * \brief Verifie qu'une date est bien formaté * en d.m.y et est valable * \param $p_date * * \return - * - null si la date est invalide ou malformat + * - null si la date est invalide ou malformaté * - $p_date si tout est bon * */ @@ -144,7 +144,58 @@ function formatDate($p_date) { function html_page_start($p_theme="",$p_script="",$p_script2="") { - ini_set('magic_quotes_gpc','Off'); + $cn=DbConnect(); + if ( $p_theme != "") { + $Res=ExecSql($cn,"select the_filestyle from theme + where the_name='".$p_theme."'"); + if (pg_NumRows($Res)==0) + $style="style.css"; + else { + $s=pg_fetch_array($Res,0); + $style=$s['the_filestyle']; + } + }else { + $style="style.css"; + } // end if + echo ''; + echo ""; + + + if ( $p_script2 != "" ) + $p_script2=''; + + echo " + PhpCompta + + + ". + $p_script2. " + "; + echo ' + + + + +'; + + echo ""; + /* If we are on the user_login page */ + if ( basename($_SERVER['PHP_SELF']) == 'user_login.php') { + return; + } + +} +/*! + * \brief Minimal page header for each page, used for small popup window + * + * \param p_theme default theme + * \param $p_script + * \param $p_script2 another js script + * + * \return none + */ +function html_min_page_start($p_theme="",$p_script="",$p_script2="") +{ $cn=DbConnect(); if ( $p_theme != "") { @@ -162,26 +213,28 @@ function html_page_start($p_theme="",$p_script="",$p_script2="") echo ''; echo ""; + if ( $p_script2 != "" ) $p_script2=''; echo "PhpCompta - + ". $p_script2. " "; - echo ' - - - - - + echo ' '; echo ""; + /* If we are on the user_login page */ + if ( basename($_SERVER['PHP_SELF']) == 'user_login.php') { + return; + } + } + /*! * \brief end tag * @@ -213,13 +266,13 @@ function NoAccess($js=0) if ( $js == 1 ) { echo ""; } else { echo '
'; - echo '

Cette action ne vous est pas autorise Contactez votre responsable

'; + echo '

Cette action ne vous est pas autorisée Contactez votre responsable

'; echo '
'; } exit -1; @@ -474,5 +527,13 @@ function tva_get_label($p_cn,$p_tva_id) $a=getDbValue($p_cn,"select tva_label from tva_rate where tva_id='".$p_tva_id."'"); return $a; } - +/*!\brief alert in javascript + *\param $p_msg is the message + */ +function alert($p_msg) +{ + echo ''; +} ?> diff --git a/include/action.inc.php b/include/action.inc.php index 9e07b2e68..82ee6726f 100644 --- a/include/action.inc.php +++ b/include/action.inc.php @@ -47,8 +47,6 @@ function ShowActionList($cn,$retour,$h_url) Titre ou rfrence: ', - $a); $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; echo JS_SEARCH_CARD; $w=new widget('js_search_only'); @@ -57,7 +55,10 @@ function ShowActionList($cn,$retour,$h_url) $w->label='Quick Code1'; $w->extra='4,9,14,16,8'; $w->table=0; + echo ''; echo $w->IOValue(); + printf ('Titre ou référence: ', + $a); $sp= new widget("span"); @@ -65,15 +66,15 @@ function ShowActionList($cn,$retour,$h_url) ?> -
+ -
- + + @@ -81,10 +82,11 @@ function ShowActionList($cn,$retour,$h_url) + echo $retour; ?> + -
+
d_state=(isset($_POST['d_state']))?$_POST['d_state']:""; $act->ag_ref=""; $act->ag_title=(isset($_POST['ag_title']))?$_POST['ag_title']:""; - echo '
'; + echo '
'; echo JS_SEARCH_CARD; // Add hidden tag echo '
'; @@ -221,10 +224,10 @@ if ( isset ($_POST['add_action_here']) ) echo $act->Display('NEW',false); echo ''; - echo ''; + echo ''; echo $h_url; - echo '

'. + echo '

'. ''. '
'; @@ -237,8 +240,10 @@ if ( isset ($_POST['add_action_here']) ) // permit the update if ( $sub_action=='detail' ) { - echo '
'; + echo '
'; + echo '
'; echo ''; + echo '
'; $act=new action($cn); $act->ag_id=$_REQUEST['ag_id']; echo $act->get(); @@ -254,7 +259,7 @@ if ( $sub_action=='detail' ) $upload->value=""; echo "Enregistrer le fichier ".$upload->IOValue(); echo widget::submit("save","Sauve"); - echo widget::submit("add_action_here","Ajoute une action celle-ci"); + echo widget::submit("add_action_here","Ajoute une action à celle-ci"); echo ''; echo '
'; echo dossier::hidden(); @@ -321,7 +326,9 @@ if ( $sub_action == "list" ) // Add an action if ( $sub_action == "add_action" ) { + echo '
'; echo ''; + echo '
'; echo_debug('action',__LINE__,var_export($_POST,true)); echo $retour; $act=new action($cn); @@ -349,40 +356,16 @@ if ( $sub_action == "add_action" ) echo $act->Display('NEW',false); echo ''; - echo ''; + echo ''; echo $h_url; - echo '

'. + echo '

'. ''. '
'; } //-------------------------------------------------------------------------------- // Save Action -// Stage 1 : show the result and confirm -//-------------------------------------------------------------------------------- -if ( $sub_action == "save_action_st1" ) -{ - $act=new action($cn); - $act->ag_timestamp=$_POST['ag_timestamp']; - $act->ag_comment=$_POST['ag_comment']; - $act->ag_timestamp=$_POST['ag_timestamp']; - $act->d_state=$_POST['d_state']; - $act->dt_id=$_POST['dt_id']; - $act->qcode_exp=$_POST['qcode_exp']; - $act->qcode_dest=$_POST['qcode_dest']; - $act->f_id_dest=$_POST['f_id_dest']; - $act->f_id_exp=$_POST['f_id_exp']; - - $act->ag_title=$_POST['ag_title']; - $act->d_id=0; - $act->ag_id=$_POST['ag_id']; - $act->ag_ref_ag_id=(isset($_POST['ag_ref_ag_id']))?$_POST['ag_ref_ag_id']:0; - - echo $act->Confirm(); -} -//-------------------------------------------------------------------------------- -// Save Action // Stage 2 : Save the action and propose to save a file //-------------------------------------------------------------------------------- if ( $sub_action == "save_action_st2" ) diff --git a/include/anc_group.inc.php b/include/anc_group.inc.php index 70f6bc9aa..6b6d49b72 100644 --- a/include/anc_group.inc.php +++ b/include/anc_group.inc.php @@ -50,7 +50,7 @@ if ( isset($_POST['add'])) { } $array=$r->myList(); -echo '
'; +echo '
'; echo '
'; echo dossier::hidden(); echo '
'; + if (isset($ret) && $ret == 'label' ){ $slabel=FormatString($l_line['pcm_lib']); - echo ''; - echo ''; + if (isset($ret) && $ret == 'poste' ){ + $ahref=''; + $end_ahref=''; + + } + + echo ""; + echo $ahref; echo $l_line['pcm_val']; + echo $end_ahref; echo ''; + echo $ahref; echo $l_line['pcm_lib']; + echo $end_ahref; echo '
-

Droit par dfaut

+

Droit par défaut

get_row( ); if ( count($Fiche->row ) == 0 ) { - echo "Aucune donne"; + echo "Aucune donnée"; return; } @@ -55,13 +55,13 @@ echo '"Qcode";'. "\"Code interne\";". "\"Date\";". "\"Description\";". -"\"Dbit\";". -"\"Crdit\""; +"\"Débit\";". +"\"Crédit\""; printf("\n"); foreach ( $Fiche->row as $op ) { echo '"'.$op['j_qcode'].'";'. '"'.$op['jr_internal'].'"'.";". - '"'.$op['j_date'].'"'.";". + '"'.$op['jr_date'].'"'.";". '"'.$op['description'].'"'.";". sprintf("%8.4f",$op['deb_montant']).";". sprintf("%8.4f",$op['cred_montant']); @@ -69,7 +69,7 @@ printf("\n"); } }else { - echo '"Poste";"Qcode";"internal"'; + echo '"Poste";"Qcode";"internal";'; echo '"Date";'. "\"Description\";". "\"Montant\";". @@ -86,8 +86,8 @@ printf("\n"); $r['j_poste'], $r['j_qcode'], $r['jr_internal'], - $r['j_date'], - $a['description'], + $r['jr_date'], + $r['description'], $r['j_montant'], $r['debit']); printf("\r\n"); @@ -98,7 +98,7 @@ printf("\n"); } } -$solde_type=($tot_deb>$tot_cred)?"solde dbiteur":"solde crditeur"; +$solde_type=($tot_deb>$tot_cred)?"solde débiteur":"solde créditeur"; $diff=abs($tot_deb-$tot_cred); printf( '"'."$solde_type".'"'.";". diff --git a/html/quick_code_pdf.php b/html/quick_code_pdf.php index 935f92d18..07d661475 100644 --- a/html/quick_code_pdf.php +++ b/html/quick_code_pdf.php @@ -56,7 +56,7 @@ $Libelle=sprintf("(%s) %s ",$Fiche->id,$Fiche->getName()); header_pdf($cn,$pdf); // $pdf->ezText($Libelle,30); $pdf->ezTable($array, - array ('jr_internal'=>'Opration', + array ('jr_internal'=>'Operation', 'j_date' => 'Date', 'jrn_name'=>'Journal', 'description'=>'Description', @@ -65,9 +65,9 @@ $pdf->ezTable($array, ),$Libelle, array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('montant'=> array('justification'=>'right'), - ))); -$str_debit=sprintf("Dbit % 12.2f",$tot_deb); -$str_cred=sprintf("Crdit % 12.2f",$tot_cred); + )),true); +$str_debit=utf8_decode(sprintf("Débit % 12.2f",$tot_deb)); +$str_cred=utf8_decode(sprintf("Crédit % 12.2f",$tot_cred)); $diff_solde=$tot_deb-$tot_cred; if ( $diff_solde < 0 ) { $solde=" C "; diff --git a/html/remove_op.php b/html/remove_op.php index 9fd285809..9eaff8263 100644 --- a/html/remove_op.php +++ b/html/remove_op.php @@ -34,6 +34,6 @@ require_once('class_dossier.php'); $gDossier=dossier::id(); /*!\todo Add the security here */ $cn=DbConnect($gDossier); -ExecSql($cn,"delete from operation_analytique where oa_group=".$_GET['oa']); +ExecSqlParam($cn,"delete from operation_analytique where oa_group=$1",array($_GET['oa'])); echo_debug(__FILE__,__LINE__,$_GET); ?> diff --git a/html/sec_pdf.php b/html/sec_pdf.php index 3752f4148..04160b08a 100755 --- a/html/sec_pdf.php +++ b/html/sec_pdf.php @@ -30,7 +30,7 @@ include_once("ac_common.php"); include_once("postgres.php"); include_once("class.ezpdf.php"); require_once("check_priv.php"); -echo_debug('sec_pdf.php',__LINE__,"imp pdf securit"); +echo_debug('sec_pdf.php',__LINE__,"imp pdf securité"); $cn=DbConnect($gDossier); //----------------------------------------------------- // Security @@ -65,7 +65,7 @@ $str_user=sprintf("( %d ) %s %s [ %s ]", $pdf->ezText($str_user,14,array('justification'=>'center')); if ( $SecUser->active==0) - $pdf->ezText('Bloqu',12,array('justification'=>'center')); + $pdf->ezText('Bloqué',12,array('justification'=>'center')); if ( $SecUser->admin==1) $pdf->ezText('Administrateur',12,array('justification'=>'center')); @@ -78,7 +78,7 @@ for ($e=0;$e < pg_NumRows($Res);$e++) { $priv=CheckJrn($gDossier,$SecUser->login,$row['jrn_def_id']); switch($priv) { case 0: - $a_jrn[$e]['priv']="pas d'accs"; + $a_jrn[$e]['priv']="pas d'accès"; break; case 1: $a_jrn[$e]['priv']="lecture"; @@ -92,7 +92,7 @@ for ($e=0;$e < pg_NumRows($Res);$e++) { } $pdf->ezTable($a_jrn, array ('jrn_name'=>' Journal', - 'priv'=>'Privilge')," ", + 'priv'=>'Privilège')," ", array('shaded'=>0,'showHeadings'=>1,'width'=>500)); //----------------------------------------------------- @@ -108,18 +108,18 @@ for ( $i =0 ; $i < $Max; $i++ ) { $right=check_action($gDossier,$SecUser->login,$l_line['ac_id']); switch ($right) { case 0: - $action['priv']="Pas d'accs"; + $action['priv']="Pas d'accès"; break; case 1: case 2: - $action['priv']="Accs"; + $action['priv']="Accès"; break; } $a_action[$i]=$action; } $pdf->ezTable($a_action , array ('lib'=>'Description', - 'priv'=>'Privilge')," ", + 'priv'=>'Privilège')," ", array('shaded'=>0,'showHeadings'=>1,'width'=>500)); diff --git a/html/send_jrn_pdf.php b/html/send_jrn_pdf.php index 318c273f9..6039e24c9 100644 --- a/html/send_jrn_pdf.php +++ b/html/send_jrn_pdf.php @@ -39,10 +39,10 @@ echo_debug('send_jrn_pdf.php',__LINE__,"imp pdf journaux"); $l_Db=sprintf("dossier%d",$gDossier); $cn=DbConnect($gDossier); $l_type="JRN"; -$centr=" Non centralis"; +$centr=" Non centralisé"; $l_centr=0; if ( isset ($_POST['central']) ) { - $centr=" centralis "; + $centr=" centralisé "; $l_centr=1; } $oJrn=new Acc_Ledger($cn,$_GET['p_id']); @@ -78,20 +78,20 @@ while (1) { $pdf->ezText($name_jrn,30); if ( $l_centr == 1 ) { - // si centralis montre les montants de rappel - $str_debit=sprintf( "report Dbit % 10.2f",$rap_deb); - $str_credit=sprintf("report Crdit % 10.2f",$rap_cred); + // si centralisé montre les montants de rappel + $str_debit=sprintf( "report Débit % 10.2f",$rap_deb); + $str_credit=sprintf("report Crédit % 10.2f",$rap_cred); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); } $pdf->ezTable($a_jrn, - array ('internal'=>'Opration', + array ('internal'=>'Opération', 'j_date' => 'Date', 'poste'=>'Poste', 'description' => 'Description', - 'deb_montant'=> 'Dbit', - 'cred_montant'=>'Crdit')," ", + 'deb_montant'=> 'Débit', + 'cred_montant'=>'Crédit')," ", array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('deb_montant'=> array('justification'=>'right'), 'cred_montant'=> array('justification'=>'right')))); @@ -101,8 +101,8 @@ while (1) { foreach ($apage as $key=>$element) echo_debug('send_jrn_pdf.php',__LINE__,"apage $key => $element"); $pdf->ezTable($apage, array ( - 'deb'=> 'Total Dbit', - 'cred'=>'Total Crdit')," ", + 'deb'=> 'Total Débit', + 'cred'=>'Total Crédit')," ", array('shaded'=>0,'showHeadings'=>1,'width'=>200, 'xPos'=>'right','xOrientation'=>'left', 'cols'=>array('deb'=> array('justification'=>'right'), @@ -112,10 +112,10 @@ while (1) { $last_id=$a_jrn[$count]['j_id']; $Exercice=get_exercice($cn,$a_jrn[$count]['periode']); if ( $l_centr == 1) { - // Montant de rappel si centralis + // Montant de rappel si centralisé list($rap_deb,$rap_cred)=get_rappel($cn,$last_id,$_GET["p_id"],$Exercice,LAST,$_GET['filter'],$l_centr); - $str_debit=sprintf( " reporter Dbit % 10.2f",$rap_deb); - $str_credit=sprintf(" reporter Crdit % 10.2f",$rap_cred); + $str_debit=sprintf( "à reporter Débit % 10.2f",$rap_deb); + $str_credit=sprintf("à reporter Crédit % 10.2f",$rap_cred); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); } @@ -126,8 +126,8 @@ if ( $a == 1 ) { $apage=array('deb'=>$tot_deb,'cred'=>$tot_cred); $pdf->ezTable($apage, array ( - 'deb'=> 'Total Dbit', - 'cred'=>'Total Crdit')," ", + 'deb'=> 'Total Débit', + 'cred'=>'Total Crédit')," ", array('shaded'=>0,'showHeadings'=>1,'width'=>500, 'cols'=>array('deb'=> array('justification'=>'right'), 'cred'=> array('justification'=>'right')))); @@ -136,8 +136,8 @@ $pdf->ezTable($apage, $Exercice=get_exercice($cn,$a_jrn[$count]['periode']); list($rap_deb,$rap_cred)=get_rappel($cn,$last_id,$_GET["p_id"],$Exercice,LAST,$l_GET['filter'],$l_centr); - $str_debit=sprintf( " reporter Dbit % 10.2f",$rap_deb); - $str_credit=sprintf(" reporter Crdit % 10.2f",$rap_cred); + $str_debit=sprintf( "à reporter Débit % 10.2f",$rap_deb); + $str_credit=sprintf("à reporter Crédit % 10.2f",$rap_cred); $pdf->ezText($str_debit,12,array('justification'=>'right')); $pdf->ezText($str_credit,12,array('justification'=>'right')); diff --git a/html/send_poste_pdf.php b/html/send_poste_pdf.php index 27b37d83a..ba5736926 100644 --- a/html/send_poste_pdf.php +++ b/html/send_poste_pdf.php @@ -62,7 +62,7 @@ for ( $i =0;$iezText($Libelle,30); $pdf->ezTable($array, - array ('jr_internal'=>'Opration', + array ('jr_internal'=>'Opération', 'j_date' => 'Date', 'jrn_name'=>'Journal', 'description'=>'Description', @@ -72,8 +72,8 @@ for ( $i =0;$i0,'showHeadings'=>1,'width'=>500, 'cols'=>array('montant'=> array('justification'=>'right'), ))); -$str_debit=sprintf("Dbit % 12.2f",$tot_deb); -$str_cred=sprintf("Crdit % 12.2f",$tot_cred); +$str_debit=sprintf("Débit % 12.2f",$tot_deb); +$str_cred=sprintf("Crédit % 12.2f",$tot_cred); $diff_solde=$tot_deb-$tot_cred; if ( $diff_solde < 0 ) { $solde=" C "; diff --git a/html/show_fiche.php b/html/show_fiche.php index 782f8a888..2eecc58a4 100644 --- a/html/show_fiche.php +++ b/html/show_fiche.php @@ -49,7 +49,7 @@ if ( ! isset ($_REQUEST['q'])) { $cn=DbConnect($gDossier); if ( $User->check_action($cn,FICHE_READ) == 0 ){ /* Cannot Access */ - echo '

Vous n\' avez pas accs

'; + echo '

Vous n\' avez pas accès

'; return; } diff --git a/html/show_tva.php b/html/show_tva.php index 4fa7f4629..2f801fb84 100644 --- a/html/show_tva.php +++ b/html/show_tva.php @@ -32,7 +32,7 @@ $User->Check(); require_once('class_dossier.php'); $gDossier=dossier::id(); -html_page_start($User->theme,"onLoad='window.focus();'"); +html_min_page_start($User->theme,"onLoad='window.focus();'"); ?> '; +echo '
'; +echo widget::hidden('phpsessid',$_REQUEST['PHPSESSID']); +echo dossier::hidden(); +echo 'title :
'; +echo 'desc :
'; +echo 'date :
'; +echo ''; +echo ''; + diff --git a/html/todo_list.php b/html/todo_list.php new file mode 100644 index 000000000..ce51b2c44 --- /dev/null +++ b/html/todo_list.php @@ -0,0 +1,58 @@ +set_parameter('id',$_REQUEST['id']); + $todo->load(); + header("Content-type: text/html; charset: utf8",true); + echo $todo->toJSON(); + exit(); +} + /*!\todo needs security for the users */ +if (isset($_REQUEST['del'])) { + $cn=DbConnect(dossier::id()); + $todo=new Todo_list($cn); + $todo->set_parameter('id',$_REQUEST['id']); + $todo->delete(); + exit(); +} diff --git a/html/user_advanced.php b/html/user_advanced.php index 9aa9ea411..083474983 100644 --- a/html/user_advanced.php +++ b/html/user_advanced.php @@ -48,7 +48,7 @@ echo_debug('user_advanced.php',__LINE__,"user is ".$_SESSION['g_user']); include_once ("user_menu.php"); echo '
'; -//echo ShowMenuCompta("user_advanced.php?".dossier::get()); + echo ShowMenuCompta(7); echo '
'; $p_action=""; @@ -56,20 +56,25 @@ $p_action=""; $p_action=(isset($_REQUEST['p_action']))?$_REQUEST['p_action']:""; switch ($p_action) { - case 'preod': - $high=9; - break; - case 'periode'; - $high=2; +case 'preod': + $high=9; + break; +case 'periode'; +$high=2; +break; +case 'verif'; +$high=10; +break; +case 'central'; +$high=3; break; - case 'verif'; - $high=10; - break; - case 'central'; - $high=3; - break; - - default: +case 'defreport': + $high=6; + break; +case 'ouv': + $high=8; + break; +default: $high=0; } @@ -87,84 +92,8 @@ if ($p_action == "periode" ) { //-------------------------------------------------- if ($p_action=="preod") { - echo '
'; - echo '
'; - $sel=new widget('select'); - $sel->name="jrn"; - $sel->value=make_array($cn,"select jrn_def_id,jrn_def_name from ". - " jrn_def order by jrn_def_name"); - // Show a list of ledger - $sa=(isset($_REQUEST['sa']))?$_REQUEST['sa']:""; - $sel->selected=$sa; - echo 'Choississez un journal '.$sel->IOValue(); - $wCheck=new widget("checkbox"); - if ( isset($_REQUEST['direct'])) { - $wCheck->selected=true; - } - echo 'Ecriture directe'.$wCheck->IOValue('direct'); + require_once('preod.inc.php'); - echo dossier::hidden(); - $hid=new widget("hidden"); - echo $hid->IOValue("sa","jrn"); - echo $hid->IOValue("p_action","preod"); - echo '
'; - echo widget::submit('Accepter','Accepter'); - echo ''; - - // if $_REQUEST[sa] == del delete the predefined operation - if ( $sa == 'del') { - $op=new Pre_operation($cn); - $op->od_id=$_REQUEST['od_id']; - $op->delete(); - $sa='jrn'; - } - - // if $_REQUEST[sa] == jrn show the predefined operation for this - // ledger - if ( $sa == 'jrn' ) { - $op=new Pre_operation($cn); - $op->set_jrn($_GET['jrn']); - if ( isset($_GET['direct'])) { - $op->od_direct='true'; - } else { - $op->od_direct='false'; - } - $array=$op->get_list_ledger(); - if ( empty($array) == true ) { - echo "Aucun enregistrement"; - exit(); - } - - echo '
'; - $count=0; - foreach ($array as $row ) { - - if ( $count %2 == 0 ) - echo ''; - else - echo ''; - echo ''; - echo ''; - echo ''; - - } - echo '
'.$row['od_name'].''; - echo '
'; - echo dossier::hidden(); - echo $hid->IOValue("sa","del"); - echo $hid->IOValue("p_action","preod"); - echo $hid->IOValue("del",""); - echo $hid->IOValue("od_id",$row['od_id']); - echo $hid->IOValue("jrn",$_GET['jrn']); - - $b=''; - echo $b; - echo '
'; - - echo '
'; - } - echo ''; exit(); } //---------------------------------------------------------------------- @@ -178,5 +107,14 @@ if ( $p_action=='central') require_once ('central.inc.php'); +if ($p_action=='defreport') { + require_once('report.inc.php'); +} +/* -------------------------------------------------- +Import writing (opening exercice) +-------------------------------------------------- */ +if ( $p_action == 'ouv') { + require_once('opening.inc.php'); +} html_page_stop(); ?> diff --git a/html/user_jrn.php b/html/user_jrn.php index 70a0c0c7d..5cdc24e78 100644 --- a/html/user_jrn.php +++ b/html/user_jrn.php @@ -31,7 +31,7 @@ include_once ("postgres.php"); include_once ("check_priv.php"); include_once ("class_widget.php"); require_once("jrn.php"); - +echo '

OBSOLETE FILES USER_JRN.PHP

'; // Check if dossier set $gDossier=dossier::id(); diff --git a/html/user_login.php b/html/user_login.php index 40fbe5f86..4835d9400 100644 --- a/html/user_login.php +++ b/html/user_login.php @@ -29,17 +29,46 @@ include_once ("class_user.php"); $User=new User($rep); $User->Check(); -html_page_start($_SESSION['g_theme']); +html_min_page_start($_SESSION['g_theme']); include_once("user_menu.php"); $priv=($User->admin==1)?"Administrateur":"Utilisateur"; +echo '
'; -echo '
Bienvenue '.$User->first_name.' '. - $User->name.',

Vous êtes un '. $priv.'
Selectionnez votre dossier

'; -// Show default menu (preference,...) +$result=""; +$result.=''; +if ( $User->Admin() == 1 ) { + $result.=""; +} +$result.=''; +$result.=''; +$result.=''; +$result.=""; +$result.="
Administration Aide PréférenceDeconnexion
"; + +echo '

Bienvenue '.$User->first_name.' '.$User->name." dans PhpCompta

"; +echo '
Choississez votre dossier'; +echo ''.$result.''; +echo '
'; +?> +
+ +IOValue('p_nom',$p_nom); + +?> +Donnez une partie du nom du dossier à rechercher +
+admin); +$res=u_ShowDossier($_SESSION['g_user'],$User->admin,$filtre); echo $res; ?>

diff --git a/html/user_pref.php b/html/user_pref.php index 0810773f3..547095c98 100644 --- a/html/user_pref.php +++ b/html/user_pref.php @@ -66,6 +66,17 @@ if ( isset ( $_POST['p_size']) ) { } +// Topmenu +//--------------------------------------------------------------------------- +// Here we put all the changes +//--------------------------------------------------------------------------- +if ( isset ($_POST['val']) ){ + // Change the top menu + $_SESSION['g_topmenu']=$_POST['topmenu']; + $User->update_global_pref('TOPMENU',$_POST['topmenu']); + if ( isset ($_POST['minirap'])) $User->set_mini_report($_POST['minirap']); +} + // show the top menu depending of the use_style // comta style @@ -75,7 +86,6 @@ if ( isset ($_REQUEST['gDossier']) ) if ( $_REQUEST['gDossier'] != 0 ) { echo '

'; - // echo ShowMenuCompta(); echo menu_tool('pref'); echo "
"; } diff --git a/html/user_sec.php b/html/user_sec.php index 963b33e24..5bef4e38b 100644 --- a/html/user_sec.php +++ b/html/user_sec.php @@ -150,7 +150,7 @@ if ( $action == "view" ) { if ( $MaxUser == 0 ) return; $l2_line=pg_fetch_array($User,0); - printf ('

Dtail utilisateur %s %s (%s)

', + printf ('

Détail utilisateur %s %s (%s)

', $l2_line['use_first_name'], $l2_line['use_name'], $l2_line['use_login']); @@ -185,21 +185,21 @@ if ( $action == "view" ) { } else $right = 3; if ( $right == 0 ) { echo "
"; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Lecture Ecriture Pas d\'accs Pas d\'accès"; echo "Lecture "; echo " Ecriture Pas d\'accs Pas d\'accès Lecture"; @@ -208,7 +208,7 @@ if ( $action == "view" ) { } if ( $right == 3 ) { - echo ' Pas d\'accs Pas d\'accès Lecture "; @@ -246,16 +246,16 @@ if ( $action == "view" ) { } if ( $right == 0 ) { echo ""; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Accs Accès Pas d\'accs Pas d\'accès "; - echo "Accs "; + echo "Accès "; echo " Change "; - echo "Accs "; + echo "Accès "; echo "
'; diff --git a/include/anc_imp.inc.php b/include/anc_imp.inc.php index 2322793f5..fc7a13940 100644 --- a/include/anc_imp.inc.php +++ b/include/anc_imp.inc.php @@ -38,7 +38,7 @@ $menu=array(array("?p_action=ca_imp&sub=listing&$str_dossier","Listing","Listing array("?p_action=ca_imp&sub=bc2&$str_dossier","Balance croisé","Balance croisé de 2 plans analytiques","bc2") ); $sub=(isset($_GET['sub']))?$_GET['sub']:'no'; -echo '
'; +echo '
'; echo ShowItem($menu,"H","mtitle","mtitle",$sub); echo '
'; $hidden=new widget("hidden"); diff --git a/include/anc_od.inc.php b/include/anc_od.inc.php index f7c9823ac..ee7bbe649 100644 --- a/include/anc_od.inc.php +++ b/include/anc_od.inc.php @@ -43,7 +43,7 @@ if ( ! $m ) { echo '

Aucun plan analytique défini

' // show the left menu //---------------------------------------------------------------------- echo ' -
+
diff --git a/include/argenta_be.inc.php b/include/argenta_be.inc.php index 61f5bd2bd..9c16431d6 100644 --- a/include/argenta_be.inc.php +++ b/include/argenta_be.inc.php @@ -22,6 +22,8 @@ * \brief This file must be included to parse the CVS from the CBC Bank */ + + //----------------------------------------------------- // Bank Argenta //----------------------------------------------------- @@ -65,10 +67,10 @@ while (($data = fgetcsv($handle, 2000,"!")) !== FALSE) { //---------------------------------------------------- $code=FormatString($code); $num_compte=FormatString($num_compte); - if ( CountSql($p_cn,"select * from import_tmp where code='$code' and num_compte='$num_compte' limit 2") != 0 ) + if ( CountSql($p_cn,utf8_encode("select * from import_tmp where code='$code' and num_compte='$num_compte' limit 2")) != 0 ) { /* Skip it it already encoded */ - echo "Doublon limin ".$detail; + echo "Doublon éliminé ".$detail; echo "
"; continue; } @@ -102,13 +104,13 @@ echo "
"; 'n')"; try { - ExecSql($p_cn,$Sql); + ExecSql($p_cn,$Sql,'latin1'); } catch(Exception $e) { - echo(__FILE__.":".__LINE__." Erreur : ".$e->getCode." msg ".$e->getMessage); + echo(__FILE__.":".__LINE__." Erreur : ".$e->getCode()." msg ".$e->getMessage()); rollback($p_cn); break; } diff --git a/include/balance.inc.php b/include/balance.inc.php index bc7342586..93f414604 100644 --- a/include/balance.inc.php +++ b/include/balance.inc.php @@ -33,7 +33,7 @@ include_once("class_acc_balance.php"); $User->can_request($cn,BALANCE); -echo '
'; +echo '
'; // Show the form for period echo ''; @@ -49,7 +49,7 @@ if ( isset ($_POST['from_periode']) ) $w->selected=$_POST['from_periode']; echo $w->IOValue('from_periode',$periode_start); -$w->label=" jusqu' "; +$w->label=" jusqu'à "; $periode_end=make_array($cn,"select p_id,to_char(p_end,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); if ( isset ($_POST['to_periode']) ) $w->selected=$_POST['to_periode']; @@ -74,7 +74,7 @@ $to_poste->extra2=null; $to_poste->value=(isset($_POST['to_poste']))?$_POST['to_poste']:""; $to_span=new widget("span","to_poste_label","to_poste_label"); $c=new widget("checkbox"); -$c->label="centralis"; +$c->label="centralisé"; echo $c->IOValue('central'); echo "
"; @@ -140,7 +140,7 @@ if ( isset($_POST['view'] ) ) { //$per=join(',',$periode); if ( isset($_POST['central']) ) { $bal->central='Y'; - $t_cent="centralise"; + $t_cent="centralisée"; } else $bal->central='N'; @@ -149,7 +149,7 @@ if ( isset($_POST['view'] ) ) { $_POST['to_periode']); $a=get_periode($cn,$_POST['from_periode']); $b=get_periode($cn,$_POST['to_periode']); - echo "

priode du ".$a['p_start']." au ".$b['p_end']."

"; + echo "

période du ".$a['p_start']." au ".$b['p_end']."

"; echo '
'; echo ''; diff --git a/include/bank.inc.php b/include/bank.inc.php index 5cf306768..e8b89496d 100644 --- a/include/bank.inc.php +++ b/include/bank.inc.php @@ -24,7 +24,7 @@ require_once('jrn.php'); require_once('class_widget.php'); require_once("class_document.php"); require_once("class_fiche.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once("check_priv.php"); require_once ('class_pre_op_fin.php'); @@ -32,7 +32,7 @@ require_once ('class_pre_op_fin.php'); * \brief the purpose off this file encode expense and to record them * */ - +echo JS_PROTOTYPE; // First we show the menu // If nothing is asked the propose a blank form @@ -81,16 +81,16 @@ if ( $sub_action == "solde" ) // find the bank account // NOTE : those values are in a table because // they are _national_ parameters - $banque=new parm_code($cn,'BANQUE'); - $caisse=new parm_code($cn,'CAISSE'); - $vir_interne=new parm_code($cn,'VIREMENT_INTERNE'); + $banque=new Acc_Parm_Code($cn,'BANQUE'); + $caisse=new Acc_Parm_Code($cn,'CAISSE'); + $vir_interne=new Acc_Parm_Code($cn,'VIREMENT_INTERNE'); $accountSql="select distinct pcm_val::text,pcm_lib from tmp_pcmn where pcm_val::text like '".$banque->p_value."%' or pcm_val::text like '".$vir_interne->p_value."%' or pcm_val::text like '".$caisse->p_value."%' order by pcm_val::text"; $ResAccount=ExecSql($cn,$accountSql); - echo '
'; + echo '
'; echo "
Poste Comptable
"; // Filter the saldo @@ -130,7 +130,7 @@ if ( $sub_action == "list") ''); echo ''; - echo '
'; + echo '
'; echo ''; @@ -157,7 +157,7 @@ if ( $sub_action == "list") $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; - echo 'Priode '.$w->IOValue("p_periode",$periode_start); + echo 'Période '.$w->IOValue("p_periode",$periode_start); $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; echo JS_SEARCH_CARD; $w=new widget('js_search_only'); @@ -233,7 +233,7 @@ if ( $sub_action=="use_opd" ) { ''; $form=FormFin($cn,$_GET['p_jrn'],$User->get_periode(),$submit,$p_post,false,$p_post['nb_item']); - echo '
'; + echo '
'; echo $form; echo '
'; exit(); @@ -260,7 +260,7 @@ if ( isset ($_POST['add_item']) || isset ($_POST['correct']) ) $form=FormFin($cn,$p_jrn,$User->get_periode(),$submit,$_POST,false, $nb_item); //$form=FormFin($cn,$p_jrn,$User->get_periode(),$submit,$_POST,false, $nb_number); - echo '
'; + echo '
'; echo $form; echo JS_CALC_LINE; echo '
'; @@ -284,7 +284,7 @@ if ( isset($_POST['save'])) $form=FormFin($cn,$p_jrn,$User->get_periode(),$submit,$_POST,true,$nb_number,true); - echo '
'; + echo '
'; echo $form; echo '
'; echo ''; @@ -341,7 +341,7 @@ if ( $p_jrn != -1 ) '; // Show an empty form of invoice $form=FormFin($cn,$p_jrn,$User->get_periode(),$submit,null,false,$jrn->GetDefLine('deb')); - echo '
'; + echo '
'; echo $form; echo '
'; $op=new Pre_operation($cn); @@ -356,7 +356,7 @@ if ( $p_jrn != -1 ) echo $hid->IOValue("jrn_type","FIN"); if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); + echo widget::submit('use_opd','Utilisez une op.prédéfinie'); echo $op->show_button(); echo ''; diff --git a/include/bud_detail.inc.php b/include/bud_detail.inc.php index 3c65d5744..135415650 100644 --- a/include/bud_detail.inc.php +++ b/include/bud_detail.inc.php @@ -30,7 +30,7 @@ require_once ('class_widget.php'); require_once ('class_bud_hypo.php'); require_once ('class_anc_account.php'); -echo '
'; +echo '
'; diff --git a/include/bud_sacc.inc.php b/include/bud_sacc.inc.php index f82fb387e..c8eea93d5 100644 --- a/include/bud_sacc.inc.php +++ b/include/bud_sacc.inc.php @@ -25,7 +25,7 @@ */ require_once ('class_bud_synthese_acc.php'); -echo '
'; +echo '
'; $obj=new Bud_Synthese_Acc($cn); $bh_id=(isset($_REQUEST['bh_id']))?$_REQUEST['bh_id']:''; $obj->from_array($_GET); diff --git a/include/bud_sga.inc.php b/include/bud_sga.inc.php index 1cb9ed795..be5e37585 100644 --- a/include/bud_sga.inc.php +++ b/include/bud_sga.inc.php @@ -25,7 +25,7 @@ */ require_once ('class_bud_synthese_hypo.php'); -echo '
'; +echo '
'; $obj=new Bud_Synthese_Hypo($cn); $bh_id=(isset($_REQUEST['bh_id']))?$_REQUEST['bh_id']:''; diff --git a/include/bud_spo.inc.php b/include/bud_spo.inc.php index 8427ecf10..0aa4d34f7 100644 --- a/include/bud_spo.inc.php +++ b/include/bud_spo.inc.php @@ -25,7 +25,7 @@ */ require_once ('class_bud_synthese_anc.php'); -echo '
'; +echo '
'; $obj=new Bud_Synthese_Anc($cn); $bh_id=(isset($_REQUEST['bh_id']))?$_REQUEST['bh_id']:''; diff --git a/include/bud_svglobal.inc.php b/include/bud_svglobal.inc.php index 68b3f217e..3adbad742 100644 --- a/include/bud_svglobal.inc.php +++ b/include/bud_svglobal.inc.php @@ -25,7 +25,7 @@ */ require_once ('class_bud_synthese_group.php'); -echo '
'; +echo '
'; $obj=new Bud_Synthese_Group($cn); $bh_id=(isset($_REQUEST['bh_id']))?$_REQUEST['bh_id']:''; $obj->from_array($_GET); diff --git a/include/cbc_be.inc.php b/include/cbc_be.inc.php index 7a63cd77c..e7160b862 100644 --- a/include/cbc_be.inc.php +++ b/include/cbc_be.inc.php @@ -82,7 +82,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { 'n')"; try { - ExecSql($p_cn,$Sql) ; + ExecSql($p_cn,$Sql,'latin1') ; } catch(Exception $e) { @@ -94,5 +94,5 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { $row++; } // file is read fclose($handle); -echo "Encore rien dsol"; +echo "Encore rien désolé"; ?> diff --git a/include/central.inc.php b/include/central.inc.php index e82a6fb9f..3ff641b3e 100644 --- a/include/central.inc.php +++ b/include/central.inc.php @@ -58,7 +58,7 @@ if ( $_POST["periode"] != "" ) { if ($ret==NOERROR) { echo '

La période '.$_POST["periode"].' est centralisée

'; } else { - echo '

La période '.$_POST["periode"].' n\' a pu tre centralisée

'; + echo '

La période '.$_POST["periode"].' n\' a pu être centralisée

'; } } }// if ( isset ($_POST["central"] )) @@ -72,7 +72,7 @@ if ( $ret != null) { echo ''; echo ''; } else { - echo '

Aucune priode centraliser

'; + echo '

Aucune période à centraliser

'; } echo "
"; diff --git a/include/check_priv.php b/include/check_priv.php index 48e3a4aed..5207c2a2a 100644 --- a/include/check_priv.php +++ b/include/check_priv.php @@ -27,7 +27,7 @@ include_once("postgres.php"); /*! - * \brief Vrifie les acces d'un utilisateur + * \brief Vérifie les acces d'un utilisateur * sur un journal * * \param $p_dossier le dossier @@ -37,7 +37,7 @@ include_once("postgres.php"); * \return * - 0 pas d'acces * - 1 Lecture - * - 2 criture + * - 2 écriture * */ @@ -72,14 +72,14 @@ function CheckJrn($p_dossier,$p_user,$p_jrn,$p_detail=False) } - // droit spcifique + // droit spécifique $Res2=ExecSql($cn,"select jrn_def_id,uj_priv from jrn_def left join user_sec_jrn on uj_jrn_id=jrn_def_id where uj_login='$p_user' and jrn_def_id=$p_jrn"); $PrivJrn=pg_NumRows($Res2); $cn=DbConnect(); - // droit par dfaut + // droit par défaut $Res=ExecSql($cn," select * from ac_users left join jnt_use_dos using (use_id) left join priv_user on (priv_jnt=jnt_id) @@ -88,17 +88,17 @@ function CheckJrn($p_dossier,$p_user,$p_jrn,$p_detail=False) $DefRight=pg_NumRows($Res); echo_debug ("PrivJrn = $PrivJrn DefRight $DefRight"); - // Si les droits par dfaut == 0, alors user n'a pas accs au dossier + // Si les droits par défaut == 0, alors user n'a pas accès au dossier if ( $DefRight == 0 ) return 0; $Def=pg_fetch_array($Res,0); - // Si les droits par dfaut == NO, alors user n'a pas accs au dossier + // Si les droits par défaut == NO, alors user n'a pas accès au dossier if ( $Def['priv_priv'] == "NO" ) return 0; if ( $Def['priv_priv'] == "W") { - // Si droit pas dfaut == criture + // Si droit pas défaut == écriture if ( $PrivJrn == 0 ) { - // Pas de droit spcifique sur jrn => droit par dfaut = W + // Pas de droit spécifique sur jrn => droit par défaut = W return 2; } $Priv=pg_fetch_array($Res2,0); @@ -111,9 +111,9 @@ function CheckJrn($p_dossier,$p_user,$p_jrn,$p_detail=False) return 0; } if ( $Def['priv_priv'] == "R") { - // Si droit pas dfaut == Lire + // Si droit pas défaut == Lire if ( $PrivJrn == 0 ) { - // Pas de droit spcifique sur jrn => droit par dfaut = Lire + // Pas de droit spécifique sur jrn => droit par défaut = Lire return 1; } $Priv=pg_fetch_array($Res2,0); diff --git a/include/class_acc_account.php b/include/class_acc_account.php index 91bd08531..dce35de4d 100644 --- a/include/class_acc_account.php +++ b/include/class_acc_account.php @@ -105,9 +105,9 @@ class Acc_Account { } else { $ret='
Solde
'; - $ret.=sprintf ('',$this->pcm_val); + $ret.=sprintf ('',$this->pcm_val); $ret.=""; - $ret.=sprintf('',urldecode($this->pcm_lib)); + $ret.=sprintf('',urldecode($this->pcm_lib)); $ret.= ""; $ret.=sprintf ('',$this->pcm_val_parent); $ret.=''; diff --git a/include/class_acc_account_ledger.php b/include/class_acc_account_ledger.php index 7b9c8d3e7..528089752 100644 --- a/include/class_acc_account_ledger.php +++ b/include/class_acc_account_ledger.php @@ -86,9 +86,9 @@ class Acc_Account_Ledger { * \return string with the pcm_lib */ function get_name() { - $ret=pg_exec($this->db, + $ret=ExecSqlParam($this->db, "select pcm_lib from tmp_pcmn where - pcm_val=".$this->id); + pcm_val=$1",array($this->id)); if ( pg_NumRows($ret) != 0) { $r=pg_fetch_array($ret); $this->name=$r['pcm_lib']; @@ -103,8 +103,8 @@ class Acc_Account_Ledger { */ function load() { - $ret=ExecSql($this->db,"select pcm_lib,pcm_val_parent from - tmp_pcmn where pcm_val=".$this->id); + $ret=ExecSqlParam($this->db,"select pcm_lib,pcm_val_parent from + tmp_pcmn where pcm_val=$1",array($this->id)); $r=pg_fetch_all($ret); if ( ! $r ) return false; @@ -250,7 +250,7 @@ function get_solde_detail($p_cond="") { ""; } - $solde_type=($tot_deb>$tot_cred)?"solde dbiteur":"solde crditeur"; + $solde_type=($tot_deb>$tot_cred)?"solde débiteur":"solde créditeur"; $diff=round(abs($tot_deb-$tot_cred),2); echo "". "". @@ -338,7 +338,7 @@ function get_solde_detail($p_cond="") { $SqlItem="$or pcm_val::text like '$item_cred'"; $or=" or "; } else { - $SqlItem="$or pcm_val = '$item_cred' "; + $SqlItem="$or pcm_val::text = '$item_cred' "; $or=" or "; } $SqlFilter=$SqlFilter.$SqlItem; diff --git a/include/class_acc_compute.php b/include/class_acc_compute.php new file mode 100644 index 000000000..976bc231c --- /dev/null +++ b/include/class_acc_compute.php @@ -0,0 +1,323 @@ +'amount', + 'amount_vat'=>'amount_vat', + 'amount_vat_rate'=>'amount_vat_rate', + 'nd_vat'=>'nd_vat', + 'nd_vat_rate'=>'nd_vat_rate', + 'nd_ded_vat'=>'nd_ded_vat', + 'nd_ded_vat_rate'=>'nd_ded_vat_rate', + 'amount_nd'=>'amount_nd', + 'amount_nd_rate'=>'amount_nd_rate', + 'nd_vat_rate'=>'nd_vat_rate', + 'amount_perso'=>'amount_perso', + 'amount_perso_rate'=>'amount_perso_rate' ); + + */ + + +class Acc_Compute { + private static $variable=array( 'amount'=>'amount', + 'amount_vat'=>'amount_vat', + 'amount_vat_rate'=>'amount_vat_rate', + 'nd_vat'=>'nd_vat', + 'nd_vat_rate'=>'nd_vat_rate', + 'nd_ded_vat'=>'nd_ded_vat', + 'nd_ded_vat_rate'=>'nd_ded_vat_rate', + 'amount_nd'=>'amount_nd', + 'amount_nd_rate'=>'amount_nd_rate', + 'nd_vat_rate'=>'nd_vat_rate', + 'amount_perso'=>'amount_perso', + 'amount_perso_rate'=>'amount_perso_rate' + ); + + private $order; // check that the compute + // function are called in the + // good order + + var $check; // activate the check of the + // order, valid value are + // false or true + function __construct () { + bcscale(4); + foreach (self::$variable as $key=>$value) $this->$key=0; + $this->order=0; + $this->check=true; + } + + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + + + } + public function get_info() { return var_export(self::$variable,true); } + + function compute_vat() { + if ( $this->check && $this->order != 0 ) throw new Exception ('ORDER NOT RESPECTED'); + $this->amount_vat=bcmul($this->amount,$this->amount_vat_rate); + $this->amount_vat=round($this->amount_vat,2); + $this->order=1; + } + /*!\brief Compute the no deductible part of the amount, it reduce + *also the vat + */ + function compute_nd() { + if ( $this->check && $this->order > 2 ) throw new Exception ('ORDER NOT RESPECTED'); + + $this->amount_nd=bcmul($this->amount,$this->amount_nd_rate); + $this->amount_nd=round($this->amount_nd,2); + // the nd part for the vat + $nd_vat=bcmul($this->amount_vat,$this->amount_nd_rate); + $nd_vat=round($nd_vat,2); + + } + function compute_nd_vat() { + if ( $this->check && $this->order > 3 ) throw new Exception ('ORDER NOT RESPECTED'); + $this->order=4; + + if ($this->amount_vat == 0 ) $this->compute_vat(); + $this->nd_vat=bcmul($this->amount_vat,$this->nd_vat_rate); + $this->nd_vat=round($this->nd_vat,2); + } + + function compute_ndded_vat() { + if ( $this->check && $this->order > 4 ) throw new Exception ('ORDER NOT RESPECTED'); + $this->order=5; + + if ($this->amount_vat == 0 ) $this->compute_vat(); + $this->nd_ded_vat=bcmul($this->amount_vat,$this->nd_ded_vat_rate); + $this->nd_ded_vat=round($this->nd_ded_vat,2); + } + + function compute_perso() { + if ( $this->check && $this->order != 1 ) throw new Exception ('ORDER NOT RESPECTED'); + $this->order=2; + if ( $this->amount == 0 ) return; + $this->amount_perso=bcmul($this->amount,$this->amount_perso_rate); + $this->amount_perso=round($this->amount_perso,2); + + + + } + function correct() { + $this->amount=bcsub($this->amount,$this->amount_perso); + // correct the others amount + $this->amount=bcsub($this->amount,$this->amount_nd); + $this->amount_vat=bcsub($this->amount_vat,$this->nd_ded_vat); + $this->amount_vat=round($this->amount_vat,2); + $this->amount_vat=bcsub($this->amount_vat,$this->nd_vat); + $this->amount_vat=round($this->amount_vat,2); + + } + + /*!\brief verify that all the amount are positive or null + * otherwise throw a exception and the sum of amount + vat must + * equal to the sum of all the amount of the current object + * so you have to copy the object before computing anything and pass + * it as parameter + * \param compare with a object copied before computing, if null + * there is no comparison + */ + function verify($p_obj=null) { + foreach (self::$variable as $key=>$value) + if ( $this->$value < 0 ) + throw new Exception ("Montant invalide "); + + if ( $p_obj != null ) { + $sum=0; + foreach ( array( 'amount','amount_vat','amount_nd','nd_vat','amount_perso','nd_ded_vat') as $value) + $sum=bcadd($sum,$this->$value); + if ( $p_obj->amount_vat == 0 ) $p_obj->compute_vat(); + $cmp=bcadd($p_obj->amount,$p_obj->amount_vat); + $diff=bcsub($sum,$cmp); + if ( $diff != 0.0 ) + throw new Exception ("ECHEC VERIFICATION : valeur totale = $sum valeur attendue = $cmp diff = $diff"); + } + } + function display() { + foreach (self::$variable as $key=>$value) { + echo 'key '.$key.' Description '.$value.' value is '.$this->$key.'
'; + } + } + public static function test_me () { + $a=new Acc_Compute(); + echo $a->get_info(); + echo '
'; + + // Compute some operation to see if the computed amount are + // correct + + //Test VAT + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + + echo '

Test VAT

'; + echo '

Data

'; + $a->display(); + + echo '

Result

'; + $a->compute_vat(); + $a->display(); + $a->verify(); + // Test VAT + perso + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('amount_perso_rate',0.5); + echo '

Test VAT + Perso

'; + echo '

Data

'; + $a->display(); + $b=clone $a; + $a->compute_vat(); + $a->compute_perso(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + // TEST VAT + ND + // Test VAT + perso + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('nd_vat_rate',0.5); + $b=clone $a; + echo '

Test VAT + ND VAT

'; + echo '

Data

'; + $a->display(); + $a->compute_vat(); + $a->compute_nd_vat(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + // TEST VAT + ND + // Test VAT + perso + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('nd_vat_rate',0.5); + $a->set_parameter('amount_perso_rate',0.5); + + $b=clone $a; + echo '

Test VAT + ND VAT + perso

'; + echo '

Data

'; + $a->display(); + $a->compute_vat(); + $a->compute_perso(); + $a->compute_nd_vat(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + // TEST VAT + ND + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('amount_nd_rate',0.5); + + $b=clone $a; + echo '

Test VAT + ND

'; + echo '

Data

'; + $a->display(); + $a->compute_vat(); + $a->compute_nd(); + + $a->compute_perso(); + $a->compute_nd_vat(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + // TEST VAT + ND + // + Perso + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('amount_nd_rate',0.5); + $a->set_parameter('amount_perso_rate',0.2857); + $b=clone $a; + echo '

Test VAT + ND + Perso

'; + echo '

Data

'; + $a->display(); + $a->compute_vat(); + $a->compute_nd(); + + $a->compute_perso(); + $a->compute_nd_vat(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + // TEST VAT + ND + // + Perso + $a=new Acc_Compute(); + $a->set_parameter('amount',1.23); + $a->set_parameter('amount_vat_rate',0.21); + $a->set_parameter('nd_ded_vat_rate',0.5); + + $b=clone $a; + echo '

Test VAT + TVA ND DED

'; + echo '

Data

'; + $a->display(); + $a->compute_vat(); + $a->compute_nd(); + + $a->compute_perso(); + $a->compute_nd_vat(); + $a->compute_ndded_vat(); + $a->correct(); + echo '

Result

'; + $a->display(); + $a->verify($b); + + + } + } \ No newline at end of file diff --git a/include/class_acc_ledger.php b/include/class_acc_ledger.php index 675b2b50c..faec5338b 100644 --- a/include/class_acc_ledger.php +++ b/include/class_acc_ledger.php @@ -32,6 +32,7 @@ require_once ('class_acexception.php'); require_once ('class_acc_reconciliation.php'); require_once ('class_periode.php'); require_once ('class_gestion_purchase.php'); +require_once ('class_acc_account.php'); /*!\file * \brief Class for jrn, class acc_ledger for manipulating the ledger @@ -635,14 +636,14 @@ class Acc_Ledger { { if ( $this->id == 0 ) return; - $Res=ExecSql($this->db,"select jrn_Def_id,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_def_type, + $Res=ExecSqlParam($this->db,"select jrn_Def_id,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_def_type, jrn_deb_max_line,jrn_cred_max_line,jrn_def_ech,jrn_def_ech_lib,jrn_def_code, jrn_def_fiche_deb,jrn_def_fiche_deb from jrn_Def - where jrn_def_id=".$this->id); + where jrn_def_id=$1",array($this->id)); $Count=pg_NumRows($Res); if ( $Count == 0 ) { - echo '

Param�tres journaux non trouv�s

'; + echo '

Parametres journaux non trouves

'; return null; } return pg_fetch_array($Res,0); @@ -657,8 +658,8 @@ class Acc_Ledger { function GetDefLine() { $sql_cred='jrn_deb_max_line'; - $sql="select jrn_deb_max_line as value from jrn_def where jrn_def_id=".$this->id; - $r=ExecSql($this->db,$sql); + $sql="select jrn_deb_max_line as value from jrn_def where jrn_def_id=$1"; + $r=ExecSqlParam($this->db,$sql,array($this->id)); $Res=pg_fetch_all($r); echo_debug('class_acc_ledger',__LINE__,$Res); if ( sizeof($Res) == 0 ) return 1; @@ -706,17 +707,16 @@ class Acc_Ledger { /*! * \brief Show a select list of the ledger you can access in * writing, the security is taken in care but show the readable AND - * writable ledger - * \param - * \param - * \param - * - * + * writable ledger. + * \param $p_type = ALL or the type of the ledger (ACH,VEN,FIN,ODS) + * \param $p_access =3 for READ and WRITE, 2 for write and 1 for readonly * \return object widget select */ - function select_ledger() { + function select_ledger($p_type="ALL",$p_access=3) { $user=new User($this->db); - $array=$user->get_ledger(); + $array=$user->get_ledger($p_type,$p_access); + + if ( $array == null ) return null; $idx=0; $ret=array(); @@ -745,9 +745,9 @@ class Acc_Ledger { function get_fiche_def() { $sql="select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as cred ". " from jrn_def where ". - " jrn_def_id = ".$this->id; + " jrn_def_id = $1 "; - $r=ExecSql($this->db,$sql); + $r=ExecSqlParam($this->db,$sql,array($this->id)); $res=pg_fetch_all($r); if ( empty($res) ) return null; @@ -757,19 +757,15 @@ class Acc_Ledger { /*! * \brief retrieve the jrn_def_class_deb and return it * - * \param - * \param - * \param - * * * \return return an string */ function get_class_def() { $sql="select jrn_def_class_deb ". " from jrn_def where ". - " jrn_def_id = ".$this->id; + " jrn_def_id = $1"; - $r=ExecSql($this->db,$sql); + $r=ExecSqlParam($this->db,$sql,array($this->id)); $res=pg_fetch_all($r); @@ -811,29 +807,30 @@ class Acc_Ledger { $ret.=$hidden->IOValue('e_comm',$desc); $ret.=$hidden->IOValue('jrn_type',$this->get_type()); $ret.=$hidden->IOValue('p_jrn',$this->id); - $ret.=$hidden->IOValue('nb_item',$this->nb); + $ret.=$hidden->IOValue('nb_item',$nb_item); if ( $this->with_concerned==true) { $ret.=$hidden->IOValue('jrn_concerned',$jrn_concerned); } $ret.=dossier::hidden(); $count=0; - for ($i=0;$i<$this->nb;$i++) { + for ($i=0;$i<$nb_item;$i++) { $ret.="
"; if ( trim(${'qc_'.$i})!="") { $oqc=new fiche($this->db); $oqc->get_by_qcode(${'qc_'.$i},false); $strPoste=$oqc->strAttribut(ATTR_DEF_ACCOUNT); - $ret.="'; + $ret.="'; } if ( trim(${'qc_'.$i})=="" && trim(${'poste'.$i}) != "") { $oposte=new Acc_Account_Ledger($this->db,${'poste'.$i}); $strPoste=$oposte->id; $ret.="'; + $oposte->get_name().$hidden->IOValue('poste'.$i,${'poste'.$i}). + ''; } if ( trim(${'qc_'.$i})=="" && trim(${'poste'.$i}) == "") @@ -888,13 +885,22 @@ class Acc_Ledger { $ret.=JS_SEARCH_CARD; $ret.=JS_SEARCH_POSTE; $ret.=JS_AJAX_FICHE; + $ret.=JS_PROTOTYPE; + $ret.=JS_INFOBULLE; // $ret.="
Numro de classe Numéro de classe
Libell Libellé
Classe Parent
$solde_type
".${'qc_'.$i}.' - '. - $oqc->strAttribut(ATTR_DEF_NAME).$hidden->IOValue('qc_'.$i,${'qc_'.$i}). - '". + ${'qc_'.$i}.' - '. + $oqc->strAttribut(ATTR_DEF_NAME).$hidden->IOValue('qc_'.$i,${'qc_'.$i}). + '".${"poste".$i}." - ". - $oposte->get_name().$hidden->IOValue('poste'.$i,${'poste'.$i}). - '
"; $ret.= ''; @@ -908,32 +914,39 @@ class Acc_Ledger { $ret.= ''; $ret.= '
'; $wDate=new widget('js_date','Date','date'); $wDate->table=1; $wDate->readonly=$p_readonly; - $wDate->value=(isset($date))?$date:''; + $date=(isset($date)&&trim($date)!='')?$date:''; + if (trim($date)=='') { + $user=new User($this->db); + $periode=new Periode($this->db); + list ($l_date_start,$l_date_end)=$periode->get_date_limit($user->get_periode()); + $date=$l_date_start; + } + $wDate->value=$date; $ret.=$wDate->IOValue(); $ret.= '
'; - // $nb_row=(isset($nb))?$nb:$this->GetDefLine(); - $nb_row=$this->nb; - $hidden=new widget('hidden','nb','nb'); - $hidden->value=$nb_row; - $ret.=$hidden->IOValue(); + $nb_row=(isset($nb_item) )?$nb_item:$this->nb; + + $ret.=widget::hidden('nb_item',$nb_row); $ret.=dossier::hidden(); + $hidden=new widget('hidden'); $ret.=$hidden->IOValue('p_jrn',$this->id); $ret.=$hidden->IOValue('jrn_type',$this->get_type()); - $ret.=''; + $info= widget::infobulle(0); + $info_poste=widget::infobulle(9); + $ret.='
'; $ret.=''. - ''. - ''. + ''. + ''. ''. ''. ''; for ($i = 0 ;$i<$nb_row;$i++){ // Quick Code - $quick_code=new widget('js_search'); + $quick_code=new widget('js_search_only'); $quick_code->name='qc_'.$i; $quick_code->value=(isset(${'qc_'.$i}))?${'qc_'.$i}:""; $quick_code->readonly=$p_readonly; - $quick_code->extra2=$this->id; + $quick_code->extra2='QuickCode?'; $quick_code->extra='filter'; - $qc_span=new widget('span','','qc_'.$i.'_label'); + $label=''; + if ( $quick_code->value != '' ) { + $Fiche=new fiche($this->db); + $Fiche->get_by_qcode($quick_code->value); + $label=$Fiche->strAttribut(ATTR_DEF_NAME); + } + $qc_span=new widget('span','','qc_'.$i.'_label',$label); // Account $poste=new widget('js_search_poste'); @@ -942,9 +955,15 @@ class Acc_Ledger { $poste->readonly=$p_readonly; $poste->extra=$this->id; $poste->extra2=$this->get_class_def(); + $label=''; + if ( $poste->value != '' ) { + $Poste=new Acc_Account($this->db); + $Poste->id=$poste->value; + $label=$Poste->get_lib(); + } - $poste_span=new widget('span','','poste'.$i.'_label'); + $poste_span=new widget('span','','poste'.$i.'_label',$label); // Amount $amount=new widget('text'); @@ -1028,7 +1047,7 @@ class Acc_Ledger { throw new AcException('Periode fermee',6); } - for ($i=0;$i<$this->nb;$i++) + for ($i=0;$i<$nb_item;$i++) { $err=0; @@ -1036,9 +1055,6 @@ class Acc_Ledger { if ( ! isset (${'amount'.$i})) continue; - if ( isNumber(${'amount'.$i} ) == 0 ) - throw new AcException('Montant invalide',3); - $amount=round(${'amount'.$i},2); $tot_deb+=(isset(${'ck'.$i}))?$amount:0; $tot_cred+=(! isset(${'ck'.$i}))?$amount:0; @@ -1047,17 +1063,23 @@ class Acc_Ledger { if ( isset (${'qc_'.$i}) && trim(${'qc_'.$i}) !="") { $f=new fiche($this->db); $f->quick_code=${'qc_'.$i}; - if ( $f->belong_ledger($p_jrn) < 0 ) throw new AcException("La fiche quick_code = ". $f->quick_code." n\'est pas dans ce journal",4); + if ( strlen(trim(${'qc_'.$i}))!=0 && isNumber(${'amount'.$i} ) == 0 ) + throw new AcException('Montant invalide',3); + } // Check if the account is permitted - if ( isset (${'poste'.$i})) { + if ( isset (${'poste'.$i}) && strlen (trim(${'poste'.$i})) != 0 ) { $p=new Acc_Account_Ledger($this->db,${'poste'.$i}); if ( $p->belong_ledger ($p_jrn) < 0 ) throw new AcException("Le poste ".$p->id." n\'est pas dans ce journal",5); + if ( strlen(trim(${'poste'.$i}))!=0 && isNumber(${'amount'.$i} ) == 0 ) + throw new AcException('Montant invalide',3); + + } @@ -1065,8 +1087,8 @@ class Acc_Ledger { $tot_deb=round($tot_deb,4); $tot_cred=round($tot_cred,4); if ( $tot_deb != $tot_cred ) { - print_r('$tot_deb'.$tot_deb); - print_r('$tot_cred'.$tot_cred); + /* print_r('$tot_deb'.$tot_deb); + print_r('$tot_cred'.$tot_cred); */ throw new AcException("Balance incorrecte debit = $tot_deb credit=$tot_cred ",1); } @@ -1112,9 +1134,10 @@ class Acc_Ledger { $group=NextSequence($this->db,"s_oa_group"); $own=new own($this->db); $tot_amount=0; - + $tot_deb=0; + $tot_cred=0; $count=0; - for ($i=0;$i<$this->nb;$i++) + for ($i=0;$i<$nb_item;$i++) { if ( ! isset (${'qc_'.$i}) && ! isset(${'poste'.$i})) continue; @@ -1140,7 +1163,8 @@ class Acc_Ledger { $acc_op->qcode=$quick_code; $j_id=$acc_op->insert_jrnx(); $tot_amount+=round($acc_op->amount,2); - + $tot_deb+=($acc_op->type=='d')?$acc_op->amount:0; + $tot_cred+=($acc_op->type=='c')?$acc_op->amount:0; if ( $own->MY_ANALYTIC != "nu" ) { if ( ereg("^[6,7]+",$poste)) { @@ -1156,8 +1180,9 @@ class Acc_Ledger { $count++; } } - } + }// loop for each item $acc_end=new Acc_Operation($this->db); + $acc_end->amount=$tot_deb; $acc_end->date=$date; $acc_end->desc=$desc; $acc_end->grpt=$seq; @@ -1226,6 +1251,16 @@ class Acc_Ledger { $Ret=CountSql($p_cn,"select * from jrn_def where jrn_def_type='".$p_type."'"); return $Ret+1; } + /*!\brief get the first ledger + *\param the type + *\return the j_id + */ + public function get_first($p_type) { + $user=new User($this->db); + $all=$user->get_ledger($p_type); + return $all[0]; + } + /*! * \brief this function is intended to test this class */ @@ -1267,8 +1302,10 @@ class Acc_Ledger { } if ( isset($_POST['post_id' ])) { + echo ''; echo $a->show_form($_POST,1); + echo widget::button('add','Ajout d\'une ligne','onClick="quick_writing_add_row()"'); echo widget::submit('save_it',"Sauver"); echo ''; exit(); @@ -1309,6 +1346,95 @@ class Acc_Ledger { } } + /*!\brief Update the paiment in the list of operation + *\param $p_array is normally $_GET + */ + function update_paid($p_array) { + // reset all the paid flag because the checkbox is post only + // when checked + foreach ($p_array as $name=>$paid) + { + list($ad) = sscanf($name,"set_jr_id%d"); + if ( $ad == null ) continue; + $sql="update jrn set jr_rapt='' where jr_id=$ad"; + $Res=ExecSql($this->db,$sql); + + } + // set a paid flag for the checked box + foreach ($p_array as $name=>$paid) + { + list ($id) = sscanf ($name,"rd_paid%d"); + + if ( $id == null ) continue; + $paid=($paid=='on')?'paid':''; + $sql="update jrn set jr_rapt='$paid' where jr_id=$id"; + $Res=ExecSql($this->db,$sql); + } + + } + function update_internal_code($p_internal) { + if ( ! isset($this->grpt_id) ) + exit( 'ERREUR '.__FILE__.":".__LINE__); + $Res=ExecSql($this->db,"update jrn set jr_internal='".$p_internal."' where ". + " jr_grpt_id = ".$this->grpt_id); + + } + /*!\brief retrieve all the card for this type of ledger, make them + *into a string separated by comma + *\param none + *\return all the card or null is nothing is found + */ + function get_all_fiche_def() { + $sql="select jrn_def_fiche_deb as deb,jrn_def_fiche_cred as cred ". + " from jrn_def where ". + " jrn_def_type = $1 "; + + $r=ExecSqlParam($this->db,$sql,array($this->type)); + + $res=pg_fetch_all($r); + if ( empty($res) ) return null; + $card=""; + $comma=''; + foreach ($res as $item ) { + if ( strlen(trim($item['deb'])) != 0 ) { + $card.=$comma.$item['deb']; + $comma=','; + } + if ( strlen(trim($item['cred'])) != '') { + $card.=$comma.$item['cred']; + $comma=','; + } + + } + + return $card; + } + /*!\brief get the saldo of an exercice, used for the opening of a folder + *\param $p_exercice is the exercice we want + *\return an array + * index = + * - solde (debit > 0 ; credit < 0) + * - j_poste + * - j_qcode + */ + function get_saldo_exercice($p_exercice) { + $sql="select sum(a.montant) as solde, j_poste, j_qcode + from + (select j_id, case when j_debit='t' then j_montant + else j_montant * (-1) end as montant + from jrnx) as a + join jrnx using (j_id) + join parm_periode on (j_tech_per = p_id ) + where + p_exercice=$1 + and j_poste::text not like '7%' + and j_poste::text not like '6%' + group by j_poste,j_qcode + having (sum(a.montant) != 0 )"; + $res=get_array($this->db,$sql,array($p_exercice)); + return $res; + } + } diff --git a/include/class_acc_ledger_fin.php b/include/class_acc_ledger_fin.php new file mode 100644 index 000000000..b44b0d1ec --- /dev/null +++ b/include/class_acc_ledger_fin.php @@ -0,0 +1,725 @@ +is_closed($periode)==1 ) + { + throw new AcException('Periode fermee',6); + } + + /* check that the datum is in the choosen periode */ + $per=new Periode($this->db); + list ($min,$max)=$per->get_date_limit($periode); + if ( cmpDate($e_date,$min) < 0 || + cmpDate($e_date,$max) > 0) + throw new AcException('Date et periode ne correspondent pas',6); + $fiche=new fiche($this->db); + $fiche->get_by_qcode($e_bank_account); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.$e_bank_account.'n\'a pas de poste comptable',8); + + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.$e_bank_account.' le poste comptable ['.$poste->id.'] n\'existe pas',9); + } + + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode($e_bank_account); + if ( $fiche->belong_ledger($p_jrn,'deb') !=1 ) + throw new AcException('La fiche '.$e_bank_account.'n\'est pas accessible à ce journal',10); + + $nb=0; + $tot_amount=0; + //---------------------------------------- + // foreach item + //---------------------------------------- + for ($i=0;$i< $nb_item;$i++) { + if ( strlen(trim(${'e_other'.$i}))== 0) continue; + /* check if amount are numeric and */ + if ( isNumber(${'e_other'.$i.'_amount'}) == 0 ) + throw new AcException('La fiche '.${'e_other'.$i}.'a un montant invalide ['.${'e_other'.$i}.']',6); + + /* compute the total */ + $tot_amount+=round(${'e_other'.$i.'_amount'},2); + + /* check if all card has a ATTR_DEF_ACCOUNT*/ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${'e_other'.$i}); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.${'e_other'.$i}.'n\'a pas de poste comptable',8); + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.${'e_other'.$i}.' le poste comptable ['.$poste->id.'n\'existe pas',9); + } + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode(${'e_other'.$i}); + if ( $fiche->belong_ledger($p_jrn,'cred') !=1 ) + throw new AcException('La fiche '.${'e_other'.$i}.'n\'est pas accessible à ce journal',10); + $nb++; + } + if ( $nb == 0 ) + throw new AcException('Il n\'y a aucune opération',12); + + /* Check if the last_saldo and first_saldo are correct */ + if ( strlen(trim($last_sold)) != 0 && isNumber($last_sold) && + strlen(trim($first_sold)) != 0 && isNumber($first_sold)) + { + $diff=$last_sold-$first_sold; + $diff=round($diff,2); + if ( $first_sold != 0 && $last_sold !=0) { + if ( $tot_amount != $diff ) + throw new AcException('Le montant de l\'extrait est incorrect'. + $tot_amount.' extrait '.$diff,13); + } + } + + } + + + /*!\brief + *\param $p_array contains the value usually it is $_POST + *\return string with html code + *\note the form tag are not set here + */ + function display_form($p_array=null) { + if ( $p_array != null) + extract ($p_array); + $pview_only=false; + $user = new User($this->db); + + // The first day of the periode + $pPeriode=new Periode($this->db); + list ($l_date_start,$l_date_end)=$pPeriode->get_date_limit($user->get_periode()); + + $op_date=( ! isset($e_date) ) ?$l_date_start:$e_date; + $ext_no=( ! isset($ext_no) ) ?'':$ext_no; + + $r=""; + + $r.=JS_INFOBULLE; + $r.=JS_SEARCH_CARD; + $r.=JS_AJAX_FICHE; + $r.=JS_CONCERNED_OP; + + $r.=dossier::hidden(); + $r.=widget::hidden('phpsessid',$_REQUEST['PHPSESSID']); + //$r.=widget::hidden('p_jrn',$this->id); + $r.='
Banque, caisse '; + $r.='
QuickcodePosteQuickcode'.$info.'Poste'.$info_poste.' MontantDébit
'; + // Date + //-- + $Date=new widget("js_date"); + $Date->SetReadOnly($pview_only); + $Date->table=1; + $Date->tabindex=1; + $r.=""; + $r.=$Date->IOValue("e_date",$op_date,"Date"); + // Periode + //-- + $l_user_per=$user->get_periode(); + $l_form_per=FormPeriode($this->db,$l_user_per,OPEN); + $r.=""; + $r.=""; + // Ledger (p_jrn) + //-- + $wLedger=$this->select_ledger('FIN',2); + if ($wLedger == null) exit ('Pas de journal disponible'); + $wLedger->table=1; + $wLedger->label=" Journal ".widget::infobulle(2) ; + $r.=''; + $r.=$wLedger->IOValue(); + $r.=''; + + //retrieve bank name + $e_bank_account=( isset ($e_bank_account) )?$e_bank_account:""; + $e_bank_account_label=""; + + // retrieve e_bank_account_label + if ( $e_bank_account != "" ) { + $fBank=new fiche($this->db); + $fBank->get_by_qcode($e_bank_account); + $e_bank_account_label=$fBank->strAttribut(ATTR_DEF_NAME).' '. + ' Adresse : '.$fBank->strAttribut(ATTR_DEF_ADRESS).' '. + $fBank->strAttribut(ATTR_DEF_CP).' '. + $fBank->strAttribut(ATTR_DEF_CITY).' '; + + } + + $W1=new widget("js_search_only"); + $W1->readonly=$pview_only; + $W1->label="Banque ".widget::infobulle(0); + $W1->name="e_bank_account"; + $W1->value=$e_bank_account; + $W1->extra='deb'; // credits + $W1->extra2="Recherche"; + $W1->table=0; + $r.=""; + + $r.="
"; + $label=widget::infobulle(3); + $r.="Période comptable $label".$l_form_per; + $r.="
".$W1->IOValue(); + $Span=new widget ("span"); + $Span->SetReadOnly($pview_only); + $r.=$Span->IOValue("e_bank_account_label",$e_bank_account_label)."
"; + + $r.=''; + + + + + $r.='
Opérations financières'; + //-------------------------------------------------- + // Saldo begin end + //------------------------------------------------- + $r.='
Extrait de compte'; + $r.=''; + $r.=''; + // Extrait + //-- + $wExt=new widget('TEXT'); + $label=widget::infobulle(5); + $wExt->label='Numéro d\'extrait '.$label; + $wExt->table=1; + $r.=$wExt->IOValue("ext_no",$ext_no); + $label=widget::infobulle(7); + $r.=''; + $wFirst=new widget('text'); + $wFist->table=0; + $first_sold=(isset($first_sold))?$first_sold:""; + $r.=''; + $wLast=new widget('text'); + $wLast->table=1; + $last_sold= isset($last_sold)?$last_sold:""; + $r.=''; + $r.=''; + $r.='
Solde début extrait'.$label.' '.$wFirst->IOValue('first_sold',$first_sold).'Solde fin extrait'.$label.' '.$wLast->IOValue('last_sold',$last_sold).'
'; + $r.='
'; + + //-------------------------------------------------- + // financial operation + //------------------------------------------------- + $r.=''; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $r.=''; + $r.=""; + // Parse each " tiers" + for ($i=0; $i < MAX_ARTICLE; $i++) { + $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:""; + $tiers_label=""; + $tiers_amount=(isset(${"e_other$i"."_amount"}))?round(${"e_other$i"."_amount"},2):0; + + $tiers_comment=(isset (${"e_other$i"."_comment"}))?${"e_other$i"."_comment"}:""; + // If $tiers has a value + if ( $tiers != "" ) + { + $fTiers=new fiche($this->db); + $fTiers->get_by_qcode($tiers); + + $tiers_label=$fTiers->strAttribut(ATTR_DEF_NAME); + + } + ${"e_other$i"."_amount"}=(isset (${"e_other$i"."_amount"}))?${"e_other$i"."_amount"}:0; + + $W1=new widget("js_search_only"); + $W1->label=""; + $W1->name="e_other".$i; + $W1->value=$tiers; + $W1->extra='cred'; // credits + $W1->extra2='Recherche'; + $W1->readonly=$pview_only; + $r.=""; + // label + $other=new widget("span"); + $r.=''; + } + $r.="
code".widget::infobulle(0)."CommentaireMontant Op. Concernée(s)
".$W1->IOValue()."'; + $r.=$other->IOValue("e_other$i"."_label", $tiers_label); + // Comment + $wComment=new widget("text"); + $wComment->table=1; + $wComment->size=35; + $wComment->SetReadOnly($pview_only); + $r.=$wComment->IOValue("e_other$i"."_comment",$tiers_comment); + // amount + $wAmount=new widget("text"); + $wAmount->table=1; + $wAmount->size=7; + $wAmount->SetReadOnly($pview_only); + $r.=$wAmount->IOValue("e_other$i"."_amount",$tiers_amount); + // concerned + ${"e_concerned".$i}=(isset(${"e_concerned".$i}))?${"e_concerned".$i}:""; + $wConcerned=new widget("js_concerned"); + $wConcerned->SetReadOnly($pview_only); + $wConcerned->extra=0; + $wConcerned->table=1; + $wConcerned->extra2='paid'; + $r.=$wConcerned->IOValue("e_concerned".$i,${"e_concerned".$i}); + $r.='
"; + + $r.='
'; + + + + return $r; + + } + /*!\brief show the summary before inserting into the database, it + *calls the function for adding a attachment. The function verify + *should be called before + *\param $p_array an array usually is $_POST + *\return string with code html + */ + public function confirm($p_array) { + $r=""; + + extract ($p_array); + $pPeriode=new Periode($this->db); + $pPeriode->id=$periode; + list ($l_date_start,$l_date_end)=$pPeriode->get_date_limit($periode); + $exercice=$pPeriode->get_exercice(); + $r.=''; + $r.='
Banque, caisse '; + $r.=''; + // Date + //-- + $r.=""; + $r.='"; + $r.=""; + // Ledger (p_jrn) + //-- + $r.=''; + $r.=''; + $this->id=$p_jrn; + $r.=''; + $r.=''; + + //retrieve bank name + $e_bank_account=( isset ($e_bank_account) )?$e_bank_account:""; + $e_bank_account_label=""; + + $fBank=new fiche($this->db); + $fBank->get_by_qcode($e_bank_account); + $e_bank_account_label=$fBank->strAttribut(ATTR_DEF_NAME).' '. + ' Adresse : '.$fBank->strAttribut(ATTR_DEF_ADRESS).' '. + $fBank->strAttribut(ATTR_DEF_CP).' '. + $fBank->strAttribut(ATTR_DEF_CITY).' '; + + $filter_year=" and j_tech_per in (select p_id from parm_periode where p_exercice='".$exercice."')"; + + + $solde=get_solde($this->db,$fBank->strAttribut(ATTR_DEF_ACCOUNT),$filter_year); + $new_solde=$solde; + + $r.="
Date : '.$e_date; + // Periode + //-- + $r.=""; + $r.="Période comptable "; + $r.=$l_date_start.' - '.$l_date_end; + $r.="
Journal '; + $r.=$this->get_name(); + $r.='
Banque "; + $r.=$e_bank_account_label; + + $r.="
"; + + $r.='
'; + + $r.='
Opérations financières'; + //-------------------------------------------------- + // Saldo begin end + //------------------------------------------------- + $r.='
Extrait de compte'; + $r.=''; + $r.=''; + // Extrait + //-- + $r.=''.$ext_no; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.='
Numéro d\'extraitSolde début extrait '.$first_sold.'Solde fin extrait '.$last_sold.'
'; + $r.='
'; + + //-------------------------------------------------- + // financial operation + //------------------------------------------------- + $r.=''; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $r.=''; + $r.=""; + // Parse each " tiers" + $tot_amount=0; + //-------------------------------------------------- + // For each items + //-------------------------------------------------- + for ($i=0; $i < $nb_item; $i++) { + + $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:""; + + if ( strlen(trim($tiers))==0)continue; + $tiers_label=""; + $tiers_amount=round(${"e_other$i"."_amount"},2); + $tot_amount=bcadd($tot_amount,$tiers_amount); + $tiers_comment=${"e_other$i"."_comment"}; + // If $tiers has a value + $fTiers=new fiche($this->db); + $fTiers->get_by_qcode($tiers); + + $tiers_label=$fTiers->strAttribut(ATTR_DEF_NAME); + + $r.=""; + // label + $other=new widget("span"); + $r.=''; + // Comment + $r.=''; + // amount + $r.=''; + // concerned + $r.=''; + $r.=''; + } + $r.="
codeCommentaireMontant Op. Concernée(s)
".${'e_other'.$i}."'; + $r.=$fTiers->strAttribut(ATTR_DEF_NAME); + $r.=''.$tiers_comment.''.$tiers_amount.''; + $r.=${"e_concerned".$i}; + $r.='
"; + + // saldo + $r.='
Ancien solde = '.$solde; + $new_solde+=$tot_amount; + $r.='
Nouveau solde = '.$new_solde; + // check for upload piece + $file=new widget("file"); + $file->table=0; + $r.="
Ajoutez une pièce justificative "; + $r.=$file->IOValue("pj",""); + + $r.='
'; + //-------------------------------------------------- + // Hidden variables + //-------------------------------------------------- + $r.=dossier::hidden(); + $r.=widget::hidden('phpsessid',$_REQUEST['PHPSESSID']); + $r.=widget::hidden('p_jrn',$this->id); + $r.=widget::hidden('nb_item',$nb_item); + $r.=widget::hidden('last_sold',$last_sold); + $r.=widget::hidden('first_sold',$first_sold); + $r.=widget::hidden('e_bank_account',$e_bank_account); + $r.=widget::hidden('ext_no',$ext_no); + $r.=widget::hidden('e_date',$e_date); + $r.=widget::hidden('periode',$periode); + $r.=dossier::hidden(); + $r.=widget::hidden('sa','n'); + for ($i=0; $i < $nb_item; $i++) { + $tiers=(isset(${"e_other".$i}))?${"e_other".$i}:""; + $r.=widget::hidden('e_other'.$i,$tiers); + $r.=widget::hidden('e_other'.$i.'_comment',${'e_other'.$i.'_comment'}); + $r.=widget::hidden('e_other'.$i.'_amount',${'e_other'.$i.'_amount'}); + $r.=widget::hidden('e_concerned'.$i,${'e_concerned'.$i}); + } + + return $r; + } + /*!\brief save the data into the database, included the attachment, + *and the reconciliations + *\param $p_array usually $_POST + *\return string with HTML code + */ + public function insert($p_array) { + $internal_code=""; + $oid=0; + extract ($p_array); + + // Debit = banque + + $fBank=new fiche($this->db); + $fBank->get_by_qcode($e_bank_account); + // Get the saldo + $pPeriode=new Periode($this->db); + $pPeriode->id=$periode; + $exercice=$pPeriode->get_exercice(); + + $filter_year=" and j_tech_per in (select p_id from parm_periode where p_exercice='".$exercice."')"; + $solde=get_solde($this->db,$fBank->strAttribut(ATTR_DEF_ACCOUNT),$filter_year); + $new_solde=$solde; + + try + { + StartSql($this->db); + $amount=0.0; + // Credit = goods + for ( $i = 0; $i < $nb_item;$i++) { + // if tiers is set and amount != 0 insert it into the database + // and quit the loop ? + if ( strlen(trim(${"e_other$i"}))==0 ) continue; + + $fPoste=new fiche($this->db); + $fPoste->get_by_qcode(${"e_other$i"}); + // round it + ${"e_other$i"."_amount"}=round( ${"e_other$i"."_amount"},2); + + $amount+=${"e_other$i"."_amount"}; + // Record a line for the bank + // Compute the j_grpt + $seq=NextSequence($this->db,'s_grpt'); + + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$fPoste->strAttribut(ATTR_DEF_ACCOUNT); + $acc_operation->amount=${"e_other$i"."_amount"}*(-1); + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='d'; + $acc_operation->periode=$periode; + $acc_operation->insert_jrnx(); + + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$fBank->strAttribut(ATTR_DEF_ACCOUNT); + $acc_operation->amount=${"e_other$i"."_amount"}; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='d'; + $acc_operation->periode=$periode; + $acc_operation->insert_jrnx(); + + + if ( FormatString(${"e_other$i"."_comment"}) == null ) { + // if comment is blank set a default one + $comment="ext :".$ext_no." compte : ".$fBank->strAttribut(ATTR_DEF_NAME).' a '. + $fPoste->strAttribut(ATTR_DEF_NAME); + } else { + $comment='ext: '.$ext_no.' '.${'e_other'.$i.'_comment'}; + } + + + $acc_operation=new Acc_Operation($this->db); + $acc_operation->jrn=$p_jrn; + $acc_operation->amount=abs(${"e_other$i"."_amount"}); + $acc_operation->date=$e_date; + $acc_operation->desc=$comment; + $acc_operation->grpt=$seq; + $acc_operation->periode=$periode; + $jr_id=$acc_operation->insert_jrn(); + + $internal=$this->compute_internal_code($seq); + + + if ( trim(${"e_concerned".$i}) != "" ) { + if ( strpos(${"e_concerned".$i},',') !== 0 ) + { + $aRapt=split(',',${"e_concerned".$i}); + foreach ($aRapt as $rRapt) { + if ( isNumber($rRapt) == 1 ) + { + InsertRapt($this->db,$jr_id,$rRapt); + } + } + } else + if ( isNumber(${"e_concerned".$i}) == 1 ) + { + InsertRapt($this->db,$jr_id,${"e_concerned$i"}); + } + } + + // Set Internal code + $this->grpt_id=$seq; + $this->update_internal_code($internal); + + + + if ( $i == 0 ) + { + // first record we upload the files and + // keep variable to update other row of jrn + if ( isset ($_FILES)) + $oid=save_upload_document($this->db,$seq); + + } else { + if ( $oid != 0 ) + { + ExecSql($this->db,"update jrn set jr_pj=".$oid.", jr_pj_name='".$_FILES['pj']['name']."', ". + "jr_pj_type='".$_FILES['pj']['type']."' where jr_grpt_id=$seq"); + } + } + + } // for nbitem + } + catch (Exception $e) + { + echo ''. + 'Erreur dans l\'enregistrement '. + __FILE__.':'.__LINE__.' '. + $e->getMessage(); + Rollback($this->db); + exit(); + + } + Commit($this->db); + $r=""; + $r.="
Ancien solde ".$solde; + $new_solde+=$amount; + $r.="
Nouveau solde ".$new_solde; + return $r; + } + /*!\brief + *\param + *\return + *\note + *\see + *\todo + */ + + + function show_ledger() { + echo dossier::hidden(); + $hid=new widget("hidden"); + + $hid->name="p_action"; + $hid->value="bank"; + echo $hid->IOValue(); + + + $hid->name="sa"; + $hid->value="l"; + echo $hid->IOValue(); + + $User=new User($this->db); + + $w=new widget("select"); + // filter on the current year + $filter_year=" where p_exercice='".$User->get_exercice()."'"; + + $periode_start=make_array($this->db,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end",1); + // User is already set User=new User($this->db); + $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); + $w->selected=$current; + + echo JS_SEARCH_CARD; + echo JS_PROTOTYPE; + echo JS_AJAX_FICHE; + echo '
'; + echo 'Période '.$w->IOValue("p_periode",$periode_start); + $wLedger=$this->select_ledger('fin',3); + if ($wLedger == null) exit ('Pas de journal disponible'); + echo 'Journal '.$wLedger->IOValue(); + $w=new widget('js_search_only'); + $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; + echo dossier::hidden(); + echo widget::hidden('p_action','bank'); + echo widget::hidden('sa','l'); + $w->name='qcode'; + $w->value=$qcode; + $w->label=''; + $this->type='FIN'; + $all=$this->get_all_fiche_def(); + $w->extra=$all; + $w->extra2='QuickCode'; + $sp= new widget("span"); + echo $sp->IOValue("qcode_label","",$qcode); + echo $w->IOValue(); + + echo widget::submit('gl_submit','Rechercher'); + echo '
'; + + // Show list of sell + // Date - date of payment - Customer - amount + if ( $current != -1 ) + { + $filter_per=" and jr_tech_per=".$current; + } + else + { + $filter_per=" and jr_tech_per in (select p_id from parm_periode where p_exercice=". + $User->get_exercice().")"; + } + /* security */ + $available_ledger=" and jr_def_id= ".$this->id." and ".$User->get_ledger_sql(); + + // Show list of sell + // Date - date of payment - Customer - amount + $sql=SQL_LIST_ALL_INVOICE.$filter_per." and jr_def_type='FIN'". + " $available_ledger" ; + $step=$_SESSION['g_pagesize']; + $page=(isset($_GET['offset']))?$_GET['page']:1; + $offset=(isset($_GET['offset']))?$_GET['offset']:0; + + $l=""; + + // check if qcode contains something + if ( $qcode != "" ) + { + // add a condition to filter on the quick code + $l=" and jr_grpt_id in (select j_grpt from jrnx where j_qcode='$qcode') "; + } + + list($max_line,$list)=ListJrn($this->db,0,"where jrn_def_type='FIN' $filter_per $l $available_ledger " + ,null,$offset,0); + $bar=jrn_navigation_bar($offset,$max_line,$step,$page); + + echo "
$bar"; + echo $list; + echo "$bar
"; + + + + + } +} diff --git a/include/class_acc_jrn_info.php b/include/class_acc_ledger_info.php similarity index 97% rename from include/class_acc_jrn_info.php rename to include/class_acc_ledger_info.php index 94e11c1f6..41cd2a56b 100644 --- a/include/class_acc_jrn_info.php +++ b/include/class_acc_ledger_info.php @@ -31,7 +31,7 @@ require_once ('postgres.php'); * the order or other info are going to be stored and used in the detail. * this class maps the table jrn_info */ -class Acc_Jrn_Info { +class Acc_Ledger_Info { var $cn; /*!< connection */ var $ji_id; /*!< primary key */ var $id_type; /*!< type id */ @@ -125,7 +125,7 @@ class Acc_Jrn_Info { $array=pg_fetch_all($r); $ret=array(); foreach ($array as $row) { - $o=new Acc_Jrn_Info($this->cn,$row['ji_id']); + $o=new Acc_Ledger_Info($this->cn,$row['ji_id']); $o->load(); $ret[]=clone $o; } @@ -149,7 +149,7 @@ class Acc_Jrn_Info { static function test_me() { echo "Dossier = ".Dossier::id(); $cn=DbConnect(Dossier::id()); - $a=new Acc_Jrn_Info($cn); + $a=new Acc_Ledger_Info($cn); $a->jr_id=3; $a->id_type='BON_COMMANDE'; $a->ji_value='BON'; diff --git a/include/class_acc_ledger_purchase.php b/include/class_acc_ledger_purchase.php new file mode 100644 index 000000000..d06dff611 --- /dev/null +++ b/include/class_acc_ledger_purchase.php @@ -0,0 +1,1000 @@ +is_closed($periode)==1 ) + { + throw new AcException('Periode fermee',6); + } + + /* check that the datum is in the choosen periode */ + $per=new Periode($this->db); + list ($min,$max)=$per->get_date_limit($periode); + if ( cmpDate($e_date,$min) < 0 || + cmpDate($e_date,$max) > 0) + throw new AcException('Date et periode ne correspondent pas',6); + $fiche=new fiche($this->db); + $fiche->get_by_qcode($e_client); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.$e_client.'n\'a pas de poste comptable',8); + + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.$e_client.' le poste comptable ['.$poste->id.'] n\'existe pas',9); + } + + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode($e_client,'cred'); + if ( $fiche->belong_ledger($p_jrn) !=1 ) + throw new AcException('La fiche '.$e_client.'n\'est pas accessible à ce journal',10); + + $nb=0; + + //---------------------------------------- + // foreach item + //---------------------------------------- + for ($i=0;$i< $nb_item;$i++) { + if ( strlen(trim(${'e_march'.$i}))== 0) continue; + /* check if amount are numeric and */ + if ( isNumber(${'e_march'.$i.'_buy'}) == 0 ) + throw new AcException('La fiche '.${'e_march'.$i}.'a un montant invalide ['.${'e_march'.$i}.']',6); + if ( isNumber(${'e_quant'.$i}) == 0 ) + throw new AcException('La fiche '.${'e_march'.$i}.'a une quantité invalide ['.${'e_quant'.$i}.']',7); + + /* check if all card has a ATTR_DEF_ACCOUNT*/ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${'e_march'.$i}); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.${'e_march'.$i}.'n\'a pas de poste comptable',8); + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.${'e_march'.$i}.' le poste comptable ['.$poste->id.'n\'existe pas',9); + } + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode(${'e_march'.$i}); + if ( $fiche->belong_ledger($p_jrn,'deb') !=1 ) + throw new AcException('La fiche '.${'e_march'.$i}.'n\'est pas accessible à ce journal',10); + $nb++; + } + if ( $nb == 0 ) + throw new AcException('Il n\'y a aucune marchandise',12); + } + + public function save() { + echo "

Acc_Ledger_Purchase::save Not implemented

"; + } + + /*!\brief insert into the database, it calls first the verify function + *\param $p_array is usually $_POST or a predefined operation + *\return string + *\note throw an AcException + */ + public function insert($p_array) { + extract ($p_array); + $this->verify($p_array) ; + + $own=new own($this->db); + $group=NextSequence($this->db,"s_oa_group"); /* for analytic */ + $seq=NextSequence($this->db,'s_grpt'); + $this->id=$p_jrn; + $internal=$this->compute_internal_code($seq); + $cust=new fiche($this->db); + $cust->get_by_qcode($e_client); + $poste=$cust->strAttribut(ATTR_DEF_ACCOUNT); + bcscale(4); + try { + $tot_amount=0; + $tot_tva=0; + $tot_debit=0; + StartSql($this->db); + $tot_nd=0; + $tot_perso=0; + $tot_tva_nd=0; + $tot_tva_ndded=0; + + /* Save all the items without vat and no deductible vat and expense*/ + for ($i=0;$i< $nb_item;$i++) { + if ( strlen(trim(${'e_march'.$i})) == 0 ) continue; + if ( ${'e_march'.$i.'_buy'} == 0 ) continue; + if ( ${'e_quant'.$i} == 0 ) continue; + + /* First we save all the items without vat */ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${"e_march".$i}); + + /* tva */ + $idx_tva=${'e_march'.$i.'_tva_id'}; + $oTva=new Acc_Tva($this->db); + $oTva->set_parameter('id',$idx_tva); + $oTva->load(); + + /* We have to compute all the amount thanks Acc_Compute */ + $amount=bcmul(${'e_march'.$i.'_buy'},${'e_quant'.$i}); + $acc_amount=new Acc_Compute(); + $acc_amount->check=false; + $acc_amount->set_parameter('amount',$amount); + $acc_amount->set_parameter('amount_vat_rate',$oTva->get_parameter('rate')); + if ( strlen(trim(${'e_march'.$i.'_tva_amount'})) ==0) { + $acc_amount->compute_vat(); + echo_debug( 'vat is computed = '.$acc_amount->amount_vat); + + } else { + $acc_amount->amount_vat= ${'e_march'.$i.'_tva_amount'}; + echo_debug( 'vat is given = '.$acc_amount->amount_vat); + + } + $tot_tva+=$acc_amount->amount_vat; + + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='d'; + $acc_operation->periode=$periode; + $acc_operation->qcode=""; + + + + + if ( ! $fiche->empty_attribute(ATTR_DEF_DEPENSE_NON_DEDUCTIBLE)) { + $acc_amount->amount_nd_rate=$fiche->strAttribut(ATTR_DEF_DEPENSE_NON_DEDUCTIBLE); + $acc_amount->compute_nd(); + $tot_nd+=$acc_amount->amount_nd; + + } + + if ( ! $fiche->empty_attribute(ATTR_DEF_DEP_PRIV)) { + $acc_amount->amount_perso_rate=$fiche->strAttribut(ATTR_DEF_DEP_PRIV); + $acc_amount->compute_perso(); + $tot_perso+=$acc_amount->amount_perso; + } + + if ( ! $fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE)) { + $acc_amount->nd_vat_rate=$fiche->strAttribut(ATTR_DEF_TVA_NON_DEDUCTIBLE); + $acc_amount->compute_nd_vat(); + $tot_tva_nd+=$acc_amount->nd_vat; + /* save op. */ + + } + if ( ! $fiche->empty_attribute(ATTR_DEF_TVA_NON_DEDUCTIBLE_RECUP)) { + $acc_amount->nd_ded_vat_rate=$fiche->strAttribut(ATTR_DEF_TVA_NON_DEDUCTIBLE_RECUP); + $acc_amount->compute_ndded_vat(); + /* save op. */ + $tot_tva_ndded+=$acc_amount->nd_ded_vat; + } + $acc_amount->correct(); + $tot_amount+=$amount; + + $acc_operation->poste=$fiche->strAttribut(ATTR_DEF_ACCOUNT); + $acc_operation->amount=$acc_amount->amount; + $acc_operation->qcode=${"e_march".$i}; + if( $acc_amount->amount > 0 ) $tot_debit=bcadd($tot_debit,$acc_amount->amount); + + $j_id=$acc_operation->insert_jrnx(); + + /* Compute sum vat */ + + + $tva_item=$acc_amount->amount_vat; + + if (isset($tva[$idx_tva] ) ) + $tva[$idx_tva]+=$tva_item; + else + $tva[$idx_tva]=$tva_item; + + + /* Save the stock */ + /* if the quantity is < 0 then the stock increase (return of + * material) + */ + $nNeg=(${"e_quant".$i}<0)?-1:1; + + // always save quantity but in withStock we can find + // what card need a stock management + + InsertStockGoods($this->db,$j_id,${'e_march'.$i},$nNeg*${'e_quant'.$i},'d') ; + + if ( $own->MY_ANALYTIC != "nu" ) + { + // for each item, insert into operation_analytique */ + $op=new Anc_Operation($this->db); + $op->oa_group=$group; + $op->j_id=$j_id; + $op->oa_date=$e_date; + $op->oa_debit=($amount < 0 )?'t':'f'; + echo_debug(__FILE__.':'.__LINE__,"Description is $e_comm"); + $op->oa_description=FormatString($e_comm); + $op->save_form_plan($_POST,$i); + } + // insert into quant_purchase + //----- + + $r=ExecSql($this->db,"select insert_quant_purchase ". + "('".$internal."'". + ",".$j_id. + ",'".${"e_march".$i}."'". + ",".${"e_quant".$i}.",". + round($amount,2). + ",".$acc_amount->amount_vat. + ",".$oTva->get_parameter('id'). + ",".$acc_amount->amount_nd. + ",".$acc_amount->nd_vat. + ",".$acc_amount->nd_ded_vat. + ",".$acc_amount->amount_perso. + ",'".$e_client."')"); + + + } // end loop : save all items + /* save total customer */ + $cust_amount=round(bcadd($tot_amount,$tot_tva),2); + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$poste; + $acc_operation->amount=$cust_amount; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='c'; + $acc_operation->periode=$periode; + $acc_operation->qcode=${"e_client"}; + if ( $cust_amount < 0 ) $tot_debit=bcadd($tot_debit,abs($cust_amount)); + $acc_operation->insert_jrnx(); + /* + * Save all the no deductible + */ + if ( $tot_nd != 0) { + /* save op. */ + $dna=new Acc_Parm_Code($this->db,'DNA'); + $acc_operation->type='d'; + $acc_operation->amount=$tot_nd; + $acc_operation->poste=$dna->p_value; + $acc_operation->qcode=''; + if ( $tot_nd > 0 ) $tot_debit=bcadd($tot_debit,$tot_nd); + $j_id=$acc_operation->insert_jrnx(); + + } + if ( $tot_perso != 0) { + /* save op. */ + $acc_operation->type='d'; + $dna=new Acc_Parm_Code($this->db,'DEP_PRIV'); + $acc_operation->amount=$tot_perso; + $acc_operation->poste=$dna->p_value; + $acc_operation->qcode=''; + if ( $tot_perso > 0 ) $tot_debit=bcadd($tot_debit,$tot_perso); + $j_id=$acc_operation->insert_jrnx(); + + } + if ( $tot_tva_nd != 0) { + /* save op. */ + $acc_operation->type='d'; + $acc_operation->qcode=''; + $dna=new Acc_Parm_Code($this->db,'TVA_DNA'); + $acc_operation->amount=$tot_tva_nd; + $acc_operation->poste=$dna->p_value; + if ( $tot_tva_nd > 0 ) $tot_debit=bcadd($tot_debit,$tot_tva_nd); + $j_id=$acc_operation->insert_jrnx(); + + } + if ( $tot_tva_ndded != 0) { + /* save op. */ + $dna=new Acc_Parm_Code($this->db,'TVA_DED_IMPOT'); + + $acc_operation->type='d'; + $acc_operation->qcode=''; + $acc_operation->amount=$tot_tva_ndded; + $acc_operation->poste=$dna->p_value; + if ( $tot_tva_ndded > 0 ) $tot_debit=bcadd($tot_debit,$tot_tva_ndded); + $j_id=$acc_operation->insert_jrnx(); + + + } + + /* save all vat + * $i contains the tva_id and value contains the vat amount + */ + foreach ($tva as $i => $value) { + $oTva=new Acc_Tva($this->db); + $oTva->set_parameter('id',$i); + $oTva->load(); + + $poste_vat=$oTva->get_side('d'); + + $cust_amount=bcadd($tot_amount,$tot_tva); + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$poste_vat; + $acc_operation->amount=$value; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='d'; + $acc_operation->periode=$periode; + if ( $value > 0 ) $tot_debit=bcadd($tot_debit,$value); + $acc_operation->insert_jrnx(); + + } + /* insert into jrn */ + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->echeance=$e_ech; + $acc_operation->amount=abs(round($tot_debit,2)); + $acc_operation->desc=$e_comm; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->periode=$periode; + $acc_operation->insert_jrn(); + + // Set Internal code + $this->grpt_id=$seq; + $this->update_internal_code($internal); + + /* Save the attachment */ + if ( isset ($_FILES)) { + if ( sizeof($_FILES) != 0 ) + save_upload_document($this->db,$seq); + } + }//end try + catch (Exception $e) + { + echo ''. + 'Erreur dans l\'enregistrement '. + __FILE__.':'.__LINE__.' '. + $e->getMessage(); + Rollback($this->db); + exit(); + } + Commit($this->db); + return $internal; + } + + public function update() { + echo "

Acc_Ledger_Purchase::update Not implemented

"; + } + + public function load() { + echo "

Acc_Ledger_Purchase::load Not implemented

"; + + } + /*!\brief Show all the operation, propose a form to select the + *ledger and the periode + *\return none + *\note echo directly, there is no return with the html code + */ + public function show_ledger() { + $w=new widget("select"); + $User=new User($this->db); + // filter on the current year + $filter_year=" where p_exercice='".$User->get_exercice()."'"; + + $periode_start=make_array($this->db,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end",1); + $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); + $w->selected=$current; + + echo 'Période '.$w->IOValue("p_periode",$periode_start); + $wLedger=$this->select_ledger('ACH',3); + if ($wLedger == null) exit ('Pas de journal disponible'); + echo 'Journal '.$wLedger->IOValue(); + $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; + $this->type='ACH'; + $all=$this->get_all_fiche_def(); + echo JS_SEARCH_CARD; + echo JS_PROTOTYPE; + echo JS_AJAX_FICHE; + $w=new widget('js_search_only'); + $w->name='qcode'; + $w->value=$qcode; + $w->label=''; + $w->extra='filter'; + $w->extra2='QuickCode'; + $w->table=0; + $sp= new widget("span"); + echo $sp->IOValue("qcode_label","",$qcode); + echo $w->IOValue(); + + echo widget::submit('gl_submit','Recherche'); + // Show list of sell + // Date - date of payment - Customer - amount + if ( $current == -1) { + $cond=" and jr_tech_per in (select p_id from parm_periode where p_exercice='".$User->get_exercice()."')"; + } else { + $cond=" and jr_tech_per=".$current; + } + + $sql=SQL_LIST_ALL_INVOICE.$cond." and jr_def_id=".$this->id ; + $step=$_SESSION['g_pagesize']; + $page=(isset($_GET['offset']))?$_GET['page']:1; + $offset=(isset($_GET['offset']))?$_GET['offset']:0; + /* security */ + $available_ledger=$User->get_ledger_sql(); + + $l=""; + // check if qcode contains something + if ( $qcode != "" ) + { + $qcode=Formatstring($qcode); + // add a condition to filter on the quick code + $l=" and jr_grpt_id in (select j_grpt from jrnx where j_qcode=upper('$qcode')) "; + $sql="where jrn_def_type='ACH' $cond $l and $available_ledger "; + } + + list($max_line,$list)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + $bar=jrn_navigation_bar($offset,$max_line,$step,$page); + + echo "
$bar"; + echo '
'; + echo dossier::hidden(); + $hid=new widget("hidden"); + + echo $list; + if ( $max_line !=0 ) + echo widget::submit('paid','Mise à jour paiement'); + echo '
'; + echo "$bar
"; + + echo '
'; + + + } + public function delete() { + echo "

Acc_Ledger_Purchase::delete Not implemented

"; + } + /*!\brief display the form for entering data for invoice + *\param $p_array is null or you can put the predef operation or the $_POST + *\return string + */ + public function display_form($p_array=null) { + if ( $p_array != null ) extract($p_array); + + $user = new User($this->db); + + // The first day of the periode + $oPeriode=new Periode($this->db); + list ($l_date_start,$l_date_end)=$oPeriode->get_date_limit($user->get_periode()); + + $op_date=( ! isset($e_date) ) ?$l_date_start:$e_date; + $e_ech=(isset($e_ech))?$e_ech:""; + $e_comm=(isset($e_comm))?$e_comm:""; + + + $r=""; + + $r.=JS_INFOBULLE; + $r.=JS_SEARCH_CARD; + $r.=JS_SHOW_TVA; + $r.=JS_TVA; + $r.=JS_AJAX_FICHE; + + + $r.=dossier::hidden(); + $r.=widget::hidden('phpsessid',$_REQUEST['PHPSESSID']); + $r.="
"; + $r.="En-tête facture fournisseur "; + + $r.=''; + // Date + //-- + $Date=new widget("js_date"); + $Date->SetReadOnly(false); + $Date->table=1; + $Date->tabindex=1; + $r.=""; + $r.=$Date->IOValue("e_date",$op_date,"Date"); + // Payment limit + //-- + $Echeance=new widget("js_date"); + $Echeance->SetReadOnly(false); + $Echeance->table=1; + $Echeance->tabindex=2; + $label=widget::infobulle(4); + $r.=$Echeance->IOValue("e_ech",$e_ech,"Echeance ".$label); + + // Periode + //-- + $l_user_per=$user->get_periode(); + $def=(isset($periode))?$periode:$l_user_per; + $l_form_per=FormPeriode($this->db,$def,OPEN); + $r.=""; + $r.=""; + // Ledger (p_jrn) + //-- + $wLedger=$this->select_ledger('ACH',2); + if ($wLedger == null) exit ('Pas de journal disponible'); + $wLedger->table=1; + $wLedger->javascript="onChange='update_predef(\"ach\",\"f\")'"; + $wLedger->label=" Journal ".widget::infobulle(2) ; + + $r.=$wLedger->IOValue(); + // Comment + //-- + $Commentaire=new widget("text"); + $Commentaire->table=0; + $Commentaire->SetReadOnly(false); + $Commentaire->size=80; + $Commentaire->tabindex=3; + $label=" Description ".widget::infobulle(1) ; + $r.=""; + $r.=''. + '"; + $r.=""; + + // Display the customer + //-- + $fiche='cred'; + + // Save old value and set a new one + //-- + $e_client=( isset ($e_client) )?$e_client:""; + $e_client_label=" ";//str_pad("",100,"."); + + + // retrieve e_client_label + //-- + + if ( strlen(trim($e_client)) != 0) { + $fClient=new fiche($this->db); + $fClient->get_by_qcode($e_client); + $e_client_label=$fClient->strAttribut(ATTR_DEF_NAME).' '. + ' Adresse : '.$fClient->strAttribut(ATTR_DEF_ADRESS).' '. + $fClient->strAttribut(ATTR_DEF_CP).' '. + $fClient->strAttribut(ATTR_DEF_CITY).' '; + + + } + + $W1=new widget("js_search_only"); + $W1->label="Fournisseur ".widget::infobulle(0) ; + $W1->name="e_client"; + $W1->tabindex=3; + $W1->value=$e_client; + $W1->table=0; + $W1->extra=$fiche; // list of card + $W1->extra2="Recherche"; + $r.='"; + + $r.="
"; + $label=widget::infobulle(3); + $r.="Période comptable $label".$l_form_per; + $r.="
'.$label.''.$Commentaire->IOValue("e_comm",$e_comm)."
'.$W1->IOValue(); + $client_label=new widget("span"); + $client_label->table=0; + $r.=$client_label->IOValue("e_client_label",$e_client_label)."
"; + + // Record the current number of article + $Hid=new widget('hidden'); + $p_article= ( isset ($p_article))?$p_article:MAX_ARTICLE; + $r.=$Hid->IOValue("nb_item",$p_article); + $e_comment=(isset($e_comment))?$e_comment:""; + $r.="
"; + + // Start the div for item to sell + $r.="
"; + $r.='
Détail articles achetés'; + $r.=''; + $r.=''; + $r.=""; + $label=widget::infobulle(0) ; + $r.=""; + $r.=""; + $label=widget::infobulle(6) ; + $r.=""; + $r.=""; + $label=widget::infobulle(8) ; + $r.=""; + $r.=""; + + $r.=''; + // For each article + //-- + for ($i=0;$i< MAX_ARTICLE;$i++) { + // Code id, price & vat code + //-- + $march=(isset(${"e_march$i"}))?${"e_march$i"}:""; + $march_buy=(isset(${"e_march".$i."_buy"}))?${"e_march".$i."_buy"}:""; + $march_tva_id=(isset(${"e_march$i"."_tva_id"}))?${"e_march$i"."_tva_id"}:""; + $march_tva_amount=(isset(${"e_march$i"."_tva_amount"}))?${"e_march$i"."_tva_amount"}:""; + + + $march_label=" "; + // retrieve the tva label and name + //-- + if ( strlen(trim($march))!=0 ) { + $fMarch=new fiche($this->db); + $fMarch->get_by_qcode($march); + $march_label=$fMarch->strAttribut(ATTR_DEF_NAME); + if ( ! isset($march_tva_id) ) + $march_tva_id=$fMarch->strAttribut(ATTR_DEF_TVA); + } + // Show input + //-- + $W1=new widget("js_search_only"); + $W1->label=""; + $W1->name="e_march".$i; + $W1->value=$march; + $W1->table=1; + $W1->extra2="Recherche"; + $W1->extra='deb'; // debits + $W1->javascript=sprintf('onBlur="ajaxFid(\'%s\',\'%s\',\'%s\');compute_purchase(%d)"', + $W1->name, + $W1->extra, //deb or cred + $_REQUEST['PHPSESSID'], + $i + ); + + $W1->readonly=false; + $r.="".$W1->IOValue(); + // For computing we need some hidden field for holding the value + $r.=widget::hidden('tva_march'.$i,0); + $r.=widget::hidden('htva_march'.$i,0); + $r.=widget::hidden('tvac_march'.$i,0); + $r.=""; + $Span=new widget ("span"); + $Span->SetReadOnly(false); + // card's name, price + //-- + $r.='"; + // price + $Price=new widget("text"); + $Price->SetReadOnly(false); + $Price->table=1; + $Price->size=9; + $Price->javascript="onBlur='compute_purchase($i)'"; + $r.=$Price->IOValue("e_march".$i."_buy",$march_buy); + // vat label + //-- + $select_tva=make_array($this->db,"select tva_id,tva_label from tva_rate order by tva_rate desc",0); + $Tva=new widget("select"); + $Tva->javascript="onChange=\"clean_tva($i);compute_purchase($i);\""; + $Tva->table=1; + $Tva->selected=$march_tva_id; + $r.=$Tva->IOValue("e_march$i"."_tva_id",$select_tva); + // Tva_amount + // price + $Tva_amount=new widget("text"); + $Tva_amount->SetReadOnly(false); + $Tva_amount->table=1; + $Tva_amount->size=9; + $Tva_amount->javascript="onBlur='compute_purchase($i)'"; + $r.=$Tva_amount->IOValue("e_march".$i."_tva_amount",$march_tva_amount); + + // quantity + //-- + $quant=(isset(${"e_quant$i"}))?${"e_quant$i"}:"1"; + $Quantity=new widget("text"); + $Quantity->SetReadOnly(false); + $Quantity->table=1; + $Quantity->size=9; + $Quantity->javascript="onChange=compute_purchase($i)"; + $r.=$Quantity->IOValue("e_quant".$i,$quant); + + $r.=""; + } + + + + $r.="
Code $labelDénomination$label prix / unité htva tva $label Total tvaquantité
'.$Span->IOValue("e_march".$i."_label",$march_label)."
"; + $r.='
'; + $r.=widget::button('act','Actualiser','onClick="compute_all_purchase();"'); + $r.="
"; + + $r.='
'; + $r.='
0.0'; + $r.='
0.0'; + $r.='
0.0'; + $r.="
"; + + + + $r.='
'; + $r.='
Total HTVA'; + $r.='
Total TVA'; + $r.='
Total TVAC'; + $r.="
"; + + $r.="
"; + // Set correctly the REQUEST param for jrn_type + $r.=widget::hidden('jrn_type','ACH'); + + $r.=widget::button('add_item','Ajout article', ' onClick="ledger_sold_add_row()"'); + $r.=widget::submit("view_invoice","Enregistrer"); + $r.=widget::reset('Effacer '); + + $r.="
"; + + $r.=JS_CALC_LINE; + return $r; + } + /*!\brief show the summary of the operation and propose to save it + *\param array contains normally $_POST. It proposes also to save + * the Analytic accountancy + *\return string + */ + function confirm($p_array) { + extract ($p_array); + $this->verify($p_array) ; + + // to show a select list for the analytic + // if analytic is op (optionnel) there is a blank line + $own = new Own($this->db); + + bcscale(4); + $client=new fiche($this->db); + $client->get_by_qcode($e_client,true); + + $client_name=$client->getName(). + ' '.$client->strAttribut(ATTR_DEF_ADRESS).' '. + $client->strAttribut(ATTR_DEF_CP).' '. + $client->strAttribut(ATTR_DEF_CITY); + $lPeriode=new Periode($this->db); + $date_limit=$lPeriode->get_date_limit($periode); + $r=""; + $r.="
"; + $r.="En-tête facture fournisseur "; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.='
Date '.$e_date.'Echeance '.$e_ech.' Période Comptable '.$date_limit['p_start'].'-'.$date_limit['p_end'].'
Journal '.$this->get_name().'
Description '.$e_comm.'
Fournisseur '.$e_client.':'.$client_name.'
'; + $r.='
'; + $r.='
Détail articles achetés'; + $r.=''; + $r.=''; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + + $r.=''; + $r.=''; + $r.=($own->MY_ANALYTIC!='nu')?'':''; + $r.=''; + $tot_amount=0.0; + $tot_tva=0.0; + for ($i = 0; $i < $nb_item;$i++) { + if ( strlen(trim(${"e_march".$i})) == 0 ) continue; + + /* retrieve information for card */ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${"e_march".$i}); + $fiche_name=$fiche->getName(); + $idx_tva=${"e_march".$i."_tva_id"}; + $oTva=new Acc_Tva($this->db); + $oTva->set_parameter('id',$idx_tva); + $oTva->load(); + $amount=bcmul(${"e_march".$i."_buy"},${'e_quant'.$i}); + + //----- if tva_amount is not given we compute the vat ---- + if ( strlen (trim (${'e_march'.$i.'_tva_amount'})) == 0) { + $op=new Acc_Compute(); + + $op->set_parameter("amount",$amount); + $op->set_parameter('amount_vat_rate',$oTva->get_parameter('rate')); + $op->compute_vat(); + $tva_item=$op->get_parameter('amount_vat'); + } else + $tva_item=round(${'e_march'.$i.'_tva_amount'},2); + + if (isset($tva[$idx_tva] ) ) + $tva[$idx_tva]+=$tva_item; + else + $tva[$idx_tva]=$tva_item; + $tot_amount=round(bcadd($tot_amount,$amount),2); + $tot_tva=round(bcadd($tva_item,$tot_tva),2); + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + + $r.=''; + $r.=''; + $r.=''; + + // encode the pa + if ( $own->MY_ANALYTIC!='nu') // use of AA + { + // show form + $anc_op=new Anc_Operation($this->db); + $null=($own->MY_ANALYTIC=='op')?1:0; + $r.=''; + } + + + $r.=''; + + } + + + $r.='
CodeDénominationprixtvaquantité Montant TVAMontant HTVACompt. Analytique
'; + $r.=${"e_march".$i}; + $r.=''; + $r.=$fiche_name; + $r.=''; + $r.=${"e_march".$i."_buy"}; + $r.=''; + $r.=${"e_quant".$i}; + $r.=''; + $r.=$oTva->get_parameter('label'); + $r.=''; + $r.=$tva_item; + $r.=''; + $r.=$amount; + $r.=''; + $p_mode=1; + $r.=$anc_op->display_form_plan($p_array,$null,$p_mode,$i,$amount); + $r.='
'; + if ( $own->MY_ANALYTIC!='nu') // use of AA + $r.=''; + $r.='
'; + + + $r.='
Totaux'; + $tot=round(bcadd($tot_amount,$tot_tva),2); + $r.='
'; + $r.='
Total HTVA'; + + foreach ($tva as $i=>$value) { + $oTva->set_parameter('id',$i); + $oTva->load(); + + $r.='
TVA à '.$oTva->get_parameter('label'); + } + $r.='
Total TVA'; + $r.='
Total TVAC'; + $r.="
"; + + + $r.='
'; + $r.='
'.$tot_amount.''; + + foreach ($tva as $i=>$value) { + $r.='
'.$tva[$i]; + } + $r.='
'.$tot_tva.''; + $r.='
'.$tot.''; + $r.="
"; + + + + $r.='
'; + /* Add hidden */ + $r.=widget::hidden('e_client',$e_client); + $r.=widget::hidden('nb_item',$nb_item); + $r.=widget::hidden('p_jrn',$p_jrn); + $r.=widget::hidden('periode',$periode); + $r.=widget::hidden('e_comm',$e_comm); + $r.=widget::hidden('e_date',$e_date); + $r.=widget::hidden('e_ech',$e_ech); + $r.=widget::hidden('jrn_type',$jrn_type); + for ($i=0;$i < $nb_item;$i++) { + $r.=widget::hidden("e_march".$i,${"e_march".$i}); + $r.=widget::hidden("e_march".$i."_buy",${"e_march".$i."_buy"}); + $r.=widget::hidden("e_march".$i."_tva_id",${"e_march".$i."_tva_id"}); + $r.=widget::hidden('e_march'.$i.'_tva_amount', ${'e_march'.$i.'_tva_amount'}); + $r.=widget::hidden("e_quant".$i,${"e_quant".$i}); + } + // check for upload piece + $file=new widget("file"); + $file->table=0; + $r.="Ajoutez une pièce justificative "; + $r.=$file->IOValue("pj",""); + + return $r; + } + + + /*!\brief update the payment + */ + function show_unpaid() { + // Show list of unpaid sell + // Date - date of payment - Customer - amount + // Nav. bar + $step=$_SESSION['g_pagesize']; + $page=(isset($_GET['offset']))?$_GET['page']:1; + $offset=(isset($_GET['offset']))?$_GET['offset']:0; + + + $sql=SQL_LIST_UNPAID_INVOICE_DATE_LIMIT." and jr_def_id=".$this->id ; + list($max_line,$list)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + $sql=SQL_LIST_UNPAID_INVOICE." and jr_def_id=".$this->id ; + list($max_line2,$list2)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + + // Get the max line + $m=($max_line2>$max_line)?$max_line2:$max_line; + $bar2=jrn_navigation_bar($offset,$m,$step,$page); + + echo $bar2; + echo '

Echeance dépassée

'; + echo $list; + echo '

Non Payée

'; + echo $list2; + echo $bar2; + // Add hidden parameter + $hid=new widget("hidden"); + + echo '
'; + + if ( $m != 0 ) + echo widget::submit('paid','Mise à jour paiement'); + + + } + /*!\brief + *\param + *\return + *\note + *\see + *\todo + */ + static function test_me() { + } + +} + + + + + diff --git a/include/class_acc_ledger_sold.php b/include/class_acc_ledger_sold.php new file mode 100644 index 000000000..b5c165b7d --- /dev/null +++ b/include/class_acc_ledger_sold.php @@ -0,0 +1,949 @@ +is_closed($periode)==1 ) + { + throw new AcException('Periode fermee',6); + } + + /* check that the datum is in the choosen periode */ + $per=new Periode($this->db); + list ($min,$max)=$per->get_date_limit($periode); + if ( cmpDate($e_date,$min) < 0 || + cmpDate($e_date,$max) > 0) + throw new AcException('Date et periode ne correspondent pas',6); + $fiche=new fiche($this->db); + $fiche->get_by_qcode($e_client); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.$e_client.'n\'a pas de poste comptable',8); + + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.$e_client.' le poste comptable ['.$poste->id.'] n\'existe pas',9); + } + + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode($e_client,'deb'); + if ( $fiche->belong_ledger($p_jrn) !=1 ) + throw new AcException('La fiche '.$e_client.'n\'est pas accessible à ce journal',10); + + $nb=0; + + //---------------------------------------- + // foreach item + //---------------------------------------- + for ($i=0;$i< $nb_item;$i++) { + if ( strlen(trim(${'e_march'.$i}))== 0) continue; + /* check if amount are numeric and */ + if ( isNumber(${'e_march'.$i.'_sell'}) == 0 ) + throw new AcException('La fiche '.${'e_march'.$i}.'a un montant invalide ['.${'e_march'.$i}.']',6); + if ( isNumber(${'e_quant'.$i}) == 0 ) + throw new AcException('La fiche '.${'e_march'.$i}.'a une quantité invalide ['.${'e_quant'.$i}.']',7); + + /* check if all card has a ATTR_DEF_ACCOUNT*/ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${'e_march'.$i}); + if ( $fiche->empty_attribute(ATTR_DEF_ACCOUNT) == true) + throw new AcException('La fiche '.${'e_march'.$i}.'n\'a pas de poste comptable',8); + /* The account exists */ + $poste=new Acc_Account_Ledger($this->db,$fiche->strAttribut(ATTR_DEF_ACCOUNT)); + if ( $poste->load() == false ){ + throw new AcException('Pour la fiche '.${'e_march'.$i}.' le poste comptable ['.$poste->id.'n\'existe pas',9); + } + /* Check if the card belong to the ledger */ + $fiche=new fiche ($this->db); + $fiche->get_by_qcode(${'e_march'.$i}); + if ( $fiche->belong_ledger($p_jrn,'cred') !=1 ) + throw new AcException('La fiche '.${'e_march'.$i}.'n\'est pas accessible à ce journal',10); + $nb++; + } + if ( $nb == 0 ) + throw new AcException('Il n\'y a aucune marchandise',12); + } + + public function save() { + echo "

Acc_Ledger_Sold::save Not implemented

"; + } + + /*!\brief insert into the database, it calls first the verify function + *\param $p_array is usually $_POST or a predefined operation + *\return string + *\note throw an AcException + */ + public function insert($p_array) { + extract ($p_array); + $this->verify($p_array) ; + + $own=new own($this->db); + $group=NextSequence($this->db,"s_oa_group"); /* for analytic */ + $seq=NextSequence($this->db,'s_grpt'); + $this->id=$p_jrn; + $internal=$this->compute_internal_code($seq); + $cust=new fiche($this->db); + $cust->get_by_qcode($e_client); + $poste=$cust->strAttribut(ATTR_DEF_ACCOUNT); + bcscale(4); + try { + $tot_amount=0; + $tot_tva=0; + $tot_debit=0; + StartSql($this->db); + /* Save all the items without vat */ + for ($i=0;$i< $nb_item;$i++) { + if ( strlen(trim(${'e_march'.$i})) == 0 ) continue; + if ( ${'e_march'.$i.'_sell'} == 0 ) continue; + if ( ${'e_quant'.$i} == 0 ) continue; + + /* First we save all the items without vat */ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${"e_march".$i}); + $amount=bcmul(${'e_march'.$i.'_sell'},${'e_quant'.$i}); + $tot_amount+=$amount; + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$fiche->strAttribut(ATTR_DEF_ACCOUNT); + $acc_operation->amount=$amount; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='c'; + $acc_operation->periode=$periode; + $acc_operation->qcode=${"e_march".$i}; + if ( $amount < 0 ) $tot_debit=bcadd($tot_debit,abs($amount)); + + $j_id=$acc_operation->insert_jrnx(); + + /* Compute sum vat */ + $oTva=new Acc_Tva($this->db); + $idx_tva=${'e_march'.$i.'_tva_id'}; + $oTva->set_parameter('id',$idx_tva); + $oTva->load(); + $op_tva=new Acc_Compute(); + $op_tva->set_parameter("amount",$amount); + $op_tva->set_parameter('amount_vat_rate',$oTva->get_parameter('rate')); + $op_tva->compute_vat(); + $tva_item=$op_tva->get_parameter('amount_vat'); + + + if (isset($tva[$idx_tva] ) ) + $tva[$idx_tva]+=$tva_item; + else + $tva[$idx_tva]=$tva_item; + $tot_tva=round(bcadd($tva_item,$tot_tva),2); + + + /* Save the stock */ + /* if the quantity is < 0 then the stock increase (return of + * material) + */ + $nNeg=(${"e_quant".$i}<0)?-1:1; + + // always save quantity but in withStock we can find + // what card need a stock management + + InsertStockGoods($this->db,$j_id,${'e_march'.$i},$nNeg*${'e_quant'.$i},'c') ; + + if ( $own->MY_ANALYTIC != "nu" ) + { + // for each item, insert into operation_analytique */ + $op=new Anc_Operation($this->db); + $op->oa_group=$group; + $op->j_id=$j_id; + $op->oa_date=$e_date; + $op->oa_debit=($amount < 0 )?'t':'f'; + echo_debug(__FILE__.':'.__LINE__,"Description is $e_comm"); + $op->oa_description=FormatString($e_comm); + $op->save_form_plan($_POST,$i); + } + /* save into quant_sold */ + $r=ExecSql($this->db,"select insert_quant_sold ". + "('".$internal."',".$j_id.",'".${'e_march'.$i} + ."',".${'e_quant'.$i}.",".$amount. + ",".$tva_item. + ",".$idx_tva.",'".$e_client."')"); + + } // end loop : save all items + + + /* save total customer */ + $cust_amount=bcadd($tot_amount,$tot_tva); + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$poste; + $acc_operation->amount=$cust_amount; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='d'; + $acc_operation->periode=$periode; + $acc_operation->qcode=${"e_client"}; + if ( $cust_amount > 0 ) $tot_debit=bcadd($tot_debit,$cust_amount); + $acc_operation->insert_jrnx(); + + + /* save all vat + * $i contains the tva_id and value contains the vat amount + */ + foreach ($tva as $i => $value) { + $oTva=new Acc_Tva($this->db); + $oTva->set_parameter('id',$i); + $oTva->load(); + + $poste_vat=$oTva->get_side('c'); + + $cust_amount=bcadd($tot_amount,$tot_tva); + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->poste=$poste_vat; + $acc_operation->amount=$value; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->type='c'; + $acc_operation->periode=$periode; + if ($value < 0 ) $tot_debit=bcadd($tot_debit,abs($value)); + $acc_operation->insert_jrnx(); + + + } + + /* insert into jrn */ + $acc_operation=new Acc_Operation($this->db); + $acc_operation->date=$e_date; + $acc_operation->echeance=$e_ech; + $acc_operation->amount=abs(round($tot_debit,2)); + $acc_operation->desc=$e_comm; + $acc_operation->grpt=$seq; + $acc_operation->jrn=$p_jrn; + $acc_operation->periode=$periode; + $acc_operation->insert_jrn(); + ExecSql($this->db,"update jrn set jr_internal='".$internal."' where ". + " jr_grpt_id = ".$seq); + + /* Save the attachment */ + if ( isset ($_FILES)) { + if ( sizeof($_FILES) != 0 ) + save_upload_document($this->db,$seq); + } else + /* Generate an invoice and save it into the database */ + if ( isset($_POST['gen_invoice'])) { + echo $this->create_invoice($internal,$p_array); + echo '
'; + } + + } + catch (Exception $e) + { + echo ''. + 'Erreur dans l\'enregistrement '. + __FILE__.':'.__LINE__.' '. + $e->getMessage(); + Rollback($this->db); + exit(); + } + Commit($this->db); + return $internal; + } + + public function update() { + echo "

Acc_Ledger_Sold::update Not implemented

"; + } + + public function load() { + echo "

Acc_Ledger_Sold::load Not implemented

"; + + } + /*!\brief Show all the operation, propose a form to select the + *ledger and the periode + *\return none + *\note echo directly, there is no return with the html code + */ + public function show_ledger() { + $w=new widget("select"); + $User=new User($this->db); + // filter on the current year + $filter_year=" where p_exercice='".$User->get_exercice()."'"; + + $periode_start=make_array($this->db,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end",1); + $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); + $w->selected=$current; + + echo 'Période '.$w->IOValue("p_periode",$periode_start); + $wLedger=$this->select_ledger('VEN',3); + + if ( $wLedger == null ) + exit('Pas de journal disponible'); + echo 'Journal '.$wLedger->IOValue(); + echo JS_SEARCH_CARD; + echo JS_PROTOTYPE; + echo JS_AJAX_FICHE; + $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; + $this->type='VEN'; + $all=$this->get_all_fiche_def(); + + $w=new widget('js_search_only'); + $w->name='qcode'; + $w->value=$qcode; + $w->label=''; + $w->extra='filter'; + $w->extra2='QuickCode'; + $w->table=0; + $sp= new widget("span"); + echo $w->IOValue(); + + echo $sp->IOValue("qcode_label","",$qcode); + + echo widget::submit('gl_submit','Valider'); + // Show list of sell + // Date - date of payment - Customer - amount + if ( $current == -1) { + $cond=" and jr_tech_per in (select p_id from parm_periode where p_exercice='".$User->get_exercice()."')"; + } else { + $cond=" and jr_tech_per=".$current; + } + + $sql=SQL_LIST_ALL_INVOICE.$cond." and jr_def_id=".$this->id ; + $step=$_SESSION['g_pagesize']; + $page=(isset($_GET['offset']))?$_GET['page']:1; + $offset=(isset($_GET['offset']))?$_GET['offset']:0; + + /* security */ + $available_ledger=$User->get_ledger_sql(); + + $l=""; + // check if qcode contains something + if ( $qcode != "" ) + { + $qcode=Formatstring($qcode); + // add a condition to filter on the quick code + $l=" and jr_grpt_id in (select j_grpt from jrnx where j_qcode=upper('$qcode')) "; + $sql="where jrn_def_type='VEN' $cond $l and $available_ledger "; + } + + + list($max_line,$list)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + $bar=jrn_navigation_bar($offset,$max_line,$step,$page); + + echo "
$bar"; + echo '
'; + echo dossier::hidden(); + $hid=new widget("hidden"); + + echo $list; + if ( $max_line !=0 ) + echo widget::submit('paid','Mise à jour paiement'); + echo '
'; + echo "$bar
"; + + echo ''; + + + } + public function delete() { + echo "

Acc_Ledger_Sold::delete Not implemented

"; + } + /*!\brief display the form for entering data for invoice + *\param $p_array is null or you can put the predef operation or the $_POST + *\return string + */ + public function display_form($p_array=null) { + if ( $p_array != null ) extract($p_array); + + $user = new User($this->db); + + // The first day of the periode + $oPeriode=new Periode($this->db); + list ($l_date_start,$l_date_end)=$oPeriode->get_date_limit($user->get_periode()); + + $op_date=( ! isset($e_date) ) ?$l_date_start:$e_date; + $e_ech=(isset($e_ech))?$e_ech:""; + $e_comm=(isset($e_comm))?$e_comm:""; + + + $r=""; + + $r.=JS_INFOBULLE; + $r.=JS_SEARCH_CARD; + $r.=JS_SHOW_TVA; + $r.=JS_TVA; + $r.=JS_AJAX_FICHE; + + + $r.=dossier::hidden(); + $r.=widget::hidden('phpsessid',$_REQUEST['PHPSESSID']); + $r.="
"; + $r.="En-tête facture client "; + + $r.=''; + // Date + //-- + $Date=new widget("js_date"); + $Date->SetReadOnly(false); + $Date->table=1; + $Date->tabindex=1; + $r.=""; + $r.=$Date->IOValue("e_date",$op_date,"Date"); + // Payment limit + //-- + $Echeance=new widget("js_date"); + $Echeance->SetReadOnly(false); + $Echeance->table=1; + $Echeance->tabindex=2; + $label=widget::infobulle(4); + $r.=$Echeance->IOValue("e_ech",$e_ech,"Echeance ".$label); + + // Periode + //-- + $l_user_per=$user->get_periode(); + $def=(isset($periode))?$periode:$l_user_per; + $l_form_per=FormPeriode($this->db,$def,OPEN); + $r.=""; + $r.=""; + // Ledger (p_jrn) + //-- + $wLedger=$this->select_ledger('VEN',2); + + if ( $wLedger == null ) + exit('Pas de journal disponible'); + $wLedger->table=1; + $wLedger->javascript="onChange='update_predef(\"ven\",\"f\")'"; + $wLedger->label=" Journal ".widget::infobulle(2) ; + + $r.=$wLedger->IOValue(); + // Comment + //-- + $Commentaire=new widget("text"); + $Commentaire->table=0; + $Commentaire->SetReadOnly(false); + $Commentaire->size=80; + $Commentaire->tabindex=3; + $label=" Description ".widget::infobulle(1) ; + $r.=""; + $r.=''. + '"; + $r.=""; + + // Display the customer + //-- + $fiche='deb'; + echo_debug('user_form_ven.php',__LINE__,"Client Nombre d'enregistrement ".sizeof($fiche)); + // Save old value and set a new one + //-- + $e_client=( isset ($e_client) )?$e_client:""; + $e_client_label=" ";//str_pad("",100,"."); + + + // retrieve e_client_label + //-- + + if ( strlen(trim($e_client)) != 0) { + $fClient=new fiche($this->db); + $fClient->get_by_qcode($e_client); + $e_client_label=$fClient->strAttribut(ATTR_DEF_NAME).' '. + ' Adresse : '.$fClient->strAttribut(ATTR_DEF_ADRESS).' '. + $fClient->strAttribut(ATTR_DEF_CP).' '. + $fClient->strAttribut(ATTR_DEF_CITY).' '; + + + } + + $W1=new widget("js_search_only"); + $W1->label="Client ".widget::infobulle(0) ; + $W1->name="e_client"; + $W1->tabindex=3; + $W1->value=$e_client; + $W1->table=0; + $W1->extra=$fiche; // list of card + $W1->extra2="Recherche"; + $r.='"; + + $r.="
"; + $label=widget::infobulle(3); + $r.="Période comptable $label $def".$l_form_per; + $r.="
'.$label.''.$Commentaire->IOValue("e_comm",$e_comm)."
'.$W1->IOValue(); + $client_label=new widget("span"); + $client_label->table=0; + $r.=$client_label->IOValue("e_client_label",$e_client_label)."
"; + + // Record the current number of article + $Hid=new widget('hidden'); + $p_article= ( isset ($p_article))?$p_article:MAX_ARTICLE; + $r.=$Hid->IOValue("nb_item",$p_article); + $e_comment=(isset($e_comment))?$e_comment:""; + $r.="
"; + + // Start the div for item to sell + $r.="
"; + $r.='
Détail articles vendus'; + $r.=''; + $r.=''; + $r.=""; + $label=widget::infobulle(0) ; + $r.=""; + $r.=""; + $label=widget::infobulle(6) ; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + + $r.=''; + // For each article + //-- + for ($i=0;$i< MAX_ARTICLE;$i++) { + // Code id, price & vat code + //-- + $march=(isset(${"e_march$i"}))?${"e_march$i"}:""; + $march_sell=(isset(${"e_march".$i."_sell"}))?${"e_march".$i."_sell"}:""; + $march_tva_id=(isset(${"e_march$i"."_tva_id"}))?${"e_march$i"."_tva_id"}:""; + + + $march_label=" "; + // retrieve the tva label and name + //-- + if ( strlen(trim($march))!=0 ) { + $fMarch=new fiche($this->db); + $fMarch->get_by_qcode($march); + $march_label=$fMarch->strAttribut(ATTR_DEF_NAME); + if ( ! (isset(${"e_march$i"."_tva_id"}))) + $march_tva_id=$fMarch->strAttribut(ATTR_DEF_TVA); + } + // Show input + //-- + $W1=new widget("js_search_only"); + $W1->label=""; + $W1->name="e_march".$i; + $W1->value=$march; + $W1->table=1; + $W1->extra2="Recherche"; + $W1->extra='cred'; // credits + $W1->javascript=sprintf('onBlur="ajaxFid(\'%s\',\'%s\',\'%s\');compute_sold(%d)"', + $W1->name, + $W1->extra, //deb or cred + $_REQUEST['PHPSESSID'], + $i + ); + $W1->readonly=false; + $r.="".$W1->IOValue(); + // For computing we need some hidden field for holding the value + $r.=widget::hidden('tva_march'.$i,0); + $r.=widget::hidden('htva_march'.$i,0); + $r.=widget::hidden('tvac_march'.$i,0); + $r.=""; + $Span=new widget ("span"); + $Span->SetReadOnly(false); + // card's name, price + //-- + $r.='"; + // price + $Price=new widget("text"); + $Price->SetReadOnly(false); + $Price->table=1; + $Price->size=9; + $Price->javascript="onBlur='compute_sold($i)'"; + $r.=$Price->IOValue("e_march".$i."_sell",$march_sell); + // vat label + //-- + $select_tva=make_array($this->db,"select tva_id,tva_label from tva_rate order by tva_rate desc",0); + $Tva=new widget("select"); + $Tva->javascript="onChange=compute_sold($i)"; + $Tva->table=1; + $Tva->selected=$march_tva_id; + $r.=$Tva->IOValue("e_march$i"."_tva_id",$select_tva); + // vat amount (disable) + //-- + $wTva_amount=new widget("text"); + $wTva_amount->table=1; + $wTva_amount->readonly=true; + $wTva_amount->size=6; + $r.=$wTva_amount->IOValue("tva_march$i"."_show"); + + // quantity + //-- + $quant=(isset(${"e_quant$i"}))?${"e_quant$i"}:"1"; + $Quantity=new widget("text"); + $Quantity->SetReadOnly(false); + $Quantity->table=1; + $Quantity->size=9; + $Quantity->javascript="onChange=compute_sold($i)"; + $r.=$Quantity->IOValue("e_quant".$i,$quant); + + $r.=""; + } + + + + $r.="
Code $labelDénomination$label prix / unité htva tvamontant total tvaquantité
'.$Span->IOValue("e_march".$i."_label",$march_label)."
"; + $r.='
'; + $r.=widget::button('act','Actualiser','onClick="compute_all_sold();"'); + $r.="
"; + + $r.='
'; + $r.='
0.0'; + $r.='
0.0'; + $r.='
0.0'; + $r.="
"; + + + + $r.='
'; + $r.='
Total HTVA'; + $r.='
Total TVA'; + $r.='
Total TVAC'; + $r.="
"; + + $r.="
"; + // Set correctly the REQUEST param for jrn_type + $r.=widget::hidden('jrn_type','VEN'); + + $r.=widget::button('add_item','Ajout article', ' onClick="ledger_sold_add_row()"'); + $r.=widget::submit("view_invoice","Enregistrer"); + $r.=widget::reset('Effacer '); + + $r.="
"; + return $r; + } + /*!\brief show the summary of the operation and propose to save it + *\param array contains normally $_POST. It proposes also to save + * the Analytic accountancy + *\return string + */ + function confirm($p_array) { + extract ($p_array); + $this->verify($p_array) ; + + // to show a select list for the analytic + // if analytic is op (optionnel) there is a blank line + $own = new Own($this->db); + + bcscale(4); + $client=new fiche($this->db); + $client->get_by_qcode($e_client,true); + + $client_name=$client->getName(). + ' '.$client->strAttribut(ATTR_DEF_ADRESS).' '. + $client->strAttribut(ATTR_DEF_CP).' '. + $client->strAttribut(ATTR_DEF_CITY); + $lPeriode=new Periode($this->db); + $date_limit=$lPeriode->get_date_limit($periode); + $r=""; + $r.="
"; + $r.="En-tête facture client "; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.='
Date '.$e_date.'Echeance '.$e_ech.' Période Comptable '.$date_limit['p_start'].'-'.$date_limit['p_end'].'
Journal '.$this->get_name().'
Description '.$e_comm.'
Client '.$e_client.':'.$client_name.'
'; + $r.='
'; + $r.='
Détail articles vendus'; + $r.=''; + $r.=''; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + $r.=""; + + $r.=''; + $r.=''; + $r.=($own->MY_ANALYTIC!='nu')?'':''; + $r.=''; + $tot_amount=0.0; + $tot_tva=0.0; + for ($i = 0; $i < $nb_item;$i++) { + if ( strlen(trim(${"e_march".$i})) == 0 ) continue; + + /* retrieve information for card */ + $fiche=new fiche($this->db); + $fiche->get_by_qcode(${"e_march".$i}); + $fiche_name=$fiche->getName(); + $oTva=new Acc_Tva($this->db); + $idx_tva=${"e_march".$i."_tva_id"}; + + $oTva->set_parameter('id',$idx_tva); + $oTva->load(); + $op=new Acc_Compute(); + $amount=bcmul(${"e_march".$i."_sell"},${'e_quant'.$i}); + + $op->set_parameter("amount",$amount); + $op->set_parameter('amount_vat_rate',$oTva->get_parameter('rate')); + $op->compute_vat(); + $tva_item=$op->get_parameter('amount_vat'); + if (isset($tva[$idx_tva] ) ) + $tva[$idx_tva]+=$tva_item; + else + $tva[$idx_tva]=$tva_item; + $tot_amount=round(bcadd($tot_amount,$amount),2); + $tot_tva=round(bcadd($tva_item,$tot_tva),2); + $r.=''; + $r.=''; + $r.=''; + $r.=''; + $r.=''; + + $r.=''; + $r.=''; + $r.=''; + + // encode the pa + if ( $own->MY_ANALYTIC!='nu') // use of AA + { + // show form + $anc_op=new Anc_Operation($this->db); + $null=($own->MY_ANALYTIC=='op')?1:0; + $r.=''; + } + + + $r.=''; + + } + + + $r.='
CodeDénominationprixtvaquantité Montant TVAMontant HTVACompt. Analytique
'; + $r.=${"e_march".$i}; + $r.=''; + $r.=$fiche_name; + $r.=''; + $r.=${"e_march".$i."_sell"}; + $r.=''; + $r.=${"e_quant".$i}; + $r.=''; + $r.=$oTva->get_parameter('label'); + $r.=''; + $r.=$tva_item; + $r.=''; + $r.=$amount; + $r.=''; + $p_mode=1; + $r.=$anc_op->display_form_plan($p_array,$null,$p_mode,$i,$amount); + $r.='
'; + if ( $own->MY_ANALYTIC!='nu') // use of AA + $r.=''; + $r.='
'; + $r.=$this->extra_info(); + + + $r.='
'; + $r.='
Totaux'; + $tot=round(bcadd($tot_amount,$tot_tva),2); + $r.='
'; + $r.='
Total HTVA'; + + foreach ($tva as $i=>$value) { + $oTva->set_parameter('id',$i); + $oTva->load(); + + $r.='
TVA à '.$oTva->get_parameter('label'); + } + $r.='
Total TVA'; + $r.='
Total TVAC'; + $r.='
'; + + $r.='
'; + $r.='
'.$tot_amount.''; + + foreach ($tva as $i=>$value) { + $r.='
'.$tva[$i]; + } + $r.='
'.$tot_tva.''; + $r.='
'.$tot.''; + $r.="
"; + + + + $r.='
'; + $r.="
"; + + /* Add hidden */ + $r.=widget::hidden('e_client',$e_client); + $r.=widget::hidden('nb_item',$nb_item); + $r.=widget::hidden('p_jrn',$p_jrn); + $r.=widget::hidden('periode',$periode); + $r.=widget::hidden('e_comm',$e_comm); + $r.=widget::hidden('e_date',$e_date); + $r.=widget::hidden('e_ech',$e_ech); + $r.=widget::hidden('jrn_type',$jrn_type); + for ($i=0;$i < $nb_item;$i++) { + $r.=widget::hidden("e_march".$i,${"e_march".$i}); + $r.=widget::hidden("e_march".$i."_sell",${"e_march".$i."_sell"}); + $r.=widget::hidden("e_march".$i."_tva_id",${"e_march".$i."_tva_id"}); + $r.=widget::hidden("e_quant".$i,${"e_quant".$i}); + } + + return $r; + } + /*!\brief the function extra info allows to + * - add a attachment + * - generate an invoice + * - insert extra info + *\return string + */ + public function extra_info() { + $r=""; + $r.='
'; + $r.='
Facturation'; + // check for upload piece + $file=new widget("file"); + $file->table=0; + $r.="Ajoutez une pièce justificative "; + $r.=$file->IOValue("pj",""); + + if ( CountSql($this->db, + "select md_id,md_name from document_modele where md_type=4") > 0 ) + { + + + $r.='ou générer une facture '; + // We propose to generate the invoice and some template + $doc_gen=new widget("select"); + $doc_gen->name="gen_doc"; + $doc_gen->value=make_array($this->db, + "select md_id,md_name from document_modele where md_type=4"); + $r.=$doc_gen->IOValue().'
'; + } + $r.='
'; + $obj=new widget('TEXT'); + $r.='Numero de bon de commande : '.$obj->IOValue('bon_comm').'
'; + $r.='Autre information : '.$obj->IOValue('other_info').'
'; + + $r.="
"; + $r.='
'; + return $r; + } + /*!\brief create the invoice and saved it as attachment to the + *operation, + *\param $internal is the internal code + *\param $p_array is normally the $_POST + *\return a string + */ + function create_invoice($internal,$p_array) { + extract ($p_array); + $doc=new Document($this->db); + $doc->f_id=$e_client; + $doc->md_id=$gen_doc; + $doc->ag_id=0; + $str_file=$doc->Generate(); + // Move the document to the jrn + $doc->MoveDocumentPj($internal); + // Update the comment with invoice number + $sql="update jrn set jr_comment='Facture ".$doc->d_number."' where jr_internal='$internal'"; + ExecSql($this->db,$sql); + return '

'.$str_file.'

'; + + } + + + /*!\brief update the payment + */ + function show_unpaid() { + // Show list of unpaid sell + // Date - date of payment - Customer - amount + // Nav. bar + $step=$_SESSION['g_pagesize']; + $page=(isset($_GET['offset']))?$_GET['page']:1; + $offset=(isset($_GET['offset']))?$_GET['offset']:0; + + + $sql=SQL_LIST_UNPAID_INVOICE_DATE_LIMIT." and jr_def_id=".$this->id ; + list($max_line,$list)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + $sql=SQL_LIST_UNPAID_INVOICE." and jr_def_id=".$this->id ; + list($max_line2,$list2)=ListJrn($this->db,$this->id,$sql,null,$offset,1); + + // Get the max line + $m=($max_line2>$max_line)?$max_line2:$max_line; + $bar2=jrn_navigation_bar($offset,$m,$step,$page); + + echo $bar2; + echo '

Echeance dépassée

'; + echo $list; + echo '

Non Payée

'; + echo $list2; + echo $bar2; + // Add hidden parameter + $hid=new widget("hidden"); + + echo '
'; + + if ( $m != 0 ) + echo widget::submit('paid','Mise à jour paiement'); + + + } + /*!\brief + *\param + *\return + *\note + *\see + *\todo + */ + static function test_me() { + } + +} + + + + + diff --git a/include/class_acc_operation.php b/include/class_acc_operation.php index 94fb192c5..8c146d582 100644 --- a/include/class_acc_operation.php +++ b/include/class_acc_operation.php @@ -65,16 +65,25 @@ var $jr_id; /*!< pk of jrn */ function insert_jrnx() { if ( $this->poste == "") return true; - + /* for negative amount the operation is reversed */ + if ( $this->amount < 0 ) { + $this->type=($this->type=='d')?'c':'d'; + } + $this->amount=abs($this->amount); $debit=($this->type=='c')?'false':'true'; - - $sql=sprintf("select insert_jrnx - ('%s',abs(%.2f),%d,%d,%d,%s,'%s',%d,upper('%s'))", - $this->date,round($this->amount,2), - $this->poste,$this->grpt,$this->jrn, - $debit,$this->user,$this->periode,$this->qcode); - - $Res=ExecSql($this->db,$sql); + + $Res=ExecSqlParam($this->db,"select insert_jrnx + ($1::text,abs($2)::numeric,$3::poste_comptable,$4::integer,$5::integer,$6::bool,$7::text,$8::integer,upper($9))", + array( + $this->date, + round($this->amount,2), + $this->poste, + $this->grpt, + $this->jrn, + $debit, + $this->user, + $this->periode, + $this->qcode)); if ( $Res==false) return $Res; $this->jrnx_id=GetSequence($this->db,'s_jrn_op'); return $this->jrnx_id; @@ -90,35 +99,31 @@ var $jr_id; /*!< pk of jrn */ */ function insert_jrn() -{ - $p_comment=FormatString($this->desc); + { + $p_comment=FormatString($this->desc); + + $diff=getDbValue($this->db,"select check_balance ($1)",array($this->grpt)); + if ( $diff != 0 ) { + + echo "Erreur : balance incorrecte :diff = $diff"; + return false; + } + $echeance=( isset( $this->echeance) && strlen(trim($this->echeance)) != 0)?$this->echeance:null; - // retrieve the value from jrnx - // - $montant_deb=getDBValue($this->db,"select sum(j_montant) from jrnx where j_debit='t' and j_grpt=".$this->grpt); - $montant_cred=getDBValue($this->db,"select sum(j_montant) from jrnx where j_debit='f' and j_grpt=".$this->grpt); - echo_debug('InsertJrn',__LINE__,"debit = $montant_deb credit = $montant_cred "); - - $amount=-1.0000; - if ( $montant_deb == $montant_cred ) { - $amount=$montant_deb; - } else { - echo "Erreur : balance incorrecte : débit = $montant_deb crédit = $montant_cred"; - return false; - } - // if amount == -1then the triggers will throw an error - // - $sql=sprintf("insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_ech,jr_grpt_id,jr_tech_per) - values ( %d,abs(%.2f),'%s',to_date('%s','DD.MM.YYYY'),null,%d,%d)", - $this->jrn, $amount,$p_comment,$this->date,$this->grpt,$this->periode); - - - $Res=ExecSql($this->db,$sql); - if ( $Res == false) return false; - $this->jr_id=GetSequence($this->db,'s_jrn'); - return $this->jr_id; -} + // if amount == -1then the triggers will throw an error + // + $Res=ExecSqlParam($this->db,"insert into jrn (jr_def_id,jr_montant,jr_comment,". + "jr_date,jr_ech,jr_grpt_id,jr_tech_per) values (". + "$1,$2,$3,". + "to_date($4,'DD.MM.YYYY'),to_date($5,'DD.MM.YYYY'),$6,$7)", + array ($this->jrn, $this->amount,$p_comment, + $this->date,$echeance,$this->grpt,$this->periode) + ); + if ( $Res == false) return false; + $this->jr_id=GetSequence($this->db,'s_jrn'); + return $this->jr_id; + } /*! * \brief Return the internal value, the property jr_id must be set before * @@ -150,7 +155,7 @@ function get_internal() { */ function get_jrnx_detail() { if ( $this->jr_id==0 ) return; - $sql=" select j_date,j_qcode,j_poste,j_montant,jr_internal,case when j_debit = 'f' then 'C' else 'D' end as debit, + $sql=" select jr_date,j_qcode,j_poste,j_montant,jr_internal,case when j_debit = 'f' then 'C' else 'D' end as debit,jr_comment as description, vw_name,pcm_lib from jrnx join jrn on (jr_grpt_id=j_grpt) join tmp_pcmn on (j_poste=pcm_val) left join vw_fiche_attr on (j_qcode=quick_code) diff --git a/include/class_acc_parm_code.php b/include/class_acc_parm_code.php new file mode 100644 index 000000000..da754818d --- /dev/null +++ b/include/class_acc_parm_code.php @@ -0,0 +1,175 @@ +db=$p_cn; + $this->p_code=$p_id; + if ( $p_id != -1 ) + $this->load(); + } +/*! + ************************************************** + * \brief + * Load all parmCode + * return an array of Acc_Parm_Code object + * + * \return array + */ + + function load_all() { + $sql="select * from parm_code order by p_code"; + $Res=ExecSql($this->db,$sql); + $r= pg_fetch_all($Res); + $idx=0; + $array=array(); + + if ( $r === false ) return null; + foreach ($r as $row ) + { + $o=new Acc_Parm_Code($this->db,$row['p_code']); + $array[$idx]=$o; + $idx++; + } + + return $array; + } + /*! + ************************************************** + * \brief update a parm_object into the database + * p_code is _not_ updatable + * \return + * nothing + */ + function save() + { + // if p_code=="" nothing to save + if ( $this->p_code== -1) return; + // check if the account exists + $acc=new Acc_Account_Ledger($this->db,$this->p_value); + if ( $acc->load() == false ) { + echo ""; + } else { + $this->p_comment=FormatString($this->p_comment); + $this->p_value=FormatString($this->p_value); + $this->p_code=FormatString($this->p_code); + $sql="update parm_code set ". + "p_comment='".$this->p_comment."' ". + ",p_value='".$this->p_value."' ". + "where p_code='".$this->p_code."'"; + $Res=ExecSql($this->db,$sql); + } + } +/*! + ************************************************** + * \brief Display an object, with the tag + * + * \return + * string + */ + function display() + { + $r=""; + $r.= ''.$this->p_code.''; + $r.= ''.$this->p_comment.''; + $r.= ''.$this->p_value.''; + + return $r; + } +/*! + ************************************************** + * \brief Display a form to enter info about + * a parm_code object with the tag + * + * \return string + */ + function form() + { + $comment=new widget("text"); + $comment->name='p_comment'; + $comment->value=$this->p_comment; + $comment->size=45; + $value=new widget("js_search_poste"); + $value->name='p_value'; + $value->value=$this->p_value; + $value->size=7; + $poste=new widget("text"); + $poste->SetReadOnly(true); + $poste->size=strlen($this->p_code)+1; + $poste->name='p_code'; + $poste->value=$this->p_code; + $r=""; + $r.=JS_SEARCH_POSTE; + $r.=''; + $r.=' Code '; + $r.= ''.$poste->IOValue().''; + $r.=''; + $r.=''; + $r.=' Commentaire '; + $r.= ''.$comment->IOValue().''; + $r.=''; + $r.=''; + $r.=' Poste comptable '; + $r.= ''.$value->IOValue(); + $r.=''; + $r.=''; + + return $r; + + } + +/*! + ************************************************** + * \brief + * Complete a parm_code object thanks the p_code + * + * \return array + */ + + function load() { + if ( $this->p_code == -1 ) return "p_code non initialisé"; + $sql='select * from parm_code where p_code=$1 '; + + $Res=ExecSqlParam($this->db,$sql,array($this->p_code)); + + if ( pg_NumRows($Res) == 0 ) return 'INCONNU'; + $row= pg_fetch_array($Res,0); + $this->p_value=$row['p_value']; + $this->p_comment=$row['p_comment']; + + } + +} diff --git a/include/class_acc_report.php b/include/class_acc_report.php new file mode 100644 index 000000000..29e1add7e --- /dev/null +++ b/include/class_acc_report.php @@ -0,0 +1,405 @@ +db=$p_cn; + $this->id=$p_id; + $this->name='Nouveau'; + $this->aAcc_Report_row=null; + } + /*!\brief Return the report's name + */ + function get_name() { + $ret=execSql($this->db,"select fr_label from formdef where fr_id=".$this->id); + if (pg_NumRows($ret) == 0) return $this->name; + $a=pg_fetch_array($ret,0); + $this->name=$a['fr_label']; + return $this->name; + } + /*!\brief return all the row and parse formula + * from a report + * \param $p_start start periode + * \param $p_end end periode + * \param $p_type_date type of the date : periode or calendar + */ + + function get_row($p_start,$p_end,$p_type_date) { + + $Res=ExecSql($this->db,"select fo_id , + fo_fr_id, + fo_pos, + fo_label, + fo_formula, + fr_label from form + inner join formdef on fr_id=fo_fr_id + where fr_id =".$this->id. + "order by fo_pos"); + $Max=pg_NumRows($Res); + if ($Max==0) { $this->row=0;return null;} + $col=array(); + for ($i=0;$i<$Max;$i++) { + $l_line=pg_fetch_array($Res,$i); + $col[]=ParseFormula($this->db, + $l_line['fo_label'], + $l_line['fo_formula'], + $p_start, + $p_end, + true, + $p_type_date + ); + + } //for ($i + $this->row=$col; + return $col; + } +/*! + * \brief Display a form for encoding a new report or update one + * + * \param $p_line number of line + * + */ +function form($p_line=0) { + + $r=""; + if ($p_line == 0 ) $p_line=count($this->aAcc_Report_row); + $r.= dossier::hidden(); + $r.= widget::hidden('line',$p_line); + $r.= widget::hidden('fr_id',$this->id); + $wForm=new widget("text"); + $r.="Nom du rapport : "; + $r.=$wForm->IOValue('form_nom',$this->name); + + $r.= ''; + $r.= ""; + $r.= ""; + $r.= ""; + $r.= ""; + + $r.= ''; + $wName=new widget("text"); + $wName->size=50; + $wPos=new widget("text"); + $wPos->size=3; + $wForm=new widget("text"); + $wForm->size=35; + for ( $i =0 ; $i < $p_line;$i++) { + + $r.= ""; + + $r.= "'; + + + $r.= "'; + + $r.= "'; + + $r.=''; + + + $r.= ""; + } + + $r.= "
Position Texte Formule
"; + $wPos->value=( isset($this->aAcc_Report_row[$i]->fo_pos))?$this->aAcc_Report_row[$i]->fo_pos:$i+1; + $r.=$wPos->IOValue("pos".$i); + $r.= '"; + $wName->value=( isset($this->aAcc_Report_row[$i]->fo_label))?$this->aAcc_Report_row[$i]->fo_label:""; + $r.=$wName->IOValue("text".$i); + $r.= '"; + $wForm->value=( isset($this->aAcc_Report_row[$i]->fo_formula))?$this->aAcc_Report_row[$i]->fo_formula:""; + $r.=$wForm->IOValue("form".$i); + + $r.= ''; + $search=new widget('js_search_poste_only'); + $search->extra="form".$i; + $r.=$search->IOValue(); + $r.='
"; + $wButton=new widget("button"); + $wButton->javascript=" rapport_add_row('".dossier::id()."','".$_REQUEST['PHPSESSID']."')"; + $wButton->label="Ajout d'une ligne"; + $r.=$wButton->IOValue(); + return $r; + +} + /*!\brief save into form and form_def + */ + function save() { + + if ( strlen(trim($this->name)) == 0 ) + return; + if ( $this->id == 0 ) + $this->insert(); + else + $this->update(); + + } + function insert() { + try { + startSql($this->db); + $ret_sql=ExecSqlParam($this->db, + "insert into formdef (fr_label) values($1) returning fr_id", + array($this->name) + ); + $this->id=pg_fetch_result($ret_sql,0,0); + $ix=1; + foreach ( $this->aAcc_Report_row as $row) { + if ( strlen(trim($row->get_parameter("name"))) != 0 && + strlen(trim($row->get_parameter("formula"))) != 0 ) + { + $ix=($row->get_parameter("position")!="")?$row->get_parameter("position"):$ix; + $row->set_parameter("position",$ix); + $ret_sql=ExecSqlParam($this->db, + "insert into form (fo_fr_id,fo_pos,fo_label,fo_formula)". + " values($1,$2,$3,$4)", + array($this->id, + $row->fo_pos, + $row->fo_label, + $row->fo_formula) + ); + } + } + + } catch (Exception $e) { + Rollback($this->db); + echo $e->getMessage(); + } + Commit($this->db); + + } + function update() { + try { + startSql($this->db); + $ret_sql=ExecSqlParam($this->db, + "update formdef set fr_label=$1 where fr_id=$2", + array($this->name,$this->id)); + $ret_sql=ExecSqlParam($this->db, + "delete from form where fo_fr_id=$1", + array($this->id)); + $ix=0; + + foreach ( $this->aAcc_Report_row as $row) { + if ( strlen(trim($row->get_parameter("name"))) != 0 && + strlen(trim($row->get_parameter("formula"))) != 0 ) + { + + $ix=($row->get_parameter("position")!="")?$row->get_parameter("position"):$ix; + $row->set_parameter("position",$ix); + $ret_sql=ExecSqlParam($this->db, + "insert into form (fo_fr_id,fo_pos,fo_label,fo_formula)". + " values($1,$2,$3,$4)", + array($this->id, + $row->fo_pos, + $row->fo_label, + $row->fo_formula) + ); + } + } + + + }catch (Exception $e) { + Rollback($this->db); + echo $e->getMessage(); + } + Commit($this->db); + } + /*!\brief fill a form thanks an array, usually it is $_POST + *\param $p_array keys = fr_id, form_nom,textXX, formXX, posXX where + XX is an number + */ + function from_array($p_array) { + $this->id=(isset($p_array['fr_id']))?$p_array['fr_id']:0; + $this->name=(isset($p_array['form_nom']))?$p_array['form_nom']:""; + $ix=0; + + $rr=new Acc_Report_Row(); + $rr->set_parameter("form_id",$this->id); + $rr->set_parameter('database',$this->db); + + $this->aAcc_Report_row=$rr->from_array($p_array); + + + } + /*!\brief the fr_id MUST be before called + */ + + + function load() { + $sql=ExecSqlParam($this->db, + "select fr_label from formdef where fr_id=$1", + array($this->id)); + if ( pg_NumRows($sql) == 0 ) return; + $this->name=pg_fetch_result($sql,0,0); + $sql=ExecSqlParam($this->db, + "select fo_id,fo_pos,fo_label,fo_formula ". + " from form ". + " where fo_fr_id=$1 order by fo_pos", + array($this->id)); + $f=pg_fetch_all($sql); + $array=array(); + if ( ! empty($f) ) { + foreach ($f as $r) { + $obj=new Acc_Report_Row(); + $obj->set_parameter("name",$r['fo_label']); + $obj->set_parameter("id",$r['fo_id']); + $obj->set_parameter("position",$r['fo_pos']); + $obj->set_parameter("formula",$r['fo_formula']); + $obj->set_parameter('database',$this->db); + $obj->set_parameter('form_id',$this->id); + $array[]=clone $obj; + } + } + $this->aAcc_Report_row=$array; + + } + function delete() { + $ret=ExecSqlParam($this->db, + "delete from formdef where fr_id=$1", + array($this->id) + ); + } + /*!\brief get a list from formdef of all defined form + * + *\return array of object rapport + * + */ + function get_list() + { + $sql="select fr_id,fr_label from formdef order by fr_label"; + $ret=ExecSql($this->db,$sql); + if ( pg_NumRows($ret) == 0 ) return array(); + $array=pg_fetch_all($ret); + $obj=array(); + foreach ($array as $row) { + $tmp=new Acc_Report($this->db); + $tmp->id=$row['fr_id']; + $tmp->name=$row['fr_label']; + $obj[]=clone $tmp; + } + return $obj; + } + /*!\brief To make a SELECT button with the needed value, it is used + *by the SELECT widget + *\return string with html code + */ + function make_array() { + $sql=make_array($this->db,"select fr_id,fr_label from formdef order by fr_label"); + return $sql; + } + + + /*!\brief write to a file the definition of a report + * \param p_file is the file name + */ + function export($p_file) { + $this->load(); + + fputcsv($p_file,array($this->name)); + + foreach ($this->aAcc_Report_row as $row) { + fputcsv($p_file,array($row->get_parameter("name"), + $row->get_parameter('position'), + $row->get_parameter('formula')) + ); + } + + } + /*!\brief upload a definition of a report and insert it into the + * database + */ + function upload() { + if ( empty ($_FILES) ) return; + if ( strlen(trim($_FILES['report']['tmp_name'])) == 0 ) { + echo ''; + return; + } + $file_report=tempnam('tmp','file_report'); + if ( move_uploaded_file($_FILES['report']['tmp_name'],$file_report)) { + // File is uploaded now we can try to parse it + $file=fopen($file_report,'r'); + $data=fgetcsv($file); + if ( empty($data) ) return; + $this->name=$data[0]; + $array=array(); + while($data=fgetcsv($file)) { + $obj=new Acc_Report_Row(); + $obj->set_parameter("name",$data[0]); + $obj->set_parameter("id",0); + $obj->set_parameter("position",$data[1]); + $obj->set_parameter("formula",$data[2]); + $obj->set_parameter('database',$this->db); + $obj->set_parameter('form_id',0); + $array[]=clone $obj; + } + $this->aAcc_Report_row=$array; + $this->insert(); + } + } + + function test_me() { + $cn=DbConnect(dossier::id()); + $a=new Acc_Report($cn); + print_r($a->get_list()); + $array=array("text0"=>"test1", + "form0"=>"7%", + "text1"=>"test2", + "form1"=>"6%", + "fr_id"=>110, + "form_nom"=>"Tableau" + ); + $a->from_array($array); + print_r($a); + echo '
'; + echo $a->form(10); + echo ''; + /* Add a line should be a javascript see comptanalytic */ + // $r.= ''; + echo ''; + + echo "
"; + if ( isset ($_POST['update'])) { + $b=new Acc_Report($cn); + $b->from_array($_POST); + echo '
'; + print_r($b); + } + } +} + +?> diff --git a/include/class_acc_report_row.php b/include/class_acc_report_row.php new file mode 100644 index 000000000..eb5166788 --- /dev/null +++ b/include/class_acc_report_row.php @@ -0,0 +1,111 @@ +"fo_label", + "formula"=>"fo_formula", + "id"=>"fo_id", + "position"=>"fo_pos", + "form_id"=>"fo_fr_id", + "database"=>"db" + ); + function __construct ($p_name=null,$p_formula=null) { + $this->set_parameter("id",0); + + $this->set_parameter("name",$p_name); + $this->set_parameter("formula",$p_formula); + } + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__."$p_string ".'Erreur attribut inexistant'); + + + } + public function get_info() { + return var_export(self::$variable,true); + } + /*!\brief Convert an array into an array of row_rapport object + * the fo_id is 0, position = 0, the fo_frd_id (form_id) is + * the one of the current object, the db is also the current one + *\param $p_array contains the value + *\return an array of Acc_Report_Row object + */ + public function from_array($p_array) { + extract ($p_array); + $ret=array(); + $ix=0; + $found=0; + foreach ( $p_array as $r) { + + if ( isset(${'form'.$ix}) && isset ( ${'text'.$ix} )) { + $obj=new Acc_Report_Row( ${'text'.$ix},${'form'.$ix}); + if ( isset(${'pos'.$ix}) && isNumber(${'pos'.$ix})==1 ) + $obj->set_parameter("position",$ix); + else { + $obj->set_parameter("position",$found); + $found++; + } + $obj->fo_id=0; + $obj->fo_fr_id=$this->fo_fr_id; + $obj->db=$this->db; + + $ret[]=clone $obj; + } + $ix++; + + } + return $ret; + } + function test_me() + { + $cn=DbConnect(dossier::id()); + $a=new Acc_Report_Row(); + $array=array("text0"=>"test1", + "form0"=>"7%", + "text1"=>"test2", + "form1"=>"6%" + ); + + $b=$a->from_array($array); + print_r($b); + echo $a->get_info(); + } +} diff --git a/include/class_acc_tva.php b/include/class_acc_tva.php new file mode 100644 index 000000000..97f675544 --- /dev/null +++ b/include/class_acc_tva.php @@ -0,0 +1,179 @@ +"tva_id", + "label"=>"tva_label", + "rate"=>"tva_rate", + "comment"=>"tva_comment", + "account"=>"tva_poste"); + +*/ +class Acc_Tva +{ + private static $cn; /*!< $cn database connection */ + private static $variable=array("id"=>"tva_id", + "label"=>"tva_label", + "rate"=>"tva_rate", + "comment"=>"tva_comment", + "account"=>"tva_poste"); + + function __construct ($p_init) { + $this->cn=$p_init; + $this->tva_id=0; + $this->poste=""; + } + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + + echo (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + + + } + public function get_info() { return var_export(self::$variable,true); } + + public function verify() { + // Verify that the elt we want to add is correct + } + public function save() { + + if ( $this->tva_id == 0 ) + $this->insert(); + else + $this->update(); + } + + public function insert() { + if ( $this->verify() != 0 ) return; + $sql="select tva_insert($1,$2,$3,$4)"; + + $res=ExecSqlParam($this->cn, + $sql, + array($this->tva_label, + $this->tva_rate, + $this->tva_comment, + $this->tva_poste) + ); + $this->tva_id=GetSequence($this->cn,'s_tva'); + $err=pg_fetch_result($res); + } + + public function update() { + if ( $this->verify() != 0 ) return; + $sql="update tva_rate set tva_label=$1,tva_rate=$2,tva_comment=$3,tva_poste=$4 ". + " where tva_id = $5"; + $res=ExecSqlParam($this->cn, + $sql, + array($this->tva_label, + $this->tva_rate, + $this->tva_comment, + $this->tva_poste, + $this->tva_id) + ); + + } + + public function load() { + $sql="select tva_label,tva_rate, tva_comment,tva_poste from tva_rate where tva_id=$1"; + $res=ExecSqlParam($this->cn, + $sql, + array($this->tva_id) + ); + + if ( pg_NumRows($res) == 0 ) return; + + $row=pg_fetch_array($res,0); + foreach ($row as $idx=>$value) { $this->$idx=$value; } + } + /*!\brief get the account of the side (debit or credit) + *\param $p_side is d or C + *\return the account to use + *\note call first load if tva_poste is empty + */ + public function get_side($p_side) { + if ( strlen($this->tva_poste) == 0 ) $this->load(); + list($deb,$cred)=split(",",$this->tva_poste); + switch ($p_side) { + case 'd': + return $deb; + break; + case 'c': + return $cred; + break; + default: + throw (new Exception (__FILE__.':'.__LINE__." param est d ou c, on a recu [ $p_side ]")); + } + } + public function delete() { + $sql="delete from tva_rate where tva_id=$1"; + $res=ExecSqlParam($this->cn,$sql,array($this->tva_id)); + } + /*!\brief + *\param + *\return + *\note + *\see + *\todo + */ + static function test_me() { + $cn=DbConnect(dossier::id()); + $a=new Acc_Tva($cn); + echo $a->get_info(); + $a->set_parameter("id",1); + $a->load(); + $a->set_parameter("id",0); + $a->set_parameter("rate","0.2222"); + $a->set_parameter("label","test"); + $a->save(); + $a->load(); + print_r($a); + + $a->set_parameter("comment","un cht'it test"); + $a->save(); + $a->load(); + print_r($a); + + $a->delete(); + } + +} + +/* test::test_me(); */ diff --git a/include/class_action.php b/include/class_action.php index 20271f4a8..16b85c26e 100644 --- a/include/class_action.php +++ b/include/class_action.php @@ -156,8 +156,8 @@ class action // Description $desc=new widget('RICHTEXT'); - $desc->width=500; - $desc->heigh=250; + $desc->width=700; + $desc->heigh=100; $desc->name="ag_comment"; $desc->readonly=$readonly; /*!\todo Formatstring and urldecode ?? */ @@ -251,7 +251,7 @@ class action // $this->GetAgRef("ag_ref_ag_id").""; $lag_ref_ag_id=''. + $this->ag_ref_ag_id.'&'.dossier::get().'">'. getDbValue($this->db,"select ag_ref from action_gestion where ag_id=".$this->ag_ref_ag_id). ""; } @@ -277,7 +277,7 @@ class action // Preparing the return string $r=""; $r.=JS_SEARCH_CARD; - $r.= '

Date :'.$date->IOValue()." Reference ".$str_ag_ref; + $r.= '

Date :'.$date->IOValue()."
Reference ".$str_ag_ref; $r.="  Concerne :".$lag_ref_ag_id. ' Type d\' action'; echo_debug('class_action',__LINE__,"str_doc_type $str_doc_type"); @@ -290,7 +290,6 @@ class action $r.= "

"; $r.="Expéditeur : ".$w->IOValue(); $r.=$sp->IOValue('qcode_exp_label',$qcode_exp_label).""; - $r.="Destinataire :".$wdest->IOValue(); $r.=$spdest->IOValue('qcode_dest_label',$qcode_dest_label).""; @@ -299,8 +298,8 @@ class action echo_debug('class_action',__LINE__,' ag_id is '.$this->ag_id); $r.= "

Titre : ".$title->IOValue(); - $r.= $doc_ref; $r.= "

".$desc->IOValue()."

"; + $r.= $doc_ref; //hidden $r.="

"; @@ -599,7 +598,7 @@ class action if ( $this->gen == 'on' ) { $r.=''; - $r.="Sauver le document gnr :"; + $r.="Sauver le document généré :"; $r.=$str_file; $checkbox=new widget("checkbox"); $checkbox->name="save_generate"; @@ -669,7 +668,7 @@ class action 'Date'. ''.$image_desc.''; $sort_exp=''.$image_asc.''. - 'Expditeur'. + 'Expéditeur'. ''.$image_desc.''; $sort_dest=''.$image_asc.''. 'Destinataire'. @@ -681,7 +680,7 @@ class action 'Concerne'. ''.$image_desc.''; $sort_reference=''.$image_asc.''. - 'Rfrence'. + 'Référence'. ''.$image_desc.''; if ( isset($_GET['s'])){ @@ -703,14 +702,14 @@ class action case "exp": $sort_exp=''.$image_sel_asc.''. - 'Expditeur'. + 'Expéditeur'. ''.$image_asc.''; $sort=" f_id_exp asc"; break; case "exp_d": $sort_exp=''.$image_asc.''. - 'Expditeur'. + 'Expéditeur'. $image_sel_desc.''; $sort=" f_id_exp desc"; @@ -763,7 +762,7 @@ class action case "ref": $sort_reference=''.$image_sel_asc. - 'Rfrence'. + 'Référence'. ''.$image_desc.''; $sort=" ag_ref "; @@ -771,7 +770,7 @@ class action case "ref_d": $sort_reference=''.$image_asc.''. - 'Rfrence'. + 'Référence'. $image_sel_desc.''; $sort=" ag_ref desc"; @@ -793,7 +792,7 @@ class action $max_line=CountSql($this->db,$sql); $step=$_SESSION['g_pagesize']; $page=(isset($_GET['offset']))?$_GET['page']:1; - $offset=(isset($_GET['offset']))?$_GET['offset']:0; + $offset=(isset($_GET['offset']))?pg_escape_string($_GET['offset']):0; $limit=" LIMIT $step OFFSET $offset "; $bar=jrn_navigation_bar($offset,$max_line,$step,$page); @@ -819,17 +818,20 @@ class action if ( sizeof ($a_row) == 0 or $a_row == false ) { $r='

'; - $r.='
Aucun enregistrement trouv'; + $r.='
Aucun enregistrement trouvé'; $r.="
"; return $r; } $r.=JS_SEARCH_CARD; + $i=0; foreach ($a_row as $row ) { - - $r.=""; - $r.="".$row['my_date'].""; + $href=''; + $i++; + $tr=($i%2==0)?'even':'odd'; + $r.=""; + $r.="".$href.$row['my_date'].''.""; // Destinataire $fdest=new fiche($this->db); $fdest->id=$row['f_id_dest']; @@ -840,10 +842,10 @@ class action $_REQUEST['PHPSESSID'],$qdest); if ( $qdest != 'Interne' ) { - $r.="".''.$qdest." : ".$fdest->getName().''; + $r.="".$href.$qdest." : ".$fdest->getName().''; } else - $r.="Interne "; + $r.="$href Interne "; // Expediteur $fexp=new fiche($this->db); @@ -855,10 +857,10 @@ class action $_REQUEST['PHPSESSID'],$qexp); if ( $qexp != 'Interne' ) { - $r.="".''.$qexp." : ".$fexp->getName().''; + $r.="$href".$qexp." : ".$fexp->getName().''; } else - $r.="Interne "; + $r.="$href Interne "; $ref=""; @@ -878,7 +880,7 @@ class action } } - $r.=''. + $r.=''.$href. $row['ag_title'].""; $r.="".$row['dt_value'].""; $r.="".$row['ag_ref'].""; diff --git a/include/class_admin.php b/include/class_admin.php index c0ba7014d..7e131cee2 100644 --- a/include/class_admin.php +++ b/include/class_admin.php @@ -20,7 +20,7 @@ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr require_once("constant.php"); require_once("postgres.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once("class_widget.php"); require_once('class_fiche.php'); diff --git a/include/class_attribut.php b/include/class_attribut.php index 15b6c72d1..e64d0001e 100644 --- a/include/class_attribut.php +++ b/include/class_attribut.php @@ -29,6 +29,7 @@ class Attribut { var $ad_id; /*!< pk for attribut */ var $ad_text; /*!< type of content */ var $av_text; /*!< Description (content) */ + var $jnt_order; /*!< order of the attribut */ var $cn; /*!< database connection */ function Attribut($p_ad_id) { $this->ad_id=$p_ad_id; diff --git a/include/class_contact.php b/include/class_contact.php index 00b8aa501..c86ba2810 100644 --- a/include/class_contact.php +++ b/include/class_contact.php @@ -84,10 +84,10 @@ attr_value using (jft_id) where av_text=upper('".$this->company."') and ad_id=". Quick Code Nom -Tlphone +Téléphone email Fax -Socit +Société '; $base=$_SERVER['PHP_SELF']; // Compute the url diff --git a/include/class_customer.php b/include/class_customer.php index be1217b11..7d87666e1 100644 --- a/include/class_customer.php +++ b/include/class_customer.php @@ -20,7 +20,7 @@ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr require_once("constant.php"); require_once("postgres.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once("class_widget.php"); require_once('class_periode.php'); require_once('class_fiche.php'); @@ -87,16 +87,16 @@ class Customer extends fiche{ // BASE ACCOUNT // for belgium - $s=new parm_code($this->cn,'VENTE'); - $s->Get(); + $s=new Acc_Parm_Code($this->cn,'VENTE'); + $s->load(); $SOLD=$s->p_value; - $c=new parm_code($this->cn,'CUSTOMER'); - $c->Get(); + $c=new Acc_Parm_Code($this->cn,'CUSTOMER'); + $c->load(); $CUSTOMER=$c->p_value; - $t=new parm_code($this->cn,'COMPTE_TVA'); - $t->Get(); + $t=new Acc_Parm_Code($this->cn,'COMPTE_TVA'); + $t->load(); $TVA=$t->p_value; // Get all the sell operation //---- @@ -243,7 +243,7 @@ where return $r; foreach ($step_client as $client ) { $r.=""; - $e=sprintf(' ', + $e=sprintf(' ', $script,$client->id,$str_dossier,$url); $r.=" $e".$client->strAttribut(ATTR_DEF_QUICKCODE).""; @@ -263,25 +263,30 @@ where $r.=sprintf(' %15.2f€',$a['debit']); $r.=sprintf(' %15.2f€',$a['credit']); $r.=sprintf(' %15.2f€',$a['solde']); - $r.=""; - $r.=sprintf('Contact', - $script,$client->strAttribut(ATTR_DEF_QUICKCODE),$str_dossier,$url); - $r.=sprintf('Courrier ', - $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); - - - - $r.='Facture'; - $r.=sprintf('Financier', - $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); - - $r.=sprintf('Contact', + $script,$client->strAttribut(ATTR_DEF_QUICKCODE),$str_dossier,$url); + $r.=sprintf('Courrier ', + $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); + + + } + $p_action_ven=( $script == "commercial.php")?"p_action=client&sa=f":"p_action=ven&sa=l"; + $r.='Facture'; + $r.=sprintf('Financier', + $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); + + $r.=sprintf('Operation', - $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$max->p_id,$min->p_id); - - $r.=''; - + $script,$client->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$max->p_id,$min->p_id); + + $r.=''; + + + $r.=""; } diff --git a/include/class_document.php b/include/class_document.php index 80d7d358e..50d75204a 100644 --- a/include/class_document.php +++ b/include/class_document.php @@ -21,6 +21,8 @@ require_once('class_own.php'); require_once('class_acc_account_ledger.php'); require_once('class_action.php'); +require_once('class_acc_tva.php'); + /*! \file * \brief Class Document corresponds to the table document */ @@ -71,8 +73,6 @@ class Document * \brief Generate the document, Call $this-\>Replace to replace * tag by value * - * \param none - * * * \return an array : the url where the generated doc can be found, the name * of the file and his mimetype @@ -190,7 +190,7 @@ class Document { if ( mkdir($temp_dir) == false ) { - echo "Ne peut pas cr�er le r�pertoire ".$temp_dir; + echo "Ne peut pas cr�er le r�pertoire ".$temp_dir; exit(); } } @@ -300,7 +300,7 @@ class Document ); ExecSql($this->db,$sql); $this->d_id=GetSequence($this->db,"document_d_id_seq"); - echo_debug('class_document',__LINE__,'document sauv� : d_id'.$this->d_id); + echo_debug('class_document',__LINE__,'document sauv� : d_id'.$this->d_id); // Clean the file unlink ($p_file); Commit($this->db); @@ -464,11 +464,13 @@ class Document * - [MY_TVA] * - [MY_STREET] * - [MY_NUMBER] + * - TVA_CODE + * - TVA_RATE * - BON_COMMANDE * - OTHER_INFO * - CUST_NUM * - * \param TAG + * \param $p_tag TAG * \return String which must replace the tag */ function Replace($p_tag) @@ -655,6 +657,16 @@ class Document $r=${$id}; break; + case 'TVA_RATE': + extract ($_POST); + $id='e_march'.$counter.'_tva_id'; + if ( !isset (${$id}) ) return ""; + if ( ${$id} == -1 ) return ""; + $tva=new Acc_Tva($this->db); + $tva->set_parameter("id",${$id}); + $tva->load(); + return $tva->get_parameter("rate"); + break; case 'TVA_CODE': extract ($_POST); diff --git a/include/class_document_modele.php b/include/class_document_modele.php index 1d7c5787d..32798bb98 100644 --- a/include/class_document_modele.php +++ b/include/class_document_modele.php @@ -82,11 +82,11 @@ class Document_modele { $a->name="sa"; $a->value="rm_template"; $r.=$a->IOValue(); - $r.=widget::submit("rm_template","Effacer la slection"); + $r.=widget::submit("rm_template","Effacer la sélection"); $r.="

"; return $r; } - /*! Save + /*! ************************************************** * \brief : Save a document_modele in the database, * if the document_modele doesn't exist yet it will be @@ -95,12 +95,6 @@ class Document_modele { * set before calling Save, the name will be modified * with FormatString * - * parm : - * - none - * gen : - * - none - * return: - * - none */ function Save() { @@ -254,39 +248,50 @@ class Document_modele { /*! * \brief show the form for loading a template * \param p_action for the field action = destination url - * \param - * \param * * * \return string containing the forms */ function form($p_action) { - $r="

"; + $r='

'; + $r.='Veuillez introduire les modèles servant à générer vos documents'; + $r.='

'; $r.='
'; - $r.=dossier::hidden(); - $t=new widget("text"); - $t->name="md_name"; - $r.=" Nom ".$t->IOValue().""; - $r.="Type de document "; - $w=new widget("select"); - $w->name="md_type"; - $w->value=make_array($this->cn,'select dt_id,dt_value from document_type'); - $r.=$w->IOValue(); - $r.="

"; - $f=new widget("file"); - $f->name="doc"; - $r.="fichier ".$f->IOValue().""; + $r.=dossier::hidden(); // we need to add the sub action as hidden $h=new widget("hidden"); $h->name="sa"; $h->value="add_document"; + $r.=$h->IOValue(); + + $r.=''; + $t=new widget("text"); + $t->name="md_name"; + $r.=""; + + $r.=""; + $r.=""; + $w=new widget("select"); + $w->name="md_type"; + + $w->value=make_array($this->cn,'select dt_id,dt_value from document_type'); + $r.=""; + + $f=new widget("file"); + $f->name="doc"; + $r.=""; + $start=new widget("text"); $start->name="start_seq"; $start->size=9; $start->value="0"; - $r.=" Numerotation commence a ".$start->IOValue().""; + + $r.=""; + $r.=''; + $r.=""; + $r.='
Nom ".$t->IOValue()."
Type de document ".$w->IOValue()."
fichier ".$f->IOValue()."
Numerotation commence a ".$start->IOValue()."Si vous laissez à 0, la numérotation ne changera pas
'; $r.=widget::submit('add_document','Ajout'); $r.="

"; return $r; diff --git a/include/class_dossier.php b/include/class_dossier.php index 3ad92d9bf..359ed30d0 100644 --- a/include/class_dossier.php +++ b/include/class_dossier.php @@ -29,6 +29,9 @@ /*! \brief manage the current dossier, everywhere we need to know to * which folder we are connected, because we can't use $_SESSION, we * need to pass the dossier_id via a _GET or a POST variable + * private static $variable=array("id"=>"dos_id", + "name"=>"dos_name", + "desc"=>"dos_description"); * */ require_once('postgres.php'); @@ -36,12 +39,16 @@ include_once('debug.php'); require_once('ac_common.php'); class dossier { - - + private static $variable=array("id"=>"dos_id", + "name"=>"dos_name", + "desc"=>"dos_description"); + function __construct($p_id) { + $this->cn=DbConnect(); // Connect to the repository + $this->dos_id=$p_id; + } /*!\brief return the $_REQUEST['gDossier'] after a check */ static function id() { echo_debug(__FILE__,__LINE__,"id"); - echo_debug(__FILE__,__LINE__,$_REQUEST); self::check(); return $_REQUEST['gDossier']; } @@ -56,7 +63,6 @@ class dossier { /*!\brief return a string to put to gDossier into a GET */ static function get() { echo_debug(__FILE__,__LINE__,"get"); - echo_debug(__FILE__,__LINE__,$_REQUEST); self::check(); return "gDossier=".$_REQUEST['gDossier']; @@ -65,18 +71,74 @@ class dossier { /*!\brief return a string to set gDossier into a FORM */ static function hidden() { echo_debug(__FILE__,__LINE__,"hidden"); - echo_debug(__FILE__,__LINE__,$_REQUEST); self::check(); return ''; } /*!\brief retrieve the name of the current dossier */ - static function name() { + static function name($id=0) { echo_debug(__FILE__,__LINE__,"get_name"); - echo_debug(__FILE__,__LINE__,$_REQUEST); self::check(); $cn=DbConnect(); - $name=getDbValue($cn,"select dos_name from ac_dossier where dos_id=".$_REQUEST['gDossier']); + $id=($id==0)?$_REQUEST['gDossier']:$id; + $name=getDbValue($cn,"select dos_name from ac_dossier where dos_id=$1",array($_REQUEST['gDossier'])); return $name; } + + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + + + } + public function get_info() { return var_export(self::$variable,true); } + + public function save() { + $this->update(); + } + + public function update() { + if ( strlen(trim($this->dos_name))== 0 ) return; + + if ( getDbValue($this->cn,"select count(*) from ac_dossier where dos_name=$1 and dos_id<>$2", + array($this->dos_name,$this->dos_id)) !=0 ) + return ; + + $sql="update ac_dossier set dos_name=$1,dos_description=$2 ". + " where dos_id = $3"; + $res=ExecSqlParam($this->cn, + $sql, + array(trim($this->dos_name), + trim($this->dos_description), + $this->dos_id) + ); + } + + public function load() { + + $sql="select dos_name,dos_description from ac_dossier where dos_id=$1"; + + $res=ExecSqlParam($this->cn, + $sql, + array($this->dos_id) + ); + + if ( pg_NumRows($res) == 0 ) return; + $row=pg_fetch_array($res,0); + foreach ($row as $idx=>$value) { $this->$idx=$value; } + } + + } diff --git a/include/class_fiche.php b/include/class_fiche.php index 3b6b79853..4af19d82a 100644 --- a/include/class_fiche.php +++ b/include/class_fiche.php @@ -92,8 +92,9 @@ class fiche { from jnt_fic_att_value natural join fiche natural join attr_value - left join attr_def using (ad_id) where f_id=".$this->id. - " order by ad_id"; + join jnt_fic_attr on (jnt_fic_attr.fd_id=fiche.fd_id and jnt_fic_attr.ad_id=jnt_fic_att_value.ad_id) + join attr_def on (attr_def.ad_id=jnt_fic_att_value.ad_id) where f_id=".$this->id. + " order by jnt_order"; $Ret=ExecSql($this->cn,$sql); if ( ($Max=pg_NumRows($Ret)) == 0 ) @@ -104,6 +105,7 @@ class fiche { $t=new Attribut ($row['ad_id']); $t->ad_text=$row['ad_text']; $t->av_text=$row['av_text']; + $t->jnt_order=$row['jnt_order']; $this->attribut[$i]=$t; } $e=new Fiche_def($this->cn,$this->fiche_def); @@ -123,6 +125,7 @@ class fiche { $t=new Attribut ($f->ad_id); $t->av_text=""; $t->ad_text=$f->ad_text; + $t->jnt_order=$f->jnt_order; $this->attribut[$Max]=$t; $Max++; } // if flag == 0 @@ -152,9 +155,9 @@ class fiche { ************************************************** * \brief Return array of card from the frd family * - * \param the fiche_def_ref.frd_id - * \param p_search is a filter on the name - * \param p_sql extra sql condition + * \param $p_frd_id the fiche_def_ref.frd_id + * \param $p_search p_search is a filter on the name + * \param $p_sql extra sql condition * * \return array of fiche object */ @@ -179,8 +182,9 @@ class fiche { * \brief Return array of card from the frd family * * - * \param the fiche_def_ref.frd_id - * \param p_search is an optional filter + * \param $p_frd_id the fiche_def_ref.frd_id + * \param $p_offset + * \param $p_search is an optional filter * * \return array of fiche object */ @@ -230,7 +234,7 @@ class fiche { ************************************************** * \brief return the string of the given attribute * (attr_def.ad_id) - * \param the AD_ID from attr_def.ad_id + * \param $p_ad_id the AD_ID from attr_def.ad_id * \see constant.php * \return string */ @@ -238,6 +242,7 @@ class fiche { { if ( sizeof ($this->attribut) == 0 ) { + if ($this->id==0) return '- ERROR -'; // object is not in memory we need to look into the database $sql="select av_text from attr_value join jnt_fic_att_value using(jft_id) @@ -290,14 +295,14 @@ class fiche { $label->name="av_text".$attr->ad_id."_label"; if ( $a['account_auto'] == 't' ) - $msg.="".$label->IOValue()."
Rappel: Poste cr automatiquement ! "; + $msg.="".$label->IOValue()."
Rappel: Poste créé automatiquement ! "; else { // if there is a class base in fiche_def_ref, this account will be the // the default one if ( strlen(trim($f->class_base)) != 0 ) { - $msg.="".$label->IOValue()."
Rappel: Poste par dfaut sera ". + $msg.="".$label->IOValue()."
Rappel: Poste par défaut sera ". $f->class_base. " ! "; } @@ -354,7 +359,7 @@ class fiche { $ret=""; if ( empty ($attr) ) { - return "Fiche non trouve"; + return "Fiche non trouvée"; } foreach ( $attr as $r) { @@ -377,7 +382,8 @@ class fiche { $msg=''; if ( $a['account_auto'] == 't' ) - $msg.=" "; + $msg.=" "; + $msg.=""; } elseif ( $r->ad_id == ATTR_DEF_TVA) { @@ -407,6 +413,7 @@ class fiche { $w->readonly=$p_readonly; $w->table=1; + $ret.="".$w->IOValue()."$msg "; } $ret.="
si vide le Poste sera cr automatiquement si vide le Poste sera créé automatiquement ATTENTION changer le poste comptable d'une fiche modifiera toutes les opérations où cette fiche est utilisée
"; @@ -511,7 +518,7 @@ class fiche { $sql=sprintf("select account_insert(%d,null)", $this->id); } - ExecSql($this->cn,$sql,false); + ExecSql($this->cn,$sql); } catch (Exception $e) { throw new Exception ("Erreur : ce compte [$v] n'a pas de compte parent.". "L'opération est annulée", @@ -659,12 +666,17 @@ class fiche { $sql=sprintf("select account_update(%d,%d)", $this->id,$v); try { - ExecSql($this->cn,$sql,false); + ExecSql($this->cn,$sql); + /* update also the jrnx */ + $sql='update jrnx set j_poste=$1 where j_qcode in (select quick_code from vw_fiche_attr where f_id=$2)'; + ExecSqlParam($this->cn, + $sql, + array($v,$this->id)); + } catch (Exception $e) { throw new Exception(__LINE__."Erreur : ce compte [$v] n'a pas de compte parent.". "L'opération est annulée"); } - continue; } if ( strlen (trim($v)) == 0 ) @@ -673,11 +685,19 @@ class fiche { $sql=sprintf("select account_update(%d,null)", $this->id); try { - $Ret=ExecSql($this->cn,$sql,false); + $Ret=ExecSql($this->cn,$sql); + /* update also the jrnx */ + + $sql='update jrnx set j_poste=$1 where j_qcode in (select quick_code from vw_fiche_attr where f_id=$2)'; + ExecSqlParam($this->cn, + $sql, + array($v,$this->id)); + } catch (Exception $e) { throw new Exception(__LINE__."Erreur : ce compte [$v] n'a pas de compte parent.". "L'opération est annulée"); } + continue; } } @@ -705,7 +725,7 @@ class fiche { if ( $exist == 0 && FormatString($value) != null ) { - $value="Attention : pas de socit "; + $value="Attention : pas de société "; } } @@ -743,7 +763,7 @@ class fiche { if ( CountSql($this->cn,"select * from jrnx where j_qcode='".pg_escape_string($qcode)."'") != 0) { - echo ""; + echo ""; return; } @@ -756,7 +776,7 @@ class fiche { // if class is not NULL and if we use it before, we can't remove it if (FormatString($class) != null && $is_used_jrnx != 0 ) { - echo ""; + echo ""; return; } else @@ -767,16 +787,7 @@ class fiche { } } - // Remove from attr_value - $Res=ExecSql($this->cn,"delete from attr_value - where jft_id in (select jft_id - from jnt_fic_att_value - natural join fiche where f_id=".$this->id.")"); - // Remove from jnt_fic_att_value - $Res=ExecSql($this->cn,"delete from jnt_fic_att_value where f_id=".$this->id); - - // Remove from fiche - $Res=ExecSql($this->cn,"delete from fiche where f_id=".$this->id); + $this->delete(); } @@ -841,7 +852,6 @@ class fiche { * * \param $p_from periode from * \param $p_to end periode - * \param $p_qcode quick_code of the card * \return double array (j_date,deb_montant,cred_montant,description,jrn_name,j_debit,jr_internal) * (tot_deb,tot_credit * @@ -909,8 +919,8 @@ class fiche { " Code interne ". " Date". " Description ". - " Dbit ". - " Crdit ". + " Montant ". + " Débit/Crédit ". ""; foreach ( $this->row as $op ) { @@ -926,7 +936,7 @@ class fiche { echo $ac->display_jrnx_detail(1); } - $solde_type=($tot_deb>$tot_cred)?"solde dbiteur":"solde crditeur"; + $solde_type=($tot_deb>$tot_cred)?"solde débiteur":"solde créditeur"; $diff=round(abs($tot_deb-$tot_cred),2); echo "". "$solde_type". @@ -942,9 +952,7 @@ class fiche { } /*! * \brief HtmlTable, display a HTML of a card for the asked period - * \param none - * - * \return none + * \param $p_array default = null keys = from_periode, to_periode */ function HtmlTable($p_array=null) { @@ -968,8 +976,8 @@ class fiche { " Code interne ". " Date". " Description ". - " Dbit ". - " Crdit ". + " Débit ". + " Crédit ". ""; foreach ( $this->row as $op ) { @@ -982,7 +990,7 @@ class fiche { ""; } - $solde_type=($tot_deb>$tot_cred)?"solde dbiteur":"solde crditeur"; + $solde_type=($tot_deb>$tot_cred)?"solde débiteur":"solde créditeur"; $diff=round(abs($tot_deb-$tot_cred),2); echo "". "$solde_type". @@ -1075,11 +1083,28 @@ function get_solde_detail($p_cond="") { 'credit'=>$r['sum_cred'], 'solde'=>abs($r['sum_deb']-$r['sum_cred'])); } +/*!\brief check if an attribute is empty + *\param + *\return return true is the attribute is empty or missing + */ +function empty_attribute($p_attr) { + $sql="select av_text + from jnt_fic_att_value + natural join fiche + natural join attr_value + left join attr_def using (ad_id) where f_id=".$this->id. + " and ad_id = ".$p_attr. + " order by ad_id"; + $res=ExecSql($this->cn,$sql); + if ( pg_NumRows($res) == 0 ) return true; + $text=pg_fetch_result($res,0,0); + return (strlen(trim($text)) > 0)?false:true; + + +} + /*! - * \brief get the fd_id of the card : fd_id - * \param none - * - * \return none + * \brief get the fd_id of the card : fd_id, it set the attribute fd_id */ function get_categorie() { @@ -1098,7 +1123,7 @@ function get_solde_detail($p_cond="") { * or the id must be set * * - * \param $j_jrn journal_id + * \param $p_jrn journal_id * \param $p_type : deb or cred default empty * *\todo fiche::belong_ledger this function will replace fiche_inc.php @@ -1152,16 +1177,26 @@ function belong_ledger($p_jrn,$p_type="") if ( $Max==0) { return -2; } + /* convert the array to a string */ + $list=pg_fetch_all($Res); + $str_list=""; + $comma=''; + foreach ($list as $row) { + if ( $row['fiche'] != '' ) { + $str_list.=$comma.$row['fiche']; + $comma=','; + } + } // Normally Max must be == 1 - $list=pg_fetch_array($Res,0); - if ( $list['fiche']=="") { + + if ( $str_list=="") { return -3; } $sql="select * from fiche where - fd_id in (".$list['fiche'].") and f_id= ".$this->id; + fd_id in (".$str_list.") and f_id= ".$this->id; $Res=ExecSql($this->cn,$sql); $Max=pg_NumRows($Res); @@ -1170,6 +1205,44 @@ function belong_ledger($p_jrn,$p_type="") else return 1; } - +/*!\brief get all the card from a categorie + *\param $p_cn database connx + *\param $pFd_id is the category id + *\return an array of card, but only the fiche->id is set + */ +static function get_fiche_def($p_cn,$pFd_id) { + $sql='select f_id from fiche where fd_id=$1'; + $array=get_array($p_cn,$sql,array($pFd_id)); + if ( empty ($array) ) return null; + foreach ($array as $ret ) { + $r[]=new fiche($p_cn,$ret['f_id']); + } + return $r; +} +/*!\brief check if a card is used + *\return return true is a card is used otherwise false + */ +function is_used() { + /* retrieve first the quickcode */ + $qcode=$this->strAttribut(ATTR_DEF_QUICKCODE); + $sql='select count(*) as c from jrnx where j_qcode=$1'; + $count=getDbValue($this->cn,$sql,array($qcode)); + if ( $count == 0 ) return false; + return true; +} +/*\brief remove a card without verification */ + function delete() { + // Remove from attr_value + $Res=ExecSql($this->cn,"delete from attr_value + where jft_id in (select jft_id + from jnt_fic_att_value + natural join fiche where f_id=".$this->id.")"); + // Remove from jnt_fic_att_value + $Res=ExecSql($this->cn,"delete from jnt_fic_att_value where f_id=".$this->id); + + // Remove from fiche + $Res=ExecSql($this->cn,"delete from fiche where f_id=".$this->id); + +} } ?> diff --git a/include/class_fiche_def.php b/include/class_fiche_def.php index fc21c9e0a..78dbe4611 100644 --- a/include/class_fiche_def.php +++ b/include/class_fiche_def.php @@ -55,7 +55,7 @@ class fiche_def { function GetAttribut() { $sql="select * from jnt_fic_attr ". " natural join attr_def where fd_id=".$this->id. - " order by ad_id"; + " order by jnt_order"; $Ret=ExecSql($this->cn,$sql); @@ -65,6 +65,7 @@ class fiche_def { $row=pg_fetch_array($Ret,$i); $t = new Attribut($row['ad_id']); $t->ad_text=$row['ad_text']; + $t->jnt_order=$row['jnt_order']; $this->attribut[$i]=$t; } return $this->attribut; @@ -217,8 +218,8 @@ class fiche_def { // Add the class_base if needed - $sql=sprintf("insert into jnt_fic_attr(fd_id,ad_id) - values (%d,%d)",$fd_id,ATTR_DEF_ACCOUNT); + $sql=sprintf("insert into jnt_fic_attr(fd_id,ad_id,jnt_order) + values (%d,%d,10)",$fd_id,ATTR_DEF_ACCOUNT); $Res=ExecSql($this->cn,$sql); } else { @@ -241,9 +242,12 @@ class fiche_def { if (sizeof($def_attr) != 0 ) { // insert all the mandatory fields into jnt_fiche_attr foreach ( $def_attr as $i=>$v) { - $sql=sprintf("insert into jnt_fic_Attr(fd_id,ad_id) - values (%d,%s)", - $fd_id,$v['ad_id']); + $jnt_order=10; + if ( $v['ad_id'] == ATTR_DEF_NAME ) + $jnt_order=0; + $sql=sprintf("insert into jnt_fic_Attr(fd_id,ad_id,jnt_order) + values (%d,%s,%d)", + $fd_id,$v['ad_id'],$jnt_order); ExecSql($this->cn,$sql); } } @@ -396,11 +400,19 @@ class fiche_def { $this->attribut[$i]->ad_id); } else - $add_action=""; + $add_action=""; } // The attribut. $a=sprintf('%s ', $this->attribut[$i]->ad_text); $r.=$a.$add_action; + /*---------------------------------------- */ + /* ORDER OF THE CARD */ + /*---------------------------------------- */ + $order=new widget('text'); + $order->name='jnt_order'.$this->attribut[$i]->ad_id; + $order->size=3; + $order->value=$this->attribut[$i]->jnt_order; + $r.=' '.$order->IOValue(); } $r.= ''; } @@ -449,10 +461,13 @@ class fiche_def { function InsertAttribut($p_ad_id) { if ( $this->id == 0 ) return; + /* ORDER */ + $this->GetAttribut(); + $max=sizeof($this->attribut); // Insert a new attribute for the model // it means insert a row in jnt_fic_attr - $sql=sprintf("insert into jnt_fic_attr (fd_id,ad_id) values (%d,%d)", - $this->id,$p_ad_id); + $sql=sprintf("insert into jnt_fic_attr (fd_id,ad_id,jnt_order) values (%d,%d,%d)", + $this->id,$p_ad_id,$max); $Res=ExecSql($this->cn,$sql); // update all the existing card @@ -488,6 +503,57 @@ class fiche_def { } } + /*!\brief save the order of a card, update the column jnt_fic_attr.jnt_order + *\param array containing the order + */ + function save_order($p_array) { + extract($p_array); + + $this->GetAttribut(); + foreach ($this->attribut as $row){ + if ( $row->ad_id == 1 ) continue; + if ( ${'jnt_order'.$row->ad_id} <= 0 ) continue; + $sql='update jnt_fic_attr set jnt_order=$1 where fd_id=$2 and ad_id=$3'; + ExecSqlParam($this->cn,$sql,array(${'jnt_order'.$row->ad_id}, + $this->id, + $row->ad_id)); + } + } + + + /*!\brief remove all the card from a categorie after having verify + *that the card is not used and then remove also the category + *\return the remains items, not equal to 0 if a card remains and + *then the category is not removed + */ + function remove() { + $remain=0; + /* get all the card */ + $aFiche=fiche::get_fiche_def($this->cn,$this->id); + if ( $aFiche != null ) { + /* check if the card is used */ + foreach ($aFiche as $fiche) { + + /* if the card is not used then remove it otherwise increment remains */ + if ( $fiche->is_used() == false ) { + $fiche->delete(); + } else + $remain++; + } + } + /* if remains == 0 then remove cat */ + if ( $remain == 0 ) { + $sql='delete from jnt_fic_attr where fd_id=$1'; + ExecSqlParam($this->cn,$sql,array($this->id)); + $sql='delete from fiche_def where fd_id=$1'; + ExecSqlParam($this->cn,$sql,array($this->id)); + } + + return $remain; + + } + + } ?> diff --git a/include/class_own.php b/include/class_own.php index f3b3d22f2..f68597a52 100644 --- a/include/class_own.php +++ b/include/class_own.php @@ -45,7 +45,7 @@ class Own { * \brief Update a row * * - * \param give the attribut name + * \param $p_attr give the attribut name * */ function UpdateRow($p_attr) { diff --git a/include/class_parm_code.php b/include/class_parm_code.php index 36f8191d8..97e05340b 100644 --- a/include/class_parm_code.php +++ b/include/class_parm_code.php @@ -139,7 +139,7 @@ class parm_code { */ function Get() { - if ( $this->p_code == -1 ) return "p_code non initialis"; + if ( $this->p_code == -1 ) return "p_code non initialisé"; $sql=sprintf("select * from parm_code where p_code='%s' ", $this->p_code); $Res=ExecSql($this->db,$sql); diff --git a/include/class_periode.php b/include/class_periode.php index 5edd03f6f..62d70bc98 100644 --- a/include/class_periode.php +++ b/include/class_periode.php @@ -46,6 +46,18 @@ class Periode { function set_periode($pp_id){ $this->p_id=$pp_id; } + /*!\brief return the p_id of the start and the end of the exercice + *into an array + *\param $p_exercice + *\return array [start]=>,[end]=> + */ + function limit_year($p_exercice) { + $sql_start="select p_id from parm_periode where p_exercice=$1 order by p_start ASC"; + $start=getDbValue($this->cn,$sql_start,array($p_exercice)); + $sql_end="select p_id from parm_periode where p_exercice=$1 order by p_start ASC"; + $end=getDbValue($this->cn,$sql_end,array($p_exercice)); + return array("start"=>$start,"end"=>$end); + } function is_closed() { if ( $this->jrn_def_id != 0 ) $sql="select status from jrn_periode ". @@ -131,12 +143,7 @@ class Periode { } /*! - * \brief Show all the periode and their status - * - * \param $p_cn database connection - * - * \return nothing - * + * \brief Display all the periode and their status * */ @@ -273,8 +280,6 @@ class Periode { $row=get_array($this->cn,"select p_start,p_end,p_exercice,p_closed,p_central from parm_periode where p_id=$1", array($this->p_id)); - - if ($row == null ) return; $this->p_start=$row[0]['p_start']; @@ -301,8 +306,30 @@ class Periode { $rMin->load(); return array($rMax,$rMin); } +/*! + * \brief Give the start & end date of a periode + * + * \return array containing the start date & the end date + * + * + */ + public function get_date_limit($p_periode) { + $sql="select to_char(p_start,'DD.MM.YYYY') as p_start, + to_char(p_end,'DD.MM.YYYY') as p_end + from parm_periode + where p_id=".$p_periode; + $Res=ExecSql($this->cn,$sql); + if ( pg_NumRows($Res) == 0) return null; + return pg_fetch_array($Res,0); + + } + function get_exercice() { + $sql="select p_exercice from parm_periode where p_id=".$this->id; + $Res=ExecSql($this->cn,$sql); + if ( pg_NumRows($Res) == 0) return null; + return pg_fetch_result($Res,0,0); - + } static function test_me() { $cn=DbConnect(dossier::id()); $obj=new Periode($cn); diff --git a/include/class_pre_op_ach.php b/include/class_pre_op_ach.php index 6e3906b70..6a50ff64c 100644 --- a/include/class_pre_op_ach.php +++ b/include/class_pre_op_ach.php @@ -88,7 +88,7 @@ class Pre_op_ach extends Pre_operation_detail { echo ($e->getMessage()); Rollback($this->db); } - + Commit($this->db); } /*!\brief compute an array accordingly with the FormVenView function */ diff --git a/include/class_pre_op_ven.php b/include/class_pre_op_ven.php index 41bee4454..2b9bf991b 100644 --- a/include/class_pre_op_ven.php +++ b/include/class_pre_op_ven.php @@ -68,6 +68,7 @@ class Pre_op_ven extends Pre_operation_detail { ExecSql($this->db,$sql); // save the selling for ($i=0;$i<$this->operation->nb_item;$i++) { + if ( strlen(trim($this->{"e_march".$i}))==0) continue; $sql=sprintf('insert into op_predef_detail (opd_poste,opd_amount,opd_tva_id,opd_quantity,'. 'opd_debit,od_id)'. ' values '. @@ -85,6 +86,7 @@ class Pre_op_ven extends Pre_operation_detail { echo ($e->getMessage()); Rollback($this->db); } + commit($this->db); } /*!\brief compute an array accordingly with the FormVenView function diff --git a/include/class_pre_operation.php b/include/class_pre_operation.php index 93d368737..5fab3b624 100644 --- a/include/class_pre_operation.php +++ b/include/class_pre_operation.php @@ -147,6 +147,9 @@ class Pre_operation $all=pg_fetch_all($res); return $all; } + /*!\brief set the ledger + * \param $p_jrn is the ledger (jrn_id) + */ function set_jrn($p_jrn) { $this->p_jrn=$p_jrn; } @@ -161,9 +164,71 @@ class Pre_operation_detail { function __construct($p_cn) { $this->db=$p_cn; $this->operation=new Pre_operation($this->db); + $this->valid=array('ledger'=>'jrn_def_id','ledger_type'=>'jrn_type','direct'=>'od_direct'); } + + /*!\brief show a form to use pre_op + */ + function form_get () { + + $hid=new widget("hidden"); + $r=$hid->IOValue("action","use_opd"); + $r.=dossier::hidden(); + $r.=$hid->IOValue("p_jrn",$this->get("ledger")); + $r.=$hid->IOValue("jrn_type",$this->get("ledger_type")); + + // if ($this->count() != 0 ) + $r.= widget::submit('use_opd','Utilisez une op.prédéfinie'); + $r.= $this->show_button(); + return $r; + + } + /*!\brief count the number of pred operation for a ledger */ + function count() { + $a=CountSql($this->db,"select od_id,od_name from op_predef ". + " where jrn_def_id=".$this->jrn_def_id. + " and od_direct ='".$this->od_direct."'". + " order by od_name"); + return $a; + } + /*!\brief show the button for selecting a predefined operation */ + function show_button() { + + $select=new widget("select"); + + $value=$this->get_operation(); + // if ( empty($value)==true) return ""; + $select->value=$value; + $r=$select->IOValue("pre_def"); + return $r; + } + public function get_operation() { + $value=make_array($this->db,"select od_id,od_name from op_predef ". + " where jrn_def_id=".FormatString($this->jrn_def_id). + " and od_direct ='".FormatString($this->od_direct)."'". + " order by od_name"); + return $value; + } + function set($p_param,$value) { + if ( ! isset ($this->valid[$p_param] ) ) { + echo(" le parametre $p_param n'existe pas ".__FILE__.':'.__LINE__); + exit(); + } + $attr=$this->valid[$p_param]; + $this->$attr=$value; + } + function get($p_param) { + + if ( ! isset ($this->valid[$p_param] ) ) { + echo(" le parametre $p_param n'existe pas ".__FILE__.':'.__LINE__); + exit(); + } + $attr=$this->valid[$p_param]; + return $this->$attr; + } + function get_post() { $this->operation->get_post(); } diff --git a/include/class_rapport.php b/include/class_rapport.php index 0ff41e820..e69b2d9eb 100644 --- a/include/class_rapport.php +++ b/include/class_rapport.php @@ -21,19 +21,28 @@ /*! \file * \brief Create, view, modify and parse report */ + +require_once('class_rapport_row.php'); +require_once('class_widget.php'); +require_once('impress_inc.php'); + /*! * \brief Class rapport Create, view, modify and parse report */ -class rapport { +class Rapport { + var $db; /*!< $db database connx */ var $id; /*!< $id formdef.fr_id */ var $name; /*!< $name report's name */ + var $aRapport_row; /*!< array of rapport_row */ + var $nb; /*!\brief Constructor */ - function rapport($p_cn,$p_id) { + function __construct($p_cn,$p_id=0) { $this->db=$p_cn; $this->id=$p_id; - $this->name='UNDEF'; + $this->name='Nouveau'; + $this->aRapport_row=null; } /*!\brief Return the report's name */ @@ -68,17 +77,274 @@ class rapport { for ($i=0;$i<$Max;$i++) { $l_line=pg_fetch_array($Res,$i); $col[]=ParseFormula($this->db, - $l_line['fo_label'], - $l_line['fo_formula'], - $p_start, - $p_end, - true, - $p_type_date - ); + $l_line['fo_label'], + $l_line['fo_formula'], + $p_start, + $p_end, + true, + $p_type_date + ); } //for ($i $this->row=$col; return $col; } +/*! + * \brief Display a form for encoding a new report or update one + * + * \param $p_line number of line + * + */ +function form($p_line=0) { + $search_poste=new widget('JS_SEARCH_POSTE'); + $search_poste->extra='not'; + $r=""; + if ($p_line == 0 ) $p_line=count($this->aRapport_row); + $r.= dossier::hidden(); + $r.= widget::hidden('line',$p_line); + $r.= widget::hidden('fr_id',$this->id); + $wForm=new widget("text"); + $r.="Nom du rapport : "; + $r.=$wForm->IOValue('form_nom',$this->name); + + $r.= ''; + $r.= ""; + $r.= ""; + $r.= ""; + $r.= ""; + + $r.= ''; + $wName=new widget("text"); + $wName->size=50; + $wPos=new widget("text"); + $wPos->size=3; + $wForm=new widget("text"); + $wForm->size=35; + for ( $i =0 ; $i < $p_line;$i++) { + + $r.= ""; + + $r.= "'; + + + $r.= "'; + + $r.= "'; + + $r.= ""; + } + + $r.= "
Position Texte Formule
"; + $wPos->value=( isset($this->aRapport_row[$i]->fo_pos))?$this->aRapport_row[$i]->fo_pos:$i+1; + $r.=$wPos->IOValue("pos".$i); + $r.= '"; + $wName->value=( isset($this->aRapport_row[$i]->fo_label))?$this->aRapport_row[$i]->fo_label:""; + $r.=$wName->IOValue("text".$i); + $r.= '"; + $wForm->value=( isset($this->aRapport_row[$i]->fo_formula))?$this->aRapport_row[$i]->fo_formula:""; + $r.=$wForm->IOValue("form".$i); + + $r.= '
"; + $wButton=new widget("button"); + $wButton->javascript=' rapport_add_row();'; + $wButton->label="Ajout d'une ligne"; + $r.=$wButton->IOValue(); + return $r; + } + /*!\brief save into form and form_def + */ + function save() { + + if ( strlen(trim($this->name)) == 0 ) + return; + if ( $this->id == 0 ) + $this->insert(); + else + $this->update(); + + } + function insert() { + try { + startSql($this->db); + $ret_sql=ExecSqlParam($this->db, + "insert into formdef (fr_label) values($1) returning fr_id", + array($this->name) + ); + $this->id=pg_fetch_result($ret_sql,0,0); + $ix=1; + foreach ( $this->aRapport_row as $row) { + if ( strlen(trim($row->get_parameter("name"))) != 0 && + strlen(trim($row->get_parameter("formula"))) != 0 ) + { + $ix=($row->get_parameter("position")!="")?$row->get_parameter("position"):$ix; + $row->set_parameter("position",$ix); + $ret_sql=ExecSqlParam($this->db, + "insert into form (fo_fr_id,fo_pos,fo_label,fo_formula)". + " values($1,$2,$3,$4)", + array($this->id, + $row->fo_pos, + $row->fo_label, + $row->fo_formula) + ); + } + } + + } catch (Exception $e) { + Rollback($this->db); + echo $e->getMessage(); + } + Commit($this->db); + + } + function update() { + try { + startSql($this->db); + $ret_sql=ExecSqlParam($this->db, + "update formdef set fr_label=$1 where fr_id=$2", + array($this->name,$this->id)); + $ret_sql=ExecSqlParam($this->db, + "delete from form where fo_fr_id=$1", + array($this->id)); + $ix=0; + + foreach ( $this->aRapport_row as $row) { + if ( strlen(trim($row->get_parameter("name"))) != 0 && + strlen(trim($row->get_parameter("formula"))) != 0 ) + { + + $ix=($row->get_parameter("position")!="")?$row->get_parameter("position"):$ix; + $row->set_parameter("position",$ix); + $ret_sql=ExecSqlParam($this->db, + "insert into form (fo_fr_id,fo_pos,fo_label,fo_formula)". + " values($1,$2,$3,$4)", + array($this->id, + $row->fo_pos, + $row->fo_label, + $row->fo_formula) + ); + } + } + + + }catch (Exception $e) { + Rollback($this->db); + echo $e->getMessage(); + } + Commit($this->db); + } + /*!\brief fill a form thanks an array, usually it is $_POST + *\param $p_array keys = fr_id, form_nom,textXX, formXX, posXX where + XX is an number + */ + function from_array($p_array) { + $this->id=(isset($p_array['fr_id']))?$p_array['fr_id']:0; + $this->name=(isset($p_array['form_nom']))?$p_array['form_nom']:""; + $ix=0; + + $rr=new Rapport_Row(); + $rr->set_parameter("form_id",$this->id); + $rr->set_parameter('database',$this->db); + + $this->aRapport_row=$rr->from_array($p_array); + + + } + /*!\brief the fr_id MUST be before called + */ + + + function load() { + $sql=ExecSqlParam($this->db, + "select fr_label from formdef where fr_id=$1", + array($this->id)); + if ( pg_NumRows($sql) == 0 ) return; + $this->name=pg_fetch_result($sql,0,0); + $sql=ExecSqlParam($this->db, + "select fo_id,fo_pos,fo_label,fo_formula ". + " from form ". + " where fo_fr_id=$1 order by fo_pos", + array($this->id)); + $f=pg_fetch_all($sql); + $array=array(); + if ( ! empty($f) ) { + foreach ($f as $r) { + $obj=new Rapport_Row(); + $obj->set_parameter("name",$r['fo_label']); + $obj->set_parameter("id",$r['fo_id']); + $obj->set_parameter("position",$r['fo_pos']); + $obj->set_parameter("formula",$r['fo_formula']); + $obj->set_parameter('database',$this->db); + $obj->set_parameter('form_id',$this->id); + $array[]=clone $obj; + } + } + $this->aRapport_row=$array; + + } + function delete() { + $ret=ExecSqlParam($this->db, + "delete from formdef where fr_id=$1", + array($this->id) + ); + } + /*!\brief get a list from formdef of all defined form + * + *\return array of object rapport + * + */ + function get_list() + { + $sql="select fr_id,fr_label from formdef order by fr_label"; + $ret=ExecSql($this->db,$sql); + if ( pg_NumRows($ret) == 0 ) return array(); + $array=pg_fetch_all($ret); + $obj=array(); + foreach ($array as $row) { + $tmp=new Rapport($this->db); + $tmp->id=$row['fr_id']; + $tmp->name=$row['fr_label']; + $obj[]=clone $tmp; + } + return $obj; + } + /*!\brief To make a SELECT button with the needed value, it is used + *by the SELECT widget + *\return string with html code + */ + function make_array() { + $sql=make_array($this->db,"select fr_id,fr_label from formdef order by fr_label"); + return $sql; + } + + function test_me() { + $cn=DbConnect(dossier::id()); + $a=new Rapport($cn); + print_r($a->get_list()); + $array=array("text0"=>"test1", + "form0"=>"7%", + "text1"=>"test2", + "form1"=>"6%", + "fr_id"=>110, + "form_nom"=>"Tableau" + ); + $a->from_array($array); + print_r($a); + echo '
'; + echo $a->form(10); + echo ''; + /* Add a line should be a javascript see comptanalytic */ + // $r.= ''; + echo ''; + + echo "
"; + if ( isset ($_POST['update'])) { + $b=new Rapport($cn); + $b->from_array($_POST); + echo '
'; + print_r($b); + } + } +} + ?> diff --git a/include/class_rapport_row.php b/include/class_rapport_row.php new file mode 100644 index 000000000..ef24b3d31 --- /dev/null +++ b/include/class_rapport_row.php @@ -0,0 +1,111 @@ +"fo_label", + "formula"=>"fo_formula", + "id"=>"fo_id", + "position"=>"fo_pos", + "form_id"=>"fo_fr_id", + "database"=>"db" + ); + function __construct ($p_name=null,$p_formula=null) { + $this->set_parameter("id",0); + + $this->set_parameter("name",$p_name); + $this->set_parameter("formula",$p_formula); + } + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__."$p_string ".'Erreur attribut inexistant'); + + + } + public function get_info() { + return var_export(self::$variable,true); + } + /*!\brief Convert an array into an array of row_rapport object + * the fo_id is 0, position = 0, the fo_frd_id (form_id) is + * the one of the current object, the db is also the current one + *\param $p_array contains the value + *\return an array of Rapport_Row object + */ + public function from_array($p_array) { + extract ($p_array); + $ret=array(); + $ix=0; + $found=0; + foreach ( $p_array as $r) { + + if ( isset(${'form'.$ix}) && isset ( ${'text'.$ix} )) { + $obj=new Rapport_Row( ${'text'.$ix},${'form'.$ix}); + if ( isset(${'pos'.$ix}) && isNumber(${'pos'.$ix})==1 ) + $obj->set_parameter("position",$ix); + else { + $obj->set_parameter("position",$found); + $found++; + } + $obj->fo_id=0; + $obj->fo_fr_id=$this->fo_fr_id; + $obj->db=$this->db; + + $ret[]=clone $obj; + } + $ix++; + + } + return $ret; + } + function test_me() + { + $cn=DbConnect(dossier::id()); + $a=new Rapport_Row(); + $array=array("text0"=>"test1", + "form0"=>"7%", + "text1"=>"test2", + "form1"=>"6%" + ); + + $b=$a->from_array($array); + print_r($b); + echo $a->get_info(); + } +} diff --git a/include/class_supplier.php b/include/class_supplier.php index 60ccf1094..cd7202a61 100644 --- a/include/class_supplier.php +++ b/include/class_supplier.php @@ -20,7 +20,7 @@ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr require_once("constant.php"); require_once("postgres.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once("class_widget.php"); require_once('class_periode.php'); require_once('class_fiche.php'); @@ -82,7 +82,7 @@ class Supplier extends fiche{ $str_dossier=dossier::get(); $p_search=FormatString($p_search); $url=urlencode($_SERVER['REQUEST_URI']); - $script=$_SERVER['PHP_SELF']; + $script=basename($_SERVER['PHP_SELF']); // Creation of the nav bar // Get the max numberRow $all_supplier=$this->CountByDef($this->fiche_def_ref,$p_search); @@ -123,10 +123,10 @@ class Supplier extends fiche{ if ( sizeof ($step_supplier ) == 0 ) return $r; foreach ($step_supplier as $supplier ) { - $r.=""; - $e=sprintf(' ', - $script,$supplier->id,$url); - + $r.=""; + $e=sprintf(' ', + $script,$supplier->id,$url); + $r.=" $e".$supplier->strAttribut(ATTR_DEF_QUICKCODE).""; $r.="".$supplier->strAttribut(ATTR_DEF_NAME).""; $r.="".$supplier->strAttribut(ATTR_DEF_ADRESS). @@ -144,21 +144,22 @@ class Supplier extends fiche{ $r.=sprintf(' %15.2f€',$a['credit']); $r.=sprintf(' %15.2f€',$a['solde']); + if ( $script == 'commercial.php') { - $r.=sprintf('Contact', - $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE),$str_dossier,$url); - $r.=sprintf('Courrier ', - $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); + $r.=sprintf('Contact', + $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE),$str_dossier,$url); + $r.=sprintf('Courrier ', + $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$url); + } + $r.='Facture'; + $r.=sprintf('Financier', + $supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$url); - $r.='Facture'; - $r.=sprintf('Financier', - $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$url); - - $r.=sprintf('Operation', - $script,$supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$max->p_id,$min->p_id); + $supplier->strAttribut(ATTR_DEF_QUICKCODE) ,$str_dossier,$max->p_id,$min->p_id); $r.=''; diff --git a/include/class_todo_list.php b/include/class_todo_list.php new file mode 100644 index 000000000..e7313b893 --- /dev/null +++ b/include/class_todo_list.php @@ -0,0 +1,179 @@ +"tl_id", + "date"=>"tl_date", + "title"=>"tl_title", + "desc"=>"tl_desc", + "owner"=>"use_login"); + var $cn; + function __construct ($p_init) { + $this->cn=$p_init; + $this->tl_id=0; + $this->tl_desc=""; + $this->use_login=$_SESSION['g_user']; + + } + public function get_parameter($p_string) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + return $this->$idx; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + } + public function set_parameter($p_string,$p_value) { + if ( array_key_exists($p_string,self::$variable) ) { + $idx=self::$variable[$p_string]; + $this->$idx=$p_value; + } + else + exit (__FILE__.":".__LINE__.'Erreur attribut inexistant'); + + + } + public function get_info() { return var_export(self::$variable,true); } + public function verify() { + return 0; + } + public function save() { + if ( $this->get_parameter("id") == 0 ) + $this->insert(); + else + $this->update(); + } + + public function insert() { + if ( $this->verify() != 0 ) return; + + $sql="insert into todo_list (tl_date,tl_title,tl_desc,use_login) ". + " values (to_date($1,'DD.MM.YYYY'),$2,$3,$4) returning tl_id"; + $res=ExecSqlParam($this->cn, + $sql, + array($this->tl_date, + $this->tl_title, + $this->tl_desc, + $this->use_login) + ); + $this->tl_id=pg_fetch_result($res,0,0); + + } + + public function update() { + if ( $this->verify() != 0 ) return; + + $sql="update todo_list set tl_title=$1,tl_date=to_date($2,'DD.MM.YYYY'),tl_desc=$3 ". + " where tl_id = $4"; + $res=ExecSqlParam($this->cn, + $sql, + array($this->tl_title, + $this->tl_date, + $this->tl_desc, + $this->tl_id) + ); + + } + /*!\brief load all the task + *\return an array of the existing tasks of the current user + */ + public function load_all() { + $sql="select tl_id, tl_title,tl_desc,to_char( tl_date,'DD.MM.YYYY') as tl_date +from todo_list where use_login=$1". + " order by tl_date desc"; + $res=ExecSqlParam($this->cn, + $sql, + array($this->use_login)); + $array=pg_fetch_all($res); + return $array; + } + public function load() { + + $sql="select tl_id,tl_title,tl_desc,to_char( tl_date,'DD.MM.YYYY') as tl_date +from todo_list where tl_id=$1"; + + $res=ExecSqlParam($this->cn, + $sql, + array($this->tl_id) + ); + + if ( pg_NumRows($res) == 0 ) return; + $row=pg_fetch_array($res,0); + foreach ($row as $idx=>$value) { $this->$idx=$value; } + } + public function delete() { + $sql="delete from todo_list where tl_id=$1"; + $res=ExecSqlParam($this->cn,$sql,array($this->tl_id)); + + } + public function toJSON() { + $r=''; + $r.='{'; + $r.='"tl_id":"'.$this->tl_id.'",'; + $r.='"tl_title":"'.$this->tl_title.'",'; + $r.='"tl_desc":"'.$this->tl_desc.'",'; + $r.='"tl_date":"'.$this->tl_date.'"'; + $r.='}'; + return $r; + } + /*!\brief static testing function + */ + static function test_me() { + $cn=DbConnect(dossier::id()); + $r=new Todo_List($cn); + $r->set_parameter('title','test'); + $r->use_login='phpcompta'; + $r->set_parameter('date','02.03.2008'); + $r->save(); + $r->set_parameter('id',3); + $r->load(); + print_r($r); + $r->set_parameter('title','Test UPDATE'); + $r->save(); + print_r($r); + $r->set_parameter('id',1); + $r->delete(); + } + +} + + diff --git a/include/class_user.php b/include/class_user.php index fc11f2dc6..d893226e8 100644 --- a/include/class_user.php +++ b/include/class_user.php @@ -41,7 +41,7 @@ class User { // if p_id is not set then check the connected user if ( $p_id == -1 ) { if ( ! isset ($_SESSION['g_user'])) - exit("Utilisateur inexistant"); + exit('

Utilisateur déconnecté

'); echo_debug('class_user.php',__LINE__," g_user = ".$_SESSION['g_user']); $this->id=$_SESSION['g_user']; @@ -126,7 +126,7 @@ class User { echo "





"; echo "

- Invalid user
or
Invalid password + utilisateur ou mot de passe incorrect

"; session_unset(); @@ -140,41 +140,61 @@ class User { } /*! * \brief get all the available ledgers for the current user - * \param none - * \param - * \param - * + * \param $p_type = ALL or the type of the ledger (ACH,VEN,FIN,ODS) + * \param $p_access =3 for READ or WRITE, 2 READ and write, 1 for readonly * * \return an array */ - function get_ledger() { + function get_ledger($p_type='ALL',$p_access=3) { + + if ( $this->admin != 1) { + $sql_type=($p_type=='ALL')?'':"and jrn_def_type=upper('".FormatString($p_type)."')"; + switch($p_access) { + case 3: + $sql_access=" and uj_priv!= 'X'"; + break; + case 2: + $sql_access=" and uj_priv = 'W'"; + break; + + case 1: + $sql_access=" and uj_priv = 'R'"; + break; + + } $sql="select jrn_def_id,jrn_def_type, jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_type_id,jrn_desc,uj_priv, jrn_deb_max_line,jrn_cred_max_line from jrn_def join jrn_type on jrn_def_type=jrn_type_id join user_sec_jrn on uj_jrn_id=jrn_def_id where - uj_login='".$this->id."' - and uj_priv !='X' - order by jrn_Def_id"; + uj_login='".$this->id."'". + $sql_type.$sql_access. + " order by jrn_Def_id"; }else { + $sql_type=($p_type=='ALL')?'':"where jrn_def_type=upper('".FormatString($p_type)."')"; $sql="select jrn_def_id,jrn_def_type,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_deb_max_line,jrn_cred_max_line, jrn_type_id,jrn_desc,'W' as uj_priv from jrn_def join jrn_type on jrn_def_type=jrn_type_id + $sql_type order by jrn_Def_id"; } + $res=ExecSql($this->db,$sql); + if ( pg_NumRows($res) == 0 ) return null; $array=pg_fetch_all($res); return $array; } /*!\brief return an sql condition for filtering the permitted ledger + * \param $p_type = ALL or the type of the ledger (ACH,VEN,FIN,ODS) + * \param $p_access =3 for READ or WRITE, 2 READ and write, 1 for readonly * *\return string */ - function get_ledger_sql() { - $aLedger=$this->get_ledger(); + function get_ledger_sql($p_type='ALL',$p_access=3) { + $aLedger=$this->get_ledger($p_type,$p_access); $sql=" jrn_def_id in ("; foreach ($aLedger as $row) { $sql.=$row['jrn_def_id'].','; @@ -227,31 +247,55 @@ function set_periode($p_periode) { $sql="update user_local_pref set parameter_value='$p_periode' where user_id='$this->id' and parameter_type='PERIODE'"; $Res=ExecSql($this->db,$sql); } + /*! * \brief Get the default periode from the user's preferences * - * \param $p_cn connexion - * \param $p_user * \return the default periode * * */ function get_periode() { + $array=$this->get_preference(); return $array['PERIODE']; } + /*!\brief return the mini rapport to display on the welcome page + *\return 0 if nothing if found or the report to display (formdef.fr_id) + */ + function get_mini_report() { + $array=$this->get_preference(); + $fr_id=(isset($array['MINIREPORT']))?$array['MINIREPORT']:0; + return $fr_id; + + } + + /*!\brief set the mini rapport to display on the welcome page + */ + function set_mini_report($p_id) { + $count=getDbValue($this->db,"select count(*) from user_local_pref where user_id=$1 and parameter_type=$2", + array($this->id,'MINIREPORT')); + if ( $count == 1 ) { + $sql="update user_local_pref set parameter_value=$1 where user_id=$2 and parameter_type='MINIREPORT'"; + $Res=ExecSqlParam($this->db,$sql,array($p_id,$this->id)); + } else { + $sql="insert into user_local_pref (user_id,parameter_type,parameter_value)". + "values($1,'MINIREPORT',$2)"; + $Res=ExecSqlParam($this->db,$sql,array($this->id,$p_id)); + } + + + } + + /*! * \brief Get the default user's preferences - * - * - * \param $p_cn connexion - * \param $p_user * \return array of (parameter_type => parameter_value) */ function get_preference () { - // si preference n'existe pas, les crer + // si preference n'existe pas, les créer $sql="select parameter_type,parameter_value from user_local_pref where user_id='".$this->id."'"; $Res=ExecSql($this->db,$sql); if (pg_NumRows($Res) == 0 ) { @@ -264,11 +308,12 @@ function get_preference () $l_array=$this->get_preference(); } else { for ( $i =0;$i < pg_NumRows($Res);$i++) { - $row= pg_fetch_array($Res,0); + $row= pg_fetch_array($Res,$i); $type=$row['parameter_type']; $l_array[$type]=$row['parameter_value']; } } + return $l_array; } /*! @@ -298,7 +343,7 @@ function get_preference () * \brief Get the global preferences from user_global_pref * in the account_repository db * - * \param set g_variable + * \note set $SESSION[g_variable] */ @@ -341,7 +386,8 @@ function load_global_pref() * \brief insert default pref * if no parameter are given insert all the existing * parameter otherwise only the requested - * \param parameter's type or nothing + * \param $p_type parameter's type or nothing + * \param $p_value parameter value * */ function insert_default_global_pref($p_type="",$p_value="") { @@ -349,7 +395,7 @@ function insert_default_global_pref($p_type="",$p_value="") { echo_debug('class_user.php',__LINE__,"parameter p_type $p_type p_value $p_value"); $default_parameter= array("THEME"=>"Light", - "PAGESIZE"=>"50",'TOPMENU'=>'SELECT'); + "PAGESIZE"=>"50",'TOPMENU'=>'TEXT'); $cn=Dbconnect(); $Sql="insert into user_global_pref(user_id,parameter_type,parameter_value) values ('%s','%s','%s')"; @@ -373,8 +419,8 @@ function insert_default_global_pref($p_type="",$p_value="") { * \brief update default pref * if value is not given then use the default value * - * \param parameter's type - * \param parameter's value value of the type + * \param $p_type parameter's type + * \param $p_value parameter's value value of the type */ function update_global_pref($p_type,$p_value="") { $default_parameter= array("THEME"=>"Light", @@ -408,7 +454,7 @@ function get_exercice() /*!\brief Check if the user can access * otherwise warn and exit * \param $p_cn database connx - * \param $action_id + * \param $p_action requested action * \param $p_js = 1 javascript, or 0 just a text * \return nothing the program exits automatically */ @@ -419,14 +465,14 @@ function can_request($p_cn,$p_action,$p_js=0) if ( $p_js == 1 ) { echo ""; } else { echo '
'; - echo '

Cette action ne vous est pas autorise Contactez votre responsable

'; + echo '

Cette action ne vous est pas autorisée Contactez votre responsable

'; echo '
'; } diff --git a/include/class_widget.php b/include/class_widget.php index afb7dbf51..16fe7826e 100644 --- a/include/class_widget.php +++ b/include/class_widget.php @@ -119,15 +119,17 @@ class widget { // Input text type $disabled = $this->disabled ? "readonly" : ""; if (strtoupper($this->type)=="TEXT") { + $t= ((isset($this->title)))?'title="'.$this->title.'" ':' '; + $extra=(isset($this->extra))?$this->extra:""; if ( $this->readonly==true ){ $readonly=" readonly ";$style='style="border:solid 1px grey;color:black;background:lightblue;"'; } else { - $readonly=" ";$style='style="border:solid 1px blue;"'; + $readonly=" ";$style='class="input_text"'; } $this->value=str_replace('"','',$this->value); $r='name.'"'.$t. 'NAME="'.$this->name.'" VALUE="'.$this->value.'" '. 'SIZE="'.$this->size.'" '.$this->javascript." ".$disabled." $readonly $this->extra >"; @@ -148,8 +150,10 @@ class widget { } // Select value if ( strtoupper($this->type) == "SELECT") { + if ($this->readonly==false ) { + $disabled=($this->disabled==true)?"disabled":""; //echo "Selected ".$this->selected; $r=" - Modle -Anne > + Modèle +Année > + + + - +load(); + $wText=new widget('text'); + echo '
'; + echo widget::hidden('action','dossier_mgt'); + echo widget::hidden('d',$dos->get_parameter("id")); + echo 'Nom : '; + echo $wText->IOValue('name',$dos->get_parameter('name')); + echo '
'; + $wDesc=new widget('textarea'); + $wDesc->heigh=5; + echo 'Description :
'; + echo $wDesc->IOValue('desc',$dos->get_parameter('desc')); + echo '
'; + echo widget::submit('upd','Modifie'); + echo widget::button_href('Retour','?action=dossier_mgt'); + echo '
'; + } +//--------------------------------------------------------------------------- +// action = del +//--------------------------------------------------------------------------- +if ( $sa == 'del' ) { + $d=new Dossier($_REQUEST ['d'] ); + $d->load(); + echo '
'; + echo widget::hidden('d',$_REQUEST['d']); + echo widget::hidden('sa','remove'); + echo '

Etes vous sure et certain de vouloir effacer '.$d->dos_name.' ???

'; + $confirm=new widget('checkbox'); + $confirm->name="p_confirm"; + echo 'Cochez la case si vous êtes sûr de vouloir effacer ce dossier'; + echo $confirm->IOValue(); + echo widget::submit('remove','Effacer'); + echo widget::button_href('Retour','?action=dossier_mgt'); + echo '
'; + } +//--------------------------------------------------------------------------- +// action = del +//--------------------------------------------------------------------------- +if ( $sa == 'remove' ) { + if ( ! isset ($_REQUEST['p_confirm'])) {echo('Désolé, vous n\'avez pas coché la case'); echo widget::button_href('Retour','?action=dossier_mgt');exit();} + + $cn=DbConnect(); + $msg="dossier"; + $name=getDbValue($cn,"select dos_name from ac_dossier where dos_id=$1",array($_REQUEST['d'])); + if ( strlen(trim($name)) == 0 ) + { + echo "

$msg inexistant

"; + exit(); + } + $sql="drop database ".domaine."dossier".FormatString($_REQUEST['d']); + ob_start(); + if ( pg_query($cn,$sql)==false) { + ob_end_clean(); + + echo "

+ Base de donnée ".domaine."dossier".$_REQUEST['d']." est accèdée, déconnectez-vous d'abord

"; + exit; + } + ob_flush(); + $sql="delete from priv_user where priv_id in (select jnt_id from jnt_use_dos where dos_id=$1)"; + ExecSqlParam($cn,$sql,array($_REQUEST['d'])); + $sql="delete from jnt_use_dos where dos_id=$1"; + ExecSqlParam($cn,$sql,array($_REQUEST['d'])); + $sql="delete from ac_dossier where dos_id=$1"; + ExecSqlParam($cn,$sql,array($_REQUEST['d'])); + print '

'; + print "Voilà le dossier $name est effacé

"; + echo widget::button_href('Retour','?action=dossier_mgt'); + } +?> diff --git a/include/eub_be.inc.php b/include/eub_be.inc.php index ede84b7c6..86dc6568a 100644 --- a/include/eub_be.inc.php +++ b/include/eub_be.inc.php @@ -71,7 +71,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { '$p_bq_account', $p_jrn, 'n')"; - $Res=ExecSql($p_cn,$Sql); + $Res=ExecSql($p_cn,$Sql,'latin1'); } } // for ($c=0;$c<$num;$c++) $row++; diff --git a/include/facture.inc.php b/include/facture.inc.php index 6b682c986..a98f1d13e 100644 --- a/include/facture.inc.php +++ b/include/facture.inc.php @@ -24,7 +24,7 @@ require_once('jrn.php'); require_once("class_document.php"); require_once("class_fiche.php"); require_once("check_priv.php"); -require_once('class_acc_jrn_info.php'); +require_once('class_acc_ledger_info.php'); $tag_list='Liste'; $tag_list_sel='Liste'; @@ -102,7 +102,7 @@ if ( $sub_action == "list") } - echo '
'; + echo '
'; echo $retour; @@ -132,7 +132,7 @@ if ( $sub_action == "list") $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; - echo 'Priode '.$w->IOValue("p_periode",$periode_start); + echo 'Période '.$w->IOValue("p_periode",$periode_start); $qcode=(isset($_GET['qcode']))?$_GET['qcode']:""; echo JS_SEARCH_CARD; @@ -179,7 +179,7 @@ echo widget::submit('gl_submit','Rechercher'); echo $list; echo "$bar
"; if ( $max_line !=0 ) - echo widget::submit('paid','Mise jour paiement'); + echo widget::submit('paid','Mise à jour paiement'); echo ''; echo $retour; @@ -242,9 +242,9 @@ echo '
'; echo '
'; echo dossier::hidden(); echo $bar2; - echo '

Echeance dpasse

'; + echo '

Echeance dépassée

'; echo $list; - echo '

Non Paye

'; + echo '

Non Payée

'; echo $list2; echo $bar2; // Add hidden parameter @@ -260,7 +260,7 @@ echo '
'; echo '
'; if ( $m != 0 ) - echo widget::submit('paid','Mise jour paiement'); + echo widget::submit('paid','Mise à jour paiement'); echo ''; echo ''; @@ -279,7 +279,7 @@ if ( $sub_action=="use_opd" ) { $p_post=$op->compute_array(); echo_debug(__FILE__.':'.__LINE__.'- ','p_post = ',$p_post); $form=FormVenInput($cn,$_GET['p_jrn'],$User->get_periode(),$p_post,false,$p_post['nb_item']); - echo '
'; + echo '
'; echo $form; //-------------------- @@ -296,7 +296,7 @@ if ( $sub_action=="use_opd" ) { echo $hid->IOValue("sa","use_opd"); if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); + echo widget::submit('use_opd','Utilisez une op.prédéfinie'); echo $op->show_button(); echo ''; @@ -320,7 +320,7 @@ if ( isset ($_POST['add_item']) || isset ($_POST["correct_new_invoice"]) ) if ( isset ($_POST['add_item'])) $nb_item++; $form=FormVenInput($cn,$p_jrn,$User->get_periode(),$_POST,false,$nb_item); - echo '
'; + echo '
'; echo $form; echo '
'; exit(); @@ -341,7 +341,7 @@ if ( isset($_POST['record_and_print_invoice'])) list ($internal,$e)=RecordInvoice($cn,$_POST,$User,$p_jrn); $form=FormVenteView($cn,$p_jrn,$User->get_periode(),$_POST,$_POST['nb_item'],'noform',''); - echo '
'; + echo '
'; echo '

Opération '.$internal.' enregistré

'; echo $form; echo '
'; @@ -361,7 +361,7 @@ if ( isset($_POST['record_and_print_invoice'])) $sql="update jrn set jr_comment='Facture ".$doc->d_number."' where jr_internal='$internal'"; ExecSql($cn,$sql); /* Save the additional information into jrn_info */ - $obj=new Acc_Jrn_Info($cn); + $obj=new Acc_Ledger_Info($cn); $jr_id=$obj->search_id_internal($internal); if (strlen(trim($_POST['bon_comm'] )) != 0 ) { $obj->set_type('BON_COMMANDE'); @@ -409,7 +409,7 @@ if ( isset ($_POST['view_invoice']) ) $form=FormVenInput($cn,$p_jrn,$User->get_periode(),$_POST,false,$nb_number); } - echo '
'; + echo '
'; echo $form; echo '
'; exit(); @@ -430,7 +430,7 @@ if ( $p_jrn != -1 ) echo_debug('facture.inc.php.php',__LINE__,"Blank form"); // Show an empty form of invoice $form=FormVenInput($cn,$p_jrn,$User->get_periode(),null,false,$jrn->GetDefLine()); - echo '
'; + echo '
'; echo $form; //-------------------- @@ -447,7 +447,7 @@ if ( $p_jrn != -1 ) echo $hid->IOValue("sa","use_opd"); if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); + echo widget::submit('use_opd','Utilisez une op.prédéfinie'); echo $op->show_button(); echo ''; diff --git a/include/fiche.inc.php b/include/fiche.inc.php index acc9a26ac..106a47d98 100644 --- a/include/fiche.inc.php +++ b/include/fiche.inc.php @@ -32,7 +32,6 @@ $str_dossier=dossier::get(); echo JS_SEARCH_POSTE; echo JS_AJAX_FICHE; - if ( !isset($sessid)) { $sessid=$_REQUEST["PHPSESSID"]; @@ -83,13 +82,16 @@ function ShowFicheDefInput($p_fiche_def) $r.= $p_fiche_def->DisplayAttribut("remove"); $r.= ' '; + $r.= ' '; + $r.=widget::submit('remove_cat','Effacer cette catégorie','onclick="return confirm(\'Vous confirmez ?\')"'); // if there is nothing to remove then hide the button if ( strpos ($r,"chk_remove") != 0 ) { $r.=' '; } $r.= ""; - $r.="

Attention : il n'y aura pas de demande de confirmation pour enlver les -attributs slectionns. Il ne sera pas possible de revenir en arrire

"; + $r.="

Attention : il n'y aura pas de demande de confirmation pour enlèver les +attributs sélectionnés. Il ne sera pas possible de revenir en arrière

"; + return $r; } @@ -102,11 +104,20 @@ if ( isset($_POST['add_modele']) and $write != 0) { $fiche_def->Add($_POST); } $r=""; + +if ( isset ($_POST['remove_cat'] )) { + $fd_id=new fiche_def($cn,$_POST['fd_id']); + $remains=$fd_id->remove(); + if ( $remains != 0 ) + /* some card are not removed because it is used */ + alert('Impossible d\'enlever cette catégorie, certaines fiches sont encore utilisées\n'. + 'Les fiches non utilisées ont cependant été effacées'); +} // Add a line in the card model if ( isset ($_POST["add_line"]) ) { $r= '
'; if ( $write ==0) - $r.= "

Pas d'accs

"; + $r.= "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); @@ -119,12 +130,32 @@ if ( isset ($_POST["add_line"]) ) { $r.= '
'; $recherche=false; } +/* ------------------------------------------------- */ +/* SAVE ORDER */ +/* ------------------------------------------------- */ +if ( isset($_POST['save_line'])) { + $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); + $fiche_def->save_order($_POST); + $r= '
'; + if ( $write ==0) + $r.= "

Pas d'accès

"; + else + { + $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); + // Insert Line + $r.=ShowFicheDefInput($fiche_def); + + } + $r.= '
'; + $recherche=false; + +} // Remove lines from a card model if ( isset ($_POST['remove_line'])) { $r= '
'; if ( $write ==0) - $r.= "

Pas d'accs

"; + $r.= "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); @@ -142,7 +173,7 @@ if ( isset ($_POST['remove_line'])) if ( isset ($_POST["change_name"] ) ) { $r= '
'; if ( $write ==0) - $r.= "

Pas d'accs

"; + $r.= "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_REQUEST['fd_id']); @@ -181,7 +212,7 @@ if ( isset ( $_GET["action"]) ) { $t=false; if ( $write == 0) { - echo '

Vos changements ne seront pas sauvs

'; + echo '

Vos changements ne seront pas sauvés

'; $t=true; } $str="&".dossier::get(); @@ -235,7 +266,7 @@ if ( isset ( $_GET["action"]) ) { if ($action == "modifier" ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { @@ -261,7 +292,7 @@ if ( isset ( $_GET["action"]) ) { if ( sizeof($all) != 0 ) { echo '
'; - echo "Nombre de rsultat : ".sizeof($all).'
'; + echo "Nombre de résultat : ".sizeof($all).'
'; foreach ($all as $f_id){ $fiche=new fiche($cn,$f_id['f_id']); echo ''; - echo "Aucun rsultat trouv"; + echo "Aucun résultat trouvé"; echo '
'; @@ -285,7 +316,7 @@ if ( isset ( $_GET["action"]) ) { if ( isset ($_POST["fiche"]) && isset ($_POST["add"] ) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche_def=new fiche_def($cn,$_POST['fiche']); @@ -314,7 +345,7 @@ if (isset($_POST['delete']) ) { ShowRecherche(); echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche=new fiche($cn,$_POST["f_id"]); @@ -332,7 +363,7 @@ if ( isset ($_POST["add_fiche"]) ) { if ( $write ==0) { echo '
'; - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; } else { @@ -354,7 +385,7 @@ if ( isset ($_POST["update_fiche"]) ) { echo '
'; if ( $write ==0) - echo "

Pas d'accs

"; + echo "

Pas d'accès

"; else { $fiche=new fiche($cn,$_POST['f_id']); diff --git a/include/fiche_inc.php b/include/fiche_inc.php index 05f89e6e0..9b532f408 100644 --- a/include/fiche_inc.php +++ b/include/fiche_inc.php @@ -54,7 +54,7 @@ function CreateCategory ($p_cn,$p_js,$p_array=null,$p_ligne=1) //Name of the CARD (fiche_def.fd_label) - $display.=' Catgorie de fiche '; + $display.=' Catégorie de fiche '; $display.=''; $display.=''; diff --git a/include/form_inc.php b/include/form_inc.php deleted file mode 100644 index a1231db99..000000000 --- a/include/form_inc.php +++ /dev/null @@ -1,310 +0,0 @@ -'; - include_once("constant.php"); - echo JS_SEARCH_POSTE; - $search='"; - for ( $i =0 ; $i <= $p_line; $i++) { - ${"text$i"}=""; - ${"form$i"}=""; - ${"pos$i"}=""; - } - if ( $p_array != null ) { - foreach ( $p_array as $key=> $element ) { - ${"$key"}=$element; - echo_debug ("EncodeForm $key = $element"); - - } - - } else { - $form_nom=""; - $text0=""; - $form0=""; - } - echo "
"; - echo dossier::hidden(); - printf ("Nom du rapport : ", - $form_nom); - printf (''; - echo ""; - if ( isset($fr_id) ) echo " Position "; - echo " Texte "; - echo " Formule"; - - echo ''; - for ( $i =0 ; $i < $p_line;$i++) { - echo ""; - // si fr_id != null alors les donnees viennent de - // get_dataForm: ce n'est pas un nouvel enregistrement - // - if ( isset($fr_id)) { - echo ""; - printf ('', - $i,${"pos$i"}); - echo ''; - } - - echo ""; - printf ('', - $i,${"text$i"}); - echo ''; - - echo ""; - printf ('', - $i,${"form$i"}); - echo $search; - echo ''; - - echo ""; - } - echo ""; - if ( isset($fr_id)){ - echo ''; - }else { - echo ''; - } - echo ''; - echo ''; - - echo "
"; - -} -/*! - * \brief Show the details of a report - * - * parm : - * \param $p_cn connection - * \param $p_id gives the formdef.fr_id - * \param sessid for the search window - * - */ -function ViewForm($p_cn,$p_sessid,$p_id) { - $array=get_dataForm($p_cn,$p_id); - $l_nom=GetFormName($p_cn,$p_id); - $array['form_nom']=$l_nom; - - $l_line=GetNumberLine($p_cn,$p_id); - EncodeForm($l_line,$p_sessid,$array); - -} -/*! - * \brief Remove a report - * - * parm : - * \param $p_cn connection - * \param $p_id gives the formdef.fr_id - * - */ -function DeleteForm($p_cn,$p_id) { - ExecSql($p_cn,"delete from form where fo_fr_id=$p_id"); - ExecSql($p_cn,"delete from formdef where fr_id=$p_id"); -} -/*! - * \brief - * Get data from a form - * - * \param $p_cn connection - * \param $p_id gives the formdef.fr_id - * - - * \return array(fo_idX=>fo_id,textX=>fo_label,formX=>fo_formula,posX=>fo_pos) - * where X is the row number - * - */ -function get_dataForm($p_cn,$p_id) { - $Res=ExecSql($p_cn,"select fo_id,fo_fr_id,fo_pos,fo_label,fo_formula from form where fo_fr_id=$p_id - order by fo_pos"); - $Max=pg_NumRows($Res); - for ( $i=0;$i<$Max;$i++){ - $l_line=pg_fetch_array($Res,$i); - - // get the fo_id - $text=sprintf("fo_id%d",$i); - $array[$text]=$l_line['fo_id']; - // get the fo_label - $text=sprintf("text%d",$i); - $array[$text]=$l_line['fo_label']; - // get the fo_formula - $text=sprintf("form%d",$i); - $array[$text]=$l_line['fo_formula']; - // get the pos - $text=sprintf("pos%d",$i); - $array[$text]=$l_line['fo_pos']; - } //for - $array["fr_id"]=$p_id; - return $array; -} -/*! - * \brief Get the number of line of a form - * - * \param $p_cn connection - * \param $p_id gives the formdef.fr_id - * \return integer - * - */ -function GetNumberLine($p_cn,$p_id) { - $Res=ExecSql($p_cn,"select * from form where fo_fr_id=".$p_id); - $count=pg_NumRows($Res); - return $count; -} -/*! - * \brief Get the name of the report - * - * \param $p_cn connection - * \param $p_id formdef.fr_id - * - * \return string name - * - * - */ -function GetFormName($p_cn,$p_id) { - $Res=ExecSql($p_cn,"select fr_label from formdef where fr_id=".$p_id); - if ( pg_NumRows($Res) == 0 ) return null; - $name=pg_fetch_array($Res,0); - return $name['fr_label']; -} -/*! - * \brief Update a report - * - * \param $p_cn connexion - * \param $array - * - */ -function UpdateForm($p_cn,$p_array) { - foreach ($p_array as $key=>$element) { - echo_debug ("UpdateForm $key = $element"); - ${"$key"}=$element; - } - $Res=ExecSql($p_cn,"update formdef set fr_label='".FormatString($form_nom)."' where fr_id=".$fr_id); - $Res=ExecSql($p_cn,"delete from form where fo_fr_id=".$fr_id); - // Test les positions - for ($i =0; $i <$line;$i++) { - echo_debug ("position =".${"pos$i"}); - if ( (string) ${"pos$i"} != (string) (int) ${"pos$i"}) { - ${"pos$i"}=$i+1; - } - if ( ${"pos$i"} > $line || ${"pos$i"} < 0) { - ${"pos$i"}=$i+1; - echo_debug('form_inc.php',__LINE__,"position trop grand max = $line+1 "); - } - } - for ($i =0; $i <$line;$i++) { - for ( $o=$i+1; $o < $line;$o++) { - if ( ${"pos$i"} == ${"pos$o"} ) { - ${"pos$o"}=$o+1; - } - } - } - for ( $i=0;$i<$line;$i++) { - if ( strlen(trim(${"text$i"})) != 0) { - ${"text$i"}=FormatString(${"text$i"}); - ${"form$i"}=FormatString(${"form$i"}); - if ( ${"text$i"} != null ) { - if ( CheckFormula(${"form$i"}) == false ) - ${"form$i"}="!!!!!!! FORMULE INVALIDE ".${"form$i"}; - - ${"form$i"}=(${"form$i"}==null)?"null":"'".${"form$i"}."'"; - $sql=sprintf("insert into form (fo_fr_id, - fo_pos, - fo_label, - fo_formula) values - ( %d, - %d, - '%s', - %s)", - $fr_id,${"pos$i"}, - ${"text$i"}, - ${"form$i"} - ); - $Res=ExecSql($p_cn,$sql); - } - }//if - }//for - -} -/*! - * \brief Add a report - * - * \param $p_cn connexion - * \param $array - * - */ -function AddForm($p_cn,$p_array) { - foreach ($p_array as $key=>$element) { - echo_debug ("AddForm $key = $element"); - ${"$key"}=$element; - } - - if ( !isset ($form_nom) || - ! isset ($line) ) { - echo_error("Nom ou ligne non dfini"); - return; - } - $form_nom=(FormatString($form_nom)==null)?"NoName":FormatString($form_nom); - $sql="insert into formdef (fr_label) values ('".$form_nom."')"; - $Res=ExecSql($p_cn,$sql); - $n=GetSequence($p_cn,"s_formdef"); - - for ($i=0;$i < $line;$i++) { - ${"text$i"}=FormatString(${"text$i"}); - ${"form$i"}=FormatString(${"form$i"}); - if ( ${"text$i"} != null ) { - // ${"form$i"}=(${"form$i"}==null)?${"form$i"}:"'".${"form$i"}."'"; - ${"form$i"}=(${"form$i"}==null)?"null":"'".${"form$i"}."'"; - CheckFormula(${"form$i"}); - $sql=sprintf("insert into form (fo_fr_id, - fo_pos, - fo_label, - fo_formula) values - ( %d, - %d, - '%s', - %s)", - $n,$i+1,${"text$i"},${"form$i"} - ); - $Res=ExecSql($p_cn,$sql); - }//if - }//for $i -} - -?> diff --git a/include/fortis_be.inc.php b/include/fortis_be.inc.php index 1e9cdf2cd..9e857f99f 100644 --- a/include/fortis_be.inc.php +++ b/include/fortis_be.inc.php @@ -42,7 +42,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { //corrige un bug de date $date_exec = str_replace(chr(34),"", $date_exec); - // Si LTXXXXX ou LT XXXXX dans le dtail + // Si LTXXXXX ou LT XXXXX dans le détail if ((ereg ("LT+([0-9]{5})", $detail, $regs)) || (ereg ("LT+[ ]+([0-9]{5})", $detail, $regs))) { $iduser = $regs[1]; } @@ -72,6 +72,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { where code='".$code."' and num_compte='".$num_compte."'"; + $sql=utf8_encode($sql); $Res=ExecSql($p_cn,$sql); $Num=pg_NumRows($Res); @@ -102,7 +103,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { $p_jrn, 'n')"; - $Res=ExecSql($p_cn,$Sql); + $Res=ExecSql($p_cn,$Sql,'latin1'); } } diff --git a/include/import_inc.php b/include/import_inc.php index f45160a98..9ac213766 100644 --- a/include/import_inc.php +++ b/include/import_inc.php @@ -29,7 +29,8 @@ require_once('class_user.php'); require_once('class_widget.php'); require_once('class_fiche.php'); require_once('class_acc_ledger.php'); -require_once('class_parm_code.php'); +require_once("class_acc_parm_code.php"); +require_once('class_acc_operation.php'); /*! ************************************************** * \brief Parse the file and insert the record @@ -58,7 +59,7 @@ StartSql($p_cn); require_once($p_format_csv); - echo "Importation termine."; + echo "Importation terminée."; // if importation succeeds then we can commit the change Commit($p_cn); @@ -72,8 +73,8 @@ function UpdateCSV($p_cn){ $count=FormatString($_POST['count']); $poste=FormatString($_POST['poste'.$count]); $concern=FormatString($_POST['e_concerned'.$count]); - $sql = "update import_tmp set poste_comptable='$poste' ,status='w',". - "jr_rapt='$concern' where code='$code'"; + $sql = utf8_encode("update import_tmp set poste_comptable='$poste' ,status='w',". + "jr_rapt='$concern' where code='$code'"); $Res=ExecSql($p_cn,$sql); } @@ -91,8 +92,8 @@ function UpdateCSV($p_cn){ function ShowBox($p_val,$counter,$p_cn,$p_form='form'){ $w=new widget('js_search_only'); $w->name='poste'.$counter; - $w->extra='cred'; - $w->extra2=$p_val['jrn']; + $w->extra='filter'; + $w->extra2='QuickCode'; $w->label=''; $w->table=0; if ( $p_form == 'remove' ) @@ -124,6 +125,7 @@ $oJrn=new Acc_Ledger($p_cn,$p_val['jrn']); } echo ''; echo ''; + echo widget::hidden('p_jrn',$p_val['jrn']); echo ''; echo ''; echo ""; @@ -132,7 +134,7 @@ $oJrn=new Acc_Ledger($p_cn,$p_val['jrn']); echo '"; - echo ""; + echo ""; if ( $p_form == 'form') { $str_update=sprintf("import_update('%s','%s','%s');", $_REQUEST['PHPSESSID'], @@ -169,13 +171,13 @@ function VerifImport($p_cn){ " order by date_exec,code"; $Res=ExecSql($p_cn,$sql); $Num=pg_NumRows($Res); - echo $Num." oprations complter.

"; + echo $Num." opérations à complèter.

"; $i=1; // include javascript for popup echo JS_SEARCH_CARD; echo JS_CONCERNED_OP; echo JS_AJAX_FICHE; - echo JS_PROTOTYPE_JS; + echo JS_PROTOTYPE; while($val = pg_fetch_array($Res)){ echo ''; echo dossier::hidden(); @@ -199,7 +201,7 @@ function ConfirmTransfert($p_cn,$periode){ if ( $val == false ) { echo ""; exit(); } @@ -215,7 +217,7 @@ function ConfirmTransfert($p_cn,$periode){ $Res=ExecSql($p_cn,$sql); $Num=pg_NumRows($Res); - echo $Num." oprations transfrer.

"; + echo $Num." opérations à transfèrer.

"; if ( $Num == 0 ) return; $i=1; while($val = pg_fetch_array($Res)){ @@ -244,11 +246,11 @@ function ConfirmTransfert($p_cn,$periode){ */ function TransferCSV($p_cn, $periode){ - //on obtient la priode courante + //on obtient la période courante $User=new User($p_cn); $periode = $User->get_periode(); - // on trouve les dates frontires de cette priode + // on trouve les dates frontières de cette période $sql = "select to_char(p_start,'DD-MM-YYYY') as p_start,to_char(p_end,'DD-MM-YYYY') as p_end". " from parm_periode where p_id = '".$periode."'"; @@ -257,7 +259,7 @@ function TransferCSV($p_cn, $periode){ if ( $val == false ) { echo ""; exit(); } @@ -274,7 +276,7 @@ function TransferCSV($p_cn, $periode){ StartSql($p_cn); $ResAll=ExecSql($p_cn,$sql); $Max=pg_NumRows($ResAll); - echo $Max." oprations transfrer.
"; + echo $Max." opérations à transférer.
"; for ($i = 0;$i < $Max;$i++) { $val=pg_fetch_array($ResAll,$i); @@ -294,7 +296,7 @@ function TransferCSV($p_cn, $periode){ $f->get_by_qcode($poste_comptable,false); $poste_comptable=$f->strAttribut(ATTR_DEF_ACCOUNT); - // Vrification que le poste comptable trouv existe + // Vérification que le poste comptable trouvé existe if ( $poste_comptable == '- ERROR -') $test=0; else @@ -309,7 +311,7 @@ function TransferCSV($p_cn, $periode){ if($test == 0) { $sqlupdate = "update import_tmp set status='n' WHERE code='".$code."' AND num_compte='".$num_compte."' or num_compte is null"; $Resupdate=ExecSql($p_cn,$sqlupdate); - echo "Poste comptable erronn pour l'opration ".$num_compte."-".$code.", rinitialisation du poste comptable
"; + echo "Poste comptable erronné pour l'opération ".$num_compte."-".$code.", réinitialisation du poste comptable
"; continue; } @@ -319,67 +321,68 @@ function TransferCSV($p_cn, $periode){ $seq=NextSequence($p_cn,'s_grpt'); $p_user = $_SESSION['g_user']; - $r=InsertJrnx($p_cn,"d",$p_user,$jrn,$bq_account,$date_exec,$montant,$seq,$periode); + $acc_op=new Acc_Operation($p_cn); + $acc_op->amount=$montant; + $acc_op->desc=$detail; + $acc_op->type="d"; + $acc_op->date=$date_exec; + $acc_op->user=$p_user; + $acc_op->poste=$bq_account; + $acc_op->grpt=$seq; + $acc_op->jrn=$jrn; + $acc_op->periode=$periode; + $acc_op->qcode=""; + $r=$acc_op->insert_jrnx(); - $r=InsertJrnx($p_cn,"c",$p_user,$jrn,$poste_comptable,$date_exec,$montant,$seq,$periode); + $acc_op->type="c"; + $acc_op->poste=$poste_comptable; + $acc_op->amount=$montant; + $r=$acc_op->insert_jrnx(); + //remove annoying double-quote $num_compte=str_replace('"','',$num_compte); $code=str_replace('\"','',$code); + $acc_op->comment=$detail.$num_compte." ".$code; + + $jr_id=$acc_op->insert_jrn(); - $jr_id=InsertJrn($p_cn,$date_exec,NULL,$jrn,$detail.$num_compte." ".$code,$seq,$periode); $internal=$oJrn->compute_internal_code($seq); $Res=ExecSql($p_cn,"update jrn set jr_internal='".$internal."' where ". " jr_id = ".$jr_id); // insert rapt - if ( trim($jr_rapt) != "" ) { - if ( strpos($jr_rapt,',') !== 0 ) - { - $aRapt=split(',',$jr_rapt); - foreach ($aRapt as $rRapt) { - if ( isNumber($rRapt) == 1 ) - { - InsertRapt($p_cn,$jr_id,$rRapt); - } - } - } - elseif ( isNumber($jr_rapt) == 1 ) - { - InsertRapt($p_cn,$jr_id,$jr_rapt); - } - } - - /* if ( isNumber($jr_rapt) == 1) - InsertRapt($p_cn,$jr_id,$jr_rapt); - */ - - echo "Tranfer de l'opration ".$code." effectu
"; - $sql2 = "update import_tmp set status='t' where code='".$code."'"; - $Res2=ExecSql($p_cn,$sql2); - } -} catch (Exception $e) { - Rollback($p_cn); - echo ''. - 'Erreur dans '.__FILE__.':'.__LINE__. - ' Message = '.$e->getMessage(). - ''; - } + + $acc_reconc=new Acc_Reconciliation($p_cn); + $acc_reconc->set_jr_id=$jr_id; + $acc_reconc->insert($jr_rapt); + + echo "Tranfert de l'opération ".$code." effectué
"; + $sql2 = "update import_tmp set status='t' where code='".$code."'"; + $Res2=ExecSql($p_cn,$sql2); + } + } catch (Exception $e) { + Rollback($p_cn); + echo ''. + 'Erreur dans '.__FILE__.':'.__LINE__. + ' Message = '.$e->getMessage(). + ''; + } Commit($p_cn); } /*! - ************************************************** - * \brief ShowForm for getting data about - * the bank transfert in cvs - * - * \param $p_cn database connection - * - * \return none - */ +************************************************** +* \brief ShowForm for getting data about +* the bank transfert in cvs +* +* \param $p_cn database connection +* +* \return none +*/ function ShowFormTransfert($p_cn){ $w=new widget("select"); @@ -391,7 +394,7 @@ $w=new widget("select"); $w->label='Journal'; echo $w->label." :".$w->IOValue('import_jrn',$jrn)."
"; // choose the bank account - $banque=new parm_code($p_cn,'BANQUE'); + $banque=new Acc_Parm_Code($p_cn,'BANQUE'); $bq=make_array($p_cn,"select pcm_val,pcm_lib from tmp_pcmn where pcm_val::text like '".$banque->p_value."%'"); $w->label='Banque'; echo "Compte en banque :".$w->IOValue('import_bq',$bq)."
"; diff --git a/include/impress_bilan.inc.php b/include/impress_bilan.inc.php index 43b91a9f2..6b08e39e8 100644 --- a/include/impress_bilan.inc.php +++ b/include/impress_bilan.inc.php @@ -39,7 +39,7 @@ include_once("postgres.php"); //----------------------------------------------------- $filter_year=" where p_exercice='".$User->get_exercice()."'"; $bilan=new Acc_Bilan($cn); -echo '
'; +echo '
'; echo ''; echo widget::hidden('p_action','impress'); diff --git a/include/impress_fiche.inc.php b/include/impress_fiche.inc.php index 84a06b373..b2c8a55cc 100644 --- a/include/impress_fiche.inc.php +++ b/include/impress_fiche.inc.php @@ -34,7 +34,7 @@ if ( isset ($_REQUEST['fd_id'])) { if ($with_amount) include_once("class_acc_account_ledger.php"); - echo '
'; + echo '
'; $submit=new widget(); $hid=new widget("hidden"); $fiche_id=new widget("hidden"); @@ -91,12 +91,12 @@ if ( isset ($_REQUEST['fd_id'])) { $fiche_def->GetAttribut(); foreach ($fiche_def->attribut as $attribut) { echo "
"; - // si solde demand affiche la col + // si solde demandé affiche la col //-- if ($attribut->ad_id==ATTR_DEF_ACCOUNT && $with_amount==true) { - echo ""; - echo ""; + echo ""; + echo ""; echo ""; } } diff --git a/include/impress_inc.php b/include/impress_inc.php index 2ff8e3016..90734c948 100644 --- a/include/impress_inc.php +++ b/include/impress_inc.php @@ -183,7 +183,7 @@ function get_dataJrnPdf($p_cn,$p_array,$p_limit,$p_offset) if ( $p_array['filter']==YES) { $cond=CreatePeriodeCond($p_array['periode']); if ( ! isset ($p_array['central']) ) { - // Journaux non centraliss + // Journaux non centralisés $Res=ExecSql($p_cn,"select j_id,to_char(j_date,'DD.MM.YYYY') as j_date, jr_internal, case j_debit when 't' then j_montant::text else ' ' end as deb_montant, @@ -197,7 +197,7 @@ function get_dataJrnPdf($p_cn,$p_array,$p_limit,$p_offset) " and ".$cond." order by j_date::date asc,jr_internal,j_debit desc". " limit ".$p_limit." offset ".$p_offset); }else { - // Journaux centraliss + // Journaux centralisés $cond=CreatePeriodeCond($p_array['periode'],"c_periode"); $Sql="select c_id as j_id, c_j_id, @@ -224,7 +224,7 @@ function get_dataJrnPdf($p_cn,$p_array,$p_limit,$p_offset) } else { // Grand Livre if (! isset($p_array['central'])) { - // Non centralis + // Non centralisé $cond=CreatePeriodeCond($p_array['periode']); $Res=ExecSql($p_cn,"select j_id,to_char(j_date,'DD.MM.YYYY') as j_date, jr_internal, @@ -239,7 +239,7 @@ function get_dataJrnPdf($p_cn,$p_array,$p_limit,$p_offset) " limit ".$p_limit." offset ".$p_offset); } else { - // Centralis + // Centralisé $cond=CreatePeriodeCond($p_array['periode'],"c_periode"); $Sql="select c_id as j_id, c_j_id, @@ -438,11 +438,11 @@ function get_rappel($p_cn,$p_jrnx_id,$p_jrn_id,$p_exercice,$which,$p_type,$p_cen if ( $p_type == 1 ) { // Vue filtree => Journaux - if ( $p_central == 0 ) { // Vue non centralise + if ( $p_central == 0 ) { // Vue non centralisée return array(0,0); } // p_central == 0 - // Vue filtree => Journaux & Jrn centralis + // Vue filtree => Journaux & Jrn centralisé if ( $p_central == 1 ) { $c_line=CountSql($p_cn,"select * from centralized left join parm_periode on c_periode=p_id ". " where c_jrn_def=$p_jrn_id and p_exercice='".$p_exercice."'". @@ -478,7 +478,7 @@ function get_rappel($p_cn,$p_jrnx_id,$p_jrn_id,$p_exercice,$which,$p_type,$p_cen } } // Type = jrn - if ($p_type==0 ) { // Si Grand Livre, prendre donne centralise{ + if ($p_type==0 ) { // Si Grand Livre, prendre donnée centralisée{ if ( $p_central == 1) { $c_line=CountSql($p_cn,"select * from centralized left join parm_periode on c_periode=p_id ". "where p_exercice='".$p_exercice."'". @@ -511,9 +511,9 @@ function get_rappel($p_cn,$p_jrnx_id,$p_jrn_id,$p_exercice,$which,$p_type,$p_cen $a=array($deb,$cred); return $a; } // central == 1 - else // Donne non centralise => pas de rappel + else // Donnée non centralisée => pas de rappel { - if ($p_central== 0) { // Si Grand Livre, prendre donne non centralise{ + if ($p_central== 0) { // Si Grand Livre, prendre donnée non centralisée{ return array(0,0); } }//else diff --git a/include/impress_jrn.inc.php b/include/impress_jrn.inc.php index bf95bf7c7..0ef84e431 100644 --- a/include/impress_jrn.inc.php +++ b/include/impress_jrn.inc.php @@ -41,7 +41,7 @@ require_once("class_acc_ledger.php"); $Jrn->get_name(); if ( $_POST['p_simple']==0 ) { - $Jrn->get_row( $_POST['from_periode'], + $Row=$Jrn->get_row( $_POST['from_periode'], $_POST['to_periode'], $p_cent); } @@ -55,7 +55,7 @@ require_once("class_acc_ledger.php"); $rep=""; $submit=new widget(); $hid=new widget("hidden"); - echo '
'; + echo '
'; echo '

'.$Jrn->name.'

'; echo "
'.$p_val['code'].''.$p_val['date_exec'].''.$p_val['montant'].' EUR
Journal : ".$oJrn->get_name()."poste comptable Destination : ".$p_val['bq_account']."
'.$w->IOValue().' '.$s->IOValue('poste'.$counter.'_label'). "n compte : ".$p_val['num_compte']."n° compte : ".$p_val['num_compte']."
".$attribut->ad_text."DbitCrditDébitCréditSolde
"; echo ''; @@ -123,7 +123,7 @@ require_once("class_acc_ledger.php"); "". "". "". - /* "". */ + /* "". */ "". ""; // set a filter for the FIN @@ -217,7 +217,7 @@ if ( count($ret) < 1 ) //----------------------------------------------------- // Form //----------------------------------------------------- -echo '
'; +echo '
'; echo ''.dossier::hidden(); echo '
Date commentaire internalPice justificativePièce justificative montant
'; $w=new widget("select"); @@ -232,16 +232,16 @@ $filter_year=" where p_exercice='".$User->get_exercice()."'"; $periode_start=make_array($cn,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); $w->label="Depuis"; print $w->IOValue('from_periode',$periode_start); -$w->label=" jusqu' "; +$w->label=" jusqu'à "; $periode_end=make_array($cn,"select p_id,to_char(p_end,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); print $w->IOValue('to_periode',$periode_end); print ""; $centralise=new widget("checkbox"); -$centralise->label="Depuis les journaux centraliss"; +$centralise->label="Depuis les journaux centralisés"; $centralise->table=1; print $centralise->IOValue('cent'); $a=array( - array('value'=>0,'label'=>'Detaill'), + array('value'=>0,'label'=>'Detaillé'), array('value'=>1,'label'=>'Simple') ); $w->selected=1; @@ -251,7 +251,7 @@ echo '
'; print widget::submit('bt_html','Visualisation'); echo ''; - echo ' Attention : en-cas d\'impression de journaux centralisés, dans le PDF, les montants débit et crédit calculés par page sont la somme des montants de la page uniquement. Si une opération est sur 2 pages ces montants diffèreront videmment. Ces montants doivent être égaux sur la dernière page. Pour vérifier la balance, utilisez la balance des comptes ou Avancé->Vérification'; + echo ' Attention : en-cas d\'impression de journaux centralisés, dans le PDF, les montants débit et crédit calculés par page sont la somme des montants de la page uniquement. Si une opération est sur 2 pages ces montants diffèreront évidemment. Ces montants doivent être égaux sur la dernière page. Pour vérifier la balance, utilisez la balance des comptes ou Avancé->Vérification'; echo '
'; ?> diff --git a/include/impress_listing_client.inc.php b/include/impress_listing_client.inc.php index 775066f10..574bf1786 100644 --- a/include/impress_listing_client.inc.php +++ b/include/impress_listing_client.inc.php @@ -38,13 +38,13 @@ echo "
". dossier::hidden()." - + - + @@ -80,7 +80,7 @@ if ( sizeof($year) == 0 ) echo "Aucun enregistrement dans les journaux"; exit(); } -$w->label="Anne concerne"; +$w->label="Année concernée"; print $w->IOValue('year',$year); print ""; echo '
Nom Numro TVA Numéro TVA Montant HTVA Montant TVA
'; diff --git a/include/impress_poste.inc.php b/include/impress_poste.inc.php index dc40441ac..903cc7bfa 100644 --- a/include/impress_poste.inc.php +++ b/include/impress_poste.inc.php @@ -34,9 +34,10 @@ include_once("postgres.php"); //----------------------------------------------------- // Form //----------------------------------------------------- -echo '
'; +echo '
'; echo JS_SEARCH_POSTE; echo JS_SEARCH_CARD; +echo JS_PROTOTYPE; echo '
'; echo widget::hidden('p_action','impress'); echo widget::hidden('type','poste'); @@ -67,14 +68,14 @@ $periode_start=make_array($cn,"select p_id,to_char(p_start,'DD-MM-YYYY') from pa $select->label="Depuis"; $select->selected=(isset($_REQUEST['from_periode']))?$_REQUEST['from_periode']:""; print $select->IOValue('from_periode',$periode_start); -$select->label=" jusqu' "; +$select->label=" jusqu'à "; $periode_end=make_array($cn,"select p_id,to_char(p_end,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); $select->selected=(isset($_REQUEST['to_periode']))?$_REQUEST['to_periode']:""; print $select->IOValue('to_periode',$periode_end); print ""; print ""; $all=new widget("checkbox"); -$all->label="Tous les postes qui en dpendent"; +$all->label="Tous les postes qui en dépendent"; $all->disabled=false; $all->selected=(isset($_REQUEST['poste_fille']))?true:false; echo $all->IOValue("poste_fille"); @@ -101,7 +102,7 @@ if ( isset( $_REQUEST['bt_html'] ) ) { require_once("class_acc_account_ledger.php"); $go=0; // we ask a poste_id - if ( strlen(trim($_GET['poste_id'])) != 0 && isNumber($_GET['poste_id']) ) + if ( isset($_GET['poste_id']) && strlen(trim($_GET['poste_id'])) != 0 && isNumber($_GET['poste_id']) ) { if ( isset ($_GET['poste_fille']) ) { @@ -130,7 +131,7 @@ if ( isset( $_REQUEST['bt_html'] ) ) { // A account is given if ( $go == 1) { - echo '
'; + echo '
'; if ( ! isset($_REQUEST['oper_detail']) ) { Acc_Account_Ledger::HtmlTableHeader(); $Poste->HtmlTable(); @@ -167,14 +168,14 @@ if ( isset( $_REQUEST['bt_html'] ) ) { if ( $go == 2) { if ( ! isset($_REQUEST['oper_detail']) ) { - echo '
'; + echo '
'; $fiche->HtmlTableHeader(); $fiche->HtmlTable(); $fiche->HtmlTableHeader(); echo "
"; } else { // Detail // - echo '
'; + echo '
'; $fiche->HtmlTableHeader(); $fiche->HtmlTableDetail(); $fiche->HtmlTableHeader(); @@ -189,7 +190,7 @@ if ( isset( $_REQUEST['bt_html'] ) ) { if ( sizeof($a_poste) == 0 ) exit; - echo '
'; + echo '
'; if ( ! isset ($_REQUEST['oper_detail'])) { diff --git a/include/impress_rapport.inc.php b/include/impress_rapport.inc.php index c4928d528..1763275a3 100644 --- a/include/impress_rapport.inc.php +++ b/include/impress_rapport.inc.php @@ -32,8 +32,8 @@ include_once("class_widget.php"); // after in pdf or cvs //----------------------------------------------------- if ( isset( $_GET['bt_html'] ) ) { - require_once("class_rapport.php"); - $Form=new rapport($cn,$_GET['form_id']); + require_once("class_acc_report.php"); + $Form=new Acc_Report($cn,$_GET['form_id']); $Form->get_name(); // step asked ? //-- @@ -59,7 +59,7 @@ if ( isset( $_GET['bt_html'] ) ) { $rep=""; $submit=new widget(); $hid=new widget("hidden"); - echo '
'; + echo '
'; if ( $_GET['type_periode'] == 0) { $t=($_GET['from_periode']==$_GET['to_periode'])?"":" -> ".getPeriodeName($cn,$_GET['to_periode'],'p_end'); echo '

'.$Form->id." ".$Form->name. @@ -151,7 +151,7 @@ if ( sizeof($ret) == 0 ) { //----------------------------------------------------- // Form //----------------------------------------------------- -echo '
'; +echo '
'; echo ''; $hidden=new widget("hidden"); echo $hidden->IOValue("p_action","impress"); @@ -171,7 +171,7 @@ $filter_year=" where p_exercice='".$User->get_exercice()."'"; $periode_start=make_array($cn,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); $w->label="Période comptable : Depuis"; print $w->IOValue('from_periode',$periode_start); -$w->label=" jusqu' "; +$w->label=" jusqu'à "; $periode_end=make_array($cn,"select p_id,to_char(p_end,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end"); print $w->IOValue('to_periode',$periode_end); print ""; @@ -192,17 +192,17 @@ echo ''; echo $w->IOValue('type_periode',$aCal); echo ''; $aStep=array( - array('value'=>0,'label'=>'Pas d\'tape'), + array('value'=>0,'label'=>'Pas d\'étape'), array('value'=>1,'label'=>'1 mois') ); -$w->label='Par tape de'; +$w->label='Par étape de'; echo ' '.$w->IOValue('p_step',$aStep); echo ''; echo ''; echo ' Attention : vous ne pouvez pas utiliser les étapes avec les dates calendriers.'; echo '
'; -echo ' Les clauses FROM sont ignors avec les dates calendriers'; +echo ' Les clauses FROM sont ignorés avec les dates calendriers'; echo '
'; print widget::submit('bt_html','Visualisation'); diff --git a/include/ing_be.inc.php b/include/ing_be.inc.php index c41efc659..17a7a1ad0 100644 --- a/include/ing_be.inc.php +++ b/include/ing_be.inc.php @@ -38,9 +38,10 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { list($num_compte, $code, $date_exec, $date_valeur, $montant, $devise, $montant2, $devise2, $rubriques, $detail, $zzz, $zzz, $date_comptable) = split(";", $data[$c]); # Bug CSV ING : "424 au lieu de 424 +#" $code = str_replace("\"", "", $code); - # Bug CSV ING : espace aprs la date + # Bug CSV ING : espace apres la date $date_exec = str_replace(" ", "", $date_exec); $date_valeur = str_replace(" ", "", $date_valeur); $date_exec = str_replace("\"", "", $date_exec); @@ -50,7 +51,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { $num_compte = $regs[0]; } - // Si LTXXXXX ou LT XXXXX dans le dtail + // Si LTXXXXX ou LT XXXXX dans le détail if ((ereg ("LT+([0-9]{5})", $detail, $regs)) || (ereg ("LT+[ ]+([0-9]{5})", $detail, $regs))) { $iduser = $regs[1]; } @@ -81,7 +82,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { $code = $annee."-".$code; $sql = "select * from import_tmp where code='".$code."' and num_compte='".$num_compte."'"; - $Res=ExecSql($p_cn,$sql); + $Res=ExecSql($p_cn,$sql,'latin1'); $Num=pg_NumRows($Res); if($Num > 0) { @@ -110,7 +111,7 @@ while (($data = fgetcsv($handle, 2000,'@')) !== FALSE) { $p_jrn, 'n')"; echo $sql; - $Res=ExecSql($p_cn,$Sql); + $Res=ExecSql($p_cn,$Sql,'latin1'); } } diff --git a/include/jrn.php b/include/jrn.php index d13e5d68e..3f95cbef2 100644 --- a/include/jrn.php +++ b/include/jrn.php @@ -30,7 +30,7 @@ require_once ('class_anc_plan.php'); require_once ('class_anc_operation.php'); require_once ('class_acc_ledger.php'); require_once ('class_acc_operation.php'); -require_once ('class_acc_jrn_info.php'); +require_once ('class_acc_ledger_info.php'); /*! * \brief Display the form to UPDATE account operation in the expert view @@ -100,7 +100,7 @@ function ShowOperationExpert($p_cn,$p_jr_id,$p_mode=1) // Is Paid $r.=""; $check=( $content['jr_rapt'] != null )?"CHECKED":"UNCHECKED"; - $r.='Pay '; + $r.='Payé '; } $r.=""; $r.=""; @@ -158,25 +158,44 @@ function ShowOperationExpert($p_cn,$p_jr_id,$p_mode=1) if ( $p_mode == 1 ) { $r.="
"; $r.= ""; - $r.="".$file->IOValue("pj","","Pice justificative").""; + $r.="".$file->IOValue("pj","","Pièce justificative").""; $r.="
"; } $r.="
"; $r.=""; $r.="Total ".$content['jr_montant']."
"; + if ( $content['jrn_def_type'] == 'VEN' ) { + /* count the number of additionnal info */ + $acc_jrn_info=new Acc_Ledger_Info($p_cn); + $acc_jrn_info->set_jrn_id($p_jr_id); + + /* if additional info > 0 show them */ + if ( $acc_jrn_info->count() > 0 ) { + $array=$acc_jrn_info->load_all(); + foreach ($array as $row) { + if ( strpos($row->id_type,'BON_COMMANDE') ===0) { + $r.="Num bon de commande : ".$row->ji_value.'
'; + } + if ( strpos($row->id_type,'OTHER') ===0) { + $r.="Autre info : ".$row->ji_value.'
'; + } + + } + } + } if ( $p_mode==1) { // show all the related operation $a=GetConcerned($p_cn,$content['jr_id']); $sessid=$_REQUEST["PHPSESSID"]; if ( $a != null ) { - $r.="Operation concerne
"; + $r.="Operation concernée
"; $r.= '
'; foreach ($a as $key => $element) { $operation=new Acc_operation($p_cn); $operation->jr_id=$element; - $r.=sprintf ('%s ', + $r.=sprintf ('%s ', $operation->get_internal($p_cn,$element), $element, $sessid, @@ -270,7 +289,7 @@ function ShowOperationUser($p_cn,$p_jr_id,$p_mode=1) // Is Paid $r.=""; $check=( $content['jr_rapt'] != null )?"CHECKED":"UNCHECKED"; - $r.='Pay '; + $r.='Payé '; $r.=""; @@ -494,7 +513,7 @@ function ShowOperationUser($p_cn,$p_jr_id,$p_mode=1) $r.=""; if ( $content['jrn_def_type'] == 'VEN' ) { /* count the number of additionnal info */ - $acc_jrn_info=new Acc_Jrn_Info($p_cn); + $acc_jrn_info=new Acc_Ledger_Info($p_cn); $acc_jrn_info->set_jrn_id($p_jr_id); /* if additional info > 0 show them */ @@ -515,7 +534,7 @@ function ShowOperationUser($p_cn,$p_jr_id,$p_mode=1) if ( $p_mode == 1 ) { $r.= ""; - $r.="".$file->IOValue("pj","","Pice justificative").""; + $r.="".$file->IOValue("pj","","Pièce justificative").""; $r.="
"; $r.="
"; @@ -526,13 +545,13 @@ function ShowOperationUser($p_cn,$p_jr_id,$p_mode=1) $sessid=$_REQUEST["PHPSESSID"]; if ( $a != null ) { - $r.="Operation concerne
"; + $r.="Operation concernée
"; $r.= '
'; foreach ($a as $key => $element) { $operation=new Acc_operation($p_cn); $operation->jr_id=$element; - $r.=sprintf ('%s ', + $r.=sprintf ('%s ', $operation->get_internal(), $element, $sessid, @@ -554,7 +573,7 @@ function ShowOperationUser($p_cn,$p_jr_id,$p_mode=1) } /*! - * \brief Vue des critures comptables + * \brief Vue des écritures comptables * * parm : * - p_dossier, diff --git a/include/modele.inc.php b/include/modele.inc.php index 3f01dd985..6e171b407 100644 --- a/include/modele.inc.php +++ b/include/modele.inc.php @@ -27,12 +27,49 @@ * */ require_once ('class_widget.php'); +$sa=(isset ( $_REQUEST['sa']))?$_REQUEST['sa']:'list'; +if ( isset ($_POST['upd']) && + isset($_POST['m'])){ + if ( isset($_POST['name']) && isset($_POST['desc'])) { + extract($_POST); + $cn=DbConnect(); + if ( strlen(trim($name)) !=0 + && getDbValue($cn,'select count(*) from modeledef where '. + 'mod_name=$1 and mod_id !=$2', + array(trim($name),$m)) == 0 + ) + { + ExecSqlParam($cn,"update modeledef set mod_name=$1, ". + " mod_desc=$2 where mod_id=$3 ", + array(trim($name),trim($desc),$m)); + + + } + } + $sa="list"; + } echo JS_CONFIRM; $cn=DbConnect(); + + + // IF FMOD_NAME is posted then must add a template if ( isset ($_POST["FMOD_NAME"]) ) { + $encoding=getDbValue($cn,"select encoding from pg_database where ". + " datname='".domaine.'dossier'.FormatString($_POST["FMOD_DBID"])."'"); + + if ( $encoding != 6 ) { + echo ""; + echo 'la base de donnée '. + domaine.'mod'.$_POST["FMOD_DBID"]." doit être migrée en unicode"; + echo ' Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu'; + + echo widget::button_href('Retour','admin_repo.php?action=dossier_mgt'); + exit(); + } + $mod_name=FormatString($_POST["FMOD_NAME"]); $mod_desc=FormatString($_POST["FMOD_DESC"]); if ( $mod_name != null) { @@ -43,11 +80,11 @@ if ( isset ($_POST["FMOD_NAME"]) ) { // get the mod_id $l_id=GetSequence($cn,'s_modid'); if ( $l_id != 0 ) { - $Sql=sprintf("CREATE DATABASE %sMOD%d encoding='ISO8859-1' TEMPLATE %sDOSSIER%s",domaine,$l_id,domaine,$_POST["FMOD_DBID"]); + $Sql=sprintf("CREATE DATABASE %sMOD%d encoding='UTF8' TEMPLATE %sDOSSIER%s",domaine,$l_id,domaine,$_POST["FMOD_DBID"]); ob_start(); if ( pg_query($cn,$Sql)==false) { ob_end_clean(); - echo "

Base de donnée ".domaine."dossier".$_POST['FMOD_DBID']." est accdée, déconnectez-vous en d'abord

"; + echo "

Base de donnée ".domaine."dossier".$_POST['FMOD_DBID']." est accèdée, déconnectez-vous en d'abord

"; $Res=ExecSql($cn,"delete from modeledef where mod_id=".$l_id); exit; @@ -160,42 +197,52 @@ if ( isset ($_POST["FMOD_NAME"]) ) { $Res=ExecSql($cn,"select mod_id,mod_name,mod_desc from modeledef order by mod_name"); $count=pg_NumRows($Res); +echo '
'; +echo "

Modèles

"; +if ( $sa=='list') { + if ( $count == 0 ) { + echo "No template available"; + } else { + -if ( $count == 0 ) { - echo "No template available"; - } else { - echo "

Modles

"; - echo '
'; - echo widget::button_href('Rafraîchir','admin_repo.php?action=modele_mgt'); - echo ''; - echo "". - "". - "". - ""; + echo widget::button_href('Rafraîchir','admin_repo.php?action=modele_mgt'); + echo widget::button_href('Ajouter','admin_repo.php?action=modele_mgt&sa=add'); + + echo '
NomDescription
'; + echo "". + "". + "". + ""; - for ($i=0;$i<$count;$i++) { - $mod=pg_fetch_array($Res,$i); - printf(''. - ''. - ''. - ''. - - '', - $mod['mod_id'], - $mod['mod_name'], - $mod['mod_desc']); + for ($i=0;$i<$count;$i++) { + $mod=pg_fetch_array($Res,$i); + printf(''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + '', + $mod['mod_id'], + $mod['mod_name'], + $mod['mod_desc']); }// for echo "
NomDescription
%d %s %s '. - ' '. - '
%d %s %s '. + widget::button_href('Effacer','?action=modele_mgt&sa=del&m='.$mod['mod_id']).''.widget::button_href('Modifie','?action=modele_mgt&sa=mod&m='.$mod['mod_id']).''.widget::button_href('Backup','backup.php?action=backup&sa=b&t=m&d=' + .$mod['mod_id']).'
"; }// if count = 0 echo "Si vous voulez récupérer toutes les adaptations d'un dossier ". -" dans un autre dossier, vous pouvez en faire un modle.". +" dans un autre dossier, vous pouvez en faire un modèle.". " Seules les fiches, la structure des journaux, les périodes,... seront reprises ". "et aucune donnée du dossier sur lequel le dossier est basé."; - + } +//--------------------------------------------------------------------------- +// Add a template +//--------------------------------------------------------------------------- +if ( $sa == 'add') { // Show All available folder $Res=ExecSql($cn,"select dos_id, dos_name,dos_description from ac_dossier order by dos_name"); @@ -224,19 +271,103 @@ if ( $count != 0 ) { Basé sur -Nettoyage des Documents et courriers (ce qui n'effacera pas les modles de documents) +Nettoyage des Documents et courriers (ce qui n'effacera pas les modèles de documents) Nettoyage de toutes les fiches (ce qui effacera client, opérations prédéfinies fournisseurs et documents) Nettoyage de la comptabilité analytique : effacement des plans et des postes, les opérations sont de toute façon effacées - - - - - - + +' + + + + + + echo '
'; + $name=getDbValue($cn, + "select mod_name from modeledef where ". + " mod_id=$1", + array($_GET['m'])); + $desc=getDbValue($cn, + "select mod_desc from modeledef where ". + " mod_id=$1", + array($_GET['m'])); + $wText=new widget('text'); + echo 'Nom : '.$wText->IOValue('name',$name); + $wDesc=new widget('textarea'); + $wDesc->heigh=5; + echo '
Description :
'; + echo $wDesc->IOValue('desc',$desc); + echo widget::hidden('m',$_GET['m']); + echo widget::hidden('action','modele_mgt'); + echo '
'; + echo widget::button_href('Retour','?action=modele_mgt'); + echo widget::submit('upd','Modifie'); + echo '
'; + } + +//--------------------------------------------------------------------------- +// action = del +//--------------------------------------------------------------------------- +if ( $sa == 'del' ) { + $cn=DbConnect(); + $name=getDbValue($cn,'select mod_name from modeledef where mod_id=$1',array($_REQUEST['m'])); + echo '
'; + echo widget::hidden('d',$_REQUEST['m']); + echo widget::hidden('sa','remove'); + echo '

Etes vous sure et certain de vouloir effacer '.$name.' ???

'; + $confirm=new widget('checkbox'); + $confirm->name="p_confirm"; + echo 'Cochez la case si vous êtes sûr de vouloir effacer ce modèle'; + echo $confirm->IOValue(); + echo widget::submit('remove','Effacer'); + echo widget::button_href('Retour','?action=modele_mgt'); + echo '
'; + } +//--------------------------------------------------------------------------- +// action = del +//--------------------------------------------------------------------------- +if ( $sa == 'remove' ) { + if ( ! isset ($_REQUEST['p_confirm'])) { + echo('Désolé, vous n\'avez pas coché la case'); + echo widget::button_href('Retour','?action=modele_mgt'); + exit(); + } + + $cn=DbConnect(); + $msg="dossier"; + $name=getDbValue($cn,"select mod_name from modeledef where mod_id=$1",array($_REQUEST['m'])); + if ( strlen(trim($name)) == 0 ) + { + echo "

$msg inexistant

"; + exit(); + } + $sql="drop database ".domaine."mod".FormatString($_REQUEST['m']); + ob_start(); + if ( pg_query($cn,$sql)==false) { + ob_end_clean(); + + echo "

+ Base de donnée ".domaine."mod".$_REQUEST['m']." est accèdée, déconnectez-vous d'abord

"; + exit; + } + ob_flush(); + $sql="delete from modeledef where mod_id=$1"; + ExecSqlParam($cn,$sql,array($_REQUEST['m'])); + print '

'; + print "Voilà le modèle $name est effacé

"; + echo widget::button_href('Retour','?action=modele_mgt'); + } + echo '
'; +?> diff --git a/include/opening.inc.php b/include/opening.inc.php new file mode 100644 index 000000000..37a9e13e3 --- /dev/null +++ b/include/opening.inc.php @@ -0,0 +1,170 @@ +'; + echo '
Etape 1 '; + + echo 'Choississez le dossier où sont les soldes à importer'; + $avail=GetAvailableFolder($User->id,$User->Admin()); + + if ( empty( $avail) ) { echo '*** Aucun dossier ***';exit();} + echo '
'; + echo widget::hidden('p_action','ouv'); + echo widget::hidden('sa','step2'); + echo dossier::hidden(); + $wAvail=new widget('select'); + /* compute select list */ + $array=array(); + $i=0; + foreach ($avail as $r) { + $array[$i]['value']=$r['dos_id']; + $array[$i]['label']=$r['dos_name']; + $i++; + } + + $wAvail->value=$array; + echo 'Choix du dossier :'.$wAvail->IOValue('f'); + echo widget::submit('ok','Continuer'); + + echo '
'; + echo '
'; + echo '
'; + exit(); +} +/* -------------------------------------------------- + * Step 2 choose now the exercice of this folder + */ +$back='user_advanced.php?p_action=ouv&'.dossier::get(); +if ( $sa=='step2') { + echo '
'. + '
Etape 2'. + '

'.dossier::name($_REQUEST['f']).'

'. + '
'. + ' Choississez l\'exercice du dossier '; + echo dossier::hidden(); + echo widget::hidden('p_action','ouv'); + echo widget::hidden('sa','step3'); + echo widget::hidden('f',$_REQUEST['f']); + $periode=make_array($cn,"select distinct p_exercice,p_exercice from parm_periode order by p_exercice"); + $w=new widget('select'); + $w->table=0; + $w->label='Periode'; + $w->readonly=false; + $w->value=$periode; + $w->name="p_periode"; + echo 'Période : '.$w->IOValue(); + echo widget::submit('ok','Continuer'); + echo dossier::hidden(); + echo "
"; + echo widget::button_href('Retour',$back); + exit(0); +} +/* -------------------------------------------------- + * select the ledger where we will import the data + */ +if ( $sa == 'step3') { + echo '
'. + '
Etape 3'. + '

'.dossier::name($_REQUEST['f']).'

'. + '
'. + ' Choississez le journal qui contiendra l\'opération d\'ouverture '; + echo dossier::hidden(); + echo widget::hidden('p_action','ouv'); + echo widget::hidden('sa','step4'); + echo widget::hidden('f',$_REQUEST['f']); + echo widget::hidden('p_periode',$_REQUEST['p_periode']); + $wLedger=new widget("select"); + $User=new User(DbConnect(dossier::id())); + $avail=$User->get_ledger('ODS'); + /* compute select list */ + $array=array(); + $i=0; + foreach ($avail as $r) { + $array[$i]['value']=$r['jrn_def_id']; + $array[$i]['label']=$r['jrn_def_name']; + $i++; + } + $wLedger->value=$array; + echo $wLedger->IOValue('p_jrn'); + echo widget::submit('ok','Continuer'); + echo dossier::hidden(); + echo "
"; + echo widget::button_href('Retour',$back); + exit(0); + +} +/* -------------------------------------------------- + * Step 4 we import data from the selected folder and year and + * transform it into a misc operation + */ +if ( $sa=='step4') { + echo '
'; + echo '
Dernière étape'; + $cn_target=DbConnect($_REQUEST['f']); + $saldo=new Acc_Ledger($cn_target,0); + $array=$saldo->get_saldo_exercice($_REQUEST['p_periode']); + /* we need to transform the array into a Acc_Ledger array */ + $result=array(); + $result['desc']='Ecriture d\'ouverture'; + $result['nb_item']=sizeof($array); + $result['p_jrn']=$_REQUEST['p_jrn']; + $idx=0; + + foreach ($array as $row ) { + $qcode='qc_'.$idx; + $poste='poste'.$idx; + $amount='amount'.$idx; + $ck='ck'.$idx; + $result[$qcode] = $row['j_qcode']; + if ( $row['j_qcode']=='') + $result[$poste] = $row['j_poste']; + $result[$amount] = abs($row['solde']); + if ( $row['solde'] > 0 ) $result[$ck]='on'; + $idx++; + } + $cn=DbConnect(dossier::id()); + $User=new User($cn); + $jrn=new Acc_Ledger($cn,$_REQUEST['p_jrn']); + echo '
'; + echo widget::hidden('p_action','quick_writing'); + echo dossier::hidden(); + echo widget::hidden('p_jrn',$_REQUEST['p_jrn']); + echo $jrn->show_form($result,0); + echo '
'; + echo '

Ne corrigez pas encore, cliquez continuer pour passer à l\'étape suivante

'; + echo widget::submit('correct_it','Continuer'); + echo '
'; + echo widget::button_href('Retour',$back); + + echo '
'; +} \ No newline at end of file diff --git a/include/param_jrn_add.inc.php b/include/param_jrn_add.inc.php index 705e8d36d..0ce5c4ef0 100644 --- a/include/param_jrn_add.inc.php +++ b/include/param_jrn_add.inc.php @@ -50,7 +50,7 @@ echo JS_SEARCH_POSTE; If ( isset ($_POST["JRN_ADD"]) ) { if ( !isset($_POST["p_jrn_name"]) || ! isset($_POST["p_jrn_type"] )) { - echo '

Un paramtre manque

'; + echo '

Un paramètre manque

'; } else { if ( $_POST['p_ech'] == 'no' ) { @@ -120,30 +120,30 @@ echo ' '; echo ''; echo ''; -echo ' Postes utilisables journal (dbit/crdit) '; +echo ' Postes utilisables journal (débit/crédit) '; echo ' '.$search.''; echo ''; echo ''; -echo ' Nombre de lignes par dfaut '; +echo ' Nombre de lignes par défaut '; echo ' '; echo ''; /* echo ''; -echo ' Postes utilisables journal (crdit) '; +echo ' Postes utilisables journal (crédit) '; echo ' '.$search.''; echo ''; */ echo ''; -echo ' Date d\'chance '; +echo ' Date d\'échéance '; echo ' Oui'; echo 'Non'; echo ''; echo ''; -echo ' Libell echance '; +echo ' Libellé echéance '; echo ' '; echo ''; @@ -170,8 +170,8 @@ $num=pg_NumRows($Res); echo ''; -echo ' Fiches Ddit'; -echo ' Fiches Crbit'; +echo ' Fiches Dédit'; +echo ' Fiches Crébit'; echo ''; // Show the fiche in deb section for ($i=0;$i<$num;$i++) { diff --git a/include/param_jrn_detail.inc.php b/include/param_jrn_detail.inc.php index e4b71b95c..4fd757293 100644 --- a/include/param_jrn_detail.inc.php +++ b/include/param_jrn_detail.inc.php @@ -52,10 +52,10 @@ if ( isset( $_REQUEST['p_jrn'] )) { if ( isset($_POST["efface"])) { if ( CountSql($cn,"select * from jrn where jr_def_id=".$_POST['p_jrn']." limit 3") == 0 ) { - ExecSql($cn,"delete from jrn_def where jrn_def_id=".$_POST['p_jrn']); + ExecSqlParam($cn,"delete from jrn_def where jrn_def_id=$1",array($_POST['p_jrn'])); } else { echo ' '; } @@ -66,7 +66,7 @@ if ( isset($_POST["efface"])) { // Update ledger If ( isset ($_POST["JRN_UPD"] )) { if ( !isset($_POST["p_jrn_name"]) ) { - echo '

Un paramtre manque

'; + echo '

Un paramètre manque

'; } else { if ( $_POST['p_ech'] == 'no' ) { @@ -155,18 +155,18 @@ echo ' '; echo ''; /*echo ''; -echo ' Postes utilisables journal (crdit) '; +echo ' Postes utilisables journal (crédit) '; echo ' '.$search.''; echo ''; */ echo ''; -echo ' Date d\'chance '; +echo ' Date d\'échéance '; if ( $l_line['jrn_def_ech'] == 't' ) { echo ' Oui'; echo 'Non '; @@ -178,7 +178,7 @@ if ( $l_line['jrn_def_ech'] == 'f' ) { echo ''; echo ''; -echo ' Libell echance '; +echo ' Libellé echéance '; echo ' '; echo ''; @@ -210,8 +210,8 @@ $rdeb=split(',',$l_line['jrn_def_fiche_deb']); $rcred=split(',',$l_line['jrn_def_fiche_cred']); echo ''; echo ''; -echo ''; -echo ''; +echo ''; +echo ''; echo ''; // Show the fiche in deb section for ($i=0;$i<$num;$i++) { diff --git a/include/param_pcmn.inc.php b/include/param_pcmn.inc.php index 4380cfd42..8c9325fac 100644 --- a/include/param_pcmn.inc.php +++ b/include/param_pcmn.inc.php @@ -64,7 +64,7 @@ echo ''; echo '
'; -/* Analyse ce qui est demand */ +/* Analyse ce qui est demandé */ /* Effacement d'une ligne */ if (isset ($_GET['action'])) { //----------------------------------------------------- @@ -74,15 +74,15 @@ if (isset ($_GET['action'])) { /* Ligne a enfant*/ $R=ExecSqlParam($cn,"select pcm_val from tmp_pcmn where pcm_val_parent=$1",array($_GET['l'])); if ( pg_NumRows($R) != 0 ) { - echo ""; + echo ""; } else { - /* Vrifier que le poste n'est pas utilis qq part dans les journaux */ + /* Vérifier que le poste n'est pas utilisé qq part dans les journaux */ $Res=ExecSqlParam($cn,"select * from jrnx where j_poste=$1",array($_GET['l'])); if ( pg_NumRows($Res) != 0 ) { - echo ""; + echo ""; } else { - $Del=ExecSql($cn,"delete from tmp_pcmn where pcm_val=".$_GET['l']); + $Del=ExecSqlParam($cn,"delete from tmp_pcmn where pcm_val=$1",array($_GET['l'])); } // if pg_NumRows } // if pg_NumRows } // isset ($l) @@ -120,11 +120,11 @@ if ( isset ( $_POST["Ajout"] ) ) { if ( $Count != 0 ) { // Alert message account already exists - echo ''; + echo ''; } else { - $Ret=ExecSqlParam($cn,"insert into tmp_pcmn (pcm_val,pcm_lib,pcm_val_parent,pcm_type) values ($1,$2,$3,$4)", array($p_val,$p_lib,$p_parent,$p_type)); + $Ret=ExecSqlParam($cn,"insert into tmp_pcmn (pcm_val,pcm_lib,pcm_val_parent,pcm_type) values ($1,$2,$3,$4)",array($p_val,$p_lib,$p_parent,$p_type)); } } } else { @@ -147,7 +147,7 @@ echo dossier::hidden();
Fiches Dbit Fiches Crdit Fiches Débit Fiches Crédit
- + diff --git a/include/param_sec.inc.php b/include/param_sec.inc.php index 84176f92a..44a1b93a0 100644 --- a/include/param_sec.inc.php +++ b/include/param_sec.inc.php @@ -52,7 +52,7 @@ $User=ExecSql($cn,"select use_id,use_first_name,use_name,use_login from ac_user $MaxUser=pg_NumRows($User); -echo '
'; +echo '
'; echo '
Classe Libell Libellé Parent Type
'; for ($i = 0;$i < $MaxUser;$i++) { @@ -140,7 +140,7 @@ if ( $action == "view" ) { if ( $MaxUser == 0 ) return; $l2_line=pg_fetch_array($User,0); - printf ('

Dtail utilisateur %s %s (%s)

', + printf ('

Détail utilisateur %s %s (%s)

', $l2_line['use_first_name'], $l2_line['use_name'], $l2_line['use_login']); @@ -176,21 +176,21 @@ if ( $action == "view" ) { } else $right = 3; if ( $right == 0 ) { echo ""; echo ''; echo ''; } if ( $right == 1 ) { - echo ''; + echo ''; echo ""; echo ''; } if ( $right == 2 ) { - echo ''; + echo ''; echo ''; echo "'; + echo ''; echo ''; echo ""; $l_change=$l_change."&access=1"; - echo ''; + echo ''; } if ( $right == 1) { $l_change=$l_change."&access=0"; - echo ''; + echo ''; echo ""; } @@ -257,7 +257,7 @@ if ( $action == "view" ) { echo ''; echo ""; } diff --git a/include/param_user.inc.php b/include/param_user.inc.php index 9c64445f3..8f1908e70 100644 --- a/include/param_user.inc.php +++ b/include/param_user.inc.php @@ -52,7 +52,7 @@ $User=ExecSql($cn,"select use_id,use_first_name,use_name,use_login from ac_user $MaxUser=pg_NumRows($User); -echo '
'; +echo '
'; echo '
"; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Lecture Ecriture Pas d\'accs Pas d\'accès"; echo "Lecture "; echo " Ecriture Pas d\'accs Pas d\'accès Lecture"; @@ -199,7 +199,7 @@ if ( $action == "view" ) { } if ( $right == 3 ) { - echo ' Pas d\'accs Pas d\'accès Lecture "; @@ -240,16 +240,16 @@ if ( $action == "view" ) { } if ( $right == 0 ) { echo ""; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Accs Accès Pas d\'accs Pas d\'accès "; - echo "Accs "; + echo "Accès "; echo " Change "; - echo "Accs "; + echo "Accès "; echo "
'; for ($i = 0;$i < $MaxUser;$i++) { @@ -140,7 +140,7 @@ if ( $action == "view" ) { if ( $MaxUser == 0 ) return; $l2_line=pg_fetch_array($User,0); - printf ('

Dtail utilisateur %s %s (%s)

', + printf ('

Détail utilisateur %s %s (%s)

', $l2_line['use_first_name'], $l2_line['use_name'], $l2_line['use_login']); @@ -176,21 +176,21 @@ if ( $action == "view" ) { } else $right = 3; if ( $right == 0 ) { echo ""; echo ''; echo ''; } if ( $right == 1 ) { - echo ''; + echo ''; echo ""; echo ''; } if ( $right == 2 ) { - echo ''; + echo ''; echo ''; echo "'; + echo ''; echo ''; echo ""; $l_change=$l_change."&access=1"; - echo ''; + echo ''; } if ( $right == 1) { $l_change=$l_change."&access=0"; - echo ''; + echo ''; echo ""; } @@ -254,7 +254,7 @@ if ( $action == "view" ) { echo ''; echo ""; } diff --git a/include/periode.inc.php b/include/periode.inc.php index 56d3d36e6..cefd0a5b6 100644 --- a/include/periode.inc.php +++ b/include/periode.inc.php @@ -25,7 +25,7 @@ $gDossier=dossier::id(); require_once ('class_widget.php'); require_once("preference.php"); require_once ('class_periode.php'); -echo '
'; +echo '
'; $cn=DbConnect($gDossier); //----------------------------------------------------- // Periode @@ -100,7 +100,7 @@ if ( $action== "delete_per" ) { $p_per=$_GET["p_per"]; // Check if the periode is not used if ( CountSql($cn,"select * from jrnx where j_tech_per=$p_per") != 0 ) { - echo '

Dsol mais cette priode est utilise

'; + echo '

Désolé mais cette période est utilisée

'; } else { $Res=ExecSql($cn,"delete from parm_periode where p_id=$p_per"); @@ -123,7 +123,7 @@ if ( $choose=="yes" ) { $wSel=new widget("select"); $wSel->value=$sel_jrn; $wSel->name='jrn_def_id'; - echo "Choississez global ou uniquement le journal fermer".$wSel->IOValue(); + echo "Choississez global ou uniquement le journal à fermer".$wSel->IOValue(); echo widget::submit('choose','Valider'); echo widget::hidden('p_action','periode'); echo ""; diff --git a/include/poste.inc.php b/include/poste.inc.php index 02e756c7b..9db48878e 100644 --- a/include/poste.inc.php +++ b/include/poste.inc.php @@ -22,26 +22,26 @@ * \brief p_action contains the main action (always poste here) * action contains the sub action */ -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); //----------------------------------------------------- // confirm mod if ( isset( $_POST['confirm_mod'] ) ) { extract($_POST); - $update=new parm_code($cn,$p_code); + $update=new Acc_Parm_Code($cn,$p_code); $update->p_comment=$p_comment; $update->p_value=$p_value; - $update->Save(); + $update->save(); } -$object=new parm_code($cn); +$object=new Acc_Parm_Code($cn); -$all=$object->LoadAll(); +$all=$object->load_all(); echo '
'; echo '
"; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Lecture Ecriture Pas d\'accs Pas d\'accès"; echo "Lecture "; echo " Ecriture Pas d\'accs Pas d\'accès Lecture"; @@ -199,7 +199,7 @@ if ( $action == "view" ) { } if ( $right == 3 ) { - echo ' Pas d\'accs Pas d\'accès Lecture "; @@ -237,16 +237,16 @@ if ( $action == "view" ) { } if ( $right == 0 ) { echo ""; - echo "Pas d'accs"; + echo "Pas d'accès"; echo " Accs Accès Pas d\'accs Pas d\'accès "; - echo "Accs "; + echo "Accès "; echo " Change "; - echo "Accs "; + echo "Accès "; echo "
'; for ($i=0;$i'; - echo $all[$i]->Display(); + echo $all[$i]->display(); echo ' + + +update_global_pref('TOPMENU',$_POST['topmenu']); -} $topmenu=new widget('select'); $topmenu->name='topmenu'; $topmenu->selected=$_SESSION['g_topmenu']; @@ -108,58 +109,62 @@ $array=array( array('value'=>'SELECT','label'=>'Menu deroulant') ); $topmenu->value=$array; -echo '

Style de menu

'; -echo ''; -echo '
'; -echo $topmenu->IOValue(); -echo widget::submit('sub_topmenu','Sauver'); -echo ''; -echo '
'; +?> + + + +cn=$cn; + + if ( isset ($_POST['periode'])) + { $periode=$_POST["periode"]; $User->set_periode($periode); echo_debug('pref.inc',__LINE__,"Periode returns ".PeriodeClosed($cn,$periode)); + } $l_user_per=$User->get_periode(); + if ( $l_user_per=="") + $l_user_per=getDbValue($cn,"select min(p_id) from parm_periode where p_closed='f'"); + // if periode is closed then warns the users if ( PeriodeClosed($cn,$l_user_per)=='t') { - $msg= '

Attention cette période est fermée, vous ne pourrez rien modifier dans le module comptable

'; + $msg= '

Attention cette période est fermée, vous ne pourrez rien modifier dans le module comptable

'; } $l_form_per=FormPeriode($cn,$l_user_per,ALL); ?> -

Période

- - -
'; $w=new widget('hidden'); $w->name='id'; @@ -59,12 +59,13 @@ echo ""; if ( isset ($_POST['mod'] )) { echo '
'; - echo "Voulez-vous vraiment modifier ?"; + echo '
'; + echo "Voulez-vous vraiment modifier ?"; echo ''; echo ""; $id=$_POST['id']; - echo $all[$id]->Input(); + echo $all[$id]->form(); echo "
"; $h=new widget('hidden'); $h->name='p_action'; @@ -73,6 +74,7 @@ if ( isset ($_POST['mod'] )) echo widget::submit('confirm_mod','Confirme'); echo widget::submit('no','Cancel'); echo ""; + echo '
'; echo "
"; } diff --git a/include/poste.php b/include/poste.php index 9673d1b74..4f0efe4c7 100644 --- a/include/poste.php +++ b/include/poste.php @@ -67,7 +67,7 @@ function GetNumberLine($p_dossier,$p_jrn) $cn=DbConnect($p_dossier); $Res=ExecSql($cn,"select jrn_deb_max_line,jrn_cred_max_line from jrn_def where jrn_def_id=$p_jrn"); if ( pg_NumRows($Res) == 0 ) { - echo "

Journal non trouv

"; + echo "

Journal non trouvé

"; // return (3,3); } $l_line=pg_fetch_array($Res,0); diff --git a/include/postgres.php b/include/postgres.php index 685732d66..a465da48e 100644 --- a/include/postgres.php +++ b/include/postgres.php @@ -127,14 +127,14 @@ de données"); * \param $p_string sql string * \return false if error otherwise true */ -function ExecSql($p_connection, $p_string) { +function ExecSql($p_connection, $p_string,$p_encoding='utf8') { echo_debug('postgres.php',__LINE__,"SQL = $p_string"); // probl. with Ubuntu & UTF8 //---- - pg_set_client_encoding($p_connection,'latin1'); + pg_set_client_encoding($p_connection,$p_encoding); ob_start(); - $ret=@pg_query($p_connection,$p_string); + $ret=pg_query($p_connection,$p_string); if ( ! $ret ) { ob_end_clean(); throw new Exception (" SQL ERROR $p_string ",1); @@ -158,15 +158,15 @@ function ExecSqlParam($p_connection, $p_string,$p_array) { // probl. with Ubuntu & UTF8 //---- - pg_set_client_encoding($p_connection,'latin1'); - ob_start(); + pg_set_client_encoding($p_connection,'utf8'); + //ob_start(); $ret=pg_query_params($p_connection,$p_string,$p_array); if ( ! $ret ) { - ob_end_clean(); - $r=$p_string."array ".var_export($p_array,TRUE); - throw new Exception (" SQL ERROR $r",1); + //ob_end_clean(); + $r=$p_string."array ".var_export($p_array,TRUE); + throw new Exception (" SQL ERROR $r",1); } - ob_end_clean(); + //ob_end_clean(); return $ret; } @@ -341,7 +341,7 @@ function get_login($p_uid) } /*! SyncRight - * \brief Synchronize les droits par d�faut + * \brief Synchronize les droits par d�faut * avec les journaux existants *\param $p_dossier dossier id * \param $p_user user id @@ -482,20 +482,23 @@ function save_upload_document ($cn,$seq) { * with the value * \param $p_cn database connection * \param $p_sql the sql stmt example :select s_value from - * document_state where s_id=2 - * \param $p_array if not null we use execSqlParam - * \return only the first value + document_state where s_id=2 + *\param $p_array if array is not null we use the ExecSqlParm (safer) + *\see ExecSqlParm + * \return only the first value or an empty string if nothing is found */ -function getDbValue($p_cn,$sql,$p_array=null) +function getDbValue($p_cn,$p_sql,$p_array=null) { - if ( $p_array == null ) - $ret=ExecSql($p_cn,$sql); - else - $ret=ExecSqlParam($p_cn,$sql,$p_array); + if ( $p_array == null) { + $ret=ExecSql($p_cn,$p_sql); + } else { + $ret=ExecSqlParam($p_cn,$p_sql,$p_array); + } if ( pg_NumRows($ret) == 0 ) return ""; $r=pg_fetch_row($ret,0); return $r[0]; + } /*!\brief test if a sequence exist */ /* \return true if the seq. exist otherwise false @@ -510,4 +513,179 @@ function create_sequence($p_cn,$p_name) { $sql="create sequence ".$p_name; ExecSql($p_cn,$sql); } + +/*! + ************************************************** + * \brief Get version of a database, the content of the + * table version + * + * \param $p_cn database connection + * + * \return version number + * + */ +function get_version($p_cn) { + $Res=ExecSql($p_cn,"select val from version"); + $a=pg_fetch_array($Res,0); + return $a['val']; +} +/*! execute_script + ************************************************** + * \brief Execute a sql script + * + * \param $p_cn database + * \param $script script name + */ +function execute_script($p_cn,$script) { + + if ( DEBUG=='false' ) ob_start(); + $hf=fopen($script,'r'); + if ( $hf == false ) { + echo 'Ne peut ouvrir '.$script; + exit(); + } + $sql=""; + $flag_function=false; + while (!feof($hf)) { + $buffer=fgets($hf); + $buffer=str_replace ("$","\$",$buffer); + print $buffer."
"; + // comment are not execute + if ( substr($buffer,0,2) == "--" ) { + //echo "comment $buffer"; + continue; + } + // Blank Lines Are Skipped + If ( Strlen($buffer)==0) { + //echo "Blank $buffer"; + Continue; + } + if ( strpos(strtolower($buffer),"create function")===0 ) { + echo "found a function"; + $flag_function=true; + $sql=$buffer; + continue; + } + if ( strpos(strtolower($buffer),"create or replace function")===0 ) { + echo "found a function"; + $flag_function=true; + $sql=$buffer; + continue; + } + // No semi colon -> multiline command + if ( $flag_function== false && strpos($buffer,';') == false ) { + $sql.=$buffer; + continue; + } + if ( $flag_function ) { + if ( strpos(strtolower($buffer), "language plpgsql") === false && + strpos(strtolower($buffer), "language 'plpgsql'") === false ) { + $sql.=$buffer; + continue; + } + } else { + // cut the semi colon + $buffer=str_replace (';','',$buffer); + } + $sql.=$buffer; +echo_debug('setup.php',__LINE__,"Execute sql $sql"); + if ( ExecSql($p_cn,$sql) == false ) { + Rollback($p_cn); + if ( DEBUG=='false' ) ob_end_clean(); + print "ERROR : $sql"; + exit(); + } + $sql=""; + $flag_function=false; + print "
"; + } // while (feof) + fclose($hf); + if ( DEBUG=='false' ) ob_end_clean(); +} +/*!\brief loop to apply all the path to a folder or + * a template + * \param $p_cn database connexion + * \param $p_name database name + * + */ +function apply_patch($p_cn,$p_name,$from_setup=1) +{ + $MaxVersion=DBVERSION-1; + echo '
    '; + $add=($from_setup==0)?'admin/':''; + for ( $i = 4;$i <= $MaxVersion;$i++) + { + $to=$i+1; + if ( get_version($p_cn) <= $i ) { + echo "
  • Patching ".$p_name. + " from the version ".get_version($p_cn)." to $to
  • "; + + execute_script($p_cn,$add.'sql/patch/upgrade'.$i.'.sql'); + if ( DEBUG=='false' ) ob_start(); + // specific for version 4 + if ( $i == 4 ) + { + $sql="select jrn_def_id from jrn_def "; + $Res=ExecSql($p_cn,$sql); + $Max=pg_NumRows($Res); + for ($seq=0;$seq<$Max;$seq++) { + $row=pg_fetch_array($Res,$seq); + $sql=sprintf ("create sequence s_jrn_%d",$row['jrn_def_id']); + ExecSql($p_cn,$sql); + } + } + // specific to version 7 + if ( $i == 7 ) + { + // now we use sequence instead of computing a max + // + $Res2=ExecSql($p_cn,'select coalesce(max(jr_grpt_id),1) as l from jrn'); + $Max2= pg_NumRows($Res2) ; + if ( $Max2 == 1) { + $Row=pg_fetch_array($Res2,0); + var_dump($Row); + $M=$Row['l']; + ExecSql($p_cn,"select setval('s_grpt',$M,true)"); + } + } + // specific to version 17 + if ( $i == 17 ) + { + execute_script($p_cn,$add.'sql/patch/upgrade17.sql'); + $max=getDbValue($p_cn,'select last_value from s_jnt_fic_att_value'); + AlterSequence($p_cn,'s_jnt_fic_att_value',$max+1); + } // version + + // reset sequence in the modele + //-- + if ( $i == 30 && $p_name=="mod" ) + { + $a_seq=array('s_jrn','s_jrn_op','s_centralized', + 's_stock_goods','c_order','s_central'); + foreach ($a_seq as $seq ) { + $sql=sprintf("select setval('%s',1,false)",$seq); + $Res=ExecSql($p_cn,$sql); + } + $sql="select jrn_def_id from jrn_def "; + $Res=ExecSql($p_cn,$sql); + $Max=pg_NumRows($Res); + for ($seq=0;$seq<$Max;$seq++) { + $row=pg_fetch_array($Res,$seq); + $sql=sprintf ("select setval('s_jrn_%d',1,false)",$row['jrn_def_id']); + ExecSql($p_cn,$sql); + } + + } + if ( $i == 36 ) { + /* check the country and apply the path */ + $res=ExecSql($p_cn,"select pr_value from parameter where pr_id='MY_COUNTRY'"); + $country=pg_fetch_result($res,0,0); + execute_script($p_cn,$add."sql/patch/upgrade36.".$country.".sql"); + ExecSql($p_cn,'update tmp_pcmn set pcm_type=find_pcm_type(pcm_val)'); + } + if ( DEBUG == 'false') ob_end_clean(); + } + } + echo '
'; +} ?> diff --git a/include/pref.inc.php b/include/pref.inc.php index bb050aa9e..7616c0e41 100644 --- a/include/pref.inc.php +++ b/include/pref.inc.php @@ -24,19 +24,22 @@ */ require_once('class_widget.php'); require_once('class_user.php'); +require_once('class_acc_report.php'); +echo '
'; +//---------------------------------------------------------------------- +// Change password -echo '
'; - -if ( isset ($_POST['spass']) ) { - if ( $_POST['pass_1'] != $_POST['pass_2'] ) { -?> +if ( isset($_POST['pass_1']) + && strlen(trim($_POST['pass_1'])) != 0 ) { + if ($_POST['pass_1'] != $_POST['pass_2'] ) { + ?> Mot de passe est modifié"; } } + $url=$_SERVER['REQUEST_URI']; if ( ! isset ($_REQUEST['gDossier']) ) { echo ''; + } else { + echo '

Changez vos préférences

'; } ?> -

Mot de passe

-
- - - - -
-
+
+ +
+
Options Générales + + +"; ?> -

Thème

- -
+Mot de passe : + + +
- - - - - - - -
Style
- +

+

+Thème + + +
+Style de menu + +IOValue();?> +
- - %s ',$l_form_per); ?> - -
PERIODE
- + Période + + + + -

Taille des pages

-
- - - + + - -
Taille des pages + +
Taille des pages -
-
+ + + +
'; + echo ' Options pour la page d\'accueil'; + echo 'Mini-Rapport : '; + $rapport=new Acc_Report($cn); + $aRapport=$rapport->make_array(); + $aRapport[]=array("value"=>0,"label"=>'Aucun mini rapport'); + $wRapport=new widget("select"); + $wRapport->name="minirap"; + $wRapport->selected=$User->get_mini_report(); + $wRapport->value=$aRapport; + echo $wRapport->IOValue(); + echo 'Le mini rapport est un rapport qui s\'affiche sur votre page d\'accueil'; + echo '
'; +} + + + +echo widget::submit("val","Valider"); +echo ''; +if ( ! $inside_dossier ) { echo ''; - } +} diff --git a/include/preference.php b/include/preference.php index 7a8209ea1..7dec74084 100644 --- a/include/preference.php +++ b/include/preference.php @@ -119,7 +119,8 @@ function FormPeriode($p_cn,$l_default=0,$p_type=OPEN,$p_suff="") * \param p_periode * * \return array containing the start date & the end date - * + * \todo the function get_periode@preference.php must be replaced + * by Periode::get_limit * */ function get_periode($p_cn,$p_periode) @@ -188,7 +189,7 @@ function ShowDevise($p_cn) echo ''; echo ""; echo ''; - echo ''; + echo ''; echo ""; $Res=ExecSql($p_cn,"select pm_id,pm_code,pm_rate from parm_money order by pm_code"); diff --git a/include/preod.inc.php b/include/preod.inc.php new file mode 100644 index 000000000..b0ed018c5 --- /dev/null +++ b/include/preod.inc.php @@ -0,0 +1,109 @@ +'; + echo ''; + $sel=new widget('select'); + $sel->name="jrn"; + $sel->value=make_array($cn,"select jrn_def_id,jrn_def_name from ". + " jrn_def order by jrn_def_name"); + // Show a list of ledger + $sa=(isset($_REQUEST['sa']))?$_REQUEST['sa']:""; + $sel->selected=$sa; + echo 'Choississez un journal '.$sel->IOValue(); + $wCheck=new widget("checkbox"); + if ( isset($_REQUEST['direct'])) { + $wCheck->selected=true; + } + echo 'Ecriture directe'.$wCheck->IOValue('direct'); + + echo dossier::hidden(); + $hid=new widget("hidden"); + echo $hid->IOValue("sa","jrn"); + echo $hid->IOValue("p_action","preod"); + echo '
'; + echo widget::submit('Accepter','Accepter'); + echo ''; + + // if $_REQUEST[sa] == del delete the predefined operation + if ( $sa == 'del') { + $op=new Pre_operation($cn); + $op->od_id=$_REQUEST['od_id']; + $op->delete(); + $sa='jrn'; + } + + // if $_REQUEST[sa] == jrn show the predefined operation for this + // ledger + if ( $sa == 'jrn' ) { + $op=new Pre_operation($cn); + $op->set_jrn($_GET['jrn']); + if ( isset($_GET['direct'])) { + $op->od_direct='true'; + } else { + $op->od_direct='false'; + } + $array=$op->get_list_ledger(); + if ( empty($array) == true ) { + echo "Aucun enregistrement"; + exit(); + } + + echo '
CODE Valeur
(par rapport l\'euro)
Valeur
(par rapport à l\'euro)
'; + $count=0; + foreach ($array as $row ) { + + if ( $count %2 == 0 ) + echo ''; + else + echo ''; + echo ''; + echo ''; + echo ''; + + } + echo '
'.$row['od_name'].''; + echo '
'; + echo dossier::hidden(); + echo $hid->IOValue("sa","del"); + echo $hid->IOValue("p_action","preod"); + echo $hid->IOValue("del",""); + echo $hid->IOValue("od_id",$row['od_id']); + echo $hid->IOValue("jrn",$_GET['jrn']); + + $b=''; + echo $b; + echo '
'; + + echo '
'; + } + echo '
'; +?> \ No newline at end of file diff --git a/include/quick_writing.inc.php b/include/quick_writing.inc.php index c48694559..01e043715 100644 --- a/include/quick_writing.inc.php +++ b/include/quick_writing.inc.php @@ -44,17 +44,15 @@ function show_direct_form($cn,$ledger,$p_array) { // Show the predef operation // Don't forget the p_jrn echo '
'; - echo dossier::hidden(); echo widget::hidden('p_action',$_REQUEST['p_action']); - - echo ''; - $op=new Pre_operation($cn); - $op->p_jrn=$id; - $op->od_direct='t'; - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prédéfinie'); - echo $op->show_button(); + $op=new Pre_operation_detail($cn); + $op->set('ledger',$_REQUEST ['p_jrn']); + $op->set('ledger_type',$ledger->get_type()); + $op->set('direct','t'); + echo $op->form_get(); echo '
'; + + echo '
'; echo dossier::hidden(); @@ -62,6 +60,9 @@ function show_direct_form($cn,$ledger,$p_array) { echo $ledger->show_form($p_array); + + echo widget::button('add','Ajout d\'une ligne','onClick="quick_writing_add_row()"'); + echo widget::submit('summary','Sauvez'); echo '
Débit = @@ -72,6 +73,8 @@ function show_direct_form($cn,$ledger,$p_array) { echo ''; + echo ""; + echo "
".JS_CALC_LINE."
"; echo '
'; @@ -83,7 +86,7 @@ $ledger->with_concerned=true; // no ledger selected, propose one if ($id == -1 ) { - echo '
'; + echo '
'; // Vide echo '
'; @@ -100,7 +103,7 @@ if ( $User->AccessJrn($cn,$id) == false ) { "; exit(); } -echo '
'; +echo '
'; echo '

Journal : '.$ledger->get_name().'

'; echo widget::button_href('Autre journal','?p_action='.$_REQUEST['p_action'].'&'.dossier::get()); // User can write ? @@ -129,32 +132,42 @@ if ( isset($_GET['show_form']) || isset($_POST['correct_it']) ) { // if ( isset ($_GET['use_opd'])) { $op=new Pre_op_advanced($cn); - $op->set_od_id($_REQUEST['pre_def']); - //$op->p_jrn=$id; - - $p_post=$op->compute_array(); + $p_post=null; + if ( isset($_REQUEST['pre_def']) && $_REQUEST['pre_def'] != ''){ + $op->set_od_id($_REQUEST['pre_def']); + //$op->p_jrn=$id; + + $p_post=$op->compute_array(); + } show_direct_form($cn,$ledger,$p_post); exit(); } if ( isset($_POST['summary'])) { - echo ''; - echo $ledger->show_form($_POST,1); - echo dossier::hidden(); - echo widget::hidden('p_action',$_REQUEST['p_action']); - - echo widget::submit('save_it',"Sauver"); - echo widget::submit('correct_it','Corriger'); - - $chk=new widget('checkbox'); - $chk->selected=false; - echo "Sauvez l'opération ?"; - echo $chk->IOValue('save_opd'); - - echo ''; - exit(); + try { + $ledger->verify($_POST ); + } catch (AcException $e) { + echo '"; + show_direct_form($cn,$ledger,$_POST); + exit(); + } + echo '
'; + echo $ledger->show_form($_POST,1); + echo dossier::hidden(); + echo widget::hidden('p_action',$_REQUEST['p_action']); + + echo widget::submit('save_it',"Sauver"); + echo widget::submit('correct_it','Corriger'); + + $chk=new widget('checkbox'); + $chk->selected=false; + echo "Sauvez l'opération ?"; + echo $chk->IOValue('save_opd'); + echo '
'; + exit(); + } if ( isset($_POST['save_it' ])) { $array=$_POST; @@ -162,7 +175,12 @@ if ( isset($_POST['save_it' ])) { try { $ledger->save($array); echo '

Opération enregistrée

'; - // echo $ledger->show_form($array,true); + echo widget::button_href('Autre opération dans ce journal', + "?".dossier::get(). + '&show_form'. + '&p_action=quick_writing&p_jrn='. + $_REQUEST['p_jrn']); + } catch (AcException $e) { echo '"; show_direct_form($cn,$ledger,$_POST); diff --git a/include/report.inc.php b/include/report.inc.php new file mode 100644 index 000000000..48fd8fe02 --- /dev/null +++ b/include/report.inc.php @@ -0,0 +1,150 @@ +Check(); +$User->can_request($cn,FORM); + + +$cn=DbConnect($gDossier); + +$nocookie='&PHPSESSID='.$_REQUEST['PHPSESSID']; +$rap=new Acc_Report($cn); + +if ( isset ($_POST["del_form"]) ) { + $rap->id=$_POST['fr_id']; + $rap->delete(); + // header('Location:'.$_SERVER["SCRIPT_URI"].'?'.$str_dossier.$nocookie); +} +if ( isset ($_POST["record"] )) { + $rap->from_array($_POST); + $rap->save(); + // header('Location:'.$_SERVER["SCRIPT_URI"].'?'.$str_dossier.$nocookie); +} +if ( isset($_POST['update'])) { + $rap->from_array($_POST); + $rap->save($_POST); + + } +if ( isset($_POST['upload'])) { + $rap->upload(); + +} + +$lis=$rap->get_list(); +$p_action='p_action=defreport'; +echo ''; + echo JS_SEARCH_POSTE; + echo JS_PROTOTYPE; +if ( isset($_POST['upload'])) { + exit(); + } +if ( isset ($_REQUEST["action"]) ) { + + $action=$_REQUEST ["action"]; + $rap->id=(isset($_REQUEST ['fr_id']))?$_REQUEST['fr_id']:0; + + if ($action == "add" && ! isset($_REQUEST['fr_id'])) + { + + echo '
'; + echo '

Définition

'; + echo '
'; + echo dossier::hidden(); + $rap->id=0; + echo $rap->form(15); + + echo widget::submit("record","Sauve"); + echo '
'; + echo 'Les lignes vides seront effacées'; + echo "
"; + echo '
'; + + echo '
'; + echo '

Importation

'; + echo dossier::hidden(); + $rap->id=0; + $wUpload=new widget('file'); + $wUpload->name='report'; + $wUpload->value='report_value'; + echo 'Importer ce rapport '; + echo $wUpload->IOValue(); + echo widget::submit("upload","Sauve"); + echo '
'; + echo 'Les lignes vides seront effacées'; + echo "
"; + + } + if ($action=="view" ) + { + echo '
'; + $rap->id=$_REQUEST ['fr_id']; + echo '
'; + $rap->load(); + echo $rap->form(); + echo widget::hidden("fr_id",$rap->id); + echo widget::hidden("action","record"); + echo widget::submit("update","Mise a jour"); + echo widget::submit("del_form","Effacement"); + $w=new widget('button'); + $w->name="export"; + $w->javascript="report_export('".$_REQUEST['PHPSESSID']."','".$gDossier."','".$rap->id."')"; + $w->label='Export'; + echo $w->IOValue(); + echo ''; + echo '
'; + echo 'Les lignes vides seront effacées'; + echo "
"; + } + +} + + + +html_page_stop(); +?> diff --git a/include/restore.inc.php b/include/restore.inc.php new file mode 100644 index 000000000..f5f28c9a5 --- /dev/null +++ b/include/restore.inc.php @@ -0,0 +1,171 @@ +'.widget::button_href("Retour","?action=restore&PHPSESSID=".$_REQUEST['PHPSESSID']); + if ( ! isset($_REQUEST['t'])) { + echo '
'; + echo ("Vous devez préciser s'il s'agit d'un modèle ou d'un dossier"); + echo $retour; + echo '
'; + exit(); + } + if ( empty ($_FILES['file']['name']) || + strlen(trim($_FILES['file']['name']))==0 + ) { + echo '
'; + + echo ("Vous devez donner un fichier "); + echo $retour; + echo '
'; + exit(); + } + //--------------------------------------------------------------------------- + // Restore a folder (dossier) + if ( $_REQUEST['t']=='d') { + ini_set('upload_max_filesize','5M'); + echo '
'; + + $cn=DbConnect(); + $id=NextSequence($cn,'dossier_id'); + + if ( strlen(trim($_REQUEST['database'])) == 0 ) + $lname=$id." Restauration :".FormatString($_FILES['file']['name']); + else + $lname=$id." ".$_REQUEST['database']; + + + $sql="insert into ac_dossier (dos_id,dos_name) values (".$id.",'".$lname."') "; + StartSql($cn); + try{ + getDbValue($cn,$sql); + + + } catch ( Exception $e) { + echo ''."Echec de la restauration ".''; + print_r($e); + Rollback($cn); + exit(); + } + Commit($cn); + $name=domaine."dossier".$id; + echo $name; + ExecSql($cn,"create database ".$name." encoding='utf8'"); + $args=" -d $name ".$_FILES['file']['tmp_name']; + + $status=system(PG_RESTORE.$args); + echo '

Restauration réussie du dossier '.$lname.'

'; + + $new_cn=DbConnect($id); + + apply_patch($new_cn,$name,0); + echo ''.'Ne pas recharger la page, sinon votre base de données sera restaurée une fois de plus'.''; + echo $retour; + + echo '
'; + } + //--------------------------------------------------------------------------- + // Restore a modele + + if ( $_REQUEST['t']=='m') { + ini_set('upload_max_filesize','5M'); + echo '
'; + + $cn=DbConnect(); + $id=NextSequence($cn,'s_modid'); + + if ( strlen(trim($_REQUEST['database'])) == 0 ) + $lname=$id." Restauration :".FormatString($_FILES['file']['name']); + else + $lname=$id." ".$_REQUEST['database']; + + + $sql="insert into modeledef (mod_id,mod_name) values (".$id.",'Restauration".$lname."') "; + StartSql($cn); + try{ + getDbValue($cn,$sql); + + } catch ( Exception $e) { + echo ''."Echec de la restauration ".''; + print_r($e); + Rollback($cn); + exit(); + } + Commit($cn); + + $name=domaine."mod".$id; + ExecSql($cn,"create database ".$name." encoding='utf8'"); + $args=" -d $name ".$_FILES['file']['tmp_name']; + $status=exec(PG_RESTORE.$args); + + echo '

Restauration réussie du modèle '.$lname.'

'; + $new_cn=DbConnect($id); + + apply_patch($new_cn,$name,0); + + echo ''.'Ne pas recharger la page, sinon votre base de données sera restaurée une fois de plus'.''; + echo $retour; + + echo '
'; + } + } else { + echo '
'; + ini_set('upload_max_filesize','5M'); + echo '
'; + echo widget::hidden('action','restore'); + echo widget::hidden('sa','r'); + echo ''; + echo ''; + $wNom=new widget("text"); + $wNom->name="database"; + $wNom->size=12; + echo ''; + echo ''; + $chk=new widget("radio"); + $chk->name="t"; + $chk->value="d"; + echo ''; + echo ''; + $chk->name="t"; + $chk->value="m"; + echo ''; + echo ''; + $file=new widget("file"); + $file->name="file"; + $file->value="mod"; + $file->label="Fichier"; + $file->table=1; + echo $file->IOValue(); + echo ''; + echo '
'."Nom de la base de donnée".''.$wNom->IOValue().'
'."Type de backup :".''.$chk->IOValue()."Dossier".'
'.$chk->IOValue()."Modele".'
'; + echo widget::submit("","Restauration"); + echo '
'; + echo '
'; + } \ No newline at end of file diff --git a/include/stock.inc.php b/include/stock.inc.php index 1346a4854..00d141c9a 100644 --- a/include/stock.inc.php +++ b/include/stock.inc.php @@ -85,7 +85,7 @@ if ( isset ($_POST['sub_change'])) or isNumber($change) == 0 or isNumber($year) == 0 ) { - $msg="Stock donnes non conformes"; + $msg="Stock données non conformes"; echo ""; echo_error($msg); } else diff --git a/include/stock_inc.php b/include/stock_inc.php index 7c7d0ebeb..57137cfb8 100644 --- a/include/stock_inc.php +++ b/include/stock_inc.php @@ -61,7 +61,7 @@ where $result.=""; $result.='Code'; $result.='Noms'; - $result.='Entre'; + $result.='Entrée'; $result.='Sortie'; $result.='Solde'; $result.=""; @@ -195,11 +195,11 @@ $sql="select sg_code, $r.=''; $r.=""; $r.=""; - $r.=""; + $r.=""; $r.=""; $r.=""; $r.=""; - $r.=""; + $r.=""; $r.=""; $r.=""; // compute sessid diff --git a/include/supplier.inc.php b/include/supplier.inc.php index 5a362af81..79e3613a5 100644 --- a/include/supplier.inc.php +++ b/include/supplier.inc.php @@ -28,6 +28,7 @@ $sub_action=(isset($_REQUEST['sa']))?$_REQUEST['sa']:""; */ $User->can_request($cn,SUPPL); +$script=basename($_SERVER['PHP_SELF']); ?> can_request($cn,SUPPL); // Remove a card if ( isset ($_POST['delete']) ) { - echo 'delete'; + $f_id=$_REQUEST['f_id']; $fiche=new Supplier($cn,$f_id); @@ -46,6 +47,8 @@ if ( isset ($_POST['delete']) ) // Add card if ( $sub_action=="insert" ) { + echo '
'; + $retour=widget::button_href("Retour", urldecode($_REQUEST['url'])); $supplier=new Supplier($cn); @@ -55,7 +58,7 @@ if ( $sub_action=="insert" ) echo $supplier->Display(true); echo "
Date Entre / Sortie Entrée / Sortie DescriptionOpérationMontantQuantitQuantitéPrix/Cout Unitaire
"; echo $retour; - + echo '
'; } //----------------------------------------------------- // Save modification @@ -74,12 +77,12 @@ if ( $sub_action == "" ) //Display a blank card if ( $sub_action=="blank") { - $retour=widget::button_href('Retour','commercial.php?p_action=fournisseur&'.dossier::get()); - echo '
'; + $retour=widget::button_href('Retour','?p_action=fournisseur&'.dossier::get()); + echo '
'; echo $retour; $c=new Supplier($cn); - echo '
'; echo ''; echo ''; @@ -97,9 +100,9 @@ if ( $sub_action=="blank") if ( $sub_action == "list" ) { ?> -
+
- + - + '; - echo '
'; + echo '
'; echo $sup->Summary($search); echo '
'; echo '
'; @@ -145,7 +148,7 @@ if ( $sub_action == "list" ) if ( $sub_action == 'detail' ) { $f_id=$_REQUEST['f_id']; - echo '
'; + echo '
'; $sup=new Supplier($cn,$f_id); $retour=widget::button_href("Retour", urldecode($_REQUEST['url'])); @@ -162,7 +165,7 @@ if ( $sub_action == 'detail' ) echo widget::submit('mod','Sauver les modifications'); echo widget::reset("Annuler"); - echo widget::submit('delete','Effacer cette fiche'); + echo widget::submit('delete','Effacer cette fiche','onclick="return confirm(\'Confirmer effacement ?\');"'); echo ''; echo $retour; echo '
'; diff --git a/include/tva.inc.php b/include/tva.inc.php index e864c8a11..b485a8504 100644 --- a/include/tva.inc.php +++ b/include/tva.inc.php @@ -21,11 +21,11 @@ /*! \file * \brief included file for customizing with the vat (account,rate...) */ -echo '
'; +echo '
'; // Confirm remove if ( isset ($_POST['confirm_rm'])) { - ExecSql($cn,'select tva_delete('.$_POST['tva_id'].')'); + ExecSql($cn,'select tva_delete('.pg_escape_string($_POST['tva_id']).')'); } //----------------------------------------------------- // Record Change @@ -33,7 +33,6 @@ echo '
'; || isset ($_POST['confirm_add'])) { extract($_POST); - $tva_id=FormatString($tva_id); $tva_label=FormatString($tva_label); $tva_rate=FormatString($tva_rate); $tva_comment=FormatString($tva_comment); @@ -41,39 +40,44 @@ echo '
'; // remove space $tva_poste=str_replace (" ","",$tva_poste); $err=0; // Error code - if ( isNumber($tva_id) == 0 ) { - $err=1; - - } + if ( isNumber($tva_rate) == 0 ) { $err=2; - } + } if ( $err == 0 ) { if ( isset ($_POST['confirm_add']) ) { - $Res=ExecSql($cn, - "select tva_insert($tva_id,'$tva_label', - '$tva_rate','$tva_comment','$tva_poste')"); - + $sql="select tva_insert($1,$2,$3,$4)"; + + $res=ExecSqlParam($cn, + $sql, + array($tva_label, + $tva_rate, + $tva_comment, + $tva_poste) + ); + $ret_sql=pg_fetch_row($res); + $err=$ret_sql[0]; } if ( isset ($_POST['confirm_mod']) ) { - $Res=ExecSql($cn, + $Res=ExecSql($cn, "select tva_modify($tva_id,'$tva_label', '$tva_rate','$tva_comment','$tva_poste')"); + $ret_sql=pg_fetch_row($Res); + $err=$ret_sql[0]; } - $ret_sql=pg_fetch_row($Res); - $err=$ret_sql[0]; + } if ( $err != 0 ) { $err_code=array(1=>"Tva id n\'est pas un nombre", 2=>"Taux tva invalide", - 3=>"Label ne peut tre vide", + 3=>"Label ne peut être vide", 4=>"Poste invalide", - 5=>"Tva id doit tre unique"); + 5=>"Tva id doit être unique"); $str_err=$err_code[$err]; echo "";; } @@ -81,12 +85,11 @@ echo '
'; //----------------------------------------------------- // Display - $sql="select tva_id,tva_label,tva_rate,tva_comment,tva_poste from tva_rate order by tva_id"; + $sql="select tva_id,tva_label,tva_rate,tva_comment,tva_poste from tva_rate order by tva_rate"; $Res=ExecSql($cn,$sql); ?> - @@ -108,11 +111,10 @@ echo '
'; echo "
"; echo ''; - echo ""; + echo ""; @@ -197,24 +199,24 @@ if ( ! isset ($_POST['add']) if ( isset ( $_REQUEST['add'])) { echo_debug("parametre",__LINE__,"add a line "); - echo "Tva ajouter, l'id doit tre diffrent pour chaque taux"; + echo "
Ajout d'un taux de tva "; echo ''; ?>
Id Label Taux Commentaire
"; - echo $row['tva_id']; - echo ""; + echo widget::hidden('tva_id',$row['tva_id']); echo $row['tva_label']; echo "
- - - - - - - - - + + + + + + + + +
idLabelTauxCommentairePoste
size=5; echo $w->IOValue('tva_id','') ?>
Label (ce que vous verrez dans les journaux) size=20; echo $w->IOValue('tva_label','') ?>
Taux de tva size=5; echo $w->IOValue('tva_rate','') ?>
Commentaire heigh=2;$w->width=20;echo $w->IOValue('tva_comment','') ?>
Poste comptable utilisés format :debit,credit size=10;echo $w->IOValue('tva_poste','') ?>
@@ -222,6 +224,7 @@ if ( ! isset ($_POST['add']) + Modification d'un taux de tva "; echo '
'; echo ''; ?> - - - - - - - + + + + + + + + + + +
LabelTauxCommentairePoste
Label (ce que vous verrez dans les journaux) size=20; echo $w->IOValue('tva_label',$a[$index]['tva_label']) ?>
Taux de tva size=5; echo $w->IOValue('tva_rate',$a[$index]['tva_rate']) ?>
Commentaire heigh=2;$w->width=20; echo $w->IOValue('tva_comment',$a[$index]['tva_comment']) ?>
Poste comptable utilisés format :debit,credit size=5; echo $w->IOValue('tva_poste',$a[$index]['tva_poste']) ?>
+ '; + echo '
'; ?> diff --git a/include/user_action_ach.php b/include/user_action_ach.php index bbf136722..6517b9b37 100644 --- a/include/user_action_ach.php +++ b/include/user_action_ach.php @@ -58,19 +58,11 @@ if ( $action=="use_opd" ) { //-------------------- // predef op. echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; + $op->set('ledger',$_GET['p_jrn']); + $op->set('ledger_type',"ACH"); + $op->set('direct','f'); - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","ACH"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prédéfinie'); - echo $op->show_button(); + echo $op->form_get(); echo '
'; @@ -97,9 +89,11 @@ if ( $action == 'new' ) { $r=FormAchInput($cn,$_GET['p_jrn'],$User->get_periode(),$_POST,$submit,false,$jrn->getDefLine()); //-------------------- // predef op. - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; + $op=new Pre_operation_detail($cn); + $op->set('ledger',$_GET['p_jrn']); + $op->set('ledger_type',"ACH"); + $op->set('direct','f'); + echo '
'; echo $r; @@ -107,20 +101,7 @@ if ( $action == 'new' ) { //-------------------- // predef op. echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; - - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","ACH"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prédéfinie'); - echo $op->show_button(); - + echo $op->form_get(); echo '
'; echo "
".JS_CALC_LINE."
"; diff --git a/include/user_action_fin.php b/include/user_action_fin.php index ba4ae2e56..a47b2bc3b 100644 --- a/include/user_action_fin.php +++ b/include/user_action_fin.php @@ -25,7 +25,7 @@ echo_debug('user_action_fin.php',__LINE__,"include user_action_fin.php"); require_once("user_form_fin.php"); include_once("class_widget.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once("class_acc_ledger.php"); require_once ('class_pre_op_fin.php'); @@ -37,7 +37,7 @@ if ( ! isset ($_GET['action']) && ! isset ($_POST["action"]) ) { include_once ("preference.php"); include_once ("user_common.php"); if ( ! isset($_REQUEST['action'])) { - echo "Aucune Action demande"; + echo "Aucune Action demandée"; exit(); } @@ -55,7 +55,7 @@ if ( $action=="use_opd" ) { ''; $form=FormFin($cn,$_GET['p_jrn'],$User->get_periode(),$submit,$p_post,false,$p_post['nb_item']); - echo '
'; + echo '
'; echo $form; echo '
'; exit(); @@ -81,7 +81,7 @@ if ( $action == 'new' ) { $jrn=new Acc_Ledger($cn, $p_jrn); $r=FormFin($cn,$p_jrn,$User->get_periode(),$submit,null,false,$jrn->GetDefLine()); - echo '
'; + echo '
'; echo $r; echo "
"; //-------------------- @@ -98,7 +98,7 @@ if ( $action == 'new' ) { echo $hid->IOValue("jrn_type","FIN"); if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); + echo widget::submit('use_opd','Utilisez une op.prédéfinie'); echo $op->show_button(); echo ''; @@ -121,7 +121,7 @@ if ( $action == 'new' ) { '; $r=FormFin($cn,$_GET['p_jrn'],$User->get_periode(),$submit,$_POST,false, $nb_number); - echo '
'; + echo '
'; echo $r; echo "

On-line calculator

".JS_CALC_LINE."
"; @@ -201,7 +201,7 @@ if ( $action == 'voir_jrn' ) { exit -1; } ?> -
+
@@ -232,7 +232,7 @@ $User=new User($cn); $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; -echo 'Priode '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); +echo 'Période '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); ?>
p_value."%' or pcm_val::text like '".$vir_interne->p_value."%' diff --git a/include/user_action_gl.php b/include/user_action_gl.php index f13007313..93db18ba9 100644 --- a/include/user_action_gl.php +++ b/include/user_action_gl.php @@ -18,7 +18,7 @@ */ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr /* $Revision$ */ -echo_debug('user_action_gl.php',__LINE__,"include user_action_gl.php"); + /*! \file * \brief included file for the great ledger */ @@ -31,20 +31,10 @@ require_once("jrn.php"); $cn=DbConnect($gDossier); -?> -
-
-name="jrn_type"; -$hid->value="NONE"; -echo $hid->IOValue(); - -$hid->name="action"; -$hid->value="voir_jrn"; -echo $hid->IOValue(); +echo '
+ '; +echo dossier::hidden(); +echo widget::hidden('p_action','gl'); $w=new widget("select"); // filter on the current year @@ -53,17 +43,19 @@ $filter_year=" where p_exercice='".$User->get_exercice()."'"; $periode_start=make_array($cn,"select p_id,to_char(p_start,'DD-MM-YYYY') from parm_periode $filter_year order by p_start,p_end",1); $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; -echo 'Priode '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); -?> - -get_exercice()."')"; - } else { - $cond=" and jr_tech_per=".$current; - } +echo 'Période '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); -$sql=SQL_LIST_ALL_INVOICE.$cond; +echo ''; + +if ( $current == -1) { + $cond=" and jr_tech_per in (select p_id from parm_periode where p_exercice='".$User->get_exercice()."')"; + } else { + $cond=" and jr_tech_per=".$current; + } +/* security filter on the ledger */ +$sql_ledger=''; +if ( $User->Admin() == 0 ) { $sql_ledger=' and '.$User->get_ledger_sql();} +$sql=SQL_LIST_ALL_INVOICE.$cond.$sql_ledger; // Nav. bar $step=$_SESSION['g_pagesize']; $page=(isset($_GET['offset']))?$_GET['page']:1; diff --git a/include/user_action_ods.php b/include/user_action_ods.php index 01cecb65f..142d453ff 100644 --- a/include/user_action_ods.php +++ b/include/user_action_ods.php @@ -63,19 +63,11 @@ if ( $action=="use_opd" ) { //-------------------- // predef op. echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; - - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","ODS"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); - echo $op->show_button(); + $op=new Pre_operation_detail($cn); + $op->set('ledger',$_GET['p_jrn']); + $op->set('ledger_type',"ODS"); + $op->set('direct','f'); + echo $op->form_get(); echo '
'; @@ -107,21 +99,14 @@ if ( $action == 'new' ) { //-------------------- // predef op. echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; - - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","ODS"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); - echo $op->show_button(); + $op=new Pre_operation_detail($cn); + $op->set('ledger',$_GET['p_jrn']); + $op->set('ledger_type',"ODS"); + $op->set('direct','f'); + echo $op->form_get(); echo '
'; + echo "

On-line calculator

".JS_CALC_LINE."
"; echo "
"; @@ -263,7 +248,7 @@ $User=new User($cn); $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; -echo 'Priode '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); +echo 'Période '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); ?> set_od_id($_REQUEST['pre_def']); - $op->od_direct='f'; $p_post=$op->compute_array(); echo_debug(__FILE__.':'.__LINE__.'- ','p_post = ',$p_post); @@ -60,20 +59,11 @@ if ( $action=="use_opd" ) { //-------------------- // predef op. echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; - - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","VEN"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); - echo $op->show_button(); - + $op->set('ledger',$_GET['p_jrn']); + $op->set('ledger_type',"VEN"); + $op->set('direct','f'); + + echo $op->form_get(); echo '
'; echo '
'; @@ -114,31 +104,23 @@ if ( $action == 'insert_vente' ) { // We want a blank form if ( $blank==1) { - $jrn=new Acc_Ledger($cn, $_GET['p_jrn']); - echo_debug('user_action_ven.php',__LINE__,"Blank form"); - // Show an empty form of invoice - $form=FormVenInput($cn,$_GET['p_jrn'],$User->get_periode(),null,false,$jrn->GetDefLine()); - echo '
'; - echo $form; - //-------------------- - // predef op. - echo '
'; - $op=new Pre_operation($cn); - $op->p_jrn=$_GET['p_jrn']; - $op->od_direct='f'; + $jrn=new Acc_Ledger($cn, $_GET['p_jrn']); + $op=new Pre_op_ven($cn); + echo_debug('user_action_ven.php',__LINE__,"Blank form"); + // Show an empty form of invoice + $form=FormVenInput($cn,$_GET['p_jrn'],$User->get_periode(),null,false,$jrn->GetDefLine()); + echo '
'; + echo $form; + //-------------------- + // predef op. - $hid=new widget("hidden"); - echo $hid->IOValue("action","use_opd"); - echo dossier::hidden(); - echo $hid->IOValue("p_jrn",$_GET['p_jrn']); - echo $hid->IOValue("jrn_type","VEN"); - - if ($op->count() != 0 ) - echo widget::submit('use_opd','Utilisez une op.prdfinie'); - echo $op->show_button(); - - echo ''; - echo '
'; + echo '
'; + $op->set('ledger',$_REQUEST['p_jrn']); + $op->set('ledger_type',"VEN"); + $op->set('direct','f'); + echo $op->form_get(); + echo '
'; + echo '
'; } } @@ -240,7 +222,7 @@ $periode_start=make_array($cn,"select p_id,to_char(p_start,'DD-MM-YYYY') from pa $current=(isset($_GET['p_periode']))?$_GET['p_periode']:$User->get_periode(); $w->selected=$current; -echo 'Priode '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); +echo 'Période '.$w->IOValue("p_periode",$periode_start).widget::submit('gl_submit','Valider'); ?> '; echo "$bar
"; @@ -365,9 +347,9 @@ if ( $action == 'voir_jrn_non_paye' ) { echo '
'; echo dossier::hidden(); echo $bar2; - echo '

Echeance dpasse

'; + echo '

Echeance dépassée

'; echo $list; - echo '

Non Paye

'; + echo '

Non Payée

'; echo $list2; echo $bar2; // Add hidden parameter @@ -389,7 +371,7 @@ if ( $action == 'voir_jrn_non_paye' ) { echo '
'; if ( $m != 0 ) - echo widget::submit('paid','Mise jour paiement'); + echo widget::submit('paid','Mise à jour paiement'); echo '
'; echo '
'; diff --git a/include/user_common.php b/include/user_common.php index 2999d1636..8089f20a8 100644 --- a/include/user_common.php +++ b/include/user_common.php @@ -276,104 +276,7 @@ function GetTvaPoste($p_cn,$p_tva_id,$p_cred) { -/*! InsertJrnx($p_cn,$p_type,$p_user,$p_jrn,$p_poste,$p_date,$p_amount,$p_grpt,$p_periode - ************************************************** - *\brief Insert into the table Jrn - * - * - * \param $p_cn database connection - * \param $p_type debit or credit - * \param $p_user the current user - * \param $p_jrn the current 'journal' (folder) - * \param $p_poste the account - * \param $p_date - * \param $p_amount amount to insert - * \param $p_periode the concerned periode - * - * \return nothing - * - */ -function InsertJrnx($p_cn,$p_type,$p_user,$p_jrn,$p_poste,$p_date,$p_amount,$p_grpt,$p_periode,$p_qcode="") -{ - echo_debug ('user_common.php',__LINE__,"InsertJrnx param - type = $p_type p_user $p_user - p_date $p_date p_poste $p_poste - p_amount $p_amount p_grpt = $p_grpt p_periode = $p_periode"); - - //if ( $p_amount == 0) return true; - - $debit=($p_type=='c')?'false':'true'; - - // if negative value the operation is inversed - if ( $p_amount < 0 ) { - $debit=($debit=='false')?'true':'false'; - } - - $sql=sprintf("select insert_jrnx - ('%s',abs(%.2f),%d,%d,%d,%s,'%s',%d,upper('%s'))", - $p_date,round($p_amount,2),$p_poste,$p_grpt,$p_jrn,$debit,$p_user,$p_periode,$p_qcode); - - echo_debug('user_common.php',__LINE__,"InsertJrnx $sql"); - $Res=ExecSql($p_cn,$sql); - if ( $Res==false) return $Res; - return GetSequence($p_cn,'s_jrn_op'); - -} -/*! InsertJrn($p_cn,$p_date,$p_jrn,$p_comment,$p_amount,$p_grpt,$p_periode - ************************************************** - *\brief Insert into the table Jrn, the amount is computed from jrnx thanks the - * group id ($p_grpt) - * - * \param $p_cn database connection - * \param $p_date date - * \param $p_jrn the current 'journal' (folder) - * \param $p_poste the account - * \param $p_periode the concerned periode - * \param $p_comment comment - * - * \return nothing - * - */ - -function InsertJrn($p_cn,$p_date,$p_echeance,$p_jrn,$p_comment,$p_grpt,$p_periode) -{ - echo_debug ('user_common.php',__LINE__,"InsertJrn param - p_date $p_date p_poste $p_comment p_amount -p_grpt = $p_grpt p_periode = $p_periode p_echeance = $p_echeance -comment = $p_comment"); - $p_comment=FormatString($p_comment); - - if ( $p_echeance == "" or $p_echeance==null) { - $p_echeance='null'; - } else { - $p_echeance=sprintf("to_date('%s','DD.MM.YYYY')",$p_echeance); - } - // retrieve the value from jrnx - // - $montant_deb=getDBValue($p_cn,"select sum(j_montant) from jrnx where j_debit='t' and j_grpt=$p_grpt"); - $montant_cred=getDBValue($p_cn,"select sum(j_montant) from jrnx where j_debit='f' and j_grpt=$p_grpt"); - echo_debug('InsertJrn',__LINE__,"debit = $montant_deb credit = $montant_cred "); - - $amount=-1.0000; - if ( $montant_deb == $montant_cred ) { - $amount=$montant_deb; - } else { - echo "Erreur : balance incorrecte : débit = $montant_deb crédit = $montant_cred"; - return false; - } - // if amount == -1then the triggers will throw an error - // - $sql=sprintf("insert into jrn (jr_def_id,jr_montant,jr_comment,jr_date,jr_ech,jr_grpt_id,jr_tech_per) - values ( %d,abs(%.2f),'%s',to_date('%s','DD.MM.YYYY'),%s,%d,%d)", - $p_jrn, $amount,$p_comment,$p_date,$p_echeance,$p_grpt,$p_periode); - - - echo_debug('user_common.php',__LINE__,"InsertJrn $sql"); - $Res=ExecSql($p_cn,$sql); - if ( $Res == false) return false; - return GetSequence($p_cn,'s_jrn'); -} /*! *\brief show all the lines of the asked jrn, uses also the $_GET['o'] for the sort * @@ -652,7 +555,7 @@ $sort_echeance=" $image_ascEch& switch ($href) { // user_jrn.php - case 'user_jrn.php': + case 'compta.php': $vue="E"; //Expert View break; case 'commercial.php': @@ -798,7 +701,7 @@ $sort_echeance=" $image_ascEch& * \param $p_cn database connection * * \param $p_j_id the j_id - * \param $p_goods the goods + * \param $p_good the goods * \param $p_quant quantity * \param $p_type c for credit or d for debit * @@ -809,7 +712,9 @@ function InsertStockGoods($p_cn,$p_j_id,$p_good,$p_quant,$p_type) { echo_debug('user_common.php',__LINE__,"function InsertStockGoods($p_cn,$p_j_id,$p_good,$p_quant,$p_type)"); // Retrieve the good account for stock - $code_marchandise=GetFicheAttribut($p_cn,$p_good,ATTR_DEF_STOCK); + $code=new fiche($p_cn); + $code->get_by_qcode($p_good); + $code_marchandise=$code->strAttribut(ATTR_DEF_STOCK); $p_good=FormatString($p_good); $sql="select f_id from vw_poste_qcode where j_qcode=upper('$p_good')"; $Res=ExecSql($p_cn,$sql); @@ -1027,14 +932,11 @@ function UpdateComment ($p_cn,$p_jr_id,$p_comment) { ************************************************** *\brief test if a jrn op is valid * - * parm : - * - db connection - * - p_grpt_id - * gen : - * - none - * return: - * 1 is valid - * 0 is not valid + * \param $p_cn db + * \param $p_grpt_id + * \return: + * - 1 is valid + * - 0 is not valid */ function isValid ($p_cn,$p_grpt_id) { $Res=ExecSql($p_cn,"select jr_valid from jrn where jr_grpt_id=$p_grpt_id"); diff --git a/include/user_form_ach.php b/include/user_form_ach.php index f80072697..fd9f491af 100644 --- a/include/user_form_ach.php +++ b/include/user_form_ach.php @@ -27,7 +27,7 @@ require_once("class_widget.php"); require_once("preference.php"); require_once("fiche_inc.php"); require_once("user_common.php"); -require_once("class_parm_code.php"); +require_once("class_acc_parm_code.php"); require_once ('class_anc_plan.php'); require_once ('class_own.php'); require_once ('class_anc_operation.php'); @@ -487,7 +487,7 @@ function form_verify_input($p_cn,$p_jrn,$p_periode,$p_array,$p_number) echo ""; return null; } - // Periode ferm� + // Periode ferm� $per=new Periode($p_cn); $per->set_jrn($p_jrn); $per->set_periode($p_periode); @@ -854,7 +854,7 @@ function RecordSell($p_cn,$p_array,$p_user,$p_jrn) $nd_amount=round($a_quant[$i]*$a_price[$i]*$non_dedu,2); // save it echo_debug('user_form_ach.php',__LINE__,"InsertJrnx($p_cn,'d',$p_user->id,$p_jrn,'6740',$e_date,round($nd_amount,2),$seq,$periode);"); - $dna=new parm_code($p_cn,'DNA'); + $dna=new Acc_Parm_Code($p_cn,'DNA'); $j_id=InsertJrnx($p_cn,'d',$p_user->id,$p_jrn,$dna->p_value,$e_date,round($nd_amount,2),$seq,$periode); $amount=$amount-$nd_amount; @@ -873,7 +873,7 @@ function RecordSell($p_cn,$p_array,$p_user,$p_jrn) $nd_amount+=$tva_nd; // save it - $dna=new parm_code($p_cn,'DEP_PRIV'); + $dna=new Acc_Parm_Code($p_cn,'DEP_PRIV'); $j_id=InsertJrnx($p_cn,'d',$p_user->id,$p_jrn,$dna->p_value,$e_date,round($nd_amount,2),$seq,$periode); // modify sum @@ -898,7 +898,7 @@ function RecordSell($p_cn,$p_array,$p_user,$p_jrn) $sum_tva_nd+=$ded_vat; // compute the NDA TVA - $tva_dna=new parm_code($p_cn,'TVA_DNA'); + $tva_dna=new Acc_Parm_Code($p_cn,'TVA_DNA'); echo_debug('user_form_ach.php',__LINE__, "InsertJrnx($p_cn,'d',$p_user->id,$p_jrn,".$tva_dna->p_value.",$e_date,round($ded_vat,2),$seq,$periode);"); @@ -918,7 +918,7 @@ function RecordSell($p_cn,$p_array,$p_user,$p_jrn) $aTva_ded_impot_recup[$i]=round($ded_vat,2); // Save it - $tva_ded_impot=new parm_code($p_cn,'TVA_DED_IMPOT'); + $tva_ded_impot=new Acc_Parm_Code($p_cn,'TVA_DED_IMPOT'); echo_debug('user_form_ach.php',__LINE__, "InsertJrnx($p_cn,'d',$p_user->id,$p_jrn,".$tva_ded_impot->p_value.",$e_date,round($ded_vat,2),$seq,$periode);"); diff --git a/include/user_form_fin.php b/include/user_form_fin.php index a09cfcea1..1b90416a2 100644 --- a/include/user_form_fin.php +++ b/include/user_form_fin.php @@ -112,7 +112,7 @@ function form_verify_input($p_cn,$p_jrn,$p_periode,$p_array,$p_number) echo ""; return null; } - // Periode ferm� + // Periode ferm� $per=new Periode($p_cn); $per->set_jrn($p_jrn); $per->set_periode($p_periode); diff --git a/include/user_form_ods.php b/include/user_form_ods.php deleted file mode 100644 index c42143d67..000000000 --- a/include/user_form_ods.php +++ /dev/null @@ -1,453 +0,0 @@ -$v) { - ${"$a"}=$v; - } - } - $own = new Own($p_cn); - - // The date - list ($l_date_start,$l_date_end)=get_periode($p_cn,$p_periode); - $flag=(isset($e_date))?1:0; - // $e_date=( ! isset($e_date) ) ? - // substr($l_date_start,2,8):$e_date; - $e_date=( ! isset($e_date) ) ? $l_date_start:$e_date; - $per=new Periode($p_cn); - $per->set_jrn($p_jrn); - $per->set_periode($p_periode); - - // Periode ferme - if ( $per->is_open()==0) - { - $msg="Cette periode est fermee pour ce journal"; - echo_error($msg); echo_error($msg); - echo ""; - return null; - } - - // Verify if valid date - if ( $flag==1 and VerifyOperationDate($p_cn,$p_periode,$e_date) == null) { - if ( $pview_only == true) - return null; - else - $e_date=substr($l_date_start,2,8); - } - - $e_comm=(isset($e_comm))?$e_comm:""; - // Save old value and set a new one - - $r=""; - - if ( $pview_only == false) { - $r.=JS_SEARCH_POSTE; - $r.=JS_COMPUTE_ODS; - } - - //$r.="
"; -$r.=""; - $hid=new widget('hidden'); - $r.=$hid->IOValue('p_jrn',$p_jrn); - $r.=$hid->IOValue('action','new'); - - $r.=dossier::hidden(); - $r.=''; - // Date - $wDate=new widget('js_date'); - $wDate->SetReadOnly($pview_only); - $wDate->table=1; - $r.="".$wDate->IOValue("e_date",$e_date,'Date').""; - - // Description - $Commentaire=new widget("text"); - $Commentaire->table=1; - $Commentaire->SetReadOnly($pview_only); - $Commentaire->size=80; - $r.=""; - $r.=$Commentaire->IOValue("e_comm",$e_comm,"Description"); - $r.=""; - - include_once("fiche_inc.php"); - - // Record the current number of article - $r.=''; - $e_comment=(isset($e_comment))?$e_comment:""; - - // Start the div for item to encode - $r.="
"; - $r.='

Opérations Diverses

'; - $r.='
'; - $r.=""; - if ( $pview_only == false) $r.=""; - $r.=""; - $r.=""; - $r.=""; - $r.=""; - $r.=""; - $sum_deb=0.0; - $sum_cred=0.0; - $count=0; - // for each good - for ($i=0;$i< $p_article;$i++) { - - $account=(isset(${"e_account$i"}))?${"e_account$i"}:""; - - $lib=''; - // If $account has a value - if ( isNumber($account) == 1 ) { - if ( CountSql($p_cn,"select * from tmp_pcmn where pcm_val=$account") == 0 ) { - $msg="Poste comptable inexistant !!! "; - echo_error($msg); echo_error($msg); - echo ""; - $account=""; - if ( $pview_only == true ) return null; - } else { - // retrieve the tva label and name - $lib=''.GetPosteLibelle($p_cn, $account,1).''; - } - } - - ${"e_account$i"."_amount"}=(isset(${"e_account$i"."_amount"}))?abs(round(${"e_account$i"."_amount"},2)):0; - if ( isNumber(${"e_account$i"."_amount"}) == 0 ) { - if ( $pview_only==true) { - $msg="Montant invalide !!! "; - echo_error($msg); - echo ""; - return null; - } - ${"e_account$i"."_amount"}=0; - } - // code - // Do we need a filter ? - $jrn=new Acc_Ledger($p_cn,$p_jrn); - $l_line=$jrn->get_propertie(); - if( strlen(trim ($l_line['jrn_def_class_cred']) ) > 0 || - strlen(trim ($l_line['jrn_def_class_deb']) ) > 0 ) { - $filter=1; - } - else - $filter=null; - $W = new widget('js_search_poste'); - $W->readonly=$pview_only; - $W->label=""; - $W->extra=$p_jrn; - $W->extra2=$filter; - // $r.=''.InputType("","js_search_poste","e_account".$i,$account,$pview_only,$filter); - $r.=""; - //amount - $wAmount=new widget("text"); - $wAmount->table=1; - $wAmount->SetReadOnly($pview_only); - $wAmount->javascript=' onChange="checkTotal()"'; - - $r.=$wAmount->IOValue("e_account".$i."_amount",${"e_account$i"."_amount"}); - - - // Type is debit or credit, retrieve the old values - ${"e_account$i"."_type"}=(isset (${"e_account$i"."_type"}))?${"e_account$i"."_type"}:'d'; - $c_check=( ${"e_account$i"."_type"} == 'c')?"CHECKED":""; - $d_check=( ${"e_account$i"."_type"} == 'd' )?"CHECKED":""; - $r.=''; - $count++; - } - - } - $r.=''; - $r.=''; - $sum_deb+=(${"e_account$i"."_type"}=='d')?${"e_account$i"."_amount"}:0; - $sum_cred+=(${"e_account$i"."_type"}=='c')?${"e_account$i"."_amount"}:0; - } - } // End for - $r.="
ComptePosteMontantCrédit ou débit
".$W->IOValue("e_account".$i, $account).''; - //libelle - $r.=" $lib '; - if ( $pview_only == false ) { - $r.=' Débit ou '; - $r.=' Crédit '; - }else { - $r.=(${"e_account$i"."_type"} == 'c' )?"Crédit":"Débit"; - $r.=''; - // Add CA - //-------------------------------------------------- - if ( ereg("^7+",${"e_account$i"}) || - ereg("^6+",${"e_account$i"})) - { - - if ( $own->MY_ANALYTIC!='nu') // use of AA - { - // show form - $op=new Anc_Operation($p_cn); - $null=($own->MY_ANALYTIC=='op')?1:0; - $r.=''; - $p_mode=($p_saved)?0:1; - $r.=$op->display_form_plan($_POST,$null,$p_mode,$count,${"e_account$i"."_amount"}); - $r.='
"; - - if ( $pview_only==true && $p_saved==false) { - // pre_operation - $chk=new widget('checkbox'); - $chk->selected=true; - $r.="Sauvez l'opération ?"; - $r.=$chk->IOValue('opd_save'); - -// check for upload piece - $file=new widget("file"); - $file->table=1; - $r.="
"; - $r.= ""; - $r.="".$file->IOValue("pj","","Pièce justificative").""; - $r.="
"; - $r.="
"; - } else { - $r.= '
- Débit = - Crédit = - Difference = -
- '; - } - // Set correctly the REQUEST param for jrn_type - $h=new widget('hidden'); - $h->name='jrn_type'; - $h->value='ODS'; - $r.=$h->IOValue(); - - $r.=$p_submit; - // $r.="
"; - $r.=""; - //TODO if view only show total - $tmp= abs($sum_deb-$sum_cred); - echo_debug('user_form_ods.php',__LINE__,"Diff = ".$tmp); - if ( $pview_only==true) { - - if ( abs($sum_deb-$sum_cred) > 0.0001 ) { - $msg=sprintf("Montant non correspondant credit = %.5f debit = %.5f diff = %.5f", - $sum_cred,$sum_deb,$sum_cred-$sum_deb); - echo ""; - return null; - } - - // Verify that we have a non-null operation - if ($sum_cred == 0) - { - $msg=sprintf("Montant null"); - echo ""; - return null; - } - } - /* if not view only then a javascript will compute and check the - total */ - if ( ! $pview_only ) { - // Start compute - $r.=''; - } - return $r; - - -} - -/*! - ************************************************** - * \brief Record an buy in the table jrn & - * jrnx - * - * - * \param $p_cn Database connection - * \param $p_array contains all the data - * e_date => e : 01.01.2003 - * nb_item => e : 3 - * e_account0 => e : 6 - * e_account0_amount=>e:1 - * - $p_user userid - * - $p_jrn current folder (journal) - * - * \return - * true on success - */ -function RecordODS($p_cn,$p_array,$p_user,$p_jrn) -{ - - foreach ( $p_array as $v => $e) - { - ${"$v"}=$e; - } - // Get the default period - $periode=$p_user->get_periode(); - $amount=0.0; - // Computing total customer - - $sum_deb=0.0; - $sum_cred=0.0; - $own=new own($p_cn); - // verify first the CA - /// - if ( $own->MY_ANALYTIC != "nu" ) - { - // Check the total only for mandatory - // - if ( $own->MY_ANALYTIC == "ob") { - $tab=0; $row=1; - while (1) { - if ( !isset ($_POST['nb_t'.$tab])) - break; - $tot_tab=0; - for ($i_row=1;$i_row <= MAX_COMPTE;$i_row++) { - if ( ! isset($_POST['val'.$tab.'l'.$i_row])) - break; - $tot_tab+=$_POST['val'.$tab.'l'.$i_row]; - } - if ( $tot_tab != $_POST['amount_t'.$tab]) { - echo '
'; - echo "Erreur dans les CA, les montants ne correspondent pas
"; - echo "ligne".$tab."
";; - echo "Total poste ".$_POST['amount_t'.$tab]."
"; - echo "Total CA encodé = $tot_tab
"; - - echo "Opération annulée"; - echo '
'; - return null; - } - $tot_tab=0; - $tab++; - } - } - } - - // Compute the j_grpt - $seq=NextSequence($p_cn,'s_grpt'); - // Set Internal code and Comment - $oJrn=new Acc_Ledger($p_cn,$p_jrn); - $internal=$oJrn->compute_internal_code($seq); - - try - { - StartSql($p_cn); - $group=NextSequence($p_cn,"s_oa_group"); - $count=0; - // store into the database - for ( $i = 0; $i < $nb_item;$i++) { - if ( isNumber(${"e_account$i"}) == 0 ) continue; - $sum_deb+=(${"e_account$i"."_type"}=='d')?round(${"e_account$i"."_amount"},2):0; - $sum_cred+=(${"e_account$i"."_type"}=='c')?round(${"e_account$i"."_amount"},2):0; - - if ( ${"e_account$i"."_amount"} == 0 ) continue; - ${"e_account$i"."_amount"}=round(${"e_account$i"."_amount"},2); - $j_id=InsertJrnx($p_cn,${"e_account$i"."_type"},$p_user->id,$p_jrn,${"e_account$i"},$e_date,${"e_account$i"."_amount"},$seq,$periode); - if ( ereg("^7+",${"e_account$i"}) || - ereg("^6+",${"e_account$i"})) - { - - // insert into ca - if ( $own->MY_ANALYTIC != "nu" ) - { - // for each item, insert into operation_analytique */ - $op=new Anc_Operation($p_cn); - $op->oa_group=$group; - $op->j_id=$j_id; - $op->oa_date=$e_date; - $op->oa_debit=($op->oa_amount < 0 )?'t':'f'; - $op->oa_description=$e_comm; - $op->save_form_plan($_POST,$count); - $count++; - } - } - - - } - InsertJrn($p_cn,$e_date,"",$p_jrn,$e_comm,$seq,$periode) ; - - // Set Internal code and Comment - // Set Internal code and Comment - $Res=ExecSql($p_cn,"update jrn set jr_internal='".$internal."' where ". - " jr_grpt_id = ".$seq); - - if ( $e_comm=="" ) { - // Update comment if comment is blank - $Res=ExecSql($p_cn,"update jrn set jr_comment='".$internal."' where jr_grpt_id=".$seq); - } - if ( isset ($_FILES)) - save_upload_document($p_cn,$seq); - // Save the operation - if ( isset($_POST['opd_save']) && $_POST['opd_save']=='on' ){ - echo_debug(__FILE__.':'.__LINE__.'- ','save opd'); - $opd=new Pre_op_ods($p_cn); - $opd->get_post(); - $opd->save(); - echo_debug(__FILE__.':'.__LINE__.'- ',"opd = ",$opd); - } - - } - catch (Exception $e) - { - echo ''. - 'Erreur dans l\'enregistrement '. - __FILE__.':'.__LINE__.' '. - $e->getMessage(); - Rollback($p_cn); - exit(); - } - Commit($p_cn); - return $internal; -} - - -?> diff --git a/include/user_form_ven.php b/include/user_form_ven.php index ac1454627..a2e5dec29 100644 --- a/include/user_form_ven.php +++ b/include/user_form_ven.php @@ -414,7 +414,7 @@ function form_verify_input($p_cn,$p_jrn,$p_periode,$p_array,$p_number) echo ""; return null; } - // Periode ferm� + // Periode ferm� $per=new Periode($p_cn); $per->set_jrn($p_jrn); $per->set_periode($p_periode); diff --git a/include/user_menu.php b/include/user_menu.php index 538badfe9..1716b3de5 100644 --- a/include/user_menu.php +++ b/include/user_menu.php @@ -37,23 +37,13 @@ require_once ('class_widget.php'); * \return table in HTML * */ -function u_ShowDossier($p_user,$p_admin) +function u_ShowDossier($p_user,$p_admin,$p_filtre="") { - $p_array=GetAvailableFolder($p_user,$p_admin); + $p_array=GetAvailableFolder($p_user,$p_admin,$p_filtre); $result=""; - $result.=""; - $result.=''; - if ( $p_admin == 1 ) { - $result.=""; - } - $result.=''; - $result.=''; - $result.=''; - $result.=""; - $result.="
Administration Aide Préférence Sortir
"; if ( $p_array == 0 ) return $result." * Aucun dossier *"; - $result.=""; + $result.="
"; for ($i=0;$i"; + + $result.=""; - $result.=""; - $result.=""; - $result.=""; - - $result.=""; - -/* $result.=""; */ - $result.=""; + } $result.="
"; + $result.="
"; + $result.=""; $result.=$id." $name"; - $result.=""; - $result.=$desc; - $result.=""; - $result.="Comptabilit"; + $result.=""; $result.=""; - $result.="Gestion"; + $desc=($desc=="")?"Aucune description":$desc; + $desc="".$desc.""; + $result.="".$desc; $result.=""; - $result.="Analytique"; - $result.=""; - $result.="Budget"; - $result.=""; - $result.="Paramtres"; - $result.=""; */ -/* $result.="Caisse Enregistreuse"; */ -/* $result.="
"; return $result; @@ -104,7 +82,7 @@ function u_ShowDossier($p_user,$p_admin) * - ac_dossier.dos_description * */ -function GetAvailableFolder($p_user,$p_admin) +function GetAvailableFolder($p_user,$p_admin,$p_filter="") { $filter=""; if ($p_admin==0) { @@ -116,16 +94,16 @@ function GetAvailableFolder($p_user,$p_admin) join priv_user on ( priv_jnt=jnt_id) where use_active=1 and use_login='$p_user' - and priv_priv != 'NO' order by dos_name"; + and priv_priv != 'NO' and dos_name ilike '%$p_filter%' + order by dos_name"; } else { - $sql="select distinct dos_id,dos_name,dos_description from ac_users - natural join jnt_use_dos - natural join ac_dossier - where use_active=1 order by dos_name "; + $sql="select distinct dos_id,dos_name,dos_description from ac_dossier + where dos_name ilike '%$p_filter%' order by dos_name"; } include_once("postgres.php"); $cn=DbConnect(); + $Res=ExecSql($cn,$sql); $max=pg_numRows($Res); if ( $max == 0 ) return 0; @@ -140,9 +118,8 @@ function GetAvailableFolder($p_user,$p_admin) * and highight the selected one * \param p_high what to hightlight, by default it is autodetected * but sometimes it must be given. Default value="" - * \todo clean param p_dossier * - * \return none + * \return string * */ function ShowMenuCompta($p_high="") @@ -164,36 +141,57 @@ function ShowMenuCompta($p_high="") } if ( $p_high !== "" ) $default=$p_high; - echo_debug('user_menu.php',__LINE__,'defaut is '.$default); if ( isset($_REQUEST['p_action'])) { - if ( $_REQUEST['p_action']=='impress') - $default=5; - if ( $_REQUEST['p_action']=='fiche') - $default=6; - if ( $_REQUEST['p_action']=='quick_writing') - $default=4; + switch ($_REQUEST['p_action'] ) { + case 'impress': + $default=5; + break; + case 'fiche': + $default=6; + break; + case 'quick_writing': + $default=4; + break; + case 'gl': + $default=0; + break; + case 'ven': + $default=1; + break; + case 'client': + $default=1; + break; + case 'ach': + case 'fournisseur': + $default=2; + break; + case 'bank': + $default=3; + break; + } } + echo_debug('user_menu.php',__LINE__,'defaut is '.$default); + $str_dossier=dossier::get(); $p_array=array( - array("user_jrn.php?jrn_type=NONE&".$str_dossier ,"Grand Livre"), - array("user_jrn.php?jrn_type=VEN&".$str_dossier ,"Vente"), - array("user_jrn.php?jrn_type=ACH&".$str_dossier,"Dpense"), - array("user_jrn.php?jrn_type=FIN&".$str_dossier,"Financier"), - array("user_jrn.php?jrn_type=ODS&".$str_dossier,"Op. Diverses"), + array("compta.php?p_action=gl&".$str_dossier ,"Grand Livre","Grand livre : toutes les opérations",0), + array("compta.php?p_action=ven&".$str_dossier ,"Vente","Journal de vente / produit",1), + array("compta.php?p_action=ach&".$str_dossier,"Dépense","Journaux de dépense, d'achat",2 ), + array("compta.php?p_action=bank&".$str_dossier,"Financier","Journaux financiers: les banques, la caisse",3), array('compta.php?p_action=quick_writing&'.$str_dossier,'Ecriture directe','Ecriture directe dans les journaux',4), array("compta.php?p_action=impress&".$str_dossier,"Impression","Impression",5), array("compta.php?p_action=fiche&".$str_dossier,"Fiche","Ajouter, modifier ou effacer des fiches",6), - array("user_advanced.php?".$str_dossier,"Avanc","Oprations dlicates",7), + array("user_advanced.php?".$str_dossier,"Avancé","Opérations délicates",7), ); $result=ShowItem($p_array,'H',"mtitle","mtitle",$default,' width="100%"'); $str_dossier=dossier::get(); $r=""; $r.=menu_tool("compta"); - $r.='
'; + $r.='
'; $r.=$result; $r.='
'; // $r.='
'; @@ -246,7 +244,7 @@ function ShowMenuJrnUser($p_dossier,$p_type,$p_jrn,$p_extra="") include_once ("debug.php"); include_once("constant.php"); include_once("class_user.php"); - echo_debug('user_menu.php',__LINE__,"U_SHOWMENUJRNUSER PTYPE=$p_type"); + echo ''; include_once("postgres.php"); @@ -264,13 +262,13 @@ function ShowMenuJrnUser($p_dossier,$p_type,$p_jrn,$p_extra="") where uj_login='".$User->id."' and uj_priv !='X' - and jrn_def_type='$p_type' order by jrn_Def_id + and jrn_def_type=upper('$p_type') order by jrn_Def_id "); } else { $Ret=ExecSql($Cn,"select jrn_def_id,jrn_def_type,jrn_def_name,jrn_def_class_deb,jrn_def_class_cred,jrn_deb_max_line,jrn_cred_max_line, jrn_type_id,jrn_desc,'W' as uj_priv from jrn_def join jrn_type on jrn_def_type=jrn_type_id where - jrn_def_type='$p_type' order by jrn_Def_id"); + jrn_def_type=upper('$p_type') order by jrn_Def_id"); } $Max=pg_NumRows($Ret); @@ -302,9 +300,9 @@ function ShowMenuJrnUser($p_dossier,$p_type,$p_jrn,$p_extra="") $add='&p_action='.$_REQUEST['p_action']; } echo '', + printf ('%s', $href, - $l_line['jrn_def_type'], + $p_type, $l_line['jrn_def_id'], $add, $l_line['jrn_def_name'] @@ -318,7 +316,7 @@ function ShowMenuJrnUser($p_dossier,$p_type,$p_jrn,$p_extra="") if ( $p_extra !="" ) echo $p_extra; echo ''; echo "
'; - printf ('%s
"; - //echo '
'; + } /*! @@ -475,7 +473,7 @@ function u_ShowMenuRecherche($p_cn,$p_jrn,$p_sessid,$p_array=null) $r.= ''; $r.=' Internal code '; $r.=''; - $r.='vous pouvez spcifier uniquement
une partie (VEN, numéro d\'opération...)
'; + $r.='vous pouvez spécifier uniquement
une partie (VEN, numéro d\'opération...)
'; $r.=""; @@ -483,7 +481,7 @@ function u_ShowMenuRecherche($p_cn,$p_jrn,$p_sessid,$p_array=null) $r.= ""; $r.= ""; $W=new widget("js_search_poste"); - $W->label="Numro de poste
Vous pouvez utilisez le %"; + $W->label="Numéro de poste
Vous pouvez utilisez le %"; $W->name="poste"; $W->value=$p_poste; $r.="".$W->IOValue(); @@ -543,9 +541,9 @@ function ShowMenuAdvanced($default="") { array('user_advanced.php?p_action=central&'.$str_dossier,'Centralise',"Centralisation",3), array('compta.php?p_action=stock&'.$str_dossier,'Stock',"Gestion des stocks",5), - array('form.php?'.$str_dossier,'Rapport',"Rapport",6), + array('user_advanced.php?p_action=defreport&'.$str_dossier,'Rapport',"Rapport",6), array('import.php?'.$str_dossier,'Import Banque',"Banque",7), - array('ecrit_ouv.php?'.$str_dossier,'Ecriture ouverture',"",8), + array('user_advanced.php?p_action=ouv&'.$str_dossier,'Ecriture ouverture',"",8), array('user_advanced.php?p_action=verif&'.$str_dossier,'Vérification',"",10) ), 'H',"mtitle","mtitle",$default); @@ -565,8 +563,8 @@ function ShowJrn($p_menu="") $p_array=array( array("user_jrn.php?jrn_type=NONE" ,"Grand Livre"), - array("user_jrn.php?jrn_type=VEN" ,"Entre"), - array("user_jrn.php?jrn_type=ACH","Dpense"), + array("user_jrn.php?jrn_type=VEN" ,"Entrée"), + array("user_jrn.php?jrn_type=ACH","Dépense"), array("user_jrn.php?jrn_type=FIN","Financier"), array("user_jrn.php?jrn_type=ODS","Op. Diverses") ); @@ -639,11 +637,15 @@ function MenuAdmin() case 'modele_mgt': $def=2; break; + case 'restore'; + $def=3; + break; } } $item=array (array("admin_repo.php?action=user_mgt","Utilisateurs",'Gestion des utilisateurs',0), - array("admin_repo.php?action=dossier_mgt","Dossiers",'Gestion des dossiers',1), - array("admin_repo.php?action=modele_mgt","Modles",'Gestion des modles',2), + array("admin_repo.php?action=dossier_mgt","Dossiers",'Gestion des dossiers',1), + array("admin_repo.php?action=modele_mgt","Modèles",'Gestion des modèles',2), + array("admin_repo.php?action=restore","Restore","Restaure une base de données",3), array("login.php","Accueil"), array("logout.php","Logout") ); @@ -681,18 +683,21 @@ function ShowMenuDocument() */ function ShowMenuParam($p_action="") { - $s=dossier::get(); + // The phpsessid is set manually to avoid problem when the server is + // misconfigured and the cookies are not sent (or accepted) + $s=dossier::get().'&PHPSESSID='.$_REQUEST['PHPSESSID']; $sub_menu=ShowItem(array( - array('parametre.php?p_action=company&'.$s,'Socits','Parametre societe',1), + array('parametre.php?p_action=company&'.$s,'Sociétés','Parametre societe',1), array('parametre.php?p_action=devise&'.$s,'Devises','Devise',2), array('parametre.php?p_action=tva&'.$s,'Tva','Taux & poste pour la TVA',3), array('parametre.php?p_action=poste&'.$s,'Poste Comptable','Poste comptable constant',4), array('parametre.php?p_action=pcmn&'.$s,'Plan Comptable','Modification du plan comptable',11), array('parametre.php?p_action=fiche&'.$s,'Fiche','Modifie les classe de base',5), - array('parametre.php?p_action=sec&'.$s,'Scurit','securite',8), + array('parametre.php?p_action=sec&'.$s,'Sécurité','securite',8), + array('parametre.php?p_action=preod&'.$s,'Ecritures définies','Ecritures définies ',12), array('parametre.php?p_action=document&'.$s,'Document','Facture, lettre de rappel, proposition...',7), - array('parametre.php?p_action=jrn&'.$s,'Journaux','Creation et modification de journaux',10) + array('parametre.php?p_action=jrn&'.$s,'Journaux','Creation et modification de journaux',10) ), 'H',"mtitle","mtitle",$p_action,' width="100%"'); @@ -715,7 +720,7 @@ function MenuJrn() { $str_dossier=dossier::get(); echo '
'; - echo ''; + echo ''; include_once("postgres.php"); $Cn=DbConnect(dossier::id()); $Ret=ExecSql($Cn,"select jrn_def_id,jrn_def_name, @@ -747,7 +752,7 @@ function ShowMenuPcmn($p_start=1) { $str_dossier="&".dossier::get(); echo '
Cration
Création
'; - echo ''; + echo ''; echo ''; echo ''; echo ''; @@ -758,35 +763,7 @@ function ShowMenuPcmn($p_start=1) echo ''; echo "
1 Immobilis
1 Immobilisé
2 Actif a un an au plus
3 Stock et commande
4 Compte tiers
9 Hors Comptabilité
"; } -/*! - * \brief Show the left menu for the report (add a report, view it) - * - * \param $p_dossier dossier id - * - * - * - * \return nothing - * - * - */ -function ShowMenuComptaForm() { - $cn=DbConnect(dossier::id()); - $str_dossier=dossier::get(); - echo ''; -} /*! * \brief Show the menu for importing, verify and transfert Bank CSV @@ -837,13 +814,15 @@ $r.='

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 diff --git a/doc/manuel.odt b/doc/manuel.odt deleted file mode 100644 index 53a914af28ecbc900adba08a5732e8d239653b03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42524 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 diff --git a/doc/manuel_win2.odt b/doc/manuel_win2.odt new file mode 100644 index 0000000000000000000000000000000000000000..73d169c8a9a01f4d68b09fc0d9df27d28975f898 GIT binary patch literal 387695 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