/**
	 * Get id and rate of currency from code 
	 * 
	 * @param DoliDB	$db		object db
	 * @param string	$code	code value search
	 * 
	 * @return 	array	[0] => id currency
	 *					[1] => rate
	 */
	 public static function getIdAndTxFromCode(&$db, $code)
	 {
	 	$sql = 'SELECT m.rowid, mc.rate FROM '.MAIN_DB_PREFIX.'multicurrency m';
		$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'multicurrency_rate mc ON (m.rowid = mc.fk_multicurrency)';
		$sql.= ' WHERE m.code = "'.$db->escape($code).'" AND mc.date_sync >= ALL (SELECT date_sync FROM '.MAIN_DB_PREFIX.'multicurrency_rate)';
		$resql = $db->query($sql);
		if ($resql && $obj = $db->fetch_object($resql)) return array($obj->rowid, $obj->rate);
		else return array(0, 1);
	 }
Exemplo n.º 2
0
/**
 *	Effacement d'une constante dans la base de donnees
 *
 *	@param	    DoliDB		$db         Database handler
 *	@param	    string		$name		Name of constant or rowid of line
 *	@param	    int			$entity		Multi company id, -1 for all entities
 *	@return     int         			<0 if KO, >0 if OK
 *
 *	@see		dolibarr_get_const, dolibarr_set_const, dol_set_user_param
 */
function dolibarr_del_const($db, $name, $entity = 1)
{
    global $conf;
    if (empty($name)) {
        dol_print_error('', 'Error call dolibar_del_const with parameter name empty');
        return -1;
    }
    $sql = "DELETE FROM " . MAIN_DB_PREFIX . "const";
    $sql .= " WHERE (" . $db->decrypt('name') . " = '" . $db->escape($name) . "'";
    if (is_numeric($name)) {
        $sql .= " OR rowid = '" . $db->escape($name) . "'";
    }
    $sql .= ")";
    if ($entity >= 0) {
        $sql .= " AND entity = " . $entity;
    }
    dol_syslog("admin.lib::dolibarr_del_const", LOG_DEBUG);
    $resql = $db->query($sql);
    if ($resql) {
        $conf->global->{$name} = '';
        return 1;
    } else {
        dol_print_error($db);
        return -1;
    }
}
/**
 * 		Show html area for list of contacts
 *
 *		@param	Conf		$conf		Object conf
 * 		@param	Translate	$langs		Object langs
 * 		@param	DoliDB		$db			Database handler
 * 		@param	Object		$object		Third party object
 *      @param  string		$backtopage	Url to go once contact is created
 *      @return	void
 */
