* Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2011-2013 Juanjo Menent * Copyright (C) 2015-2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/admin/taxes.php * \ingroup tax * \brief Page to setup module tax */ // Load Dolibarr environment require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; if (isModEnabled('accounting')) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; } // Load translation files required by the page $langs->loadLangs(array('admin', 'objects', 'companies', 'products')); if (!$user->admin) { accessforbidden(); } $action = GETPOST('action', 'aZ09'); /* * Actions */ // 0=normal, 1=option vat for services is on debit // TAX_MODE=0 (most cases): // Buy Sell // Product On delivery On delivery // Service On payment On payment // TAX_MODE=1 (option): // Buy Sell // Product On delivery On delivery // Service On invoice On invoice $tax_mode = empty($conf->global->TAX_MODE) ? 0 : $conf->global->TAX_MODE; if ($action == 'update') { $error = 0; // Tax mode $tax_mode = GETPOST('tax_mode', 'alpha'); $db->begin(); $res = dolibarr_set_const($db, 'TAX_MODE', $tax_mode, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } switch ($tax_mode) { case 0: $valuesellproduct = 'invoice'; $valuebuyproduct = 'invoice'; $valuesellservice = 'payment'; $valuebuyservice = 'payment'; break; case 1: $valuesellproduct = 'invoice'; $valuebuyproduct = 'invoice'; $valuesellservice = 'invoice'; $valuebuyservice = 'invoice'; break; case 2: $valuesellproduct = 'payment'; $valuebuyproduct = 'payment'; $valuesellservice = 'payment'; $valuebuyservice = 'payment'; break; } $res = dolibarr_set_const($db, 'TAX_MODE_SELL_PRODUCT', $valuesellproduct, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } $res = dolibarr_set_const($db, 'TAX_MODE_BUY_PRODUCT', $valuebuyproduct, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } $res = dolibarr_set_const($db, 'TAX_MODE_SELL_SERVICE', $valuesellservice, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } $res = dolibarr_set_const($db, 'TAX_MODE_BUY_SERVICE', $valuebuyservice, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } dolibarr_set_const($db, "MAIN_INFO_TVAINTRA", GETPOST("tva", 'alpha'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_INFO_VAT_RETURN", GETPOST("MAIN_INFO_VAT_RETURN", 'alpha'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_INFO_TVA_DAY_DEADLINE_SUBMISSION", GETPOST("deadline_day_vat", 'int'), 'chaine', 0, '', $conf->entity); if (!$error) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { $db->rollback(); setEventMessages($langs->trans("Error"), null, 'errors'); } } elseif (preg_match('/^(set|del)_?([A-Z_]+)$/', $action, $reg)) { // Set boolean (on/off) constants if (!dolibarr_set_const($db, $reg[2], ($reg[1] === 'set' ? '1' : '0'), 'chaine', 0, '', $conf->entity) > 0) { dol_print_error($db); } } /* * View */ llxHeader('', $langs->trans("TaxSetup")); $form = new Form($db); if (isModEnabled('accounting')) { $formaccounting = new FormAccounting($db); } $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans('TaxSetup'), $linkback, 'title_setup'); //print dol_get_fiche_head(null, '', '', -1); if (empty($mysoc->tva_assuj)) { print $langs->trans("YourCompanyDoesNotUseVAT").'
'; } else { print '
'; print ''; print ''; print ''; print ''; print ''; print ''; if (!$conf->use_javascript_ajax) { print '"; } else { print '"; } print ''; print ''; print '
'.$langs->trans("CompanyIds").''.$langs->trans("Value").'
'; print ''; print '
'; print $langs->trans("NotAvailableWhenAjaxDisabled"); print "'; $listval = array( '0'=>$langs->trans(""), '1'=>$langs->trans("Monthly"), '2'=>$langs->trans("Quarterly"), '3'=>$langs->trans("Annual"), ); print $form->selectarray("MAIN_INFO_VAT_RETURN", $listval, $conf->global->MAIN_INFO_VAT_RETURN); print "
'; print ''; print '
'; print '
'; print ''; // Cas des parametres TAX_MODE_SELL/BUY_SERVICE/PRODUCT print ''; print ''; print "\n"; // Standard print ''; print '\n"; // On debit for services print ''; print '\n"; // On payment for both products and services if ($conf->global->MAIN_FEATURES_LEVEL >= 1) { print ''; print '\n"; } print "
'.$langs->trans('OptionVatMode').''.$langs->trans('Description').'
'.$langs->trans('OptionVATDefault').''.nl2br($langs->trans('OptionVatDefaultDesc')); print "
'.$langs->trans('OptionVATDebitOption').''.nl2br($langs->trans('OptionVatDebitOptionDesc'))."
'.$langs->trans('OptionPaymentForProductAndServices').''.nl2br($langs->trans('OptionPaymentForProductAndServicesDesc'))."
\n"; print '
'; print load_fiche_titre('', '', '', 0, 0, '', '-> '.$langs->trans("SummaryOfVatExigibilityUsedByDefault")); //print ' ('.$langs->trans("CanBeChangedWhenMakingInvoice").')'; print ''; print ''; // Products print ''; print ''; print ''; // Services print ''; print ''; print ''; print '
 '.$langs->trans("Buy").''.$langs->trans("Sell").'
'.$langs->trans("Product").''; if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment') { print $langs->trans("OnPayment"); print ' ('.$langs->trans("SupposedToBePaymentDate").')'; } else { print $langs->trans("OnDelivery"); print ' ('.$langs->trans("SupposedToBeInvoiceDate").')'; } print ''; if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment') { print $langs->trans("OnPayment"); print ' ('.$langs->trans("SupposedToBePaymentDate").')'; } else { print $langs->trans("OnDelivery"); print ' ('.$langs->trans("SupposedToBeInvoiceDate").')'; } print '
'.$langs->trans("Services").''; if ($conf->global->TAX_MODE_BUY_SERVICE == 'payment') { print $langs->trans("OnPayment"); print ' ('.$langs->trans("SupposedToBePaymentDate").')'; } else { print $langs->trans("OnInvoice"); print ' ('.$langs->trans("InvoiceDateUsed").')'; } print ''; if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') { print $langs->trans("OnPayment"); print ' ('.$langs->trans("SupposedToBePaymentDate").')'; } else { print $langs->trans("OnInvoice"); print ' ('.$langs->trans("InvoiceDateUsed").')'; } print '
'; } print "
\n"; print '
'; print ''; print '

'; print '
'; print '
'; // Options echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; $key = 'CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT'; echo ''; echo ''; echo '
'.$langs->trans('Parameter').''.$langs->trans('Value').'
', $langs->trans($key), '', ajax_constantonoff($key), '
'; echo '
'; if (isModEnabled('accounting')) { $langs->load("accountancy"); print '

'.$langs->trans("AccountingAccountForSalesTaxAreDefinedInto", $langs->transnoentitiesnoconv("MenuAccountancy"), $langs->transnoentitiesnoconv("Setup")).''; } // End of page llxFooter(); $db->close();