medusajs-documents-plugin 1.1.34 → 1.1.36

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.
@@ -7,7 +7,7 @@ const icons = require("@medusajs/icons");
7
7
  function extractBaseReference(displayId) {
8
8
  if (!displayId) return "";
9
9
  const cleaned = String(displayId).trim();
10
- const withoutPrefix = cleaned.replace(/^(?:(?:JOB|RT|EST|RCPT|INV|PKG|PACK|DOC|ST|STORE|[A-Za-z]{2,10})-)+/i, "");
10
+ const withoutPrefix = cleaned.replace(/^(?:(?:JOB|RT|EST|RCPT|INV|PKG|PACK|DOC|CERT|ST|STORE|[A-Za-z]{2,10})-)+/i, "");
11
11
  return withoutPrefix.trim();
12
12
  }
13
13
  function getDocTypePriority(type) {
@@ -23,6 +23,7 @@ function getDocTypePriority(type) {
23
23
  case "packing_slip":
24
24
  return 50;
25
25
  case "custom":
26
+ case "certificate":
26
27
  return 40;
27
28
  default:
28
29
  return 10;
@@ -41,6 +42,7 @@ function getDocLifecycleOrder(type) {
41
42
  case "packing_slip":
42
43
  return 5;
43
44
  case "custom":
45
+ case "certificate":
44
46
  return 6;
45
47
  default:
46
48
  return 10;
@@ -59,6 +61,7 @@ function getDocTypeLabel(type) {
59
61
  case "packing_slip":
60
62
  return "Packing Slip";
61
63
  case "custom":
64
+ case "certificate":
62
65
  return "Certificate";
63
66
  default:
64
67
  return type || "Document";
@@ -539,7 +542,7 @@ const DocumentsPage = () => {
539
542
  }
540
543
  }, [customDocModalOpen]);
541
544
  const availableTickets = react.useMemo(() => {
542
- var _a2, _b2;
545
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
543
546
  const map = /* @__PURE__ */ new Map();
544
547
  for (const t of repairTickets) {
545
548
  if (t.id) map.set(t.id, t);
@@ -547,34 +550,48 @@ const DocumentsPage = () => {
547
550
  for (const d of documents) {
548
551
  const ticketId = d.repair_ticket_id;
549
552
  const displayId = d.display_id || "";
550
- const isRepairDoc = displayId.startsWith("RT-") || displayId.startsWith("JOB-") || Boolean(ticketId);
553
+ const isRepairDoc = displayId.startsWith("RT-") || displayId.startsWith("JOB-") || displayId.startsWith("CERT-") || Boolean(ticketId);
551
554
  const idKey = ticketId || displayId;
552
- if (isRepairDoc && idKey && !map.has(idKey)) {
553
- const customFields = d.custom_fields || ((_a2 = d.metadata) == null ? void 0 : _a2.custom_fields) || {};
554
- map.set(idKey, {
555
- id: idKey,
556
- ticket_number: String(displayId).replace(/^(RT-|JOB-)+/i, "") || idKey,
557
- customer_name: d.customer_name,
558
- customer_email: d.customer_email,
559
- customer_phone: d.customer_phone,
560
- device: {
561
- brand: customFields["Brand"] || "",
562
- model_name: customFields["Device Model"] || customFields["Model"] || "Device",
563
- serial_number: customFields["Serial / IMEI"] || customFields["Serial Number"] || "N/A",
564
- condition: customFields["Condition"] || "Good condition"
565
- },
566
- accessories: customFields["Accessories"] || "None",
567
- technician_name: customFields["Technician"] || "Bonifencia A.",
568
- issue_description: customFields["Reported Issue"] || d.notes || "Standard Service",
569
- custom_fields: customFields,
570
- items: ((_b2 = d.metadata) == null ? void 0 : _b2.items) || []
571
- });
555
+ if (isRepairDoc && idKey) {
556
+ if (!map.has(idKey)) {
557
+ const customFields = d.custom_fields || ((_a2 = d.metadata) == null ? void 0 : _a2.custom_fields) || {};
558
+ map.set(idKey, {
559
+ id: idKey,
560
+ ticket_number: String(displayId).replace(/^(RT-|JOB-|CERT-)+/i, "") || idKey,
561
+ customer_name: d.customer_name,
562
+ customer_email: d.customer_email,
563
+ customer_phone: d.customer_phone,
564
+ company_name: ((_b2 = d.customer) == null ? void 0 : _b2.company_name) || ((_c = d.metadata) == null ? void 0 : _c.company_name),
565
+ device: {
566
+ brand: customFields["Brand"] || "",
567
+ model_name: customFields["Device Model"] || customFields["Model"] || "Device",
568
+ serial_number: customFields["Serial / IMEI"] || customFields["Serial Number"] || "N/A",
569
+ condition: customFields["Condition"] || "Good condition"
570
+ },
571
+ accessories: customFields["Accessories"] || "None",
572
+ technician_name: customFields["Technician"] || "Bonifencia A.",
573
+ issue_description: customFields["Reported Issue"] || d.notes || "Standard Service",
574
+ custom_fields: customFields,
575
+ items: ((_d = d.metadata) == null ? void 0 : _d.items) || []
576
+ });
577
+ } else {
578
+ const existing = map.get(idKey);
579
+ if (!existing.customer_name && d.customer_name) existing.customer_name = d.customer_name;
580
+ if (!existing.customer_email && d.customer_email) existing.customer_email = d.customer_email;
581
+ if (!existing.customer_phone && d.customer_phone) existing.customer_phone = d.customer_phone;
582
+ const compName = ((_e = d.customer) == null ? void 0 : _e.company_name) || ((_f = d.metadata) == null ? void 0 : _f.company_name);
583
+ if (!existing.company_name && compName) existing.company_name = compName;
584
+ if ((!((_g = existing.device) == null ? void 0 : _g.model_name) || ((_h = existing.device) == null ? void 0 : _h.model_name) === "Device") && ((_j = (_i = d.metadata) == null ? void 0 : _i.custom_fields) == null ? void 0 : _j["Device Model"])) {
585
+ existing.device = existing.device || {};
586
+ existing.device.model_name = d.metadata.custom_fields["Device Model"];
587
+ }
588
+ }
572
589
  }
573
590
  }
574
591
  return Array.from(map.values());
575
592
  }, [repairTickets, documents]);
576
593
  const handleSelectRepairTicket = (ticketId) => {
577
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
594
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
578
595
  setSelectedTicketId(ticketId);
579
596
  if (!ticketId) return;
580
597
  const ticket = availableTickets.find((t) => t.id === ticketId || t.ticket_number === ticketId);
@@ -584,18 +601,18 @@ const DocumentsPage = () => {
584
601
  const technician = ticket.technician_name || ((_g = ticket.custom_fields) == null ? void 0 : _g["Technician"]) || "Bonifencia A. (Lead Certified Engineer)";
585
602
  const accessories = ticket.accessories || ((_h = ticket.custom_fields) == null ? void 0 : _h["Accessories"]) || "None (Unit only)";
586
603
  const condition = ((_i = ticket.device) == null ? void 0 : _i.condition) || ((_j = ticket.custom_fields) == null ? void 0 : _j["Condition"]) || "Good (Normal wear)";
587
- const cleanNum = String(ticket.ticket_number || ticket.id).replace(/^(RT-|JOB-)+/i, "");
604
+ const cleanNum = String(ticket.ticket_number || ticket.id).replace(/^(RT-|JOB-|CERT-)+/i, "");
588
605
  const ticketRef = `RT-${cleanNum}`;
589
- const customerName = ((_k = ticket.customer) == null ? void 0 : _k.company_name) || ticket.company_name || ticket.customer_name || (((_l = ticket.customer) == null ? void 0 : _l.first_name) ? `${ticket.customer.first_name} ${ticket.customer.last_name || ""}`.trim() : "") || "Valued Customer";
590
- const customerEmail = ((_m = ticket.customer) == null ? void 0 : _m.email) || ticket.customer_email || "";
591
- const customerPhone = ((_n = ticket.customer) == null ? void 0 : _n.phone) || ticket.customer_phone || "";
592
- const companyName = ((_o = ticket.customer) == null ? void 0 : _o.company_name) || ticket.company_name || "";
606
+ const customerName = (((_k = ticket.customer) == null ? void 0 : _k.first_name) ? `${ticket.customer.first_name} ${ticket.customer.last_name || ""}`.trim() : "") || ((_l = ticket.customer) == null ? void 0 : _l.name) || ticket.customer_name || ((_m = ticket.metadata) == null ? void 0 : _m.customer_name) || ((_n = ticket.customer) == null ? void 0 : _n.company_name) || ticket.company_name || "Valued Customer";
607
+ const customerEmail = ((_o = ticket.customer) == null ? void 0 : _o.email) || ticket.customer_email || ((_p = ticket.metadata) == null ? void 0 : _p.customer_email) || "";
608
+ const customerPhone = ((_q = ticket.customer) == null ? void 0 : _q.phone) || ticket.customer_phone || ((_r = ticket.metadata) == null ? void 0 : _r.customer_phone) || "";
609
+ const companyName = ((_s = ticket.customer) == null ? void 0 : _s.company_name) || ticket.company_name || ((_t = ticket.metadata) == null ? void 0 : _t.company_name) || "";
593
610
  const ticketItems = [];
594
611
  if (ticket.product_variants && Array.isArray(ticket.product_variants) && ticket.product_variants.length > 0) {
595
612
  for (const pv of ticket.product_variants) {
596
- const qty = Number(pv.quantity || ((_p = pv.pivot) == null ? void 0 : _p.quantity) || 1);
597
- const unitPrice = Number(pv.unit_price ?? pv.price ?? ((_r = (_q = pv.prices) == null ? void 0 : _q[0]) == null ? void 0 : _r.amount) ?? 0);
598
- const partTitle = ((_s = pv.product) == null ? void 0 : _s.title) ? `${pv.product.title}${pv.title && pv.title !== "Default Variant" ? ` (${pv.title})` : ""}` : pv.title || ((_t = pv.product) == null ? void 0 : _t.title) || "Inventory Part";
613
+ const qty = Number(pv.quantity || ((_u = pv.pivot) == null ? void 0 : _u.quantity) || 1);
614
+ const unitPrice = Number(pv.unit_price ?? pv.price ?? ((_w = (_v = pv.prices) == null ? void 0 : _v[0]) == null ? void 0 : _w.amount) ?? 0);
615
+ const partTitle = ((_x = pv.product) == null ? void 0 : _x.title) ? `${pv.product.title}${pv.title && pv.title !== "Default Variant" ? ` (${pv.title})` : ""}` : pv.title || ((_y = pv.product) == null ? void 0 : _y.title) || "Inventory Part";
599
616
  ticketItems.push({
600
617
  title: partTitle,
601
618
  description: pv.sku ? `SKU: ${pv.sku}` : "",
@@ -614,7 +631,7 @@ const DocumentsPage = () => {
614
631
  });
615
632
  }
616
633
  }
617
- if (((_u = ticket.device) == null ? void 0 : _u.parts_used) && Array.isArray(ticket.device.parts_used)) {
634
+ if (((_z = ticket.device) == null ? void 0 : _z.parts_used) && Array.isArray(ticket.device.parts_used)) {
618
635
  for (const p of ticket.device.parts_used) {
619
636
  ticketItems.push({
620
637
  title: p.name || p.title || "Replacement Part",
@@ -835,6 +852,7 @@ const DocumentsPage = () => {
835
852
  headers: { "Content-Type": "application/json" },
836
853
  body: JSON.stringify({
837
854
  title: customDocForm.title,
855
+ repair_ticket_id: selectedTicketId || void 0,
838
856
  customer: {
839
857
  name: customDocForm.customer_name,
840
858
  company_name: customDocForm.company_name || void 0,
@@ -6,7 +6,7 @@ import { DocumentText, ArrowPath, Plus, Sparkles, ChevronDown, ChevronRight, Arr
6
6
  function extractBaseReference(displayId) {
7
7
  if (!displayId) return "";
8
8
  const cleaned = String(displayId).trim();
9
- const withoutPrefix = cleaned.replace(/^(?:(?:JOB|RT|EST|RCPT|INV|PKG|PACK|DOC|ST|STORE|[A-Za-z]{2,10})-)+/i, "");
9
+ const withoutPrefix = cleaned.replace(/^(?:(?:JOB|RT|EST|RCPT|INV|PKG|PACK|DOC|CERT|ST|STORE|[A-Za-z]{2,10})-)+/i, "");
10
10
  return withoutPrefix.trim();
11
11
  }
12
12
  function getDocTypePriority(type) {
@@ -22,6 +22,7 @@ function getDocTypePriority(type) {
22
22
  case "packing_slip":
23
23
  return 50;
24
24
  case "custom":
25
+ case "certificate":
25
26
  return 40;
26
27
  default:
27
28
  return 10;
@@ -40,6 +41,7 @@ function getDocLifecycleOrder(type) {
40
41
  case "packing_slip":
41
42
  return 5;
42
43
  case "custom":
44
+ case "certificate":
43
45
  return 6;
44
46
  default:
45
47
  return 10;
@@ -58,6 +60,7 @@ function getDocTypeLabel(type) {
58
60
  case "packing_slip":
59
61
  return "Packing Slip";
60
62
  case "custom":
63
+ case "certificate":
61
64
  return "Certificate";
62
65
  default:
63
66
  return type || "Document";
@@ -538,7 +541,7 @@ const DocumentsPage = () => {
538
541
  }
539
542
  }, [customDocModalOpen]);
540
543
  const availableTickets = useMemo(() => {
541
- var _a2, _b2;
544
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
542
545
  const map = /* @__PURE__ */ new Map();
543
546
  for (const t of repairTickets) {
544
547
  if (t.id) map.set(t.id, t);
@@ -546,34 +549,48 @@ const DocumentsPage = () => {
546
549
  for (const d of documents) {
547
550
  const ticketId = d.repair_ticket_id;
548
551
  const displayId = d.display_id || "";
549
- const isRepairDoc = displayId.startsWith("RT-") || displayId.startsWith("JOB-") || Boolean(ticketId);
552
+ const isRepairDoc = displayId.startsWith("RT-") || displayId.startsWith("JOB-") || displayId.startsWith("CERT-") || Boolean(ticketId);
550
553
  const idKey = ticketId || displayId;
551
- if (isRepairDoc && idKey && !map.has(idKey)) {
552
- const customFields = d.custom_fields || ((_a2 = d.metadata) == null ? void 0 : _a2.custom_fields) || {};
553
- map.set(idKey, {
554
- id: idKey,
555
- ticket_number: String(displayId).replace(/^(RT-|JOB-)+/i, "") || idKey,
556
- customer_name: d.customer_name,
557
- customer_email: d.customer_email,
558
- customer_phone: d.customer_phone,
559
- device: {
560
- brand: customFields["Brand"] || "",
561
- model_name: customFields["Device Model"] || customFields["Model"] || "Device",
562
- serial_number: customFields["Serial / IMEI"] || customFields["Serial Number"] || "N/A",
563
- condition: customFields["Condition"] || "Good condition"
564
- },
565
- accessories: customFields["Accessories"] || "None",
566
- technician_name: customFields["Technician"] || "Bonifencia A.",
567
- issue_description: customFields["Reported Issue"] || d.notes || "Standard Service",
568
- custom_fields: customFields,
569
- items: ((_b2 = d.metadata) == null ? void 0 : _b2.items) || []
570
- });
554
+ if (isRepairDoc && idKey) {
555
+ if (!map.has(idKey)) {
556
+ const customFields = d.custom_fields || ((_a2 = d.metadata) == null ? void 0 : _a2.custom_fields) || {};
557
+ map.set(idKey, {
558
+ id: idKey,
559
+ ticket_number: String(displayId).replace(/^(RT-|JOB-|CERT-)+/i, "") || idKey,
560
+ customer_name: d.customer_name,
561
+ customer_email: d.customer_email,
562
+ customer_phone: d.customer_phone,
563
+ company_name: ((_b2 = d.customer) == null ? void 0 : _b2.company_name) || ((_c = d.metadata) == null ? void 0 : _c.company_name),
564
+ device: {
565
+ brand: customFields["Brand"] || "",
566
+ model_name: customFields["Device Model"] || customFields["Model"] || "Device",
567
+ serial_number: customFields["Serial / IMEI"] || customFields["Serial Number"] || "N/A",
568
+ condition: customFields["Condition"] || "Good condition"
569
+ },
570
+ accessories: customFields["Accessories"] || "None",
571
+ technician_name: customFields["Technician"] || "Bonifencia A.",
572
+ issue_description: customFields["Reported Issue"] || d.notes || "Standard Service",
573
+ custom_fields: customFields,
574
+ items: ((_d = d.metadata) == null ? void 0 : _d.items) || []
575
+ });
576
+ } else {
577
+ const existing = map.get(idKey);
578
+ if (!existing.customer_name && d.customer_name) existing.customer_name = d.customer_name;
579
+ if (!existing.customer_email && d.customer_email) existing.customer_email = d.customer_email;
580
+ if (!existing.customer_phone && d.customer_phone) existing.customer_phone = d.customer_phone;
581
+ const compName = ((_e = d.customer) == null ? void 0 : _e.company_name) || ((_f = d.metadata) == null ? void 0 : _f.company_name);
582
+ if (!existing.company_name && compName) existing.company_name = compName;
583
+ if ((!((_g = existing.device) == null ? void 0 : _g.model_name) || ((_h = existing.device) == null ? void 0 : _h.model_name) === "Device") && ((_j = (_i = d.metadata) == null ? void 0 : _i.custom_fields) == null ? void 0 : _j["Device Model"])) {
584
+ existing.device = existing.device || {};
585
+ existing.device.model_name = d.metadata.custom_fields["Device Model"];
586
+ }
587
+ }
571
588
  }
572
589
  }
573
590
  return Array.from(map.values());
574
591
  }, [repairTickets, documents]);
575
592
  const handleSelectRepairTicket = (ticketId) => {
576
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
593
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
577
594
  setSelectedTicketId(ticketId);
578
595
  if (!ticketId) return;
579
596
  const ticket = availableTickets.find((t) => t.id === ticketId || t.ticket_number === ticketId);
@@ -583,18 +600,18 @@ const DocumentsPage = () => {
583
600
  const technician = ticket.technician_name || ((_g = ticket.custom_fields) == null ? void 0 : _g["Technician"]) || "Bonifencia A. (Lead Certified Engineer)";
584
601
  const accessories = ticket.accessories || ((_h = ticket.custom_fields) == null ? void 0 : _h["Accessories"]) || "None (Unit only)";
585
602
  const condition = ((_i = ticket.device) == null ? void 0 : _i.condition) || ((_j = ticket.custom_fields) == null ? void 0 : _j["Condition"]) || "Good (Normal wear)";
586
- const cleanNum = String(ticket.ticket_number || ticket.id).replace(/^(RT-|JOB-)+/i, "");
603
+ const cleanNum = String(ticket.ticket_number || ticket.id).replace(/^(RT-|JOB-|CERT-)+/i, "");
587
604
  const ticketRef = `RT-${cleanNum}`;
588
- const customerName = ((_k = ticket.customer) == null ? void 0 : _k.company_name) || ticket.company_name || ticket.customer_name || (((_l = ticket.customer) == null ? void 0 : _l.first_name) ? `${ticket.customer.first_name} ${ticket.customer.last_name || ""}`.trim() : "") || "Valued Customer";
589
- const customerEmail = ((_m = ticket.customer) == null ? void 0 : _m.email) || ticket.customer_email || "";
590
- const customerPhone = ((_n = ticket.customer) == null ? void 0 : _n.phone) || ticket.customer_phone || "";
591
- const companyName = ((_o = ticket.customer) == null ? void 0 : _o.company_name) || ticket.company_name || "";
605
+ const customerName = (((_k = ticket.customer) == null ? void 0 : _k.first_name) ? `${ticket.customer.first_name} ${ticket.customer.last_name || ""}`.trim() : "") || ((_l = ticket.customer) == null ? void 0 : _l.name) || ticket.customer_name || ((_m = ticket.metadata) == null ? void 0 : _m.customer_name) || ((_n = ticket.customer) == null ? void 0 : _n.company_name) || ticket.company_name || "Valued Customer";
606
+ const customerEmail = ((_o = ticket.customer) == null ? void 0 : _o.email) || ticket.customer_email || ((_p = ticket.metadata) == null ? void 0 : _p.customer_email) || "";
607
+ const customerPhone = ((_q = ticket.customer) == null ? void 0 : _q.phone) || ticket.customer_phone || ((_r = ticket.metadata) == null ? void 0 : _r.customer_phone) || "";
608
+ const companyName = ((_s = ticket.customer) == null ? void 0 : _s.company_name) || ticket.company_name || ((_t = ticket.metadata) == null ? void 0 : _t.company_name) || "";
592
609
  const ticketItems = [];
593
610
  if (ticket.product_variants && Array.isArray(ticket.product_variants) && ticket.product_variants.length > 0) {
594
611
  for (const pv of ticket.product_variants) {
595
- const qty = Number(pv.quantity || ((_p = pv.pivot) == null ? void 0 : _p.quantity) || 1);
596
- const unitPrice = Number(pv.unit_price ?? pv.price ?? ((_r = (_q = pv.prices) == null ? void 0 : _q[0]) == null ? void 0 : _r.amount) ?? 0);
597
- const partTitle = ((_s = pv.product) == null ? void 0 : _s.title) ? `${pv.product.title}${pv.title && pv.title !== "Default Variant" ? ` (${pv.title})` : ""}` : pv.title || ((_t = pv.product) == null ? void 0 : _t.title) || "Inventory Part";
612
+ const qty = Number(pv.quantity || ((_u = pv.pivot) == null ? void 0 : _u.quantity) || 1);
613
+ const unitPrice = Number(pv.unit_price ?? pv.price ?? ((_w = (_v = pv.prices) == null ? void 0 : _v[0]) == null ? void 0 : _w.amount) ?? 0);
614
+ const partTitle = ((_x = pv.product) == null ? void 0 : _x.title) ? `${pv.product.title}${pv.title && pv.title !== "Default Variant" ? ` (${pv.title})` : ""}` : pv.title || ((_y = pv.product) == null ? void 0 : _y.title) || "Inventory Part";
598
615
  ticketItems.push({
599
616
  title: partTitle,
600
617
  description: pv.sku ? `SKU: ${pv.sku}` : "",
@@ -613,7 +630,7 @@ const DocumentsPage = () => {
613
630
  });
614
631
  }
615
632
  }
616
- if (((_u = ticket.device) == null ? void 0 : _u.parts_used) && Array.isArray(ticket.device.parts_used)) {
633
+ if (((_z = ticket.device) == null ? void 0 : _z.parts_used) && Array.isArray(ticket.device.parts_used)) {
617
634
  for (const p of ticket.device.parts_used) {
618
635
  ticketItems.push({
619
636
  title: p.name || p.title || "Replacement Part",
@@ -834,6 +851,7 @@ const DocumentsPage = () => {
834
851
  headers: { "Content-Type": "application/json" },
835
852
  body: JSON.stringify({
836
853
  title: customDocForm.title,
854
+ repair_ticket_id: selectedTicketId || void 0,
837
855
  customer: {
838
856
  name: customDocForm.customer_name,
839
857
  company_name: customDocForm.company_name || void 0,
@@ -6,7 +6,7 @@ const documents_1 = require("../../../../modules/documents");
6
6
  async function POST(req, res) {
7
7
  try {
8
8
  const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
9
- const { title = "Custom Document", customer, body_text, items = [], total = 0, currency_code = "kes", notes, custom_fields, send_email_now = true, email_subject, custom_email_message, } = req.body || {};
9
+ const { title = "Custom Document", customer, body_text, items = [], total = 0, currency_code = "kes", notes, custom_fields, repair_ticket_id, send_email_now = true, email_subject, custom_email_message, } = req.body || {};
10
10
  let computedTotal = Number(total || 0);
11
11
  if (items.length > 0 && computedTotal === 0) {
12
12
  for (const item of items) {
@@ -17,8 +17,9 @@ async function POST(req, res) {
17
17
  const result = await documentService.generateDocument({
18
18
  title: title,
19
19
  type: "custom",
20
+ repair_ticket_id: repair_ticket_id || undefined,
20
21
  customer: {
21
- name: companyName || customer?.name || "Customer",
22
+ name: customer?.name || companyName || "Customer",
22
23
  company_name: companyName || undefined,
23
24
  email: customer?.email,
24
25
  phone: customer?.phone,
@@ -47,4 +48,4 @@ async function POST(req, res) {
47
48
  return res.status(500).json({ message: err.message, success: false });
48
49
  }
49
50
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9jdXN0b20vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxvQkE4REM7QUFsRUQsNkRBQWlFO0FBR2pFLCtCQUErQjtBQUN4QixLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXVCLEVBQUUsR0FBbUI7SUFDckUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7UUFFbkYsTUFBTSxFQUNKLEtBQUssR0FBRyxpQkFBaUIsRUFDekIsUUFBUSxFQUNSLFNBQVMsRUFDVCxLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxDQUFDLEVBQ1QsYUFBYSxHQUFHLEtBQUssRUFDckIsS0FBSyxFQUNMLGFBQWEsRUFDYixjQUFjLEdBQUcsSUFBSSxFQUNyQixhQUFhLEVBQ2Isb0JBQW9CLEdBQ3JCLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbkIsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixhQUFhLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxRQUFRLEVBQUUsWUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDO1FBRXJFLE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDLGdCQUFnQixDQUNuRDtZQUNFLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUUsSUFBSSxJQUFJLFVBQVU7Z0JBQ2pELFlBQVksRUFBRSxXQUFXLElBQUksU0FBUztnQkFDdEMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7Z0JBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTzthQUMzQjtZQUNELEtBQUs7WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixhQUFhLEVBQUUsYUFBYSxJQUFJLEtBQUs7WUFDckMsU0FBUztZQUNULEtBQUs7WUFDTCxhQUFhO1lBQ2IsWUFBWSxFQUFFLFFBQVE7WUFDdEIsU0FBUyxFQUFFLGNBQWM7WUFDekIscUJBQXFCLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDaEMsYUFBYSxFQUFFLGFBQWEsSUFBSSxHQUFHLEtBQUssU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxPQUFPLEVBQUU7WUFDcEYsb0JBQW9CLEVBQUUsb0JBQW9CLElBQUksU0FBUztTQUN4RCxFQUNELEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQztRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztZQUNkLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTTtZQUN2QixjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxxREFBcUQsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkcsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7QUFDSCxDQUFDIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9jdXN0b20vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxvQkFnRUM7QUFwRUQsNkRBQWlFO0FBR2pFLCtCQUErQjtBQUN4QixLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXVCLEVBQUUsR0FBbUI7SUFDckUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7UUFFbkYsTUFBTSxFQUNKLEtBQUssR0FBRyxpQkFBaUIsRUFDekIsUUFBUSxFQUNSLFNBQVMsRUFDVCxLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxDQUFDLEVBQ1QsYUFBYSxHQUFHLEtBQUssRUFDckIsS0FBSyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsY0FBYyxHQUFHLElBQUksRUFDckIsYUFBYSxFQUNiLG9CQUFvQixHQUNyQixHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRW5CLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsYUFBYSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxFQUFFLFlBQVksSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQztRQUVyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FDbkQ7WUFDRSxLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsZ0JBQWdCLEVBQUUsZ0JBQWdCLElBQUksU0FBUztZQUMvQyxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksV0FBVyxJQUFJLFVBQVU7Z0JBQ2pELFlBQVksRUFBRSxXQUFXLElBQUksU0FBUztnQkFDdEMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7Z0JBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTzthQUMzQjtZQUNELEtBQUs7WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixhQUFhLEVBQUUsYUFBYSxJQUFJLEtBQUs7WUFDckMsU0FBUztZQUNULEtBQUs7WUFDTCxhQUFhO1lBQ2IsWUFBWSxFQUFFLFFBQVE7WUFDdEIsU0FBUyxFQUFFLGNBQWM7WUFDekIscUJBQXFCLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDaEMsYUFBYSxFQUFFLGFBQWEsSUFBSSxHQUFHLEtBQUssU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxPQUFPLEVBQUU7WUFDcEYsb0JBQW9CLEVBQUUsb0JBQW9CLElBQUksU0FBUztTQUN4RCxFQUNELEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQztRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztZQUNkLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTTtZQUN2QixjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxxREFBcUQsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkcsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7QUFDSCxDQUFDIn0=
@@ -14,8 +14,10 @@ async function GET(req, res) {
14
14
  const validStyles = ["modern", "classic", "minimal", "zoho_exact", "standard"];
15
15
  const style = validStyles.includes(rawStyle) ? rawStyle : "modern";
16
16
  const rawType = String(req.query.type || "").trim().toLowerCase();
17
- const validTypes = ["invoice", "receipt", "packing_slip", "estimate", "custom", "job_card"];
18
- const type = (validTypes.includes(rawType) ? rawType : "invoice");
17
+ const isCertRequest = rawType === "certificate";
18
+ const validTypes = ["invoice", "receipt", "packing_slip", "estimate", "custom", "job_card", "service_report", "handover", "certificate"];
19
+ const resolvedType = isCertRequest ? "custom" : (validTypes.includes(rawType) ? rawType : "invoice");
20
+ const type = resolvedType;
19
21
  const isJobCard = type === "job_card";
20
22
  const isCustom = type === "custom";
21
23
  const isReceipt = type === "receipt";
@@ -150,6 +152,34 @@ async function GET(req, res) {
150
152
  },
151
153
  notes: "Ownership transfers immediately upon document execution. Valuation is binding and irrevocable once trade-in payout or store credit is issued.",
152
154
  },
155
+ blank: {
156
+ title: "Official Document",
157
+ body_text: "This official technical document confirms the specifications, service terms, and verified conditions documented by Urban Device Care for the specified customer asset.",
158
+ items: [
159
+ { title: "Professional Hardware Inspection & Maintenance Service", description: "Certified technical evaluation and service clearance", quantity: 1, unit_price: 0, total: 0 },
160
+ ],
161
+ custom_fields: {
162
+ "Device Model": "Computing Asset / Hardware Module",
163
+ "Serial / IMEI": "SN-XXXX-XXXX",
164
+ "Ticket Reference": "RT-2024-0001",
165
+ "Technician": "Bonifencia A.",
166
+ },
167
+ notes: "Standard terms and conditions apply. For inquiries, contact info@urbandevicecare.co.uk.",
168
+ },
169
+ generic: {
170
+ title: "Official Document",
171
+ body_text: "This official technical document confirms the specifications, service terms, and verified conditions documented by Urban Device Care for the specified customer asset.",
172
+ items: [
173
+ { title: "Professional Hardware Inspection & Maintenance Service", description: "Certified technical evaluation and service clearance", quantity: 1, unit_price: 0, total: 0 },
174
+ ],
175
+ custom_fields: {
176
+ "Device Model": "Computing Asset / Hardware Module",
177
+ "Serial / IMEI": "SN-XXXX-XXXX",
178
+ "Ticket Reference": "RT-2024-0001",
179
+ "Technician": "Bonifencia A.",
180
+ },
181
+ notes: "Standard terms and conditions apply. For inquiries, contact info@urbandevicecare.co.uk.",
182
+ },
153
183
  };
154
184
  const activePreset = isCustom ? (PRESETS[rawPreset] || PRESETS.warranty) : null;
155
185
  const sampleData = {
@@ -294,4 +324,4 @@ async function GET(req, res) {
294
324
  }
295
325
  // HEAD /admin/documents/templates/preview
296
326
  exports.HEAD = GET;
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy90ZW1wbGF0ZXMvcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxrQkF3U0M7QUEvU0QsZ0VBQW9FO0FBRXBFLCtFQUF5RjtBQUU1RSxRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFbEMsK0lBQStJO0FBQ3hJLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5FLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFX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
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy90ZW1wbGF0ZXMvcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxrQkFzVUM7QUE3VUQsZ0VBQW9FO0FBRXBFLCtFQUF5RjtBQUU1RSxRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFbEMsK0lBQStJO0FBQ3hJLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5FLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRSxNQUFNLGFBQWEsR0FBRyxPQUFPLEtBQUssYUFBYSxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pJLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckcsTUFBTSxJQUFJLEdBQUcsWUFBb0MsQ0FBQztRQUVsRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssVUFBVSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxRQUFRLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLFNBQVMsQ0FBQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssY0FBYyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxVQUFVLENBQUM7UUFFdkMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQztRQUNyRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdEUseUNBQXlDO1FBQ3pDLE1BQU0sT0FBTyxHQUErSDtZQUMxSSxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsU0FBUyxFQUFFLDZnQkFBNmdCO2dCQUN4aEIsS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLDZDQUE2QyxFQUFFLFdBQVcsRUFBRSw0RUFBNEUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDekwsRUFBRSxLQUFLLEVBQUUsaURBQWlELEVBQUUsV0FBVyxFQUFFLGdFQUFnRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUNqTCxFQUFFLEtBQUssRUFBRSxvREFBb0QsRUFBRSxXQUFXLEVBQUUsZ0VBQWdFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7aUJBQ3JMO2dCQUNELGFBQWEsRUFBRTtvQkFDYixjQUFjLEVBQUUsb0RBQW9EO29CQUNwRSxlQUFlLEVBQUUsY0FBYztvQkFDL0Isa0JBQWtCLEVBQUUsY0FBYztvQkFDbEMsWUFBWSxFQUFFLHlDQUF5QztvQkFDdkQsaUJBQWlCLEVBQUUsaUNBQWlDO29CQUNwRCxpQkFBaUIsRUFBRSxvQkFBb0I7aUJBQ3hDO2dCQUNELEtBQUssRUFBRSxnTkFBZ047YUFDeE47WUFDRCxrQkFBa0IsRUFBRTtnQkFDbEIsS0FBSyxFQUFFLG1DQUFtQztnQkFDMUMsU0FBUyxFQUFFLGliQUFpYjtnQkFDNWIsS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLDZDQUE2QyxFQUFFLFdBQVcsRUFBRSxpRkFBaUYsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDOUwsRUFBRSxLQUFLLEVBQUUsaURBQWlELEVBQUUsV0FBVyxFQUFFLG9GQUFvRixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUNyTSxFQUFFLEtBQUssRUFBRSxnREFBZ0QsRUFBRSxXQUFXLEVBQUUsMEVBQTBFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7aUJBQzNMO2dCQUNELGFBQWEsRUFBRTtvQkFDYixjQUFjLEVBQUUsMkNBQTJDO29CQUMzRCxlQUFlLEVBQUUsY0FBYztvQkFDL0Isa0JBQWtCLEVBQUUsY0FBYztvQkFDbEMsWUFBWSxFQUFFLHlDQUF5QztvQkFDdkQsMkJBQTJCLEVBQUUsaUNBQWlDO29CQUM5RCxzQkFBc0IsRUFBRSxtQ0FBbUM7aUJBQzVEO2dCQUNELEtBQUssRUFBRSxrTUFBa007YUFDMU07WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLDJDQUEyQztnQkFDbEQsU0FBUyxFQUFFLDBnQkFBMGdCO2dCQUNyaEIsS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLGtEQUFrRCxFQUFFLFdBQVcsRUFBRSxvRUFBb0UsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDdEwsRUFBRSxLQUFLLEVBQUUsNkRBQTZELEVBQUUsV0FBVyxFQUFFLHdFQUF3RSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUNyTSxFQUFFLEtBQUssRUFBRSx1REFBdUQsRUFBRSxXQUFXLEVBQUUsNkVBQTZFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7aUJBQ3JNO2dCQUNELGFBQWEsRUFBRTtvQkFDYixjQUFjLEVBQUUsNkNBQTZDO29CQUM3RCxlQUFlLEVBQUUsa0JBQWtCO29CQUNuQyxrQkFBa0IsRUFBRSxjQUFjO29CQUNsQyxvQkFBb0IsRUFBRSx1Q0FBdUM7b0JBQzdELHFCQUFxQixFQUFFLHdDQUF3QztvQkFDL0QsNkJBQTZCLEVBQUUseUNBQXlDO2lCQUN6RTtnQkFDRCxLQUFLLEVBQUUsMExBQTBMO2FBQ2xNO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEtBQUssRUFBRSx5Q0FBeUM7Z0JBQ2hELFNBQVMsRUFBRSxpU0FBaVM7Z0JBQzVTLEtBQUssRUFBRTtvQkFDTCxFQUFFLEtBQUssRUFBRSwyQ0FBMkMsRUFBRSxXQUFXLEVBQUUsNEZBQTRGLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7b0JBQ3ZNLEVBQUUsS0FBSyxFQUFFLDJDQUEyQyxFQUFFLFdBQVcsRUFBRSxrR0FBa0csRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDN00sRUFBRSxLQUFLLEVBQUUsZ0RBQWdELEVBQUUsV0FBVyxFQUFFLG9GQUFvRixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2lCQUNyTTtnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsY0FBYyxFQUFFLGtEQUFrRDtvQkFDbEUsZUFBZSxFQUFFLGlCQUFpQjtvQkFDbEMsa0JBQWtCLEVBQUUsY0FBYztvQkFDbEMsWUFBWSxFQUFFLHlDQUF5QztvQkFDdkQsb0JBQW9CLEVBQUUsZ0NBQWdDO29CQUN0RCxzQkFBc0IsRUFBRSxvQkFBb0I7aUJBQzdDO2dCQUNELEtBQUssRUFBRSw4R0FBOEc7YUFDdEg7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLGdEQUFnRDtnQkFDdkQsU0FBUyxFQUFFLDZZQUE2WTtnQkFDeFosS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFLFdBQVcsRUFBRSw0RUFBNEUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDOUssRUFBRSxLQUFLLEVBQUUsNkNBQTZDLEVBQUUsV0FBVyxFQUFFLG9EQUFvRCxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUNqSyxFQUFFLEtBQUssRUFBRSxvQ0FBb0MsRUFBRSxXQUFXLEVBQUUseUNBQXlDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7aUJBQzlJO2dCQUNELGFBQWEsRUFBRTtvQkFDYixjQUFjLEVBQUUsa0NBQWtDO29CQUNsRCxlQUFlLEVBQUUsY0FBYztvQkFDL0Isa0JBQWtCLEVBQUUsY0FBYztvQkFDbEMsYUFBYSxFQUFFLG1DQUFtQztvQkFDbEQsYUFBYSxFQUFFLGtDQUFrQztvQkFDakQsb0JBQW9CLEVBQUUsa0NBQWtDO2lCQUN6RDtnQkFDRCxLQUFLLEVBQUUsMEhBQTBIO2FBQ2xJO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxpQ0FBaUM7Z0JBQ3hDLFNBQVMsRUFBRSxpWUFBaVk7Z0JBQzVZLEtBQUssRUFBRTtvQkFDTCxFQUFFLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSxXQUFXLEVBQUUsaUVBQWlFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7b0JBQ2pMLEVBQUUsS0FBSyxFQUFFLHFEQUFxRCxFQUFFLFdBQVcsRUFBRSw4RUFBOEUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDek0sRUFBRSxLQUFLLEVBQUUsbURBQW1ELEVBQUUsV0FBVyxFQUFFLG9EQUFvRCxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2lCQUM5SztnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsY0FBYyxFQUFFLHVEQUF1RDtvQkFDdkUsZUFBZSxFQUFFLGNBQWM7b0JBQy9CLGtCQUFrQixFQUFFLGNBQWM7b0JBQ2xDLHdCQUF3QixFQUFFLGVBQWU7b0JBQ3pDLGlCQUFpQixFQUFFLGtCQUFrQjtvQkFDckMsc0JBQXNCLEVBQUUsZUFBZTtpQkFDeEM7Z0JBQ0QsS0FBSyxFQUFFLHdJQUF3STthQUNoSjtZQUNELFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUscUNBQXFDO2dCQUM1QyxTQUFTLEVBQUUsc2JBQXNiO2dCQUNqYyxLQUFLLEVBQUU7b0JBQ0wsRUFBRSxLQUFLLEVBQUUsK0NBQStDLEVBQUUsV0FBVyxFQUFFLGtGQUFrRixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO29CQUN6TSxFQUFFLEtBQUssRUFBRSxvREFBb0QsRUFBRSxXQUFXLEVBQUUsOEVBQThFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7aUJBQ25NO2dCQUNELGFBQWEsRUFBRTtvQkFDYixjQUFjLEVBQUUsMkNBQTJDO29CQUMzRCxlQUFlLEVBQUUsY0FBYztvQkFDL0Isa0JBQWtCLEVBQUUsY0FBYztvQkFDbEMsaUJBQWlCLEVBQUUsd0JBQXdCO29CQUMzQyxnQkFBZ0IsRUFBRSxxQkFBcUI7b0JBQ3ZDLHVCQUF1QixFQUFFLGVBQWU7aUJBQ3pDO2dCQUNELEtBQUssRUFBRSwrSUFBK0k7YUFDdko7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsU0FBUyxFQUFFLHdLQUF3SztnQkFDbkwsS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLHdEQUF3RCxFQUFFLFdBQVcsRUFBRSxzREFBc0QsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDL0s7Z0JBQ0QsYUFBYSxFQUFFO29CQUNiLGNBQWMsRUFBRSxtQ0FBbUM7b0JBQ25ELGVBQWUsRUFBRSxjQUFjO29CQUMvQixrQkFBa0IsRUFBRSxjQUFjO29CQUNsQyxZQUFZLEVBQUUsZUFBZTtpQkFDOUI7Z0JBQ0QsS0FBSyxFQUFFLHlGQUF5RjthQUNqRztZQUNELE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixTQUFTLEVBQUUsd0tBQXdLO2dCQUNuTCxLQUFLLEVBQUU7b0JBQ0wsRUFBRSxLQUFLLEVBQUUsd0RBQXdELEVBQUUsV0FBVyxFQUFFLHNEQUFzRCxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2lCQUMvSztnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsY0FBYyxFQUFFLG1DQUFtQztvQkFDbkQsZUFBZSxFQUFFLGNBQWM7b0JBQy9CLGtCQUFrQixFQUFFLGNBQWM7b0JBQ2xDLFlBQVksRUFBRSxlQUFlO2lCQUM5QjtnQkFDRCxLQUFLLEVBQUUseUZBQXlGO2FBQ2pHO1NBQ0YsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFaEYsTUFBTSxVQUFVLEdBQWlCO1lBQy9CLFVBQVUsRUFBRSxTQUFTO2dCQUNuQixDQUFDLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsU0FBUztvQkFDWCxDQUFDLENBQUMsVUFBVTtvQkFDWixDQUFDLENBQUMsYUFBYTt3QkFDZixDQUFDLENBQUMsVUFBVTt3QkFDWixDQUFDLENBQUMsVUFBVTs0QkFDWixDQUFDLENBQUMsVUFBVTs0QkFDWixDQUFDLENBQUMsUUFBUTtnQ0FDVixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPO2dDQUMvRCxDQUFDLENBQUMsVUFBVTtZQUNkLEtBQUssRUFBRSxTQUFTO2dCQUNkLENBQUMsQ0FBQyxpQkFBaUI7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUztvQkFDcEIsQ0FBQyxDQUFDLGFBQWE7b0JBQ2YsQ0FBQyxDQUFDLFNBQVM7d0JBQ1gsQ0FBQyxDQUFDLGlCQUFpQjt3QkFDbkIsQ0FBQyxDQUFDLGFBQWE7NEJBQ2YsQ0FBQyxDQUFDLGNBQWM7NEJBQ2hCLENBQUMsQ0FBQyxVQUFVO2dDQUNaLENBQUMsQ0FBQyxzQkFBc0I7Z0NBQ3hCLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksc0JBQXNCLENBQUM7WUFDbkQsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDO2dCQUMxQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDLENBQUMsU0FBUztZQUNiLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsT0FBTyxFQUFFLDZDQUE2QzthQUN2RDtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsV0FBVztnQkFDakIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSxrRUFBa0U7Z0JBQ25HLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLDZCQUE2QjtnQkFDMUQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLElBQUksNEJBQTRCO2dCQUN6RCxPQUFPLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSwyQkFBMkI7Z0JBQzVELGVBQWUsRUFBRSxRQUFRLENBQUMsbUJBQW1CLElBQUksZ0NBQWdDO2dCQUNqRixLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVMsSUFBSSw2RUFBNkU7YUFDM0c7WUFDRCxLQUFLLEVBQUUsU0FBUztnQkFDZCxDQUFDLENBQUM7b0JBQ0UsRUFBRSxLQUFLLEVBQUUsZ0RBQWdELEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7b0JBQ2pHLEVBQUUsS0FBSyxFQUFFLHNEQUFzRCxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO29CQUN2RyxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtvQkFDM0YsRUFBRSxLQUFLLEVBQUUsMENBQTBDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7b0JBQzNGLEVBQUUsS0FBSyxFQUFFLGtEQUFrRCxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2lCQUNwRztnQkFDSCxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsWUFBYSxDQUFDLEtBQUs7b0JBQ3JCLENBQUMsQ0FBQzt3QkFDRTs0QkFDRSxLQUFLLEVBQUUsb0NBQW9DOzRCQUMzQyxXQUFXLEVBQUUsbURBQW1EOzRCQUNoRSxRQUFRLEVBQUUsQ0FBQzs0QkFDWCxVQUFVLEVBQUUsT0FBTzs0QkFDbkIsS0FBSyxFQUFFLE9BQU87eUJBQ2Y7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGlDQUFpQzs0QkFDeEMsV0FBVyxFQUFFLDREQUE0RDs0QkFDekUsUUFBUSxFQUFFLENBQUM7NEJBQ1gsVUFBVSxFQUFFLE1BQU07NEJBQ2xCLEtBQUssRUFBRSxNQUFNO3lCQUNkO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxpQ0FBaUM7NEJBQ3hDLFdBQVcsRUFBRSxxQ0FBcUM7NEJBQ2xELFFBQVEsRUFBRSxDQUFDOzRCQUNYLFVBQVUsRUFBRSxNQUFNOzRCQUNsQixLQUFLLEVBQUUsTUFBTTt5QkFDZDtxQkFDRjtZQUNMLFFBQVEsRUFBRSxDQUFDLFNBQVMsSUFBSSxhQUFhLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNySSxTQUFTLEVBQUUsQ0FBQyxTQUFTLElBQUksYUFBYSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsY0FBYyxFQUFFLENBQUMsU0FBUyxJQUFJLGFBQWEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssRUFBRSxDQUFDLFNBQVMsSUFBSSxhQUFhLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUMxSCxhQUFhLEVBQUUsS0FBSztZQUNwQixjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDN0MsWUFBWSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0RBQWdELENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDL0csTUFBTSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdEQUFnRCxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3RILEtBQUssRUFBRSxTQUFTO2dCQUNkLENBQUMsQ0FBQyxtRkFBbUY7Z0JBQ3JGLENBQUMsQ0FBQyxTQUFTO29CQUNYLENBQUMsQ0FBQyx3REFBd0Q7b0JBQzFELENBQUMsQ0FBQyxhQUFhO3dCQUNmLENBQUMsQ0FBQyw2RkFBNkY7d0JBQy9GLENBQUMsQ0FBQyxVQUFVOzRCQUNaLENBQUMsQ0FBQyxzRUFBc0U7NEJBQ3hFLENBQUMsQ0FBQyxRQUFRO2dDQUNWLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksdUVBQXVFLENBQUM7Z0NBQ2xHLENBQUMsQ0FBQyxrRUFBa0U7WUFDdEUsU0FBUyxFQUFFLFFBQVE7Z0JBQ2pCLENBQUMsQ0FBQyxZQUFhLENBQUMsU0FBUztnQkFDekIsQ0FBQyxDQUFDLFNBQVM7WUFDYixhQUFhLEVBQUUsU0FBUztnQkFDdEIsQ0FBQyxDQUFDO29CQUNFLGNBQWMsRUFBRSx5QkFBeUI7b0JBQ3pDLGVBQWUsRUFBRSxjQUFjO29CQUMvQixZQUFZLEVBQUUsYUFBYTtvQkFDM0IsZ0JBQWdCLEVBQUUsMkRBQTJEO29CQUM3RSxvQkFBb0IsRUFBRSx1Q0FBdUM7b0JBQzdELGtCQUFrQixFQUFFLGtCQUFrQjtpQkFDdkM7Z0JBQ0gsQ0FBQyxDQUFDLFFBQVEsSUFBSSxZQUFZLEVBQUUsYUFBYTtvQkFDekMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhO29CQUM1QixDQUFDLENBQUMsU0FBUztTQUNkLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLGtDQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVwRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSw2QkFBNkIsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUM7UUFDeEYsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUscUNBQXFDLENBQUMsQ0FBQztRQUV0RSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUNqQyxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUVoRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLFNBQVMsS0FBSyxJQUFJLFFBQVEsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBRUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLDZDQUE2QyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0FBQ0gsQ0FBQztBQUVELDBDQUEwQztBQUM3QixRQUFBLElBQUksR0FBRyxHQUFHLENBQUMifQ==
@@ -14,8 +14,10 @@ async function GET(req, res) {
14
14
  const validStyles = ["modern", "classic", "minimal", "zoho_exact", "standard"];
15
15
  const style = validStyles.includes(rawStyle) ? rawStyle : "modern";
16
16
  const rawType = String(req.query.type || "").trim().toLowerCase();
17
- const validTypes = ["invoice", "receipt", "packing_slip", "estimate", "custom", "job_card"];
18
- const type = (validTypes.includes(rawType) ? rawType : "invoice");
17
+ const isCertRequest = rawType === "certificate";
18
+ const validTypes = ["invoice", "receipt", "packing_slip", "estimate", "custom", "job_card", "service_report", "handover", "certificate"];
19
+ const resolvedType = isCertRequest ? "custom" : (validTypes.includes(rawType) ? rawType : "invoice");
20
+ const type = resolvedType;
19
21
  const isJobCard = type === "job_card";
20
22
  const isCustom = type === "custom";
21
23
  const isReceipt = type === "receipt";
@@ -150,6 +152,34 @@ async function GET(req, res) {
150
152
  },
151
153
  notes: "Ownership transfers immediately upon document execution. Valuation is binding and irrevocable once trade-in payout or store credit is issued.",
152
154
  },
155
+ blank: {
156
+ title: "Official Document",
157
+ body_text: "This official technical document confirms the specifications, service terms, and verified conditions documented by Urban Device Care for the specified customer asset.",
158
+ items: [
159
+ { title: "Professional Hardware Inspection & Maintenance Service", description: "Certified technical evaluation and service clearance", quantity: 1, unit_price: 0, total: 0 },
160
+ ],
161
+ custom_fields: {
162
+ "Device Model": "Computing Asset / Hardware Module",
163
+ "Serial / IMEI": "SN-XXXX-XXXX",
164
+ "Ticket Reference": "RT-2024-0001",
165
+ "Technician": "Bonifencia A.",
166
+ },
167
+ notes: "Standard terms and conditions apply. For inquiries, contact info@urbandevicecare.co.uk.",
168
+ },
169
+ generic: {
170
+ title: "Official Document",
171
+ body_text: "This official technical document confirms the specifications, service terms, and verified conditions documented by Urban Device Care for the specified customer asset.",
172
+ items: [
173
+ { title: "Professional Hardware Inspection & Maintenance Service", description: "Certified technical evaluation and service clearance", quantity: 1, unit_price: 0, total: 0 },
174
+ ],
175
+ custom_fields: {
176
+ "Device Model": "Computing Asset / Hardware Module",
177
+ "Serial / IMEI": "SN-XXXX-XXXX",
178
+ "Ticket Reference": "RT-2024-0001",
179
+ "Technician": "Bonifencia A.",
180
+ },
181
+ notes: "Standard terms and conditions apply. For inquiries, contact info@urbandevicecare.co.uk.",
182
+ },
153
183
  };
154
184
  const activePreset = isCustom ? (PRESETS[rawPreset] || PRESETS.warranty) : null;
155
185
  const sampleData = {
@@ -297,4 +327,4 @@ async function GET(req, res) {
297
327
  }
298
328
  // HEAD /documents/templates/preview
299
329
  exports.HEAD = GET;
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50cy90ZW1wbGF0ZXMvcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxrQkEwU0M7QUFqVEQsNkRBQWlFO0FBRWpFLDRFQUFzRjtBQUV6RSxRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFbEMsaUtBQWlLO0FBQzFKLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5FLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FB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
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50cy90ZW1wbGF0ZXMvcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxrQkF3VUM7QUEvVUQsNkRBQWlFO0FBRWpFLDRFQUFzRjtBQUV6RSxRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFbEMsaUtBQWlLO0FBQzFKLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5FLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FB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