function show_contacts($conf, $langs, $db, $object, $backtopage = '')
{
    global $user, $conf;
    global $bc;
    $form = new Form($db);
    $sortfield = GETPOST("sortfield", 'alpha');
    $sortorder = GETPOST("sortorder", 'alpha');
    $search_status = GETPOST("search_status", 'int');
    if ($search_status == '') {
        $search_status = 1;
    }
    // always display activ customer first
    $search_name = GETPOST("search_name", 'alpha');
    if (!$sortorder) {
        $sortorder = "ASC";
    }
    if (!$sortfield) {
        $sortfield = "p.lastname";
    }
    $i = -1;
    $contactstatic = new Contact($db);
    if (!empty($conf->clicktodial->enabled)) {
        $user->fetch_clicktodial();
        // lecture des infos de clicktodial
    }
    $buttoncreate = '';
    if ($user->rights->societe->contact->creer) {
        $addcontact = !empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("AddContact") : $langs->trans("AddContactAddress");
        $buttoncreate = '<a class="addnewrecord" href="' . DOL_URL_ROOT . '/contact/fiche.php?socid=' . $object->id . '&amp;action=create&amp;backtopage=' . urlencode($backtopage) . '">' . $addcontact;
        if (empty($conf->dol_optimize_smallscreen)) {
            $buttoncreate .= ' ' . img_picto($addcontact, 'filenew');
        }
        $buttoncreate .= '</a>' . "\n";
    }
    print "\n";
    $title = !empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("ContactsForCompany") : $langs->trans("ContactsAddressesForCompany");
    print_fiche_titre($title, $buttoncreate, '');
    print '<form method="GET" action="' . $_SERVER["PHP_SELF"] . '" name="formfilter">';
    print '<input type="hidden" name="socid" value="' . $object->id . '">';
    print '<input type="hidden" name="sortorder" value="' . $sortorder . '">';
    print '<input type="hidden" name="sortfield" value="' . $sortfield . '">';
    print "\n" . '<table class="noborder" width="100%">' . "\n";
    $param = "socid=" . $object->id;
    if ($search_status != '') {
        $param .= '&amp;search_status=' . $search_status;
    }
    if ($search_name != '') {
        $param .= '&amp;search_name=' . urlencode($search_name);
    }
    $colspan = 9;
    print '<tr class="liste_titre">';
    print_liste_field_titre($langs->trans("Name"), $_SERVER["PHP_SELF"], "p.lastname", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("Poste"), $_SERVER["PHP_SELF"], "p.poste", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("PhonePro"), $_SERVER["PHP_SELF"], "p.phone", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("PhoneMobile"), $_SERVER["PHP_SELF"], "p.phone_mobile", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("Fax"), $_SERVER["PHP_SELF"], "p.fax", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("EMail"), $_SERVER["PHP_SELF"], "p.email", "", $param, '', $sortfield, $sortorder);
    if (!empty($conf->skype->enabled)) {
        $colspan++;
        print '<td>' . $langs->trans("Skype") . '</td>';
    }
    print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "p.statut", "", $param, '', $sortfield, $sortorder);
    // Copy to clipboard
    print "<td>&nbsp;</td>";
    // Add to agenda
    if (!empty($conf->agenda->enabled) && !empty($user->rights->agenda->myactions->create)) {
        $colspan++;
        print '<td>&nbsp;</td>';
    }
    // Edit
    print '<td>&nbsp;</td>';
    print "</tr>";
    print '<tr class="liste_titre">';
    print '<td class="liste_titre">';
    print '<input type="text" class="flat" name="search_name" size="20" value="' . $search_name . '">';
    print '</td>';
    print '<td>&nbsp;</td>';
    print '<td>&nbsp;</td>';
    print '<td>&nbsp;</td>';
    print '<td>&nbsp;</td>';
    print '<td>&nbsp;</td>';
    if (!empty($conf->skype->enabled)) {
        $colspan++;
        print '<td>&nbsp;</td>';
    }
    // Status
    print '<td class="liste_titre maxwidthonsmartphone">';
    print $form->selectarray('search_status', array('0' => $langs->trans('ActivityCeased'), '1' => $langs->trans('InActivity')), $search_status);
    print '</td>';
    // Copy to clipboard
    print "<td>&nbsp;</td>";
    // Add to agenda
    if (!empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) {
        $colspan++;
        print '<td>&nbsp;</td>';
    }
    // Edit
    print '<td class="liste_titre" align="right">';
    print '<input type="image" class="liste_titre" name="button_search" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
    print '</td>';
    print "</tr>";
    $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.skype, p.statut ";
    $sql .= ", p.civilite as civility_id, p.address, p.zip, p.town";
    $sql .= " FROM " . MAIN_DB_PREFIX . "socpeople as p";
    $sql .= " WHERE p.fk_soc = " . $object->id;
    if ($search_status != '') {
        $sql .= " AND p.statut = " . $db->escape($search_status);
    }
    if ($search_name) {
        $sql .= " AND (p.lastname LIKE '%" . $db->escape($search_name) . "%' OR p.firstname LIKE '%" . $db->escape($search_name) . "%')";
    }
    $sql .= " ORDER BY {$sortfield} {$sortorder}";
    dol_syslog('core/lib/company.lib.php :: show_contacts sql=' . $sql, LOG_DEBUG);
    $result = $db->query($sql);
    $num = $db->num_rows($result);
    $var = true;
    if ($num) {
        $i = 0;
        while ($i < $num) {
            $obj = $db->fetch_object($result);
            $var = !$var;
            print "<tr " . $bc[$var] . ">";
            print '<td>';
            $contactstatic->id = $obj->rowid;
            $contactstatic->statut = $obj->statut;
            $contactstatic->lastname = $obj->lastname;
            $contactstatic->firstname = $obj->firstname;
            $contactstatic->civility_id = $obj->civility_id;
            print $contactstatic->getNomUrl(1);
            print '</td>';
            print '<td>' . $obj->poste . '</td>';
            $country_code = getCountry($obj->country_id, 'all');
            // Lien click to dial
            print '<td>';
            print dol_print_phone($obj->phone, $country_code['code'], $obj->rowid, $object->id, 'AC_TEL');
            print '</td>';
            print '<td>';
            print dol_print_phone($obj->phone_mobile, $country_code['code'], $obj->rowid, $object->id, 'AC_TEL');
            print '</td>';
            print '<td>';
            print dol_print_phone($obj->fax, $country_code['code'], $obj->rowid, $object->id, 'AC_FAX');
            print '</td>';
            print '<td>';
            print dol_print_email($obj->email, $obj->rowid, $object->id, 'AC_EMAIL');
            print '</td>';
            if (!empty($conf->skype->enabled)) {
                print '<td>';
                print dol_print_skype($obj->skype, $obj->rowid, $object->id, 'AC_SKYPE');
                print '</td>';
            }
            // Status
            print '<td>' . $contactstatic->getLibStatut(5) . '</td>';
            print '<td align="center">';
            if (!empty($conf->use_javascript_ajax)) {
                // Copy to clipboard
                $coords = '';
                if (!empty($object->name)) {
                    $coords .= $object->name . "<br>";
                }
                $coords .= $contactstatic->getFullName($langs, 1) . ' ';
                $coords .= "<br>";
                if (!empty($obj->address)) {
                    $coords .= dol_nl2br($obj->address, 1, true) . "<br>";
                    if (!empty($obj->zip)) {
                        $coords .= $obj->zip . ' ';
                    }
                    if (!empty($obj->town)) {
                        $coords .= $obj->town;
                    }
                    if (!empty($obj->country_id)) {
                        $coords .= "<br>" . $country_code['label'];
                    }
                } else {
                    if (!empty($object->address)) {
                        $coords .= dol_nl2br($object->address, 1, true) . "<br>";
                        if (!empty($object->zip)) {
                            $coords .= $object->zip . ' ';
                        }
                        if (!empty($object->town)) {
                            $coords .= $object->town;
                        }
                        if (!empty($object->country_id)) {
                            $coords .= "<br>" . $country_code['label'];
                        }
                    }
                }
                // hideonsmatphone because copyToClipboard call jquery dialog that does not work with jmobile
                print '<a href="#" class="hideonsmartphone" onclick="return copyToClipboard(\'' . dol_escape_js($coords) . '\',\'' . dol_escape_js($langs->trans("HelpCopyToClipboard")) . '\');">';
                print img_picto($langs->trans("Address"), 'object_address.png');
                print '</a>';
            }
            print '</td>';
            // Add to agenda
            if (!empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) {
                print '<td align="center">';
                if (!empty($conf->global->AGENDA_USE_EVENT_TYPE)) {
                    print '<a class="hideonsmartphone" href="' . DOL_URL_ROOT . '/comm/action/fiche.php?action=create&actioncode=AC_RDV&contactid=' . $obj->rowid . '&socid=' . $object->id . '&backtopage=' . urlencode($backtopage) . '">';
                    print img_object($langs->trans("Rendez-Vous"), "action_rdv");
                    print '</a> ';
                }
                print '<a href="' . DOL_URL_ROOT . '/comm/action/fiche.php?action=create&actioncode=&contactid=' . $obj->rowid . '&socid=' . $object->id . '&backtopage=' . urlencode($backtopage) . '">';
                print img_object($langs->trans("Event"), "action");
                print '</a></td>';
            }
            // Edit
            if ($user->rights->societe->contact->creer) {
                print '<td align="right">';
                print '<a href="' . DOL_URL_ROOT . '/contact/fiche.php?action=edit&amp;id=' . $obj->rowid . '&amp;backtopage=' . urlencode($backtopage) . '">';
                print img_edit();
                print '</a></td>';
            } else {
                print '<td>&nbsp;</td>';
            }
            print "</tr>\n";
            $i++;
        }
    } else {
        print "<tr " . $bc[$var] . ">";
        print '<td colspan="' . $colspan . '">' . $langs->trans("None") . '</td>';
        print "</tr>\n";
    }
    print "\n</table>\n";
    print '</form>' . "\n";
    print "<br>\n";
    ?>
