• Resolved pipoulito

    (@pipoulito)


    Hi,

    is it possible to add a condition of payment method to create the invoice ?

    if Credit card -> generetate invoice
    if Cheque -> do not generetate invoice

    thanks

Viewing 7 replies - 1 through 7 (of 7 total)
  • Plugin Contributor Darren Peyou

    (@dpeyou)

    Hey @pipoulito,

    In other words, only the cheque payment method will have the generation disabled…?

    Please see the code snippet left here by my colleague Yordan.
    https://www.ads-software.com/support/topic/attach-the-invoice-for-certain-payment-methods/
    …And in this line:
    $payment_methods_disallowed = ['bacs'];
    Replace ‘bacs’ with ‘cheque’ & that’s it. ??

    Hey @pipoulito,

    Were you able to solve this? Just for clarification, this is the code snippet my colleague dpeyou was talking about:

    /**
     * Disable the invoice attachment for specific payment methods
     */
    add_filter( 'wpo_wcpdf_document_is_allowed', function ( $allowed, $document ) {
    	if ( $order = $document->order && $document->type == 'invoice') {
    		// Set the payment method IDs below
    		$payment_methods_disallowed = ['cheque'];
    		$allowed = ( in_array( $order->get_payment_method(), $payment_methods_disallowed ) ) ? false : true;
    	}
    	return $allowed;
    }, 10, 2 );

    This will only affect the Invoice PDF!
    And of course, If you haven’t worked with code snippets (actions/filters) or functions.php before, read this guide: How to use filters

    Thread Starter pipoulito

    (@pipoulito)

    Thanks a lot !
    Ho do you add the methods , like this ?
    $payment_methods_disallowed = [‘cheque’, ‘bacs’];
    Actually i want to allow only credit card.
    thanks

    Hi @pipoulito,

    You can try this code snippet:

    /**
     * Disable the invoice attachment for specific payment methods
     */
    add_filter( 'wpo_wcpdf_document_is_allowed', function ( $allowed, $document ) {
    	if ( $order = $document->order && $document->type == 'invoice') {
    		// Set the payment method IDs below
    		$payment_methods_allowed = ['stripe'];
    		$allowed = ( in_array( $order->get_payment_method(), $payment_methods_allowed ) ) ? true: false;
    	}
    	return $allowed;
    }, 10, 2 );

    …And in this line:
    $payment_methods_not_allowed = [‘stripe’];
    Replace ‘stripe’ with ‘paypal’ as appropriate. ??

    Let me know if it worked for you!

    Best regards.

    Thread Starter pipoulito

    (@pipoulito)

    Hi,

    Unfortunaltely, on the Orders list view backend (table), i get an error with this function: $order->get_payment_method()

    i have traced $order that is equal to 1

    Une erreur de type E_ERROR a été causée dans la ligne 223 du fichier /home/entreprisesuzesp/public_html/wp-content/themes/uzege-child/functions.php. Message d’erreur : Uncaught Error: Call to a member function get_payment_method() on bool in /home/entreprisesuzesp/public_html/wp-content/themes/uzege-child/functions.php:223

    • This reply was modified 2 years ago by pipoulito.

    Hey @pipoulito,

    I am very sorry to hear that. However, here is a snippet of code that will most likely work for you.

    /**
    * Disable the invoice attachment for specific payment methods
    */

    add_filter( 'wpo_wcpdf_document_is_allowed', function ( $allowed, $document ) {
    	if ( ! empty( $document ) && $document->get_type() == 'invoice' ) {
    		$order = $document->order;
    		if ( empty( $order ) ) {
    			return $allowed;
    		}
    		$order_payment_method = is_callable( array( $order, 'get_payment_method' ) ) ? $order->get_payment_method() : '';
    		$allowed              = in_array( $order_payment_method, array( 'stripe' ) ) ? true: false;
    	}
    	return $allowed;
    }, 10, 2 );

    Remember to replace
    in_array( $order_payment_method, array( 'stripe' ) ):
    ‘stripe’ with ‘paypal’ as appropriate.

    Let me know if it worded for you!

    Plugin Contributor Yordan Soares

    (@yordansoares)

    Hi @pipoulito,

    Since we haven’t heard back from you in the last two weeks, we’re assuming you solved this issue, so I’ll go ahead and mark this ticket as Resolved.

    Feel free to reply to this topic is you still need help with this, or open a new topic if you have any other questions!

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘Generate invoice depending on payment method’ is closed to new replies.