1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-27 16:23:19 +01:00
This commit is contained in:
Luca 2019-04-19 17:34:58 +02:00
commit 8426541a4e
12 changed files with 148 additions and 139 deletions

View File

@ -35,7 +35,7 @@ echo '
var sconto_percentuale = form.find("#sconto_percentuale");
var sconto_unitario = form.find("#sconto_unitario");
var totale = '.$options['totale'].';
var totale = '.$options['imponibile_scontato'].';
function aggiorna_sconto_percentuale() {
var sconto = sconto_percentuale.val().toEnglish();

View File

@ -13,6 +13,7 @@ $options = [
'dir' => $documento->direzione,
'conti' => $documento->direzione == 'entrata' ? 'conti-vendite' : 'conti-acquisti', 'idanagrafica' => $documento['idanagrafica'],
'show-ritenuta-contributi' => !empty($documento['id_ritenuta_contributi']),
'imponibile_scontato' => $documento->imponibile_scontato,
'totale' => $documento->totale,
];

View File

@ -332,6 +332,10 @@ class Fattura extends Document
*/
public static function registraScadenza(Fattura $fattura, $importo, $scadenza, $is_pagato, $type = 'fattura')
{
//Calcolo la descrizione
$descrizione = database()->fetchOne("SELECT CONCAT(co_tipidocumento.descrizione, CONCAT(' numero ', IF(numero_esterno!='', numero_esterno, numero))) AS descrizione FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='".$fattura->id."'")['descrizione'];
database()->insert('co_scadenziario', [
'iddocumento' => $fattura->id,
'data_emissione' => $fattura->data,
@ -340,6 +344,7 @@ class Fattura extends Document
'tipo' => $type,
'pagato' => $is_pagato ? $importo : 0,
'data_pagamento' => $is_pagato ? $scadenza : null,
'descrizione' => $descrizione,
]);
}

View File

@ -3,6 +3,19 @@
include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'add':
$data = post("data");
$tipo = post("tipo");
$da_pagare = post("da_pagare");
$descrizione = post("descrizione");
$dbo->query("INSERT INTO co_scadenziario(descrizione, tipo, data_emissione, scadenza, da_pagare, pagato, data_pagamento) VALUES(".prepare($descrizione).", ".prepare($tipo).", CURDATE(), ".prepare($data).", ".prepare($da_pagare).", '0', '0000-00-00')");
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Scadenza inserita!'));
break;
case 'update':
// Calcolo il totale da pagare
$rs = $dbo->fetchArray('SELECT SUM(da_pagare) AS totale_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento=(SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')');
@ -26,4 +39,9 @@ switch (post('op')) {
}
break;
case "delete":
$dbo->query("DELETE FROM co_scadenziario WHERE id='".$id_record."'");
flash()->info(tr('Scadenza eliminata!'));
break;
}

39
modules/scadenzario/add.php Executable file
View File

@ -0,0 +1,39 @@
<?php
include_once __DIR__.'/../../core.php';
?>
<form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="dir" value="<?php echo $dir ?>">
<div class="row">
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Tipo'); ?>", "name": "tipo", "required": 1, "values": "list=\"\":\"- Seleziona un'opzione -\", \"f24\":\"F24\", \"generico\":\"Scadenze generiche\"", "value": "" ]}
</div>
<div class="col-md-4">
{[ "type": "date", "label": "<?php echo tr('Data scadenza'); ?>", "name": "data", "required": 1, "value": "-now-" ]}
</div>
<div class="col-md-4">
{[ "type": "number", "label": "<?php echo tr('Importo'); ?>", "name": "da_pagare", "required": 1, "value": "" ]}
</div>
</div>
<div class='row'>
<div class='col-md-12'>
{[ "type": "textarea", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "" ]}
</div>
</div>
<div class='pull-right'>
<button type='submit' class='btn btn-primary'><i class='fa fa-plus'></i> Aggiungi</button>
</div>
<div class='clearfix'></div>
</form>

View File

