Fix: add ht and ttc fields

This commit is contained in:
Regis Houssin 2012-08-18 19:05:59 +02:00
parent d72835bb93
commit b4e324a515
4 changed files with 83 additions and 34 deletions

View File

@ -680,6 +680,24 @@ else if ($action == "addline" && $user->rights->propale->creer)
$price_base_type = $prod->price_base_type;
}
// Update if prices fields are defined
if (GETPOST('dp_price_ht') || GETPOST('dp_price_ttc'))
{
$price_ht=price2num(GETPOST('dp_price_ht'), 'MU');
$price_ttc=price2num(GETPOST('dp_price_ttc'), 'MU');
if ($price_base_type == 'TTC' && $price_ttc != $pu_ttc)
{
$pu_ttc = $price_ttc;
$pu_ht = price2num($price_ttc / (1 + ($prod->tva_tx / 100)),'MU');
}
else if ($price_base_type != 'TTC' && $price_ht != $pu_ht)
{
$pu_ht = $price_ht;
$pu_ttc = price2num($price_ht * (1 + ($prod->tva_tx / 100)),'MU');
}
}
// On reevalue prix selon taux tva car taux tva transaction peut etre different
// de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur).
if ($tva_tx != $prod->tva_tx)
@ -714,19 +732,23 @@ else if ($action == "addline" && $user->rights->propale->creer)
$desc = $prod->description;
}
$desc.= ($desc && GETPOST('np_desc')) ? ((dol_textishtml($desc) || dol_textishtml(GETPOST('np_desc')))?"<br />\n":"\n") : "";
$desc.= GETPOST('np_desc');
$desc.= ($desc && GETPOST('dp_desc')) ? ((dol_textishtml($desc) || dol_textishtml(GETPOST('dp_desc')))?"<br />\n":"\n") : "";
$desc.= GETPOST('dp_desc');
$type = $prod->type;
$fournprice=(GETPOST('dp_fournprice')?GETPOST('dp_fournprice'):'');
$buyingprice=(GETPOST('dp_buying_price')?GETPOST('dp_buying_price'):'');
}
else
{
$pu_ht=GETPOST('np_price');
$tva_tx=str_replace('*','',GETPOST('np_tva_tx'));
$tva_npr=preg_match('/\*/',GETPOST('np_tva_tx'))?1:0;
$desc=GETPOST('dp_desc');
$desc=GETPOST('np_desc');
$type=GETPOST('type');
$localtax1_tx=get_localtax($tva_tx,1,$object->client);
$localtax2_tx=get_localtax($tva_tx,2,$object->client);
$fournprice=(GETPOST('np_fournprice')?GETPOST('np_fournprice'):'');
$buyingprice=(GETPOST('np_buying_price')?GETPOST('np_buying_price'):'');
}
$info_bits=0;
@ -757,8 +779,8 @@ else if ($action == "addline" && $user->rights->propale->creer)
-1,
0,
GETPOST('fk_parent_line'),
GETPOST('np_fournprice'),
GETPOST('np_buying_price')
$fournprice,
$buyingprice
);
if ($result > 0)
@ -781,11 +803,17 @@ else if ($action == "addline" && $user->rights->propale->creer)
unset($_POST['qty']);
unset($_POST['type']);
unset($_POST['np_price']);
unset($_POST['dp_desc']);
unset($_POST['np_tva_tx']);
unset($_POST['np_desc']);
unset($_POST['np_fournprice']);
unset($_POST['np_buying_price']);
unset($_POST['dp_desc']);
unset($_POST['dp_price']);
unset($_POST['dp_fournprice']);
unset($_POST['dp_buying_price']);
}
else
{
@ -914,8 +942,8 @@ else if ($action == 'remove_file' && $user->rights->propale->creer)
$upload_dir = $conf->propal->dir_output;
$file = $upload_dir . '/' . GETPOST('file');
$ret=dol_delete_file($file,0,0,0,$object);
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
}
}

