1. Themen
  2. Code-Schnipsel

Code-Schnipsel

Dies ist eine Entwicklerebene Dokument. Wenn Sie mit Code/Vorlagen und der Lösung möglicher Konflikte nicht vertraut sind, wenden Sie sich bitte an einen Entwickler, der mit FooSales und/oder WooCommerce vertraut ist. Diese Schnipsel werden aus Höflichkeit zur Verfügung gestellt und sind als Ausgangspunkt für spezifische Anpassungsanforderungen gedacht. Wir sind nicht in der Lage, Unterstützung für Anpassungen unter unserer Bedingungen der Dienstleistung.

Erfassen von Square-Gebühren beim Abschluss einer Bestellung #

Wenn Sie ein Export-Plugin eines Drittanbieters verwenden, um Ihre Bestellungen zu exportieren, und Sie Zahlungen mit Square abwickeln, möchten Sie vielleicht die Gebühren, die Square von der Zahlung abzieht, in Ihren Verkaufsexport aufnehmen. Standardmäßig speichert FooSales keine von Square erhaltenen Daten außer der Square-Bestell-ID, die bei erfolgreicher Verarbeitung einer Zahlung generiert wird. Sie können FooSales veranlassen, die Square-Bearbeitungsgebühren als versteckten Metawert für WooCommerce-Bestellungen zu speichern, die über FooSales erfasst wurden und bei denen Square als Zahlungsmethode verwendet wurde.

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei, die prüft, ob ein Auftrag eine Square-Auftrags-ID hat, wenn er als abgeschlossen markiert ist. Als Nächstes wird die Square-API verwendet, um die Square-Bestellung von Ihrem Konto abzurufen, alle für diese Bestellung anfallenden Zahlungsgebühren zu addieren und sie als Meta-Feld für die WooCommerce-Bestellung zu speichern.

add_action('woocommerce_order_status_completed', function($order_id) {
    $square_order_id = get_post_meta($order_id, "_foosales_square_order_id", true);
    
    if ( !empty($square_order_id) ) {
        //FooSales config
        $config = new FooSales_Config();

        //API helper methods
        require_once($config->helper_path.'foosales-api-helper.php');
        
        $order_result = fsfwc_get_square_order($square_order_id); // Uses the Square API to retrieve the order
        $square_fees = 0.0;
        
        if ( $order_result['status'] === 'success' ) {
            $order = $order_result['order'];
            
            if ( !empty($order['tenders']) ) {
                foreach ( $order['tenders'] as $tender ) {
                    $square_fees += ((float)($tender['processing_fee_money']['amount']) / 100.0); // The fee is returned as cents, so divide it by 100.0
                }
            }
        }
        
        update_post_meta($order_id, "_foosales_square_fee_amount", $square_fees);
    }
});

Fügen Sie den Bestellschein von FooSales zu den WooCommerce-Admin-E-Mails hinzu. #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei, wenn Sie möchten, dass die "Auftragsnotiz", die Sie dem Auftrag in FooSales hinzugefügt haben, in den WooCommerce-Admin-E-Mails angezeigt wird.

add_action( 'woocommerce_email_order_meta', 'woo_add_order_notes_to_email', 10, 4 );

function woo_add_order_notes_to_email($order, $sent_to_admin, $plain_text, $email) {

	if ( isset($post->ID) )
		$id = $post->ID;
	sonst
		$id = $order->ID;


	if ($sent_to_admin && 'foosales_app' === get_post_meta($id, "_foosales_order_source", true)) {
		$args = array(
			'order_id' => $id,
			'typ' => ''
		);
		
		$notes = wc_get_order_notes( $args );
		
		echo '<h2>' . __( 'Bestellnotizen', 'woocommerce' ) . '</h2>';

		echo '<ul class="order_notes">';

		if ( $notes ) {
				?&gt;
				<li>
					<div class="note_content">
						<?php echo wpautop( wptexturize( wp_kses_post( $notes[count($notes)-1]->content ) ) ); ?>
					</div>
				</li>
				<?php
		} else {
			echo '<li>' . __( 'Für diese Bestellung gibt es noch keine Notizen.', 'woocommerce' ) . '</li>';
		}

		echo '</ul>';
	}
}

Artikel