/**
  *  Return if a code is available
  *
  *	@param	DoliDB		$db			Database handler
  * 	@param	string		$code		Code of third party
  * 	@param	Societe		$societe	Object third party
  * 	@param	string		$type		'supplier' or 'customer'
  *	@return	int						0 if OK but not available, >0 if OK and available, <0 if KO
  */
 function verif($db, $code, $societe, $type)
 {
     $sql = "SELECT ";
     if ($type == 'customer') {
         $sql .= "code_compta";
     } else {
         if ($type == 'supplier') {
             $sql .= "code_compta_fournisseur";
         }
     }
     $sql .= " FROM " . MAIN_DB_PREFIX . "societe";
     $sql .= " WHERE ";
     if ($type == 'customer') {
         $sql .= "code_compta";
     } else {
         if ($type == 'supplier') {
             $sql .= "code_compta_fournisseur";
         }
     }
     $sql .= " = '" . $this->db->escape($code) . "'";
     if (!empty($societe->id)) {
         $sql .= " AND rowid <> " . $societe->id;
     }
     $resql = $db->query($sql);
     if ($resql) {
         if ($db->num_rows($resql) == 0) {
             dol_syslog("mod_codecompta_aquarium::verif code '" . $code . "' available");
             return 1;
             // Dispo
         } else {
             dol_syslog("mod_codecompta_aquarium::verif code '" . $code . "' not available");
             return 0;
             // Non dispo
         }
     } else {
         $this->error = $db->error() . " sql=" . $sql;
         dol_syslog("mod_codecompta_aquarium::verif error" . $this->error, LOG_ERR);
         return -1;
         // Erreur
     }
 }
Example #2
0
 /**
  *  Return array of boxes qualified for area and user
  *
  *  @param	DoliDB	$db				Database handler
  *  @param	string	$mode			'available' or 'activated'
  *  @param	string	$zone			Name or area (-1 for all, 0 for Homepage, 1 for xxx, ...)
  *  @param  User    $user	  		Objet user to filter (used only if $zone >= 0)
  *  @param	array	$excludelist	Array of box id (box.box_id = boxes_def.rowid) to exclude
  *  @return array               	Array of boxes
  */
 static function listBoxes($db, $mode, $zone, $user, $excludelist = array())
 {
     global $conf;
     $boxes = array();
     $confuserzone = 'MAIN_BOXES_' . $zone;
     if ($mode == 'activated') {
         $sql = "SELECT b.rowid, b.position, b.box_order, b.fk_user,";
         $sql .= " d.rowid as box_id, d.file, d.note, d.tms";
         $sql .= " FROM " . MAIN_DB_PREFIX . "boxes as b, " . MAIN_DB_PREFIX . "boxes_def as d";
         $sql .= " WHERE b.box_id = d.rowid";
         $sql .= " AND d.entity = " . $conf->entity;
         if ($zone >= 0) {
             $sql .= " AND b.position = " . $zone;
         }
         if ($user->id && $user->conf->{$confuserzone}) {
             $sql .= " AND b.fk_user = "******" AND b.fk_user = 0";
         }
         $sql .= " ORDER BY b.box_order";
     } else {
         $sql = "SELECT d.rowid as box_id, d.file, d.note, d.tms";
         $sql .= " FROM " . MAIN_DB_PREFIX . "boxes_def as d";
         $sql .= " WHERE entity = " . $conf->entity;
     }
     $resql = $db->query($sql);
     if ($resql) {
         $num = $db->num_rows($resql);
         $j = 0;
         while ($j < $num) {
             $obj = $db->fetch_object($resql);
             if (!in_array($obj->box_id, $excludelist)) {
                 if (preg_match('/^([^@]+)@([^@]+)$/i', $obj->file, $regs)) {
                     $boxname = $regs[1];
                     $module = $regs[2];
                     $relsourcefile = "/" . $module . "/core/boxes/" . $boxname . ".php";
                 } else {
                     $boxname = preg_replace('/.php$/i', '', $obj->file);
                     $relsourcefile = "/core/boxes/" . $boxname . ".php";
                 }
                 dol_include_once($relsourcefile);
                 if (class_exists($boxname)) {
                     $box = new $boxname($db, $obj->note);
                     // box properties
                     $box->rowid = !empty($obj->rowid) ? $obj->rowid : '';
                     $box->id = !empty($obj->box_id) ? $obj->box_id : '';
                     $box->position = !empty($obj->position) ? $obj->position : '';
                     $box->box_order = !empty($obj->box_order) ? $obj->box_order : '';
                     $box->fk_user = !empty($obj->fk_user) ? $obj->fk_user : '';
                     $box->sourcefile = $relsourcefile;
                     if ($mode == 'activated' && (!$user->id || !$user->conf->{$confuserzone})) {
                         if (is_numeric($box->box_order)) {
                             if ($box->box_order % 2 == 1) {
                                 $box->box_order = 'A' . $box->box_order;
                             } elseif ($box->box_order % 2 == 0) {
                                 $box->box_order = 'B' . $box->box_order;
                             }
                         }
                     }
                     // box_def properties
                     $box->box_id = !empty($obj->box_id) ? $obj->box_id : '';
                     $box->note = !empty($obj->note) ? $obj->note : '';
                     $enabled = true;
                     if (isset($box->depends) && count($box->depends) > 0) {
                         foreach ($box->depends as $module) {
                             //print $boxname.'-'.$module.'<br>';
                             if (empty($conf->{$module}->enabled)) {
                                 $enabled = false;
                             }
                         }
                     }
                     if ($enabled) {
                         $boxes[] = $box;
                     }
                 }
             }
             $j++;
         }
     } else {
         //dol_print_error($db);
         $this->error = $db->error();
         dol_syslog(get_class() . "::listBoxes Error " . $this->error, LOG_ERR);
         return array();
     }
     return $boxes;
 }
