self::TABLE, 'primary' => self::ID_EXTRACHARGE, 'fields' => [ self::ID_EXTRACHARGE => ['type' => self::TYPE_INT], self::ID_ORDER => ['type' => self::TYPE_INT, 'required' => true], self::EXTRA_CHARGE_AMOUNT => ['type' => self::TYPE_INT, 'required' => true], self::TOTAL_PAID => ['type' => self::TYPE_FLOAT, 'required' => true], ], ]; /** * Returns first entry matching for order id. * * PretaShopCollection does not apply limit to db query on its own * (when using getFirst). It selects ALL entries from DB and then returns first of them. * That is why line: * ->setPageSize(1) * had to be added. * * @param int $orderId * * @return Przelewy24ExtraCharge */ public static function findOneByOrderId($orderId) { $queryBuilder = new PrestaShopCollection(self::class); return $queryBuilder ->where('id_order', '=', $orderId) ->setPageSize(1) ->getFirst(); } /** * Gets or creates extra charge object by its order id. * * @param int $orderId * * @return Przelewy24ExtraCharge */ public static function prepareByOrderId($orderId) { $extracharge = self::findOneByOrderId($orderId); if (!($extracharge instanceof ObjectModel)) { $extracharge = new Przelewy24ExtraCharge(); } $extracharge->id_order = $orderId; return $extracharge; } }