@placeshakr/config 10.33.0-alpha.2 → 10.33.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSupplierIgnored = exports.findMatchingIgnoredSupplier = exports.normalizeRegNo = exports.normalizeSupplierName = exports.getPennylaneInvoiceUrl = exports.ENTERPRISE_PENNYLANE_COMPANY_IDS = exports.billIssuedToPennylanePayload = exports.billIssuedToPennylaneLines = exports.pennylaneDeadline = exports.formatPennylaneErrorMessage = exports.getBillBlockers = exports.isBillIssuedSentToPennylane = exports.toPennylaneLineAmount = exports.isPennylaneDraftStatus = exports.usesPennylaneNumbering = exports.toVatRateCode = void 0;
3
+ exports.isSupplierIgnored = exports.findMatchingIgnoredSupplier = exports.normalizeRegNo = exports.normalizeSupplierName = exports.getPennylaneInvoiceUrl = exports.ENTERPRISE_PENNYLANE_COMPANY_IDS = exports.getReceivedBillSupplier = exports.billIssuedToPennylanePayload = exports.billIssuedToPennylaneLines = exports.PENNYLANE_DEDUCTION_LABEL = exports.pennylaneDeadline = exports.formatPennylaneErrorMessage = exports.getBillBlockers = exports.isBillIssuedSentToPennylane = exports.toPennylaneLineAmount = exports.isPennylaneDraftStatus = exports.usesPennylaneNumbering = exports.toVatRateCode = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const articho = tslib_1.__importStar(require("../types"));
6
6
  const validate_1 = require("./validate");
@@ -251,28 +251,106 @@ const pennylaneDeadline = (bill, date) => {
251
251
  return date + termDays * 24 * 60 * 60 * 1000;
252
252
  };
253
253
  exports.pennylaneDeadline = pennylaneDeadline;
254
+ /** Etiqueta de la línea que descuenta lo ya facturado del devis en una factura de saldo. */
255
+ exports.PENNYLANE_DEDUCTION_LABEL = 'Déduction des acomptes';
256
+ const roundCents = (value) => Math.round((value + Number.EPSILON) * 100) / 100;
257
+ /**
258
+ * Base HT de la factura antes de la remise general, con el signo con el que
259
+ * viaja a PennyLane, o null si la factura no guarda sus precios.
260
+ *
261
+ * `HT + adjustments` es el total antes de la remise general en todos los
262
+ * formularios (ver `setBillIssuedPrices`): en una factura normal suma las
263
+ * líneas con sus remises; en una de saldo ya descuenta lo facturado antes.
264
+ */
265
+ const baseBeforeGeneralDiscount = (bill) => {
266
+ const HT = bill?.prices?.HT;
267
+ if (typeof HT !== 'number' || !Number.isFinite(HT))
268
+ return null;
269
+ const base = HT + (Number(bill?.prices?.adjustments) || 0);
270
+ return bill?.subType === articho.BillIssuedType.CREDIT_NOTE ? -Math.abs(base) : base;
271
+ };
272
+ /**
273
+ * Líneas que descuentan lo ya facturado del devis (acomptes, situaciones) en
274
+ * una factura de saldo o en su avoir.
275
+ *
276
+ * Las líneas de una factura de saldo guardan el importe completo del devis y
277
+ * el total de la factura descuenta el porcentaje ya facturado, igual en todas
278
+ * las líneas. Sin este descuento PennyLane facturaría el devis entero. Va una
279
+ * línea por tipo de TVA para que la TVA de cada tipo cuadre con Articho.
280
+ */
281
+ const deductionLines = (bill, lines) => {
282
+ const isBalance = bill?.subType === articho.BillIssuedType.BALANCE;
283
+ // un avoir copia la factura que anula: solo el de una factura de saldo tiene `isGrouped`
284
+ const isBalanceCreditNote = bill?.subType === articho.BillIssuedType.CREDIT_NOTE && bill?.isGrouped !== undefined;
285
+ if (!isBalance && !isBalanceCreditNote)
286
+ return [];
287
+ const target = baseBeforeGeneralDiscount(bill);
288
+ const sent = lines.reduce((sum, line) => sum + line.quantity * line.unitPrice, 0);
289
+ if (target === null || !sent || Math.abs(target - sent) < 0.01)
290
+ return [];
291
+ const byRate = new Map();
292
+ lines.forEach((line) => {
293
+ byRate.set(line.vatRate, (byRate.get(line.vatRate) ?? 0) + line.quantity * line.unitPrice);
294
+ });
295
+ const ratio = (target - sent) / sent;
296
+ const deductions = [...byRate.entries()]
297
+ .map(([vatRate, amount]) => ({ vatRate, amount: roundCents(amount * ratio) }))
298
+ .filter((deduction) => deduction.amount !== 0);
299
+ if (!deductions.length)
300
+ return [];
301
+ // el redondeo por tipo de TVA no puede mover el total: el resto va al mayor
302
+ const remainder = roundCents(target - sent - deductions.reduce((s, d) => s + d.amount, 0));
303
+ const largest = deductions.reduce((a, b) => (Math.abs(b.amount) > Math.abs(a.amount) ? b : a));
304
+ largest.amount = roundCents(largest.amount + remainder);
305
+ return deductions.map((deduction) => ({
306
+ label: exports.PENNYLANE_DEDUCTION_LABEL,
307
+ quantity: 1,
308
+ unit: 'piece',
309
+ unitPrice: deduction.amount,
310
+ vatRate: deduction.vatRate,
311
+ }));
312
+ };
254
313
  /**
255
314
  * Líneas de una factura emitida tal como viajan a PennyLane: cada línea con su
256
315
  * « Total HT » y su TVA. En un avoir los importes van en negativo.
316
+ *
317
+ * Las líneas no facturadas (`isInvoiced: false`) no cuentan en el total de
318
+ * Articho y no se envían. En una factura de saldo se añade el descuento de lo
319
+ * ya facturado del devis (ver `deductionLines`).
320
+ *
257
321
  * @param {articho.BillIssued} bill Factura emitida.
258
322
  * @return {PennylaneInvoicePayload['lines']} Líneas.
259
323
  */