Example #3
0
/**
 * Mise a jour des totaux lignes de commande fournisseur
 *
 * @param	DoliDB		$db		Database handler
 * @param	Translate	$langs	Object langs
 * @param	Conf		$conf	Object conf
 * @return	void
 */
function migrate_price_commande_fournisseur($db, $langs, $conf)
{
    $db->begin();
    print '<tr><td colspan="4">';
    print '<br>';
    print '<b>' . $langs->trans('MigrationSupplierOrder') . "</b><br>\n";
    // Liste des lignes commande 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 commandeid, c.remise_percent as remise_percent_global";
    $sql .= " FROM " . MAIN_DB_PREFIX . "commande_fournisseurdet as cd, " . MAIN_DB_PREFIX . "commande_fournisseur as c";
    $sql .= " WHERE cd.fk_commande = c.rowid";
    $sql .= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
    dolibarr_install_syslog("upgrade2::migrate_price_commande_fournisseur", 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;
                $remise_percent_global = $obj->remise_percent_global;
                $info_bits = $obj->info_bits;
                // On met a jour les 3 nouveaux champs
                $commandeligne = new CommandeFournisseurLigne($db);
                $commandeligne->fetch($rowid);
                $result = calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, $remise_percent_global, 'HT', $info_bits, 0);
                $total_ht = $result[0];
                $total_tva = $result[1];
                $total_ttc = $result[2];
                $commandeligne->total_ht = $total_ht;
                $commandeligne->total_tva = $total_tva;
                $commandeligne->total_ttc = $total_ttc;
                dolibarr_install_syslog("upgrade2: Line {$rowid}: commandeid={$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 ". ";
                $commandeligne->update_total();
                /* On touche pas a facture mere
                   $commande = new Commande($db);
                   $commande->id = $obj->rowid;
                   if ( $commande->fetch($commande->id) >= 0 )
                   {
                   if ( $commande->update_price() > 0 )
                   {
                   print ". ";
                   }
                   else
                   {
                   print "Error id=".$commande->id;
                   }
                   }
                   else
                   {
                   print "Error #3";
                   }
                   */
                $i++;
            }
        } else {
            print $langs->trans("AlreadyDone");
        }
        $db->free($resql);
        /*
        $sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseurdet";
        $sql.= " WHERE subprice = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0";
        $resql=$db->query($sql);
        if (! $resql)
        {
        dol_print_error($db);
        }
        */
        $db->commit();
    } else {
        print "Error #1 " . $db->error();
        $db->rollback();
    }
    print '<br>';
    print '</td></tr>';
}
Example #4
0
		$resql=$oscommercedb->query($sql);
		if ($resql) {
			$mesg ="<div class=\"ok\">".$langs->trans("OSCommerceTestOk",$_POST["oscommerce_dbhost"],$_POST["oscommerce_dbname"],$_POST["oscommerce_dbuser"]);
			$mesg.="</div>";
		}
		else {
			$mesg ="<div class=\"error\">".$langs->trans("OSCommerceErrorConnectOkButWrongDatabase",'STORE_NAME',$_POST["oscommerce_db_table_prefix"]."configuration");
			$mesg.="</div>";
		}

		//$oscommercedb->close();    Ne pas fermer car la conn de webcal est la meme que dolibarr si parametre host/user/pass identique
	}
	elseif ($oscommercedb->connected == 1 && $oscommercedb->database_selected != 1)
	{
		$mesg ="<div class=\"error\">".$langs->trans("OSCommerceTestKo1",$_POST["oscommerce_dbhost"],$_POST["oscommerce_dbname"]);
		$mesg.="<br>".$oscommercedb->error();
		$mesg.="</div>";
		//$oscommercedb->close();    Ne pas fermer car la conn de webcal est la meme que dolibarr si parametre host/user/pass identique
	}
	else
	{
		$mesg ="<div class=\"error\">".$langs->trans("OSCommerceTestKo2",$_POST["oscommerce_dbhost"],$_POST["oscommerce_dbuser"]);
		$mesg.="<br>".$oscommercedb->error();
		$mesg.="</div>";
	}

	//$resql=$db->query("select count(*) from llx_const");
	//print "< ".$db." - ".$db->db." - ".$resql." - ".$db->error()."><br>\n";
}