Попытка автоматизировать отправку счета-фактуры клиента / детали заказа при статусе ожидающего платежа - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть шлюз с более поздней оплатой, для которого я установил режим ожидания заказов.Я хотел бы автоматизировать отправку этих заказов по электронной почте со ссылкой «оплатить сейчас», когда я изменю их статус на ожидающий платеж.Это позволит сэкономить время загрузки страницы, так как в настоящее время мне нужно просмотреть заказ, затем изменить статус, затем вызвать «Отправить счет клиента / детали заказа», а затем вернуться к списку заказов администратора для каждого заказа с использованием этого шлюза (у меня есть «Менеджер статуса заказов WooCommerce»«который позволяет мне изменить статус заказа на ожидающий в массовом редакторе, но это может сбить меня с толку, какие заказы были отправлены счет-фактура с« Pay Link », когда я отвлекаюсь на что-то, что происходит в RL, таким образом, если у меня это былонастроить автоматическую отправку электронной почты с «платной ссылкой» при переходе в состояние ожидания, это сократит 95% времени, которое требуется в настоящее время).Я нашел этот код и пытаюсь согнуть его по своей воле:

// New order notification only for "Pending" Order status
add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );
function pending_new_order_notification( $order_id ) {
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Only for "pending" order status
if( ! $order->has_status( 'pending' ) ) return;

// Get an instance of the WC_Email_New_Order object
$wc_email = WC()->mailer()->get_emails()['WC_Email_Customer-Invoice'];

## -- Customizing Heading, subject (and optionally add recipients)  -- ##
// Change Subject
$wc_email->settings['subject'] = __('{site_title} - New customer Pending order ({order_number}) - {order_date}');
// Change Heading
$wc_email->settings['heading'] = __('New customer Pending Order'); 
// $wc_email->settings['recipient'] .= ',name@email.com'; // Add email recipients (coma separated)

// Send "New Email" notification (to admin)
$wc_email->trigger( $order_id );
}

Я изменил строку 11 на «WC_Email_Customer_Invoice», пытаясь заставить этот код отправить это электронное письмо с «платой сейчас».'ссылка, Оригинальный код указывал на' WC_Email_New_Order '. Я понимаю, что последние две строки, кажется, отправляют это только на электронную почту администратора, но я ничего не получал в электронной почте администратора. Я довольно новичок в php, но я также думаю, что этонацелен только на «НОВЫЙ клиентский отложенный заказ» и может не относиться к изменению статуса на ожидающий. Мне нужно, чтобы этот шлюз оплаты позже перешел в режим ожидания, поэтому woo немедленно уменьшит запас товаров, связанных с заказом, и с этим кодом:

function reduce_stock_pending($order_id) {
 wc_reduce_stock_levels($order_id);
}
add_action('woocommerce_order_status_pending', 'reduce_stock_pending');

Я могу перевести заказ в состояние ожидания, в то время как обнуление автоматического пополнения запасов выполняется для заказов с отложенным платежом. Это не идеально, потому что вы можете видеть в примечаниях к заказу, что он быстро увеличивает запас и затем сразу же принимаетэто назад из-за фрагмента кода, но это функционально для моего приложения.

Оле процесс сгибает ванильную функциональность WooCommerce, что все, похоже, согласны, придерживается логики для среднего магазина Woo, эта же логика не помогает в том, как мне нужно управлять своим магазином.Заказы, проходящие через этот ограниченный к местному платежному шлюзу, будут относиться к продуктам и услугам, которые будут доставлены и установлены до того, как счет клиента оплатит счет.

Борьба продолжается, я полон решимости найти способ автоматизировать это, несмотря навсе претензии, что это только ручная функция.Любая помощь в достижении этой цели будет принята с благодарностью.Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

У меня хорошие новости ... работает этот код, который позволит шлюзу проходить через счет-фактуру позднее, чтобы перевести заказ в состояние удержания, когда woo будет автоматически извлекать запасы и держать их в стороне от неподходящих клиентов,

тогда, когда вы готовы выставить счет клиенту, вот когда эти несколько строк в начале сражаются с тем, как, когда вы переводите заказ в статус обработки, ему нравится помещать номера нематериальных запасов обратно в магазин, пока он ожидает подтверждения успешной оплатыОднако клиент не может добавить их в корзину.Несмотря на то, что он сообщает о них, у нас есть товар на страницах продуктов / каталогов.Это может быть полезно для некоторых продавцов, но не в моей ситуации, теперь просто подтолкните их к ожидающему платежу, он автоматически отправит электронное письмо с «платной ссылкой», поэтому нет необходимости в ручной отправке ... Это также не уменьшает складвремя до завершения заказа.

// New order notification only for "Pending" Order status
add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 
20, 1 );
function pending_new_order_notification( $order_id ) {

// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Only for "pending" order status
if( ! $order->has_status( 'pending' ) ) return;

// Get an instance of the WC_Email_New_Order object
$wc_email = WC()->mailer()->get_emails()['WC_Email_Customer_Invoice'];

## -- Customizing Heading, subject (and optionally add recipients)  -- ##
// Change Subject
$wc_email->settings['subject'] = __('{site_title} - New customer Pending order 
({order_number}) - {order_date}');
// Change Heading
$wc_email->settings['heading'] = __('New customer Pending Order'); 
// $wc_email->settings['recipient'] .= ',name@email.com'; // Add email recipients 
(coma separated)

// Send "New Email" notification (to admin)
$wc_email->trigger( $order_id );
}

Я должен отдать должное очень многим другим людям, я даже не знаю, где, так что большое спасибо всем, наконец-то ... это работает (по крайней мере, для моего заявления)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...