Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dolibarr
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software_Artifact_Infrastructure_Repository
dolibarr
Commits
fada3ca9
Commit
fada3ca9
authored
10 years ago
by
Frédéric France
Browse files
Options
Downloads
Patches
Plain Diff
User must not see invoices if no rights
parent
bcd441cc
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
htdocs/margin/tabs/productMargins.php
+120
-131
120 additions, 131 deletions
htdocs/margin/tabs/productMargins.php
htdocs/product/stats/facture.php
+68
-73
68 additions, 73 deletions
htdocs/product/stats/facture.php
with
188 additions
and
204 deletions
htdocs/margin/tabs/productMargins.php
+
120
−
131
View file @
fada3ca9
...
...
@@ -128,91 +128,86 @@ if ($id > 0 || ! empty($ref))
print
'</div>'
;
$sql
=
"SELECT s.nom, s.rowid as socid, s.code_client,"
;
$sql
.
=
" f.rowid as facid, f.facnumber, f.total as total_ht,"
;
$sql
.
=
" f.datef, f.paye, f.fk_statut as statut,"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" sc.fk_soc, sc.fk_user,"
;
$sql
.
=
" sum(d.total_ht) as selling_price,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(d.qty *-1)'
,
'sum(d.qty)'
)
.
" as qty,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(d.qty * d.buy_price_ht *-1)'
,
'sum(d.qty * d.buy_price_ht)'
)
.
" as buying_price,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(-1 * (abs(d.total_ht) - (d.buy_price_ht * d.qty)))'
,
'sum(d.total_ht - (d.buy_price_ht * d.qty))'
)
.
" as marge"
;
$sql
.
=
" FROM "
.
MAIN_DB_PREFIX
.
"societe as s"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facture as f"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facturedet as d"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"societe_commerciaux as sc"
;
$sql
.
=
" WHERE f.fk_soc = s.rowid"
;
$sql
.
=
" AND f.fk_statut > 0"
;
$sql
.
=
" AND s.entity = "
.
$conf
->
entity
;
$sql
.
=
" AND d.fk_facture = f.rowid"
;
$sql
.
=
" AND d.fk_product ="
.
$object
->
id
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" AND s.rowid = sc.fk_soc AND sc.fk_user = "
.
$user
->
id
;
if
(
!
empty
(
$socid
))
$sql
.
=
" AND f.fk_soc =
$socid
"
;
$sql
.
=
" AND d.buy_price_ht IS NOT NULL"
;
if
(
isset
(
$conf
->
global
->
ForceBuyingPriceIfNull
)
&&
$conf
->
global
->
ForceBuyingPriceIfNull
==
1
)
$sql
.
=
" AND d.buy_price_ht <> 0"
;
$sql
.
=
" GROUP BY s.nom, s.rowid, s.code_client, f.rowid, f.facnumber, f.total, f.datef, f.paye, f.fk_statut"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", sc.fk_soc, sc.fk_user"
;
$sql
.
=
" ORDER BY "
.
$sortfield
.
" "
.
$sortorder
;
// TODO: calculate total to display then restore pagination
//$sql.= $db->plimit($conf->liste_limit +1, $offset);
dol_syslog
(
'margin:tabs:productMargins.php'
,
LOG_DEBUG
);
$result
=
$db
->
query
(
$sql
);
if
(
$result
)
{
$num
=
$db
->
num_rows
(
$result
);
print_barre_liste
(
$langs
->
trans
(
"MarginDetails"
),
$page
,
$_SERVER
[
"PHP_SELF"
],
"&id=
$object->id
"
,
$sortfield
,
$sortorder
,
''
,
0
,
0
,
''
);
$i
=
0
;
print
"<table class=
\"
noborder
\"
width=
\"
100%
\"
>"
;
print
'<tr class="liste_titre">'
;
print_liste_field_titre
(
$langs
->
trans
(
"Invoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.facnumber"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Company"
),
$_SERVER
[
"PHP_SELF"
],
"s.nom"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"CustomerCode"
),
$_SERVER
[
"PHP_SELF"
],
"s.code_client"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"DateInvoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.datef"
,
""
,
"&id="
.
$object
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"SellingPrice"
),
$_SERVER
[
"PHP_SELF"
],
"selling_price"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"BuyingPrice"
),
$_SERVER
[
"PHP_SELF"
],
"buying_price"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Qty"
),
$_SERVER
[
"PHP_SELF"
],
"d.qty"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Margin"
),
$_SERVER
[
"PHP_SELF"
],
"marge"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARGIN_RATES
))
print_liste_field_titre
(
$langs
->
trans
(
"MarginRate"
),
$_SERVER
[
"PHP_SELF"
],
""
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARK_RATES
))
print_liste_field_titre
(
$langs
->
trans
(
"MarkRate"
),
$_SERVER
[
"PHP_SELF"
],
""
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Status"
),
$_SERVER
[
"PHP_SELF"
],
"f.paye,f.fk_statut"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print
"</tr>
\n
"
;
$cumul_achat
=
0
;
$cumul_vente
=
0
;
$cumul_qty
=
0
;
$rounding
=
min
(
$conf
->
global
->
MAIN_MAX_DECIMALS_UNIT
,
$conf
->
global
->
MAIN_MAX_DECIMALS_TOT
);
if
(
$num
>
0
)
{
$var
=
True
;
while
(
$i
<
$num
/*&& $i < $conf->liste_limit*/
)
{
$objp
=
$db
->
fetch_object
(
$result
);
$var
=!
$var
;
if
(
$objp
->
marge
<
0
)
{
$marginRate
=
(
$objp
->
buying_price
!=
0
)
?-
1
*
(
100
*
$objp
->
marge
/
$objp
->
buying_price
)
:
''
;
$markRate
=
(
$objp
->
selling_price
!=
0
)
?-
1
*
(
100
*
$objp
->
marge
/
$objp
->
selling_price
)
:
''
;
}
else
{
$marginRate
=
(
$objp
->
buying_price
!=
0
)
?
(
100
*
$objp
->
marge
/
$objp
->
buying_price
)
:
''
;
$markRate
=
(
$objp
->
selling_price
!=
0
)
?
(
100
*
$objp
->
marge
/
$objp
->
selling_price
)
:
''
;
}
print
"<tr "
.
$bc
[
$var
]
.
">"
;
print
'<td>'
;
$invoicestatic
->
id
=
$objp
->
facid
;
$invoicestatic
->
ref
=
$objp
->
facnumber
;
print
$invoicestatic
->
getNomUrl
(
1
);
print
"</td>
\n
"
;
print
'<td><a href="'
.
DOL_URL_ROOT
.
'/comm/fiche.php?socid='
.
$objp
->
socid
.
'">'
.
img_object
(
$langs
->
trans
(
"ShowCompany"
),
"company"
)
.
' '
.
dol_trunc
(
$objp
->
nom
,
44
)
.
'</a></td>'
;
print
"<td>"
.
$objp
->
code_client
.
"</td>
\n
"
;
if
(
$user
->
rights
->
facture
->
lire
)
{
$sql
=
"SELECT s.nom, s.rowid as socid, s.code_client,"
;
$sql
.
=
" f.rowid as facid, f.facnumber, f.total as total_ht,"
;
$sql
.
=
" f.datef, f.paye, f.fk_statut as statut,"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" sc.fk_soc, sc.fk_user,"
;
$sql
.
=
" sum(d.total_ht) as selling_price,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(d.qty *-1)'
,
'sum(d.qty)'
)
.
" as qty,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(d.qty * d.buy_price_ht *-1)'
,
'sum(d.qty * d.buy_price_ht)'
)
.
" as buying_price,"
;
$sql
.
=
$db
->
ifsql
(
'f.type =2'
,
'sum(-1 * (abs(d.total_ht) - (d.buy_price_ht * d.qty)))'
,
'sum(d.total_ht - (d.buy_price_ht * d.qty))'
)
.
" as marge"
;
$sql
.
=
" FROM "
.
MAIN_DB_PREFIX
.
"societe as s"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facture as f"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facturedet as d"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"societe_commerciaux as sc"
;
$sql
.
=
" WHERE f.fk_soc = s.rowid"
;
$sql
.
=
" AND f.fk_statut > 0"
;
$sql
.
=
" AND s.entity = "
.
$conf
->
entity
;
$sql
.
=
" AND d.fk_facture = f.rowid"
;
$sql
.
=
" AND d.fk_product ="
.
$object
->
id
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" AND s.rowid = sc.fk_soc AND sc.fk_user = "
.
$user
->
id
;
if
(
!
empty
(
$socid
))
$sql
.
=
" AND f.fk_soc =
$socid
"
;
$sql
.
=
" AND d.buy_price_ht IS NOT NULL"
;
if
(
isset
(
$conf
->
global
->
ForceBuyingPriceIfNull
)
&&
$conf
->
global
->
ForceBuyingPriceIfNull
==
1
)
$sql
.
=
" AND d.buy_price_ht <> 0"
;
$sql
.
=
" GROUP BY s.nom, s.rowid, s.code_client, f.rowid, f.facnumber, f.total, f.datef, f.paye, f.fk_statut"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", sc.fk_soc, sc.fk_user"
;
$sql
.
=
" ORDER BY "
.
$sortfield
.
" "
.
$sortorder
;
// TODO: calculate total to display then restore pagination
//$sql.= $db->plimit($conf->liste_limit +1, $offset);
dol_syslog
(
'margin:tabs:productMargins.php'
,
LOG_DEBUG
);
$result
=
$db
->
query
(
$sql
);
if
(
$result
)
{
$num
=
$db
->
num_rows
(
$result
);
print_barre_liste
(
$langs
->
trans
(
"MarginDetails"
),
$page
,
$_SERVER
[
"PHP_SELF"
],
"&id=
$object->id
"
,
$sortfield
,
$sortorder
,
''
,
0
,
0
,
''
);
$i
=
0
;
print
'<table class="noborder" width="100%">'
;
print
'<tr class="liste_titre">'
;
print_liste_field_titre
(
$langs
->
trans
(
"Invoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.facnumber"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Company"
),
$_SERVER
[
"PHP_SELF"
],
"s.nom"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"CustomerCode"
),
$_SERVER
[
"PHP_SELF"
],
"s.code_client"
,
""
,
"&id="
.
$object
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"DateInvoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.datef"
,
""
,
"&id="
.
$object
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"SellingPrice"
),
$_SERVER
[
"PHP_SELF"
],
"selling_price"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"BuyingPrice"
),
$_SERVER
[
"PHP_SELF"
],
"buying_price"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Qty"
),
$_SERVER
[
"PHP_SELF"
],
"d.qty"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Margin"
),
$_SERVER
[
"PHP_SELF"
],
"marge"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARGIN_RATES
))
print_liste_field_titre
(
$langs
->
trans
(
"MarginRate"
),
$_SERVER
[
"PHP_SELF"
],
""
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARK_RATES
))
print_liste_field_titre
(
$langs
->
trans
(
"MarkRate"
),
$_SERVER
[
"PHP_SELF"
],
""
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Status"
),
$_SERVER
[
"PHP_SELF"
],
"f.paye,f.fk_statut"
,
""
,
"&id="
.
$object
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print
"</tr>
\n
"
;
$cumul_achat
=
0
;
$cumul_vente
=
0
;
$cumul_qty
=
0
;
$rounding
=
min
(
$conf
->
global
->
MAIN_MAX_DECIMALS_UNIT
,
$conf
->
global
->
MAIN_MAX_DECIMALS_TOT
);
if
(
$num
>
0
)
{
$var
=
True
;
while
(
$i
<
$num
/*&& $i < $conf->liste_limit*/
)
{
$objp
=
$db
->
fetch_object
(
$result
);
$var
=!
$var
;
if
(
$objp
->
marge
<
0
)
{
$marginRate
=
(
$objp
->
buying_price
!=
0
)
?-
1
*
(
100
*
$objp
->
marge
/
$objp
->
buying_price
)
:
''
;
$markRate
=
(
$objp
->
selling_price
!=
0
)
?-
1
*
(
100
*
$objp
->
marge
/
$objp
->
selling_price
)
:
''
;
}
else
{
$marginRate
=
(
$objp
->
buying_price
!=
0
)
?
(
100
*
$objp
->
marge
/
$objp
->
buying_price
)
:
''
;
$markRate
=
(
$objp
->
selling_price
!=
0
)
?
(
100
*
$objp
->
marge
/
$objp
->
selling_price
)
:
''
;
}
print
'<tr '
.
$bc
[
$var
]
.
'>'
;
print
'<td>'
;
$invoicestatic
->
id
=
$objp
->
facid
;
$invoicestatic
->
ref
=
$objp
->
facnumber
;
print
$invoicestatic
->
getNomUrl
(
1
);
print
"</td>
\n
"
;
print
'<td><a href="'
.
DOL_URL_ROOT
.
'/comm/fiche.php?socid='
.
$objp
->
socid
.
'">'
.
img_object
(
$langs
->
trans
(
"ShowCompany"
),
"company"
)
.
' '
.
dol_trunc
(
$objp
->
nom
,
44
)
.
'</a></td>'
;
print
"<td>"
.
$objp
->
code_client
.
"</td>
\n
"
;
print
"<td align=
\"
center
\"
>"
;
print
dol_print_date
(
$db
->
jdate
(
$objp
->
datef
),
'day'
)
.
"</td>"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$objp
->
selling_price
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
...
...
@@ -224,52 +219,46 @@ if ($id > 0 || ! empty($ref))
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARK_RATES
))
print
"<td align=
\"
right
\"
>"
.
((
$markRate
===
''
)
?
'n/a'
:
price
(
$markRate
,
null
,
null
,
null
,
null
,
$rounding
)
.
"%"
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
$invoicestatic
->
LibStatut
(
$objp
->
paye
,
$objp
->
statut
,
5
)
.
'</td>'
;
print
"</tr>
\n
"
;
$i
++
;
$cumul_achat
+=
$objp
->
buying_price
;
$cumul_vente
+=
$objp
->
selling_price
;
$cumul_qty
+=
$objp
->
qty
;
}
}
// affichage totaux marges
$var
=!
$var
;
$totalMargin
=
$cumul_vente
-
$cumul_achat
;
if
(
$totalMargin
<
0
)
{
$marginRate
=
(
$cumul_achat
!=
0
)
?-
1
*
(
100
*
$totalMargin
/
$cumul_achat
)
:
''
;
$markRate
=
(
$cumul_vente
!=
0
)
?-
1
*
(
100
*
$totalMargin
/
$cumul_vente
)
:
''
;
}
else
{
$marginRate
=
(
$cumul_achat
!=
0
)
?
(
100
*
$totalMargin
/
$cumul_achat
)
:
''
;
$markRate
=
(
$cumul_vente
!=
0
)
?
(
100
*
$totalMargin
/
$cumul_vente
)
:
''
;
}
print
'<tr class="liste_total">'
;
print
'<td colspan=4>'
.
$langs
->
trans
(
'TotalMargin'
)
.
"</td>"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$cumul_vente
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$cumul_achat
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$cumul_qty
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$totalMargin
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARGIN_RATES
))
print
"<td align=
\"
right
\"
>"
.
((
$marginRate
===
''
)
?
'n/a'
:
price
(
$marginRate
,
null
,
null
,
null
,
null
,
$rounding
)
.
"%"
)
.
"</td>
\n
"
;
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARK_RATES
))
print
"<td align=
\"
right
\"
>"
.
((
$markRate
===
''
)
?
'n/a'
:
price
(
$markRate
,
null
,
null
,
null
,
null
,
$rounding
)
.
"%"
)
.
"</td>
\n
"
;
print
'<td align="right"> </td>'
;
print
"</tr>
\n
"
;
}
else
{
dol_print_error
(
$db
);
}
print
"</table>"
;
print
'<br>'
;
$db
->
free
(
$result
);
}
}
else
{
dol_print_error
();
print
"</tr>
\n
"
;
$i
++
;
$cumul_achat
+=
$objp
->
buying_price
;
$cumul_vente
+=
$objp
->
selling_price
;
$cumul_qty
+=
$objp
->
qty
;
}
}
// affichage totaux marges
$var
=!
$var
;
$totalMargin
=
$cumul_vente
-
$cumul_achat
;
if
(
$totalMargin
<
0
)
{
$marginRate
=
(
$cumul_achat
!=
0
)
?-
1
*
(
100
*
$totalMargin
/
$cumul_achat
)
:
''
;
$markRate
=
(
$cumul_vente
!=
0
)
?-
1
*
(
100
*
$totalMargin
/
$cumul_vente
)
:
''
;
}
else
{
$marginRate
=
(
$cumul_achat
!=
0
)
?
(
100
*
$totalMargin
/
$cumul_achat
)
:
''
;
$markRate
=
(
$cumul_vente
!=
0
)
?
(
100
*
$totalMargin
/
$cumul_vente
)
:
''
;
}
print
'<tr class="liste_total">'
;
print
'<td colspan=4>'
.
$langs
->
trans
(
'TotalMargin'
)
.
"</td>"
;
print
'<td align="right">'
.
price
(
$cumul_vente
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
price
(
$cumul_achat
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
price
(
$cumul_qty
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
price
(
$totalMargin
,
null
,
null
,
null
,
null
,
$rounding
)
.
"</td>
\n
"
;
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARGIN_RATES
))
print
'<td align="right">'
.
((
$marginRate
===
''
)
?
'n/a'
:
price
(
$marginRate
,
null
,
null
,
null
,
null
,
$rounding
)
.
"%"
)
.
"</td>
\n
"
;
if
(
!
empty
(
$conf
->
global
->
DISPLAY_MARK_RATES
))
print
"<td align=
\"
right
\"
>"
.
((
$markRate
===
''
)
?
'n/a'
:
price
(
$markRate
,
null
,
null
,
null
,
null
,
$rounding
)
.
"%"
)
.
"</td>
\n
"
;
print
'<td align="right"> </td>'
;
print
"</tr>
\n
"
;
print
"</table>"
;
print
'<br>'
;
}
else
{
dol_print_error
(
$db
);
}
$db
->
free
(
$result
);
}
}
}
else
{
dol_print_error
();
}
...
...
This diff is collapsed.
Click to expand it.
htdocs/product/stats/facture.php
+
68
−
73
View file @
fada3ca9
...
...
@@ -120,80 +120,75 @@ if ($id > 0 || ! empty($ref))
print
'</div>'
;
$sql
=
"SELECT distinct s.nom, s.rowid as socid, s.code_client,"
;
$sql
.
=
" f.facnumber, f.total as total_ht,"
;
$sql
.
=
" f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", sc.fk_soc, sc.fk_user "
;
$sql
.
=
" FROM "
.
MAIN_DB_PREFIX
.
"societe as s"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facture as f"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facturedet as d"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"societe_commerciaux as sc"
;
$sql
.
=
" WHERE f.fk_soc = s.rowid"
;
$sql
.
=
" AND f.entity = "
.
$conf
->
entity
;
$sql
.
=
" AND d.fk_facture = f.rowid"
;
$sql
.
=
" AND d.fk_product ="
.
$product
->
id
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" AND s.rowid = sc.fk_soc AND sc.fk_user = "
.
$user
->
id
;
if
(
$socid
)
$sql
.
=
" AND f.fk_soc =
$socid
"
;
$sql
.
=
" ORDER BY
$sortfield
$sortorder
"
;
$sql
.
=
$db
->
plimit
(
$conf
->
liste_limit
+
1
,
$offset
);
$result
=
$db
->
query
(
$sql
);
if
(
$result
)
{
$num
=
$db
->
num_rows
(
$result
);
print_barre_liste
(
$langs
->
trans
(
"CustomersInvoices"
),
$page
,
$_SERVER
[
"PHP_SELF"
],
"&id=
$product->id
"
,
$sortfield
,
$sortorder
,
''
,
$num
,
0
,
''
);
$i
=
0
;
print
"<table class=
\"
noborder
\"
width=
\"
100%
\"
>"
;
print
'<tr class="liste_titre">'
;
print_liste_field_titre
(
$langs
->
trans
(
"Ref"
),
$_SERVER
[
"PHP_SELF"
],
"s.rowid"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Company"
),
$_SERVER
[
"PHP_SELF"
],
"s.nom"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"CustomerCode"
),
$_SERVER
[
"PHP_SELF"
],
"s.code_client"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"DateInvoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.datef"
,
""
,
"&id="
.
$product
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Qty"
),
$_SERVER
[
"PHP_SELF"
],
"d.qty"
,
""
,
"&id="
.
$product
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"AmountHT"
),
$_SERVER
[
"PHP_SELF"
],
"f.total_ht"
,
""
,
"&id="
.
$product
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Status"
),
$_SERVER
[
"PHP_SELF"
],
"f.paye,f.fk_statut"
,
""
,
"&id="
.
$product
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print
"</tr>
\n
"
;
if
(
$num
>
0
)
{
$var
=
True
;
while
(
$i
<
$num
&&
$i
<
$conf
->
liste_limit
)
{
$objp
=
$db
->
fetch_object
(
$result
);
$var
=!
$var
;
print
"<tr "
.
$bc
[
$var
]
.
">"
;
print
'<td>'
;
$invoicestatic
->
id
=
$objp
->
facid
;
$invoicestatic
->
ref
=
$objp
->
facnumber
;
print
$invoicestatic
->
getNomUrl
(
1
);
print
"</td>
\n
"
;
print
'<td><a href="'
.
DOL_URL_ROOT
.
'/comm/fiche.php?socid='
.
$objp
->
socid
.
'">'
.
img_object
(
$langs
->
trans
(
"ShowCompany"
),
"company"
)
.
' '
.
dol_trunc
(
$objp
->
nom
,
44
)
.
'</a></td>'
;
print
"<td>"
.
$objp
->
code_client
.
"</td>
\n
"
;
print
"<td align=
\"
center
\"
>"
;
print
dol_print_date
(
$db
->
jdate
(
$objp
->
datef
),
'day'
)
.
"</td>"
;
print
"<td align=
\"
center
\"
>"
.
$objp
->
qty
.
"</td>
\n
"
;
print
"<td align=
\"
right
\"
>"
.
price
(
$objp
->
total_ht
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
$invoicestatic
->
LibStatut
(
$objp
->
paye
,
$objp
->
statut
,
5
)
.
'</td>'
;
print
"</tr>
\n
"
;
$i
++
;
}
}
}
else
{
dol_print_error
(
$db
);
}
print
"</table>"
;
print
'<br>'
;
$db
->
free
(
$result
);
if
(
$user
->
rights
->
facture
->
lire
)
{
$sql
=
"SELECT distinct s.nom, s.rowid as socid, s.code_client,"
;
$sql
.
=
" f.facnumber, f.total as total_ht,"
;
$sql
.
=
" f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", sc.fk_soc, sc.fk_user "
;
$sql
.
=
" FROM "
.
MAIN_DB_PREFIX
.
"societe as s"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facture as f"
;
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"facturedet as d"
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
", "
.
MAIN_DB_PREFIX
.
"societe_commerciaux as sc"
;
$sql
.
=
" WHERE f.fk_soc = s.rowid"
;
$sql
.
=
" AND f.entity = "
.
$conf
->
entity
;
$sql
.
=
" AND d.fk_facture = f.rowid"
;
$sql
.
=
" AND d.fk_product ="
.
$product
->
id
;
if
(
!
$user
->
rights
->
societe
->
client
->
voir
&&
!
$socid
)
$sql
.
=
" AND s.rowid = sc.fk_soc AND sc.fk_user = "
.
$user
->
id
;
if
(
$socid
)
$sql
.
=
" AND f.fk_soc =
$socid
"
;
$sql
.
=
" ORDER BY
$sortfield
$sortorder
"
;
$sql
.
=
$db
->
plimit
(
$conf
->
liste_limit
+
1
,
$offset
);
$result
=
$db
->
query
(
$sql
);
if
(
$result
)
{
$num
=
$db
->
num_rows
(
$result
);
print_barre_liste
(
$langs
->
trans
(
"CustomersInvoices"
),
$page
,
$_SERVER
[
"PHP_SELF"
],
"&id=
$product->id
"
,
$sortfield
,
$sortorder
,
''
,
$num
,
0
,
''
);
$i
=
0
;
print
'<table class="noborder" width="100%">'
;
print
'<tr class="liste_titre">'
;
print_liste_field_titre
(
$langs
->
trans
(
"Ref"
),
$_SERVER
[
"PHP_SELF"
],
"s.rowid"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Company"
),
$_SERVER
[
"PHP_SELF"
],
"s.nom"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"CustomerCode"
),
$_SERVER
[
"PHP_SELF"
],
"s.code_client"
,
""
,
"&id="
.
$product
->
id
,
''
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"DateInvoice"
),
$_SERVER
[
"PHP_SELF"
],
"f.datef"
,
""
,
"&id="
.
$product
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Qty"
),
$_SERVER
[
"PHP_SELF"
],
"d.qty"
,
""
,
"&id="
.
$product
->
id
,
'align="center"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"AmountHT"
),
$_SERVER
[
"PHP_SELF"
],
"f.total_ht"
,
""
,
"&id="
.
$product
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print_liste_field_titre
(
$langs
->
trans
(
"Status"
),
$_SERVER
[
"PHP_SELF"
],
"f.paye,f.fk_statut"
,
""
,
"&id="
.
$product
->
id
,
'align="right"'
,
$sortfield
,
$sortorder
);
print
"</tr>
\n
"
;
if
(
$num
>
0
)
{
$var
=
True
;
while
(
$i
<
$num
&&
$i
<
$conf
->
liste_limit
)
{
$objp
=
$db
->
fetch_object
(
$result
);
$var
=!
$var
;
print
'<tr '
.
$bc
[
$var
]
.
'>'
;
print
'<td>'
;
$invoicestatic
->
id
=
$objp
->
facid
;
$invoicestatic
->
ref
=
$objp
->
facnumber
;
print
$invoicestatic
->
getNomUrl
(
1
);
print
"</td>
\n
"
;
print
'<td><a href="'
.
DOL_URL_ROOT
.
'/comm/fiche.php?socid='
.
$objp
->
socid
.
'">'
.
img_object
(
$langs
->
trans
(
"ShowCompany"
),
"company"
)
.
' '
.
dol_trunc
(
$objp
->
nom
,
44
)
.
'</a></td>'
;
print
"<td>"
.
$objp
->
code_client
.
"</td>
\n
"
;
print
'<td align="center">'
;
print
dol_print_date
(
$db
->
jdate
(
$objp
->
datef
),
'day'
)
.
"</td>"
;
print
'<td align="center">'
.
$objp
->
qty
.
"</td>
\n
"
;
print
'<td align="right">'
.
price
(
$objp
->
total_ht
)
.
"</td>
\n
"
;
print
'<td align="right">'
.
$invoicestatic
->
LibStatut
(
$objp
->
paye
,
$objp
->
statut
,
5
)
.
'</td>'
;
print
"</tr>
\n
"
;
$i
++
;
}
}
print
"</table>"
;
print
'<br>'
;
}
else
{
dol_print_error
(
$db
);
}
$db
->
free
(
$result
);
}
}
}
else
{
}
else
{
dol_print_error
();
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment