function output() { global $payment_table, $name; print "\t <select name=\"{$this->name}\" class=\"FacetSelect\">\n"; print "\t\t <option value=\"\"></option>\n"; $result = dynQuery("*", $payment_table); while ($a_row = dbms_fetch_array($result)) { $selected = ""; if ($a_row["Tipo_Pagamento"] == $this->selected) { $selected = "selected"; } print "\t\t <option value=\"" . $a_row["Tipo_Pagamento"] . "\" {$selected} >" . $a_row["Tipo_Pagamento"] . "</option>\n"; } print "\t </select>\n"; }
// recupero i dati della fattura da stornare $rs_fattura = dynQuery("*", $invoices_table, "ID_Fattura = {$form['ID_Fattura']}"); $fattura = dbms_fetch_array($rs_fattura); $ts_data_nota = mktime(0, 0, 0, $mese, $giorno, $anno); $ts_data_fattura = strtotime($fattura['Data_Fattura']); if ($ts_data_nota < $ts_data_fattura) { $message = "La data della nota di credito ({$giorno} {$mese} {$anno}) non può essere inferiore alla data fattura (" . strftime("%d %m %Y", $fattura['Data_Fattura']) . ")!<br>"; } // controllo che il totale non sia superiore alla fattura da stornare: se prevedo la possibilita' di creare piu' note // per la stessa fattura, devo controllare che non sia superiore al saldo tra fattura e note gia' emesse $form['Totale'] = $form['Imponibile'] * 1.2; if ($form['Totale'] > $fattura['Totale']) { $message = "Il totale della nota di credito {$form['Totale']} non può essere superiore al totale della fattura {$fattura['Totale']} da stornare!<br>"; } // controllo che l'ultima nota inserita non abbia data successiva alla presente $rs_ultima_nota = dynQuery("*", $credit_notes_table, 1, "ID_Nota Desc"); $ultima_nota = dbms_fetch_array($rs_ultima_nota); if ($ultima_nota) { $ts_ultima_nota = strtotime($ultima_nota['Data_Nota']); } else { $ts_ultima_nota = 0; } // se e' la prima nota metto il time stamp a 0 if ($ts_data_nota < $ts_ultima_nota) { $message .= "La data dell'ultima nota emessa (" . strftime("%d %B %Y", $ts_ultima_nota) . ") non può essere superiore alla data nota !<br>"; } // se tutto ok, procedo con la visualizzazione dell'anteprima if ($message == "") { // trasformo i parametri da passare in var di sessione $session['ID_Fattura'] = $form['ID_Fattura']; $session['Imponibile'] = $form['Imponibile'];
<td colspan="4" class="FacetDataTD"><?php print $message; ?> </td></tr> <tr> <?php $headers_fatture = array("N. Fattura" => "N_Fattura", "Ragione Sociale" => "Ragione_Sociale", "Data Fattura" => "Data_Fattura", "Data Scadenza" => "Scadenza", "Totale" => "Totale", "Cancella" => ""); $headerFatture = new linkHeaders($headers_fatture); $headerFatture->output(); ?> </tr> <?php $result = dynQuery('*', $spl_invoices_table, $session['where'], $orderby, $session['limit'], $session['passo']); while ($a_row = dbms_fetch_array($result)) { print "<tr>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Upd_Fattura_Fornitore.php?ID_Fattura_Acquisto=" . $a_row['ID_Fattura_Acquisto'] . "\">" . $a_row["N_Fattura"] . "</a> </td>"; print "<td class=\"FacetDataTD\">" . $a_row["Ragione_Sociale"] . " </td><td class=\"FacetDataTD\">" . formatDate($a_row["Data_Fattura"]) . " </td><td class=\"FacetDataTD\">" . formatDate($a_row["Scadenza"]) . " </td><td class=\"FacetDataTD\">" . $a_row['Totale'] . " </td>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Del_Fattura_Fornitore.php?ID_Fattura_Acquisto=" . $a_row['ID_Fattura_Acquisto'] . "\"><img src=\"images/x.gif\" alt=\"Cancella\" border=\"0\"></a></td>"; print "</tr>"; } ?> </table>
$resource = dynQuery("ID_Nota, ID_Fornitore, Ragione_Sociale, Totale, Tipo_Pagamento, Data_Nota ", $spl_credit_notes_table, 1, 2, $limit, $passo); while ($a_row = dbms_fetch_array($resource)) { $query = "\tINSERT INTO " . $terms_table . " \r\n\t\t\t\t(\r\n\t\t\t\tID_Nota_Fornitore,\r\n\t\t\t\tID_Fornitore, \r\n\t\t\t\tRagione_Sociale, \r\n\t\t\t\tEntrate, \r\n\t\t\t\tTipo_Pagamento, \r\n\t\t\t\tScadenza \r\n\t\t\t\t)\r\n\t\t\t\t\tVALUES \r\n\t\t\t\t(\r\n\t\t\t\t'{$a_row['ID_Nota']}',\r\n\t\t\t\t'{$a_row['ID_Fornitore']}',\r\n\t\t\t\t'{$a_row['Ragione_Sociale']}',\r\n\t\t\t\t'{$a_row['Totale']}',\t\t\t\t\r\n\t\t\t\t'{$a_row['Tipo_Pagamento']}',\r\n\t\t\t\t'{$a_row['Data_Nota']}'\t\t\t\t\r\n\t\t\t\t)"; $result = mysql_query($query, $link); if (!$result) { print "Importazione note credito vendita non riuscita, script terminato<br>"; print mysql_error(); exit; } } // importazione movimenti // prima cancello tutte gli inserimenti nella tabella $query_svuota = "DELETE FROM " . $terms_table . " WHERE ID_Movimento <> '' "; $result = mysql_query($query_svuota, $link); $passo = recordCount($mov_table); $resource = dynQuery("ID_Movimento, ID_Cliente, ID_Fornitore, Ragione_Sociale, Data_Valuta, Tipo_Pagamento, Entrate, Uscite ", $mov_table, 1, 2, $limit, $passo); while ($a_row = dbms_fetch_array($resource)) { if (!empty($a_row['ID_Cliente'])) { $in_out = "Uscite"; if ($a_row['Entrate'] == 0) { // si tratta di una nota credito pagata al cliente $a_row['Entrate'] = $a_row['Uscite']; $in_out = "Entrate"; } $query = "\tINSERT INTO " . $terms_table . " \r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\tID_Movimento,\r\n\t\t\t\t\t\tID_Cliente, \r\n\t\t\t\t\t\tRagione_Sociale, \r\n\t\t\t\t\t\t{$in_out}, \r\n\t\t\t\t\t\tTipo_Pagamento, \r\n\t\t\t\t\t\tScadenza \r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\tVALUES \r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t'{$a_row['ID_Movimento']}',\r\n\t\t\t\t\t\t'{$a_row['ID_Cliente']}',\r\n\t\t\t\t\t\t'{$a_row['Ragione_Sociale']}',\r\n\t\t\t\t\t\t'{$a_row['Entrate']}',\t\t\t\t\r\n\t\t\t\t\t\t'{$a_row['Tipo_Pagamento']}',\r\n\t\t\t\t\t\t'{$a_row['Data_Valuta']}'\t\t\t\t\r\n\t\t\t\t\t\t)"; $result = mysql_query($query, $link); } if (!empty($a_row['ID_Fornitore'])) { $in_out = "Entrate"; // indica il campo if ($a_row['Uscite'] == 0) {
$message .= "I campi Numero Fattura, Tipo Pagamento, Totale e Imposta sono obbligatori ! <br>"; } if (empty($giorno) || empty($mese) || empty($anno)) { $message .= "Devi inserire la data emissione della nota di credito ! <br>"; } // controllo che l'imponibile non sia 0 if ($form['Totale'] == 0) { $message = "Il totale della nota di credito non può essere nullo!<br>"; } // controllo che sia inserita e corretta la data nota if (!checkdate($mese, $giorno, $anno)) { $message .= "La data nota di credito {$giorno}-{$mese}-{$anno} non è corretta! <br>"; } // controllo che la data nota di credito non sia inferiore alla data fattura // recupero i dati della fattura da stornare $rs_fattura = dynQuery("*", $spl_invoices_table, "ID_Fattura_Acquisto = {$form['ID_Fattura_Acquisto']}"); $fattura = dbms_fetch_array($rs_fattura); $ts_data_nota = mktime(0, 0, 0, $mese, $giorno, $anno); $ts_data_fattura = strtotime($fattura['Data_Fattura']); if ($ts_data_nota < $ts_data_fattura) { $message = "La data della nota di credito " . strftime("{$anno}-{$mese}-{$giorno}") . " non può essere inferiore alla data fattura " . strftime($fattura['Data_Fattura']) . "!<br>"; } // controllo che il totale non sia superiore alla fattura da stornare: se prevedo la possibilita' di creare piu' note // per la stessa fattura, devo controllare che non sia superiore al saldo tra fattura e note gia' emesse // $form['Totale'] = $form['Imponibile']*1.2; // calcolo il saldo per fare il casting a float $saldo = $fattura['Totale'] - $form['Totale']; if ($saldo < 0) { $message = "Il totale della nota di credito {$form['Totale']} non può essere superiore al totale della fattura {$fattura['Totale']} da stornare!<br>"; } if ($message == "") {
$monte_cliente[$a_row['ID_Cliente']] = monteCliente($a_row['ID_Cliente']); $saldo_cliente[$a_row['ID_Cliente']] = saldoCliente($a_row['ID_Cliente']); } $rs_saldo = dynQuery("DISTINCT ID_Fornitore", $terms_table); // lista degli id_fornitore while ($a_row = dbms_fetch_array($rs_saldo)) { $monte_fornitore[$a_row['ID_Fornitore']] = monteFornitore($a_row['ID_Fornitore']); $saldo_fornitore[$a_row['ID_Fornitore']] = saldoFornitore($a_row['ID_Fornitore']); } // i record vengono sempre ordinati con la scadenza piu' recente per ultima $orderby = "Scadenza Desc, ID_Fattura_Vendita Desc, ID_Fattura_Acquisto Desc"; // calcolo il numero totale di record e lo inserisco come $session['passo'] $session['passo'] = recordCount($terms_table); // seleziono solo le fatture e le note, non i movimenti $session['where'] = " ID_Movimento = '' "; $result = dynQuery('*', $terms_table, $session['where'], $orderby, $session['limit'], $session['passo']); while ($a_row = dbms_fetch_array($result)) { // calcolo il totale delle entrate e delle uscite if (!isset($entrate)) { $entrate = 0; } if (!isset($uscite)) { $uscite = 0; } // resetto la variabile per il link $riferimento = ""; if (!empty($a_row['ID_Fattura_Vendita'])) { $documento = getRow($invoices_table, "ID_Fattura", $a_row['ID_Fattura_Vendita']); $riferimento = "<a href=\"Admin_Stampa_Fattura.php?ID_Fattura=" . $a_row['ID_Fattura_Vendita'] . "\">Fattura " . $documento['Prog_Fattura_Annuo'] . "/" . strftime("%Y", strtotime($documento['Data_Fattura'])) . "</a> "; } if (!empty($a_row['ID_Nota_Cliente'])) {
include "dblib.inc"; include "clublib.inc"; checkAdmin(); $message = ""; if (isset($actionflag) && $actionflag == "Delete") { $result = delRow($spl_credit_notes_table, "ID_Nota", $ID_Nota); header("Location: Admin_Note_Fornitori.php"); exit; } if (!isset($actionflag)) { // recupero i dati della nota $form = getRow($spl_credit_notes_table, "ID_Nota", $ID_Nota); // recupero i dati del fornitore e relative fatture per lo storno $fornitore = getRow($suppliers_table, "ID_Fornitore", $form['ID_Fornitore']); $rs_fatture = dynQuery('*', $spl_invoices_table, "ID_Fornitore = {$form['ID_Fornitore']}"); // faccio qualche operazione sulla data // converto la data in Unix timestamp $ts_Data_Nota = strtotime($form['Data_Nota']); // ricavo giorno, mese, anno $giorno = strftime("%d", $ts_Data_Nota); $mese = strftime("%m", $ts_Data_Nota); $anno = strftime("%Y", $ts_Data_Nota); // print $giorno ."-".$mese."-".$anno ; // print strftime ($form['Data_Ordine']); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head>
// recupero i dati del cliente $cliente = getRow($customers_table, "ID_Cliente", $session['ID_Cliente']); // gli ordini inseriti in fattura // $rs_ordini_fattura = dynQuery ('*', $orders_table, "ID_Cliente = $session[ID_Cliente] and Status = 'INSERITO'" ); // calcolo l'imponibile, iva e totale // okkio: session[iva] ha l'aliquota, mentre form[iva] ha l'imposta totale $form['Imponibile'] = $session['Imponibile']; $form['Iva'] = $form['Imponibile'] * $session['Iva'] / 100; $form['Totale'] = $form['Imponibile'] + $form['Iva']; // ripristino l'array // faccio qualche operazione sulle date $data_nota = strftime("%d %B %Y", $session['ts_data_nota']); // $data_scadenza = strftime("%d %B %Y", $session['ts_data_scadenza']); // ricavo di nuovo il progressivo nota -- esiste una probabilita' "non nulla" che qualcuno abbia inserito una nota nel frattempo $anno_riferimento = strftime("%Y"); $rs_ultima_nota = dynQuery("*", $credit_notes_table, "Data_Nota like '%{$anno_riferimento}%'", "ID_Nota Desc"); $ultima_nota = dbms_fetch_array($rs_ultima_nota); // ricavo il progressivo annuo, ma se e' la prima nota dell'anno, resetto il contatore if ($ultima_nota) { $form['Prog_Nota_Annuo'] = $ultima_nota['Prog_Nota_Annuo'] + 1; } else { $form['Prog_Nota_Annuo'] = 1; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html>
<td class="FacetFieldCaptionTD">Cliente * </td> <td class="FacetDataTD"><select name="form[ID_Cliente]" disabled class="FacetSelect"> <?php // imposto come selzionato il cliente che e' nel database print "<option value=\"" . $form['ID_Cliente'] . "\" selected>" . $form['Ragione_Sociale'] . "</option>\n"; ?> <option value=""></option> <?php // recupero tutti i clienti per la select del form $result = dynQuery('*', $customers_table); while ($a_row = dbms_fetch_array($result)) { print "<option value=\"" . $a_row['ID_Cliente'] . "\">" . $a_row['Ragione_Sociale'] . " - " . $a_row['Cognome'] . "</option>\n"; } ?> </select></td> </tr> <tr> <td class="FacetFieldCaptionTD">Tipo Pagamento * </td> <td colspan="2" class="FacetDataTD"> <select name="form[Tipo_Pagamento]" disabled class="FacetSelect">
<tr> <td colspan="4" class="FacetDataTD"><?php print $message; ?> </td></tr> <tr> <th class="FacetFieldCaptionTD">Banca </th><th class="FacetFieldCaptionTD">Indirizzo </th> <th class="FacetFieldCaptionTD">Agenzia </th><th class="FacetFieldCaptionTD">Abi </th><th class="FacetFieldCaptionTD">Cab </th><th class="FacetFieldCaptionTD">Numero Conto </th> <th class="FacetFieldCaptionTD">Titolare </th> <th class="FacetFieldCaptionTD">Cancella </th> </tr> <?php $result = dynQuery('*', $bank_table); while ($a_row = dbms_fetch_array($result)) { print "<tr>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Upd_Banca.php?ID_Banca=" . $a_row["ID_Banca"] . "\">" . $a_row["Banca"] . "</a> </td>"; print "<td class=\"FacetDataTD\">" . $a_row["Indirizzo"] . " </td><td class=\"FacetDataTD\">" . $a_row["Agenzia"] . " </td><td class=\"FacetDataTD\">" . $a_row["Abi"] . " </td><td class=\"FacetDataTD\">" . $a_row["Cab"] . " </td><td class=\"FacetDataTD\">" . $a_row["Conto"] . " </td><td class=\"FacetDataTD\">" . $a_row["Titolare"] . " </td>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Del_Banca.php?ID_Banca=" . $a_row["ID_Banca"] . "\"><img src=\"images/x.gif\" alt=\"Cancella\" border=\"0\"></a></td>"; print "</tr>"; } ?> </table> </body>
$form['Iva'] = 0; $form['Totale'] = 0; while ($a_row = dbms_fetch_array($rs_ordini_fattura)) { $form['Iva'] = $form['Iva'] + $a_row['Prezzo'] * $a_row['Iva'] / 100; $form['Imponibile'] = $form['Imponibile'] + $a_row['Prezzo']; $form['Totale'] = $form['Totale'] + $a_row['Prezzo'] + $a_row['Prezzo'] * $a_row['Iva'] / 100; } // ripristino l'array // reset($a_row); $rs_ordini_fattura = dynQuery('*', $orders_table, "ID_Cliente = {$session['ID_Cliente']} and Status = 'INSERITO'"); // faccio qualche operazione sulle date $data_fattura = strftime("%d %B %Y", $session['ts_data_fattura']); $data_scadenza = strftime("%d %B %Y", $session['ts_data_scadenza']); // ricavo il progressivo fattura -- e' solo temporaneo, il definitivo verra' inserito al momento // dell'inserimento della fattura per gestire le concorrenze $rs_ultima_fattura = dynQuery("*", $invoices_table, 1, "ID_Fattura Desc"); $ultima_fattura = dbms_fetch_array($rs_ultima_fattura); $form['Prog_Fattura_Annuo'] = $ultima_fattura['Prog_Fattura_Annuo'] + 1; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Fattura N. <?php
<td colspan="4" class="FacetDataTD"><?php print $message; ?> </td></tr> <tr> <?php $headers_fatture = array("N. Nota" => "N_Nota", "Ragione Sociale" => "Ragione_Sociale", "Data Nota" => "Data_Nota", "Totale" => "Totale", "Imposta" => "Imposta", "Cancella" => ""); $headerFatture = new linkHeaders($headers_fatture); $headerFatture->output(); ?> </tr> <?php $result = dynQuery('*', $spl_credit_notes_table, $session['where'], $orderby, $session['limit'], $session['passo']); while ($a_row = dbms_fetch_array($result)) { print "<tr>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Upd_Nota_Fornitore.php?ID_Nota=" . $a_row['ID_Nota'] . "\">" . $a_row["N_Nota"] . "</a> </td>"; print "<td class=\"FacetDataTD\">" . $a_row["Ragione_Sociale"] . " </td>"; print "<td class=\"FacetDataTD\">" . formatDate($a_row["Data_Nota"]) . " </td>"; print "<td class=\"FacetDataTD\">" . $a_row['Totale'] . " </td>"; print "<td class=\"FacetDataTD\">" . $a_row['Imposta'] . " </td>"; print "<td class=\"FacetDataTD\"><a href=\"Admin_Del_Nota_Fornitore.php?ID_Nota=" . $a_row['ID_Nota'] . "\"><img src=\"images/x.gif\" alt=\"Cancella\" border=\"0\"></a></td>"; print "</tr>"; } ?> </table>
$form['Totale'] = 0; while ($a_row = dbms_fetch_array($rs_ordini_fattura)) { $form['Iva'] = $form['Iva'] + $a_row['Prezzo'] * $a_row['Iva'] / 100; $form['Imponibile'] = $form['Imponibile'] + $a_row['Prezzo']; $form['Totale'] = $form['Totale'] + $a_row['Prezzo'] + $a_row['Prezzo'] * $a_row['Iva'] / 100; } // ripristino l'array // reset($a_row); $rs_ordini_fattura = dynQuery('*', $orders_table, "ID_Cliente = {$session['ID_Cliente']} and Status = 'INSERITO'"); // faccio qualche operazione sulle date $data_fattura = ucwords(strftime("%d %B %Y", $session['ts_data_fattura'])); $data_scadenza = ucwords(strftime("%d %B %Y", $session['ts_data_scadenza'])); // ricavo il progressivo fattura -- e' solo temporaneo, il definitivo verra' inserito al momento // dell'inserimento della fattura per gestire le concorrenze $anno_riferimento = strftime("%Y"); $rs_ultima_fattura = dynQuery("*", $invoices_table, "Data_Fattura like '%{$anno_riferimento}%'", "ID_Fattura Desc"); $ultima_fattura = dbms_fetch_array($rs_ultima_fattura); $form['Prog_Fattura_Annuo'] = $ultima_fattura['Prog_Fattura_Annuo'] + 1; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Fattura N. <?php
echo $border; ?> > <tr> <th class="FacetFieldCaptionTD">Data Ordine</th> <th class="FacetFieldCaptionTD">Protocollo</th> <th class="FacetFieldCaptionTD">Oggetto</th> <th class="FacetFieldCaptionTD">Imponibile</th> <th class="FacetFieldCaptionTD">Iva</th> </tr> <?php // ripristino l'array degli ordini inseriti in fattura $rs_ordini_fattura = dynQuery('*', $orders_table, "ID_Fattura = '{$fattura['ID_Fattura']}'"); // visualizzo l'elenco degli ordini inseriti in fattura while ($a_row = dbms_fetch_array($rs_ordini_fattura)) { // per il momento la gestione degli allegati e' rimandata $a_row["Allegato"] = ""; print "<tr>"; print "<td align=\"center\" class=\"FacetDataTD\">" . formatDate($a_row["Data_Ordine"]) . " </td>"; print "<td align=\"center\" class=\"FacetDataTD\">" . $a_row["Protocollo"] . " </td><td class=\"FacetDataTD\">" . $a_row["Oggetto"] . " </td>"; print "<td align=\"center\" class=\"FacetDataTD\">€ " . formatEuro($a_row["Prezzo"]) . " </td>"; print "<td align=\"center\" class=\"FacetDataTD\">" . $a_row["Iva"] . "% </td>"; print "</tr>"; } ?> </table>