diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 0bea58fd75c54a30cdb2304696cc080c00aa6fd0..58cf57685956c879f6e0bb6d20c96c170fb6d41f 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -22,17 +22,18 @@ /** * \file htdocs/accountancy/admin/productaccount.php * \ingroup Accounting Expert - * \brief Onglet de gestion de parametrages des ventilations + * \brief To define accounting account on product / service */ require '../../main.inc.php'; // Class -require_once DOL_DOCUMENT_ROOT . '/core/lib/report.lib.php'; -require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT . '/accountancy/class/html.formventilation.class.php'; -require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php'; -require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; +require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; // Langs $langs->load("companies"); @@ -40,6 +41,10 @@ $langs->load("compta"); $langs->load("main"); $langs->load("accountancy"); +// Security check +if (!$user->admin) accessforbidden(); +if (empty($conf->accounting->enabled)) accessforbidden(); + // search & action GETPOST $action = GETPOST('action'); $codeventil_buy = GETPOST('codeventil_buy', 'array'); @@ -79,7 +84,7 @@ if (! $sortfield) if (! $sortorder) $sortorder = "ASC"; - // sales or purchase +// Sales or Purchase mode ? if ($action == 'update') { if (! empty($btn_changetype)) { $error = 0; @@ -128,12 +133,12 @@ if ($action == 'update') { $sql .= " SET accountancy_code_sell = " . $accounting->account_number; } $sql .= " WHERE rowid = " . $productid; - + dol_syslog("/accountancy/admin/productaccount.php sql=" . $sql, LOG_DEBUG); if ($db->query($sql)) { - $msg .= '<div><font color="green">' . $langs->trans("Product") . ' ' . $productid . ' ' . $langs->trans("VentilatedinAccount") . ' : ' . $monCompte . '</font></div>'; + $msg .= '<div><font color="green">' . $langs->trans("Product") . ' ' . $productid . ' ' . $langs->trans("VentilatedinAccount") . ' : ' . length_accountg($accounting->account_number) . '</font></div>'; } else { - $msg .= '<div><font color="red">' . $langs->trans("ErrorDB") . ' : ' . $langs->trans("Product") . ' ' . $productid . ' ' . $langs->trans("NotVentilatedinAccount") . ' : ' . $accounting->account_number . '<br/> <pre>' . $sql . '</pre></font></div>'; + $msg .= '<div><font color="red">' . $langs->trans("ErrorDB") . ' : ' . $langs->trans("Product") . ' ' . $productid . ' ' . $langs->trans("NotVentilatedinAccount") . ' : ' . length_accountg($accounting->account_number) . '<br/> <pre>' . $sql . '</pre></font></div>'; } } @@ -147,13 +152,6 @@ if ($action == 'update') { } } -// Security check -if ($user->societe_id > 0) - accessforbidden(); - // TODO after adding menu - // if (! $user->rights->accounting->ventilation->dispatch) - // accessforbidden(); - $form = new FormVentilation($db); // Defaut AccountingAccount RowId Product / Service @@ -179,13 +177,12 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_desc = ''; } -// debug move header to top -llxHeader('', $langs->trans("Accounts")); - /* * View */ +llxHeader('', $langs->trans("Accounts")); + print '<script type="text/javascript"> $(function () { $(\'#select-all\').click(function(event) { @@ -209,7 +206,7 @@ $sql .= " WHERE ("; $pcgver = $conf->global->CHARTOFACCOUNTS; -IF ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') { +if ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') { $sql .= " p.accountancy_code_buy ='' OR p.accountancy_code_buy IS NULL"; $sql .= " OR (p.accountancy_code_buy IS NOT NULL AND p.accountancy_code_buy != '' AND p.accountancy_code_buy NOT IN (SELECT aa.account_number FROM " . MAIN_DB_PREFIX . "accounting_account as aa , " . MAIN_DB_PREFIX . "accounting_system as asy WHERE fk_pcg_version = asy.pcg_version AND asy.rowid = " . $pcgver . "))"; @@ -241,28 +238,29 @@ if ($result) { $num_lines = $db->num_rows($result); $i = 0; - /* - * View - */ - print_barre_liste($langs->trans("ProductAccountingAccountSelect"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num_lines); - + print load_fiche_titre($langs->trans("InitAccountancy"),'','title_setup'); + print '<br>'; + + print $langs->trans("InitAccountancyDesc").'<br>'; + print '<br>'; + print '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">'; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="update">'; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; - print '<td>' . $langs->trans('OptionMode') . '</td><td>' . $langs->trans('Description') . '</td>'; + print '<td>' . $langs->trans('Options') . '</td><td>' . $langs->trans('Description') . '</td>'; print "</tr>\n"; - print '<tr ' . $bc[false] . '><td width="200"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode != 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('Accountancy_code_sell') . '</td>'; - print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductSell')); + print '<tr ' . $bc[false] . '><td width="25%"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_SELL"' . ($accounting_product_mode != 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductSell') . '</td>'; + print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductSellDesc')); print "</td></tr>\n"; - print '<tr ' . $bc[true] . '><td width="200"><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('Accountancy_code_buy') . '</td>'; - print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductBuy')) . "</td></tr>\n"; + print '<tr ' . $bc[true] . '><td><input type="radio" name="accounting_product_mode" value="ACCOUNTANCY_BUY"' . ($accounting_product_mode == 'ACCOUNTANCY_BUY' ? ' checked' : '') . '> ' . $langs->trans('OptionModeProductBuy') . '</td>'; + print '<td colspan="2">' . nl2br($langs->trans('OptionModeProductBuyDesc')) . "</td></tr>\n"; print "</table>\n"; - print '<br /><div style="text-align:center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="changetype"></div>'; + print '<br /><div align="right"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="changetype"></div>'; print "<br>\n"; @@ -270,33 +268,29 @@ if ($result) { print $msg; } - // print '<td align="left"><b>' . $langs->trans("DescProductAccountingAccount") . '</b></td> '; - // print_liste_field_titre($langs->trans("RowId"), $_SERVER["PHP_SELF"], "p.rowid", "", $param, '', $sortfield, $sortorder); - print ' '; - print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Description"), $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder); + /* if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { - print '<th align="left">' . $langs->trans("Accountancy_code_buy") . '</td>'; - print '<th align="left">' . $langs->trans("Accountancy_code_buy_suggest") . '</td>'; + print_liste_field_titre($langs->trans("Accountancy_code_buy")); } else { - print '<th align="left">' . $langs->trans("Accountancy_code_sell") . '</td>'; - print '<th align="left">' . $langs->trans("Accountancy_code_sell_suggest") . '</td>'; + print_liste_field_titre($langs->trans("Accountancy_code_sell")); } - // print_liste_field_titre(''); - print_liste_field_titre($langs->trans("Ventilate") . '<br><label id="select-all">' . $langs->trans('All') . '</label> / <label id="unselect-all">' . $langs->trans('None') . '</label>'); + */ + print_liste_field_titre($langs->trans("AccountAccounting")); + print_liste_field_titre($langs->trans("Modify") . '<br><label id="select-all">' . $langs->trans('All') . '</label> / <label id="unselect-all">' . $langs->trans('None') . '</label>','','','','','align="center"'); print '</tr>'; print '<tr class="liste_titre">'; - print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_ref" value="' . $search_ref . '"></td>'; + print '<td class="liste_titre"><input type="text" class="flat" size="10" name="search_ref" value="' . $search_ref . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="20" name="search_label" value="' . $search_label . '"></td>'; print '<td class="liste_titre"><input type="text" class="flat" size="30" name="search_desc" value="' . $search_desc . '"></td>'; - print '<td class="liste_titre" colspan="2"> </td>'; - print '<td align="right" class="liste_titre">'; + print '<td class=liste_titre"> </td>'; + print '<td align="center" class="liste_titre">'; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" name="button_search" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">'; print ' '; print '<input type="image" class="liste_titre" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" name="button_removefilter" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">'; @@ -349,13 +343,13 @@ if ($result) { // TODO ADJUST DESCRIPTION SIZE // print '<td align="left">' . $obj->description . '</td>'; // TODO: we shoul set a user defined value to adjust user square / wide screen size - $trunclengh = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 32; + $trunclengh = defined('ACCOUNTING_LENGTH_DESCRIPTION') ? ACCOUNTING_LENGTH_DESCRIPTION : 64; print '<td style="' . $code_sell_p_l_differ . '">' . nl2br(dol_trunc($obj->description, $trunclengh)) . '</td>'; - // acountingaccount buy - - if ($accounting_product_mode == 'ACCOUNTANCY_BUY') { - print '<td align="left">' . $obj->accountancy_code_buy . '</td>'; + // Accounting account buy + if ($accounting_product_mode == 'ACCOUNTANCY_BUY') + { + // print '<td align="left">' . $obj->accountancy_code_buy . '</td>'; // TODO: replace by select // print '<td align="left">' . $compta_prodbuy . '</td>'; // TODO: we shoul set a user defined value to adjust user square / wide screen size @@ -363,10 +357,11 @@ if ($result) { print '<td align="left">'; print $form->select_account($compta_prodbuy_id, 'codeventil_'.$product_static->id, 1); print '</td>'; - } else { - - // acountingaccount sel - print '<td align="left">' . $obj->accountancy_code_sell . '</td>'; + } + else + { + // Accounting account sell + // print '<td align="left">' . $obj->accountancy_code_sell . '</td>'; // TODO: replace by select // TODO: we shoul set a user defined value to adjust user square / wide screen size // $trunclenghform = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50; @@ -383,7 +378,7 @@ if ($result) { $i ++; } print '</table>'; - print '<br><div align="center"><input type="submit" class="butAction" name="changeaccount" value="' . $langs->trans("Change_Account") . '"></div>'; + print '<br><div align="right"><input type="submit" class="butAction" name="changeaccount" value="' . $langs->trans("Validate") . '"></div>'; print '</form>'; $db->free($result); diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index dad6b236d92da2bf3be8193f3172cdc8627d7b7e..c959e1419105a4d894b9898f94151f7ebf596487 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -26,7 +26,6 @@ Selectmodelcsv=Select a model of export Modelcsv_normal=Classic export Modelcsv_CEGID=Export towards CEGID Expert BackToChartofaccounts=Return chart of accounts -Back=Return Definechartofaccounts=Define a chart of accounts Selectchartofaccounts=Select a chart of accounts @@ -109,10 +108,6 @@ DelBookKeeping=Delete the records of the general ledger DescSellsJournal=Sales journal DescPurchasesJournal=Purchases journal -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash -CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash FinanceJournal=Finance journal DescFinanceJournal=Finance journal including all the types of payments by bank account @@ -167,5 +162,13 @@ Headername=Name in header Type=Type of fields Param=Additionnal parameters EnabledProduct=In Product -EnabledTiers=In Tiers +EnabledTiers=In third party EnabledVat=In Vat +## Tools - Init accounting account on product / service +InitAccountancy=Init accountancy +InitAccountancyDesc=This page can be used to initialize an accounting account on products and services that does not have accountancy account defined for sales and purchases. Check before that setup of module accountancy is complete. +Options=Options +OptionModeProductSell=Mode sales +OptionModeProductBuy=Mode purchases +OptionModeProductSellDesc=Show all products with no accounting account defined for sales. +OptionModeProductBuyDesc=Show all products with no accounting account defined for purchases. \ No newline at end of file