From 65c4e92e87dfbfe93cb09fdea1951c343cb11650 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 23 Aug 2023 20:53:26 +0200 Subject: [PATCH] Fix regression after removing ->brouillon. --- .../facture/class/facture-rec.class.php | 528 +++++++++--------- 1 file changed, 260 insertions(+), 268 deletions(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index fdbb912cf15..c7c4a1c5310 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -869,154 +869,149 @@ class FactureRec extends CommonInvoice $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. } - if ($this->suspended == self::STATUS_NOTSUSPENDED) { - // Clean parameters - $remise_percent = price2num($remise_percent); - if (empty($remise_percent)) { - $remise_percent = 0; - } - $qty = price2num($qty); - $pu_ht = price2num($pu_ht); - $pu_ttc = price2num($pu_ttc); - if (!preg_match('/\((.*)\)/', $txtva)) { - $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5' - } - $txlocaltax1 = price2num($txlocaltax1); - $txlocaltax2 = price2num($txlocaltax2); - if (empty($txtva)) { - $txtva = 0; - } - if (empty($txlocaltax1)) { - $txlocaltax1 = 0; - } - if (empty($txlocaltax2)) { - $txlocaltax2 = 0; - } - if (empty($info_bits)) { - $info_bits = 0; - } - if ($price_base_type == 'HT') { - $pu = $pu_ht; - } else { - $pu = $pu_ttc; - } + // Clean parameters + $remise_percent = price2num($remise_percent); + if (empty($remise_percent)) { + $remise_percent = 0; + } + $qty = price2num($qty); + $pu_ht = price2num($pu_ht); + $pu_ttc = price2num($pu_ttc); + if (!preg_match('/\((.*)\)/', $txtva)) { + $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5' + } + $txlocaltax1 = price2num($txlocaltax1); + $txlocaltax2 = price2num($txlocaltax2); + if (empty($txtva)) { + $txtva = 0; + } + if (empty($txlocaltax1)) { + $txlocaltax1 = 0; + } + if (empty($txlocaltax2)) { + $txlocaltax2 = 0; + } + if (empty($info_bits)) { + $info_bits = 0; + } - // Calcul du total TTC et de la TVA pour la ligne a partir de - // qty, pu, remise_percent et txtva - // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker - // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - - $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); - $total_ht = $tabprice[0]; - $total_tva = $tabprice[1]; - $total_ttc = $tabprice[2]; - $total_localtax1 = $tabprice[9]; - $total_localtax2 = $tabprice[10]; - $pu_ht = $tabprice[3]; - - // MultiCurrency - $multicurrency_total_ht = $tabprice[16]; - $multicurrency_total_tva = $tabprice[17]; - $multicurrency_total_ttc = $tabprice[18]; - $pu_ht_devise = $tabprice[19]; - - $product_type = $type; - if ($fk_product) { - $product = new Product($this->db); - $result = $product->fetch($fk_product); - $product_type = $product->type; - } - - // Rank to use - $ranktouse = $rang; - if ($ranktouse == -1) { - $rangmax = $this->line_max(0); - $ranktouse = $rangmax + 1; - } - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec ("; - $sql .= "fk_facture"; - $sql .= ", label"; - $sql .= ", description"; - $sql .= ", price"; - $sql .= ", qty"; - $sql .= ", tva_tx"; - $sql .= ", vat_src_code"; - $sql .= ", localtax1_tx"; - $sql .= ", localtax1_type"; - $sql .= ", localtax2_tx"; - $sql .= ", localtax2_type"; - $sql .= ", fk_product"; - $sql .= ", product_type"; - $sql .= ", remise_percent"; - $sql .= ", subprice"; - $sql .= ", remise"; - $sql .= ", total_ht"; - $sql .= ", total_tva"; - $sql .= ", total_localtax1"; - $sql .= ", total_localtax2"; - $sql .= ", total_ttc"; - $sql .= ", date_start_fill"; - $sql .= ", date_end_fill"; - $sql .= ", fk_product_fournisseur_price"; - $sql .= ", buy_price_ht"; - $sql .= ", info_bits"; - $sql .= ", rang"; - $sql .= ", special_code"; - $sql .= ", fk_unit"; - $sql .= ', fk_multicurrency, multicurrency_code, multicurrency_subprice, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc'; - $sql .= ") VALUES ("; - $sql .= " ".((int) $facid); - $sql .= ", ".(!empty($label) ? "'".$this->db->escape($label)."'" : "null"); - $sql .= ", '".$this->db->escape($desc)."'"; - $sql .= ", ".price2num($pu_ht); - $sql .= ", ".price2num($qty); - $sql .= ", ".price2num($txtva); - $sql .= ", '".$this->db->escape($vat_src_code)."'"; - $sql .= ", ".price2num($txlocaltax1); - $sql .= ", '".$this->db->escape(isset($localtaxes_type[0]) ? $localtaxes_type[0] : '')."'"; - $sql .= ", ".price2num($txlocaltax2); - $sql .= ", '".$this->db->escape(isset($localtaxes_type[2]) ? $localtaxes_type[2] : '')."'"; - $sql .= ", ".(!empty($fk_product) ? "'".$this->db->escape($fk_product)."'" : "null"); - $sql .= ", ".((int) $product_type); - $sql .= ", ".price2num($remise_percent); - $sql .= ", ".price2num($pu_ht); - $sql .= ", null"; - $sql .= ", ".price2num($total_ht); - $sql .= ", ".price2num($total_tva); - $sql .= ", ".price2num($total_localtax1); - $sql .= ", ".price2num($total_localtax2); - $sql .= ", ".price2num($total_ttc); - $sql .= ", ".(int) $date_start_fill; - $sql .= ", ".(int) $date_end_fill; - $sql .= ", ".($fk_fournprice > 0 ? $fk_fournprice : 'null'); - $sql .= ", ".($pa_ht ? price2num($pa_ht) : 0); - $sql .= ", ".((int) $info_bits); - $sql .= ", ".((int) $ranktouse); - $sql .= ", ".((int) $special_code); - $sql .= ", ".($fk_unit ? ((int) $fk_unit) : "null"); - $sql .= ", ".(int) $this->fk_multicurrency; - $sql .= ", '".$this->db->escape($this->multicurrency_code)."'"; - $sql .= ", ".price2num($pu_ht_devise, 'CU'); - $sql .= ", ".price2num($multicurrency_total_ht, 'CT'); - $sql .= ", ".price2num($multicurrency_total_tva, 'CT'); - $sql .= ", ".price2num($multicurrency_total_ttc, 'CT'); - $sql .= ")"; - - dol_syslog(get_class($this)."::addline", LOG_DEBUG); - if ($this->db->query($sql)) { - $lineId = $this->db->last_insert_id(MAIN_DB_PREFIX."facturedet_rec"); - $this->id = $facid; - $this->update_price(1); - return $lineId; - } else { - $this->error = $this->db->lasterror(); - return -1; - } + if ($price_base_type == 'HT') { + $pu = $pu_ht; } else { - $this->error = 'Recurring Invoice is suspended. adding lines not allowed.'; + $pu = $pu_ttc; + } + // Calcul du total TTC et de la TVA pour la ligne a partir de + // qty, pu, remise_percent et txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. + + $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); + $total_ht = $tabprice[0]; + $total_tva = $tabprice[1]; + $total_ttc = $tabprice[2]; + $total_localtax1 = $tabprice[9]; + $total_localtax2 = $tabprice[10]; + $pu_ht = $tabprice[3]; + + // MultiCurrency + $multicurrency_total_ht = $tabprice[16]; + $multicurrency_total_tva = $tabprice[17]; + $multicurrency_total_ttc = $tabprice[18]; + $pu_ht_devise = $tabprice[19]; + + $product_type = $type; + if ($fk_product) { + $product = new Product($this->db); + $result = $product->fetch($fk_product); + $product_type = $product->type; + } + + // Rank to use + $ranktouse = $rang; + if ($ranktouse == -1) { + $rangmax = $this->line_max(0); + $ranktouse = $rangmax + 1; + } + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec ("; + $sql .= "fk_facture"; + $sql .= ", label"; + $sql .= ", description"; + $sql .= ", price"; + $sql .= ", qty"; + $sql .= ", tva_tx"; + $sql .= ", vat_src_code"; + $sql .= ", localtax1_tx"; + $sql .= ", localtax1_type"; + $sql .= ", localtax2_tx"; + $sql .= ", localtax2_type"; + $sql .= ", fk_product"; + $sql .= ", product_type"; + $sql .= ", remise_percent"; + $sql .= ", subprice"; + $sql .= ", remise"; + $sql .= ", total_ht"; + $sql .= ", total_tva"; + $sql .= ", total_localtax1"; + $sql .= ", total_localtax2"; + $sql .= ", total_ttc"; + $sql .= ", date_start_fill"; + $sql .= ", date_end_fill"; + $sql .= ", fk_product_fournisseur_price"; + $sql .= ", buy_price_ht"; + $sql .= ", info_bits"; + $sql .= ", rang"; + $sql .= ", special_code"; + $sql .= ", fk_unit"; + $sql .= ', fk_multicurrency, multicurrency_code, multicurrency_subprice, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc'; + $sql .= ") VALUES ("; + $sql .= " ".((int) $facid); + $sql .= ", ".(!empty($label) ? "'".$this->db->escape($label)."'" : "null"); + $sql .= ", '".$this->db->escape($desc)."'"; + $sql .= ", ".price2num($pu_ht); + $sql .= ", ".price2num($qty); + $sql .= ", ".price2num($txtva); + $sql .= ", '".$this->db->escape($vat_src_code)."'"; + $sql .= ", ".price2num($txlocaltax1); + $sql .= ", '".$this->db->escape(isset($localtaxes_type[0]) ? $localtaxes_type[0] : '')."'"; + $sql .= ", ".price2num($txlocaltax2); + $sql .= ", '".$this->db->escape(isset($localtaxes_type[2]) ? $localtaxes_type[2] : '')."'"; + $sql .= ", ".(!empty($fk_product) ? "'".$this->db->escape($fk_product)."'" : "null"); + $sql .= ", ".((int) $product_type); + $sql .= ", ".price2num($remise_percent); + $sql .= ", ".price2num($pu_ht); + $sql .= ", null"; + $sql .= ", ".price2num($total_ht); + $sql .= ", ".price2num($total_tva); + $sql .= ", ".price2num($total_localtax1); + $sql .= ", ".price2num($total_localtax2); + $sql .= ", ".price2num($total_ttc); + $sql .= ", ".(int) $date_start_fill; + $sql .= ", ".(int) $date_end_fill; + $sql .= ", ".($fk_fournprice > 0 ? $fk_fournprice : 'null'); + $sql .= ", ".($pa_ht ? price2num($pa_ht) : 0); + $sql .= ", ".((int) $info_bits); + $sql .= ", ".((int) $ranktouse); + $sql .= ", ".((int) $special_code); + $sql .= ", ".($fk_unit ? ((int) $fk_unit) : "null"); + $sql .= ", ".(int) $this->fk_multicurrency; + $sql .= ", '".$this->db->escape($this->multicurrency_code)."'"; + $sql .= ", ".price2num($pu_ht_devise, 'CU'); + $sql .= ", ".price2num($multicurrency_total_ht, 'CT'); + $sql .= ", ".price2num($multicurrency_total_tva, 'CT'); + $sql .= ", ".price2num($multicurrency_total_ttc, 'CT'); + $sql .= ")"; + + dol_syslog(get_class($this)."::addline", LOG_DEBUG); + if ($this->db->query($sql)) { + $lineId = $this->db->last_insert_id(MAIN_DB_PREFIX."facturedet_rec"); + $this->id = $facid; + $this->update_price(1); + return $lineId; + } else { + $this->error = $this->db->lasterror(); return -1; } } @@ -1069,131 +1064,128 @@ class FactureRec extends CommonInvoice return -1; } - if ($this->suspended == self::STATUS_SUSPENDED) { - // Clean parameters - $remise_percent = price2num($remise_percent); - $qty = price2num($qty); - if (empty($info_bits)) { - $info_bits = 0; - } - $pu_ht = price2num($pu_ht); - $pu_ttc = price2num($pu_ttc); - $pu_ht_devise = price2num($pu_ht_devise); - if (!preg_match('/\((.*)\)/', $txtva)) { - $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5' - } - $txlocaltax1 = price2num($txlocaltax1); - $txlocaltax2 = price2num($txlocaltax2); - if (empty($txlocaltax1)) { - $txlocaltax1 = 0; - } - if (empty($txlocaltax2)) { - $txlocaltax2 = 0; - } - - if (empty($this->multicurrency_subprice)) { - $this->multicurrency_subprice = 0; - } - if (empty($this->multicurrency_total_ht)) { - $this->multicurrency_total_ht = 0; - } - if (empty($this->multicurrency_total_tva)) { - $this->multicurrency_total_tva = 0; - } - if (empty($this->multicurrency_total_ttc)) { - $this->multicurrency_total_ttc = 0; - } - - if ($price_base_type == 'HT') { - $pu = $pu_ht; - } else { - $pu = $pu_ttc; - } - - // Calculate total with, without tax and tax from qty, pu, remise_percent and txtva - // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker - // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - - $localtaxes_type = getLocalTaxesFromRate($txtva, 0, $this->thirdparty, $mysoc); - - // Clean vat code - $vat_src_code = ''; - $reg = array(); - if (preg_match('/\((.*)\)/', $txtva, $reg)) { - $vat_src_code = $reg[1]; - $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - } - - $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); - - $total_ht = $tabprice[0]; - $total_tva = $tabprice[1]; - $total_ttc = $tabprice[2]; - $total_localtax1 = $tabprice[9]; - $total_localtax2 = $tabprice[10]; - $pu_ht = $tabprice[3]; - $pu_tva = $tabprice[4]; - $pu_ttc = $tabprice[5]; - - // MultiCurrency - $multicurrency_total_ht = $tabprice[16]; - $multicurrency_total_tva = $tabprice[17]; - $multicurrency_total_ttc = $tabprice[18]; - $pu_ht_devise = $tabprice[19]; - - $product_type = $type; - if ($fk_product) { - $product = new Product($this->db); - $result = $product->fetch($fk_product); - $product_type = $product->type; - } - - $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet_rec SET "; - $sql .= "fk_facture = ".((int) $facid); - $sql .= ", label=".(!empty($label) ? "'".$this->db->escape($label)."'" : "null"); - $sql .= ", description='".$this->db->escape($desc)."'"; - $sql .= ", price=".price2num($pu_ht); - $sql .= ", qty=".price2num($qty); - $sql .= ", tva_tx=".price2num($txtva); - $sql .= ", vat_src_code='".$this->db->escape($vat_src_code)."'"; - $sql .= ", localtax1_tx=".((float) $txlocaltax1); - $sql .= ", localtax1_type='".$this->db->escape($localtaxes_type[0])."'"; - $sql .= ", localtax2_tx=".((float) $txlocaltax2); - $sql .= ", localtax2_type='".$this->db->escape($localtaxes_type[2])."'"; - $sql .= ", fk_product=".(!empty($fk_product) ? "'".$this->db->escape($fk_product)."'" : "null"); - $sql .= ", product_type=".((int) $product_type); - $sql .= ", remise_percent='".price2num($remise_percent)."'"; - $sql .= ", subprice='".price2num($pu_ht)."'"; - $sql .= ", total_ht='".price2num($total_ht)."'"; - $sql .= ", total_tva='".price2num($total_tva)."'"; - $sql .= ", total_localtax1='".price2num($total_localtax1)."'"; - $sql .= ", total_localtax2='".price2num($total_localtax2)."'"; - $sql .= ", total_ttc='".price2num($total_ttc)."'"; - $sql .= ", date_start_fill=".((int) $date_start_fill); - $sql .= ", date_end_fill=".((int) $date_end_fill); - $sql .= ", fk_product_fournisseur_price=".($fk_fournprice > 0 ? $fk_fournprice : 'null'); - $sql .= ", buy_price_ht=".($pa_ht ? price2num($pa_ht) : 0); - $sql .= ", info_bits=".((int) $info_bits); - $sql .= ", rang=".((int) $rang); - $sql .= ", special_code=".((int) $special_code); - $sql .= ", fk_unit=".($fk_unit ? "'".$this->db->escape($fk_unit)."'" : "null"); - $sql .= ', multicurrency_subprice = '.price2num($pu_ht_devise); - $sql .= ', multicurrency_total_ht = '.price2num($multicurrency_total_ht); - $sql .= ', multicurrency_total_tva = '.price2num($multicurrency_total_tva); - $sql .= ', multicurrency_total_ttc = '.price2num($multicurrency_total_ttc); - $sql .= " WHERE rowid = ".((int) $rowid); - - dol_syslog(get_class($this)."::updateline", LOG_DEBUG); - if ($this->db->query($sql)) { - $this->id = $facid; - $this->update_price(1); - return 1; - } else { - $this->error = $this->db->lasterror(); - return -1; - } + // Clean parameters + $remise_percent = price2num($remise_percent); + $qty = price2num($qty); + if (empty($info_bits)) { + $info_bits = 0; + } + $pu_ht = price2num($pu_ht); + $pu_ttc = price2num($pu_ttc); + $pu_ht_devise = price2num($pu_ht_devise); + if (!preg_match('/\((.*)\)/', $txtva)) { + $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5' + } + $txlocaltax1 = price2num($txlocaltax1); + $txlocaltax2 = price2num($txlocaltax2); + if (empty($txlocaltax1)) { + $txlocaltax1 = 0; + } + if (empty($txlocaltax2)) { + $txlocaltax2 = 0; + } + + if (empty($this->multicurrency_subprice)) { + $this->multicurrency_subprice = 0; + } + if (empty($this->multicurrency_total_ht)) { + $this->multicurrency_total_ht = 0; + } + if (empty($this->multicurrency_total_tva)) { + $this->multicurrency_total_tva = 0; + } + if (empty($this->multicurrency_total_ttc)) { + $this->multicurrency_total_ttc = 0; + } + + if ($price_base_type == 'HT') { + $pu = $pu_ht; + } else { + $pu = $pu_ttc; + } + + // Calculate total with, without tax and tax from qty, pu, remise_percent and txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. + + $localtaxes_type = getLocalTaxesFromRate($txtva, 0, $this->thirdparty, $mysoc); + + // Clean vat code + $vat_src_code = ''; + $reg = array(); + if (preg_match('/\((.*)\)/', $txtva, $reg)) { + $vat_src_code = $reg[1]; + $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. + } + + $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); + + $total_ht = $tabprice[0]; + $total_tva = $tabprice[1]; + $total_ttc = $tabprice[2]; + $total_localtax1 = $tabprice[9]; + $total_localtax2 = $tabprice[10]; + $pu_ht = $tabprice[3]; + $pu_tva = $tabprice[4]; + $pu_ttc = $tabprice[5]; + + // MultiCurrency + $multicurrency_total_ht = $tabprice[16]; + $multicurrency_total_tva = $tabprice[17]; + $multicurrency_total_ttc = $tabprice[18]; + $pu_ht_devise = $tabprice[19]; + + $product_type = $type; + if ($fk_product) { + $product = new Product($this->db); + $result = $product->fetch($fk_product); + $product_type = $product->type; + } + + $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet_rec SET "; + $sql .= "fk_facture = ".((int) $facid); + $sql .= ", label=".(!empty($label) ? "'".$this->db->escape($label)."'" : "null"); + $sql .= ", description='".$this->db->escape($desc)."'"; + $sql .= ", price=".price2num($pu_ht); + $sql .= ", qty=".price2num($qty); + $sql .= ", tva_tx=".price2num($txtva); + $sql .= ", vat_src_code='".$this->db->escape($vat_src_code)."'"; + $sql .= ", localtax1_tx=".((float) $txlocaltax1); + $sql .= ", localtax1_type='".$this->db->escape($localtaxes_type[0])."'"; + $sql .= ", localtax2_tx=".((float) $txlocaltax2); + $sql .= ", localtax2_type='".$this->db->escape($localtaxes_type[2])."'"; + $sql .= ", fk_product=".(!empty($fk_product) ? "'".$this->db->escape($fk_product)."'" : "null"); + $sql .= ", product_type=".((int) $product_type); + $sql .= ", remise_percent='".price2num($remise_percent)."'"; + $sql .= ", subprice='".price2num($pu_ht)."'"; + $sql .= ", total_ht='".price2num($total_ht)."'"; + $sql .= ", total_tva='".price2num($total_tva)."'"; + $sql .= ", total_localtax1='".price2num($total_localtax1)."'"; + $sql .= ", total_localtax2='".price2num($total_localtax2)."'"; + $sql .= ", total_ttc='".price2num($total_ttc)."'"; + $sql .= ", date_start_fill=".((int) $date_start_fill); + $sql .= ", date_end_fill=".((int) $date_end_fill); + $sql .= ", fk_product_fournisseur_price=".($fk_fournprice > 0 ? $fk_fournprice : 'null'); + $sql .= ", buy_price_ht=".($pa_ht ? price2num($pa_ht) : 0); + $sql .= ", info_bits=".((int) $info_bits); + $sql .= ", rang=".((int) $rang); + $sql .= ", special_code=".((int) $special_code); + $sql .= ", fk_unit=".($fk_unit ? "'".$this->db->escape($fk_unit)."'" : "null"); + $sql .= ', multicurrency_subprice = '.price2num($pu_ht_devise); + $sql .= ', multicurrency_total_ht = '.price2num($multicurrency_total_ht); + $sql .= ', multicurrency_total_tva = '.price2num($multicurrency_total_tva); + $sql .= ', multicurrency_total_ttc = '.price2num($multicurrency_total_ttc); + $sql .= " WHERE rowid = ".((int) $rowid); + + dol_syslog(get_class($this)."::updateline", LOG_DEBUG); + if ($this->db->query($sql)) { + $this->id = $facid; + $this->update_price(1); + return 1; + } else { + $this->error = $this->db->lasterror(); + return -1; } - return -1; }