<div id="dialog" title="<?php 
    echo dol_escape_htmltag($langs->trans('Address'));
    ?>
" style="display: none;"></div>
<?php 
    return $i;
}
 /**
  *      Return template of email
  *      Search into table c_email_templates
  *
  * 		@param	DoliDB		$db				Database handler
  * 		@param	string		$type_template	Get message for key module
  *      @param	string		$user			Use template public or limited to this user
  *      @param	Translate	$outputlangs	Output lang object
  *      @param	int			$id				Id template to find
  *      @return array						array('topic'=>,'content'=>,..)
  */
 private function getEMailTemplate($db, $type_template, $user, $outputlangs, $id = 0)
 {
     $ret = array();
     $sql = "SELECT label, topic, content, lang";
     $sql .= " FROM " . MAIN_DB_PREFIX . 'c_email_templates';
     $sql .= " WHERE type_template='" . $db->escape($type_template) . "'";
     $sql .= " AND entity IN (" . getEntity("c_email_templates") . ")";
     $sql .= " AND (fk_user is NULL or fk_user = 0 or fk_user = "******")";
     if (is_object($outputlangs)) {
         $sql .= " AND (lang = '" . $outputlangs->defaultlang . "' OR lang IS NULL OR lang = '')";
     }
     if (!empty($id)) {
         $sql .= " AND rowid=" . $id;
     }
     $sql .= $db->order("lang,label", "ASC");
     //print $sql;
     $resql = $db->query($sql);
     if ($resql) {
         $obj = $db->fetch_object($resql);
         // Get first found
         if ($obj) {
             $ret['label'] = $obj->label;
             $ret['topic'] = $obj->topic;
             $ret['content'] = $obj->content;
             $ret['lang'] = $obj->lang;
         } else {
             $defaultmessage = '';
             if ($type_template == 'facture_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendInvoice");
             } elseif ($type_template == 'facture_relance') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendInvoiceReminder");
             } elseif ($type_template == 'propal_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendProposal");
             } elseif ($type_template == 'askpricesupplier_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendAskPriceSupplier");
             } elseif ($type_template == 'order_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendOrder");
             } elseif ($type_template == 'order_supplier_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendSupplierOrder");
             } elseif ($type_template == 'invoice_supplier_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendSupplierInvoice");
             } elseif ($type_template == 'shipping_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendShipping");
             } elseif ($type_template == 'fichinter_send') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendFichInter");
             } elseif ($type_template == 'thirdparty') {
                 $defaultmessage = $outputlangs->transnoentities("PredefinedMailContentThirdparty");
             }
             $ret['label'] = 'default';
             $ret['topic'] = '';
             $ret['content'] = $defaultmessage;
             $ret['lang'] = $outputlangs->defaultlang;
         }
         $db->free($resql);
         return $ret;
     } else {
         dol_print_error($db);
         return -1;
     }
 }
