mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-14 10:49:10 +02:00
Merge pull request #73 from R0m1k3/1.1
Improve delivery reconciliation by ensuring group data is fetched cor…
This commit is contained in:
2 files changed
+132
-7
No files matched your search
@@ -222,6 +222,18 @@ export default function BLReconciliation() {
|
||||
// Et il faut qu'il y ait un magasin assigné avec un webhook
|
||||
const hasValidGroup = delivery.group && delivery.group.webhookUrl;
|
||||
|
||||
// Debug temporaire pour diagnostiquer le problème
|
||||
if (delivery && delivery.supplier?.name) {
|
||||
console.log(`🔍 Debug bouton facture pour ${delivery.supplier.name}:`, {
|
||||
isNotValidated,
|
||||
hasNoInvoiceReference,
|
||||
hasValidGroup,
|
||||
group: delivery.group,
|
||||
webhookUrl: delivery.group?.webhookUrl,
|
||||
shouldShow: (isNotValidated || hasNoInvoiceReference) && hasValidGroup
|
||||
});
|
||||
}
|
||||
|
||||
return (isNotValidated || hasNoInvoiceReference) && hasValidGroup;
|
||||
};
|
||||
|
||||
|
||||
+120
-7
@@ -543,7 +543,14 @@ export class DatabaseStorage implements IStorage {
|
||||
const results = await db.query.deliveries.findMany({
|
||||
with: {
|
||||
supplier: true,
|
||||
group: true,
|
||||
group: {
|
||||
columns: {
|
||||
id: true,
|
||||
name: true,
|
||||
color: true,
|
||||
webhookUrl: true,
|
||||
}
|
||||
},
|
||||
creator: true,
|
||||
order: true,
|
||||
},
|
||||
@@ -572,7 +579,14 @@ export class DatabaseStorage implements IStorage {
|
||||
const results = await db.query.deliveries.findMany({
|
||||
with: {
|
||||
supplier: true,
|
||||
group: true,
|
||||
group: {
|
||||
columns: {
|
||||
id: true,
|
||||
name: true,
|
||||
color: true,
|
||||
webhookUrl: true,
|
||||
}
|
||||
},
|
||||
creator: true,
|
||||
order: true,
|
||||
},
|
||||
@@ -591,7 +605,14 @@ export class DatabaseStorage implements IStorage {
|
||||
where: eq(deliveries.id, id),
|
||||
with: {
|
||||
supplier: true,
|
||||
group: true,
|
||||
group: {
|
||||
columns: {
|
||||
id: true,
|
||||
name: true,
|
||||
color: true,
|
||||
webhookUrl: true,
|
||||
}
|
||||
},
|
||||
creator: true,
|
||||
order: true,
|
||||
},
|
||||
@@ -2034,8 +2055,8 @@ class MemStorage implements IStorage {
|
||||
|
||||
// Add test groups
|
||||
const testGroups = [
|
||||
{ id: 1, name: 'Magasin A', color: '#FF5733', createdAt: new Date(), updatedAt: new Date() },
|
||||
{ id: 2, name: 'Magasin B', color: '#33FF57', createdAt: new Date(), updatedAt: new Date() },
|
||||
{ id: 1, name: 'Magasin A', color: '#FF5733', webhookUrl: 'https://webhook.site/test-facture-magasin-a', createdAt: new Date(), updatedAt: new Date() },
|
||||
{ id: 2, name: 'Magasin B', color: '#33FF57', webhookUrl: 'https://webhook.site/test-facture-magasin-b', createdAt: new Date(), updatedAt: new Date() },
|
||||
{ id: 3, name: 'Magasin C', color: '#3357FF', createdAt: new Date(), updatedAt: new Date() }
|
||||
];
|
||||
testGroups.forEach(group => this.groups.set(group.id, group as Group));
|
||||
@@ -2076,6 +2097,63 @@ class MemStorage implements IStorage {
|
||||
{ publicityId: 2, groupId: 3, createdAt: new Date() }
|
||||
);
|
||||
|
||||
// Add test suppliers
|
||||
const testSuppliers = [
|
||||
{ id: 1, name: 'Fournisseur Test A', automaticReconciliation: false, createdAt: new Date(), updatedAt: new Date() },
|
||||
{ id: 2, name: 'Fournisseur Test B', automaticReconciliation: true, createdAt: new Date(), updatedAt: new Date() }
|
||||
];
|
||||
testSuppliers.forEach(supplier => this.suppliers.set(supplier.id, supplier as Supplier));
|
||||
|
||||
// Add test deliveries
|
||||
const testDeliveries = [
|
||||
{
|
||||
id: 1,
|
||||
supplierId: 1,
|
||||
groupId: 1,
|
||||
blNumber: 'BL001',
|
||||
status: 'delivered',
|
||||
scheduledDate: '2025-08-10',
|
||||
deliveredDate: '2025-08-10',
|
||||
blAmount: '150.50',
|
||||
reconciled: false,
|
||||
createdBy: 'admin_dev',
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date()
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
supplierId: 2,
|
||||
groupId: 2,
|
||||
blNumber: 'BL002',
|
||||
status: 'delivered',
|
||||
scheduledDate: '2025-08-11',
|
||||
deliveredDate: '2025-08-11',
|
||||
blAmount: '89.99',
|
||||
invoiceReference: 'FACT202',
|
||||
invoiceAmount: '89.99',
|
||||
reconciled: false,
|
||||
createdBy: 'admin_dev',
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date()
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
supplierId: 1,
|
||||
groupId: 3,
|
||||
blNumber: 'BL003',
|
||||
status: 'delivered',
|
||||
scheduledDate: '2025-08-12',
|
||||
deliveredDate: '2025-08-12',
|
||||
blAmount: '234.75',
|
||||
reconciled: true,
|
||||
validatedAt: new Date(),
|
||||
createdBy: 'admin_dev',
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date()
|
||||
}
|
||||
];
|
||||
testDeliveries.forEach(delivery => this.deliveries.set(delivery.id, delivery as Delivery));
|
||||
|
||||
console.log('✅ MemStorage initialized with admin user (admin/admin)');
|
||||
console.log('📢 Test publicities and groups added for development');
|
||||
}
|
||||
@@ -2147,7 +2225,9 @@ class MemStorage implements IStorage {
|
||||
async createGroup(group: InsertGroup): Promise<Group> { return {} as Group; }
|
||||
async updateGroup(id: number, group: Partial<InsertGroup>): Promise<Group> { return {} as Group; }
|
||||
async deleteGroup(id: number): Promise<void> {}
|
||||
async getSuppliers(): Promise<Supplier[]> { return []; }
|
||||
async getSuppliers(): Promise<Supplier[]> {
|
||||
return Array.from(this.suppliers.values());
|
||||
}
|
||||
async createSupplier(supplier: InsertSupplier): Promise<Supplier> { return {} as Supplier; }
|
||||
async updateSupplier(id: number, supplier: Partial<InsertSupplier>): Promise<Supplier> { return {} as Supplier; }
|
||||
async deleteSupplier(id: number): Promise<void> {}
|
||||
@@ -2156,7 +2236,40 @@ class MemStorage implements IStorage {
|
||||
async createOrder(order: InsertOrder): Promise<Order> { return {} as Order; }
|
||||
async updateOrder(id: number, order: Partial<InsertOrder>): Promise<Order> { return {} as Order; }
|
||||
async deleteOrder(id: number): Promise<void> {}
|
||||
async getDeliveries(groupIds?: number[]): Promise<DeliveryWithRelations[]> { return []; }
|
||||
async getDeliveries(groupIds?: number[]): Promise<DeliveryWithRelations[]> {
|
||||
console.log('🚚 MemStorage getDeliveries called with:', { groupIds });
|
||||
|
||||
let deliveriesArray = Array.from(this.deliveries.values());
|
||||
|
||||
// Filter by groups if provided
|
||||
if (groupIds && groupIds.length > 0) {
|
||||
deliveriesArray = deliveriesArray.filter(d => groupIds.includes(d.groupId));
|
||||
}
|
||||
|
||||
// Add relations (supplier, group, creator)
|
||||
const deliveriesWithRelations = deliveriesArray.map(delivery => ({
|
||||
...delivery,
|
||||
supplier: this.suppliers.get(delivery.supplierId!),
|
||||
group: this.groups.get(delivery.groupId!),
|
||||
creator: this.users.get(delivery.createdBy!),
|
||||
order: undefined // No orders in test data for now
|
||||
}));
|
||||
|
||||
console.log('🚚 MemStorage returning deliveries:', {
|
||||
total: deliveriesWithRelations.length,
|
||||
sample: deliveriesWithRelations[0] ? {
|
||||
id: deliveriesWithRelations[0].id,
|
||||
blNumber: deliveriesWithRelations[0].blNumber,
|
||||
supplier: deliveriesWithRelations[0].supplier?.name,
|
||||
group: {
|
||||
name: deliveriesWithRelations[0].group?.name,
|
||||
hasWebhook: !!deliveriesWithRelations[0].group?.webhookUrl
|
||||
}
|
||||
} : null
|
||||
});
|
||||
|
||||
return deliveriesWithRelations as DeliveryWithRelations[];
|
||||
}
|
||||
async getDeliveriesByDateRange(startDate: string, endDate: string, groupIds?: number[]): Promise<DeliveryWithRelations[]> { return []; }
|
||||
async createDelivery(delivery: InsertDelivery): Promise<Delivery> { return {} as Delivery; }
|
||||
async updateDelivery(id: number, delivery: Partial<InsertDelivery>): Promise<Delivery> { return {} as Delivery; }
|
||||
|
||||
Reference in new issue
Block a user