2014-05-05 14:30:08 +02:00
< ? php
/* Copyright ( C ) 2010 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
2014-05-05 17:59:43 +02:00
* Copyright ( C ) 2010 - 2014 Laurent Destailleur < eldy @ users . sourceforge . net >
2014-05-05 14:30:08 +02:00
* Copyright ( C ) 2012 - 2013 Christophe Battarel < christophe . battarel @ altairis . fr >
2014-11-14 16:43:49 +01:00
* Copyright ( C ) 2012 Cédric Salvador < csalvador @ gpcsolutions . fr >
2015-01-27 12:53:02 +01:00
* Copyright ( C ) 2014 Florian Henry < florian . henry @ open - concept . pro >
2014-11-14 16:43:49 +01:00
* Copyright ( C ) 2014 Raphaël Doursenaud < rdoursenaud @ gpcsolutions . fr >
2014-05-05 14:30:08 +02:00
*
* 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
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
* Need to have following variables defined :
2014-05-06 18:31:39 +02:00
* $object ( invoice , order , ... )
2014-05-05 14:30:08 +02:00
* $conf
* $langs
* $dateSelector
2014-05-05 17:59:43 +02:00
* $forceall ( 0 by default , 1 for supplier invoices / orders )
* $senderissupplier ( 0 by default , 1 for supplier invoices / orders )
2014-05-06 18:31:39 +02:00
* $inputalsopricewithtax ( 0 by default , 1 to also show column with unit price including tax )
2014-05-05 14:30:08 +02:00
*/
2014-05-05 17:59:43 +02:00
2014-05-05 14:30:08 +02:00
$usemargins = 0 ;
2015-03-06 18:51:55 +01:00
if ( ! empty ( $conf -> margin -> enabled ) && ! empty ( $object -> element ) && in_array ( $object -> element , array ( 'facture' , 'propal' , 'askpricesupplier' , 'commande' ))) $usemargins = 1 ;
2014-05-06 18:31:39 +02:00
2014-07-04 14:48:27 +02:00
global $forceall , $senderissupplier , $inputalsopricewithtax ;
2014-05-06 18:31:39 +02:00
if ( empty ( $dateSelector )) $dateSelector = 0 ;
2014-05-05 17:59:43 +02:00
if ( empty ( $forceall )) $forceall = 0 ;
if ( empty ( $senderissupplier )) $senderissupplier = 0 ;
2014-05-06 18:31:39 +02:00
if ( empty ( $inputalsopricewithtax )) $inputalsopricewithtax = 0 ;
// Define colspan for button Add
$colspan = 3 ; // Col total ht + col edit + col delete
2015-03-06 18:51:55 +01:00
if ( in_array ( $object -> element , array ( 'propal' , 'askpricesupplier' , 'facture' , 'invoice' , 'commande' , 'order' , 'order_supplier' , 'invoice_supplier' ))) $colspan ++ ; // With this, there is a column move button
//print $object->element;
2014-05-05 14:30:08 +02:00
?>
<!-- BEGIN PHP TEMPLATE objectline_create . tpl . php -->
< tr class = " liste_titre nodrag nodrop " >
< td < ? php echo ( ! empty ( $conf -> global -> MAIN_VIEW_LINE_NUMBER ) ? ' colspan="2"' : '' ); ?> >
< div id = " add " ></ div >< span class = " hideonsmartphone " >< ? php echo $langs -> trans ( 'AddNewLine' ); ?> </span><?php // echo $langs->trans("FreeZone"); ?>
</ td >
2015-02-02 17:50:33 +01:00
< ? php if ( $object -> element == 'askpricesupplier' ) { ?>
< td align = " right " >< span id = " title_fourn_ref " >< ? php echo $langs -> trans ( 'AskPriceSupplierRefFourn' ); ?> </span></td>
< ? php } ?>
2014-11-28 02:05:40 +01:00
< td align = " right " >< span id = " title_vat " >< ? php echo $langs -> trans ( 'VAT' ); ?> </span></td>
< td align = " right " >< span id = " title_up_ht " >< ? php echo $langs -> trans ( 'PriceUHT' ); ?> </span></td>
2014-05-05 17:59:43 +02:00
< ? php if ( ! empty ( $inputalsopricewithtax )) { ?>
2014-11-28 02:05:40 +01:00
< td align = " right " >< span id = " title_up_ttc " >< ? php echo $langs -> trans ( 'PriceUTTC' ); ?> </span></td>
2014-05-05 17:59:43 +02:00
< ? php } ?>
2014-11-28 02:05:40 +01:00
< td align = " right " >< ? php echo $langs -> trans ( 'Qty' ); ?> </td>
2015-02-26 14:15:33 +01:00
< ? php
if ( $conf -> global -> PRODUCT_USE_UNITS )
{
print '<td align="left">' ;
print '<span id="title_units">' ;
print $langs -> trans ( 'Unit' );
print '</span></td>' ;
}
?>
2014-11-28 02:05:40 +01:00
< td align = " right " >< ? php echo $langs -> trans ( 'ReductionShort' ); ?> </td>
2014-05-05 14:30:08 +02:00
< ? php
2014-11-14 16:43:49 +01:00
if ( $this -> situation_cycle_ref ) {
print '<td align="right">' . $langs -> trans ( 'Progress' ) . '</td>' ;
}
2014-05-05 14:30:08 +02:00
if ( ! empty ( $usemargins ))
{
?>
2014-11-05 17:03:53 +01:00
< td align = " right " class = " margininfos " >
2014-05-05 14:30:08 +02:00
< ? php
if ( $conf -> global -> MARGIN_TYPE == " 1 " )
echo $langs -> trans ( 'BuyingPrice' );
else
echo $langs -> trans ( 'CostPrice' );
?>
</ td >
< ? php
2014-11-05 17:03:53 +01:00
if ( $user -> rights -> margins -> creer && ! empty ( $conf -> global -> DISPLAY_MARGIN_RATES )) echo '<td align="right" class="margininfos"><span class="np_marginRate">' . $langs -> trans ( 'MarginRate' ) . '</span></td>' ;
if ( $user -> rights -> margins -> creer && ! empty ( $conf -> global -> DISPLAY_MARK_RATES )) echo '<td align="right" class="margininfos"><span class="np_markRate">' . $langs -> trans ( 'MarkRate' ) . '</span></td>' ;
2014-05-05 14:30:08 +02:00
}
?>
< td colspan = " <?php echo $colspan ; ?> " >& nbsp ; </ td >
</ tr >
< tr < ? php echo $bcnd [ $var ]; ?> >
< ? php
if ( ! empty ( $conf -> global -> MAIN_VIEW_LINE_NUMBER )) {
$coldisplay = 2 ; }
else {
$coldisplay = 0 ; }
?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " < ? php echo ( ! empty ( $conf -> global -> MAIN_VIEW_LINE_NUMBER ) ? ' colspan="2"' : '' ); ?> >
2014-05-05 14:30:08 +02:00
< ? php
2014-05-05 17:59:43 +02:00
2014-07-19 22:05:35 +02:00
$forceall = 1 ; // We always force all type for free lines (module product or service means we use predefined product or service)
if ( $object -> element == 'contrat' )
{
if ( empty ( $conf -> product -> enabled ) && empty ( $conf -> service -> enabled ) && empty ( $conf -> global -> CONTRACT_SUPPORT_PRODUCTS )) $forceall =- 1 ; // With contract, by default, no choice at all, except if CONTRACT_SUPPORT_PRODUCTS is set
else $forceall = 0 ;
}
2014-05-05 17:59:43 +02:00
// Free line
2014-05-05 14:30:08 +02:00
echo '<span>' ;
2014-05-05 17:59:43 +02:00
// Show radio free line
2014-07-19 22:05:35 +02:00
if ( $forceall >= 0 && ( ! empty ( $conf -> product -> enabled ) || ! empty ( $conf -> service -> enabled )))
2014-05-06 18:31:39 +02:00
{
2014-11-28 02:05:40 +01:00
echo '<label for="prod_entry_mode_free">' ;
2014-05-06 18:31:39 +02:00
echo '<input type="radio" name="prod_entry_mode" id="prod_entry_mode_free" value="free"' ;
//echo (GETPOST('prod_entry_mode')=='free' ? ' checked="true"' : ((empty($forceall) && (empty($conf->product->enabled) || empty($conf->service->enabled)))?' checked="true"':'') );
echo ( GETPOST ( 'prod_entry_mode' ) == 'free' ? ' checked="true"' : '' );
echo '> ' ;
2014-11-28 02:05:40 +01:00
// Show type selector
2014-05-06 18:31:39 +02:00
echo $langs -> trans ( " FreeLineOfType " );
2014-11-28 02:05:40 +01:00
echo '</label>' ;
2014-12-04 15:29:45 +01:00
echo ' ' ;
2014-11-28 02:05:40 +01:00
}
2014-12-04 15:29:45 +01:00
else
2014-11-28 02:05:40 +01:00
{
echo '<input type="hidden" id="prod_entry_mode_free" name="prod_entry_mode" value="free">' ;
// Show type selector
if ( $forceall >= 0 )
{
echo $langs -> trans ( " FreeLineOfType " );
echo ' ' ;
}
2014-07-19 22:05:35 +02:00
}
echo $form -> select_type_of_lines ( isset ( $_POST [ " type " ]) ? $_POST [ " type " ] :- 1 , 'type' , 1 , 1 , $forceall );
2014-05-05 14:30:08 +02:00
echo '</span>' ;
2014-05-05 17:59:43 +02:00
// Predefined product/service
2014-05-05 14:30:08 +02:00
if ( ! empty ( $conf -> product -> enabled ) || ! empty ( $conf -> service -> enabled ))
{
2014-07-19 22:05:35 +02:00
if ( $forceall >= 0 ) echo '<br>' ;
echo '<span>' ;
2014-07-10 17:36:39 +02:00
echo '<label for="prod_entry_mode_predef">' ;
2014-11-28 02:05:40 +01:00
echo '<input type="radio" name="prod_entry_mode" id="prod_entry_mode_predef" value="predef"' . ( GETPOST ( 'prod_entry_mode' ) == 'predef' ? ' checked="true"' : '' ) . '> ' ;
2014-05-05 17:59:43 +02:00
if ( empty ( $senderissupplier ))
{
2014-05-05 18:30:07 +02:00
if ( ! empty ( $conf -> product -> enabled ) && empty ( $conf -> service -> enabled )) echo $langs -> trans ( 'PredefinedProductsToSell' );
else if ( empty ( $conf -> product -> enabled ) && ! empty ( $conf -> service -> enabled )) echo $langs -> trans ( 'PredefinedServicesToSell' );
else echo $langs -> trans ( 'PredefinedProductsAndServicesToSell' );
2014-05-05 17:59:43 +02:00
}
else
{
if ( ! empty ( $conf -> product -> enabled ) && empty ( $conf -> service -> enabled )) echo $langs -> trans ( 'PredefinedProductsToPurchase' );
else if ( empty ( $conf -> product -> enabled ) && ! empty ( $conf -> service -> enabled )) echo $langs -> trans ( 'PredefinedServicesToPurchase' );
else echo $langs -> trans ( 'PredefinedProductsAndServicesToPurchase' );
}
2014-07-10 17:36:39 +02:00
echo '</label>' ;
2014-05-05 14:30:08 +02:00
echo ' ' ;
$filtertype = '' ;
if ( ! empty ( $object -> element ) && $object -> element == 'contrat' && empty ( $conf -> global -> CONTRACT_SUPPORT_PRODUCTS )) $filtertype = '1' ;
2014-05-05 17:59:43 +02:00
if ( empty ( $senderissupplier ))
{
2015-03-06 14:36:22 +01:00
$form -> select_produits ( GETPOST ( 'idprod' ), 'idprod' , $filtertype , $conf -> product -> limit_size , $buyer -> price_level , 1 , 2 , '' , 1 , array (), $buyer -> id );
2014-05-05 17:59:43 +02:00
}
else
{
$ajaxoptions = array (
2015-03-06 14:36:22 +01:00
'update' => array ( 'qty' => 'qty' , 'remise_percent' => 'discount' ), // html id tags that will be edited with which ajax json response key
2014-05-05 17:59:43 +02:00
'option_disabled' => 'addPredefinedProductButton' , // html id to disable once select is done
'warning' => $langs -> trans ( " NoPriceDefinedForThisSupplier " ) // translation of an error saved into var 'error'
);
2014-10-25 19:20:02 +02:00
$form -> select_produits_fournisseurs ( $object -> socid , GETPOST ( 'idprodfournprice' ), 'idprodfournprice' , '' , '' , $ajaxoptions , 1 );
2014-05-05 17:59:43 +02:00
}
2014-05-05 14:30:08 +02:00
echo '</span>' ;
}
2014-05-05 17:59:43 +02:00
if ( is_object ( $hookmanager ) && empty ( $senderissupplier ))
2014-05-05 14:30:08 +02:00
{
$parameters = array ( 'fk_parent_line' => GETPOST ( 'fk_parent_line' , 'int' ));
$reshook = $hookmanager -> executeHooks ( 'formCreateProductOptions' , $parameters , $object , $action );
}
2014-05-05 17:59:43 +02:00
if ( is_object ( $hookmanager ) && ! empty ( $senderissupplier ))
{
$parameters = array ( 'htmlname' => 'addproduct' );
$reshook = $hookmanager -> executeHooks ( 'formCreateProductSupplierOptions' , $parameters , $object , $action );
}
2014-05-05 14:30:08 +02:00
2014-05-05 17:59:43 +02:00
if ( ! empty ( $conf -> product -> enabled ) || ! empty ( $conf -> service -> enabled )) echo '<br>' ;
2014-05-05 14:30:08 +02:00
// Editor wysiwyg
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
$nbrows = ROWS_2 ;
$enabled = ( ! empty ( $conf -> global -> FCKEDITOR_ENABLE_DETAILS ) ? $conf -> global -> FCKEDITOR_ENABLE_DETAILS : 0 );
if ( ! empty ( $conf -> global -> MAIN_INPUT_DESC_HEIGHT )) $nbrows = $conf -> global -> MAIN_INPUT_DESC_HEIGHT ;
2015-03-13 15:20:08 +01:00
$toolbarname = 'dolibarr_details' ;
if ( ! empty ( $conf -> global -> FCKEDITOR_ENABLE_DETAILS_FULL )) $toolbarname = 'dolibarr_notes' ;
$doleditor = new DolEditor ( 'dp_desc' , GETPOST ( 'dp_desc' ), '' , 100 , $toolbarname , '' , false , true , $enabled , $nbrows , '98%' );
2014-05-05 14:30:08 +02:00
$doleditor -> Create ();
?>
</ td >
2015-04-27 02:33:44 +02:00
2015-02-02 17:50:33 +01:00
< ? php if ( $object -> element == 'askpricesupplier' ) { ?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " >< input id = " fourn_ref " name = " fourn_ref " class = " flat " value = " " size = " 12 " ></ td >
2015-02-02 17:50:33 +01:00
< ? php } ?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " >< ? php
2015-03-06 14:36:22 +01:00
if ( $seller -> tva_assuj == " 0 " ) echo '<input type="hidden" name="tva_tx" id="tva_tx" value="0">0' ;
else echo $form -> load_tva ( 'tva_tx' , ( isset ( $_POST [ " tva_tx " ]) ? $_POST [ " tva_tx " ] :- 1 ), $seller , $buyer );
2014-05-05 14:30:08 +02:00
?>
</ td >
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " >
2014-05-05 14:30:08 +02:00
< input type = " text " size = " 5 " name = " price_ht " id = " price_ht " class = " flat " value = " <?php echo (isset( $_POST["price_ht"] )? $_POST["price_ht"] :''); ?> " >
</ td >
2014-05-05 17:59:43 +02:00
< ? php if ( ! empty ( $inputalsopricewithtax )) { ?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " >
2014-05-05 17:59:43 +02:00
< input type = " text " size = " 5 " name = " price_ttc " id = " price_ttc " class = " flat " value = " <?php echo (isset( $_POST["price_ttc"] )? $_POST["price_ttc"] :''); ?> " >
</ td >
< ? php } ?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " >< input type = " text " size = " 2 " name = " qty " id = " qty " class = " flat " value = " <?php echo (isset( $_POST["qty"] )? $_POST["qty"] :1); ?> " >
2014-05-05 14:30:08 +02:00
</ td >
2015-02-26 14:15:33 +01:00
< ? php
if ( $conf -> global -> PRODUCT_USE_UNITS )
{
2015-04-27 02:33:44 +02:00
print '<td class="nobottom" align="left">' ;
2015-04-21 15:49:58 +02:00
print $form -> selectUnits ( $line -> fk_unit , " units " );
2015-02-26 14:15:33 +01:00
print '</td>' ;
}
?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom nowrap " align = " right " >< input type = " text " size = " 1 " name = " remise_percent " id = " remise_percent " class = " flat " value = " <?php echo (isset( $_POST["remise_percent"] )? $_POST["remise_percent"] : $buyer->remise_percent ); ?> " >< span class = " hideonsmartphone " >%</ span ></ td >
2014-05-05 14:30:08 +02:00
< ? php
2014-11-14 16:43:49 +01:00
if ( $this -> situation_cycle_ref ) {
$coldisplay ++ ;
2015-04-27 02:33:44 +02:00
print '<td class="nobottom nowrap" align="right"><input type="text" size="1" value="0" name="progress">%</td>' ;
2014-11-14 16:43:49 +01:00
}
2014-05-05 14:30:08 +02:00
if ( ! empty ( $usemargins ))
{
?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " right " class = " margininfos " >
2014-05-05 14:30:08 +02:00
<!-- For predef product -->
< ? php if ( ! empty ( $conf -> product -> enabled ) || ! empty ( $conf -> service -> enabled )) { ?>
< select id = " fournprice_predef " name = " fournprice_predef " class = " flat " style = " display: none; " ></ select >
< ? php } ?>
<!-- For free product -->
< input type = " text " size = " 5 " id = " buying_price " name = " buying_price " class = " flat " value = " <?php echo (isset( $_POST["buying_price"] )? $_POST["buying_price"] :''); ?> " >
</ td >
< ? php
2014-05-06 18:31:39 +02:00
$coldisplay ++ ;
2014-05-05 14:30:08 +02:00
if ( $user -> rights -> margins -> creer )
{
2014-05-06 18:31:39 +02:00
if ( ! empty ( $conf -> global -> DISPLAY_MARGIN_RATES ))
{
2015-04-27 02:33:44 +02:00
echo '<td align="right" class="nobottom nowrap margininfos"><input type="text" size="2" id="np_marginRate" name="np_marginRate" value="' . ( isset ( $_POST [ " np_marginRate " ]) ? $_POST [ " np_marginRate " ] : '' ) . '"><span class="np_marginRate hideonsmartphone">%</span></td>' ;
2014-05-05 14:30:08 +02:00
$coldisplay ++ ;
}
2014-05-06 18:31:39 +02:00
if ( ! empty ( $conf -> global -> DISPLAY_MARK_RATES ))
{
2015-04-27 02:33:44 +02:00
echo '<td align="right" class="nobottom nowrap margininfos"><input type="text" size="2" id="np_markRate" name="np_markRate" value="' . ( isset ( $_POST [ " np_markRate " ]) ? $_POST [ " np_markRate " ] : '' ) . '"><span class="np_markRate hideonsmartphone">%</span></td>' ;
2014-05-05 14:30:08 +02:00
$coldisplay ++ ;
}
}
else
{
2014-05-06 18:31:39 +02:00
if ( ! empty ( $conf -> global -> DISPLAY_MARGIN_RATES )) $coldisplay ++ ;
if ( ! empty ( $conf -> global -> DISPLAY_MARK_RATES )) $coldisplay ++ ;
2014-05-05 14:30:08 +02:00
}
}
?>
2015-04-27 02:33:44 +02:00
< td class = " nobottom " align = " center " valign = " middle " colspan = " <?php echo $colspan ; ?> " >
2014-05-05 14:30:08 +02:00
< input type = " submit " class = " button " value = " <?php echo $langs->trans ('Add'); ?> " name = " addline " id = " addline " >
</ td >
< ? php
2014-07-20 02:18:21 +02:00
// Lines for extrafield
2015-02-27 18:05:12 +01:00
if ( ! empty ( $extrafieldsline ))
{
2014-05-05 14:30:08 +02:00
if ( $this -> table_element_line == 'commandedet' ) {
$newline = new OrderLine ( $this -> db );
}
elseif ( $this -> table_element_line == 'propaldet' ) {
$newline = new PropaleLigne ( $this -> db );
}
2015-01-29 12:13:06 +01:00
elseif ( $this -> table_element_line == 'askpricesupplierdet' ) {
2015-03-17 11:26:23 +01:00
$newline = new AskPriceSupplierLine ( $this -> db );
2015-01-29 12:13:06 +01:00
}
2014-05-05 14:30:08 +02:00
elseif ( $this -> table_element_line == 'facturedet' ) {
$newline = new FactureLigne ( $this -> db );
}
2015-01-27 12:53:02 +01:00
elseif ( $this -> table_element_line == 'contratdet' ) {
$newline = new ContratLigne ( $this -> db );
}
2015-02-27 18:05:12 +01:00
elseif ( $this -> table_element_line == 'commande_fournisseurdet' ) {
$newline = new CommandeFournisseurLigne ( $this -> db );
}
elseif ( $this -> table_element_line == 'facture_fourn_det' ) {
2015-03-23 01:39:12 +01:00
$newline = new SupplierInvoiceLine ( $this -> db );
2015-02-27 18:05:12 +01:00
}
2014-05-05 14:30:08 +02:00
if ( is_object ( $newline )) {
print $newline -> showOptionals ( $extrafieldsline , 'edit' , array ( 'style' => $bcnd [ $var ], 'colspan' => $coldisplay + 8 ));
}
}
2014-07-20 02:18:21 +02:00
?>
2014-05-05 14:30:08 +02:00
</ tr >
< ? php
2015-03-06 14:36:22 +01:00
if (( ! empty ( $conf -> service -> enabled ) || ( $object -> element == 'contrat' )) && $dateSelector && GETPOST ( 'type' ) != '0' ) // We show date field if required
2014-05-05 14:30:08 +02:00
{
if ( ! empty ( $conf -> global -> MAIN_VIEW_LINE_NUMBER )) $colspan = 10 ;
else $colspan = 9 ;
2014-11-14 16:43:49 +01:00
if ( $this -> situation_cycle_ref ) $colspan ++ ;
2014-07-20 02:18:21 +02:00
if ( ! empty ( $inputalsopricewithtax )) $colspan ++ ; // We add 1 if col total ttc
2015-03-06 18:51:55 +01:00
if ( in_array ( $object -> element , array ( 'propal' , 'askpricesupplier' , 'facture' , 'invoice' , 'commande' , 'order' , 'order_supplier' , 'invoice_supplier' ))) $colspan ++ ; // With this, there is a column move button
2015-02-26 14:15:33 +01:00
if ( $conf -> global -> PRODUCT_USE_UNITS ) {
$colspan ++ ;
}
2014-05-05 14:30:08 +02:00
if ( ! empty ( $usemargins ))
{
$colspan ++ ; // For the buying price
if ( ! empty ( $conf -> global -> DISPLAY_MARGIN_RATES )) $colspan ++ ;
if ( ! empty ( $conf -> global -> DISPLAY_MARK_RATES )) $colspan ++ ;
}
2014-05-05 17:59:43 +02:00
?>
2014-05-05 14:30:08 +02:00
2014-05-05 17:59:43 +02:00
< tr id = " trlinefordates " < ? php echo $bcnd [ $var ]; ?> >
2014-05-05 14:30:08 +02:00
< td colspan = " <?php echo $colspan ; ?> " >
< ? php
2014-05-05 17:59:43 +02:00
$date_start = dol_mktime ( GETPOST ( 'date_starthour' ), GETPOST ( 'date_startmin' ), 0 , GETPOST ( 'date_startmonth' ), GETPOST ( 'date_startday' ), GETPOST ( 'date_startyear' ));
$date_end = dol_mktime ( GETPOST ( 'date_starthour' ), GETPOST ( 'date_startmin' ), 0 , GETPOST ( 'date_endmonth' ), GETPOST ( 'date_endday' ), GETPOST ( 'date_endyear' ));
2014-05-05 14:30:08 +02:00
if ( ! empty ( $object -> element ) && $object -> element == 'contrat' )
{
print $langs -> trans ( " DateStartPlanned " ) . ' ' ;
2014-05-05 17:59:43 +02:00
$form -> select_date ( $date_start , " date_start " , $usehm , $usehm , 1 , " addproduct " );
2014-05-05 14:30:08 +02:00
print ' ' . $langs -> trans ( " DateEndPlanned " ) . ' ' ;
2014-05-05 17:59:43 +02:00
$form -> select_date ( $date_end , " date_end " , $usehm , $usehm , 1 , " addproduct " );
2014-05-05 14:30:08 +02:00
}
else
{
echo $langs -> trans ( 'ServiceLimitedDuration' ) . ' ' . $langs -> trans ( 'From' ) . ' ' ;
2014-05-05 17:59:43 +02:00
echo $form -> select_date ( $date_start , 'date_start' , empty ( $conf -> global -> MAIN_USE_HOURMIN_IN_DATE_RANGE ) ? 0 : 1 , empty ( $conf -> global -> MAIN_USE_HOURMIN_IN_DATE_RANGE ) ? 0 : 1 , 1 , " addproduct " );
2014-05-05 14:30:08 +02:00
echo ' ' . $langs -> trans ( 'to' ) . ' ' ;
2014-05-05 17:59:43 +02:00
echo $form -> select_date ( $date_end , 'date_end' , empty ( $conf -> global -> MAIN_USE_HOURMIN_IN_DATE_RANGE ) ? 0 : 1 , empty ( $conf -> global -> MAIN_USE_HOURMIN_IN_DATE_RANGE ) ? 0 : 1 , 1 , " addproduct " );
2014-05-05 14:30:08 +02:00
}
?>
</ td >
2014-05-05 17:59:43 +02:00
</ tr >
2014-05-05 14:30:08 +02:00
< ? php
}
2014-05-05 17:59:43 +02:00
?>
2014-05-05 14:30:08 +02:00
2014-05-05 17:59:43 +02:00
< script type = " text/javascript " >
2014-05-05 14:30:08 +02:00
2014-05-05 17:59:43 +02:00
< ? php
2014-05-05 14:30:08 +02:00
if ( ! empty ( $usemargins ) && $user -> rights -> margins -> creer )
{
?>
/* Some js test when we click on button "Add" */
jQuery ( document ) . ready ( function () {
< ? php
if ( ! empty ( $conf -> global -> DISPLAY_MARGIN_RATES )) { ?>
$ ( '#addline' ) . click ( function ( e ) {
return checkFreeLine ( e , " np_marginRate " );
});
$ ( " input[name='np_marginRate']:first " ) . blur ( function ( e ) {
return checkFreeLine ( e , " np_marginRate " );
});
< ? php
}
if ( ! empty ( $conf -> global -> DISPLAY_MARK_RATES )) { ?>
$ ( '#addline' ) . click ( function ( e ) {
return checkFreeLine ( e , " np_markRate " );
});
$ ( " input[name='np_markRate']:first " ) . blur ( function ( e ) {
return checkFreeLine ( e , " np_markRate " );
});
< ? php
}
?>
});
/* TODO This does not work for number with thousand separator that is , */
function checkFreeLine ( e , npRate )
{
var buying_price = $ ( " input[name='buying_price']:first " );
var remise = $ ( " input[name='remise_percent']:first " );
var rate = $ ( " input[name=' " + npRate + " ']:first " );
if ( rate . val () == '' )
return true ;
2014-05-10 20:10:59 +02:00
2014-05-05 14:30:08 +02:00
if ( ! $ . isNumeric ( rate . val () . replace ( ',' , '.' )))
{
alert ( '<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>' );
e . stopPropagation ();
setTimeout ( function () { rate . focus () }, 50 );
return false ;
}
if ( npRate == " np_markRate " && rate . val () >= 100 )
{
alert ( '<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>' );
e . stopPropagation ();
setTimeout ( function () { rate . focus () }, 50 );
return false ;
}
var price = 0 ;
remisejs = price2numjs ( remise . val ());
2014-05-10 20:10:59 +02:00
if ( remisejs != 100 ) // If a discount not 100 or no discount
2014-05-05 14:30:08 +02:00
{
2014-05-10 20:10:59 +02:00
if ( remisejs == '' ) remisejs = 0 ;
2014-05-05 14:30:08 +02:00
bpjs = price2numjs ( buying_price . val ());
ratejs = price2numjs ( rate . val ());
2014-05-10 20:10:59 +02:00
if ( npRate == " np_marginRate " )
2014-05-05 14:30:08 +02:00
price = (( bpjs * ( 1 + ratejs / 100 )) / ( 1 - remisejs / 100 ));
2014-05-10 20:10:59 +02:00
else if ( npRate == " np_markRate " )
2014-05-05 14:30:08 +02:00
price = (( bpjs / ( 1 - ratejs / 100 )) / ( 1 - remisejs / 100 ));
}
$ ( " input[name='price_ht']:first " ) . val ( price ); // TODO Must use a function like php price to have here a formated value
return true ;
}
/* Function similar to price2num in PHP */
function price2numjs ( num )
{
2014-05-10 20:10:59 +02:00
if ( num == '' ) return '' ;
2014-05-05 14:30:08 +02:00
< ? php
$dec = ',' ; $thousand = ' ' ;
if ( $langs -> transnoentitiesnoconv ( " SeparatorDecimal " ) != " SeparatorDecimal " ) $dec = $langs -> transnoentitiesnoconv ( " SeparatorDecimal " );
if ( $langs -> transnoentitiesnoconv ( " SeparatorThousand " ) != " SeparatorThousand " ) $thousand = $langs -> transnoentitiesnoconv ( " SeparatorThousand " );
2014-05-12 12:53:10 +02:00
print " var dec=' " . $dec . " '; var thousand=' " . $thousand . " '; \n " ; // Set var in javascript
2014-05-05 14:30:08 +02:00
?>
var main_max_dec_shown = < ? php echo $conf -> global -> MAIN_MAX_DECIMALS_SHOWN ; ?> ;
var main_rounding_unit = < ? php echo $conf -> global -> MAIN_MAX_DECIMALS_UNIT ; ?> ;
var main_rounding_tot = < ? php echo $conf -> global -> MAIN_MAX_DECIMALS_TOT ; ?> ;
var amount = num . toString ();
// rounding for unit price
var rounding = main_rounding_unit ;
var pos = amount . indexOf ( dec );
var decpart = '' ;
if ( pos >= 0 ) decpart = amount . substr ( pos + 1 ) . replace ( '/0+$/i' , '' ); // Supprime les 0 de fin de partie decimale
var nbdec = decpart . length ;
if ( nbdec > rounding ) rounding = nbdec ;
// If rounding higher than max shown
if ( rounding > main_max_dec_shown ) rounding = main_max_dec_shown ;
if ( thousand != ',' && thousand != '.' ) amount = amount . replace ( ',' , '.' );
amount = amount . replace ( ' ' , '' ); // To avoid spaces
amount = amount . replace ( thousand , '' ); // Replace of thousand before replace of dec to avoid pb if thousand is .
amount = amount . replace ( dec , '.' );
return parseFloat ( amount ) . toFixed ( rounding );
}
< ? php
}
?>
/* JQuery for product free or predefined select */
jQuery ( document ) . ready ( function () {
$ ( " #prod_entry_mode_free " ) . on ( " click " , function () {
setforfree ();
});
$ ( " #select_type " ) . change ( function ()
{
setforfree ();
if ( jQuery ( '#select_type' ) . val () >= 0 ) jQuery ( '#dp_desc' ) . focus ();
2014-05-05 17:59:43 +02:00
if ( jQuery ( '#select_type' ) . val () == '0' ) jQuery ( '#trlinefordates' ) . hide ();
else jQuery ( '#trlinefordates' ) . show ();
2014-05-05 14:30:08 +02:00
});
$ ( " #prod_entry_mode_predef " ) . on ( " click " , function () {
setforpredef ();
2014-05-05 17:59:43 +02:00
jQuery ( '#trlinefordates' ) . show ();
2014-05-05 14:30:08 +02:00
});
2015-01-13 15:38:59 +01:00
/* Sur changemenr de produit, on recharge la liste des prix fournisseur */
2014-05-05 17:59:43 +02:00
$ ( " #idprod, #idprodfournprice " ) . change ( function ()
2014-05-05 14:30:08 +02:00
{
setforpredef ();
2014-05-05 17:59:43 +02:00
jQuery ( '#trlinefordates' ) . show ();
2014-05-05 14:30:08 +02:00
2015-01-13 15:38:59 +01:00
< ? php
if ( ! empty ( $usemargins ) && $user -> rights -> margins -> creer )
{
$langs -> load ( 'stocks' );
?>
2014-05-05 14:30:08 +02:00
/* Code for margin */
$ ( " #fournprice_predef options " ) . remove ();
$ ( " #fournprice_predef " ) . hide ();
$ ( " #buying_price " ) . val ( " " ) . show ();
2015-01-13 15:38:59 +01:00
/* Call post to load content of combo list fournprice_predef */
2014-05-05 14:30:08 +02:00
$ . post ( '<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php' , { 'idprod' : $ ( this ) . val () }, function ( data ) {
if ( data && data . length > 0 )
{
var options = '' ;
2015-01-13 15:38:59 +01:00
var defaultkey = '' ;
var defaultprice = '' ;
2014-05-05 14:30:08 +02:00
var i = 0 ;
$ ( data ) . each ( function () {
2015-01-13 15:38:59 +01:00
if ( this . id != 'pmpprice' )
{
i ++ ;
options += '<option value="' + this . id + '" price="' + this . price + '"' ;
if ( this . price > 0 && i == 1 ) { defaultkey = this . id ; defaultprice = this . price ; }
options += '>' + this . label + '</option>' ;
}
if ( this . id == 'pmpprice' )
{
2015-01-14 10:46:50 +01:00
var defaultbuyprice = < ? php echo ( isset ( $conf -> global -> MARGIN_PMP_AS_DEFAULT_BUY_PRICE ) ? int ( $conf -> global -> MARGIN_PMP_AS_DEFAULT_BUY_PRICE ) : 1 ); ?> ;
if ( this . price > 0 && 1 == defaultbuyprice ) { defaultkey = this . id ; defaultprice = this . price ; }
2015-01-13 15:38:59 +01:00
options += '<option value="' + this . id + '" price="' + this . price + '">' + this . label + '</option>' ;
}
2014-05-05 14:30:08 +02:00
});
2015-01-13 15:38:59 +01:00
options += '<option value="inputprice" price="' + defaultprice + '"><?php echo $langs->trans("InputPrice"); ?></option>' ;
/* alert(defaultkey+' '+defaultprice); */
2014-05-05 14:30:08 +02:00
$ ( " #fournprice_predef " ) . html ( options ) . show ();
2015-01-13 15:38:59 +01:00
$ ( " #fournprice_predef " ) . val ( defaultkey );
/* At loading, no product are yet selected, so we hide field of buying_price */
$ ( " #buying_price " ) . hide ();
/* Define default price at loading */
var defaultprice = $ ( " #fournprice_predef " ) . find ( 'option:selected' ) . attr ( " price " );
$ ( " #buying_price " ) . val ( defaultprice );
2014-05-05 14:30:08 +02:00
$ ( " #fournprice_predef " ) . change ( function () {
2015-01-13 15:38:59 +01:00
/* Hide field buying_price according to choice into list (if 'inputprice' or not) */
var linevalue = $ ( this ) . find ( 'option:selected' ) . val ();
var pricevalue = $ ( this ) . find ( 'option:selected' ) . attr ( " price " );
if ( linevalue != 'inputprice' && linevalue != 'pmpprice' ) {
$ ( " #buying_price " ) . val ( pricevalue ) . hide (); /* We set value then hide field */
}
if ( linevalue == 'inputprice' ) {
$ ( '#buying_price' ) . show ();
}
if ( linevalue == 'pmpprice' ) {
$ ( " #buying_price " ) . val ( pricevalue );
$ ( '#buying_price' ) . hide ();
}
});
2014-05-05 14:30:08 +02:00
}
},
'json' );
< ? php } ?>
2014-05-05 17:59:43 +02:00
/* To set focus */
if ( jQuery ( '#idprod' ) . val () > 0 ) jQuery ( '#dp_desc' ) . focus ();
if ( jQuery ( '#idprodfournprice' ) . val () > 0 ) jQuery ( '#dp_desc' ) . focus ();
2014-05-05 14:30:08 +02:00
});
2015-03-06 14:36:22 +01:00
< ? php if ( GETPOST ( 'prod_entry_mode' ) == 'predef' ) { // When we submit with a predef product and it fails we must start with predef ?>
setforpredef ();
< ? php } ?>
2014-05-05 14:30:08 +02:00
});
/* Function to set fields from choice */
function setforfree () {
jQuery ( " #search_idprod " ) . val ( '' );
jQuery ( " #idprod " ) . val ( '' );
2014-06-09 14:58:58 +02:00
jQuery ( " #idprodfournprice " ) . val ( '0' ); // Set cursor on not selected product
2014-05-05 17:59:43 +02:00
jQuery ( " #search_idprodfournprice " ) . val ( '' );
2014-05-05 14:30:08 +02:00
jQuery ( " #prod_entry_mode_free " ) . attr ( 'checked' , true );
jQuery ( " #prod_entry_mode_predef " ) . attr ( 'checked' , false );
jQuery ( " #price_ht " ) . show ();
2014-05-06 18:31:39 +02:00
jQuery ( " #price_ttc " ) . show (); // May no exists
2014-05-05 14:30:08 +02:00
jQuery ( " #tva_tx " ) . show ();
jQuery ( " #buying_price " ) . val ( '' ) . show ();
jQuery ( " #fournprice_predef " ) . hide ();
jQuery ( " #title_vat " ) . show ();
jQuery ( " #title_up_ht " ) . show ();
2014-05-05 17:59:43 +02:00
jQuery ( " #title_up_ttc " ) . show ();
2014-05-10 20:10:59 +02:00
jQuery ( " #np_marginRate " ) . show (); // May no exists
jQuery ( " #np_markRate " ) . show (); // May no exists
jQuery ( " .np_marginRate " ) . show (); // May no exists
jQuery ( " .np_markRate " ) . show (); // May no exists
2015-02-26 14:15:33 +01:00
jQuery ( " #units, #title_units " ) . show ();
2014-05-05 14:30:08 +02:00
}
function setforpredef () {
jQuery ( " #select_type " ) . val ( - 1 );
jQuery ( " #prod_entry_mode_free " ) . attr ( 'checked' , false );
jQuery ( " #prod_entry_mode_predef " ) . attr ( 'checked' , true );
jQuery ( " #price_ht " ) . hide ();
2015-03-06 18:51:55 +01:00
jQuery ( " #title_up_ht " ) . hide ();
2014-05-06 18:31:39 +02:00
jQuery ( " #price_ttc " ) . hide (); // May no exists
2014-05-05 14:30:08 +02:00
jQuery ( " #tva_tx " ) . hide ();
jQuery ( " #buying_price " ) . show ();
jQuery ( " #title_vat " ) . hide ();
2014-05-05 17:59:43 +02:00
jQuery ( " #title_up_ttc " ) . hide ();
2014-05-10 20:10:59 +02:00
jQuery ( " #np_marginRate " ) . hide (); // May no exists
jQuery ( " #np_markRate " ) . hide (); // May no exists
jQuery ( " .np_marginRate " ) . hide (); // May no exists
jQuery ( " .np_markRate " ) . hide (); // May no exists
2015-02-26 14:15:33 +01:00
jQuery ( " .np_markRate " ) . hide (); // May no exists
jQuery ( " #units, #title_units " ) . hide ();
2014-05-05 14:30:08 +02:00
}
</ script >
<!-- END PHP TEMPLATE objectline_create . tpl . php -->