@codemind.ec/medusa-plugin-invoice 1.1.0 → 1.2.0

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.
@@ -310,31 +310,42 @@ const config = defineRouteConfig({
310
310
  label: "Plantillas PDF",
311
311
  icon: DocumentText
312
312
  });
313
- const NewCompanyPage = () => {
313
+ const EditCompanyPage = () => {
314
+ const { id } = useParams();
314
315
  const navigate = useNavigate();
315
- const form = useForm({
316
- defaultValues: {
317
- company_name: "",
318
- company_ruc: "",
319
- company_address: "",
320
- company_phone: "",
321
- company_email: "",
322
- company_logo: "",
323
- notes: "",
324
- admin_notification_email: "",
325
- is_default: false
326
- }
316
+ const queryClient = useQueryClient();
317
+ const { data, isLoading } = useQuery({
318
+ queryFn: () => sdk.client.fetch(`/admin/invoice-config/${id}`),
319
+ queryKey: ["invoice-config", id],
320
+ enabled: !!id
327
321
  });
328
- const createMutation = useMutation({
329
- mutationFn: (payload) => sdk.client.fetch("/admin/invoice-config", {
322
+ const config2 = data == null ? void 0 : data.invoice_config;
323
+ const getDefaults = useCallback(() => ({
324
+ company_name: (config2 == null ? void 0 : config2.company_name) || "",
325
+ company_ruc: (config2 == null ? void 0 : config2.company_ruc) || "",
326
+ company_address: (config2 == null ? void 0 : config2.company_address) || "",
327
+ company_phone: (config2 == null ? void 0 : config2.company_phone) || "",
328
+ company_email: (config2 == null ? void 0 : config2.company_email) || "",
329
+ company_logo: (config2 == null ? void 0 : config2.company_logo) || "",
330
+ notes: (config2 == null ? void 0 : config2.notes) || "",
331
+ admin_notification_email: (config2 == null ? void 0 : config2.admin_notification_email) || "",
332
+ is_default: (config2 == null ? void 0 : config2.is_default) || false
333
+ }), [config2]);
334
+ const form = useForm({ defaultValues: getDefaults() });
335
+ useEffect(() => {
336
+ form.reset(getDefaults());
337
+ }, [getDefaults]);
338
+ const saveMutation = useMutation({
339
+ mutationFn: (payload) => sdk.client.fetch(`/admin/invoice-config/${id}`, {
330
340
  method: "POST",
331
341
  body: payload
332
342
  }),
333
343
  onSuccess: () => {
334
- toast.success("Empresa creada exitosamente");
335
- navigate("/invoice-config/companies");
344
+ queryClient.invalidateQueries({ queryKey: ["invoice-config", id] });
345
+ queryClient.invalidateQueries({ queryKey: ["invoice-configs"] });
346
+ toast.success("Empresa actualizada");
336
347
  },
337
- onError: () => toast.error("Error al crear la empresa")
348
+ onError: () => toast.error("Error al guardar")
338
349
  });
339
350
  const uploadLogo = async (event) => {
340
351
  var _a;
@@ -347,10 +358,16 @@ const NewCompanyPage = () => {
347
358
  toast.error("Error al subir el logo.");
348
359
  }
349
360
  };
350
- const handleSubmit = form.handleSubmit((data) => createMutation.mutate(data));
361
+ const handleSubmit = form.handleSubmit((data2) => saveMutation.mutate(data2));
362
+ if (isLoading) {
363
+ return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx("div", { className: "text-center py-10", children: "Cargando..." }) });
364
+ }
365
+ if (!config2) {
366
+ return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx("div", { className: "text-center py-10", children: "Empresa no encontrada" }) });
367
+ }
351
368
  return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0", children: [
352
369
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-4", children: [
353
- /* @__PURE__ */ jsx(Heading, { level: "h1", children: "Nueva Empresa" }),
370
+ /* @__PURE__ */ jsx(Heading, { level: "h1", children: "Editar Empresa" }),
354
371
  /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/companies"), children: "← Volver" })
355
372
  ] }),
356
373
  /* @__PURE__ */ jsx(FormProvider, { ...form, children: /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "flex flex-col gap-4 p-6 max-w-2xl", children: [
@@ -373,7 +390,7 @@ const NewCompanyPage = () => {
373
390
  name: "company_name",
374
391
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
375
392
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Nombre de la Empresa *" }),
376
- /* @__PURE__ */ jsx(Input, { ...field, placeholder: "Mi Empresa S.A.S." })
393
+ /* @__PURE__ */ jsx(Input, { ...field })
377
394
  ] })
378
395
  }
379
396
  ),
