Pagina 1 di 2
Fatture e numero progressivo
Inviato: 14/10/2003, 15:06
da cirieh
Salve,
ho implementato nel modulo delle fatture il numero della fattura.
per fare ciò l'ho legato al numero dell'ordine.
ora il problema è che un cliente ha volto annullare l'ordine(per mancanza di disponibilità) e nonostante io abbia cancellato l'ordine il contatore progressivo ne tiene conto lo stesso.
Come faccio a farlo ripartire ,ad es., da 10 invece che da 11?
Ps:per il momento ho risolto modificando il numero nelle tabelle del database(ma è una rottura perchè devo modificare praticamente tutte le orders_...)
Inviato: 15/10/2003, 1:07
da BluEdoG
se è legato all'id ti sconsiglio anche di andarci a mettere mano, rischi l'incasinamento della tabella (ravvedibile comodamente con una contrib per la manutenzione del mysql).
Ti conviene cercare una soluzione slegata dal sistema del counter id, magari creare una nuova riga con un counter che pero' non sia l'id (che è anche un campo chiave, cioè serve per legare qsta tabella ad altre).
Inviato: 15/10/2003, 1:21
da cirieh
azz...ma non si può dire al contatore semplicemente di ripartire da dove voglio??
la cosa migliore sarebbe inserire un campo dove poter comunicare il n° della fattura...peccato che io sia incapace...
Inviato: 15/10/2003, 1:27
da BluEdoG
come ho detto prima il campo è un campo chiave (cioè serve per il collegamento ad altre tabelle, pertanto rischi di non avere piu' il collegamento oppure collegare fatture a clienti che non centrano un tubo).
Per aggiungere un campo serve un po' di conoscenza di php, fai come fanno tutti (me compreso) cerca un campo che gli assomigli per funzione e prova a comprenderne il funzioamento facendo modifche e vedendo i risultati. Cmq ci sono sempre i corsi online tipo
www.html.it
Inviato: 15/10/2003, 1:35
da cirieh
quindi in linea di massima dovrei creare un campo(ad es. fattura_n) nella tabella orders...il problema è che non so come si faccia a richiamare/visualizzare il valore di tale campo nell'invoice.php.
Inviato: 15/10/2003, 1:38
da BluEdoG
6 pure facilitato, se hai installato Piva ti trovi la falsa riga di funzionamento direttamente in invoice.php (leggendo l'install molti hanno campito come creare un nuovo campo) per inserire un nuovo campo preso dal db.
Inviato: 15/10/2003, 2:09
da cirieh
eoricamente dovrei aggiungere delle riche simili a queste:
Codice: Seleziona tutto
$oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
$orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
così definisco il campo da guardare,no?
così lo visualizzo, vero?
Inviato: 15/10/2003, 10:15
da BluEdoG
si il concetto è quello giusto, va affinata la pratica.
prima crei la qry
Codice: Seleziona tutto
$variabile = tep_db_query ("SELECT campo FROM tabella WHERE condizioneA = condizioneB");
terminata la variabile si deve creare l'array
Codice: Seleziona tutto
$variabilerichiamata = tep_db_fetch_array($variabile);
a questo punto puoi richiamare il tuo campo nella parte html
Inviato: 15/10/2003, 13:34
da cirieh
allora:
ho creato un nuovo campo nella tabella orders chiamato fatture_id(impostato in INT, not null)
a questo punto ho inserito nell'invoice.php le seguenti righe:
Codice: Seleziona tutto
$fatture_query = tep_db_query("select fatture_id from " . TABLE_ORDERS . " where fatture_id = orders_id");
$fID = tep_db_fetch_array($fatture_query);
ora mi visualizza sempre 1
qualsiasi fattura stia guardando...
credo non sia corretta fatture_id = orders_id
grazie
Inviato: 15/10/2003, 13:48
da BluEdoG
devi impostare nella tabella dell'sql anche come auto_increment
Inviato: 15/10/2003, 13:53
da cirieh
non posso inquanto ho già l'orders_id in autoincrement infatti:
1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key
il problema credo sia nell'associazione
Inviato: 15/10/2003, 14:33
da BluEdoG
già è vero, si puo' usare una volta sola per tavola... la faccenda si complica.
ti tocca creare una nuova tabella con l'id incrementale e l'id order da collegare (con la qry sql che hai creato in precedenza) alla tabella orders
Inviato: 15/10/2003, 14:59
da cirieh
ma io non voglio che sia incrementale preferisco inserirlo io stesso (in modo da non sbagliare) attraverso mysql
Inviato: 15/10/2003, 15:22
da BluEdoG
allora è molto piu' semplice, devi creare una form se guardi il file /includes/functions/html_output.php trovi tutte le funzioni che regolano l'html
Inviato: 15/10/2003, 15:36
da cirieh
ho dato un'occhiata al file, devo usa questo:
Codice: Seleziona tutto
////
// Output a form input field
function tep_draw_input_field($name, $value = '', $parameters = '', $required = false, $type = 'text', $reinsert_value = true) {
$field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';
if (isset($GLOBALS[$name]) && ($reinsert_value == true) && is_string($GLOBALS[$name])) {
$field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
} elseif (tep_not_null($value)) {
$field .= ' value="' . tep_output_string($value) . '"';
}
if (tep_not_null($parameters)) $field .= ' ' . $parameters;
$field .= '>';
if ($required == true) $field .= TEXT_FIELD_REQUIRED;
return $field;
}