This commit is contained in:
Fabio Lovato 2019-04-19 17:31:56 +02:00
commit 47c9923803
8 changed files with 140 additions and 38 deletions

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>

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();
<?php
if($record['iddocumento']!=0){
?>
$('input[name*=scadenza]').keyup( function(){ totale_ok(); } );
<?php
}
?>
});
function totale_ok(){

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

@ -258,3 +258,11 @@ UPDATE `co_documenti` SET `data_stato_fe` = NULL WHERE `data_stato_fe` = '0000-0
-- Rimozione tasto di stampa scadenzario totale da dentro la scadenza
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);