@@ -395,7 +412,7 @@ const NewCompanyPage = () => {
395
412
  name: "company_address",
396
413
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
397
414
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Dirección" }),
398
- /* @__PURE__ */ jsx(Textarea, { ...field, placeholder: "Av. Principal 123, Quito" })
415
+ /* @__PURE__ */ jsx(Textarea, { ...field })
399
416
  ] })
400
417
  }
401
418
  ),
@@ -407,7 +424,7 @@ const NewCompanyPage = () => {
407
424
  name: "company_phone",
408
425
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
409
426
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Teléfono" }),
410
- /* @__PURE__ */ jsx(Input, { ...field, placeholder: "+593 99 123 4567" })
427
+ /* @__PURE__ */ jsx(Input, { ...field })
411
428
  ] })
412
429
  }
413
430
  ),
@@ -418,7 +435,7 @@ const NewCompanyPage = () => {
418
435
  name: "company_email",
419
436
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
420
437
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Email de la Empresa" }),
421
- /* @__PURE__ */ jsx(Input, { ...field, placeholder: "info@empresa.com" })
438
+ /* @__PURE__ */ jsx(Input, { ...field })
422
439
  ] })
423
440
  }
424
441
  )
@@ -430,7 +447,7 @@ const NewCompanyPage = () => {
430
447
  name: "notes",
431
448
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
432
449
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Notas" }),
433
- /* @__PURE__ */ jsx(Textarea, { ...field, placeholder: "Notas internas o pie de página del documento" })
450
+ /* @__PURE__ */ jsx(Textarea, { ...field })
434
451
  ] })
435
452
  }
436
453
  ),
@@ -468,47 +485,36 @@ const NewCompanyPage = () => {
468
485
  ),
469
486
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2 pt-2", children: [
470
487
  /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/companies"), children: "Cancelar" }),
471
- /* @__PURE__ */ jsx(Button, { type: "submit", isLoading: createMutation.isPending, children: "Crear Empresa" })
488
+ /* @__PURE__ */ jsx(Button, { type: "submit", isLoading: saveMutation.isPending, children: "Guardar Cambios" })
472
489
  ] })
473
490
  ] }) })
474
491
  ] });
475
492
  };
