Post Top Ad

Your Ad Spot

miércoles, 26 de agosto de 2020

Agregue el estado a la dirección de su tienda en las facturas de PrestaShop

Asignar la identificación del estado a la dirección de la tienda

Abra OrderInvoice.php , ubicado en classes / order . Localice el método llamado getCurrentFormattedShopAddress , es el responsable de crear la dirección de la tienda en la factura. Notará que no hay un "id_state" asignado al objeto de dirección, por lo que lo que debemos hacer es agregar la siguiente línea:
1
$address->id_state = Configuration::get('PS_SHOP_STATE_ID', null, null, $id_shop);
Justo después del $ address-> id_country uno. El resultado final se verá así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static function getCurrentFormattedShopAddress($id_shop = null)
{
    $address = new Address();
    $address->company = Configuration::get('PS_SHOP_NAME', null, null, $id_shop);
    $address->address1 = Configuration::get('PS_SHOP_ADDR1', null, null, $id_shop);
    $address->address2 = Configuration::get('PS_SHOP_ADDR2', null, null, $id_shop);
    $address->postcode = Configuration::get('PS_SHOP_CODE', null, null, $id_shop);
    $address->city = Configuration::get('PS_SHOP_CITY', null, null, $id_shop);
    $address->phone = Configuration::get('PS_SHOP_PHONE', null, null, $id_shop);
    $address->id_country = Configuration::get('PS_SHOP_COUNTRY_ID', null, null, $id_shop);
    $address->id_state = Configuration::get('PS_SHOP_STATE_ID', null, null, $id_shop);
 
 
    return AddressFormat::generateAddress($address, array(), '<br />', ' ');
}
Esto es todo lo que necesita, pero todas las direcciones antiguas permanecerán rotas a menos que hagamos algo por ellas.

Arreglando direcciones antiguas sin estado

Abra el archivo llamado HTMLTemplateInvoice.php , ubicado en classes / pdf . El método __construct es lo que nos interesa, así que justo antes del comentario "// información del encabezado", agregue lo siguiente
1
OrderInvoice::fixAllShopAddresses();
En teoría, esto arreglaría todas las direcciones rotas. Sin embargo, dado que el método solo llena aquellas entradas sin una dirección asociada, necesitamos editar la función en sí. Como puede ver, es parte de la clase OrderInvoice, así que volvamos a ella y la busquemos al final:
1
2
3
4
5
6
7
8
9
10
11
12
public static function fixAllShopAddresses()
{
    $shopIds = Shop::getShops(false, null, true);
    $db = Db::getInstance();
    foreach ($shopIds as $idShop) {
        $address = static::getCurrentFormattedShopAddress($idShop);
        $escapedAddress = $db->escape($address, true, true);
 
        $db->execute('UPDATE `'._DB_PREFIX_.'order_invoice` INNER JOIN `'._DB_PREFIX_.'orders` USING (`id_order`)
            SET `shop_address` = \''.$escapedAddress.'\' WHERE `shop_address` IS NULL AND `id_shop` = '.$idShop);
    }
}
¿Ves esa parte con la consulta en ejecución, al final de la función? Tenemos que modificar la consulta de la siguiente manera:
1
2
$db->execute('UPDATE `'._DB_PREFIX_.'order_invoice` INNER JOIN `'._DB_PREFIX_.'orders` USING (`id_order`)
    SET `shop_address` = \''.$escapedAddress.'\' WHERE `id_shop` = '.$idShop);
Básicamente, nos deshicimos de todas las condiciones, excepto la de la tienda, para que todas las entradas estén actualizadas. En este punto, puede intentar cargar cualquier factura anterior para ver el resultado. Tenga en cuenta que debe hacerlo al menos dos veces, ya que el código que acabamos de agregar se ejecuta después del proceso de primera generación. .
Una vez hecho esto, puede revertir estos dos últimos cambios, para evitar la regeneración de direcciones cada vez.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas