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