Jump to content

[RESOLU] Débug, new OrderSlip("string"); dans pdf.php


stephan

Recommended Posts

Bonjour,

Je souhaite passer les avoirs en string, du à une numérotation personnalisée.

Tout se passe bien jusqu'a cette classe.

$orderSlip = new OrderSlip($_GET['id_order_slip']);



Habituellement, id_order_slip est un entier, et moi je lui envoie un string.

$orderSlip = new OrderSlip("09F070345");

En retour j'obtient un entier

$orderSlip->id est égale à 9 ,id étant id_order_slip, normalement !

Je n'ai pas réussit à isolé dans la classe le intval(xxxx) ou la fonction qui me renvoie le 9.

Si une âme charitable veut bien m'aider ;-P

Cordialement.

Link to comment
Share on other sites

Ici le code de la classe originale

class OrderSlip extends ObjectModel
{
   /** @var integer */
   public        $id;

   /** @var integer */
   public         $id_customer;

   /** @var integer */
   public         $id_order;

   /** @var integer */
   public        $shipping_cost;

   /** @var string Object creation date */
   public         $date_add;

   /** @var string Object last modification date */
   public         $date_upd;

   protected $tables = array ('order_slip');

   protected    $fieldsRequired = array ('id_customer', 'id_order');
   protected    $fieldsValidate = array('id_customer' => 'isUnsignedId', 'id_order' => 'isUnsignedId');

   protected     $table = 'order_slip';
   protected     $identifier = 'id_order_slip';

   public function getFields()
   {
       parent::validateFields();

       $fields['id_customer'] = intval($this->id_customer);
       $fields['id_order'] = intval($this->id_order);
       $fields['shipping_cost'] = intval($this->shipping_cost);
       $fields['date_add'] = pSQL($this->date_add);
       $fields['date_upd'] = pSQL($this->date_upd);
       return $fields;
   }

   public function addSlipDetail($orderDetailList, $productQtyList)
   {
       foreach ($orderDetailList as $key => $orderDetail)
           if ($qty = intval($productQtyList[$key]))
               Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_slip_detail', array('id_order_slip' => intval($this->id), 'id_order_detail' => intval($orderDetail), 'product_quantity' => $qty), 'INSERT');
   }

   static public function getOrdersSlip($customer_id, $order_id = false)
   {
       global $cookie;

       return Db::getInstance()->ExecuteS('
       SELECT *
       FROM `'._DB_PREFIX_.'order_slip`
       WHERE `id_customer` = '.intval($customer_id).
       ($order_id ? ' AND `id_order` = '.intval($order_id) : '').'
       ORDER BY `date_add` DESC');
   }

   static public function getOrdersSlipDetail($id_order_slip = true, $id_order_detail = false)
   {
       return Db::getInstance()->ExecuteS(
       ($id_order_detail ? 'SELECT sum(`product_quantity`) as `total`' : 'SELECT *').
       'FROM `'._DB_PREFIX_.'order_slip_detail`'
       .($id_order_slip ? ' WHERE `id_order_slip` = '.intval($id_order_slip) : '')
       .($id_order_detail ? ' WHERE `id_order_detail` = '.intval($id_order_detail) : ''));
   }

   static public function getOrdersSlipProducts($orderSlipId, $order)
   {
       $productsRet = self::getOrdersSlipDetail($orderSlipId);
       $products = $order->getProductsDetail();
       $tmp = array();
       foreach ($productsRet as $slip_detail)
           $tmp[$slip_detail['id_order_detail']] = $slip_detail['product_quantity'];
       $resTab = array();
       foreach ($products as $key => $product)
           if (isset($tmp[$product['id_order_detail']]))
           {
               $resTab[$key] = $product;
               $resTab[$key]['product_quantity'] = $tmp[$product['id_order_detail']];;
           }
       return $order->getProducts($resTab);
   }

   static public function createOrderSlip($order, $productList, $qtyList, $shipping_cost = false)
   {
       // create orderSlip
       $orderSlip =  new OrderSlip();
       $orderSlip->id_customer = intval($order->id_customer);
       $orderSlip->id_order = intval($order->id);
       $orderSlip->shipping_cost = intval($shipping_cost);
       if (!$orderSlip->add())
           return false;

       // add details
       $orderSlip->addSlipDetail($productList, $qtyList);

       return true;
   }
}

Link to comment
Share on other sites

L'ID est l'identifiant même de l'entrée dans la base de donnée.
Il est géré dans la classe ObjectModel.php mais utilisé à pas mal d'endroits comme par exemple Validate::isLoadedObject()

La modif n'est, à mon avis, pas simple ...
A voir si créer un nouveau champ ne serait pas plus simple

Link to comment
Share on other sites


La modif n'est, à mon avis, pas simple ...
A voir si créer un nouveau champ ne serait pas plus simple


Merci pour ta réponse ningu.

Effectivement, la solution se trouve dans la classe ObjectModel.php

Après plusieurs "petites" tentatives , j'en arrive à la même conclusion que toi : "C'est pas gagné !" ;-P

Mais ... l'espoir fait vivre...

Si j'ai bien compris, ton autre solution consisterait d'ajouter un champs dans la table qui servirai de masque d'affichage...
Je crois comprendre ou cela m'emmène aussi ....

Je vais tenter de faire mon sauvage et de taper dans la classe .... la solution est finalement simple :
Faire un teste sue le champ ID, si c'est de l'ascii ou du numérique ... et de lancer les requêtes en fonction du résultat ....

Si quelqu'un s'y est déjà frotté merci, un coup de main serait le bienvenue ... ;-)

Cordialement.

PS: la requête me retourne le bon numéro ... ça avance ...
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...