Back to top

Autore Topic: metodo di pagamento + spedizione  (Letto 3281 volte)

Offline tuttolinux

  • Nuovo arrivato
  • *
  • Post: 44
    • Mostra profilo
metodo di pagamento + spedizione
« il: 27 Giu 2007, 20:37:05 »
Ciao a tutti,
volevo sapere se è possibile associare dei metodi di spedizione a dei metodi di pagamento.
Mi spiego meglio... vorrei che se un utente sceglie la spedizione in contrassegno come metodo di pagamento sia solo possibile il pagamento alla consegna.
Ho visto che però virtuemart fa prima scegleiere il corriere e poi il metodo di spedizione. Do conseguenza dovrei mettere come metodo di spedizione contrassegno e poi come pagamento dovrebbe esserci solo alla consegna.
Questo mi permetterebbe di personalizzare meglio le tariffe dei corrieri.

Offline mdgb

  • Nuovo arrivato
  • *
  • Post: 41
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #1 il: 10 Nov 2007, 16:08:49 »
Ciao a tutti.
Anche io sto cercando di fare la stessa cosa.
Qualcuno sa se si possono collegare le modalità di pagamento in base alla modalità di spedizione scelta?

Nel mio caso monto joomla alla versione 13 e Virtuemart all'ultima relase.

La cosa utile sarebbe non far visualizzare il metodo di pagamento in contrassegno se uno ha scelto una modalità di spedizione per cui non è previsto.

Offline mdgb

  • Nuovo arrivato
  • *
  • Post: 41
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #2 il: 10 Nov 2007, 18:31:49 »
Aggiungo una cosa.
Se qualcuno mi sa dire i file che sono da modificae posso con un paio di amici rovare a modificarlo per farlo funzionare.
Se Pisu ci può dare una mano (anche se immagino sia già bello pieno di richieste) si potrebbe fare.

P.s. Ho controllato anche sul forum di Virtuemart ma anche li non ho trovato soluzione

Offline g.m.

  • Appassionato
  • ***
  • Post: 233
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #3 il: 11 Nov 2007, 08:07:38 »
Io ho alcune idee su come fare questa cosa.
Ecco quello che secondo me si potrebbe fare..
nel file checkout.paymentradio.php include prima delle query del codice tipo questo:
$spedizione = explode("|",$shipping_rate_id); che ci mette in $spedizione[4] l'id del metodo di spedizione.
A questo punto secondo me si potrebbe aggiungere un campo nella tabella vm_payment_method che indica a quale(i) id di spedizione è legato un certo pagamento.
Una volta fatto quello modificare le query sempre in checkout.paymentradio.php in maniera che restituiscano solo i pagamenti che ci interessano.
Il problema principale di quanto detto sopra (almeno secondo me) è creare un gestore per poter "legare" dal back-end spedizioni a pagamenti.
Quindi se la modifica è da fare in maniera un po artigiale non è un grosso problema...altrimenti per fare un cosa fatta bene c'è bisogno di qualcun'altro che dia una mano ;)

Ciao, spero sia utile

Offline mdgb

  • Nuovo arrivato
  • *
  • Post: 41
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #4 il: 11 Nov 2007, 10:36:11 »
Grazie mille "Morpheus". I tuoi consigli mi hanno salvato più di una volta.

Ora provo a fare le modifiche, poi ti faccio sapere.
Per quanti riguarda il poter gestire una cosa del genere dal backend non penso di essere in grado di essere di aiuto nello sviluppo comunque se posso esere di aiuto non mi tiro sicuramente in dietro.

Offline g.m.

  • Appassionato
  • ***
  • Post: 233
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #5 il: 11 Nov 2007, 11:20:26 »
Di nulla
per la gestione nel back-end ciò che intendevo dire è che se altri danno una mano si potrebbe anche sviluppare qualcosa di ben fatto. Secondo me questo hack potrebbe servire a molti.
Io al momento non ho il tempo di mettermi a sviluppare da solo una cosa del genere.
Tutto qui ;)
Ciao, buon lavoro

