示例#1
0
                }
                dol_fiche_end();
            }
            // end edit or not edit
        } else {
            dol_print_error($db);
        }
    }
    //fin si id > 0
}
/*
 * Barre d'actions
 */
print '<div class="tabsAction">';
if ($action != 'create' && $action != 'edit') {
    $object = new ExpenseReport($db);
    $object->fetch($id, $ref);
    /* Si l'état est "Brouillon"
     *	ET user à droit "creer/supprimer"
     *	ET fk_user_author == user courant
     * 	Afficher : "Enregistrer" / "Modifier" / "Supprimer"
     */
    if ($user->rights->expensereport->creer && $object->fk_statut == 0) {
        if ($object->fk_user_author == $user->id) {
            // Modify
            print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=edit&id=' . $object->id . '">' . $langs->trans('Modify') . '</a>';
            // Validate
            if (count($object->lines) > 0 || count($object->lignes) > 0) {
                print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=save&id=' . $object->id . '">' . $langs->trans('ValidateAndSubmit') . '</a>';
            }
            if ($user->rights->expensereport->supprimer) {
 /**
  * update
  *
  * @param   User    $fuser      User
  * @return  int                 <0 if KO, >0 if OK
  */
 function update($fuser)
 {
     global $fuser, $langs, $conf;
     $error = 0;
     // Clean parameters
     $this->comments = trim($this->comments);
     $this->vatrate = price2num($this->vatrate);
     $this->db->begin();
     // Mise a jour ligne en base
     $sql = "UPDATE " . MAIN_DB_PREFIX . "expensereport_det SET";
     $sql .= " comments='" . $this->db->escape($this->comments) . "'";
     $sql .= ",value_unit=" . $this->value_unit . "";
     $sql .= ",qty=" . $this->qty . "";
     $sql .= ",date='" . $this->db->idate($this->date) . "'";
     $sql .= ",total_ht=" . $this->total_ht . "";
     $sql .= ",total_tva=" . $this->total_tva . "";
     $sql .= ",total_ttc=" . $this->total_ttc . "";
     $sql .= ",tva_tx=" . $this->vatrate;
     if ($this->fk_c_type_fees) {
         $sql .= ",fk_c_type_fees=" . $this->fk_c_type_fees;
     } else {
         $sql .= ",fk_c_type_fees=null";
     }
     if ($this->fk_projet) {
         $sql .= ",fk_projet=" . $this->fk_projet;
     } else {
         $sql .= ",fk_projet=null";
     }
     $sql .= " WHERE rowid = " . $this->rowid;
     dol_syslog("ExpenseReportLine::update sql=" . $sql);
     $resql = $this->db->query($sql);
     if ($resql) {
         $tmpparent = new ExpenseReport($this->db);
         $result = $tmpparent->fetch($this->fk_expensereport);
         if ($result > 0) {
             $result = $tmpparent->update_price();
             if ($result < 0) {
                 $error++;
                 $this->error = $tmpparent->error;
                 $this->errors = $tmpparent->errors;
             }
         } else {
             $error++;
             $this->error = $tmpparent->error;
             $this->errors = $tmpparent->errors;
         }
     } else {
         $error++;
         dol_print_error($this->db);
     }
     if (!$error) {
         $this->db->commit();
         return 1;
     } else {
         $this->error = $this->db->lasterror();
         dol_syslog("ExpenseReportLine::update Error " . $this->error, LOG_ERR);
         $this->db->rollback();
         return -2;
     }
 }
示例#3
0
 // Amount with all taxes
 print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_amount_ttc" value="' . $search_amount_ttc . '"></td>';
 // Status
 print '<td class="liste_titre" align="right">';
 select_expensereport_statut($search_status, 'search_status');
 print '</td>';
 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 '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto($langs->trans("Search"), 'searchclear.png', '', '', 1) . '" value="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '" title="' . dol_escape_htmltag($langs->trans("RemoveFilter")) . '">';
 print '</td>';
 print "</tr>\n";
 $var = true;
 $total_total_ht = 0;
 $total_total_ttc = 0;
 $total_total_tva = 0;
 $expensereportstatic = new ExpenseReport($db);
 if ($num > 0) {
     while ($i < min($num, $limit)) {
         $objp = $db->fetch_object($resql);
         $expensereportstatic->id = $objp->rowid;
         $expensereportstatic->ref = $objp->ref;
         $var = !$var;
         print "<tr " . $bc[$var] . ">";
         print '<td>' . $expensereportstatic->getNomUrl(1) . '</td>';
         print '<td align="center">' . ($objp->date_debut > 0 ? dol_print_date($objp->date_debut, 'day') : '') . '</td>';
         print '<td align="center">' . ($objp->date_fin > 0 ? dol_print_date($objp->date_fin, 'day') : '') . '</td>';
         print '<td align="left"><a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $objp->id_user . '">' . img_object($langs->trans("ShowUser"), "user") . ' ' . dolGetFirstLastname($objp->firstname, $objp->lastname) . '</a></td>';
         print '<td align="right">' . price($objp->total_ht) . '</td>';
         print '<td align="right">' . price($objp->total_tva) . '</td>';
         print '<td align="right">' . price($objp->total_ttc) . '</td>';
         $expensereporttmp->status = $objp->status;
示例#4
0
// Number of cheque to send
if (!empty($conf->banque->enabled) && $user->rights->banque->lire && !$user->societe_id) {
    include_once DOL_DOCUMENT_ROOT . '/compta/paiement/cheque/class/remisecheque.class.php';
    $board = new RemiseCheque($db);
    $dashboardlines[] = $board->load_board($user);
}
// Number of foundation members
if (!empty($conf->adherent->enabled) && $user->rights->adherent->lire && !$user->societe_id) {
    include_once DOL_DOCUMENT_ROOT . '/adherents/class/adherent.class.php';
    $board = new Adherent($db);
    $dashboardlines[] = $board->load_board($user);
}
// Number of expense reports to pay
if (!empty($conf->expensereport->enabled) && $user->rights->expensereport->lire) {
    include_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
    $board = new ExpenseReport($db);
    $dashboardlines[] = $board->load_board($user);
}
// Calculate total nb of late
$totallate = 0;
$var = true;
//Remove any invalid response
//load_board can return an integer if failed or WorkboardResponse if OK
$valid_dashboardlines = array();
foreach ($dashboardlines as $tmp) {
    if ($tmp instanceof WorkboardResponse) {
        $valid_dashboardlines[] = $tmp;
    }
}
$rowspan = count($valid_dashboardlines);
foreach ($valid_dashboardlines as $board) {
 static function Submit()
 {
     $data = Main::GetData();
     if (isset($data['food_quantity'], $data['hotel_quantity'], $data['stop_over_quantity'], $data['kilometers_quantity'])) {
         if (Database::Check((int) $data['food_quantity'], 'SMALLINT') && Database::Check((int) $data['hotel_quantity'], 'SMALLINT') && Database::Check((int) $data['stop_over_quantity'], 'SMALLINT') && Database::Check((int) $data['kilometers_quantity'], 'SMALLINT') && !Session::Get('accountant')) {
             $now = new DateTime();
             $now = $now->format('Y-m-d');
             $report = ExpenseReport::GetReport($now, Session::Get('id'));
             $query = 'UPDATE package_entry ' . 'SET quantity=:quantity ' . 'WHERE fk_expense_report=:fk_expense_report ' . 'AND fk_expense_package=:fk_expense_package';
             Database::Exec($query, ['quantity' => (int) $data['food_quantity'], 'fk_expense_report' => (int) $report->getId(), 'fk_expense_package' => 4]);
             Database::Exec($query, ['quantity' => (int) $data['hotel_quantity'], 'fk_expense_report' => (int) $report->getId(), 'fk_expense_package' => 3]);
             Database::Exec($query, ['quantity' => (int) $data['stop_over_quantity'], 'fk_expense_report' => (int) $report->getId(), 'fk_expense_package' => 1]);
             Database::Exec($query, ['quantity' => (int) $data['kilometers_quantity'], 'fk_expense_report' => (int) $report->getId(), 'fk_expense_package' => 2]);
             $query = 'UPDATE expense_report ' . 'SET update_date=:update_date ' . 'WHERE id=:id';
             $now = new DateTime();
             $now = $now->format('Y-m-d');
             Database::Exec($query, ['update_date' => $now, 'id' => $report->getId()]);
         }
     } elseif (isset($data['non_package_date'], $data['non_package_label'], $data['non_package_amount']) && !Session::Get('accountant')) {
         if (Database::Check($data['non_package_label'], 'VARCHAR') && Database::Check((int) $data['non_package_amount'], 'MEDIUMINT')) {
             $query = 'INSERT INTO non_package_entry(label, entry_date, amount, fk_expense_status, fk_expense_report) ' . 'VALUES(:label, :entry_date, :amount, 1, :fk_expense_report)';
             $entry_date = new DateTime($data['non_package_date']);
             $entry_date = $entry_date->format('Y-m-d');
             $now = new DateTime();
             $now = $now->format('Y-m-d');
             $report = ExpenseReport::GetReport($now, Session::Get('id'));
             Database::Exec($query, ['label' => $data['non_package_label'], 'entry_date' => $entry_date, 'amount' => $data['non_package_amount'], 'fk_expense_report' => $report->getId()]);
             $query = 'UPDATE expense_report ' . 'SET update_date=:update_date ' . 'WHERE id=:id';
             $now = new DateTime();
             $now = $now->format('Y-m-d');
             Database::Exec($query, ['update_date' => $now, 'id' => $report->getId()]);
         }
     } elseif (isset($data['status_change'], $data['report_id']) && Session::Get('accountant')) {
         $query = '
                   UPDATE expense_report
                   SET fk_report_status=:status_change
                   WHERE id=:id
                  ';
         Database::Exec($query, ['status_change' => $data['status_change'], 'id' => $data['report_id']]);
         $query = 'UPDATE expense_report ' . 'SET update_date=:update_date ' . 'WHERE id=:id';
         $now = new DateTime();
         $now = $now->format('Y-m-d');
         Database::Exec($query, ['update_date' => $now, 'id' => $data['report_id']]);
     } elseif (isset($data['report_id']) && Session::Get('accountant')) {
         throw new Exception('Impossible de récupérer les données de formulaire.');
         header('refresh:10; url=/home/display');
     }
     if (Session::Get('accountant')) {
         header('Location: /report/validate');
     } else {
         header('Location: /report/edit');
     }
 }
/**
 * expensereport_pdf_create
 *
 *  @param	    DoliDB		$db  			Database handler
 *  @param	    ExpenseReport		$object			Object order
 *  @param		string		$message		Message
 *  @param	    string		$modele			Force le modele a utiliser ('' to not force)
 *  @param		Translate	$outputlangs	objet lang a utiliser pour traduction
 *  @param      int			$hidedetails    Hide details of lines
 *  @param      int			$hidedesc       Hide description
 *  @param      int			$hideref        Hide ref
 *  @return     int         				0 if KO, 1 if OK
 */
function expensereport_pdf_create(DoliDB $db, ExpenseReport $object, $message, $modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0)
{
    return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
}
示例#7
0
    $dashboardlines[] = $board->load_board($user);
}

// Number of expense reports to approve
if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->approve)
{
    include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
    $board=new ExpenseReport($db);
	$dashboardlines[] = $board->load_board($user,'toapprove');
}

// Number of expense reports to pay
if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->to_paid)
{
    include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
    $board=new ExpenseReport($db);
	$dashboardlines[] = $board->load_board($user,'topay');
}

// Calculate total nb of late
$totallate=0;
$var=true;

//Remove any invalid response
//load_board can return an integer if failed or WorkboardResponse if OK
$valid_dashboardlines=array();
foreach($dashboardlines as $tmp)
{
	if ($tmp instanceof WorkboardResponse) $valid_dashboardlines[] = $tmp;
}
$rowspan = count($valid_dashboardlines);
示例#8
0
                }
                dol_fiche_end();
            }
            // end edit or not edit
        } else {
            dol_print_error($db);
        }
    }
    //fin si id > 0
}
/*
 * Barre d'actions
 */