476
- const EditCompanyPage = () => {
477
- const { id } = useParams();
493
+ const NewCompanyPage = () => {
478
494
  const navigate = useNavigate();
479
- const queryClient = useQueryClient();
480
- const { data, isLoading } = useQuery({
481
- queryFn: () => sdk.client.fetch(`/admin/invoice-config/${id}`),
482
- queryKey: ["invoice-config", id],
483
- enabled: !!id
495
+ const form = useForm({
496
+ defaultValues: {
497
+ company_name: "",
498
+ company_ruc: "",
499
+ company_address: "",
500
+ company_phone: "",
501
+ company_email: "",
502
+ company_logo: "",
503
+ notes: "",
504
+ admin_notification_email: "",
505
+ is_default: false
506
+ }
484
507
  });
485
- const config2 = data == null ? void 0 : data.invoice_config;
486
- const getDefaults = useCallback(() => ({
487
- company_name: (config2 == null ? void 0 : config2.company_name) || "",
488
- company_ruc: (config2 == null ? void 0 : config2.company_ruc) || "",
489
- company_address: (config2 == null ? void 0 : config2.company_address) || "",
490
- company_phone: (config2 == null ? void 0 : config2.company_phone) || "",
491
- company_email: (config2 == null ? void 0 : config2.company_email) || "",
492
- company_logo: (config2 == null ? void 0 : config2.company_logo) || "",
493
- notes: (config2 == null ? void 0 : config2.notes) || "",
494
- admin_notification_email: (config2 == null ? void 0 : config2.admin_notification_email) || "",
495
- is_default: (config2 == null ? void 0 : config2.is_default) || false
496
- }), [config2]);
497
- const form = useForm({ defaultValues: getDefaults() });
498
- useEffect(() => {
499
- form.reset(getDefaults());
500
- }, [getDefaults]);
501
- const saveMutation = useMutation({
502
- mutationFn: (payload) => sdk.client.fetch(`/admin/invoice-config/${id}`, {
508
+ const createMutation = useMutation({
509
+ mutationFn: (payload) => sdk.client.fetch("/admin/invoice-config", {
503
510
  method: "POST",
504
511
  body: payload
505
512
  }),
506
513
  onSuccess: () => {
507
- queryClient.invalidateQueries({ queryKey: ["invoice-config", id] });
508
- queryClient.invalidateQueries({ queryKey: ["invoice-configs"] });
509
- toast.success("Empresa actualizada");
514
+ toast.success("Empresa creada exitosamente");
515
+ navigate("/invoice-config/companies");
510
516
  },
511
- onError: () => toast.error("Error al guardar")
517
+ onError: () => toast.error("Error al crear la empresa")
512
518
  });
513
519
  const uploadLogo = async (event) => {
514
520
  var _a;
@@ -521,16 +527,10 @@ const EditCompanyPage = () => {
521
527
  toast.error("Error al subir el logo.");
522
528
  }
523
529
  };
524
- const handleSubmit = form.handleSubmit((data2) => saveMutation.mutate(data2));
525
- if (isLoading) {
526
- return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx("div", { className: "text-center py-10", children: "Cargando..." }) });
527
- }
528
- if (!config2) {
529
- return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx("div", { className: "text-center py-10", children: "Empresa no encontrada" }) });
530
- }
530
+ const handleSubmit = form.handleSubmit((data) => createMutation.mutate(data));
531
531
  return /* @__PURE__ */ jsxs(Container, { className: "divide-y p-0", children: [
532
532
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-4", children: [
533
- /* @__PURE__ */ jsx(Heading, { level: "h1", children: "Editar Empresa" }),
533
+ /* @__PURE__ */ jsx(Heading, { level: "h1", children: "Nueva Empresa" }),
534
534
  /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/companies"), children: "← Volver" })
535
535
  ] }),
536
536
  /* @__PURE__ */ jsx(FormProvider, { ...form, children: /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "flex flex-col gap-4 p-6 max-w-2xl", children: [
@@ -553,7 +553,7 @@ const EditCompanyPage = () => {
553
553
  name: "company_name",
554
554
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
555
555
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Nombre de la Empresa *" }),
556
- /* @__PURE__ */ jsx(Input, { ...field })
556
+ /* @__PURE__ */ jsx(Input, { ...field, placeholder: "Mi Empresa S.A.S." })
557
557
  ] })
558
558
  }
559
559
  ),
@@ -575,7 +575,7 @@ const EditCompanyPage = () => {
575
575
  name: "company_address",
576
576
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
577
577
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Dirección" }),
578
- /* @__PURE__ */ jsx(Textarea, { ...field })
578
+ /* @__PURE__ */ jsx(Textarea, { ...field, placeholder: "Av. Principal 123, Quito" })
579
579
  ] })
580
580
  }
581
581
  ),
@@ -587,7 +587,7 @@ const EditCompanyPage = () => {
587
587
  name: "company_phone",
588
588
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
589
589
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Teléfono" }),
590
- /* @__PURE__ */ jsx(Input, { ...field })
590
+ /* @__PURE__ */ jsx(Input, { ...field, placeholder: "+593 99 123 4567" })
591
591
  ] })
592
592
  }
593
593
  ),
@@ -598,7 +598,7 @@ const EditCompanyPage = () => {
598
598
  name: "company_email",
599
599
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
600
600
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Email de la Empresa" }),
601
- /* @__PURE__ */ jsx(Input, { ...field })
601
+ /* @__PURE__ */ jsx(Input, { ...field, placeholder: "info@empresa.com" })
602
602
  ] })