260
324
  const billIssuedToPennylaneLines = (bill) => {
261
325
  const isCreditNote = bill?.subType === articho.BillIssuedType.CREDIT_NOTE;
262
- return [...(bill?.elements ?? [])]
263
- .sort((a, b) => (a?.order ?? 0) - (b?.order ?? 0))
264
- .map((element) => {
265
- const amount = (0, exports.toPennylaneLineAmount)(element);
326
+ const isDownPayment = bill?.subType === articho.BillIssuedType.DOWN_PAYMENT;
327
+ const elements = [...(bill?.elements ?? [])]
328
+ // los acomptes calculan su total con todas sus líneas
329
+ .filter((element) => isDownPayment || element?.isInvoiced !== false)
330
+ .sort((a, b) => (a?.order ?? 0) - (b?.order ?? 0));
331
+ const amounts = elements.map(exports.toPennylaneLineAmount);
332
+ // Un avoir anula su factura: cada línea cambia de signo, y una línea negativa
333
+ // (commission apporteur, moins-value) pasa a positiva. Solo un avoir cuyas
334
+ // líneas suman en negativo conserva todas sus líneas en negativo.
335
+ const creditNoteOfPositiveBill = isCreditNote && amounts.reduce((sum, a) => sum + a.quantity * a.unitPrice, 0) >= 0;
336
+ const toSentPrice = (unitPrice) => {
337
+ if (!isCreditNote)
338
+ return unitPrice;
339
+ return creditNoteOfPositiveBill ? -unitPrice : -Math.abs(unitPrice);
340
+ };
341
+ const lines = elements.map((element, index) => {
342
+ const amount = amounts[index];
266
343
  return {
267
344
  label: element.description,
268
345
  quantity: amount.quantity,
269
346
  unit: 'piece',
270
- unitPrice: isCreditNote ? -Math.abs(amount.unitPrice) : amount.unitPrice,
347
+ unitPrice: toSentPrice(amount.unitPrice),
271
348
  // `bill.tva` es la casilla « TVA non applicable »: true = sin IVA.
272
349
  vatRate: (0, exports.toVatRateCode)(element.tva, bill?.tva !== true),
273
350
  ...(amount.discount ? { discount: amount.discount } : {}),
274
351
  };
275
352
  });
353
+ return [...lines, ...deductionLines(bill, lines)];
276
354
  };
277
355
  exports.billIssuedToPennylaneLines = billIssuedToPennylaneLines;
278
356
  /**
@@ -361,6 +439,52 @@ const billIssuedToPennylanePayload = (bill, context) => {
361
439
  };
362
440
  };
363
441
  exports.billIssuedToPennylanePayload = billIssuedToPennylanePayload;
442
+ /**
443
+ * Quién emitió una factura recibida, es decir, su proveedor en PennyLane.
444
+ *
445
+ * Es el « Émetteur » elegido en la factura, no quien la subió: un
446
+ * administrador sube facturas en nombre de un pro o de un apporteur, y tomar
447
+ * al que la subió mandaba a PennyLane los datos del administrador (o los de la
448
+ * empresa) como si fueran los del proveedor.
449
+ *
450
+ * - `entityPro` / `entityProvider`, si la factura los tiene.
451
+ * - Entidad PRO: el pro elegido (`entityData.id`, con forma `userId-enterpriseId`).
452
+ * - Entidad PROVIDER: el apporteur elegido (`entityData.id`).
453
+ * - Fournisseurs de matériaux o de services y « Autre »: texto libre, sin ficha.
454
+ * - Sin entidad: el pro que subió su propia factura.
455
+ *
456
+ * @param {articho.BillReceived} bill Factura recibida.
457
+ * @return {ReceivedBillSupplier | null} Ficha del proveedor, o null si no tiene.
458
+ */
459
+ const getReceivedBillSupplier = (bill) => {
460
+ if (!bill)
461
+ return null;
462
+ if (bill.entityPro)
463
+ return { kind: 'profile', id: bill.entityPro };
464
+ if (bill.entityProvider)
465
+ return { kind: 'provider', id: bill.entityProvider };
466
+ const entityId = bill.entityData?.id;
467
+ switch (bill.entity) {
468
+ case articho.BillReceivedEntity.PRO:
469
+ // Strip the enterprise part of `userId-enterpriseId`, if any.
470
+ if (entityId)
471
+ return { kind: 'profile', id: entityId.replace(/-[^-]+$/, '') };
472
+ break;
473
+ case articho.BillReceivedEntity.PROVIDER:
474
+ return entityId ? { kind: 'provider', id: entityId } : null;
475
+ case articho.BillReceivedEntity.MATERIAL_PROVIDER:
476
+ case articho.BillReceivedEntity.SERVICE_PROVIDER:
477
+ case articho.BillReceivedEntity.OTHER:
478
+ return null;
479
+ default:
480
+ break;
481
+ }
482
+ const owner = bill.ownerData;
483
+ return owner?.role === articho.ROLE.PRO && owner.userId
484
+ ? { kind: 'profile', id: owner.userId }
485
+ : null;
486
+ };
487
+ exports.getReceivedBillSupplier = getReceivedBillSupplier;
364
488
  /** Known PennyLane company IDs mapped by Articho enterprise ID. Used as fallback when not configured in Firestore. */
365
489
  exports.ENTERPRISE_PENNYLANE_COMPANY_IDS = {
366
490
  '45106373900119': '156553',
@@ -1 +1 @@
1
- {"version":3,"file":"pennylane.js","sourceRoot":"","sources":["../../src/billing/pennylane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pennylane.js","sourceRoot":"","sources":["../../src/billing/pennylane.ts"],"names":[],"mappings":"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"}
@@ -149,9 +149,16 @@ export declare const formatPennylaneErrorMessage: (rawMessage?: string) => strin
149
149
  * @return {number} Vencimiento (ms).
150
150
  */
151
151
  export declare const pennylaneDeadline: (bill: articho.BillIssued, date: number) => number;
152
+ /** Etiqueta de la línea que descuenta lo ya facturado del devis en una factura de saldo. */
153
+ export declare const PENNYLANE_DEDUCTION_LABEL = "D\u00E9duction des acomptes";
152
154
  /**
153
155
  * Líneas de una factura emitida tal como viajan a PennyLane: cada línea con su
154
156
  * « Total HT » y su TVA. En un avoir los importes van en negativo.
157
+ *
158
+ * Las líneas no facturadas (`isInvoiced: false`) no cuentan en el total de
159
+ * Articho y no se envían. En una factura de saldo se añade el descuento de lo
160
+ * ya facturado del devis (ver `deductionLines`).
161
+ *
155
162
  * @param {articho.BillIssued} bill Factura emitida.
156
163
  * @return {PennylaneInvoicePayload['lines']} Líneas.
157
164
  */
@@ -179,6 +186,29 @@ export declare const billIssuedToPennylanePayload: (bill: articho.BillIssued, co
179
186
  draft?: boolean;
180
187
  creditedInvoiceId?: string | number | null;
181
188
  }) => PennylaneInvoicePayload;
189
+ /** Ficha de Articho del proveedor de una factura recibida. */
190
+ export type ReceivedBillSupplier = {
191
+ kind: 'profile' | 'provider';
192
+ id: string;
193
+ };
194
+ /**
195
+ * Quién emitió una factura recibida, es decir, su proveedor en PennyLane.
196
+ *
197
+ * Es el « Émetteur » elegido en la factura, no quien la subió: un
198
+ * administrador sube facturas en nombre de un pro o de un apporteur, y tomar
199
+ * al que la subió mandaba a PennyLane los datos del administrador (o los de la
200
+ * empresa) como si fueran los del proveedor.
201
+ *
202
+ * - `entityPro` / `entityProvider`, si la factura los tiene.
203
+ * - Entidad PRO: el pro elegido (`entityData.id`, con forma `userId-enterpriseId`).
204
+ * - Entidad PROVIDER: el apporteur elegido (`entityData.id`).
205
+ * - Fournisseurs de matériaux o de services y « Autre »: texto libre, sin ficha.
206
+ * - Sin entidad: el pro que subió su propia factura.
207
+ *
208
+ * @param {articho.BillReceived} bill Factura recibida.
209
+ * @return {ReceivedBillSupplier | null} Ficha del proveedor, o null si no tiene.
210
+ */
211
+ export declare const getReceivedBillSupplier: (bill?: articho.BillReceived | null) => ReceivedBillSupplier | null;
182
212
  /** Known PennyLane company IDs mapped by Articho enterprise ID. Used as fallback when not configured in Firestore. */
183
213
  export declare const ENTERPRISE_PENNYLANE_COMPANY_IDS: Record<string, string>;
184
214
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pennylane.d.ts","sourceRoot":"","sources":["../../../src/billing/pennylane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pennylane.d.ts","sourceRoot":"","sources":["../../../src/billing/pennylane.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@placeshakr/config",
3
3
  "author": "Tech Placeshaker <tech@placeshaker.fr>",
4
- "version": "10.33.0-alpha.2",
4
+ "version": "10.33.0-alpha.4",
5
5
  "description": "Articho configuration module",
6
6
  "homepage": "https://github.com/placeshaker/articho#readme",
7
7
  "license": "ISC",
@@ -29,5 +29,5 @@
29
29
  "lint": "eslint --fix 'src/**/*.{ts,tsx}'",
30
30
  "prepare": "npm run build"
31
31
  },
32
- "gitHead": "76499079358100d8a01fdcfaa8f9dc2023161feb"
32
+ "gitHead": "70f5f3ed8d0d019f2729aae60d808b31519810a6"
33
33
  }
@@ -344,9 +344,82 @@ export const pennylaneDeadline = (bill: articho.BillIssued, date: number): numbe
344
344
  return date + termDays * 24 * 60 * 60 * 1000;
345
345
  };