Exemplo n.º 5
0
/**
 * 		Show html area for list of contacts
 *
 *		@param	Conf		$conf		Object conf
 * 		@param	Translate	$langs		Object langs
 * 		@param	DoliDB		$db			Database handler
 * 		@param	Societe		$object		Third party object
 *      @param  string		$backtopage	Url to go once contact is created
 *      @return	void
 */
function show_contacts($conf, $langs, $db, $object, $backtopage = '')
{
    global $user, $conf;
    global $bc;
    $form = new Form($db);
    $sortfield = GETPOST("sortfield", 'alpha');
    $sortorder = GETPOST("sortorder", 'alpha');
    $search_status = GETPOST("search_status", 'int');
    if ($search_status == '') {
        $search_status = 1;
    }
    // always display activ customer first
    $search_name = GETPOST("search_name", 'alpha');
    $search_addressphone = GETPOST("search_addressphone", 'alpha');
    if (!$sortorder) {
        $sortorder = "ASC";
    }
    if (!$sortfield) {
        $sortfield = "p.lastname";
    }
    $i = -1;
    $contactstatic = new Contact($db);
    if (!empty($conf->clicktodial->enabled)) {
        $user->fetch_clicktodial();
        // lecture des infos de clicktodial
    }
    $buttoncreate = '';
    if ($user->rights->societe->contact->creer) {
        $addcontact = !empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("AddContact") : $langs->trans("AddContactAddress");
        $buttoncreate = '<a class="addnewrecord" href="' . DOL_URL_ROOT . '/contact/card.php?socid=' . $object->id . '&amp;action=create&amp;backtopage=' . urlencode($backtopage) . '">' . $addcontact;
        if (empty($conf->dol_optimize_smallscreen)) {
            $buttoncreate .= ' ' . img_picto($addcontact, 'filenew');
        }
        $buttoncreate .= '</a>' . "\n";
    }
    print "\n";
    $title = !empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("ContactsForCompany") : $langs->trans("ContactsAddressesForCompany");
    print load_fiche_titre($title, $buttoncreate, '');
    print '<form method="GET" action="' . $_SERVER["PHP_SELF"] . '" name="formfilter">';
    print '<input type="hidden" name="socid" value="' . $object->id . '">';
    print '<input type="hidden" name="sortorder" value="' . $sortorder . '">';
    print '<input type="hidden" name="sortfield" value="' . $sortfield . '">';
    print "\n" . '<table class="noborder" width="100%">' . "\n";
    $param = "socid=" . $object->id;
    if ($search_status != '') {
        $param .= '&amp;search_status=' . $search_status;
    }
    if ($search_name != '') {
        $param .= '&amp;search_name=' . urlencode($search_name);
    }
    $colspan = 9;
    print '<tr class="liste_titre">';
    print_liste_field_titre($langs->trans("Name"), $_SERVER["PHP_SELF"], "p.lastname", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("Poste"), $_SERVER["PHP_SELF"], "p.poste", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("Address") . ' / ' . $langs->trans("Phone") . ' / ' . $langs->trans("Email"), $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder);
    print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "p.statut", "", $param, '', $sortfield, $sortorder);
    // Add to agenda
    if (!empty($conf->agenda->enabled) && !empty($user->rights->agenda->myactions->create)) {
        $colspan++;
        print_liste_field_titre('');
    }
    // Edit
    print_liste_field_titre('');
    print "</tr>\n";
    $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.civility, p.poste, p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut ";
    $sql .= ", p.civility as civility_id, p.address, p.zip, p.town";
    $sql .= " FROM " . MAIN_DB_PREFIX . "socpeople as p";
    $sql .= " WHERE p.fk_soc = " . $object->id;
    if ($search_status != '' && $search_status != '-1') {
        $sql .= " AND p.statut = " . $db->escape($search_status);
    }
    if ($search_name) {
        $sql .= " AND (p.lastname LIKE '%" . $db->escape($search_name) . "%' OR p.firstname LIKE '%" . $db->escape($search_name) . "%')";
    }
    $sql .= " ORDER BY {$sortfield} {$sortorder}";
    dol_syslog('core/lib/company.lib.php :: show_contacts', LOG_DEBUG);
    $result = $db->query($sql);
    if (!$result) {
        dol_print_error($db);
    }
    $num = $db->num_rows($result);
    $var = true;
    if ($num || (GETPOST('button_search') || GETPOST('button_search.x') || GETPOST('button_search_x'))) {
        print '<tr class="liste_titre">';
        // Name - Position
        print '<td class="liste_titre">';
        print '<input type="text" class="flat" name="search_name" size="20" value="' . $search_name . '">';
        print '</td>';
        // Address / Phone
        print '<td>';
        //print '<input type="text" class="flat" name="search_addressphone" size="20" value="'.$search_addressphone.'">';
        print '</td>';
        // Email
        print '<td>&nbsp;</td>';
        // Status
        print '<td class="liste_titre maxwidthonsmartphone">';
        print $form->selectarray('search_status', array('-1' => '', '0' => $contactstatic->LibStatut(0, 1), '1' => $contactstatic->LibStatut(1, 1)), $search_status);
        print '</td>';
        // Add to agenda
        if (!empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) {
            $colspan++;
            print '<td>&nbsp;</td>';
        }
        // Edit
        print '<td class="liste_titre" align="right">';
        print '<input type="image" class="liste_titre" name="button_search" src="' . img_picto($langs->trans("Search"), 'search.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("Search")) . '" title="' . dol_escape_htmltag($langs->trans("Search")) . '">';
        print '</td>';
        print "</tr>";
        $i = 0;
        while ($i < $num) {
            $obj = $db->fetch_object($result);
            $var = !$var;
            $contactstatic->id = $obj->rowid;
            $contactstatic->ref = $obj->ref;
            $contactstatic->statut = $obj->statut;
            $contactstatic->lastname = $obj->lastname;
            $contactstatic->firstname = $obj->firstname;
            $contactstatic->civility_id = $obj->civility_id;
            $contactstatic->poste = $obj->poste;
            $contactstatic->address = $obj->address;
            $contactstatic->zip = $obj->zip;
            $contactstatic->town = $obj->town;
            $contactstatic->phone_pro = $obj->phone_pro;
            $contactstatic->phone_mobile = $obj->phone_mobile;
            $contactstatic->phone_perso = $obj->phone_perso;
            $contactstatic->email = $obj->email;
            $contactstatic->web = $obj->web;
            $contactstatic->skype = $obj->skype;
            $country_code = getCountry($obj->country_id, 2);
            $contactstatic->country_code = $country_code;
            print "<tr " . $bc[$var] . ">";
            print '<td>';
            print $contactstatic->getNomUrl(1, '', 0, '&backtopage=' . urlencode($backtopage));
            print '</td><td>';
            if ($obj->poste) {
                print $obj->poste;
            }
            print '</td>';
            // Address and phone
            print '<td>';
            print $contactstatic->getBannerAddress('contact', $object);
            print '</td>';
            // Status
            print '<td>' . $contactstatic->getLibStatut(5) . '</td>';
            // Add to agenda
            if (!empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) {
                print '<td align="center">';
                print '<a href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&actioncode=&contactid=' . $obj->rowid . '&socid=' . $object->id . '&backtopage=' . urlencode($backtopage) . '">';
                print img_object($langs->trans("Event"), "action");
                print '</a></td>';
            }
            // Edit
            if ($user->rights->societe->contact->creer) {
                print '<td align="right">';
                print '<a href="' . DOL_URL_ROOT . '/contact/card.php?action=edit&amp;id=' . $obj->rowid . '&amp;backtopage=' . urlencode($backtopage) . '">';
                print img_edit();
                print '</a></td>';
            } else {
                print '<td>&nbsp;</td>';
            }
            print "</tr>\n";
            $i++;
        }
    } else {
        print "<tr " . $bc[!$var] . ">";
        print '<td colspan="' . $colspan . '">' . $langs->trans("None") . '</td>';
        print "</tr>\n";
    }
    print "\n</table>\n";
    print '</form>' . "\n";
    return $i;
}
Exemplo n.º 6
0
/**
 * Migration des details commandes dans les details livraisons
 *
 * @param	DoliDB		$db		Database handler
 * @param	Translate	$langs	Object langs
 * @param	Conf		$conf	Object conf
 * @return	void
 */
