fetchArray($query); $dir = $rs[0]['dir']; $numero_doc = !empty($rs[0]['numero_esterno']) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; $tipo_doc = $rs[0]['tdescrizione']; $nota_credito = false; if ($tipo_doc == 'Nota di credito') { $nota_credito = true; $tipo_doc = 'nota di credito'; } elseif ($tipo_doc == 'Nota di debito') { $tipo_doc = 'nota di debito'; } else { $tipo_doc = 'fattura'; } $descrizione = tr('Pag. _DOC_ num. _NUM_ del _DATE_ (_NAME_)', [ '_DOC_' => $tipo_doc, '_NUM_' => $numero_doc, '_DATE_' => Translator::dateToLocale($rs[0]['data']), '_NAME_' => $rs[0]['ragione_sociale'], ]); /* Predisposizione prima riga */ $field = 'idconto_'.($dir == 'entrata' ? 'vendite' : 'acquisti'); $idconto_aziendale = $dbo->fetchArray('SELECT '.$field.' FROM co_pagamenti WHERE id = (SELECT idpagamento FROM co_documenti WHERE id='.prepare($iddocumento).') GROUP BY descrizione')[0][$field]; // Lettura conto di default $idconto_aziendale = !empty($idconto_aziendale) ? $idconto_aziendale : setting('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='.prepare($iddocumento)." AND ABS(da_pagare) > ABS(pagato) ORDER BY DATE_FORMAT(scadenza,'%m/%Y') DESC"; $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='.prepare($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='.prepare($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='.prepare($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; } } ?>
{[ "type": "select", "label": "", "id": "modello_primanota", "values": "query=SELECT idmastrino AS id, descrizione FROM co_movimenti_modelli GROUP BY idmastrino" ]}
{[ "type": "date", "label": "", "name": "data", "required": 1, "value": "-now-" ]}
{[ "type": "text", "label": "", "name": "descrizione", "id": "desc", "required": 1, "value": ]}
'.tr('Conto').' '.tr('Dare').' '.tr('Avere').' '; for ($i = 0; $i < 10; ++$i) { ($i <= 1) ? $required = 1 : $required = 0; // Conto echo ' {[ "type": "select", "name": "idconto['.$i.']", "id": "conto'.$i.'", "value": "'; if ($i == 0) { echo $idconto_controparte; } elseif ($i == 1) { echo $idconto_aziendale; } echo '", "ajax-source": "conti", "required": "'.$required.'" ]} '; // 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 = ''; } } elseif ($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 = ''; } // Se è una nota di credito, inverto i valori if ($nota_credito) { $tmp = $value_dare; $value_dare = $value_avere; $value_avere = $tmp; } // Dare echo ' {[ "type": "number", "name": "dare['.$i.']", "value": "'.$value_dare.'", "disabled": 1 ]} '; // Avere echo ' {[ "type": "number", "name": "avere['.$i.']", "value": "'.$value_avere.'", "disabled": 1 ]} '; } // Totale per controllare sbilancio echo ' '.tr('Totale').':'; // Totale dare echo ' '; // Totale avere echo ' '; // Verifica sbilancio echo ' '; ?>