Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
bd4894d7cb
@ -357,25 +357,25 @@ class BookKeeping extends CommonObject
|
||||
$sql .= ") VALUES (";
|
||||
$sql .= "'".$this->db->idate($this->doc_date)."'";
|
||||
$sql .= ", ".(!isset($this->date_lim_reglement) || dol_strlen($this->date_lim_reglement) == 0 ? 'NULL' : "'".$this->db->idate($this->date_lim_reglement)."'");
|
||||
$sql .= ",'".$this->db->escape($this->doc_type)."'";
|
||||
$sql .= ",'".$this->db->escape($this->doc_ref)."'";
|
||||
$sql .= ",".$this->fk_doc;
|
||||
$sql .= ",".$this->fk_docdet;
|
||||
$sql .= ",'".$this->db->escape($this->thirdparty_code)."'";
|
||||
$sql .= ",'".$this->db->escape($this->subledger_account)."'";
|
||||
$sql .= ",'".$this->db->escape($this->subledger_label)."'";
|
||||
$sql .= ",'".$this->db->escape($this->numero_compte)."'";
|
||||
$sql .= ",'".$this->db->escape($this->label_compte)."'";
|
||||
$sql .= ",'".$this->db->escape($this->label_operation)."'";
|
||||
$sql .= ",".$this->debit;
|
||||
$sql .= ",".$this->credit;
|
||||
$sql .= ",".$this->montant;
|
||||
$sql .= ",'".$this->db->escape($this->sens)."'";
|
||||
$sql .= ",'".$this->db->escape($this->fk_user_author)."'";
|
||||
$sql .= ",'".$this->db->idate($now)."'";
|
||||
$sql .= ",'".$this->db->escape($this->code_journal)."'";
|
||||
$sql .= ",'".$this->db->escape($this->journal_label)."'";
|
||||
$sql .= ",".$this->db->escape($this->piece_num);
|
||||
$sql .= ", '".$this->db->escape($this->doc_type)."'";
|
||||
$sql .= ", '".$this->db->escape($this->doc_ref)."'";
|
||||
$sql .= ", ".$this->fk_doc;
|
||||
$sql .= ", ".$this->fk_docdet;
|
||||
$sql .= ", ".(!empty($this->thirdparty_code)?("'".$this->db->escape($this->thirdparty_code)."'"):"NULL");
|
||||
$sql .= ", ".(!empty($this->subledger_account)?("'".$this->db->escape($this->subledger_account)."'"):"NULL");
|
||||
$sql .= ", ".(!empty($this->subledger_label)?("'".$this->db->escape($this->subledger_label)."'"):"NULL");
|
||||
$sql .= ", '".$this->db->escape($this->numero_compte)."'";
|
||||
$sql .= ", ".(!empty($this->label_operation)?("'".$this->db->escape($this->label_operation)."'"):"NULL");
|
||||
$sql .= ", '".$this->db->escape($this->label_operation)."'";
|
||||
$sql .= ", ".$this->debit;
|
||||
$sql .= ", ".$this->credit;
|
||||
$sql .= ", ".$this->montant;
|
||||
$sql .= ", ".(!empty($this->sens)?("'".$this->db->escape($this->sens)."'"):"NULL");
|
||||
$sql .= ", '".$this->db->escape($this->fk_user_author)."'";
|
||||
$sql .= ", '".$this->db->idate($now)."'";
|
||||
$sql .= ", '".$this->db->escape($this->code_journal)."'";
|
||||
$sql .= ", ".(!empty($this->journal_label)?("'".$this->db->escape($this->journal_label)."'"):"NULL");
|
||||
$sql .= ", ".$this->db->escape($this->piece_num);
|
||||
$sql .= ", ".(!isset($this->entity) ? $conf->entity : $this->entity);
|
||||
$sql .= ")";
|
||||
|
||||
|
||||
@ -1721,6 +1721,13 @@ class ActionComm extends CommonObject
|
||||
}
|
||||
$diff++;
|
||||
}
|
||||
|
||||
$parameters=array('filters' => $filters, 'eventarray' => &$eventarray);
|
||||
$reshook=$hookmanager->executeHooks('addMoreEventsExport', $parameters); // Note that $action and $object may have been modified by hook
|
||||
if ($reshook > 0)
|
||||
{
|
||||
$eventarray = $hookmanager->resArray;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2010-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -162,7 +162,7 @@ class doc_generic_contract_odt extends ModelePDFContract
|
||||
$texte .= $langs->trans("NumberOfModelFilesFound").': <b>'.count($listoffiles).'</b>';
|
||||
}
|
||||
|
||||
// Add select to upload a new template file. TODO Copy this feature on other admin pages.
|
||||
// Add input to upload a new template file.
|
||||
$texte .= '<div>'.$langs->trans("UploadNewTemplate").' <input type="file" name="uploadfile">';
|
||||
$texte .= '<input type="hidden" value="CONTRACT_ADDON_PDF_ODT_PATH" name="keyforuploaddir">';
|
||||
$texte .= '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Upload")).'" name="upload">';
|
||||
|
||||
@ -79,3 +79,5 @@ InvoiceIsAlreadyValidated=Invoice is already validated
|
||||
NoLinesToBill=No lines to bill
|
||||
CustomReceipt=Custom Receipt
|
||||
ReceiptName=Receipt Name
|
||||
ProductSupplements=Product Supplements
|
||||
SupplementCategory=Supplement category
|
||||
|
||||
@ -75,6 +75,8 @@ if (GETPOST('action', 'alpha') == 'set')
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_ORDER_PRINTERS", GETPOST('TAKEPOS_ORDER_PRINTERS', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_ORDER_NOTES", GETPOST('TAKEPOS_ORDER_NOTES', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_PHONE_BASIC_LAYOUT", GETPOST('TAKEPOS_PHONE_BASIC_LAYOUT', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_SUPPLEMENTS", GETPOST('TAKEPOS_SUPPLEMENTS', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_SUPPLEMENTS_CATEGORY", GETPOST('TAKEPOS_SUPPLEMENTS_CATEGORY', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_AUTO_PRINT_TICKETS", GETPOST('TAKEPOS_AUTO_PRINT_TICKETS', 'int'), 'int', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_NUMPAD", GETPOST('TAKEPOS_NUMPAD', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
$res = dolibarr_set_const($db, "TAKEPOS_NUM_TERMINALS", GETPOST('TAKEPOS_NUM_TERMINALS', 'alpha'), 'chaine', 0, '', $conf->entity);
|
||||
@ -222,6 +224,22 @@ if ($conf->global->TAKEPOS_BAR_RESTAURANT)
|
||||
print '<td colspan="2">';
|
||||
print $form->selectyesno("TAKEPOS_PHONE_BASIC_LAYOUT", $conf->global->TAKEPOS_PHONE_BASIC_LAYOUT, 1);
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr class="oddeven value"><td>';
|
||||
print $langs->trans("ProductSupplements");
|
||||
print '<td colspan="2">';
|
||||
print $form->selectyesno("TAKEPOS_SUPPLEMENTS", $conf->global->TAKEPOS_SUPPLEMENTS, 1);
|
||||
print '</td></tr>';
|
||||
|
||||
if ($conf->global->TAKEPOS_SUPPLEMENTS)
|
||||
{
|
||||
print '<tr class="oddeven"><td>';
|
||||
print $langs->trans("SupplementCategory");
|
||||
print '<td colspan="2">';
|
||||
print $form->select_all_categories(Categorie::TYPE_PRODUCT, $conf->global->TAKEPOS_SUPPLEMENTS_CATEGORY, 'TAKEPOS_SUPPLEMENTS_CATEGORY', 64, 0, 0);
|
||||
print ajax_combobox('TAKEPOS_SUPPLEMENTS_CATEGORY');
|
||||
print "</td></tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
print '<tr class="oddeven"><td>';
|
||||
|
||||
@ -45,6 +45,7 @@ $id = GETPOST('id', 'int');
|
||||
|
||||
if ($action == 'getProducts') {
|
||||
$object = new Categorie($db);
|
||||
if ($category=="supplements") $category=$conf->global->TAKEPOS_SUPPLEMENTS_CATEGORY;
|
||||
$result = $object->fetch($category);
|
||||
if ($result > 0)
|
||||
{
|
||||
|
||||
@ -87,6 +87,7 @@ $placeid = 0; // $placeid is id of invoice
|
||||
|
||||
$number = GETPOST('number', 'alpha');
|
||||
$idline = GETPOST('idline', 'int');
|
||||
$selectedline = GETPOST('selectedline', 'int');
|
||||
$desc = GETPOST('desc', 'alpha');
|
||||
$pay = GETPOST('pay', 'alpha');
|
||||
$amountofpayment = price2num(GETPOST('amount', 'alpha'));
|
||||
@ -276,7 +277,23 @@ if ($action == "addline")
|
||||
$price_base_type = $prod->multiprices_base_type[$customer->price_level];
|
||||
}
|
||||
|
||||
$idoflineadded = $invoice->addline($prod->description, $price, 1, $tva_tx, $prod->localtax1_tx, $prod->localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, 0, null, 0, '', 0, 100, '', null, 0);
|
||||
if ($conf->global->TAKEPOS_SUPPLEMENTS)
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||
$cat = new Categorie($db);
|
||||
$categories = $cat->containing($idproduct, 'product');
|
||||
$found = (array_search($conf->global->TAKEPOS_SUPPLEMENTS_CATEGORY, array_column($categories, 'id')));
|
||||
if ($found !== false) // If this product is a supplement
|
||||
{
|
||||
$sql = "SELECT fk_parent_line FROM ".MAIN_DB_PREFIX."facturedet where rowid=$selectedline";
|
||||
$resql = $db->query($sql);
|
||||
$row = $db->fetch_array($resql);
|
||||
if ($row[0]==null) $parent_line=$selectedline;
|
||||
else $parent_line=$row[0]; //If the parent line is already a supplement, add the supplement to the main product
|
||||
}
|
||||
}
|
||||
|
||||
$idoflineadded = $invoice->addline($prod->description, $price, 1, $tva_tx, $prod->localtax1_tx, $prod->localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, $parent_line, null, 0, '', 0, 100, '', null, 0);
|
||||
$invoice->fetch($placeid);
|
||||
}
|
||||
|
||||
@ -689,6 +706,37 @@ if ($placeid > 0)
|
||||
$tmplines = array_reverse($invoice->lines);
|
||||
foreach ($tmplines as $line)
|
||||
{
|
||||
if ($line->fk_parent_line!=false)
|
||||
{
|
||||
$htmlsupplements[$line->fk_parent_line].='<tr class="drag drop oddeven posinvoiceline';
|
||||
if ($line->special_code == "4") $htmlsupplements[$line->fk_parent_line].=' order';
|
||||
$htmlsupplements[$line->fk_parent_line].= '" id="'.$line->id.'">';
|
||||
$htmlsupplements[$line->fk_parent_line].= '<td class="left">';
|
||||
$htmlsupplements[$line->fk_parent_line].= img_picto('', 'rightarrow');
|
||||
if ($line->product_label) $htmlsupplements[$line->fk_parent_line] .= $line->product_label;
|
||||
if ($line->product_label && $line->desc) $htmlsupplements[$line->fk_parent_line] .= '<br>';
|
||||
if ($line->product_label != $line->desc)
|
||||
{
|
||||
$firstline = dolGetFirstLineOfText($line->desc);
|
||||
if ($firstline != $line->desc)
|
||||
{
|
||||
$htmlsupplements[$line->fk_parent_line] .= $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc);
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlsupplements[$line->fk_parent_line] .= $line->desc;
|
||||
}
|
||||
}
|
||||
$htmlsupplements[$line->fk_parent_line] .= '</td>';
|
||||
if ($_SESSION["basiclayout"] != 1)
|
||||
{
|
||||
$htmlsupplements[$line->fk_parent_line] .= '<td class="right">'.vatrate($line->remise_percent, true).'</td>';
|
||||
$htmlsupplements[$line->fk_parent_line] .= '<td class="right">'.$line->qty.'</td>';
|
||||
$htmlsupplements[$line->fk_parent_line] .= '<td class="right">'.price($line->total_ttc).'</td>';
|
||||
}
|
||||
$htmlsupplements[$line->fk_parent_line] .= '</tr>'."\n";
|
||||
continue;
|
||||
}
|
||||
$htmlforlines = '';
|
||||
|
||||
$htmlforlines .= '<tr class="drag drop oddeven posinvoiceline';
|
||||
@ -726,6 +774,7 @@ if ($placeid > 0)
|
||||
$htmlforlines .= '<td class="right">'.price($line->total_ttc).'</td>';
|
||||
}
|
||||
$htmlforlines .= '</tr>'."\n";
|
||||
$htmlforlines .= $htmlsupplements[$line->id];
|
||||
|
||||
print $htmlforlines;
|
||||
}
|
||||
|
||||
@ -233,10 +233,14 @@ function LoadProducts(position, issubcat) {
|
||||
console.log("LoadProducts");
|
||||
var maxproduct = <?php echo ($MAXPRODUCT - 2); ?>;
|
||||
|
||||
$('#catimg'+position).animate({opacity: '0.5'}, 1);
|
||||
$('#catimg'+position).animate({opacity: '1'}, 100);
|
||||
if (issubcat==true) currentcat=$('#prodiv'+position).data('rowid');
|
||||
else currentcat=$('#catdiv'+position).data('rowid');
|
||||
if (position=="supplements") currentcat="supplements";
|
||||
else
|
||||
{
|
||||
$('#catimg'+position).animate({opacity: '0.5'}, 1);
|
||||
$('#catimg'+position).animate({opacity: '1'}, 100);
|
||||
if (issubcat==true) currentcat=$('#prodiv'+position).data('rowid');
|
||||
else currentcat=$('#catdiv'+position).data('rowid');
|
||||
}
|
||||
if (currentcat == undefined) return;
|
||||
pageproducts=0;
|
||||
ishow=0; //product to show counter
|
||||
@ -353,7 +357,7 @@ function ClickProduct(position) {
|
||||
console.log("Click on product at position "+position+" for idproduct "+idproduct);
|
||||
if (idproduct=="") return;
|
||||
// Call page invoice.php to generate the section with product lines
|
||||
$("#poslines").load("invoice.php?action=addline&place="+place+"&idproduct="+idproduct, function() {
|
||||
$("#poslines").load("invoice.php?action=addline&place="+place+"&idproduct="+idproduct+"&selectedline="+selectedline, function() {
|
||||
//$('#poslines').scrollTop($('#poslines')[0].scrollHeight);
|
||||
});
|
||||
}
|
||||
@ -723,6 +727,10 @@ if ($conf->global->TAKEPOS_BAR_RESTAURANT)
|
||||
{
|
||||
$menus[$r++]=array('title'=>'<span class="fa fa-receipt paddingrightonly"></span><div class="trunc">'.$langs->trans("OrderNotes").'</div>', 'action'=>'TakeposOrderNotes();');
|
||||
}
|
||||
if ($conf->global->TAKEPOS_SUPPLEMENTS)
|
||||
{
|
||||
$menus[$r++]=array('title'=>'<span class="fa fa-receipt paddingrightonly"></span><div class="trunc">'.$langs->trans("ProductSupplements").'</div>', 'action'=>'LoadProducts(\'supplements\');');
|
||||
}
|
||||
}
|
||||
|
||||
if ($conf->global->TAKEPOSCONNECTOR) {
|
||||
|
||||
@ -2,10 +2,12 @@
|
||||
# @copyright GPL License 2010 - Vikas Mahajan - http://vikasmahajan.wordpress.com
|
||||
# @copyright GPL License 2013 - Florian HEnry - florian.henry@open-concept.pro
|
||||
# @copyright GPL License 2017 - Laurent Destailleur - eldy@users.sourceforge.net
|
||||
# @copyright GPL License 2019 - Camille Lafitte - cam.lafit@azerttyu.net
|
||||
#
|
||||
# Convert an ODT into a PDF using "jodconverter" or "pyodconverter" or "unoconv" tool.
|
||||
# Convert an ODT into a PDF using "native" or "jodconverter" or "pyodconverter" or "unoconv" tool.
|
||||
# Dolibarr variable MAIN_ODT_AS_PDF must be defined
|
||||
# to value "unoconv" to call unoconv CLI tool after ODT generation.
|
||||
# to value "native" to call soffice native exporter feature
|
||||
# or value "unoconv" to call unoconv CLI tool after ODT generation.
|
||||
# or value "pyodconverter" to call DocumentConverter.py after ODT generation.
|
||||
# or value "jodconverter" to call jodconverter wrapper after ODT generation
|
||||
# or value "/pathto/jodconverter-cli-file.jar" to call jodconverter java tool without wrapper after ODT generation.
|
||||
@ -14,7 +16,7 @@
|
||||
|
||||
if [ "x$1" == "x" ]
|
||||
then
|
||||
echo "Usage: odt2pdf.sh fullfilename [unoconv|jodconverter|pyodconverter|pathtojodconverterjar]"
|
||||
echo "Usage: odt2pdf.sh fullfilename [native|unoconv|jodconverter|pyodconverter|pathtojodconverterjar]"
|
||||
echo "Example: odt2pdf.sh myfile unoconv"
|
||||
echo "Example: odt2pdf.sh myfile ~/jodconverter/jodconverter-cli-2.2.2.jar"
|
||||
exit
|
||||
@ -34,6 +36,12 @@ home_java="/tmp"
|
||||
if [ -f "$1.odt" ]
|
||||
then
|
||||
|
||||
if [ "x$2" == "xnative" ]
|
||||
then
|
||||
$soffice --headless -env:UserInstallation=file:///$home_java/ --convert-to pdf:writer_pdf_Export --outdir $(dirname $1) "$1.odt"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "x$2" == "xunoconv" ]
|
||||
then
|
||||
# See issue https://github.com/dagwieers/unoconv/issues/87
|
||||
|
||||
Loading…
Reference in New Issue
Block a user