603
603
  }
604
604
  )
@@ -610,7 +610,7 @@ const EditCompanyPage = () => {
610
610
  name: "notes",
611
611
  render: ({ field }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
612
612
  /* @__PURE__ */ jsx(Label, { size: "small", weight: "plus", children: "Notas" }),
613
- /* @__PURE__ */ jsx(Textarea, { ...field })
613
+ /* @__PURE__ */ jsx(Textarea, { ...field, placeholder: "Notas internas o pie de página del documento" })
614
614
  ] })
615
615
  }
616
616
  ),
@@ -648,23 +648,114 @@ const EditCompanyPage = () => {
648
648
  ),
649
649
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2 pt-2", children: [
650
650
  /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/companies"), children: "Cancelar" }),
651
- /* @__PURE__ */ jsx(Button, { type: "submit", isLoading: saveMutation.isPending, children: "Guardar Cambios" })
651
+ /* @__PURE__ */ jsx(Button, { type: "submit", isLoading: createMutation.isPending, children: "Crear Empresa" })
652
652
  ] })
653
653
  ] }) })
654
654
  ] });
655
655
  };
656
+ const NewTemplatePage = () => {
657
+ const navigate = useNavigate();
658
+ const [name, setName] = useState("");
659
+ const [slug, setSlug] = useState("");
660
+ const [type, setType] = useState("order_invoice");
661
+ const createMutation = useMutation({
662
+ mutationFn: (payload) => sdk.client.fetch("/admin/invoice-templates", {
663
+ method: "POST",
664
+ body: payload
665
+ }),
666
+ onSuccess: (data) => {
667
+ toast.success("Plantilla creada");
668
+ navigate(`/invoice-config/invoice-templates/${data.invoice_template.id}`);
669
+ },
670
+ onError: () => {
671
+ toast.error("Error al crear la plantilla");
672
+ }
673
+ });
674
+ const handleCreate = () => {
675
+ if (!name || !slug) {
676
+ toast.error("Nombre y slug son requeridos");
677
+ return;
678
+ }
679
+ createMutation.mutate({
680
+ name,
681
+ slug,
682
+ type,
683
+ html_content: getDefaultHtml(type)
684
+ });
685
+ };
686
+ return /* @__PURE__ */ jsxs(Container, { children: [
687
+ /* @__PURE__ */ jsx(Heading, { level: "h1", style: { marginBottom: 24 }, children: "Nueva Plantilla" }),
688
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 16, maxWidth: 500 }, children: [
689
+ /* @__PURE__ */ jsxs("div", { children: [
690
+ /* @__PURE__ */ jsx(Label, { htmlFor: "name", children: "Nombre" }),
691
+ /* @__PURE__ */ jsx(Input, { id: "name", value: name, onChange: (e) => setName(e.target.value), placeholder: "Ej: Mi Comprobante" })
692
+ ] }),
693
+ /* @__PURE__ */ jsxs("div", { children: [
694
+ /* @__PURE__ */ jsx(Label, { htmlFor: "slug", children: "Slug (identificador único)" }),
695
+ /* @__PURE__ */ jsx(
696
+ Input,
697
+ {
698
+ id: "slug",
699
+ value: slug,
700
+ onChange: (e) => setSlug(e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "_")),
701
+ placeholder: "Ej: my_custom_invoice"
702
+ }
703
+ )
704
+ ] }),
705
+ /* @__PURE__ */ jsxs("div", { children: [
706
+ /* @__PURE__ */ jsx(Label, { htmlFor: "type", children: "Tipo de documento" }),
707
+ /* @__PURE__ */ jsxs(Select, { value: type, onValueChange: setType, children: [
708
+ /* @__PURE__ */ jsx(Select.Trigger, { children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Seleccionar tipo" }) }),
709
+ /* @__PURE__ */ jsxs(Select.Content, { children: [
710
+ /* @__PURE__ */ jsx(Select.Item, { value: "order_invoice", children: "Comprobante de Pedido" }),
711
+ /* @__PURE__ */ jsx(Select.Item, { value: "quote_proforma", children: "Cotización Proforma" })
712
+ ] })
713
+ ] })
714
+ ] }),
715
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, marginTop: 16 }, children: [
716
+ /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/invoice-templates"), children: "Cancelar" }),
717
+ /* @__PURE__ */ jsx(Button, { onClick: handleCreate, isLoading: createMutation.isPending, children: "Crear Plantilla" })
718
+ ] })
719
+ ] })
720
+ ] });
721
+ };
722
+ function getDefaultHtml(type) {
723
+ if (type === "quote_proforma") {
724
+ return `<!DOCTYPE html>
725
+ <html>
726
+ <head><style>body { font-family: Helvetica, sans-serif; }</style></head>
727
+ <body>
728
+ <h1>COTIZACIÓN {{quote_number}}</h1>
729
+ <p>Fecha: {{date_str}}</p>
730
+ <p>Servicio: {{service_name}}</p>
731
+ <!-- Personaliza tu plantilla aquí -->
732
+ </body>
733
+ </html>`;
734
+ }
735
+ return `<!DOCTYPE html>
736
+ <html>
737
+ <head><style>body { font-family: Helvetica, sans-serif; }</style></head>
738
+ <body>
739
+ <h1>COMPROBANTE {{invoice_id}}</h1>
740
+ <p>Fecha: {{invoice_date}}</p>
741
+ <p>Empresa: {{company_name}}</p>
742
+ <!-- Personaliza tu plantilla aquí -->
743
+ </body>
744
+ </html>`;
745
+ }
746
+ const COMPANY_VARIABLES = [
747
+ { name: "company_name" },
748
+ { name: "company_ruc" },
749
+ { name: "company_address" },
750
+ { name: "company_phone" },
751
+ { name: "company_email" },
752
+ { name: "company_logo_base64" }
753
+ ];
656
754
  const ORDER_INVOICE_CATEGORIES = [
657
755
  {
658
756
  label: "Empresa",
659
757
  icon: "🏢",
660
- variables: [
661
- { name: "company_name" },
662
- { name: "company_ruc" },
663
- { name: "company_address" },
664
- { name: "company_phone" },
665
- { name: "company_email" },
666
- { name: "company_logo_base64" }
667
- ]
758
+ variables: COMPANY_VARIABLES
668
759
  },
669
760
  {
670
761
  label: "Documento",
@@ -722,10 +813,7 @@ const QUOTE_PROFORMA_CATEGORIES = [
722
813
  {
723
814
  label: "Empresa",
724
815
  icon: "🏢",
725
- variables: [
726
- { name: "company_name" },
727
- { name: "company_website" }
728
- ]
816
+ variables: [...COMPANY_VARIABLES, { name: "company_website" }]
729
817
  },
730
818
  {
731
819
  label: "Documento",
@@ -817,6 +905,11 @@ const SAMPLE_DATA = {
817
905
  },
818
906
  quote_proforma: {
819
907
  company_name: "Mi Empresa",
908
+ company_ruc: "1234567890001",
909
+ company_address: "Av. Principal 123, Quito",
910
+ company_phone: "+593 99 123 4567",
911
+ company_email: "info@miempresa.com",
912
+ company_logo_base64: PLACEHOLDER_LOGO_BASE64,
820
913
  company_website: "www.miempresa.com",
821
914
  quote_number: "QP-2025-0001",
822
915
  date_str: "19/06/2025",
@@ -1055,96 +1148,6 @@ const TemplateEditorPage = () => {
1055
1148
  ] })
1056
1149
  ] });