346
346
 
347
+ /** Etiqueta de la línea que descuenta lo ya facturado del devis en una factura de saldo. */
348
+ export const PENNYLANE_DEDUCTION_LABEL = 'Déduction des acomptes';
349
+
350
+ const roundCents = (value: number) => Math.round((value + Number.EPSILON) * 100) / 100;
351
+
352
+ /**
353
+ * Base HT de la factura antes de la remise general, con el signo con el que
354
+ * viaja a PennyLane, o null si la factura no guarda sus precios.
355
+ *
356
+ * `HT + adjustments` es el total antes de la remise general en todos los
357
+ * formularios (ver `setBillIssuedPrices`): en una factura normal suma las
358
+ * líneas con sus remises; en una de saldo ya descuenta lo facturado antes.
359
+ */
360
+ const baseBeforeGeneralDiscount = (bill: articho.BillIssued): number | null => {
361
+ const HT = bill?.prices?.HT;
362
+ if (typeof HT !== 'number' || !Number.isFinite(HT)) return null;
363
+ const base = HT + (Number(bill?.prices?.adjustments) || 0);
364
+ return bill?.subType === articho.BillIssuedType.CREDIT_NOTE ? -Math.abs(base) : base;
365
+ };
366
+
367
+ /**
368
+ * Líneas que descuentan lo ya facturado del devis (acomptes, situaciones) en
369
+ * una factura de saldo o en su avoir.
370
+ *
371
+ * Las líneas de una factura de saldo guardan el importe completo del devis y
372
+ * el total de la factura descuenta el porcentaje ya facturado, igual en todas
373
+ * las líneas. Sin este descuento PennyLane facturaría el devis entero. Va una
374
+ * línea por tipo de TVA para que la TVA de cada tipo cuadre con Articho.
375
+ */
376
+ const deductionLines = (
377
+ bill: articho.BillIssued,
378
+ lines: PennylaneInvoicePayload['lines']
379
+ ): PennylaneInvoicePayload['lines'] => {
380
+ const isBalance = bill?.subType === articho.BillIssuedType.BALANCE;
381
+ // un avoir copia la factura que anula: solo el de una factura de saldo tiene `isGrouped`
382
+ const isBalanceCreditNote =
383
+ bill?.subType === articho.BillIssuedType.CREDIT_NOTE && bill?.isGrouped !== undefined;
384
+ if (!isBalance && !isBalanceCreditNote) return [];
385
+
386
+ const target = baseBeforeGeneralDiscount(bill);
387
+ const sent = lines.reduce((sum, line) => sum + line.quantity * line.unitPrice, 0);
388
+ if (target === null || !sent || Math.abs(target - sent) < 0.01) return [];
389
+
390
+ const byRate = new Map<string, number>();
391
+ lines.forEach((line) => {
392
+ byRate.set(line.vatRate, (byRate.get(line.vatRate) ?? 0) + line.quantity * line.unitPrice);
393
+ });
394
+
395
+ const ratio = (target - sent) / sent;
396
+ const deductions = [...byRate.entries()]
397
+ .map(([vatRate, amount]) => ({ vatRate, amount: roundCents(amount * ratio) }))
398
+ .filter((deduction) => deduction.amount !== 0);
399
+ if (!deductions.length) return [];
400
+
401
+ // el redondeo por tipo de TVA no puede mover el total: el resto va al mayor
402
+ const remainder = roundCents(target - sent - deductions.reduce((s, d) => s + d.amount, 0));
403
+ const largest = deductions.reduce((a, b) => (Math.abs(b.amount) > Math.abs(a.amount) ? b : a));
404
+ largest.amount = roundCents(largest.amount + remainder);
405
+
406
+ return deductions.map((deduction) => ({
407
+ label: PENNYLANE_DEDUCTION_LABEL,
408
+ quantity: 1,
409
+ unit: 'piece',
410
+ unitPrice: deduction.amount,
411
+ vatRate: deduction.vatRate,
412
+ }));
413
+ };
414
+
347
415
  /**
348
416
  * Líneas de una factura emitida tal como viajan a PennyLane: cada línea con su
349
417
  * « Total HT » y su TVA. En un avoir los importes van en negativo.
418
+ *
419
+ * Las líneas no facturadas (`isInvoiced: false`) no cuentan en el total de
420
+ * Articho y no se envían. En una factura de saldo se añade el descuento de lo
421
+ * ya facturado del devis (ver `deductionLines`).
422
+ *
350
423
  * @param {articho.BillIssued} bill Factura emitida.
351
424
  * @return {PennylaneInvoicePayload['lines']} Líneas.
352
425
  */
