gest366/modules/primanota/add.php

292 lines
9.7 KiB
PHP

<?php
include_once(__DIR__."/../../core.php");
?><form action="editor.php?id_module=$id_module$" method="post">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="iddocumento" value="<?php echo $html->form('iddocumento') ?>">
<?php
$idconto = $html->form('idconto');
$iddocumento = $html->form('iddocumento');
$dir = $html->form('dir');
if( $iddocumento!='' ){
//Lettura numero e tipo di documento
$query = "SELECT dir, numero, numero_esterno, data, co_tipidocumento.descrizione AS tdescrizione, idanagrafica AS parent_idanagrafica, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=parent_idanagrafica AND deleted=0) AS ragione_sociale FROM co_documenti LEFT OUTER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='".$iddocumento."'";
$rs = $dbo->fetchArray($query);
$dir = $rs[0]['dir'];
( $rs[0]['numero_esterno']!='' ) ? $numero_doc=$rs[0]['numero_esterno'] : $numero_doc=$rs[0]['numero'];
$tipo_doc = $rs[0]['tdescrizione'];
$descrizione = "$tipo_doc numero $numero_doc del ".date("d/m/Y", strtotime($rs[0]['data']))." (".$rs[0]['ragione_sociale'].")";
/*
Predisposizione prima riga
*/
//Lettura conto cassa di default
$idconto_aziendale = get_var('Conto aziendale predefinito');
//Generazione causale (incasso fattura)
$descrizione_conto_aziendale = $descrizione;
/*
Calcolo totale per chiudere la fattura
*/
//Lettura importo da scadenzario (seleziono l'importo di questo mese)
$query = "SELECT *, scadenza, ABS(da_pagare-pagato) AS rata FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(da_pagare) > ABS(pagato) ORDER BY DATE_FORMAT(scadenza,'%m/%Y') ASC";
$rs = $dbo->fetchArray($query);
$importo_conto_aziendale = $rs[0]['rata'];
if( $dir == 'entrata' ){
$totale_dare = abs($importo_conto_aziendale);
}
else{
$totale_dare = abs($importo_conto_aziendale);
}
//Può essere che voglia inserire un movimento in un mese diverso da quello previsto per l'incasso, perciò devo
//leggere solo il totale rimanente della fattura rispetto a quello pagato invece di leggere quello da pagare
//per il mese corrente (viene calcolato sopra)
if( $totale_dare == 0 ){
//Lettura totale finora pagato
$query = "SELECT SUM(pagato) AS tot_pagato, SUM(da_pagare) AS tot_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento='$iddocumento'";
$rs = $dbo->fetchArray($query);
$importo_conto_aziendale = abs($rs[0]['tot_da_pagare'])-abs($rs[0]['tot_pagato']);
$totale_dare = $importo_conto_aziendale;
}
/*
Predisposizione seconda riga
*/
//conto crediti clienti
if( $dir == 'entrata' ){
//Se è la prima nota di una fattura leggo il conto del cliente
if( $iddocumento != '' ){
$query = "SELECT idconto_cliente FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'";
$rs = $dbo->fetchArray($query);
$idconto_controparte = $rs[0]['idconto_cliente'];
}
else{
$query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo clienti'";
$rs = $dbo->fetchArray($query);
$idconto_controparte = $rs[0]['id'];
}
}
//conto debiti fornitori
else{
//Se è la prima nota di una fattura leggo il conto del fornitore
if( $iddocumento != '' ){
$query = "SELECT idconto_fornitore FROM an_anagrafiche INNER JOIN co_documenti ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_documenti.id='".$iddocumento."'";
$rs = $dbo->fetchArray($query);
$idconto_controparte = $rs[0]['idconto_fornitore'];
}
else{
$query = "SELECT id FROM co_pianodeiconti3 WHERE descrizione='Riepilogativo fornitori'";
$rs = $dbo->fetchArray($query);
$idconto_controparte = $rs[0]['id'];
}
}
$_SESSION["superselect"]["idconto_controparte"] = $idconto_controparte;
//Lettura causale movimento (documento e ragione sociale)
$descrizione_conto_controparte = $descrizione;
$importo_conto_controparte = $importo_conto_aziendale;
if( $dir == 'entrata' ){
$totale_avere = $importo_conto_controparte;
}
else{
$totale_avere = $importo_conto_controparte;
}
}
?>
<div class="row">
<div class="col-md-4">
{[ "type": "text", "label": "<?php echo _("Data movimento"); ?>", "name": "data", "id": "data-pr", "required": 1, "class": "text-center datepicker", "value": "<?php echo date("d/m/Y") ?>", "extra": "" ]}
</div>
<div class="col-md-8">
{[ "type": "text", "label": "<?php echo _("Causale"); ?>", "name": "descrizione", "required": 1, "class": "", "value": "<?php echo $descrizione ?>", "extra": "" ]}
</div>
</div>
<?php
$totale_dare = 0.00;
$totale_avere = 0.00;
$idmastrino = $records[0]['idmastrino'];
//Salvo l'elenco conti in un array (per non fare il ciclo ad ogni riga)
/*
Form di aggiunta riga movimento
*/
echo "<table class='table table-striped table-condensed table-hover table-bordered'>\n";
echo "<tr><th>Conto</th><th width='150'>Dare</th><th width='150'>Avere</th></tr>\n";
for( $i=0; $i<10; $i++ ){
//Conto
echo '
<tr>
<td>
{[ "type": "select", "name": "idconto['.$i.']", "no-label": 1, "value": "';
if($i == 0) echo $idconto_controparte;
else if($i==1) echo $idconto_aziendale;
echo '", "ajax-source": "conti" ]}
</td>';
//Importo dare e avere
if( $i == 0 ){
if( $dir == 'entrata' ){
$value_dare = '';
$value_avere = $importo_conto_aziendale;
}
else{
$value_dare = $importo_conto_aziendale;
$value_avere = '';
}
}
else if( $i == 1 ){
if( $dir == 'entrata' ){
$value_dare = $importo_conto_controparte;
$value_avere = '';
}
else{
$value_dare = '';
$value_avere = $importo_conto_controparte;
}
}
else{
$value_dare = '';
$value_avere = '';
}
//Dare
echo '
<td>
{[ "type": "text", "class": "inputmask-decimal", "name": "dare['.$i.']", "no-label": 1, "value": "'.$value_dare.'", "disabled": 1]}
</td>';
//Avere
echo '
<td>
{[ "type": "text", "class": "inputmask-decimal", "name": "avere['.$i.']", "no-label": 1, "value": "'.$value_avere.'", "disabled": 1]}
</td>
</tr>';
}
//Totale per controllare sbilancio
echo "<tr><td align='right'>\n<b>Totale:</b></td>\n";
//Totale dare
echo "<td align='right'>\n";
echo " <span><span id='totale_dare'></span> &euro;</span>\n";
echo "</td>\n";
//Totale avere
echo "<td align='right'>\n";
echo " <span><span id='totale_avere'></span> &euro;</span>\n";
echo "</td></tr>\n";
//Verifica sbilancio
echo "<tr><td align='right'></td>\n";
echo "<td colspan='2' align='center'>\n";
echo " <span id='testo_aggiuntivo'></span>\n";
echo "</td></tr>\n";
echo "</table>\n";
?>
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo _("Aggiungi"); ?></button>
</div>
</div>
<script type="text/javascript">
$(document).ready( function(){
$('input[id*=dare], input[id*=avere]').each( function(){
if( $(this).val() != '' ) $(this).prop("disabled", false);
});
$('select').on('change', function(){
if($(this).val() != '') $(this).parent().parent().parent().find('input').prop("disabled", false);
else{
$(this).parent().parent().parent().find('input').prop("disabled", true);
$(this).parent().parent().parent().find('input').val("");
}
});
$('input[id*=dare]').on( 'keyup change', function(){
if($(this).val() != '') $(this).parent().parent().parent().find('input[id*=avere]').prop("disabled", true);
else $(this).parent().parent().parent().find('input[id*=avere]').prop("disabled", false);
calcolaBilancio();
});
$('input[id*=avere]').on( 'keyup change', function(){
if($(this).val() != '') $(this).parent().parent().parent().find('input[id*=dare]').prop("disabled", true);
else $(this).parent().parent().parent().find('input[id*=dare]').prop("disabled", false);
calcolaBilancio();
});
//Ad ogni modifica dell'importo verifica che siano stati selezionati: il conto, la causale, la data. Inoltre aggiorna lo sbilancio
function calcolaBilancio(){
bilancio = 0.00;
totale_dare = 0.00;
totale_avere = 0.00;
//Calcolo il totale dare e totale avere
$('input[id*=dare]').each( function(){
if( $(this).val() == '' ) valore = 0;
else valore = parseFloat( $(this).val().replace(",", ".") );
totale_dare += valore;
});
$('input[id*=avere]').each( function(){
if( $(this).val() == '' ) valore = 0;
else valore = parseFloat( $(this).val().replace(",", ".") );
totale_avere += valore;
});
$('#totale_dare').text( ( totale_dare.toFixed(<?php echo get_var("Cifre decimali") ?>) ).replace('.', ',') );
$('#totale_avere').text( ( totale_avere.toFixed(<?php echo get_var("Cifre decimali") ?>) ).replace('.', ',') );
bilancio = totale_dare-totale_avere;
if( bilancio == 0 ){
$("#testo_aggiuntivo").removeClass('text-danger').html("");
$("#btn-save").removeClass('hide');
}
else{
bilancio = bilancio.toFixed(<?php echo get_var("Cifre decimali") ?>);
$("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di "+bilancio.replace(".", ",")+" &euro;" );
$("#btn-save").addClass('hide');
}
}
//Trigger dell'evento keyup() per la prima volta, per eseguire i dovuti controlli nel caso siano predisposte delle righe in prima nota
$("input[id*=dare][value!=''], input[id*=avere][value!='']").keyup();
$("select[id*=idconto]").click( function(){
$("input[id*=dare][value!=''], input[id*=avere][value!='']").keyup();
});
});
</script>
</form>