@ -16,20 +16,8 @@ if (empty($dbo->fetchArray('SELECT * FROM co_scadenziario'))) {
<div class="row">
<div class="col-md-4 col-md-offset-4">
<button type="button" onclick="window.open('<?php echo Prints::getHref('Scadenzario', null, 'type=all'); ?>');" <?php echo $disabled; ?> class="btn btn-<?php echo $class; ?> btn-block btn-lg text-center"><i class="fa fa-print"></i> <?php echo tr('Stampa scadenzario'); ?></button>
<button type="button" onclick="window.open('<?php echo Prints::getHref('Scadenzario', null, null); ?>');" <?php echo $disabled; ?> class="btn btn-<?php echo $class; ?> btn-block btn-lg text-center"><i class="fa fa-print"></i> <?php echo tr('Stampa scadenzario'); ?></button>
</div>
</div>
<br>
<!-- STAMPE SINGOLE -->
<div class="row">
<div class="col-md-2 col-md-offset-4">
<button type="button" onclick="window.open('<?php echo Prints::getHref('Scadenzario', null, 'type=clienti'); ?>');" <?php echo $disabled; ?> class="btn btn-<?php echo $class; ?> btn-block"><i class="fa fa-print"></i> <?php echo tr('Scadenzario clienti'); ?></button>
</div>
<div class="col-md-2">
<button type="button" onclick="window.open('<?php echo Prints::getHref('Scadenzario', null, 'type=fornitori'); ?>');" <?php echo $disabled; ?> class="btn btn-<?php echo $class; ?> btn-block"><i class="fa fa-print"></i> <?php echo tr('Scadenzario fornitori'); ?></button>
</div>
</div>
<br>
<br>

View File

@ -34,7 +34,22 @@ if ($rs[0]['dir'] == 'entrata') {
'.Modules::link('Anagrafiche', $rs[0]['idanagrafica'], $rs[0]['ragione_sociale']).'
</td>
</tr>';
} else {
echo '
<tr>
<th>'.tr('Documento').':</th>
<td>'.$rs[0]['descrizione'].'</td>
</tr>';
echo '
<tr>
<th>'.tr('Numero').':</th>
<td>'.$numero.'</td>
</tr>';
echo '
<tr>
<th>'.tr('Data').':</th>
<td>'.Translator::dateToLocale($rs[0]['data']).'</td>
</tr>';
} else if ($rs[0]['dir'] == 'uscita') {
$dir = 'uscita';
$modulo = 'Fatture di acquisto';
echo "
@ -42,23 +57,30 @@ if ($rs[0]['dir'] == 'entrata') {
<th width='120'>".tr('Fornitore').':</th>
<td>'.$rs[0]['ragione_sociale'].'</td>
</tr>';
}
echo '
echo '
<tr>
<th>'.tr('Documento').':</th>
<td>'.$rs[0]['descrizione'].'</td>
</tr>';
echo '
echo '
<tr>
<th>'.tr('Numero').':</th>
<td>'.$numero.'</td>
</tr>';
echo '
echo '
<tr>
<th>'.tr('Data').':</th>
<td>'.Translator::dateToLocale($rs[0]['data']).'</td>
</tr>';
}else{
$rs = $dbo->fetchArray("SELECT * FROM co_scadenziario WHERE id='".$id_record."'");
echo "
<tr>
<th width='120'>".tr('Descrizione').':</th>
<td><input type="text" class="form-control" name="descrizione" value="'.$rs[0]['descrizione'].'"></td>
</tr>';
}
echo '
</table>
@ -77,7 +99,12 @@ echo '
$totale_da_pagare = 0;
$totale_pagato = 0;
$rs = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento = (SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).') ORDER BY scadenza ASC');
//Scelgo la query in base al segmento
if($record['iddocumento']!=0){
$rs = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento = (SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).') ORDER BY scadenza ASC');
}else{
$rs = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE id='.prepare($id_record).' ORDER BY scadenza ASC');
}
for ($i = 0; $i < count($rs); ++$i) {
if ($rs[$i]['da_pagare'] == $rs[$i]['pagato']) {
@ -129,7 +156,7 @@ echo '
</table>
<div class='pull-right'>
<a onclick="launch_modal( 'Aggiungi prima nota', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $record['iddocumento']; ?>&dir=<?php echo $dir; ?>', 1 );" class="btn btn-sm btn-primary"><i class="fa fa-euro"></i> <?php echo tr('Aggiungi prima nota...'); ?></a>
<a onclick="launch_modal( 'Registra contabile pagamento', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $record['iddocumento']; ?>&dir=<?php echo $dir; ?>', 1 );" class="btn btn-sm btn-primary"><i class="fa fa-euro"></i> <?php echo tr('Registra contabile pagamento...'); ?></a>
</div>
<div class="clearfix"></div>
@ -153,10 +180,27 @@ echo '
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
<?php
if($records[0]['iddocumento']==0){
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
}
?>
<script>
$(document).ready( function(){
totale_ok();
$('input[name*=scadenza]').keyup( function(){ totale_ok(); } );
totale_ok();
<?php
if($record['iddocumento']!=0){
?>
$('input[name*=scadenza]').keyup( function(){ totale_ok(); } );
<?php
}
?>
});
function totale_ok(){

View File

@ -237,14 +237,9 @@ foreach ($v_iva as $key => $value) {
echo '
<table class="table">';
echo '
<tr>';
if (abs($record['bollo']) > 0) {
echo '
<td width="85%">';
} else {
echo '
<tr>
<td width="100%">';
}
if (!empty($record['note'])) {
echo '
<p class="small-bold">'.tr('Note', [], ['upper' => true]).':</p>
@ -252,25 +247,6 @@ if (abs($record['bollo']) > 0) {
}
echo '
</td>';
if (abs($record['bollo']) > 0) {
echo '
<td width="15%" align="right">';
}
if (abs($record['bollo']) > 0) {
echo '
<table style="width: 20mm; font-size: 50%; text-align: center" class="table-bordered">
<tr>
<td style="height: 20mm;">
<br><br>
'.tr('Spazio per applicazione marca da bollo', [], ['upper' => true]).'
</td>
</tr>
</table>';
}
if (abs($record['bollo']) > 0) {
echo '
</td>';
}
echo '
</tr>';
@ -294,7 +270,6 @@ $totale = sum([
$netto_a_pagare = sum([
$totale,
$record['bollo'],
-$record['ritenutaacconto'],
]);

View File

@ -157,18 +157,13 @@ echo "
</td>
</tr>';
// Aggiunta della marca da bollo al totale
$totale = sum($totale, $record['bollo']);
// Rivalsa INPS (+ bollo)
// Rivalsa INPS
if (!empty($record['rivalsainps'])) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_rivalse WHERE id=(SELECT idrivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idrivalsainps!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;
if (abs($record['bollo']) > 0) {
--$first_colspan;
}
if (empty($sconto)) {
--$first_colspan;
--$second_colspan;
@ -182,14 +177,6 @@ if (!empty($record['rivalsainps'])) {
], ['upper' => true]).'
</th>';
if (abs($record['bollo']) > 0) {
echo '
<th class="text-center small" colspan="1">
'.tr('Marca da bollo', [], ['upper' => true]).'
</th>';
}
echo '
<th class="text-center small" colspan="'.$second_colspan.'">
@ -202,14 +189,6 @@ if (!empty($record['rivalsainps'])) {
'.moneyFormat($record['rivalsainps']).'
</td>';
if (abs($record['bollo']) > 0) {
echo '
<td class="cell-padded text-center" colspan="1">
'.moneyFormat($record['bollo']).'
</td>';
}
echo '
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
@ -220,15 +199,13 @@ if (!empty($record['rivalsainps'])) {
$fattura = \Modules\Fatture\Fattura::find($id_record);
// Ritenuta d'acconto ( + bollo, se no rivalsa inps)
// Ritenuta d'acconto ( + se no rivalsa inps)
if (!empty($record['ritenutaacconto']) || !empty($fattura->totale_ritenuta_contributi) || !empty($record['spit_payment'])) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;
if (empty($record['rivalsainps']) && abs($record['bollo']) > 0) {
--$first_colspan;
}
if (empty($sconto)) {
--$first_colspan;
--$second_colspan;
@ -250,14 +227,6 @@ if (!empty($record['ritenutaacconto']) || !empty($fattura->totale_ritenuta_contr
], ['upper' => true]).'
</th>';
if (empty($record['rivalsainps']) && abs($record['bollo']) > 0) {
echo '
<th class="text-center small" colspan="1">
'.tr('Marca da bollo', [], ['upper' => true]).'
</th>';
}
echo '
<th class="text-center small" colspan="'.$second_colspan.'">';
if (empty($record['split_payment'])) {
@ -276,14 +245,6 @@ if (!empty($record['ritenutaacconto']) || !empty($fattura->totale_ritenuta_contr
'.moneyFormat($record['ritenutaacconto'] + $fattura->totale_ritenuta_contributi).'
</td>';
if (empty($record['rivalsainps']) && abs($record['bollo']) > 0) {
echo '
<td class="cell-padded text-center" colspan="1">
'.moneyFormat($record['bollo']).'
</td>';
}
echo '
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
@ -320,36 +281,6 @@ if (!empty($record['split_payment'])) {
</tr>';
}
// Solo bollo
if (empty($record['ritenutaacconto']) && empty($record['rivalsainps']) && empty($record['split_payment']) && abs($record['bollo']) > 0) {
$first_colspan = 3;
$second_colspan = 2;
if (empty($sconto)) {
$first_colspan = 1;
}
echo '
<tr>
<th class="text-center small" colspan="'.$first_colspan.'">
'.tr('Marca da bollo', [], ['upper' => true]).'
</th>
<th class="text-center small" colspan="'.$second_colspan.'">
'.tr('Netto a pagare', [], ['upper' => true]).'
</th>
</tr>
<tr>
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
'.moneyFormat($record['bollo']).'
</td>
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
'.moneyFormat($totale - $record['ritenutaacconto']).'
</td>
</tr>';
}
echo '
</table>';

View File

@ -13,19 +13,11 @@ $body = file_get_contents($docroot.'/templates/scadenzario/scadenzario_body.html
include_once $docroot.'/templates/pdfgen_variables.php';
/*
Dati scadenzario
*/
if ($_GET['type'] == 'clienti') {
$titolo = 'Scadenzario clienti';
$add_where = "AND co_tipidocumento.dir='entrata'";
} elseif ($_GET['type'] == 'fornitori') {
$titolo = 'Scadenzario fornitori';
$add_where = "AND co_tipidocumento.dir='uscita'";
} else {
$titolo = 'Scadenzario';
$add_where = '';
}
//Filtro in base al segmento
$id_segment = $_SESSION['module_18']['id_segment'];
$rs_segment = $dbo->fetchArray("SELECT * FROM zz_segments WHERE id=".prepare($id_segment));
$add_where = "AND ".$rs_segment[0]['clause'];
$body .= '<h3>'.$titolo.' dal '.Translator::dateToLocale($date_start).' al '.Translator::dateToLocale($date_end)."</h3>\n";
$body .= "<table class=\"table_values\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\" style=\"table-layout:fixed; border-color:#aaa;\">\n";

View File

@ -57,3 +57,11 @@ foreach ($files as $key => $value) {
}
delete($files);
//Calcolo la descrizione per il nuovo campo descrizione in scadenzario
$rs = $dbo->fetchArray("SELECT * FROM co_scadenziario");
for($i=0;$i<sizeof($rs);$i++){
$dbo->query("UPDATE co_scadenziario SET descrizione=(SELECT CONCAT(co_tipidocumento.descrizione, CONCAT(' numero ', IF(numero_esterno!='', numero_esterno, numero))) FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='".$rs[$i]['iddocumento']."') WHERE co_scadenziario.id='".$rs[$i]['id']."'");
}

View File

@ -257,4 +257,12 @@ UPDATE `co_documenti` SET `data_ricezione` = NULL WHERE `data_ricezione` = '0000
UPDATE `co_documenti` SET `data_stato_fe` = NULL WHERE `data_stato_fe` = '0000-00-00 00:00:00';
-- Rimozione tasto di stampa scadenzario totale da dentro la scadenza
UPDATE `zz_prints` SET `is_record` = 0 WHERE `name` = 'Scadenzario';
UPDATE `zz_prints` SET `is_record` = 0 WHERE `name` = 'Scadenzario';
ALTER TABLE co_scadenziario ADD `descrizione` TEXT NOT NULL AFTER `tipo`;
INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito`, `is_fiscale`) VALUES (NULL, (SELECT id FROM zz_modules WHERE `name`='Scadenzario'), 'Scadenzario generico', 'co_scadenziario.tipo="generico"', 'WHR', '####', '', 0, 0, 0, 0), (NULL, (SELECT id FROM zz_modules WHERE `name`='Scadenzario'), 'Scadenzario F24', 'co_scadenziario.tipo="f24"', 'WHR', '####', '', 0, 0, 0, 0);
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM (`co_scadenziario` LEFT JOIN (((`co_documenti` LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`) LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`) LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`) ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`) LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` WHERE 1=1 HAVING 2=2 AND (ABS(`pagato_reale`) < ABS(`da_pagare`) AND IF(`co_statidocumento`.`descrizione` IS NOT NULL, `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\'), 3=3)) ORDER BY `scadenza` ASC' WHERE `zz_modules`.`name` = 'Scadenzario';
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT id FROM zz_modules WHERE `name`='Scadenzario'), 'Descrizione scadenza', 'co_scadenziario.descrizione', 1, 1, 0, 0, '', '', 1, 0, 0);