@@ -354,21 +427,38 @@ export const billIssuedToPennylaneLines = (
354
427
  bill: articho.BillIssued
355
428
  ): PennylaneInvoicePayload['lines'] => {
356
429
  const isCreditNote = bill?.subType === articho.BillIssuedType.CREDIT_NOTE;
430
+ const isDownPayment = bill?.subType === articho.BillIssuedType.DOWN_PAYMENT;
431
+
432
+ const elements = [...(bill?.elements ?? [])]
433
+ // los acomptes calculan su total con todas sus líneas
434
+ .filter((element) => isDownPayment || element?.isInvoiced !== false)
435
+ .sort((a, b) => (a?.order ?? 0) - (b?.order ?? 0));
436
+ const amounts = elements.map(toPennylaneLineAmount);
437
+
438
+ // Un avoir anula su factura: cada línea cambia de signo, y una línea negativa
439
+ // (commission apporteur, moins-value) pasa a positiva. Solo un avoir cuyas
440
+ // líneas suman en negativo conserva todas sus líneas en negativo.
441
+ const creditNoteOfPositiveBill =
442
+ isCreditNote && amounts.reduce((sum, a) => sum + a.quantity * a.unitPrice, 0) >= 0;
443
+ const toSentPrice = (unitPrice: number) => {
444
+ if (!isCreditNote) return unitPrice;
445
+ return creditNoteOfPositiveBill ? -unitPrice : -Math.abs(unitPrice);
446
+ };
447
+
448
+ const lines = elements.map((element, index) => {
449
+ const amount = amounts[index];
450
+ return {
451
+ label: element.description,
452
+ quantity: amount.quantity,
453
+ unit: 'piece',
454
+ unitPrice: toSentPrice(amount.unitPrice),
455
+ // `bill.tva` es la casilla « TVA non applicable »: true = sin IVA.
456
+ vatRate: toVatRateCode(element.tva, bill?.tva !== true),
457
+ ...(amount.discount ? { discount: amount.discount } : {}),
458
+ };
459
+ });
357
460
 
358
- return [...(bill?.elements ?? [])]
359
- .sort((a, b) => (a?.order ?? 0) - (b?.order ?? 0))
360
- .map((element) => {
361
- const amount = toPennylaneLineAmount(element);
362
- return {
363
- label: element.description,
364
- quantity: amount.quantity,
365
- unit: 'piece',
366
- unitPrice: isCreditNote ? -Math.abs(amount.unitPrice) : amount.unitPrice,
367
- // `bill.tva` es la casilla « TVA non applicable »: true = sin IVA.
368
- vatRate: toVatRateCode(element.tva, bill?.tva !== true),
369
- ...(amount.discount ? { discount: amount.discount } : {}),
370
- };
371
- });
461
+ return [...lines, ...deductionLines(bill, lines)];
372
462
  };