View File

@ -1080,15 +1080,16 @@ class Form
* @param int $finished 2=all, 1=finished, 0=raw material
* @param string $selected_input_value Value of preselected input text (with ajax)
* @param int $hidelabel Hide label
* @param array $ajaxoptions Options for ajax_autocompleter
* @return void
*/
function select_produits($selected='',$htmlname='productid',$filtertype='',$limit=20,$price_level=0,$status=1,$finished=2,$selected_input_value='',$hidelabel=0)
function select_produits($selected='', $htmlname='productid', $filtertype='', $limit=20, $price_level=0, $status=1, $finished=2, $selected_input_value='', $hidelabel=0, $ajaxoptions=array())
{
global $langs,$conf;
$price_level = (! empty($price_level) ? $price_level : 0);
if ($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT))
{
if ($selected && empty($selected_input_value))
{
@ -1098,7 +1099,8 @@ class Form
$selected_input_value=$product->ref;
}
// mode=1 means customers products
print ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/product/ajax/products.php', 'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=1&status='.$status.'&finished='.$finished, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT);
$urloption='htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=1&status='.$status.'&finished='.$finished;
print ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/product/ajax/products.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 0, $ajaxoptions);
if (! $hidelabel) print $langs->trans("RefOrLabel").' : ';
print '<input type="text" size="20" name="search_'.$htmlname.'" id="search_'.$htmlname.'" value="'.$selected_input_value.'" />';
}
@ -1131,13 +1133,13 @@ class Form
$sql = "SELECT ";
$sql.= " p.rowid, p.label, p.ref, p.fk_product_type, p.price, p.price_ttc, p.price_base_type, p.duration, p.stock";
// Multilang : we add translation
if ($conf->global->MAIN_MULTILANGS)
if (! empty($conf->global->MAIN_MULTILANGS))
{
$sql.= ", pl.label as label_translated";
}
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
// Multilang : we add translation
if ($conf->global->MAIN_MULTILANGS)
if (! empty($conf->global->MAIN_MULTILANGS))
{
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang='". $langs->getDefaultLang() ."'";
}
@ -1162,13 +1164,13 @@ class Form
if (! empty($conf->global->PRODUCT_DONOTSEARCH_ANYWHERE)) // Can use index
{
$sql.=" AND (p.ref LIKE '".$filterkey."%' OR p.label LIKE '".$filterkey."%'";
if ($conf->global->MAIN_MULTILANGS) $sql.=" OR pl.label LIKE '".$filterkey."%'";
if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.label LIKE '".$filterkey."%'";
$sql.=")";
}
else
{
$sql.=" AND (p.ref LIKE '%".$filterkey."%' OR p.label LIKE '%".$filterkey."%'";
if ($conf->global->MAIN_MULTILANGS) $sql.=" OR pl.label LIKE '%".$filterkey."%'";
if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.label LIKE '%".$filterkey."%'";
$sql.=")";
}
}
@ -1194,6 +1196,9 @@ class Form
$outkey='';
$outval='';
$outref='';
$outprice_ht='';
$outprice_ttc='';
$outpricebasetype='';
$objp = $this->db->fetch_object($result);
@ -1206,7 +1211,7 @@ class Form
$opt = '<option value="'.$objp->rowid.'"';
$opt.= ($objp->rowid == $selected)?' selected="selected"':'';
if ($conf->stock->enabled && $objp->fk_product_type == 0 && isset($objp->stock))
if (! empty($conf->stock->enabled) && $objp->fk_product_type == 0 && isset($objp->stock))
{
if ($objp->stock > 0)
{
@ -1258,6 +1263,9 @@ class Form
$opt.= price($objp2->price_ttc,1).' '.$currencytext.' '.$langs->trans("TTC");
$outval.= price($objp2->price_ttc,1).' '.$currencytextnoent.' '.$langs->transnoentities("TTC");
}
$outprice_ht=price($objp2->price);
$outprice_ttc=price($objp2->price_ttc);
$outpricebasetype=$objp2->price_base_type;
}
}
else
@ -1279,9 +1287,12 @@ class Form
$opt.= price($objp->price_ttc,1).' '.$currencytext.' '.$langs->trans("TTC");
$outval.= price($objp->price_ttc,1).' '.$currencytextnoent.' '.$langs->transnoentities("TTC");
}
$outprice_ht=price($objp->price);
$outprice_ttc=price($objp->price_ttc);
$outpricebasetype=$objp->price_base_type;
}
if ($conf->stock->enabled && isset($objp->stock) && $objp->fk_product_type == 0)
if (! empty($conf->stock->enabled) && isset($objp->stock) && $objp->fk_product_type == 0)
{
$opt.= ' - '.$langs->trans("Stock").':'.$objp->stock;
$outval.=' - '.$langs->transnoentities("Stock").':'.$objp->stock;
@ -1309,7 +1320,7 @@ class Form
// "key" value of json key array is used by jQuery automatically as selected value
// "label" value of json key array is used by jQuery automatically as text for combo box
$outselect.=$opt;
array_push($outjson,array('key'=>$outkey,'value'=>$outref,'label'=>$outval));
array_push($outjson, array('key'=>$outkey, 'value'=>$outref, 'label'=>$outval, 'price_ht'=>$outprice_ht, 'price_ttc'=>$outprice_ttc, 'pricebasetype'=>$outpricebasetype));
$i++;
}
@ -1343,7 +1354,7 @@ class Form
global $langs,$conf;
global $price_level, $status, $finished;
if ($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT))
{
// mode=2 means suppliers products
$urloption=($socid > 0?'socid='.$socid.'&':'').'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=2&status='.$status.'&finished='.$finished;
@ -2055,7 +2066,7 @@ class Form
print '<select id="select'.$htmlname.'" class="flat selectbankaccount" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>';
if ($useempty == 1 || ($useempty == 2 && $num > 1))
{
print '<option value="'.$obj->rowid.'">&nbsp;</option>';
print '<option value="-1">&nbsp;</option>';
}
while ($i < $num)

View File

@ -23,7 +23,7 @@
* $dateSelector
* $this (invoice, order, ...)
* $line defined
*/
*/
?>
<!-- BEGIN PHP TEMPLATE freeproductline_create.tpl.php -->
@ -35,7 +35,7 @@
<td align="right"><?php echo $langs->trans('ReductionShort'); ?></td>
<?php
$colspan = 4;
if (! empty($conf->margin->enabled)) {
if (! empty($conf->margin->enabled)) {
?>
<td align="right"><?php echo $langs->trans('BuyingPrice'); ?></td>
<?php
@ -69,7 +69,7 @@ if (! empty($conf->margin->enabled)) {
require_once(DOL_DOCUMENT_ROOT."/core/class/doleditor.class.php");
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor=new DolEditor('dp_desc',$_POST["dp_desc"],'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70);
$doleditor=new DolEditor('np_desc',$_POST["np_desc"],'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70);
$doleditor->Create();
?>
</td>
@ -85,7 +85,7 @@ if (! empty($conf->margin->enabled)) {
<td align="right" nowrap><input type="text" size="1" value="<?php echo $buyer->remise_client; ?>" name="remise_percent">%</td>
<?php
$colspan = 4;
if (! empty($conf->margin->enabled)) {
if (! empty($conf->margin->enabled)) {
?>
<td align="right"><input type="text" size="5" name="np_buying_price" value="<?php echo (isset($_POST["np_buying_price"])?$_POST["np_buying_price"]:''); ?>"></td>
<?php
@ -99,12 +99,12 @@ if (! empty($conf->margin->enabled)) {
</tr>
<?php if ($conf->service->enabled && $dateSelector) {
<?php if ($conf->service->enabled && $dateSelector) {
if(! empty($conf->global->MAIN_VIEW_LINE_NUMBER))
$colspan = 10;
else
$colspan = 9;
if (! empty($conf->margin->enabled)) {
if (! empty($conf->margin->enabled)) {
if($conf->global->DISPLAY_MARGIN_RATES)
$colspan++;
if($conf->global->DISPLAY_MARK_RATES)

View File

@ -29,7 +29,7 @@
<!-- BEGIN PHP TEMPLATE predefinedproductline_create.tpl.php -->
<tr class="liste_titre nodrag nodrop">
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="4"' : ' colspan="3"'); ?>>
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="3"' : ' colspan="2"'); ?>>
<?php
echo $langs->trans("AddNewLine").' - ';
if ($conf->service->enabled)
@ -38,6 +38,8 @@
echo $langs->trans('RecordedProducts');
?>
</td>
<td align="right"><?php echo $langs->trans('PriceUHT'); ?></td>
<td align="right"><?php echo $langs->trans('PriceUTTC'); ?></td>
<td align="right"><?php echo $langs->trans('Qty'); ?></td>
<td align="right"><?php echo $langs->trans('ReductionShort'); ?></td>
<?php
@ -63,16 +65,22 @@ if (! empty($conf->margin->enabled)) {
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#idprod').change(function() {
jQuery('#np_desc').focus();
jQuery('#dp_desc').focus();
});
});
</script>
<tr <?php echo $bcnd[$var]; ?>>
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="4"' : ' colspan="3"'); ?>>
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="3"' : ' colspan="2"'); ?>>
<?php
$form->select_produits('','idprod','',$conf->product->limit_size,$buyer->price_level);
$ajaxoptions=array(
'update' => array(
'dp_price_ht' => 'price_ht',
'dp_price_ttc' => 'price_ttc'
)
);
$form->select_produits('', 'idprod', '', $conf->product->limit_size, $buyer->price_level, 1, 2, '', 0, $ajaxoptions);
if (is_object($hookmanager))
{
@ -84,19 +92,21 @@ jQuery(document).ready(function() {
require_once(DOL_DOCUMENT_ROOT."/core/class/doleditor.class.php");
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor=new DolEditor('np_desc',$_POST["np_desc"],'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70);
$doleditor=new DolEditor('dp_desc',$_POST["dp_desc"],'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70);
$doleditor->Create();
?>
</td>
<td align="right"><input type="text" size="6" id="dp_price_ht" name="dp_price_ht" value="<?php echo (isset($_POST["dp_price_ht"])?$_POST["dp_price_ht"]:''); ?>"></td>
<td align="right"><input type="text" size="6" id="dp_price_ttc" name="dp_price_ttc" value="<?php echo (isset($_POST["dp_price_ttc"])?$_POST["dp_price_ttc"]:''); ?>"></td>
<td align="right"><input type="text" size="2" name="qty" value="1"></td>
<td align="right" nowrap><input type="text" size="1" name="remise_percent" value="<?php echo $buyer->remise_client; ?>">%</td>
<td align="right" nowrap="nowrap"><input type="text" size="1" name="remise_percent" value="<?php echo $buyer->remise_client; ?>">%</td>
<?php
$colspan = 4;
if (! empty($conf->margin->enabled)) {
?>
<td align="right">
<select id="np_fournprice" name="np_fournprice" style="display: none;"></select>
<input type="text" size="5" id="np_buying_price" name="np_buying_price" value="<?php echo (isset($_POST["np_buying_price"])?$_POST["np_buying_price"]:''); ?>">
<select id="dp_fournprice" name="dp_fournprice" style="display: none;"></select>
<input type="text" size="5" id="dp_buying_price" name="dp_buying_price" value="<?php echo (isset($_POST["dp_buying_price"])?$_POST["dp_buying_price"]:''); ?>">
</td>
<?php
if($conf->global->DISPLAY_MARGIN_RATES)