2012-08-22 23:27:53 +02:00
< ? php
2008-06-20 20:30:04 +02:00
/* Copyright ( C ) 2001 - 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2012-09-03 09:45:26 +02:00
* Copyright ( C ) 2004 - 2012 Laurent Destailleur < eldy @ users . sourceforge . net >
2008-06-20 20:30:04 +02:00
* Copyright ( C ) 2008 Raphael Bertrand ( Resultic ) < raphael . bertrand @ resultic . fr >
2009-02-24 03:41:21 +01:00
*
2004-11-09 16:16:17 +01: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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2004-11-09 16:16:17 +01:00
* ( 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
2011-08-03 02:45:22 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2004-11-09 16:16:17 +01:00
*/
2005-07-10 04:05:09 +02:00
/**
2008-08-09 00:12:27 +02:00
* \file htdocs / comm / remx . php
2009-07-08 12:10:35 +02:00
* \ingroup societe
2009-02-24 03:41:21 +01:00
* \brief Page to edit absolute discounts for a customer
2008-08-09 00:12:27 +02:00
*/
2005-07-10 04:05:09 +02:00
2012-08-22 23:24:21 +02:00
require '../main.inc.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php' ;
2018-02-14 18:02:40 +01:00
require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/discount.class.php' ;
2004-11-09 16:16:17 +01:00
2018-05-26 19:03:41 +02:00
// Load translation files required by the page
$langs -> loadLangs ( array ( 'orders' , 'bills' , 'companies' ));
2004-11-09 16:16:17 +01:00
2016-06-30 16:42:49 +02:00
$id = GETPOST ( 'id' , 'int' );
2012-02-27 17:02:56 +01:00
$action = GETPOST ( 'action' , 'alpha' );
$backtopage = GETPOST ( 'backtopage' , 'alpha' );
2011-11-13 00:49:40 +01:00
2009-08-07 02:49:43 +02:00
// Security check
2015-10-13 13:06:32 +02:00
$socid = GETPOST ( 'id' , 'int' ) ? GETPOST ( 'id' , 'int' ) : GETPOST ( 'socid' , 'int' );
2009-02-24 03:41:21 +01:00
if ( $user -> societe_id > 0 )
2004-11-09 16:16:17 +01:00
{
2011-09-10 19:52:21 +02:00
$socid = $user -> societe_id ;
2004-11-09 16:16:17 +01:00
}
2006-04-02 14:15:56 +02:00
/*
* Actions
*/
2011-02-19 13:15:17 +01:00
2017-09-15 10:50:50 +02:00
if ( GETPOST ( 'cancel' , 'alpha' ) && ! empty ( $backtopage ))
2011-02-19 13:15:17 +01:00
{
2012-08-31 05:58:38 +02:00
header ( " Location: " . $backtopage );
2011-02-19 13:15:17 +01:00
exit ;
}
2011-11-13 00:49:40 +01:00
if ( $action == 'confirm_split' && GETPOST ( " confirm " ) == 'yes' )
2009-08-07 02:49:43 +02:00
{
//if ($user->rights->societe->creer)
//if ($user->rights->facture->creer)
2016-06-30 16:42:49 +02:00
$amount_ttc_1 = GETPOST ( 'amount_ttc_1' );
$amount_ttc_2 = GETPOST ( 'amount_ttc_2' );
2009-08-07 02:49:43 +02:00
$error = 0 ;
2011-02-19 13:15:17 +01:00
$remid = GETPOST ( " remid " ) ? GETPOST ( " remid " ) : 0 ;
2009-08-07 02:49:43 +02:00
$discount = new DiscountAbsolute ( $db );
$res = $discount -> fetch ( $remid );
if ( ! $res > 0 )
{
$error ++ ;
2015-11-07 21:56:21 +01:00
setEventMessages ( $langs -> trans ( " ErrorFailedToLoadDiscount " ), null , 'errors' );
2009-08-07 02:49:43 +02:00
}
2016-06-30 16:42:49 +02:00
if ( ! $error && price2num ( $amount_ttc_1 + $amount_ttc_2 ) != $discount -> amount_ttc )
2009-08-07 02:49:43 +02:00
{
$error ++ ;
2015-11-07 21:56:21 +01:00
setEventMessages ( $langs -> trans ( " TotalOfTwoDiscountMustEqualsOriginal " ), null , 'errors' );
2009-08-07 02:49:43 +02:00
}
if ( ! $error && $discount -> fk_facture_line )
{
$error ++ ;
2015-11-07 21:56:21 +01:00
setEventMessages ( $langs -> trans ( " ErrorCantSplitAUsedDiscount " ), null , 'errors' );
2009-08-07 02:49:43 +02:00
}
if ( ! $error )
{
$newdiscount1 = new DiscountAbsolute ( $db );
$newdiscount2 = new DiscountAbsolute ( $db );
$newdiscount1 -> fk_facture_source = $discount -> fk_facture_source ;
$newdiscount2 -> fk_facture_source = $discount -> fk_facture_source ;
$newdiscount1 -> fk_facture = $discount -> fk_facture ;
$newdiscount2 -> fk_facture = $discount -> fk_facture ;
$newdiscount1 -> fk_facture_line = $discount -> fk_facture_line ;
$newdiscount2 -> fk_facture_line = $discount -> fk_facture_line ;
2018-02-16 12:05:36 +01:00
$newdiscount1 -> fk_invoice_supplier_source = $discount -> fk_invoice_supplier_source ;
$newdiscount2 -> fk_invoice_supplier_source = $discount -> fk_invoice_supplier_source ;
$newdiscount1 -> fk_invoice_supplier = $discount -> fk_invoice_supplier ;
$newdiscount2 -> fk_invoice_supplier = $discount -> fk_invoice_supplier ;
$newdiscount1 -> fk_invoice_supplier_line = $discount -> fk_invoice_supplier_line ;
$newdiscount2 -> fk_invoice_supplier_line = $discount -> fk_invoice_supplier_line ;
2017-04-04 12:22:51 +02:00
if ( $discount -> description == '(CREDIT_NOTE)' || $discount -> description == '(DEPOSIT)' )
2009-08-07 02:49:43 +02:00
{
$newdiscount1 -> description = $discount -> description ;
$newdiscount2 -> description = $discount -> description ;
}
else
{
$newdiscount1 -> description = $discount -> description . ' (1)' ;
$newdiscount2 -> description = $discount -> description . ' (2)' ;
}
$newdiscount1 -> fk_user = $discount -> fk_user ;
$newdiscount2 -> fk_user = $discount -> fk_user ;
$newdiscount1 -> fk_soc = $discount -> fk_soc ;
$newdiscount2 -> fk_soc = $discount -> fk_soc ;
2018-02-16 12:05:36 +01:00
$newdiscount1 -> discount_type = $discount -> discount_type ;
$newdiscount2 -> discount_type = $discount -> discount_type ;
2009-08-07 02:49:43 +02:00
$newdiscount1 -> datec = $discount -> datec ;
$newdiscount2 -> datec = $discount -> datec ;
$newdiscount1 -> tva_tx = $discount -> tva_tx ;
$newdiscount2 -> tva_tx = $discount -> tva_tx ;
$newdiscount1 -> amount_ttc = $_POST [ " amount_ttc_1 " ];
$newdiscount2 -> amount_ttc = price2num ( $discount -> amount_ttc - $newdiscount1 -> amount_ttc );
$newdiscount1 -> amount_ht = price2num ( $newdiscount1 -> amount_ttc / ( 1 + $newdiscount1 -> tva_tx / 100 ), 'MT' );
$newdiscount2 -> amount_ht = price2num ( $newdiscount2 -> amount_ttc / ( 1 + $newdiscount2 -> tva_tx / 100 ), 'MT' );
2017-02-07 14:02:27 +01:00
$newdiscount1 -> amount_tva = price2num ( $newdiscount1 -> amount_ttc - $newdiscount1 -> amount_ht );
2009-08-07 02:49:43 +02:00
$newdiscount2 -> amount_tva = price2num ( $newdiscount2 -> amount_ttc - $newdiscount2 -> amount_ht );
$db -> begin ();
$discount -> fk_facture_source = 0 ; // This is to delete only the require record (that we will recreate with two records) and not all family with same fk_facture_source
$res = $discount -> delete ( $user );
$newid1 = $newdiscount1 -> create ( $user );
$newid2 = $newdiscount2 -> create ( $user );
if ( $res > 0 && $newid1 > 0 && $newid2 > 0 )
{
$db -> commit ();
2017-09-19 00:24:52 +02:00
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?id=' . $id . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' )); // To avoid pb whith back
2009-08-07 02:49:43 +02:00
exit ;
}
else
{
$db -> rollback ();
}
}
}
2004-11-09 16:16:17 +01:00
2016-07-20 02:16:10 +02:00
if ( $action == 'setremise' && $user -> rights -> societe -> creer )
2006-04-02 14:15:56 +02:00
{
2009-08-07 02:49:43 +02:00
//if ($user->rights->societe->creer)
//if ($user->rights->facture->creer)
2016-06-30 16:42:49 +02:00
$amount_ht = GETPOST ( 'amount_ht' );
$desc = GETPOST ( 'desc' , 'alpha' );
$tva_tx = GETPOST ( 'tva_tx' , 'alpha' );
2018-02-14 18:02:40 +01:00
$discount_type =! empty ( $_POST [ 'discount_type' ]) ? GETPOST ( 'discount_type' , 'alpha' ) : 0 ;
2016-06-30 16:42:49 +02:00
if ( price2num ( $amount_ht ) > 0 )
2006-04-02 14:15:56 +02:00
{
2009-05-07 14:17:28 +02:00
$error = 0 ;
2016-06-30 16:42:49 +02:00
if ( empty ( $desc ))
2007-04-05 11:16:20 +02:00
{
2015-10-17 16:18:33 +02:00
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> trans ( " ReasonDiscount " )), null , 'errors' );
2009-05-07 14:17:28 +02:00
$error ++ ;
2007-04-05 11:16:20 +02:00
}
2009-05-07 14:17:28 +02:00
if ( ! $error )
2006-06-03 13:32:51 +02:00
{
2009-05-07 14:17:28 +02:00
$soc = new Societe ( $db );
2016-06-30 16:42:49 +02:00
$soc -> fetch ( $id );
2018-02-14 18:02:40 +01:00
$discountid = $soc -> set_remise_except ( $amount_ht , $user , $desc , $tva_tx , $discount_type );
2009-05-07 14:17:28 +02:00
2011-11-13 00:49:40 +01:00
if ( $discountid > 0 )
2009-05-07 14:17:28 +02:00
{
2012-02-27 17:02:56 +01:00
if ( ! empty ( $backtopage ))
2011-02-19 13:15:17 +01:00
{
2012-08-31 05:58:38 +02:00
header ( " Location: " . $backtopage . '&discountid=' . $discountid );
2011-02-19 13:15:17 +01:00
exit ;
}
else
{
2016-06-30 16:42:49 +02:00
header ( " Location: remx.php?id= " . $id );
2011-02-19 13:15:17 +01:00
exit ;
}
2009-05-07 14:17:28 +02:00
}
else
{
$error ++ ;
2015-11-07 21:56:21 +01:00
setEventMessages ( $soc -> error , $soc -> errors , 'errors' );
2009-05-07 14:17:28 +02:00
}
2006-06-03 13:32:51 +02:00
}
2006-04-02 14:15:56 +02:00
}
2007-04-05 11:16:20 +02:00
else
{
2015-11-07 21:56:21 +01:00
setEventMessages ( $langs -> trans ( " ErrorFieldFormat " , $langs -> trans ( " NewGlobalDiscount " )), null , 'errors' );
2007-04-05 11:16:20 +02:00
}
2006-04-02 14:15:56 +02:00
}
2005-08-11 20:54:59 +02:00
2017-05-16 13:27:32 +02:00
if ( GETPOST ( 'action' , 'aZ09' ) == 'confirm_remove' && GETPOST ( " confirm " ) == 'yes' )
2004-11-09 16:16:17 +01:00
{
2009-08-07 02:49:43 +02:00
//if ($user->rights->societe->creer)
//if ($user->rights->facture->creer)
2009-02-24 03:41:21 +01:00
2009-08-07 02:49:43 +02:00
$db -> begin ();
2006-04-02 14:15:56 +02:00
2009-08-07 02:49:43 +02:00
$discount = new DiscountAbsolute ( $db );
2011-02-19 13:15:17 +01:00
$result = $discount -> fetch ( GETPOST ( " remid " ));
2009-08-07 02:49:43 +02:00
$result = $discount -> delete ( $user );
2006-04-02 14:15:56 +02:00
if ( $result > 0 )
{
2007-12-02 18:59:06 +01:00
$db -> commit ();
2016-06-30 16:42:49 +02:00
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?id=' . $id ); // To avoid pb whith back
2009-08-07 02:49:43 +02:00
exit ;
2006-04-02 14:15:56 +02:00
}
else
{
2015-11-07 21:56:21 +01:00
setEventMessages ( $discount -> error , $discount -> errors , 'errors' );
2007-12-02 18:59:06 +01:00
$db -> rollback ();
2006-04-02 14:15:56 +02:00
}
2004-11-09 16:16:17 +01:00
}
2005-08-11 20:54:59 +02:00
2006-04-02 14:15:56 +02:00
/*
2008-08-09 00:12:27 +02:00
* View
2006-04-02 14:15:56 +02:00
*/
2007-04-03 01:45:50 +02:00
$form = new Form ( $db );
$facturestatic = new Facture ( $db );
2018-02-14 18:02:40 +01:00
$facturefournstatic = new FactureFournisseur ( $db );
2009-02-24 03:41:21 +01:00
2011-09-10 19:52:21 +02:00
llxHeader ( '' , $langs -> trans ( " GlobalDiscount " ));
2006-04-02 14:15:56 +02:00
2011-09-10 19:52:21 +02:00
if ( $socid > 0 )
2004-11-09 16:16:17 +01:00
{
2006-04-09 00:47:51 +02:00
// On recupere les donnees societes par l'objet
2015-10-13 13:06:32 +02:00
$object = new Societe ( $db );
$object -> fetch ( $socid );
2009-02-24 03:41:21 +01:00
2018-02-26 17:40:31 +01:00
$isCustomer = $object -> client == 1 || $object -> client == 3 ;
$isSupplier = $object -> fournisseur == 1 ;
2006-04-09 00:47:51 +02:00
/*
2015-11-07 21:56:21 +01:00
* Display tabs
2006-04-09 00:47:51 +02:00
*/
2015-10-13 13:06:32 +02:00
$head = societe_prepare_head ( $object );
2006-04-09 00:47:51 +02:00
2015-10-13 13:06:32 +02:00
print '<form method="POST" action="' . $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '">' ;
2010-05-08 22:47:12 +02:00
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<input type="hidden" name="action" value="setremise">' ;
2012-02-27 17:02:56 +01:00
print '<input type="hidden" name="backtopage" value="' . $backtopage . '">' ;
2004-11-09 16:16:17 +01:00
2017-04-09 13:12:25 +02:00
dol_fiche_head ( $head , 'absolutediscount' , $langs -> trans ( " ThirdParty " ), 0 , 'company' );
2016-06-30 16:42:49 +02:00
2015-10-13 13:06:32 +02:00
dol_banner_tab ( $object , 'socid' , '' , ( $user -> societe_id ? 0 : 1 ), 'rowid' , 'nom' );
2016-06-30 16:42:49 +02:00
2015-10-13 13:06:32 +02:00
print '<div class="fichecenter">' ;
2016-06-30 16:42:49 +02:00
2015-10-13 13:06:32 +02:00
print '<div class="underbanner clearboth"></div>' ;
2018-11-08 19:57:31 +01:00
2018-03-05 10:58:19 +01:00
if ( ! $isCustomer && ! $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<p class="opacitymedium">' . $langs -> trans ( 'ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts' ) . '</p>' ;
2009-03-02 19:17:19 +01:00
2018-02-26 17:40:31 +01:00
dol_fiche_end ();
2010-05-08 22:47:12 +02:00
2018-02-26 17:40:31 +01:00
print '</form>' ;
2010-05-08 22:47:12 +02:00
2018-02-26 17:40:31 +01:00
llxFooter ();
$db -> close ();
exit ;
}
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
print '<table class="border centpercent">' ;
2018-03-05 10:58:19 +01:00
if ( $isCustomer ) { // Calcul avoirs client en cours
2018-02-26 17:40:31 +01:00
$remise_all = $remise_user = 0 ;
$sql = " SELECT SUM(rc.amount_ht) as amount, rc.fk_user " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.entity = " . $conf -> entity ;
$sql .= " AND discount_type = 0 " ; // Exclude supplier discounts
$sql .= " AND (fk_facture_line IS NULL AND fk_facture IS NULL) " ;
$sql .= " GROUP BY rc.fk_user " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$obj = $db -> fetch_object ( $resql );
$remise_all += $obj -> amount ;
if ( $obj -> fk_user == $user -> id ) $remise_user += $obj -> amount ;
}
else
{
dol_print_error ( $db );
}
print '<tr><td class="titlefield">' . $langs -> trans ( " CustomerAbsoluteDiscountAllUsers " ) . '</td>' ;
print '<td>' . $remise_all . ' ' . $langs -> trans ( " Currency " . $conf -> currency ) . ' ' . $langs -> trans ( " HT " ) . '</td></tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
if ( ! empty ( $user -> fk_soc )) // No need to show this for external users
{
print '<tr><td>' . $langs -> trans ( " CustomerAbsoluteDiscountMy " ) . '</td>' ;
print '<td>' . $remise_user . ' ' . $langs -> trans ( " Currency " . $conf -> currency ) . ' ' . $langs -> trans ( " HT " ) . '</td></tr>' ;
}
2016-07-20 02:16:10 +02:00
}
2018-02-14 18:02:40 +01:00
2018-03-05 10:58:19 +01:00
if ( $isSupplier ) {
2018-02-14 18:02:40 +01:00
// Calcul avoirs fournisseur en cours
$remise_all = $remise_user = 0 ;
$sql = " SELECT SUM(rc.amount_ht) as amount, rc.fk_user " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.entity = " . $conf -> entity ;
$sql .= " AND discount_type = 1 " ; // Exclude customer discounts
$sql .= " AND (fk_invoice_supplier_line IS NULL AND fk_invoice_supplier IS NULL) " ;
$sql .= " GROUP BY rc.fk_user " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$obj = $db -> fetch_object ( $resql );
$remise_all += $obj -> amount ;
if ( $obj -> fk_user == $user -> id ) $remise_user += $obj -> amount ;
}
else
{
dol_print_error ( $db );
}
2018-11-08 19:57:31 +01:00
2018-02-19 15:52:07 +01:00
print '<tr><td class="titlefield">' . $langs -> trans ( " SupplierAbsoluteDiscountAllUsers " ) . '</td>' ;
2018-02-14 18:02:40 +01:00
print '<td>' . $remise_all . ' ' . $langs -> trans ( " Currency " . $conf -> currency ) . ' ' . $langs -> trans ( " HT " ) . '</td></tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
if ( ! empty ( $user -> fk_soc )) // No need to show this for external users
{
2018-02-19 15:52:07 +01:00
print '<tr><td>' . $langs -> trans ( " SupplierAbsoluteDiscountMy " ) . '</td>' ;
2018-02-14 18:02:40 +01:00
print '<td>' . $remise_user . ' ' . $langs -> trans ( " Currency " . $conf -> currency ) . ' ' . $langs -> trans ( " HT " ) . '</td></tr>' ;
}
}
2010-05-08 22:47:12 +02:00
print '</table>' ;
2011-09-08 23:28:57 +02:00
2017-04-09 13:12:25 +02:00
print '</div>' ;
2017-09-19 00:24:52 +02:00
2016-07-20 02:16:10 +02:00
if ( $user -> rights -> societe -> creer )
{
print '<br>' ;
2017-09-19 00:24:52 +02:00
2016-07-20 02:16:10 +02:00
print load_fiche_titre ( $langs -> trans ( " NewGlobalDiscount " ), '' , '' );
2017-09-19 00:24:52 +02:00
2016-10-30 12:39:51 +01:00
print '<div class="underbanner clearboth"></div>' ;
2018-11-08 19:57:31 +01:00
2018-03-05 10:58:19 +01:00
if ( $isCustomer && ! $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<input type="hidden" name="discount_type" value="0" />' ;
}
2018-11-08 19:57:31 +01:00
2018-03-05 10:58:19 +01:00
if ( ! $isCustomer && $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<input type="hidden" name="discount_type" value="1" />' ;
}
2016-07-20 02:16:10 +02:00
print '<table class="border" width="100%">' ;
2018-03-05 10:58:19 +01:00
if ( $isCustomer && $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<tr><td class="titlefield fieldrequired">' . $langs -> trans ( 'DiscountType' ) . '</td>' ;
2018-11-08 19:57:31 +01:00
print '<td><input type="radio" name="discount_type" id="discount_type_0" checked="checked" value="0"/> <label for="discount_type_0">' . $langs -> trans ( 'Customer' ) . '</label>' ;
print ' <input type="radio" name="discount_type" id="discount_type_1" value="1"/> <label for="discount_type_1">' . $langs -> trans ( 'Supplier' ) . '</label>' ;
2018-02-19 15:52:07 +01:00
print '</td></tr>' ;
2018-02-14 18:02:40 +01:00
}
2016-10-30 12:39:51 +01:00
print '<tr><td class="titlefield fieldrequired">' . $langs -> trans ( " AmountHT " ) . '</td>' ;
2016-12-18 01:44:26 +01:00
print '<td><input type="text" size="5" name="amount_ht" value="' . price2num ( GETPOST ( " amount_ht " )) . '">' ;
2016-07-20 02:16:10 +02:00
print '<span class="hideonsmartphone"> ' . $langs -> trans ( " Currency " . $conf -> currency ) . '</span></td></tr>' ;
2016-10-30 12:39:51 +01:00
print '<tr><td>' . $langs -> trans ( " VAT " ) . '</td>' ;
2016-07-20 02:16:10 +02:00
print '<td>' ;
print $form -> load_tva ( 'tva_tx' , GETPOST ( 'tva_tx' ), $mysoc , $object );
print '</td></tr>' ;
2016-07-21 10:30:51 +02:00
print '<tr><td class="fieldrequired" >' . $langs -> trans ( " NoteReason " ) . '</td>' ;
2017-09-25 00:16:52 +02:00
print '<td><input type="text" class="quatrevingtpercent" name="desc" value="' . GETPOST ( 'desc' , 'none' ) . '"></td></tr>' ;
2017-09-19 00:24:52 +02:00
2016-07-20 02:16:10 +02:00
print " </table> " ;
}
2016-06-30 16:42:49 +02:00
2015-08-28 00:29:46 +02:00
dol_fiche_end ();
2016-06-30 16:42:49 +02:00
2016-07-20 02:16:10 +02:00
if ( $user -> rights -> societe -> creer )
{
2016-07-21 10:30:51 +02:00
print '<div class="center">' ;
2016-07-20 02:16:10 +02:00
print '<input type="submit" class="button" name="submit" value="' . $langs -> trans ( " AddGlobalDiscount " ) . '">' ;
if ( ! empty ( $backtopage ))
{
print ' ' ;
print '<input type="submit" class="button" name="cancel" value="' . $langs -> trans ( " Cancel " ) . '">' ;
}
print '</div>' ;
2011-02-19 13:15:17 +01:00
}
2009-02-24 03:41:21 +01:00
2016-07-21 10:30:51 +02:00
print '</form>' ;
2004-11-09 16:16:17 +01:00
2005-08-11 20:54:59 +02:00
2010-05-08 22:47:12 +02:00
print '<br>' ;
2005-08-11 20:54:59 +02:00
2010-05-08 22:47:12 +02:00
if ( $_GET [ 'action' ] == 'remove' )
{
2016-06-30 16:42:49 +02:00
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&remid=' . GETPOST ( 'remid' ), $langs -> trans ( 'RemoveDiscount' ), $langs -> trans ( 'ConfirmRemoveDiscount' ), 'confirm_remove' , '' , 0 , 1 );
2010-05-08 22:47:12 +02:00
}
2018-02-14 18:02:40 +01:00
2010-05-08 22:47:12 +02:00
/*
2018-02-14 18:02:40 +01:00
* Liste remises fixes client restant en cours ( = liees a aucune facture ni ligne de facture )
2010-05-08 22:47:12 +02:00
*/
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
print load_fiche_titre ( $langs -> trans ( " DiscountStillRemaining " ));
2018-03-05 10:58:19 +01:00
if ( $isCustomer ) {
if ( $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<div class="fichecenter">' ;
2018-12-15 12:35:37 +01:00
print '<div class="fichehalfleft">' ;
2018-02-19 15:52:07 +01:00
print load_fiche_titre ( $langs -> trans ( " CustomerDiscounts " ), '' , '' );
2018-02-14 18:02:40 +01:00
}
2018-02-26 17:40:31 +01:00
$sql = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql .= " rc.datec as dc, rc.description, " ;
$sql .= " rc.fk_facture_source, " ;
$sql .= " u.login, u.rowid as user_id, " ;
$sql .= " fa.facnumber as ref, fa.type as type " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " user as u, " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture as fa ON rc.fk_facture_source = fa.rowid " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.entity = " . $conf -> entity ;
$sql .= " AND u.rowid = rc.fk_user " ;
$sql .= " AND rc.discount_type = 0 " ; // Eliminate supplier discounts
$sql .= " AND (rc.fk_facture_line IS NULL AND rc.fk_facture IS NULL) " ;
$sql .= " ORDER BY rc.datec DESC " ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$resql = $db -> query ( $sql );
if ( $resql )
2010-05-08 22:47:12 +02:00
{
2018-11-08 19:57:31 +01:00
print '<div class="div-table-responsive-no-min">' ;
2018-02-26 17:40:31 +01:00
print '<table width="100%" class="noborder">' ;
print '<tr class="liste_titre">' ;
print '<td class="widthdate">' . $langs -> trans ( " Date " ) . '</td>' ; // Need 120+ for format with AM/PM
print '<td>' . $langs -> trans ( " ReasonDiscount " ) . '</td>' ;
print '<td width="150" class="nowrap">' . $langs -> trans ( " ConsumedBy " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountHT " ) . '</td>' ;
print '<td width="80" align="right">' . $langs -> trans ( " VATRate " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountTTC " ) . '</td>' ;
print '<td width="100" align="center">' . $langs -> trans ( " DiscountOfferedBy " ) . '</td>' ;
print '<td width="50"> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$showconfirminfo = array ();
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num > 0 )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
print '<tr class="oddeven">' ;
print '<td>' . dol_print_date ( $db -> jdate ( $obj -> dc ), 'dayhour' ) . '</td>' ;
if ( preg_match ( '/\(CREDIT_NOTE\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(CREDIT_NOTE\)/' , $langs -> trans ( " CreditNote " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(DEPOSIT\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(DEPOSIT\)/' , $langs -> trans ( " InvoiceDeposit " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(EXCESS RECEIVED\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(EXCESS RECEIVED\)/' , $langs -> trans ( " ExcessReceived " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
else
{
print '<td>' ;
print $obj -> description ;
print '</td>' ;
}
print '<td class="nowrap">' . $langs -> trans ( " NotConsumed " ) . '</td>' ;
print '<td align="right">' . price ( $obj -> amount_ht ) . '</td>' ;
print '<td align="right">' . price2num ( $obj -> tva_tx , 'MU' ) . '%</td>' ;
print '<td align="right">' . price ( $obj -> amount_ttc ) . '</td>' ;
print '<td align="center">' ;
print '<a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $obj -> user_id . '">' . img_object ( $langs -> trans ( " ShowUser " ), 'user' ) . ' ' . $obj -> login . '</a>' ;
print '</td>' ;
if ( $user -> rights -> societe -> creer || $user -> rights -> facture -> creer )
{
print '<td class="nowrap">' ;
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&action=split&remid=' . $obj -> rowid . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ) . '">' . img_split ( $langs -> trans ( " SplitDiscount " )) . '</a>' ;
print ' ' ;
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&action=remove&remid=' . $obj -> rowid . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ) . '">' . img_delete ( $langs -> trans ( " RemoveDiscount " )) . '</a>' ;
print '</td>' ;
}
else print '<td> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
if ( $_GET [ " action " ] == 'split' && GETPOST ( 'remid' ) == $obj -> rowid )
{
$showconfirminfo [ 'rowid' ] = $obj -> rowid ;
$showconfirminfo [ 'amount_ttc' ] = $obj -> amount_ttc ;
}
$i ++ ;
}
}
else
{
print '<tr><td colspan="8" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
}
$db -> free ( $resql );
print " </table> " ;
2018-11-08 19:57:31 +01:00
print '</div>' ;
2018-02-26 17:40:31 +01:00
if ( count ( $showconfirminfo ))
{
$amount1 = price2num ( $showconfirminfo [ 'amount_ttc' ] / 2 , 'MT' );
$amount2 = ( $showconfirminfo [ 'amount_ttc' ] - $amount1 );
$formquestion = array (
'text' => $langs -> trans ( 'TypeAmountOfEachNewDiscount' ),
array ( 'type' => 'text' , 'name' => 'amount_ttc_1' , 'label' => $langs -> trans ( " AmountTTC " ) . ' 1' , 'value' => $amount1 , 'size' => '5' ),
array ( 'type' => 'text' , 'name' => 'amount_ttc_2' , 'label' => $langs -> trans ( " AmountTTC " ) . ' 2' , 'value' => $amount2 , 'size' => '5' )
);
$langs -> load ( " dict " );
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&remid=' . $showconfirminfo [ 'rowid' ] . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ), $langs -> trans ( 'SplitDiscount' ), $langs -> trans ( 'ConfirmSplitDiscount' , price ( $showconfirminfo [ 'amount_ttc' ]), $langs -> transnoentities ( " Currency " . $conf -> currency )), 'confirm_split' , $formquestion , 0 , 0 );
}
2010-05-08 22:47:12 +02:00
}
2017-04-09 13:12:25 +02:00
else
{
2018-02-26 17:40:31 +01:00
dol_print_error ( $db );
2015-08-28 00:29:46 +02:00
}
2010-05-08 22:47:12 +02:00
}
2018-03-05 10:58:19 +01:00
if ( $isSupplier ) {
if ( $isCustomer ) {
2018-02-26 17:40:31 +01:00
print '</div>' ; // class="fichehalfleft"
2018-12-15 12:35:37 +01:00
print '<div class="fichehalfright">' ;
2018-02-26 17:40:31 +01:00
print '<div class="ficheaddleft">' ;
print load_fiche_titre ( $langs -> trans ( " SupplierDiscounts " ), '' , '' );
}
2018-02-14 18:02:40 +01:00
/*
* Liste remises fixes fournisseur restant en cours ( = liees a aucune facture ni ligne de facture )
*/
$sql = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql .= " rc.datec as dc, rc.description, " ;
$sql .= " rc.fk_invoice_supplier_source, " ;
$sql .= " u.login, u.rowid as user_id, " ;
$sql .= " fa.ref, fa.type as type " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " user as u, " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture_fourn as fa ON rc.fk_invoice_supplier_source = fa.rowid " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.entity = " . $conf -> entity ;
$sql .= " AND u.rowid = rc.fk_user " ;
$sql .= " AND rc.discount_type = 1 " ; // Eliminate customer discounts
$sql .= " AND (rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_line IS NULL) " ;
$sql .= " ORDER BY rc.datec DESC " ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$resql = $db -> query ( $sql );
if ( $resql )
{
2018-11-08 19:57:31 +01:00
print '<div class="div-table-responsive-no-min">' ;
2018-02-14 18:02:40 +01:00
print '<table width="100%" class="noborder">' ;
print '<tr class="liste_titre">' ;
print '<td class="widthdate">' . $langs -> trans ( " Date " ) . '</td>' ; // Need 120+ for format with AM/PM
print '<td>' . $langs -> trans ( " ReasonDiscount " ) . '</td>' ;
print '<td width="150" class="nowrap">' . $langs -> trans ( " ConsumedBy " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountHT " ) . '</td>' ;
print '<td width="80" align="right">' . $langs -> trans ( " VATRate " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountTTC " ) . '</td>' ;
print '<td width="100" align="center">' . $langs -> trans ( " DiscountOfferedBy " ) . '</td>' ;
print '<td width="50"> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$showconfirminfo = array ();
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num > 0 )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
print '<tr class="oddeven">' ;
print '<td>' . dol_print_date ( $db -> jdate ( $obj -> dc ), 'dayhour' ) . '</td>' ;
if ( preg_match ( '/\(CREDIT_NOTE\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
print preg_replace ( '/\(CREDIT_NOTE\)/' , $langs -> trans ( " CreditNote " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(DEPOSIT\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
print preg_replace ( '/\(DEPOSIT\)/' , $langs -> trans ( " InvoiceDeposit " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(EXCESS PAID\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
2018-02-19 15:52:07 +01:00
print preg_replace ( '/\(EXCESS PAID\)/' , $langs -> trans ( " ExcessPaid " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
2018-02-14 18:02:40 +01:00
print '</td>' ;
}
else
{
print '<td>' ;
print $obj -> description ;
print '</td>' ;
}
print '<td class="nowrap">' . $langs -> trans ( " NotConsumed " ) . '</td>' ;
print '<td align="right">' . price ( $obj -> amount_ht ) . '</td>' ;
print '<td align="right">' . price2num ( $obj -> tva_tx , 'MU' ) . '%</td>' ;
print '<td align="right">' . price ( $obj -> amount_ttc ) . '</td>' ;
print '<td align="center">' ;
print '<a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $obj -> user_id . '">' . img_object ( $langs -> trans ( " ShowUser " ), 'user' ) . ' ' . $obj -> login . '</a>' ;
print '</td>' ;
if ( $user -> rights -> societe -> creer || $user -> rights -> facture -> creer )
{
print '<td class="nowrap">' ;
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&action=split&remid=' . $obj -> rowid . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ) . '">' . img_split ( $langs -> trans ( " SplitDiscount " )) . '</a>' ;
print ' ' ;
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&action=remove&remid=' . $obj -> rowid . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ) . '">' . img_delete ( $langs -> trans ( " RemoveDiscount " )) . '</a>' ;
print '</td>' ;
}
else print '<td> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
if ( $_GET [ " action " ] == 'split' && GETPOST ( 'remid' ) == $obj -> rowid )
{
$showconfirminfo [ 'rowid' ] = $obj -> rowid ;
$showconfirminfo [ 'amount_ttc' ] = $obj -> amount_ttc ;
}
$i ++ ;
}
}
else
{
print '<tr><td colspan="8" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
}
$db -> free ( $resql );
print " </table> " ;
2018-11-08 19:57:31 +01:00
print '</div>' ;
2018-02-14 18:02:40 +01:00
if ( count ( $showconfirminfo ))
{
$amount1 = price2num ( $showconfirminfo [ 'amount_ttc' ] / 2 , 'MT' );
$amount2 = ( $showconfirminfo [ 'amount_ttc' ] - $amount1 );
$formquestion = array (
'text' => $langs -> trans ( 'TypeAmountOfEachNewDiscount' ),
array ( 'type' => 'text' , 'name' => 'amount_ttc_1' , 'label' => $langs -> trans ( " AmountTTC " ) . ' 1' , 'value' => $amount1 , 'size' => '5' ),
array ( 'type' => 'text' , 'name' => 'amount_ttc_2' , 'label' => $langs -> trans ( " AmountTTC " ) . ' 2' , 'value' => $amount2 , 'size' => '5' )
);
$langs -> load ( " dict " );
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id . '&remid=' . $showconfirminfo [ 'rowid' ] . ( $backtopage ? '&backtopage=' . urlencode ( $backtopage ) : '' ), $langs -> trans ( 'SplitDiscount' ), $langs -> trans ( 'ConfirmSplitDiscount' , price ( $showconfirminfo [ 'amount_ttc' ]), $langs -> transnoentities ( " Currency " . $conf -> currency )), 'confirm_split' , $formquestion , 0 , 0 );
}
}
else
{
dol_print_error ( $db );
}
2018-11-08 19:57:31 +01:00
if ( $isCustomer ) {
2018-02-26 17:40:31 +01:00
print '</div>' ; // class="ficheaddleft"
print '</div>' ; // class="fichehalfright"
print '</div>' ; // class="fichecenter"
}
2018-02-14 18:02:40 +01:00
}
2018-11-08 19:57:31 +01:00
print '<div class="clearboth"></div><br>' ;
2010-05-08 22:47:12 +02:00
/*
2016-07-20 02:16:10 +02:00
* List discount consumed ( = liees a une ligne de facture ou facture )
2010-05-08 22:47:12 +02:00
*/
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
print load_fiche_titre ( $langs -> trans ( " DiscountAlreadyCounted " ));
2018-03-05 10:58:19 +01:00
if ( $isCustomer ) {
if ( $isSupplier ) {
2018-02-26 17:40:31 +01:00
print '<div class="fichecenter">' ;
2018-12-15 12:35:37 +01:00
print '<div class="fichehalfleft">' ;
2018-02-19 15:52:07 +01:00
print load_fiche_titre ( $langs -> trans ( " CustomerDiscounts " ), '' , '' );
2018-02-14 18:02:40 +01:00
}
2009-02-24 03:41:21 +01:00
2018-02-26 17:40:31 +01:00
// Remises liees a lignes de factures
$sql = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql .= " rc.datec as dc, rc.description, rc.fk_facture_line, rc.fk_facture, " ;
$sql .= " rc.fk_facture_source, " ;
$sql .= " u.login, u.rowid as user_id, " ;
$sql .= " f.rowid, f.facnumber, " ;
$sql .= " fa.facnumber as ref, fa.type as type " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " facture as f " ;
$sql .= " , " . MAIN_DB_PREFIX . " user as u " ;
$sql .= " , " . MAIN_DB_PREFIX . " facturedet as fc " ;
$sql .= " , " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture as fa ON rc.fk_facture_source = fa.rowid " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.fk_facture_line = fc.rowid " ;
$sql .= " AND fc.fk_facture = f.rowid " ;
$sql .= " AND rc.fk_user = u.rowid " ;
$sql .= " AND rc.discount_type = 0 " ; // Eliminate supplier discounts
$sql .= " ORDER BY dc DESC " ;
//$sql.= " UNION ";
// Remises liees a factures
$sql2 = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql2 .= " rc.datec as dc, rc.description, rc.fk_facture_line, rc.fk_facture, " ;
$sql2 .= " rc.fk_facture_source, " ;
$sql2 .= " u.login, u.rowid as user_id, " ;
$sql2 .= " f.rowid, f.facnumber, " ;
$sql2 .= " fa.facnumber as ref, fa.type as type " ;
$sql2 .= " FROM " . MAIN_DB_PREFIX . " facture as f " ;
$sql2 .= " , " . MAIN_DB_PREFIX . " user as u " ;
$sql2 .= " , " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql2 .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture as fa ON rc.fk_facture_source = fa.rowid " ;
$sql2 .= " WHERE rc.fk_soc = " . $object -> id ;
$sql2 .= " AND rc.fk_facture = f.rowid " ;
$sql2 .= " AND rc.fk_user = u.rowid " ;
$sql2 .= " AND rc.discount_type = 0 " ; // Eliminate supplier discounts
$sql2 .= " ORDER BY dc DESC " ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$resql = $db -> query ( $sql );
$resql2 = null ;
if ( $resql ) $resql2 = $db -> query ( $sql2 );
if ( $resql2 )
2010-05-08 22:47:12 +02:00
{
2018-11-08 19:57:31 +01:00
print '<div class="div-table-responsive-no-min">' ;
2018-02-26 17:40:31 +01:00
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td class="widthdate">' . $langs -> trans ( " Date " ) . '</td>' ; // Need 120+ for format with AM/PM
print '<td>' . $langs -> trans ( " ReasonDiscount " ) . '</td>' ;
print '<td width="150" class="nowrap">' . $langs -> trans ( " ConsumedBy " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountHT " ) . '</td>' ;
print '<td width="80" align="right">' . $langs -> trans ( " VATRate " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountTTC " ) . '</td>' ;
print '<td width="100" align="center">' . $langs -> trans ( " Author " ) . '</td>' ;
print '<td width="50"> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$tab_sqlobj = array ();
$tab_sqlobjOrder = array ();
$num = $db -> num_rows ( $resql );
if ( $num > 0 )
{
for ( $i = 0 ; $i < $num ; $i ++ )
{
$sqlobj = $db -> fetch_object ( $resql );
$tab_sqlobj [] = $sqlobj ;
$tab_sqlobjOrder [] = $db -> jdate ( $sqlobj -> dc );
}
}
$db -> free ( $resql );
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$num = $db -> num_rows ( $resql2 );
for ( $i = 0 ; $i < $num ; $i ++ )
{
$sqlobj = $db -> fetch_object ( $resql2 );
$tab_sqlobj [] = $sqlobj ;
$tab_sqlobjOrder [] = $db -> jdate ( $sqlobj -> dc );
}
$db -> free ( $resql2 );
array_multisort ( $tab_sqlobjOrder , SORT_DESC , $tab_sqlobj );
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
$num = count ( $tab_sqlobj );
if ( $num > 0 )
{
$i = 0 ;
while ( $i < $num )
{
$obj = array_shift ( $tab_sqlobj );
print '<tr class="oddeven">' ;
print '<td>' . dol_print_date ( $db -> jdate ( $obj -> dc ), 'dayhour' ) . '</td>' ;
if ( preg_match ( '/\(CREDIT_NOTE\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(CREDIT_NOTE\)/' , $langs -> trans ( " CreditNote " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(DEPOSIT\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(DEPOSIT\)/' , $langs -> trans ( " InvoiceDeposit " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(EXCESS RECEIVED\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturestatic -> id = $obj -> fk_facture_source ;
$facturestatic -> ref = $obj -> ref ;
$facturestatic -> type = $obj -> type ;
print preg_replace ( '/\(EXCESS RECEIVED\)/' , $langs -> trans ( " Invoice " ), $obj -> description ) . ' ' . $facturestatic -> getNomURl ( 1 );
print '</td>' ;
}
else
{
print '<td>' ;
print $obj -> description ;
print '</td>' ;
}
print '<td align="left" class="nowrap"><a href="' . DOL_URL_ROOT . '/compta/facture/card.php?facid=' . $obj -> rowid . '">' . img_object ( $langs -> trans ( " ShowBill " ), 'bill' ) . ' ' . $obj -> facnumber . '</a></td>' ;
print '<td align="right">' . price ( $obj -> amount_ht ) . '</td>' ;
print '<td align="right">' . price2num ( $obj -> tva_tx , 'MU' ) . '%</td>' ;
print '<td align="right">' . price ( $obj -> amount_ttc ) . '</td>' ;
print '<td align="center">' ;
print '<a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $obj -> user_id . '">' . img_object ( $langs -> trans ( " ShowUser " ), 'user' ) . ' ' . $obj -> login . '</a>' ;
print '</td>' ;
print '<td> </td>' ;
print '</tr>' ;
$i ++ ;
}
}
else
{
print '<tr><td colspan="8" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
}
2018-11-08 19:57:31 +01:00
2018-02-26 17:40:31 +01:00
print " </table> " ;
2018-11-08 19:57:31 +01:00
print '</div>' ;
2017-04-09 13:12:25 +02:00
}
else
{
2018-02-26 17:40:31 +01:00
dol_print_error ( $db );
2010-05-08 22:47:12 +02:00
}
}
2004-11-09 16:16:17 +01:00
2018-03-05 10:58:19 +01:00
if ( $isSupplier ) {
if ( $isCustomer ) {
2018-02-26 17:40:31 +01:00
print '</div>' ; // class="fichehalfleft"
2018-12-15 12:35:37 +01:00
print '<div class="fichehalfright">' ;
2018-02-26 17:40:31 +01:00
print '<div class="ficheaddleft">' ;
print load_fiche_titre ( $langs -> trans ( " SupplierDiscounts " ), '' , '' );
}
2018-02-14 18:02:40 +01:00
// Remises liees a lignes de factures
$sql = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql .= " rc.datec as dc, rc.description, rc.fk_invoice_supplier_line, rc.fk_invoice_supplier, " ;
$sql .= " rc.fk_invoice_supplier_source, " ;
$sql .= " u.login, u.rowid as user_id, " ;
$sql .= " f.rowid, f.ref as facnumber, " ;
$sql .= " fa.ref, fa.type as type " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " facture_fourn as f " ;
$sql .= " , " . MAIN_DB_PREFIX . " user as u " ;
$sql .= " , " . MAIN_DB_PREFIX . " facture_fourn_det as fc " ;
$sql .= " , " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture_fourn as fa ON rc.fk_invoice_supplier_source = fa.rowid " ;
$sql .= " WHERE rc.fk_soc = " . $object -> id ;
$sql .= " AND rc.fk_invoice_supplier_line = fc.rowid " ;
$sql .= " AND fc.fk_facture_fourn = f.rowid " ;
$sql .= " AND rc.fk_user = u.rowid " ;
$sql .= " AND rc.discount_type = 1 " ; // Eliminate customer discounts
$sql .= " ORDER BY dc DESC " ;
//$sql.= " UNION ";
// Remises liees a factures
$sql2 = " SELECT rc.rowid, rc.amount_ht, rc.amount_tva, rc.amount_ttc, rc.tva_tx, " ;
$sql2 .= " rc.datec as dc, rc.description, rc.fk_invoice_supplier_line, rc.fk_invoice_supplier, " ;
$sql2 .= " rc.fk_invoice_supplier_source, " ;
$sql2 .= " u.login, u.rowid as user_id, " ;
$sql2 .= " f.rowid, f.ref as facnumber, " ;
$sql2 .= " fa.ref, fa.type as type " ;
$sql2 .= " FROM " . MAIN_DB_PREFIX . " facture_fourn as f " ;
$sql2 .= " , " . MAIN_DB_PREFIX . " user as u " ;
$sql2 .= " , " . MAIN_DB_PREFIX . " societe_remise_except as rc " ;
$sql2 .= " LEFT JOIN " . MAIN_DB_PREFIX . " facture_fourn as fa ON rc.fk_invoice_supplier_source = fa.rowid " ;
$sql2 .= " WHERE rc.fk_soc = " . $object -> id ;
$sql2 .= " AND rc.fk_invoice_supplier = f.rowid " ;
$sql2 .= " AND rc.fk_user = u.rowid " ;
$sql2 .= " AND rc.discount_type = 1 " ; // Eliminate customer discounts
$sql2 .= " ORDER BY dc DESC " ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$resql = $db -> query ( $sql );
$resql2 = null ;
if ( $resql ) $resql2 = $db -> query ( $sql2 );
if ( $resql2 )
{
2018-11-08 19:57:31 +01:00
print '<div class="div-table-responsive-no-min">' ;
2018-02-14 18:02:40 +01:00
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td class="widthdate">' . $langs -> trans ( " Date " ) . '</td>' ; // Need 120+ for format with AM/PM
print '<td>' . $langs -> trans ( " ReasonDiscount " ) . '</td>' ;
print '<td width="150" class="nowrap">' . $langs -> trans ( " ConsumedBy " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountHT " ) . '</td>' ;
print '<td width="80" align="right">' . $langs -> trans ( " VATRate " ) . '</td>' ;
print '<td width="120" align="right">' . $langs -> trans ( " AmountTTC " ) . '</td>' ;
print '<td width="100" align="center">' . $langs -> trans ( " Author " ) . '</td>' ;
print '<td width="50"> </td>' ;
print '</tr>' ;
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$tab_sqlobj = array ();
$tab_sqlobjOrder = array ();
$num = $db -> num_rows ( $resql );
if ( $num > 0 )
{
for ( $i = 0 ; $i < $num ; $i ++ )
{
$sqlobj = $db -> fetch_object ( $resql );
$tab_sqlobj [] = $sqlobj ;
$tab_sqlobjOrder [] = $db -> jdate ( $sqlobj -> dc );
}
}
$db -> free ( $resql );
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$num = $db -> num_rows ( $resql2 );
for ( $i = 0 ; $i < $num ; $i ++ )
{
$sqlobj = $db -> fetch_object ( $resql2 );
$tab_sqlobj [] = $sqlobj ;
$tab_sqlobjOrder [] = $db -> jdate ( $sqlobj -> dc );
}
$db -> free ( $resql2 );
array_multisort ( $tab_sqlobjOrder , SORT_DESC , $tab_sqlobj );
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
$num = count ( $tab_sqlobj );
if ( $num > 0 )
{
$i = 0 ;
while ( $i < $num )
{
$obj = array_shift ( $tab_sqlobj );
print '<tr class="oddeven">' ;
print '<td>' . dol_print_date ( $db -> jdate ( $obj -> dc ), 'dayhour' ) . '</td>' ;
if ( preg_match ( '/\(CREDIT_NOTE\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
print preg_replace ( '/\(CREDIT_NOTE\)/' , $langs -> trans ( " CreditNote " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(DEPOSIT\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
print preg_replace ( '/\(DEPOSIT\)/' , $langs -> trans ( " InvoiceDeposit " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
print '</td>' ;
}
elseif ( preg_match ( '/\(EXCESS PAID\)/' , $obj -> description ))
{
print '<td class="nowrap">' ;
$facturefournstatic -> id = $obj -> fk_invoice_supplier_source ;
$facturefournstatic -> ref = $obj -> ref ;
$facturefournstatic -> type = $obj -> type ;
print preg_replace ( '/\(EXCESS PAID\)/' , $langs -> trans ( " Invoice " ), $obj -> description ) . ' ' . $facturefournstatic -> getNomURl ( 1 );
print '</td>' ;
}
else
{
print '<td>' ;
print $obj -> description ;
print '</td>' ;
}
2018-02-19 15:52:07 +01:00
print '<td align="left" class="nowrap"><a href="' . DOL_URL_ROOT . '/fourn/facture/card.php?facid=' . $obj -> rowid . '">' . img_object ( $langs -> trans ( " ShowBill " ), 'bill' ) . ' ' . $obj -> facnumber . '</a></td>' ;
2018-02-14 18:02:40 +01:00
print '<td align="right">' . price ( $obj -> amount_ht ) . '</td>' ;
print '<td align="right">' . price2num ( $obj -> tva_tx , 'MU' ) . '%</td>' ;
print '<td align="right">' . price ( $obj -> amount_ttc ) . '</td>' ;
print '<td align="center">' ;
2018-02-19 15:52:07 +01:00
print '<a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $obj -> user_id . '">' . img_object ( $langs -> trans ( " ShowUser " ), 'user' ) . ' ' . $obj -> login . '</a>' ;
2018-02-14 18:02:40 +01:00
print '</td>' ;
print '<td> </td>' ;
print '</tr>' ;
$i ++ ;
}
}
else
{
print '<tr><td colspan="8" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
}
2018-11-08 19:57:31 +01:00
2018-02-14 18:02:40 +01:00
print " </table> " ;
2018-11-08 19:57:31 +01:00
print '</div>' ;
2018-02-14 18:02:40 +01:00
}
else
{
dol_print_error ( $db );
}
2018-02-26 17:40:31 +01:00
2018-03-05 10:58:19 +01:00
if ( $isCustomer ) {
2018-02-26 17:40:31 +01:00
print '</div>' ; // class="ficheaddleft"
print '</div>' ; // class="fichehalfright"
print '</div>' ; // class="fichecenter"
}
2018-02-14 18:02:40 +01:00
}
2004-11-09 16:16:17 +01:00
}
2011-08-27 16:24:16 +02:00
llxFooter ();
2015-12-11 14:19:38 +01:00
$db -> close ();