373
463
 
374
464
  /**
@@ -478,6 +568,56 @@ export const billIssuedToPennylanePayload = (
478
568
  };
479
569
  };
480
570
 
571
+ /** Ficha de Articho del proveedor de una factura recibida. */
572
+ export type ReceivedBillSupplier = { kind: 'profile' | 'provider'; id: string };
573
+
574
+ /**
575
+ * Quién emitió una factura recibida, es decir, su proveedor en PennyLane.
576
+ *
577
+ * Es el « Émetteur » elegido en la factura, no quien la subió: un
578
+ * administrador sube facturas en nombre de un pro o de un apporteur, y tomar
579
+ * al que la subió mandaba a PennyLane los datos del administrador (o los de la
580
+ * empresa) como si fueran los del proveedor.
581
+ *
582
+ * - `entityPro` / `entityProvider`, si la factura los tiene.
583
+ * - Entidad PRO: el pro elegido (`entityData.id`, con forma `userId-enterpriseId`).
584
+ * - Entidad PROVIDER: el apporteur elegido (`entityData.id`).
585
+ * - Fournisseurs de matériaux o de services y « Autre »: texto libre, sin ficha.
586
+ * - Sin entidad: el pro que subió su propia factura.
587
+ *
588
+ * @param {articho.BillReceived} bill Factura recibida.
589
+ * @return {ReceivedBillSupplier | null} Ficha del proveedor, o null si no tiene.
590
+ */
591
+ export const getReceivedBillSupplier = (
592
+ bill?: articho.BillReceived | null
593
+ ): ReceivedBillSupplier | null => {
594
+ if (!bill) return null;
595
+ if (bill.entityPro) return { kind: 'profile', id: bill.entityPro };
596
+ if (bill.entityProvider) return { kind: 'provider', id: bill.entityProvider };
597
+
598
+ const entityId = bill.entityData?.id;
599
+
600
+ switch (bill.entity) {
601
+ case articho.BillReceivedEntity.PRO:
602
+ // Strip the enterprise part of `userId-enterpriseId`, if any.
603
+ if (entityId) return { kind: 'profile', id: entityId.replace(/-[^-]+$/, '') };
604
+ break;
605
+ case articho.BillReceivedEntity.PROVIDER:
606
+ return entityId ? { kind: 'provider', id: entityId } : null;
607
+ case articho.BillReceivedEntity.MATERIAL_PROVIDER:
608
+ case articho.BillReceivedEntity.SERVICE_PROVIDER:
609
+ case articho.BillReceivedEntity.OTHER:
610
+ return null;
611
+ default:
612
+ break;
613
+ }
614
+
615
+ const owner = bill.ownerData as { role?: string; userId?: string } | undefined;
616
+ return owner?.role === articho.ROLE.PRO && owner.userId
617
+ ? { kind: 'profile', id: owner.userId }
618
+ : null;
619
+ };
620
+
481
621
  /** Known PennyLane company IDs mapped by Articho enterprise ID. Used as fallback when not configured in Firestore. */
482
622
  export const ENTERPRISE_PENNYLANE_COMPANY_IDS: Record<string, string> = {
483
623
  '45106373900119': '156553',