Fatture e numero progressivo

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Fatture e numero progressivo

Messaggio 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_...)
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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).
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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...
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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.
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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.
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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?

Codice: Seleziona tutto

<?php echo tep_db_input($oID); ?>
così lo visualizzo, vero?
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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

Codice: Seleziona tutto

echo $variabilerichiamata['campo'];
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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);

Codice: Seleziona tutto

echo $fID['fatture_id'];
ora mi visualizza sempre 1
qualsiasi fattura stia guardando...
credo non sia corretta fatture_id = orders_id

grazie
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio da BluEdoG »

devi impostare nella tabella dell'sql anche come auto_increment
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio da cirieh »

ma io non voglio che sia incrementale preferisco inserirlo io stesso (in modo da non sbagliare) attraverso mysql
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio 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
saluti, Caneblu
[ www.caneblu.com ]
cirieh
membro Baby
membro Baby
Messaggi: 93
Iscritto il: 01/10/2003, 0:00
Località: USA
Contatta:

Messaggio 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;
  }
Rispondi