Diversi metodi di pagamento per diversi tipi di prodotto


11

C'è un modo per avere diversi metodi di pagamento disponibili per diversi tipi di prodotto?

Questo è il mio scenario e quello che ho capito finora:

Ho due tipi di prodotti sul mio sito di Drupal Commerce, per vendere pass per i viaggi in autobus. Un tipo è solo quello di prenotare il pass dell'autobus in cui si selezionano la data e gli orari (elementi pubblicitari personalizzati) per i biglietti del bus. L'altro tipo è per i pagamenti effettivi, in cui è possibile scegliere un pass per l'autobus, aggiungere tour aggiuntivi (anche con elementi pubblicitari personalizzati) e quindi pagare con Paypal.

Sto utilizzando una versione personalizzata del modulo di pagamento di esempio, per il tipo di pagamento della prenotazione e il modulo Paypal di Drupal Commerce per i pagamenti effettivi.

Ciò di cui ho bisogno è avere il metodo di pagamento di prenotazione personalizzato disponibile per un tipo di prodotto e il metodo di pagamento paypal per l'altro tipo di prodotto.

Ho provato ad aggiungere una condizione per il tipo di prodotto e non sono stato in grado di farlo. Possiamo aggiungere una condizione per un determinato prodotto, ma non per un tipo di prodotto. Questo sarebbe l'ideale: https://skitch.com/ipwa/eywxa/add-a-new-condition-chasquibus

Quello che ho fatto per ora è clonare la regola Paypal per ciascun tipo di prodotto di pagamento e selezionare lo SKU dei prodotti come condizione. Questo non è l'ideale, perché se un utente ha più di un prodotto di pagamento, otteniamo un metodo di pagamento Paypal duplicato disponibile per ciascun prodotto di pagamento aggiuntivo nell'ordine. Immagino che abbia senso dato che abbiamo una regola del metodo di pagamento per ognuno.

La mia soluzione sarebbe in grado di avere una condizione per il tipo di prodotto nella regola del metodo di pagamento o di avere le quattro SKU dei prodotti di pagamento in una condizione "L'ordine contiene un determinato prodotto".

Risposte:


10

Il prodotto typeè una proprietà commerce_productdell'entità, quindi è possibile utilizzare la condizione "Confronto dati" incorporata per testarlo.

Basta aggiungere una nuova condizione di tipo "Confronto dei dati" e rendere il selettore di dati simile al seguente:

Schermata 1

Continuando otterrai una schermata come questa:

Schermata 2

Come puoi vedere, ottieni un piacevole elenco a discesa di tipi di prodotti tra cui scegliere. L'ho appena provato e funziona a meraviglia.

Se non funziona per qualsiasi motivo, è abbastanza facile implementare la propria condizione delle regole in un modulo personalizzato:

function MYMODULE_rules_condition_info() {
  return array(
    'commerce_product_is_type' => array(
      'label' => t('Product is a certain type'), 
      'parameter' => array(
        'product' => array(
          'label' => t('Product'),
          'type' => 'commerce_product',
        ),
        'type' => array(
          'label' => t('Product Type (Machine Name)'),
          'type' => 'text'
        )
      ), 
      'group' => t('Commerce Product'),
      'callbacks' => array(
        'execute' => 'MYMODULE_commerce_product_is_type',
      )
    ),
  );
}


function MYMODULE_commerce_product_is_type($product, $type) {
  return $product->type == $type;
}

Wow, grazie, questa sembra la strada da percorrere per ora. Sebbene la risposta non risponda esattamente alla domanda (potrebbe essere necessario presentare un problema affinché Commerce fornisca una condizione della regola del tipo di prodotto), risolve il mio problema. Lascio aperta la taglia per permettere a più persone di rispondere, ma sembra così lontano che otterrai la taglia. Grazie per gli screenshot tra l'altro, aiuta molto.
ipwa,

@ipwa Si è scoperto che non era troppo complicato, ho aggiornato la risposta
Clive

Vorrei che tu non avessi cancellato la tua risposta precedente e l'abbia aggiunta come altra risposta. Quando provo a utilizzare commerce-product: digita come un selettore di dati per la condizione di confronto dei dati ottengo questo errore: "Selettore di dati commerce-product: il tipo per i dati dei parametri non è valido."
ipwa,

@ipwa Quale vuoi dire? Quello con il codice o il primo? Ho rimesso il codice nella risposta nel caso in cui intendessi quello
Clive

Intendevo la tua risposta sull'utilizzo del prodotto SKUS con OR, che mi ha aiutato molto a capire OR e come usarlo. Attualmente utilizzandolo, proverò il modulo personalizzato per implementare le mie condizioni. Grazie ho imparato molto sulle regole con le tue risposte.
ipwa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.