function migrate_detail_livraison($db, $langs, $conf)
{
    dolibarr_install_syslog("upgrade2::migrate_detail_livraison");
    print '<tr><td colspan="4">';
    print '<br>';
    print '<b>' . $langs->trans('MigrationDeliveryDetail') . "</b><br>\n";
    // This is done if field fk_commande_ligne exists.
    // If not this means migration was already done.
    $result = $db->DDLDescTable(MAIN_DB_PREFIX . "livraisondet", "fk_commande_ligne");
    $obj = $db->fetch_object($result);
    if ($obj) {
        $error = 0;
        $db->begin();
        $sql = "SELECT cd.rowid, cd.fk_product, cd.description, cd.subprice, cd.total_ht";
        $sql .= ", ld.fk_livraison";
        $sql .= " FROM " . MAIN_DB_PREFIX . "commandedet as cd, " . MAIN_DB_PREFIX . "livraisondet as ld";
        $sql .= " WHERE ld.fk_commande_ligne = cd.rowid";
        $resql = $db->query($sql);
        if ($resql) {
            $i = 0;
            $num = $db->num_rows($resql);
            if ($num) {
                while ($i < $num) {
                    $obj = $db->fetch_object($resql);
                    $sql = "UPDATE " . MAIN_DB_PREFIX . "livraisondet SET";
                    $sql .= " fk_product=" . $obj->fk_product;
                    $sql .= ",description='" . $db->escape($obj->description) . "'";
                    $sql .= ",subprice='" . $obj->subprice . "'";
                    $sql .= ",total_ht='" . $obj->total_ht . "'";
                    $sql .= " WHERE fk_commande_ligne = " . $obj->rowid;
                    $resql2 = $db->query($sql);
                    if ($resql2) {
                        $sql = "SELECT total_ht";
                        $sql .= " FROM " . MAIN_DB_PREFIX . "livraison";
                        $sql .= " WHERE rowid = " . $obj->fk_livraison;
                        $resql3 = $db->query($sql);
                        if ($resql3) {
                            $obju = $db->fetch_object($resql3);
                            $total_ht = $obju->total_ht + $obj->total_ht;
                            $sqlu = "UPDATE " . MAIN_DB_PREFIX . "livraison SET";
                            $sqlu .= " total_ht='" . $total_ht . "'";
                            $sqlu .= " WHERE rowid=" . $obj->fk_livraison;
                            $resql4 = $db->query($sqlu);
                            if (!$resql4) {
                                $error++;
                                dol_print_error($db);
                            }
                        } else {
                            $error++;
                            dol_print_error($db);
                        }
                    } else {
                        $error++;
                        dol_print_error($db);
                    }
                    print ". ";
                    $i++;
                }
            }
            if ($error == 0) {
                $db->commit();
                $sql = "ALTER TABLE " . MAIN_DB_PREFIX . "livraisondet CHANGE fk_commande_ligne fk_origin_line integer";
                print $langs->trans('FieldRenamed') . "<br>\n";
                $db->query($sql);
            } else {
                $db->rollback();
            }
        } else {
            dol_print_error($db);
            $db->rollback();
        }
    } else {
        $result = $db->DDLDescTable(MAIN_DB_PREFIX . "livraisondet", "fk_origin_line");
        $obj = $db->fetch_object($result);
        if (!$obj) {
            $sql = "ALTER TABLE " . MAIN_DB_PREFIX . "livraisondet ADD COLUMN fk_origin_line integer after fk_livraison";
            $db->query($sql);
        }
        print $langs->trans('AlreadyDone') . "<br>\n";
    }
    print '</td></tr>';
}