Offline mdgb

  • Nuovo arrivato
  • *
  • Post: 41
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #6 il: 11 Nov 2007, 11:38:56 »
Chiaro.
Scusa se ti disturbo ancora ma potresti farmi un esempio della modifica alla query?

Con il Php ho ancora poca dimestichezza. :-)

Offline g.m.

  • Appassionato
  • ***
  • Post: 233
    • Mostra profilo
Re: metodo di pagamento + spedizione
« Risposta #7 il: 11 Nov 2007, 17:05:29 »
riguardando meglio un solo campo nella tabella non basta ::)
per fare una cosa che funzioni è necessario creare una tabella collegata che abbini ad ogni id di spedizione un id di pagamento.

Come esempio questa protrebbe essere la tabella:

CREATE TABLE `jos_vm_payment_method_ship_xref` (
  `id_jos_vm_payment_method_ship_xref` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `id_payment_method` INTEGER UNSIGNED NOT NULL,
  `id_shipping_rate` INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (`id_jos_vm_payment_method_ship_xref`)
)
ENGINE = MyISAM;

una volta popolata tipo così
"id_jos_vm_payment_method_ship_xref","id_payment_method","id_shipping_rate"
1,2,22
2,4,22
3,17,22

andrebbero modificate le query che estraggono i pagamenti,
assumendo di avere la variabile spedizione[4] che contiene l'id della spedizione, la prima query (quella dei pagamenti con tipologia carta di credito) sarebbe

$db_cc  = new ps_DB;
$q = "SELECT * from #__{vm}_payment_method,#__{vm}_shopper_group,#__{vm}_payment_method_ship_xref WHERE ";
$q .= "#__{vm}_payment_method.shopper_group_id=#__{vm}_shopper_group.shopper_group_id ";
$q .= "AND (#__{vm}_payment_method.shopper_group_id='".$auth['shopper_group_id']."' ";
$q .= "OR #__{vm}_shopper_group.default='1') ";
$q .= "AND (enable_processor='' OR enable_processor='Y') ";
$q .= "AND payment_enabled='Y' ";
$q .= "AND #__{vm}_payment_method.vendor_id='$ps_vendor_id' ";
$q .= "AND #__{vm}_payment_method_ship_xref.id_payment_method=#__{vm}_payment_method.payment_method_id AND #__{vm}_payment_method_ship_xref.id_shipping_rate=".spedizione[24];
$q .= " ORDER BY list_order";
$db_cc->query($q);

la seconda query invece

$db_nocc  = new ps_DB;
$q = "SELECT * from #__{vm}_payment_method,#__{vm}_shopper_group,#__{vm}_payment_method_ship_xref WHERE ";
$q .= "#__{vm}_payment_method.shopper_group_id=#__{vm}_shopper_group.shopper_group_id ";
$q .= "AND (#__{vm}_payment_method.shopper_group_id='".$auth['shopper_group_id']."' ";
$q .= "OR #__{vm}_shopper_group.default='1') ";
$q .= "AND (enable_processor='B' OR enable_processor='N' OR enable_processor='P') ";
$q .= "AND payment_enabled='Y' ";
$q .= "AND #__{vm}_payment_method.vendor_id='$ps_vendor_id' ";
$q .= "AND #__{vm}_payment_method_ship_xref.id_payment_method=#__{vm}_payment_method.payment_method_id AND #__{vm}_payment_method_ship_xref.id_shipping_rate=".spedizione[24];
$q .= " ORDER BY list_order";
$db_nocc->query($q);

in questo modo se hai popolato giustamente la nuova tabella otterresti che i pagamenti che escono sono solo quelli che sono legati ad un determinato id di spedizione.

Per concludere il lavoro come dicevo ci sarebbe da aggiungere un sistema nel lato admin per gestira la cosa. ad esempio nei pagamenti una terza tab chiamata ad shipping che abbia una lista delle spedizioni le quali una volta selezionate anche in blocco permettano di popolare la nuova tabella creata.

spero di essere stato esuastivo..controlla il codice e le query xchè le ho buttate giù così di botto e non ho provato l'hack.
Ciao Buon Lavoro

 



Web Design Bolzano Kreatif