<?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> €</span>\n"; echo "</td>\n"; //Totale avere echo "<td align='right'>\n"; echo " <span><span id='totale_avere'></span> €</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(".", ",")+" €" ); $("#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>