/** * Update total of contract lines * * @param DoliDB $db Database handler * @param Translate $langs Object langs * @param Conf $conf Object conf * @return void */ function migrate_price_contrat($db, $langs, $conf) { $db->begin(); $tmpmysoc = new Societe($db); $tmpmysoc->setMysoc($conf); if (empty($tmpmysoc->country_id)) { $tmpmysoc->country_id = 0; } // Ti not have this set to '' or will make sql syntax error. print '<tr><td colspan="4">'; print '<br>'; print '<b>' . $langs->trans('MigrationContract') . "</b><br>\n"; // Liste des lignes contrat non a jour $sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, cd.info_bits,"; $sql .= " c.rowid as contratid"; $sql .= " FROM " . MAIN_DB_PREFIX . "contratdet as cd, " . MAIN_DB_PREFIX . "contrat as c"; $sql .= " WHERE cd.fk_contrat = c.rowid"; $sql .= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL)"; dolibarr_install_syslog("upgrade2::migrate_price_contrat", LOG_DEBUG); $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num) { while ($i < $num) { $obj = $db->fetch_object($resql); $rowid = $obj->rowid; $qty = $obj->qty; $pu = $obj->subprice; $txtva = $obj->tva_taux; $remise_percent = $obj->remise_percent; $info_bits = $obj->info_bits; // On met a jour les 3 nouveaux champs $contratligne = new ContratLigne($db); //$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis $contratligne->id = $rowid; $result = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, 0, 'HT', $info_bits, 0, $tmpmysoc); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; $contratligne->total_ht = $total_ht; $contratligne->total_tva = $total_tva; $contratligne->total_ttc = $total_ttc; dolibarr_install_syslog("upgrade2: Line {$rowid}: contratdetid={$obj->rowid} pu={$pu} qty={$qty} tva_taux={$txtva} remise_percent={$remise_percent} -> {$total_ht}, {$total_tva}, {$total_ttc}"); print ". "; $contratligne->update_total(); $i++; } } else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); } else { print "Error #1 " . $db->error(); $db->rollback(); } print '<br>'; print '</td></tr>'; }
function migrate_price_contrat($db,$langs,$conf) { $db->begin(); print '<tr><td colspan="4">'; print '<br>'; print '<b>'.$langs->trans('MigrationContract')."</b><br>\n"; // Liste des lignes contrat non a jour $sql = "SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, cd.info_bits,"; $sql.= " c.rowid as contratid"; $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c"; $sql.= " WHERE cd.fk_contrat = c.rowid"; $sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL)"; dolibarr_install_syslog("upgrade2::migrate_price_contrat sql=".$sql); $resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num) { while ($i < $num) { $obj = $db->fetch_object($resql); $rowid = $obj->rowid; $qty = $obj->qty; $pu = $obj->subprice; $txtva = $obj->tva_taux; $remise_percent = $obj->remise_percent; $remise_percent_global = $obj->remise_percent_global; $info_bits = $obj->info_bits; // On met a jour les 3 nouveaux champs $contratligne= new ContratLigne($db); //$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis $contratligne->rowid=$rowid; $result=calcul_price_total($qty,$pu,$remise_percent,$txtva,0,0,$remise_percent_global,'HT',$info_bits); $total_ht = $result[0]; $total_tva = $result[1]; $total_ttc = $result[2]; $contratligne->total_ht = $total_ht; $contratligne->total_tva = $total_tva; $contratligne->total_ttc = $total_ttc; dolibarr_install_syslog("upgrade2: Line $rowid: contratdetid=$obj->rowid pu=$pu qty=$qty tva_taux=$txtva remise_percent=$remise_percent remise_global=$remise_percent_global -> $total_ht, $total_tva, $total_ttc"); print ". "; $contratligne->update_total($rowid); /* On touche pas a contrat mere $propal = new Propal($db); $propal->id=$obj->rowid; if ( $propal->fetch($propal->id) >= 0 ) { if ( $propal->update_price() > 0 ) { print ". "; } else { print "Error id=".$propal->id; $err++; } } else { print "Error #3"; $err++; } */ $i++; } } else { print $langs->trans("AlreadyDone"); } $db->free($resql); $db->commit(); } else { print "Error #1 ".$db->error(); $err++; $db->rollback(); } print '<br>'; print '</td></tr>'; }