print '<div class="tabsAction">';
if ($action != 'create' && $action != 'edit') {
    $object = new ExpenseReport($db);
    $object->fetch($id, $ref);
    /* Si l'état est "Brouillon"
     *	ET user à droit "creer/supprimer"
     *	ET fk_user_author == user courant
     * 	Afficher : "Enregistrer" / "Modifier" / "Supprimer"
     */
    if ($user->rights->expensereport->creer && $object->fk_statut == 0) {
        if ($object->fk_user_author == $user->id) {
            // Modify
            print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=edit&id=' . $object->id . '">' . $langs->trans('Modify') . '</a>';
            // Validate
            if (count($object->lines) > 0 || count($object->lignes) > 0) {
                print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=save&id=' . $object->id . '">' . $langs->trans('ValidateAndSubmit') . '</a>';
            }
            if ($user->rights->expensereport->supprimer) {
示例#9
0
$result = $db->query($sql);
if ($result) {
    $var = false;
    $num = $db->num_rows($result);
    $i = 0;
    print '<table class="noborder" width="100%">';
    print '<tr class="liste_titre">';
    print '<td colspan="2">' . $langs->trans("BoxTitleLastModifiedExpenses", min($max, $num)) . '</td>';
    print '<td align="right">' . $langs->trans("AmountHT") . '</td>';
    print '<td align="right">' . $langs->trans("AmountTTC") . '</td>';
    print '<td align="right">' . $langs->trans("DateModificationShort") . '</td>';
    print '<td>&nbsp;</td>';
    print '</tr>';
    if ($num) {
        $total_ttc = $totalam = $total = 0;
        $expensereportstatic = new ExpenseReport($db);
        $userstatic = new User($db);
        while ($i < $num && $i < $max) {
            $obj = $db->fetch_object($result);
            $expensereportstatic->id = $obj->rowid;
            $expensereportstatic->ref = $obj->ref;
            $userstatic->id = $obj->uid;
            $userstatic->lastname = $obj->lastname;
            $userstatic->firstname = $obj->firstname;
            print '<tr ' . $bc[$var] . '>';
            print '<td>' . $expensereportstatic->getNomUrl(1) . '</td>';
            print '<td>' . $userstatic->getNomUrl(1) . '</td>';
            print '<td align="right">' . price($obj->total_ht) . '</td>';
            print '<td align="right">' . price($obj->total_ttc) . '</td>';
            print '<td align="right">' . dol_print_date($db->jdate($obj->dm), 'day') . '</td>';
            print '<td align="right">';
示例#10
0
            if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
                $fac->generateDocument($fac->modelpdf, $outputlangs);
            }
        }
        header('Location: card.php?id=' . $payment->id);
        exit;
    } else {
        setEventMessages($payment->error, $payment->errors, 'errors');
        $db->rollback();
    }
}
/*
 * View
 */
llxHeader();
$expensereport = new ExpenseReport($db);
$form = new Form($db);
$h = 0;
$head[$h][0] = DOL_URL_ROOT . '/expensereport/payment/card.php?id=' . $id;
$head[$h][1] = $langs->trans("Card");
$hselected = $h;
$h++;
dol_fiche_head($head, $hselected, $langs->trans("ExpenseReportPayment"), 0, 'payment');
/*
 * Confirm deleting of the payment
 */
if ($action == 'delete') {
    print $form->formconfirm('card.php?id=' . $payment->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete', '', 0, 2);
}
/*
 * Confirm validation of the payment
示例#11
0
			for ($i = 0; $i < $num; $i++)
			{
				$tmp=explode('_',$elementarray[$i]);
				$idofelement=$tmp[0];
				$idofelementuser=$tmp[1];

				$element->fetch($idofelement);
				if ($idofelementuser) $elementuser->fetch($idofelementuser);

				if ($tablename != 'expensereport_det')
				{
					$element->fetch_thirdparty();
				}
				else
				{
					$expensereport=new ExpenseReport($db);
					$expensereport->fetch($element->fk_expensereport);
				}

				//print 'xxx'.$tablename;
				//print $classname;

				if ($breakline && $saved_third_id != $element->thirdparty->id)
				{
					print $breakline;
					$var = true;

					$saved_third_id = $element->thirdparty->id;
					$breakline = '';

					$total_ht_by_third=0;
示例#12
0
    $maskvalue = GETPOST('maskvalue', 'alpha');
    if ($maskconst) {
        $res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
    }
    if (!$res > 0) {
        $error++;
    }
    if (!$error) {
        setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
    } else {
        setEventMessages($langs->trans("Error"), null, 'errors');
    }
} else {
    if ($action == 'specimen') {
        $modele = GETPOST('module', 'alpha');
        $inter = new ExpenseReport($db);
        $inter->initAsSpecimen();
        // Search template files
        $file = '';
        $classname = '';
        $filefound = 0;
        $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
        foreach ($dirmodels as $reldir) {
            $file = dol_buildpath($reldir . "core/modules/expensereport/doc/pdf_" . $modele . ".modules.php", 0);
            if (file_exists($file)) {
                $filefound = 1;
                $classname = "pdf_" . $modele;
                break;
            }
        }
        if ($filefound) {
示例#13
0
        $sql .= " SET integration_compta = 1, fk_bank_account = {$idAccount}";
        $sql .= " WHERE rowid = {$idTrip}";
        $resql = $db->query($sql);
        if ($result) {
            Header("Location: " . $_SERVER["PHP_SELF"] . "?account=" . $idAccount);
            exit;
        } else {
            dol_print_error($db);
        }
    } else {
        dol_print_error($db, $acct->error);
    }
}
if ($_GET["action"] == 'confirm_account_to_ndf' && $_GET["confirm"] == "yes") {
    $idTrip = $_GET['idTrip'];
    $expensereport = new ExpenseReport($db);
    $expensereport->fetch($idTrip, $user);
    $sql = "DELETE FROM " . MAIN_DB_PREFIX . "bank";
    $sql .= " WHERE label LIKE '%" . $expensereport->ref . "%'";
    $resql = $db->query($sql);
    if ($resql > 0) {
        $sql = " UPDATE " . MAIN_DB_PREFIX . "expensereport as d";
        $sql .= " SET integration_compta = 0, fk_bank_account = 0";
        $sql .= " WHERE rowid = {$idTrip}";
        $resql = $db->query($sql);
        if ($result) {
            Header("Location: " . $_SERVER["PHP_SELF"] . "?account=" . $idAccount);
            exit;
        } else {
            dol_print_error($db);
        }
示例#14
0
                exit;
            } else {
                $db->rollback();
            }
        }
    }
    $_GET["action"] = 'create';
}
/*
 * View
 */
llxHeader();
$form = new Form($db);
// Form to create expense report payment
if (GETPOST("action") == 'create') {
    $expensereport = new ExpenseReport($db);
    $expensereport->fetch($chid);
    $total = $expensereport->total_ttc;
    print load_fiche_titre($langs->trans("DoPayment"));
    if ($mesg) {
        print "<div class=\"error\">{$mesg}</div>";
    }
    print '<form name="add_payment" action="' . $_SERVER['PHP_SELF'] . '" method="post">';
    print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
    print '<input type="hidden" name="id" value="' . $chid . '">';
    print '<input type="hidden" name="chid" value="' . $chid . '">';
    print '<input type="hidden" name="action" value="add_payment">';
    dol_fiche_head();
    print '<table cellspacing="0" class="border" width="100%" cellpadding="2">';
    print '<tr class="liste_titre"><td colspan="3">' . $langs->trans("ExpenseReport") . '</td>';
    print '<tr><td>' . $langs->trans("Ref") . '</td><td colspan="2"><a href="' . DOL_URL_ROOT . '/expensereport/card.php?id=' . $chid . '">' . $expensereport->ref . '</a></td></tr>';
示例#15
0
$sortfield = GETPOST('sortfield', 'alpha');
$sortorder = GETPOST('sortorder', 'alpha');
$page = GETPOST('page', 'int');
if ($page == -1) {
    $page = 0;
}
$offset = $conf->liste_limit * $page;
$pageprev = $page - 1;
$pagenext = $page + 1;
if (!$sortorder) {
    $sortorder = "ASC";
}
if (!$sortfield) {
    $sortfield = "name";
}
$object = new ExpenseReport($db);
$object->fetch($id, $ref);
$upload_dir = $conf->expensereport->dir_output . '/' . dol_sanitizeFileName($object->ref);
$modulepart = 'trip';
/*
 * Actions
 */
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php';
/*
 * View
 */
$form = new Form($db);
llxHeader("", "", $langs->trans("TripCard"));
if ($object->id) {
    $object->fetch_thirdparty();
    $head = expensereport_prepare_head($object);
示例#16
0
 * 	\ingroup    expensereport
 * 	\brief      Page to show a trip information
 */
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT . '/core/lib/expensereport.lib.php';
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
$langs->load("trips");
// Security check
$id = GETPOST('id', 'int');
if ($user->societe_id) {
    $socid = $user->societe_id;
}
$result = restrictedArea($user, 'expensereport', $id, '');
/*
 * View
 */
llxHeader();
if ($id) {
    $object = new ExpenseReport($db);
    $object->fetch($id);
    $object->info($id);
    $head = expensereport_prepare_head($object);
    dol_fiche_head($head, 'info', $langs->trans("TripCard"), 0, 'trip');
    print '<table width="100%"><tr><td>';
    dol_print_object_info($object);
    print '</td></tr></table>';
    print '</div>';
}
llxFooter();
$db->close();