1057
1150
  };
1058
- const NewTemplatePage = () => {
1059
- const navigate = useNavigate();
1060
- const [name, setName] = useState("");
1061
- const [slug, setSlug] = useState("");
1062
- const [type, setType] = useState("order_invoice");
1063
- const createMutation = useMutation({
1064
- mutationFn: (payload) => sdk.client.fetch("/admin/invoice-templates", {
1065
- method: "POST",
1066
- body: payload
1067
- }),
1068
- onSuccess: (data) => {
1069
- toast.success("Plantilla creada");
1070
- navigate(`/invoice-config/invoice-templates/${data.invoice_template.id}`);
1071
- },
1072
- onError: () => {
1073
- toast.error("Error al crear la plantilla");
1074
- }
1075
- });
1076
- const handleCreate = () => {
1077
- if (!name || !slug) {
1078
- toast.error("Nombre y slug son requeridos");
1079
- return;
1080
- }
1081
- createMutation.mutate({
1082
- name,
1083
- slug,
1084
- type,
1085
- html_content: getDefaultHtml(type)
1086
- });
1087
- };
1088
- return /* @__PURE__ */ jsxs(Container, { children: [
1089
- /* @__PURE__ */ jsx(Heading, { level: "h1", style: { marginBottom: 24 }, children: "Nueva Plantilla" }),
1090
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 16, maxWidth: 500 }, children: [
1091
- /* @__PURE__ */ jsxs("div", { children: [
1092
- /* @__PURE__ */ jsx(Label, { htmlFor: "name", children: "Nombre" }),
1093
- /* @__PURE__ */ jsx(Input, { id: "name", value: name, onChange: (e) => setName(e.target.value), placeholder: "Ej: Mi Comprobante" })
1094
- ] }),
1095
- /* @__PURE__ */ jsxs("div", { children: [
1096
- /* @__PURE__ */ jsx(Label, { htmlFor: "slug", children: "Slug (identificador único)" }),
1097
- /* @__PURE__ */ jsx(
1098
- Input,
1099
- {
1100
- id: "slug",
1101
- value: slug,
1102
- onChange: (e) => setSlug(e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "_")),
1103
- placeholder: "Ej: my_custom_invoice"
1104
- }
1105
- )
1106
- ] }),
1107
- /* @__PURE__ */ jsxs("div", { children: [
1108
- /* @__PURE__ */ jsx(Label, { htmlFor: "type", children: "Tipo de documento" }),
1109
- /* @__PURE__ */ jsxs(Select, { value: type, onValueChange: setType, children: [
1110
- /* @__PURE__ */ jsx(Select.Trigger, { children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Seleccionar tipo" }) }),
1111
- /* @__PURE__ */ jsxs(Select.Content, { children: [
1112
- /* @__PURE__ */ jsx(Select.Item, { value: "order_invoice", children: "Comprobante de Pedido" }),
1113
- /* @__PURE__ */ jsx(Select.Item, { value: "quote_proforma", children: "Cotización Proforma" })
1114
- ] })
1115
- ] })
1116
- ] }),
1117
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, marginTop: 16 }, children: [
1118
- /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: () => navigate("/invoice-config/invoice-templates"), children: "Cancelar" }),
1119
- /* @__PURE__ */ jsx(Button, { onClick: handleCreate, isLoading: createMutation.isPending, children: "Crear Plantilla" })
1120
- ] })
1121
- ] })
1122
- ] });
1123
- };
1124
- function getDefaultHtml(type) {
1125
- if (type === "quote_proforma") {
1126
- return `<!DOCTYPE html>
1127
- <html>
1128
- <head><style>body { font-family: Helvetica, sans-serif; }</style></head>
1129
- <body>
1130
- <h1>COTIZACIÓN {{quote_number}}</h1>
1131
- <p>Fecha: {{date_str}}</p>
1132
- <p>Servicio: {{service_name}}</p>
1133
- <!-- Personaliza tu plantilla aquí -->
1134
- </body>
1135
- </html>`;
1136
- }
1137
- return `<!DOCTYPE html>
1138
- <html>
1139
- <head><style>body { font-family: Helvetica, sans-serif; }</style></head>
1140
- <body>
1141
- <h1>COMPROBANTE {{invoice_id}}</h1>
1142
- <p>Fecha: {{invoice_date}}</p>
1143
- <p>Empresa: {{company_name}}</p>
1144
- <!-- Personaliza tu plantilla aquí -->
1145
- </body>
1146
- </html>`;
1147
- }
1148
1151
  const i18nTranslations0 = {};
