chore: build
This commit is contained in:
@@ -537,7 +537,7 @@ func GetMyDeliveryStats(c *gin.Context) {
|
||||
gdb.Raw(`
|
||||
SELECT DATE(updated_at) AS day,
|
||||
COUNT(*) AS count,
|
||||
COALESCE(SUM(total_prix), 0) AS revenue
|
||||
COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) AS revenue
|
||||
FROM commandes
|
||||
WHERE livreur_assign = ?
|
||||
AND status IN ('livre', 'approved')
|
||||
@@ -551,7 +551,7 @@ func GetMyDeliveryStats(c *gin.Context) {
|
||||
SELECT EXTRACT(WEEK FROM updated_at)::int AS week_num,
|
||||
EXTRACT(YEAR FROM updated_at)::int AS year,
|
||||
COUNT(*) AS count,
|
||||
COALESCE(SUM(total_prix), 0) AS revenue
|
||||
COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) AS revenue
|
||||
FROM commandes
|
||||
WHERE livreur_assign = ?
|
||||
AND status IN ('livre', 'approved')
|
||||
@@ -565,7 +565,7 @@ func GetMyDeliveryStats(c *gin.Context) {
|
||||
SELECT EXTRACT(MONTH FROM updated_at)::int AS month_num,
|
||||
EXTRACT(YEAR FROM updated_at)::int AS year,
|
||||
COUNT(*) AS count,
|
||||
COALESCE(SUM(total_prix), 0) AS revenue
|
||||
COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) AS revenue
|
||||
FROM commandes
|
||||
WHERE livreur_assign = ?
|
||||
AND status IN ('livre', 'approved')
|
||||
|
||||
@@ -64,7 +64,7 @@ func GetAdminStats(c *gin.Context) {
|
||||
// ── Revenus par jour sur 30 jours (commandes approuvées) ─────────────────
|
||||
var dayRevRows []models.DayRevenueRow
|
||||
gdb.Raw(`
|
||||
SELECT DATE(created_at) AS day, COALESCE(SUM(total_prix), 0) AS revenue
|
||||
SELECT DATE(created_at) AS day, COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) AS revenue
|
||||
FROM commandes
|
||||
WHERE created_at >= NOW() - INTERVAL '30 days'
|
||||
AND status = 'approved'
|
||||
@@ -87,7 +87,7 @@ func GetAdminStats(c *gin.Context) {
|
||||
SELECT
|
||||
EXTRACT(HOUR FROM created_at)::int AS hour,
|
||||
COUNT(*) AS count,
|
||||
COALESCE(SUM(total_prix), 0) AS revenue
|
||||
COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) AS revenue
|
||||
FROM commandes
|
||||
WHERE status != 'cancelled'
|
||||
GROUP BY hour
|
||||
@@ -221,7 +221,7 @@ func GetAdminStats(c *gin.Context) {
|
||||
var totalOrders int64
|
||||
var totalRevenue float64
|
||||
gdb.Raw(`SELECT COUNT(*) FROM commandes WHERE status != 'cancelled'`).Scan(&totalOrders)
|
||||
gdb.Raw(`SELECT COALESCE(SUM(total_prix), 0) FROM commandes WHERE status = 'approved'`).Scan(&totalRevenue)
|
||||
gdb.Raw(`SELECT COALESCE(SUM(total_prix - COALESCE(referral_used, 0)), 0) FROM commandes WHERE status = 'approved'`).Scan(&totalRevenue)
|
||||
|
||||
avgPerDay := 0.0
|
||||
if totalOrders > 0 {
|
||||
|
||||
@@ -678,12 +678,17 @@ export default function OrderDetailScreen() {
|
||||
<Text style={styles.info}>Client: {command.username}</Text>
|
||||
<Text style={styles.info}>Adresse: {command.adresse}</Text>
|
||||
<Text style={styles.info}>
|
||||
Total: {command.total_prix?.toFixed(2)} €
|
||||
Total brut: {command.total_prix?.toFixed(2)} €
|
||||
</Text>
|
||||
{command.referral_used > 0 && (
|
||||
<Text style={[styles.info, { color: colors.success }]}>
|
||||
Parrainage utilisé: -{command.referral_used?.toFixed(2)} €
|
||||
</Text>
|
||||
<>
|
||||
<Text style={[styles.info, { color: colors.success }]}>
|
||||
Parrainage utilisé: -{command.referral_used?.toFixed(2)} €
|
||||
</Text>
|
||||
<Text style={[styles.info, { fontWeight: "700", color: colors.textPrimary }]}>
|
||||
Net: {(command.total_prix - command.referral_used).toFixed(2)} €
|
||||
</Text>
|
||||
</>
|
||||
)}
|
||||
{command.livreur_assign && (
|
||||
<Text style={styles.info}>
|
||||
|
||||
@@ -487,8 +487,18 @@ export default function OrdersScreen() {
|
||||
<Text style={styles.info}>Client: {item.username}</Text>
|
||||
<Text style={styles.info}>Adresse: {item.adresse}</Text>
|
||||
<Text style={styles.info}>
|
||||
Total: {item.total_prix.toFixed(2)} €
|
||||
Total{(item.referral_used ?? 0) > 0 ? " brut" : ""}: {item.total_prix.toFixed(2)} €
|
||||
</Text>
|
||||
{(item.referral_used ?? 0) > 0 && (
|
||||
<>
|
||||
<Text style={[styles.info, { color: colors.success }]}>
|
||||
Parrainage: -{(item.referral_used ?? 0).toFixed(2)} €
|
||||
</Text>
|
||||
<Text style={[styles.info, { fontWeight: "700" }]}>
|
||||
Net: {(item.total_prix - (item.referral_used ?? 0)).toFixed(2)} €
|
||||
</Text>
|
||||
</>
|
||||
)}
|
||||
|
||||
<TouchableOpacity
|
||||
style={styles.selectBtn}
|
||||
|
||||
@@ -721,24 +721,34 @@ export default function DashboardScreen() {
|
||||
</Text>
|
||||
</View>
|
||||
{(item.referral_used ?? 0) > 0 && (
|
||||
<View style={[styles.totalRow, { marginTop: 2 }]}>
|
||||
<Text
|
||||
style={[
|
||||
styles.totalLabel,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
Parrainage client
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.totalValue,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
-{(item.referral_used ?? 0).toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
<>
|
||||
<View style={[styles.totalRow, { marginTop: 2 }]}>
|
||||
<Text
|
||||
style={[
|
||||
styles.totalLabel,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
Parrainage client
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.totalValue,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
-{(item.referral_used ?? 0).toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
<View style={[styles.totalRow, { marginTop: 2 }]}>
|
||||
<Text style={[styles.totalLabel, { fontWeight: "700" }]}>
|
||||
Net à encaisser
|
||||
</Text>
|
||||
<Text style={[styles.totalValue, { fontWeight: "700" }]}>
|
||||
{((item.total_prix ?? 0) - (item.referral_used ?? 0)).toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
</>
|
||||
)}
|
||||
</View>
|
||||
)}
|
||||
@@ -1994,24 +2004,34 @@ export default function DashboardScreen() {
|
||||
</Text>
|
||||
</View>
|
||||
{(detailsDelivery?.referral_used ?? 0) > 0 && (
|
||||
<View style={[styles.detailTotalRow, { marginTop: 4 }]}>
|
||||
<Text
|
||||
style={[
|
||||
styles.detailTotalLabel,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
Parrainage client
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.detailTotalValue,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
-{detailsDelivery?.referral_used?.toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
<>
|
||||
<View style={[styles.detailTotalRow, { marginTop: 4 }]}>
|
||||
<Text
|
||||
style={[
|
||||
styles.detailTotalLabel,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
Parrainage client
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.detailTotalValue,
|
||||
{ color: colors.success },
|
||||
]}
|
||||
>
|
||||
-{detailsDelivery?.referral_used?.toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
<View style={[styles.detailTotalRow, { marginTop: 4 }]}>
|
||||
<Text style={[styles.detailTotalLabel, { fontWeight: "700" }]}>
|
||||
Net à encaisser
|
||||
</Text>
|
||||
<Text style={[styles.detailTotalValue, { fontWeight: "700" }]}>
|
||||
{((detailsDelivery?.total_prix ?? 0) - (detailsDelivery?.referral_used ?? 0)).toFixed(2)}€
|
||||
</Text>
|
||||
</View>
|
||||
</>
|
||||
)}
|
||||
</ScrollView>
|
||||
</DetailsModal>
|
||||
|
||||
@@ -409,6 +409,13 @@
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.order-card-referral {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 500;
|
||||
color: #10b981;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
.order-card-chevron {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.9rem;
|
||||
|
||||
@@ -480,6 +480,11 @@ function ConsultationHistorique() {
|
||||
<div className="order-card-footer">
|
||||
<span className="order-card-total">
|
||||
{formatPrice((order.total_prix || 0) - (order.referral_used || 0))}
|
||||
{(order.referral_used || 0) > 0 && (
|
||||
<span className="order-card-referral">
|
||||
{" "}— dont {formatPrice(order.referral_used)} parrainage
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
<FontAwesomeIcon
|
||||
icon={faChevronRight}
|
||||
|
||||
+8
-11
@@ -980,17 +980,14 @@ export const claimMyReward = async (poolKey: string): Promise<{
|
||||
};
|
||||
|
||||
export const calculateOrderTotal = (order: any): number => {
|
||||
if (typeof order.total === "number" && order.total > 0) return order.total;
|
||||
if (typeof order.total_prix === "number" && order.total_prix > 0)
|
||||
return order.total_prix;
|
||||
if (Array.isArray(order.items) && order.items.length > 0) {
|
||||
return order.items.reduce((sum: number, item: any) => {
|
||||
return (
|
||||
sum +
|
||||
(item.prix || item.price || 0) *
|
||||
(item.quantite || item.quantity || 1)
|
||||
);
|
||||
let gross = 0;
|
||||
if (typeof order.total === "number" && order.total > 0) gross = order.total;
|
||||
else if (typeof order.total_prix === "number" && order.total_prix > 0) gross = order.total_prix;
|
||||
else if (Array.isArray(order.items) && order.items.length > 0) {
|
||||
gross = order.items.reduce((sum: number, item: any) => {
|
||||
return sum + (item.prix || item.price || 0) * (item.quantite || item.quantity || 1);
|
||||
}, 0);
|
||||
}
|
||||
return 0;
|
||||
const referralUsed = typeof order.referral_used === "number" ? order.referral_used : 0;
|
||||
return Math.max(0, gross - referralUsed);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user