DeclarationTVA/declarationtva_create.php
Frank Cools c61a964f14 Create declaration creation and view pages
New Pages Added:
- declarationtva_create.php: Complete declaration creation form
- declarationtva_view.php: Declaration details and CA-3 amounts display

Features Implemented:
- Period selection for new declarations
- Declaration naming with helpful examples
- Optional date range override
- Complete CA-3 form structure display
- Status-based action buttons (Validate/Submit)
- Proper error handling and success messages
- Full bilingual support (English/French)

Create Page Features:
- Period dropdown with date ranges
- Declaration name field with help text
- Optional date override
- Configuration reminder with link to setup

View Page Features:
- Complete declaration details
- CA-3 amounts table with all 16 lines
- Status-based actions
- Navigation back to main list

The module now has a complete declaration workflow!
2025-10-02 18:09:04 +02:00

151 lines
4.6 KiB
PHP

<?php
/**
* DeclarationTVA Create Declaration
* French CA-3 VAT Declaration Module for Dolibarr
* MVP Version - Phase 1
*/
// Load Dolibarr environment
if (file_exists('../main.inc.php')) {
$res = @include '../main.inc.php';
} elseif (file_exists('../../main.inc.php')) {
$res = @include '../../main.inc.php';
} else {
$res = 0;
}
if (!$res) {
die("Include of main fails");
}
// Load module classes
require_once DOL_DOCUMENT_ROOT . '/custom/declarationtva/core/class/declarationtva.class.php';
require_once DOL_DOCUMENT_ROOT . '/custom/declarationtva/core/class/declarationtva_config.class.php';
require_once DOL_DOCUMENT_ROOT . '/custom/declarationtva/core/class/declarationtva_period.class.php';
// Access control
if (!$user->hasRight("declarationtva", "declarationtva", "write")) {
accessforbidden();
}
// Load language files
$langs->load("declarationtva@declarationtva");
// Initialize objects
$declarationtva = new DeclarationTVA($db, $conf->entity);
$config = new DeclarationTVA_Config($db, $conf->entity);
$period = new DeclarationTVA_Period($db, $conf->entity);
// Handle form submission
$action = GETPOST('action', 'alpha');
$period_id = GETPOST('period_id', 'int');
$declaration_name = GETPOST('declaration_name', 'alpha');
$start_date = GETPOST('start_date', 'alpha');
$end_date = GETPOST('end_date', 'alpha');
$error = '';
$success = '';
if ($action == 'create' && $period_id > 0) {
// Create the declaration
$declaration_id = $declarationtva->createDeclaration($period_id, $declaration_name);
if ($declaration_id > 0) {
$success = $langs->trans("DeclarationCreated");
// Redirect to view the created declaration
header("Location: declarationtva_view.php?id=" . $declaration_id);
exit;
} else {
$error = $langs->trans("ErrorCreatingDeclaration") . ": " . $declarationtva->error;
}
}
// Get available periods
$periods = $period->getAllPeriods();
// Page title
$title = $langs->trans("CreateDeclaration");
llxHeader('', $title);
// Print page header
print load_fiche_titre($title, '', 'title_accountancy');
// Display messages
if ($error) {
setEventMessages($error, null, 'errors');
}
if ($success) {
setEventMessages($success, null, 'mesgs');
}
// Print form
print '<div class="fiche">';
print '<div class="titre">' . $langs->trans("DeclarationDetails") . '</div>';
print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '">';
print '<input type="hidden" name="action" value="create">';
print '<table class="noborder centpercent">';
// Period selection
print '<tr>';
print '<td class="fieldrequired">' . $langs->trans("SelectPeriod") . '</td>';
print '<td>';
print '<select name="period_id" class="flat" required>';
print '<option value="">' . $langs->trans("ChoosePeriod") . '</option>';
foreach ($periods as $p) {
$selected = ($period_id == $p['rowid']) ? ' selected' : '';
print '<option value="' . $p['rowid'] . '"' . $selected . '>';
print $p['period_name'] . ' (' . dol_print_date($p['start_date'], 'day') . ' - ' . dol_print_date($p['end_date'], 'day') . ')';
print '</option>';
}
print '</select>';
print '</td>';
print '</tr>';
// Declaration name
print '<tr>';
print '<td class="fieldrequired">' . $langs->trans("DeclarationName") . '</td>';
print '<td>';
print '<input type="text" name="declaration_name" class="flat" value="' . dol_escape_htmltag($declaration_name) . '" required>';
print '<br><small>' . $langs->trans("DeclarationNameHelp") . '</small>';
print '</td>';
print '</tr>';
// Date range (optional override)
print '<tr>';
print '<td>' . $langs->trans("DateRange") . '</td>';
print '<td>';
print '<input type="date" name="start_date" class="flat" value="' . dol_escape_htmltag($start_date) . '">';
print ' - ';
print '<input type="date" name="end_date" class="flat" value="' . dol_escape_htmltag($end_date) . '">';
print '<br><small>' . $langs->trans("DateRangeHelp") . '</small>';
print '</td>';
print '</tr>';
print '</table>';
// Buttons
print '<div class="center">';
print '<input type="submit" class="button" value="' . $langs->trans("CreateDeclaration") . '">';
print '<a href="declarationtvaindex.php" class="button">' . $langs->trans("Cancel") . '</a>';
print '</div>';
print '</form>';
print '</div>';
// Print configuration section
print '<div class="fiche">';
print '<div class="titre">' . $langs->trans("DeclarationTVAConfiguration") . '</div>';
print '<div class="info">';
print $langs->trans("ConfigurationInfo") . ' ';
print '<a href="admin/setup_mvp.php" class="butAction">' . $langs->trans("ConfigurePCGAccounts") . '</a>';
print '</div>';
print '</div>';
// Print footer
llxFooter();
?>