get_id(), 'apollo_invoice_id', true); $invoice_number = get_post_meta( $order->get_id(), 'apollo_invoice_number', true); $pdf_invoice_path = APOLLO_DOCUMENTS_DIR."/invoice - ".$invoice_number.".pdf"; $auto_estimate = (bool) get_option('apollo_general_settings')['apollo_send-estimate']; $estimate_number = get_post_meta( $order->get_id(), 'apollo_estimate_number', true); $estimate_id = get_post_meta( $order->get_id(), 'apollo_estimate_id', true); $pdf_estimate_path = APOLLO_DOCUMENTS_DIR."/estimate - ".$estimate_number.".pdf"; $payment_type = 'apollo_payment-'.$order->get_payment_method(); $payment_enabled = isset(get_option('apollo_general_settings')[$payment_type]) ? (bool) get_option('apollo_general_settings')[$payment_type] : false; $order_paid = get_post_meta( $order->get_id(), '_date_paid', true); if ($lang === 'sl') { $pdf_invoice_path = APOLLO_DOCUMENTS_DIR."/račun - ".$invoice_number.".pdf"; $pdf_estimate_path = APOLLO_DOCUMENTS_DIR."/predračun - ".$estimate_number.".pdf"; } if($invoice_id && $status === 'customer_invoice') { // sent maunally from order (invoice) if(file_exists($pdf_invoice_path)) { $attachments[] = $pdf_invoice_path; } else { $attachments[] = Apollo_invoice::getPdf($invoice_id, $invoice_number, 'invoice'); } update_post_meta( $order->get_id(), 'apollo_invoice_sent', true ); } else if($estimate_id && $status === 'customer_invoice') { // sent maunally from order (estimate) if(file_exists($pdf_estimate_path)) { $attachments[] = $pdf_estimate_path; } else { $attachments[] = Apollo_invoice::getPdf($estimate_id, $estimate_number, 'estimate'); } update_post_meta( $order->get_id(), 'apollo_estimate_sent', true ); } else if ($auto_invoice_bank && $order->get_payment_method() === 'bacs' && $status === 'customer_completed_order') { // bank transfer order completed - send invoice (if auto sending enabled in settigns) $invoice = Apollo_invoice::create($order->get_id(), 'invoice'); $attachments[] = Apollo_invoice::getPdf($invoice['id'], $invoice['number'], 'invoice'); update_post_meta( $order->get_id(), 'apollo_invoice_sent', true ); } else if ($auto_estimate && $order->get_payment_method() === 'bacs') { // new order; bank transfer $estimate = Apollo_invoice::create($order->get_id(), 'estimate'); $attachments[] = Apollo_invoice::getPdf($estimate['id'], $estimate['number'], 'estimate'); update_post_meta( $order->get_id(), 'apollo_estimate_sent', true ); } else if ($auto_invoice && $payment_enabled && $order_paid !== '') { // new order; status matches invoice settings $invoice = Apollo_invoice::create($order->get_id(), 'invoice'); $attachments[] = Apollo_invoice::getPdf($invoice['id'], $invoice['number'], 'invoice'); update_post_meta( $order->get_id(), 'apollo_invoice_sent', true ); } return $attachments; } // define the woocommerce_new_order callback function action_woocommerce_new_order( $order_id ) { $order = wc_get_order($order_id); $payment_type = 'apollo_payment-'.$order->get_payment_method(); $payment_enabled = isset(get_option('apollo_general_settings')[$payment_type]) ? (bool) get_option('apollo_general_settings')[$payment_type] : false; $order_paid = get_post_meta( $order->get_id(), '_date_paid', true); if ( $order->get_payment_method() === 'bacs') { // new order; bank transfer Apollo_invoice::create($order_id, 'estimate'); } else if ($payment_enabled && $order_paid !== '') { Apollo_invoice::create($order_id, 'invoice'); } }; // add the action add_action( 'woocommerce_checkout_order_processed', 'action_woocommerce_new_order', 10, 3 ); function action_woocommerce_status_completed ($order_id) { $order = wc_get_order($order_id); $payment_type = 'apollo_payment-'.$order->get_payment_method(); $payment_enabled = isset(get_option('apollo_general_settings')[$payment_type]) ? (bool) get_option('apollo_general_settings')[$payment_type] : false; $order_paid = get_post_meta( $order->get_id(), '_date_paid', true); // create invoice for bank transfer orders, when order status is set to completed if(($order->get_payment_method() === 'bacs') || ($payment_enabled && $order_paid !== '')) { Apollo_invoice::create($order_id, 'invoice'); } } add_action( 'woocommerce_order_status_completed', 'action_woocommerce_status_completed');