1. Onderwerpen
  2. Codeknipsels

Codeknipsels

Dit is een voor ontwikkelaars document. Als u niet bekend bent met code / templates en het oplossen van mogelijke conflicten, neem dan contact op met een ontwikkelaar die bekend is met FooSales en / of WooCommerce. Deze snippets worden geleverd als een hoffelijkheid en zijn bedoeld als een startpunt om eventuele specifieke aanpassing behoeften te helpen. We zijn niet in staat om ondersteuning te bieden voor aanpassingen onder onze Servicevoorwaarden.

Vastleggen Square kosten bij het voltooien van een bestelling #

Als u gebruik maakt van een derde partij export plugin om uw orders te exporteren en je bent het verwerken van betalingen met Square, wilt u misschien de kosten die Square aftrekt van de betaling in uw verkoop-export op te nemen. Standaard FooSales slaat geen gegevens die zijn verkregen uit Square anders dan de Square order-ID dat wordt gegenereerd bij het succesvol verwerken van een betaling. U kunt FooSales slaan de Square verwerkingskosten als een verborgen meta waarde voor WooCommerce orders vastgelegd via FooSales waar Square werd gebruikt als de betaalmethode.

Voeg het volgende codefragment toe aan de functies.php bestand dat controleert of een order een Square order ID heeft wanneer deze gemarkeerd is als voltooid. Vervolgens zal het de Square API gebruiken om de Square bestelling op te halen uit je account, alle betalingskosten voor die bestelling bij elkaar op te tellen en op te slaan als een meta veld voor de WooCommerce bestelling.

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);
    }
});

De bestelnotitie van FooSales toevoegen aan de WooCommerce admin e-mails #

Voeg het volgende codefragment toe aan de functies.php bestand als je wilt dat de "Bestelnotitie" die je hebt toegevoegd aan de bestelling in FooSales wordt weergegeven in de WooCommerce admin e-mails.

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

functie woo_bestel_opmerkingen_naar_email($order, $sent_to_admin, $plain_text, $email) {

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


	if ($sent_to_admin && 'foosales_app' === get_post_meta($id, "_foosales_order_source", true)) {
		$args = array(
			'order_id' => $id,
			type' => ''
		);
		
		$notes = wc_get_order_notes( $args );
		
		echo '<h2>' . __( 'Bestelnotities', '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>' . __( "Er zijn nog geen notities voor deze bestelling.", "woocommerce" ) . '</li>';
		}

		echo '</ul>';
	}
}

Artikelen