appteam
Forum Replies Created
-
Forum: Plugins
In reply to: [PDF Invoices Italian Add-on for WooCommerce] Errore phpCorrezioni applicate a “WooCommerce Italian Add-on Plus” (per passaggio allo sviluppatore)
Obiettivo
- Eliminare il fatal in export XML: “Cannot access offset of type string on string” (accesso a $document_data[“fn”])
- Eliminare warning in checkout: “Undefined array key “base_country”” (in realtà manca billing/shipping country in $_POST)
1) Fix fatal export XML (document_data coerente)
File:- wp-content/plugins/woocommerce-italian-add-on/includes/class-wc-settings-export.php
1A. Validazione meta _wcpdf_IT_document_data
Motivo:- $order->get_meta(‘_wcpdf_IT_document_data’, true) può ritornare una stringa/bool; il codice lo trattava come array.
Modifica (nel ramo “else”, vicino alla lettura del meta):
PRIMA:
$document_data = $order->get_meta( ‘_wcpdf_IT_document_data’, true );
if ( $document_data ) {
$number_formatted = $document_data[“number_formatted”];
$number = $document_data[“number”];
$date = $document_data[“date”];
…
}DOPO:
$document_data = $order->get_meta( ‘_wcpdf_IT_document_data’, true );
if ( is_array( $document_data ) && $document_data ) {
$number_formatted = empty( $document_data[“number_formatted”] ) ? “” : $document_data[“number_formatted”];
$number = empty( $document_data[“number”] ) ? “” : $document_data[“number”];
$date = empty( $document_data[“date”] ) ? “” : $document_data[“date”];
…
}1B. get_document_data() restituisce sempre un array
Motivo:- get_document_data() ritornava “” quando non trovava dati; crea_xml() poi faceva $document_data[“fn”] causando fatal.
Modifica (a fine get_document_data()):
PRIMA:
$res = “”;
if ( $number_formatted ) {
$date_formatted = empty( $date ) ? “” : date( “Y-m-d”, strtotime( $date ) );
$res = array( “num” => $number_formatted, “data” => $date_formatted, “fn” => $fname, “type” => $document_type );
}
return $res;DOPO:
$res = array( “num” => “”, “data” => “”, “fn” => $fname, “type” => $document_type );
if ( $number_formatted ) {
$date_formatted = empty( $date ) ? “” : date( “Y-m-d”, strtotime( $date ) );
$res[“num”] = $number_formatted;
$res[“data”] = $date_formatted;
}
return $res;Impatto:
- crea_xml() può sempre fare $document_data[“fn”] senza rischiare accesso a offset su stringa.
2) Fix warning “base_country” in checkout (fallback country in $_POST)
File:- wp-content/plugins/woocommerce-italian-add-on/woocommerce-italian-add-on.php
Punto:
- Funzione piva_checkout_field_process()
Motivo:
- $_POST[$tax_based_on_country] (billing_country o shipping_country) può non arrivare in alcuni flussi; il codice lo usa senza check.
Modifica (subito dopo la definizione di $tax_based_on_country):
AGGIUNTA:
$tax_based_on_country = $tax_based_on . “_country”;
if ( empty( $_POST[ $tax_based_on_country ] ) ) {
$_POST[ $tax_based_on_country ] = $this->default_country;
}Impatto:
- Evita accessi a chiavi inesistenti in $_POST e quindi elimina i warning relativi.
- This reply was modified 2 months, 1 week ago by appteam.