1149
1152
  const widgetModule = { widgets: [
1150
1153
  {
@@ -1166,21 +1169,21 @@ const routeModule = {
1166
1169
  Component: InvoiceTemplatesPage,
1167
1170
  path: "/invoice-config/invoice-templates"
1168
1171
  },
1169
- {
1170
- Component: NewCompanyPage,
1171
- path: "/invoice-config/companies/new"
1172
- },
1173
1172
  {
1174
1173
  Component: EditCompanyPage,
1175
1174
  path: "/invoice-config/companies/:id"
1176
1175
  },
1177
1176
  {
1178
- Component: TemplateEditorPage,
1179
- path: "/invoice-config/invoice-templates/:id"
1177
+ Component: NewCompanyPage,
1178
+ path: "/invoice-config/companies/new"
1180
1179
  },
1181
1180
  {
1182
1181
  Component: NewTemplatePage,
1183
1182
  path: "/invoice-config/invoice-templates/new"
1183
+ },
1184
+ {
1185
+ Component: TemplateEditorPage,
1186
+ path: "/invoice-config/invoice-templates/:id"
1184
1187
  }
1185
1188
  ]
1186
1189
  };
@@ -296,21 +296,14 @@ class OrderInvoiceStrategy extends strategy_1.BaseDocumentStrategy {
296
296
  const { order, items } = input;
297
297
  const currency = order.currency_code ?? "USD";
298
298
  const invoiceId = `INV-${input.invoiceDisplayId.toString().padStart(6, "0")}`;
299
- const logoBase64 = config.company_logo
300
- ? await this.imageUrlToBase64(config.company_logo)
301
- : "";
299
+ const companyCtx = await this.buildCompanyContext(config);
302
300
  const isHomeDelivery = order.shipping_methods?.some(sm => sm.shipping_option_id === (process.env.HOME_DELIVERY_OPTION_ID || "so_01KAT339XAY8G622P8PSGW7BAZ"));
303
301
  const extractCedula = (addr, metadata) => {
304
302
  const val = addr?.metadata?.cedula ?? metadata?.cedula;
305
303
  return val ? String(val) : "";
306
304
  };
307
305
  const data = {
308
- company_name: config.company_name ?? "",
309
- company_ruc: config.company_ruc ?? "",
310
- company_address: config.company_address ?? "",
311
- company_phone: config.company_phone ?? "",
312
- company_email: config.company_email ?? "",
313
- company_logo_base64: logoBase64,
306
+ ...companyCtx,
314
307
  invoice_id: invoiceId,
315
308
  invoice_date: new Date(input.created_at).toLocaleDateString("es-ES"),
316
309
  order_display_id: String(order.display_id).padStart(6, "0"),
@@ -345,4 +338,4 @@ class OrderInvoiceStrategy extends strategy_1.BaseDocumentStrategy {
345
338
  }
346
339
  }
347
340
  exports.OrderInvoiceStrategy = OrderInvoiceStrategy;
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL3RlbXBsYXRlcy9vcmRlci1pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHlDQUFtRTtBQTREbkUsaUZBQWlGO0FBRWpGOzs7O0dBSUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQXFCO0lBQzdDLE9BQU8sT0FBUSxJQUFvQyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUE7QUFDbEYsQ0FBQztBQUVELGlGQUFpRjtBQUVqRixNQUFNLFdBQVcsR0FBc0I7SUFDbkMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN2RCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7SUFDM0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckIs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QUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNyRCxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDN0QsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7Z0JBQ2pGLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUMxRCxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUM3RSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtnQkFDL0QsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVB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
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludm9pY2UtZ2VuZXJhdG9yL3RlbXBsYXRlcy9vcmRlci1pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHlDQUFtRTtBQTREbkUsaUZBQWlGO0FBRWpGOzs7O0dBSUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLElBQXFCO0lBQzdDLE9BQU8sT0FBUSxJQUFvQyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUE7QUFDbEYsQ0FBQztBQUVELGlGQUFpRjtBQUVqRixNQUFNLFdBQVcsR0FBc0I7SUFDbkMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN2RCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7SUFDM0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckIs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QUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNyRCxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDN0QsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7Z0JBQ2pGLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUMxRCxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUM3RSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtnQkFDL0QsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ2hFLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVB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