diff --git a/README.md b/README.md index 61c8a203b1..7ec01edf64 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Lunar

> [!CAUTION] -> Version 1.x is currently in alpha release. We recommend this version for new projects, however, it is not feature-complete and therefore may not be deemed production-ready. +> Version 1.x is currently in beta release. We recommend this version for new projects, however, it is not feature-complete and therefore may not be deemed production-ready. [Lunar](https://lunarphp.io) is a set of Laravel packages that bring functionality akin to Shopify and other e-commerce platforms to diff --git a/docs/admin/overview.md b/docs/admin/overview.md index c2a3e40158..d2f0003abe 100644 --- a/docs/admin/overview.md +++ b/docs/admin/overview.md @@ -1,8 +1,8 @@ # Introduction -::: danger Alpha Release +::: danger Beta Release Although many Lunar sites have been launched using v1.x, you may not consider this version production-ready for your own -use and should exercise the same amount of caution as you would with any software in an alpha state. 馃殌 +use and should exercise the same amount of caution as you would with any software in an beta state. 馃殌 ::: Lunar's admin panel is powered by Filament v3. It allows you to easily extend the admin panel to suit your project. diff --git a/docs/core/installation.md b/docs/core/installation.md index 9633b8b4dc..cd572157ac 100644 --- a/docs/core/installation.md +++ b/docs/core/installation.md @@ -1,8 +1,8 @@ # Installation -::: danger Alpha Release +::: danger Beta Release Although many Lunar sites have been launched using v1.x, you may not consider this version production-ready for your own -use and should exercise the same amount of caution as you would with any software in an alpha state. 馃殌 +use and should exercise the same amount of caution as you would with any software in an beta state. 馃殌 ::: ## Requirements @@ -20,7 +20,7 @@ use and should exercise the same amount of caution as you would with any softwar ### Composer Require Package ```sh -composer require lunarphp/lunar:"^1.0.0-alpha" -W +composer require lunarphp/lunar:"^1.0.0-beta" -W ``` ::: tip diff --git a/docs/core/overview.md b/docs/core/overview.md index bbdb47fdb1..d274fa5781 100644 --- a/docs/core/overview.md +++ b/docs/core/overview.md @@ -1,8 +1,8 @@ # Welcome to Lunar! -::: danger Alpha Release -Although many Lunar sites have been launched using v1.x, you may not consider this version production-ready for your own -use and should exercise the same amount of caution as you would with any software in an alpha state. 馃殌 +::: danger Beta Release +Although many Lunar sites have been launched using v1.x, you may not consider this version production-ready for your own +use and should exercise the same amount of caution as you would with any software in an beta state. 馃殌 ::: We are delighted you are considering Lunar for your project. We've spent a lot of time developing this package to bring headless e-commerce functionality to Laravel. diff --git a/packages/admin/resources/lang/es/actions.php b/packages/admin/resources/lang/es/actions.php new file mode 100644 index 0000000000..fe47f95174 --- /dev/null +++ b/packages/admin/resources/lang/es/actions.php @@ -0,0 +1,46 @@ + [ + 'create_root' => [ + 'label' => 'Crear colecci贸n ra铆z', + ], + 'create_child' => [ + 'label' => 'Crear colecci贸n secundaria', + ], + 'move' => [ + 'label' => 'Mover colecci贸n', + ], + 'delete' => [ + 'label' => 'Eliminar', + ], + ], + 'orders' => [ + 'update_status' => [ + 'label' => 'Actualizar estado', + 'wizard' => [ + 'step_one' => [ + 'label' => 'Estado', + ], + 'step_two' => [ + 'label' => 'Correos y notificaciones', + 'no_mailers' => 'No hay correos disponibles para este estado.', + ], + 'step_three' => [ + 'label' => 'Previsualizar y guardar', + 'no_mailers' => 'No se han seleccionado correos para la previsualizaci贸n.', + ], + ], + 'notification' => [ + 'label' => 'Estado del pedido actualizado', + ], + 'billing_email' => [ + 'label' => 'Correo de facturaci贸n', + ], + 'shipping_email' => [ + 'label' => 'Correo de env铆o', + ], + ], + + ], +]; diff --git a/packages/admin/resources/lang/es/activity.php b/packages/admin/resources/lang/es/activity.php new file mode 100644 index 0000000000..7e4aaf9ddc --- /dev/null +++ b/packages/admin/resources/lang/es/activity.php @@ -0,0 +1,29 @@ + 'Actividad', + + 'plural_label' => 'Actividades', + + 'table' => [ + 'subject' => 'Asunto', + 'description' => 'Descripci贸n', + 'log' => 'Registro', + 'logged_at' => 'Registrado en', + 'event' => 'Evento', + 'logged_from' => 'Registrado desde', + 'logged_until' => 'Registrado hasta', + ], + + 'form' => [ + 'causer_type' => 'Tipo de causante', + 'causer_id' => 'ID del causante', + 'subject_type' => 'Tipo de asunto', + 'subject_id' => 'ID del asunto', + 'description' => 'Descripci贸n', + 'attributes' => 'Atributos', + 'old' => 'Antiguo', + ], + +]; diff --git a/packages/admin/resources/lang/es/address.php b/packages/admin/resources/lang/es/address.php new file mode 100644 index 0000000000..424a6f7088 --- /dev/null +++ b/packages/admin/resources/lang/es/address.php @@ -0,0 +1,93 @@ + 'Direcci贸n', + + 'plural_label' => 'Direcciones', + + 'table' => [ + 'title' => [ + 'label' => 'T铆tulo', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la empresa', + ], + 'line_one' => [ + 'label' => 'Direcci贸n', + ], + 'line_two' => [ + 'label' => 'L铆nea Dos', + ], + 'line_three' => [ + 'label' => 'L铆nea Tres', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'country_id' => [ + 'label' => 'Pa铆s', + ], + 'state' => [ + 'label' => 'Estado/Provincia', + ], + 'postcode' => [ + 'label' => 'C贸digo postal', + ], + 'contact_email' => [ + 'label' => 'Correo de contacto', + ], + 'contact_phone' => [ + 'label' => 'Tel茅fono de contacto', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'T铆tulo', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la empresa', + ], + 'line_one' => [ + 'label' => 'L铆nea Uno', + ], + 'line_two' => [ + 'label' => 'L铆nea Dos', + ], + 'line_three' => [ + 'label' => 'L铆nea Tres', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'country_id' => [ + 'label' => 'Pa铆s', + ], + 'state' => [ + 'label' => 'Estado/Provincia', + ], + 'postcode' => [ + 'label' => 'C贸digo postal', + ], + 'contact_email' => [ + 'label' => 'Correo de contacto', + ], + 'contact_phone' => [ + 'label' => 'Tel茅fono de contacto', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/attribute.php b/packages/admin/resources/lang/es/attribute.php new file mode 100644 index 0000000000..5d6945f42f --- /dev/null +++ b/packages/admin/resources/lang/es/attribute.php @@ -0,0 +1,55 @@ + 'Atributo', + + 'plural_label' => 'Atributos', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripci贸n', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'type' => [ + 'label' => 'Tipo', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripci贸n', + 'helper' => 'Se usa para mostrar el texto de ayuda debajo de la entrada', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'searchable' => [ + 'label' => 'Buscable', + ], + 'filterable' => [ + 'label' => 'Filtrable', + ], + 'required' => [ + 'label' => 'Requerido', + ], + 'type' => [ + 'label' => 'Tipo', + ], + 'validation_rules' => [ + 'label' => 'Reglas de validaci贸n', + 'helper' => 'Reglas para el campo de atributo, ejemplo: min:1|max:10|...', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/attributegroup.php b/packages/admin/resources/lang/es/attributegroup.php new file mode 100644 index 0000000000..785ad2fe8d --- /dev/null +++ b/packages/admin/resources/lang/es/attributegroup.php @@ -0,0 +1,46 @@ + 'Grupo de Atributos', + + 'plural_label' => 'Grupos de Atributos', + + 'table' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'position' => [ + 'label' => 'Posici贸n', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'position' => [ + 'label' => 'Posici贸n', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de atributos no puede ser eliminado porque tiene atributos asociados.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/auth.php b/packages/admin/resources/lang/es/auth.php new file mode 100644 index 0000000000..5c73f08cce --- /dev/null +++ b/packages/admin/resources/lang/es/auth.php @@ -0,0 +1,32 @@ + 'Administrador', + 'roles.admin.description' => 'Administrador con acceso completo', + 'roles.staff.label' => 'Personal', + 'roles.staff.description' => 'Personal con acceso fundamental', + /** + * Permisos. + */ + 'permissions.settings.label' => 'Configuraciones', + 'permissions.settings.description' => 'Otorga acceso al 谩rea de configuraciones del centro', + 'permissions.settings:core.label' => 'Configuraciones Principales', + 'permissions.settings:core.description' => 'Acceso a configuraciones fundamentales de la tienda, como canales, idiomas, monedas, etc.', + 'permissions.settings:manage-staff.label' => 'Gestionar Personal', + 'permissions.settings:manage-staff.description' => 'Permite al miembro del personal editar a otros miembros del personal', + 'permissions.settings:manage-attributes.label' => 'Gestionar Atributos', + 'permissions.settings:manage-attributes.description' => 'Permite al miembro del personal editar y crear atributos adicionales', + 'permissions.catalog:manage-products.label' => 'Gestionar Productos', + 'permissions.catalog:manage-products.description' => 'Permite al miembro del personal editar productos, tipos de productos y marcas', + 'permissions.catalog:manage-collections.label' => 'Gestionar Colecciones', + 'permissions.catalog:manage-collections.description' => 'Permite al miembro del personal editar colecciones y sus grupos', + 'permissions.sales:manage-orders.label' => 'Gestionar Pedidos', + 'permissions.sales:manage-orders.description' => 'Permite al miembro del personal gestionar pedidos', + 'permissions.sales:manage-customers.label' => 'Gestionar Clientes', + 'permissions.sales:manage-customers.description' => 'Permite al miembro del personal gestionar clientes', + 'permissions.sales:manage-discounts.label' => 'Gestionar Descuentos', + 'permissions.sales:manage-discounts.description' => 'Permite al miembro del personal gestionar descuentos', +]; diff --git a/packages/admin/resources/lang/es/brand.php b/packages/admin/resources/lang/es/brand.php new file mode 100644 index 0000000000..72bfc11790 --- /dev/null +++ b/packages/admin/resources/lang/es/brand.php @@ -0,0 +1,72 @@ + 'Marca', + + 'plural_label' => 'Marcas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'products_count' => [ + 'label' => 'N.潞 de productos', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Esta marca no puede ser eliminada porque tiene productos asociados.', + ], + ], + ], + 'pages' => [ + 'products' => [ + 'label' => 'Productos', + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar un producto', + 'form' => [ + 'record_id' => [ + 'label' => 'Producto', + ], + ], + 'notification' => [ + 'success' => 'Producto asociado a la marca', + ], + ], + 'detach' => [ + 'notification' => [ + 'success' => 'Producto desasociado.', + ], + ], + ], + ], + 'collections' => [ + 'label' => 'Colecciones', + 'table' => [ + 'header_actions' => [ + 'attach' => [ + 'record_select' => [ + 'placeholder' => 'Seleccionar una colecci贸n', + ], + ], + ], + ], + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar una colecci贸n', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/channel.php b/packages/admin/resources/lang/es/channel.php new file mode 100644 index 0000000000..1df11a96f2 --- /dev/null +++ b/packages/admin/resources/lang/es/channel.php @@ -0,0 +1,39 @@ + 'Canal', + + 'plural_label' => 'Canales', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/collection.php b/packages/admin/resources/lang/es/collection.php new file mode 100644 index 0000000000..2714530c8c --- /dev/null +++ b/packages/admin/resources/lang/es/collection.php @@ -0,0 +1,45 @@ + 'Colecci贸n', + + 'plural_label' => 'Colecciones', + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'pages' => [ + 'children' => [ + 'label' => 'Colecciones Hijas', + 'actions' => [ + 'create_child' => [ + 'label' => 'Crear Colecci贸n Hija', + ], + ], + 'table' => [ + 'children_count' => [ + 'label' => 'N.潞 Hijas', + ], + 'name' => [ + 'label' => 'Nombre', + ], + ], + ], + 'edit' => [ + 'label' => 'Informaci贸n B谩sica', + ], + 'products' => [ + 'label' => 'Productos', + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar Producto', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/collectiongroup.php b/packages/admin/resources/lang/es/collectiongroup.php new file mode 100644 index 0000000000..15fde58348 --- /dev/null +++ b/packages/admin/resources/lang/es/collectiongroup.php @@ -0,0 +1,37 @@ + 'Grupo de Colecciones', + + 'plural_label' => 'Grupos de Colecciones', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'collections_count' => [ + 'label' => 'N.潞 Colecciones', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de colecciones no puede ser eliminado porque tiene colecciones asociadas.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/components.php b/packages/admin/resources/lang/es/components.php new file mode 100644 index 0000000000..cb56c5cf4b --- /dev/null +++ b/packages/admin/resources/lang/es/components.php @@ -0,0 +1,109 @@ + [ + 'notification' => [ + 'updated' => 'Etiquetas actualizadas', + ], + ], + + 'activity-log' => [ + 'input' => [ + 'placeholder' => 'Agregar un comentario', + ], + + 'action' => [ + 'add-comment' => 'Agregar Comentario', + ], + + 'system' => 'Sistema', + + 'partials' => [ + 'orders' => [ + 'order_created' => 'Pedido Creado', + + 'status_change' => 'Estado actualizado', + + 'capture' => 'Pago de :amount con tarjeta terminando en :last_four', + + 'authorized' => 'Autorizado de :amount con tarjeta terminando en :last_four', + + 'refund' => 'Reembolso de :amount con tarjeta terminando en :last_four', + + 'address' => ':type actualizado', + + 'billingAddress' => 'Direcci贸n de facturaci贸n', + + 'shippingAddress' => 'Direcci贸n de env铆o', + ], + + 'update' => [ + 'updated' => ':model actualizado', + ], + + 'create' => [ + 'created' => ':model creado', + ], + + 'tags' => [ + 'updated' => 'Etiquetas actualizadas', + 'added' => 'Agregado', + 'removed' => 'Eliminado', + ], + ], + + 'notification' => [ + 'comment_added' => 'Comentario agregado', + ], + ], + + 'forms' => [ + 'youtube' => [ + 'helperText' => 'Ingresa el ID del video de YouTube. ej. dQw4w9WgXcQ', + ], + ], + + 'collection-tree-view' => [ + 'actions' => [ + 'move' => [ + 'form' => [ + 'target_id' => [ + 'label' => 'Colecci贸n Padre', + ], + ], + ], + ], + 'notifications' => [ + 'collections-reordered' => [ + 'success' => 'Colecciones Reordenadas', + ], + 'node-expanded' => [ + 'danger' => 'No se pueden cargar las colecciones', + ], + 'delete' => [ + 'danger' => 'No se puede eliminar la colecci贸n', + ], + ], + ], + + 'product-options-list' => [ + 'add-option' => [ + 'label' => 'Agregar Opci贸n', + ], + 'delete-option' => [ + 'label' => 'Eliminar Opci贸n', + ], + 'remove-shared-option' => [ + 'label' => 'Eliminar Opci贸n Compartida', + ], + 'add-value' => [ + 'label' => 'Agregar Otro Valor', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/currency.php b/packages/admin/resources/lang/es/currency.php new file mode 100644 index 0000000000..653a95842b --- /dev/null +++ b/packages/admin/resources/lang/es/currency.php @@ -0,0 +1,51 @@ + 'Moneda', + + 'plural_label' => 'Monedas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'exchange_rate' => [ + 'label' => 'Tasa de Cambio', + ], + 'decimal_places' => [ + 'label' => 'Decimales', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'exchange_rate' => [ + 'label' => 'Tasa de Cambio', + ], + 'decimal_places' => [ + 'label' => 'Decimales', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/customer.php b/packages/admin/resources/lang/es/customer.php new file mode 100644 index 0000000000..341ac80497 --- /dev/null +++ b/packages/admin/resources/lang/es/customer.php @@ -0,0 +1,63 @@ + 'Cliente', + + 'plural_label' => 'Clientes', + + 'table' => [ + 'full_name' => [ + 'label' => 'Nombre', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'title' => [ + 'label' => 'T铆tulo', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'vat_no' => [ + 'label' => 'NIF', + ], + 'account_reference' => [ + 'label' => 'Referencia de Cuenta', + ], + 'new' => [ + 'label' => 'Nuevo', + ], + 'returning' => [ + 'label' => 'Recurrente', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'T铆tulo', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'account_ref' => [ + 'label' => 'Referencia de Cuenta', + ], + 'vat_no' => [ + 'label' => 'NIF', + ], + 'customer_groups' => [ + 'label' => 'Grupos de Clientes', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/customergroup.php b/packages/admin/resources/lang/es/customergroup.php new file mode 100644 index 0000000000..d8d5c5e0e9 --- /dev/null +++ b/packages/admin/resources/lang/es/customergroup.php @@ -0,0 +1,40 @@ + 'Grupo de Clientes', + + 'plural_label' => 'Grupos de Clientes', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de clientes no puede ser eliminado ya que hay clientes asociados.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/discount.php b/packages/admin/resources/lang/es/discount.php new file mode 100644 index 0000000000..4f9e051c5f --- /dev/null +++ b/packages/admin/resources/lang/es/discount.php @@ -0,0 +1,324 @@ + 'Descuentos', + 'label' => 'Descuento', + 'form' => [ + 'conditions' => [ + 'heading' => 'Condiciones', + ], + 'buy_x_get_y' => [ + 'heading' => 'Compra X Obt茅n Y', + ], + 'amount_off' => [ + 'heading' => 'Cantidad Descontada', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Fin', + ], + 'priority' => [ + 'label' => 'Prioridad', + 'helper_text' => 'Los descuentos con mayor prioridad se aplicar谩n primero.', + 'options' => [ + 'low' => [ + 'label' => 'Baja', + ], + 'medium' => [ + 'label' => 'Media', + ], + 'high' => [ + 'label' => 'Alta', + ], + ], + ], + 'stop' => [ + 'label' => 'Detener otros descuentos despu茅s de este', + ], + 'coupon' => [ + 'label' => 'Cup贸n', + 'helper_text' => 'Introduce el cup贸n necesario para que se aplique el descuento, si se deja en blanco se aplicar谩 autom谩ticamente.', + ], + 'max_uses' => [ + 'label' => 'M谩ximo de usos', + 'helper_text' => 'Deja en blanco para usos ilimitados.', + ], + 'max_uses_per_user' => [ + 'label' => 'M谩ximo de usos por usuario', + 'helper_text' => 'Deja en blanco para usos ilimitados.', + ], + 'minimum_cart_amount' => [ + 'label' => 'Monto M铆nimo del Carrito', + ], + 'min_qty' => [ + 'label' => 'Cantidad de Producto', + 'helper_text' => 'Establece cu谩ntos productos calificativos son necesarios para que se aplique el descuento.', + ], + 'reward_qty' => [ + 'label' => 'No. de art铆culos gratuitos', + 'helper_text' => 'Cu谩ntos de cada art铆culo tienen descuento.', + ], + 'max_reward_qty' => [ + 'label' => 'Cantidad m谩xima de recompensa', + 'helper_text' => 'La cantidad m谩xima de productos que se pueden descontar, independientemente de los criterios.', + ], + 'automatic_rewards' => [ + 'label' => 'Agregar recompensas autom谩ticamente', + 'helper_text' => 'Activa para agregar productos de recompensa cuando no est茅n presentes en el carrito.', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'status' => [ + 'label' => 'Estado', + \Lunar\Models\Discount::ACTIVE => [ + 'label' => 'Activo', + ], + \Lunar\Models\Discount::PENDING => [ + 'label' => 'Pendiente', + ], + \Lunar\Models\Discount::EXPIRED => [ + 'label' => 'Expirado', + ], + \Lunar\Models\Discount::SCHEDULED => [ + 'label' => 'Programado', + ], + ], + 'type' => [ + 'label' => 'Tipo', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Fin', + ], + ], + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + ], + 'limitations' => [ + 'label' => 'Limitaciones', + ], + ], + 'relationmanagers' => [ + 'collections' => [ + 'title' => 'Colecciones', + 'description' => 'Selecciona a qu茅 colecciones se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Colecci贸n', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + 'brands' => [ + 'title' => 'Marcas', + 'description' => 'Selecciona a qu茅 marcas se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Marca', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + 'products' => [ + 'title' => 'Productos', + 'description' => 'Selecciona a qu茅 productos se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + 'rewards' => [ + 'title' => 'Recompensas de Productos', + 'description' => 'Selecciona qu茅 productos ser谩n descontados si existen en el carrito y se cumplen las condiciones anteriores.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + 'conditions' => [ + 'title' => 'Condiciones de Producto', + 'description' => 'Selecciona los productos necesarios para que se aplique el descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + 'productvariants' => [ + 'title' => 'Variantes de Productos', + 'description' => 'Selecciona qu茅 variantes de productos se debe limitar a este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Variante de Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Opci贸n(es)', + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitaci贸n', + ], + 'exclusion' => [ + 'label' => 'Exclusi贸n', + ], + ], + ], + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/fieldtypes.php b/packages/admin/resources/lang/es/fieldtypes.php new file mode 100644 index 0000000000..021935d74c --- /dev/null +++ b/packages/admin/resources/lang/es/fieldtypes.php @@ -0,0 +1,72 @@ + [ + 'label' => 'Desplegable', + 'form' => [ + 'lookups' => [ + 'label' => 'B煤squedas', + 'key_label' => 'Etiqueta', + 'value_label' => 'Valor', + ], + ], + ], + 'listfield' => [ + 'label' => 'Campo de Lista', + ], + 'text' => [ + 'label' => 'Texto', + 'form' => [ + 'richtext' => [ + 'label' => 'Texto Enriquecido', + ], + ], + ], + 'translatedtext' => [ + 'label' => 'Texto Traducido', + 'form' => [ + 'richtext' => [ + 'label' => 'Texto Enriquecido', + ], + 'locales' => 'Locales', + ], + ], + 'toggle' => [ + 'label' => 'Activar/Desactivar', + ], + 'youtube' => [ + 'label' => 'YouTube', + ], + 'vimeo' => [ + 'label' => 'Vimeo', + ], + 'number' => [ + 'label' => 'N煤mero', + 'form' => [ + 'min' => [ + 'label' => 'M铆n.', + ], + 'max' => [ + 'label' => 'M谩x.', + ], + ], + ], + 'file' => [ + 'label' => 'Archivo', + 'form' => [ + 'file_types' => [ + 'label' => 'Tipos de Archivo Permitidos', + 'placeholder' => 'Nuevo MIME', + ], + 'multiple' => [ + 'label' => 'Permitir M煤ltiples Archivos', + ], + 'min_files' => [ + 'label' => 'M铆n. Archivos', + ], + 'max_files' => [ + 'label' => 'M谩x. Archivos', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/global.php b/packages/admin/resources/lang/es/global.php new file mode 100644 index 0000000000..240c2cbecb --- /dev/null +++ b/packages/admin/resources/lang/es/global.php @@ -0,0 +1,12 @@ + [ + 'catalog' => 'Cat谩logo', + 'sales' => 'Ventas', + 'reports' => 'Informes', + 'settings' => 'Configuraciones', + ], + +]; diff --git a/packages/admin/resources/lang/es/language.php b/packages/admin/resources/lang/es/language.php new file mode 100644 index 0000000000..86a4129959 --- /dev/null +++ b/packages/admin/resources/lang/es/language.php @@ -0,0 +1,33 @@ + 'Idioma', + + 'plural_label' => 'Idiomas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/order.php b/packages/admin/resources/lang/es/order.php new file mode 100644 index 0000000000..9a27272e40 --- /dev/null +++ b/packages/admin/resources/lang/es/order.php @@ -0,0 +1,292 @@ + 'Pedido', + + 'plural_label' => 'Pedidos', + + 'breadcrumb' => [ + 'manage' => 'Gestionar', + ], + + 'transactions' => [ + 'capture' => 'Capturado', + 'intent' => 'Intenci贸n', + 'refund' => 'Reembolsado', + 'failed' => 'Fallido', + ], + + 'table' => [ + 'status' => [ + 'label' => 'Estado', + ], + 'reference' => [ + 'label' => 'Referencia', + ], + 'customer_reference' => [ + 'label' => 'Referencia del Cliente', + ], + 'customer' => [ + 'label' => 'Cliente', + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'postcode' => [ + 'label' => 'C贸digo Postal', + ], + 'email' => [ + 'label' => 'Correo Electr贸nico', + 'copy_message' => 'Direcci贸n de correo electr贸nico copiada', + ], + 'phone' => [ + 'label' => 'Tel茅fono', + ], + 'total' => [ + 'label' => 'Total', + ], + 'date' => [ + 'label' => 'Fecha', + ], + 'new_customer' => [ + 'label' => 'Tipo de Cliente', + ], + 'placed_after' => [ + 'label' => 'Realizado despu茅s de', + ], + 'placed_before' => [ + 'label' => 'Realizado antes de', + ], + ], + + 'form' => [ + 'address' => [ + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'line_one' => [ + 'label' => 'Direcci贸n L铆nea 1', + ], + 'line_two' => [ + 'label' => 'Direcci贸n L铆nea 2', + ], + 'line_three' => [ + 'label' => 'Direcci贸n L铆nea 3', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'contact_phone' => [ + 'label' => 'Tel茅fono', + ], + 'contact_email' => [ + 'label' => 'Correo Electr贸nico', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'state' => [ + 'label' => 'Estado / Provincia', + ], + 'postcode' => [ + 'label' => 'C贸digo Postal', + ], + 'country_id' => [ + 'label' => 'Pa铆s', + ], + ], + + 'reference' => [ + 'label' => 'Referencia', + ], + 'status' => [ + 'label' => 'Estado', + ], + 'transaction' => [ + 'label' => 'Transacci贸n', + ], + 'amount' => [ + 'label' => 'Cantidad', + + 'hint' => [ + 'less_than_total' => "Est谩 a punto de capturar un monto menor al valor total de la transacci贸n", + ], + ], + + 'notes' => [ + 'label' => 'Notas', + ], + 'confirm' => [ + 'label' => 'Confirmar', + + 'alert' => 'Se requiere confirmaci贸n', + + 'hint' => [ + 'capture' => 'Por favor confirme que desea capturar este pago', + 'refund' => 'Por favor confirme que desea reembolsar esta cantidad.', + ], + ], + ], + + 'infolist' => [ + 'notes' => [ + 'label' => 'Notas', + 'placeholder' => 'Sin notas en este pedido', + ], + 'delivery_instructions' => [ + 'label' => 'Instrucciones de Entrega', + ], + 'shipping_total' => [ + 'label' => 'Total de Env铆o', + ], + 'paid' => [ + 'label' => 'Pagado', + ], + 'refund' => [ + 'label' => 'Reembolso', + ], + 'unit_price' => [ + 'label' => 'Precio Unitario', + ], + 'quantity' => [ + 'label' => 'Cantidad', + ], + 'sub_total' => [ + 'label' => 'Subtotal', + ], + 'discount_total' => [ + 'label' => 'Total de Descuentos', + ], + 'total' => [ + 'label' => 'Total', + ], + 'current_stock_level' => [ + 'message' => 'Nivel de Stock Actual: :count', + ], + 'purchase_stock_level' => [ + 'message' => 'al momento de hacer el pedido: :count', + ], + 'status' => [ + 'label' => 'Estado', + ], + 'reference' => [ + 'label' => 'Referencia', + ], + 'customer_reference' => [ + 'label' => 'Referencia del Cliente', + ], + 'channel' => [ + 'label' => 'Canal', + ], + 'date_created' => [ + 'label' => 'Fecha de Creaci贸n', + ], + 'date_placed' => [ + 'label' => 'Fecha de Pedido', + ], + 'new_returning' => [ + 'label' => 'Nuevo / Recurrente', + ], + 'new_customer' => [ + 'label' => 'Nuevo Cliente', + ], + 'returning_customer' => [ + 'label' => 'Cliente Recurrente', + ], + 'shipping_address' => [ + 'label' => 'Direcci贸n de Env铆o', + ], + 'billing_address' => [ + 'label' => 'Direcci贸n de Facturaci贸n', + ], + 'address_not_set' => [ + 'label' => 'No se ha establecido direcci贸n', + ], + 'billing_matches_shipping' => [ + 'label' => 'Igual que la direcci贸n de env铆o', + ], + 'additional_info' => [ + 'label' => 'Informaci贸n Adicional', + ], + 'no_additional_info' => [ + 'label' => 'Sin Informaci贸n Adicional', + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'timeline' => [ + 'label' => 'Cronolog铆a', + ], + 'transactions' => [ + 'label' => 'Transacciones', + 'placeholder' => 'Sin transacciones', + ], + 'alert' => [ + 'requires_capture' => 'Este pedido a煤n requiere que se capture el pago.', + 'partially_refunded' => 'Este pedido ha sido parcialmente reembolsado.', + 'refunded' => 'Este pedido ha sido reembolsado.', + ], + ], + + 'action' => [ + 'bulk_update_status' => [ + 'label' => 'Actualizar Estado', + 'notification' => 'Estado de pedidos actualizado', + ], + 'update_status' => [ + 'new_status' => [ + 'label' => 'Nuevo estado', + ], + 'additional_content' => [ + 'label' => 'Contenido adicional', + ], + 'additional_email_recipient' => [ + 'label' => 'Destinatario adicional de correo electr贸nico', + 'placeholder' => 'opcional', + ], + ], + 'download_order_pdf' => [ + 'label' => 'Descargar PDF', + 'notification' => 'Descargando PDF del pedido', + ], + 'edit_address' => [ + 'label' => 'Editar', + + 'notification' => [ + 'error' => 'Error', + + 'billing_address' => [ + 'saved' => 'Direcci贸n de facturaci贸n guardada', + ], + + 'shipping_address' => [ + 'saved' => 'Direcci贸n de env铆o guardada', + ], + ], + ], + 'edit_tags' => [ + 'label' => 'Editar', + ], + 'capture_payment' => [ + 'label' => 'Capturar Pago', + + 'notification' => [ + 'error' => 'Hubo un problema con la captura', + 'success' => 'Captura exitosa', + ], + ], + 'refund_payment' => [ + 'label' => 'Reembolsar', + + 'notification' => [ + 'error' => 'Hubo un problema con el reembolso', + 'success' => 'Reembolso exitoso', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/product.php b/packages/admin/resources/lang/es/product.php new file mode 100644 index 0000000000..f17797c69c --- /dev/null +++ b/packages/admin/resources/lang/es/product.php @@ -0,0 +1,121 @@ + 'Producto', + + 'plural_label' => 'Productos', + + 'status' => [ + 'unpublished' => [ + 'content' => 'Actualmente en estado de borrador, este producto est谩 oculto en todos los canales y grupos de clientes.', + ], + 'availability' => [ + 'customer_groups' => 'Este producto actualmente no est谩 disponible para todos los grupos de clientes.', + 'channels' => 'Este producto actualmente no est谩 disponible para todos los canales.', + ], + ], + + 'table' => [ + 'status' => [ + 'label' => 'Estado', + 'states' => [ + 'deleted' => 'Eliminado', + 'draft' => 'Borrador', + 'published' => 'Publicado', + ], + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'brand' => [ + 'label' => 'Marca', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'stock' => [ + 'label' => 'Stock', + ], + 'producttype' => [ + 'label' => 'Tipo de Producto', + ], + ], + + 'actions' => [ + 'edit_status' => [ + 'label' => 'Actualizar Estado', + 'heading' => 'Actualizar Estado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'brand' => [ + 'label' => 'Marca', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'producttype' => [ + 'label' => 'Tipo de Producto', + ], + 'status' => [ + 'label' => 'Estado', + 'options' => [ + 'published' => [ + 'label' => 'Publicado', + 'description' => 'Este producto estar谩 disponible en todos los grupos de clientes y canales habilitados', + ], + 'draft' => [ + 'label' => 'Borrador', + 'description' => 'Este producto estar谩 oculto en todos los canales y grupos de clientes', + ], + ], + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'collections' => [ + 'label' => 'Colecciones', + ], + ], + + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + ], + 'identifiers' => [ + 'label' => 'Identificadores del Producto', + ], + 'inventory' => [ + 'label' => 'Inventario', + ], + 'pricing' => [ + 'form' => [ + 'tax_class_id' => [ + 'label' => 'Clase de Impuesto', + ], + 'tax_ref' => [ + 'label' => 'Referencia de Impuesto', + 'helper_text' => 'Opcional, para integraci贸n con sistemas de terceros.', + ], + ], + ], + 'shipping' => [ + 'label' => 'Env铆o', + ], + 'variants' => [ + 'label' => 'Variantes', + ], + 'collections' => [ + 'label' => 'Colecciones', + ], + 'associations' => [ + 'label' => 'Asociaciones de Productos', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/productoption.php b/packages/admin/resources/lang/es/productoption.php new file mode 100644 index 0000000000..5515f234e3 --- /dev/null +++ b/packages/admin/resources/lang/es/productoption.php @@ -0,0 +1,124 @@ + 'Opci贸n de Producto', + + 'plural_label' => 'Opciones de Producto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'label' => [ + 'label' => 'Etiqueta', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'shared' => [ + 'label' => 'Compartido', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'label' => [ + 'label' => 'Etiqueta', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + ], + + 'widgets' => [ + 'product-options' => [ + 'notifications' => [ + 'save-variants' => [ + 'success' => [ + 'title' => 'Variantes de Producto Guardadas', + ], + ], + ], + 'actions' => [ + 'cancel' => [ + 'label' => 'Cancelar', + ], + 'save-options' => [ + 'label' => 'Guardar Opciones', + ], + 'add-shared-option' => [ + 'label' => 'Agregar Opci贸n Compartida', + 'form' => [ + 'product_option' => [ + 'label' => 'Opci贸n de Producto', + ], + 'no_shared_components' => [ + 'label' => 'No hay opciones compartidas disponibles.', + ], + ], + ], + 'add-restricted-option' => [ + 'label' => 'Agregar Opci贸n', + ], + ], + 'options-list' => [ + 'empty' => [ + 'heading' => 'No hay opciones de producto configuradas', + 'description' => 'Agrega una opci贸n de producto compartida o restringida para comenzar a generar algunas variantes.', + ], + ], + 'options-table' => [ + 'title' => 'Opciones de Producto', + 'configure-options' => [ + 'label' => 'Configurar Opciones', + ], + 'table' => [ + 'option' => [ + 'label' => 'Opci贸n', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], + ], + 'variants-table' => [ + 'title' => 'Variantes de Producto', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Variante', + ], + 'edit' => [ + 'label' => 'Editar', + ], + 'delete' => [ + 'label' => 'Eliminar', + ], + ], + 'empty' => [ + 'heading' => 'No Hay Variantes Configuradas', + ], + 'table' => [ + 'new' => [ + 'label' => 'NUEVO', + ], + 'option' => [ + 'label' => 'Opci贸n', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'stock' => [ + 'label' => 'Stock', + ], + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/producttype.php b/packages/admin/resources/lang/es/producttype.php new file mode 100644 index 0000000000..6fc2112696 --- /dev/null +++ b/packages/admin/resources/lang/es/producttype.php @@ -0,0 +1,52 @@ + 'Tipo de Producto', + + 'plural_label' => 'Tipos de Producto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'products_count' => [ + 'label' => 'Cantidad de Productos', + ], + 'product_attributes_count' => [ + 'label' => 'Atributos de Producto', + ], + 'variant_attributes_count' => [ + 'label' => 'Atributos de Variante', + ], + ], + + 'tabs' => [ + 'product_attributes' => [ + 'label' => 'Atributos de Producto', + ], + 'variant_attributes' => [ + 'label' => 'Atributos de Variante', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'attributes' => [ + 'no_groups' => 'No hay grupos de atributos disponibles.', + 'no_attributes' => 'No hay atributos disponibles.', + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este tipo de producto no puede ser eliminado ya que hay productos asociados.', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/productvariant.php b/packages/admin/resources/lang/es/productvariant.php new file mode 100644 index 0000000000..9b030a6e51 --- /dev/null +++ b/packages/admin/resources/lang/es/productvariant.php @@ -0,0 +1,105 @@ + 'Variante de Producto', + 'plural_label' => 'Variantes de Producto', + 'pages' => [ + 'edit' => [ + 'title' => 'Informaci贸n B谩sica', + ], + 'media' => [ + 'title' => 'Medios', + 'form' => [ + 'no_selection' => [ + 'label' => 'Actualmente no tienes una imagen seleccionada para esta variante.', + ], + 'no_media_available' => [ + 'label' => 'Actualmente no hay medios disponibles para este producto.', + ], + 'images' => [ + 'label' => 'Imagen Principal', + 'helper_text' => 'Selecciona la imagen del producto que representa esta variante.', + ], + ], + ], + 'identifiers' => [ + 'title' => 'Identificadores', + ], + 'inventory' => [ + 'title' => 'Inventario', + ], + 'shipping' => [ + 'title' => 'Env铆o', + ], + ], + 'form' => [ + 'sku' => [ + 'label' => 'SKU', + ], + 'gtin' => [ + 'label' => 'N煤mero Global de Art铆culo Comercial (GTIN)', + ], + 'mpn' => [ + 'label' => 'N煤mero de Parte del Fabricante (MPN)', + ], + 'ean' => [ + 'label' => 'UPC/EAN', + ], + 'stock' => [ + 'label' => 'En Stock', + ], + 'backorder' => [ + 'label' => 'En Pedido Pendiente', + ], + 'purchasable' => [ + 'label' => 'Comprabilidad', + 'options' => [ + 'always' => 'Siempre', + 'in_stock' => 'En Stock', + 'in_stock_or_on_backorder' => 'En Stock o en Pedido Pendiente', + ], + ], + 'unit_quantity' => [ + 'label' => 'Cantidad por Unidad', + 'helper_text' => 'Cu谩ntos art铆culos individuales componen 1 unidad.', + ], + 'min_quantity' => [ + 'label' => 'Cantidad M铆nima', + 'helper_text' => 'La cantidad m铆nima de una variante de producto que se puede comprar en una sola compra.', + ], + 'quantity_increment' => [ + 'label' => 'Incremento de Cantidad', + 'helper_text' => 'La variante de producto debe comprarse en m煤ltiplos de esta cantidad.', + ], + 'tax_class_id' => [ + 'label' => 'Clase Impositiva', + ], + 'shippable' => [ + 'label' => 'Enviable', + ], + 'length_value' => [ + 'label' => 'Longitud', + ], + 'length_unit' => [ + 'label' => 'Unidad de Longitud', + ], + 'width_value' => [ + 'label' => 'Anchura', + ], + 'width_unit' => [ + 'label' => 'Unidad de Anchura', + ], + 'height_value' => [ + 'label' => 'Altura', + ], + 'height_unit' => [ + 'label' => 'Unidad de Altura', + ], + 'weight_value' => [ + 'label' => 'Peso', + ], + 'weight_unit' => [ + 'label' => 'Unidad de Peso', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/relationmanagers.php b/packages/admin/resources/lang/es/relationmanagers.php new file mode 100644 index 0000000000..9342e63036 --- /dev/null +++ b/packages/admin/resources/lang/es/relationmanagers.php @@ -0,0 +1,262 @@ + [ + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Grupo de Clientes', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalizaci贸n', + ], + 'visible' => [ + 'label' => 'Visible', + ], + 'purchasable' => [ + 'label' => 'Comprable', + ], + ], + 'table' => [ + 'description' => 'Asocia grupos de clientes a este :type para determinar su disponibilidad.', + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalizaci贸n', + ], + 'visible' => [ + 'label' => 'Visible', + ], + 'purchasable' => [ + 'label' => 'Comprable', + ], + ], + ], + 'channels' => [ + 'actions' => [ + 'attach' => [ + 'label' => 'Programar otro Canal', + ], + ], + 'form' => [ + 'enabled' => [ + 'label' => 'Habilitado', + 'helper_text_false' => 'Este canal no estar谩 habilitado incluso si hay una fecha de inicio presente.', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + 'helper_text' => 'Deja en blanco para estar disponible desde cualquier fecha.', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalizaci贸n', + 'helper_text' => 'Deja en blanco para estar disponible indefinidamente.', + ], + ], + 'table' => [ + 'description' => 'Determina qu茅 canales est谩n habilitados y programa la disponibilidad.', + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalizaci贸n', + ], + ], + ], + 'medias' => [ + 'title' => 'Medios', + 'title_plural' => 'Medios', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Medio', + ], + 'view' => [ + 'label' => 'Ver', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'media' => [ + 'label' => 'Imagen', + ], + 'primary' => [ + 'label' => 'Primario', + ], + ], + 'table' => [ + 'image' => [ + 'label' => 'Imagen', + ], + 'file' => [ + 'label' => 'Archivo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'primary' => [ + 'label' => 'Primario', + ], + ], + ], + 'urls' => [ + 'title' => 'URL', + 'title_plural' => 'URLs', + 'actions' => [ + 'create' => [ + 'label' => 'Crear URL', + ], + ], + 'filters' => [ + 'language_id' => [ + 'label' => 'Idioma', + ], + ], + 'form' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + 'language' => [ + 'label' => 'Idioma', + ], + ], + 'table' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + 'language' => [ + 'label' => 'Idioma', + ], + ], + ], + 'customer_group_pricing' => [ + 'title' => 'Precios de Grupo de Clientes', + 'title_plural' => 'Precios de Grupo de Clientes', + 'table' => [ + 'heading' => 'Precios de Grupo de Clientes', + 'description' => 'Asocia precios a grupos de clientes para determinar el precio del producto.', + 'empty_state' => [ + 'label' => 'No existen precios de grupos de clientes.', + 'description' => 'Crea un precio de grupo de clientes para comenzar.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar Precio de Grupo de Clientes', + 'modal' => [ + 'heading' => 'Crear Precio de Grupo de Clientes', + ], + ], + ], + ], + ], + 'pricing' => [ + 'title' => 'Precios', + 'title_plural' => 'Precios', + 'tab_name' => 'Descuentos por Cantidad', + 'table' => [ + 'heading' => 'Descuentos por Cantidad', + 'description' => 'Reduce el precio cuando un cliente compra en mayores cantidades.', + 'empty_state' => [ + 'label' => 'No existen descuentos por cantidad.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar Descuento por Cantidad', + ], + ], + 'price' => [ + 'label' => 'Precio', + ], + 'customer_group' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Todos los Grupos de Clientes', + ], + 'min_quantity' => [ + 'label' => 'Cantidad M铆nima', + ], + 'currency' => [ + 'label' => 'Moneda', + ], + ], + 'form' => [ + 'price' => [ + 'label' => 'Precio', + 'helper_text' => 'El precio de compra, antes de descuentos.', + ], + 'customer_group_id' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Todos los Grupos de Clientes', + 'helper_text' => 'Selecciona a qu茅 grupo de clientes aplicar este precio.', + ], + 'min_quantity' => [ + 'label' => 'Cantidad M铆nima', + 'helper_text' => 'Selecciona la cantidad m铆nima para la que estar谩 disponible este precio.', + 'validation' => [ + 'unique' => 'El Grupo de Clientes y la Cantidad M铆nima deben ser 煤nicos.', + ], + ], + 'currency_id' => [ + 'label' => 'Moneda', + 'helper_text' => 'Selecciona la moneda para este precio.', + ], + 'compare_price' => [ + 'label' => 'Precio Comparativo', + 'helper_text' => 'El precio original o RRP, para comparaci贸n con su precio de compra.', + ], + 'basePrices' => [ + 'title' => 'Precios', + 'form' => [ + 'price' => [ + 'label' => 'Precio', + 'helper_text' => 'El precio de compra, antes de descuentos.', + ], + 'compare_price' => [ + 'label' => 'Precio Comparativo', + 'helper_text' => 'El precio original o RRP, para comparaci贸n con su precio de compra.', + ], + ], + 'tooltip' => 'Generado autom谩ticamente en base a las tasas de cambio de divisas.', + ], + ], + ], + 'tax_rate_amounts' => [ + 'table' => [ + 'description' => '', + 'percentage' => [ + 'label' => 'Porcentaje', + ], + 'tax_class' => [ + 'label' => 'Clase Impositiva', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/staff.php b/packages/admin/resources/lang/es/staff.php new file mode 100644 index 0000000000..bb244d3cc8 --- /dev/null +++ b/packages/admin/resources/lang/es/staff.php @@ -0,0 +1,81 @@ + 'Personal', + + 'plural_label' => 'Personal', + + 'table' => [ + 'firstname' => [ + 'label' => 'Nombre', + ], + 'lastname' => [ + 'label' => 'Apellido', + ], + 'email' => [ + 'label' => 'Correo Electr贸nico', + ], + 'admin' => [ + 'badge' => 'Super Admin', + ], + ], + + 'form' => [ + 'firstname' => [ + 'label' => 'Nombre', + ], + 'lastname' => [ + 'label' => 'Apellido', + ], + 'email' => [ + 'label' => 'Correo Electr贸nico', + ], + 'password' => [ + 'label' => 'Contrase帽a', + 'hint' => 'Restablecer contrase帽a', + ], + 'admin' => [ + 'label' => 'Super Admin', + 'helper' => 'Los roles de super admin no se pueden cambiar en el hub.', + ], + 'roles' => [ + 'label' => 'Roles', + 'helper' => ':roles tienen acceso completo', + ], + 'permissions' => [ + 'label' => 'Permisos', + ], + 'role' => [ + 'label' => 'Nombre del Rol', + ], + ], + + 'action' => [ + 'acl' => [ + 'label' => 'Control de Acceso', + ], + 'add-role' => [ + 'label' => 'Agregar Rol', + ], + 'delete-role' => [ + 'label' => 'Eliminar Rol', + 'heading' => 'Eliminar rol: :role', + ], + ], + + 'acl' => [ + 'title' => 'Control de Acceso', + 'tooltip' => [ + 'roles-included' => 'El permiso est谩 incluido en los siguientes roles', + ], + 'notification' => [ + 'updated' => 'Actualizado', + 'error' => 'Error', + 'no-role' => 'Rol no registrado en Lunar', + 'no-permission' => 'Permiso no registrado en Lunar', + 'no-role-permission' => 'Rol y Permiso no registrados en Lunar', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/tag.php b/packages/admin/resources/lang/es/tag.php new file mode 100644 index 0000000000..279326801e --- /dev/null +++ b/packages/admin/resources/lang/es/tag.php @@ -0,0 +1,21 @@ + 'Etiqueta', + + 'plural_label' => 'Etiquetas', + + 'table' => [ + 'value' => [ + 'label' => 'Valor', + ], + ], + + 'form' => [ + 'value' => [ + 'label' => 'Valor', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxclass.php b/packages/admin/resources/lang/es/taxclass.php new file mode 100644 index 0000000000..63a22c831d --- /dev/null +++ b/packages/admin/resources/lang/es/taxclass.php @@ -0,0 +1,27 @@ + 'Clase de Impuesto', + + 'plural_label' => 'Clases de Impuesto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxrate.php b/packages/admin/resources/lang/es/taxrate.php new file mode 100644 index 0000000000..c29cb30587 --- /dev/null +++ b/packages/admin/resources/lang/es/taxrate.php @@ -0,0 +1,33 @@ + 'Tasa de Impuesto', + + 'plural_label' => 'Tasas de Impuesto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'tax_zone' => [ + 'label' => 'Zona Fiscal', + ], + 'priority' => [ + 'label' => 'Prioridad', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'priority' => [ + 'label' => 'Prioridad', + ], + 'tax_zone_id' => [ + 'label' => 'Zona Fiscal', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxzone.php b/packages/admin/resources/lang/es/taxzone.php new file mode 100644 index 0000000000..638c82d3de --- /dev/null +++ b/packages/admin/resources/lang/es/taxzone.php @@ -0,0 +1,69 @@ + 'Zona Fiscal', + + 'plural_label' => 'Zonas Fiscales', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'zone_type' => [ + 'label' => 'Tipo de Zona', + ], + 'active' => [ + 'label' => 'Activo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'zone_type' => [ + 'label' => 'Tipo de Zona', + 'options' => [ + 'country' => 'Limitar a Pa铆ses', + 'states' => 'Limitar a Estados', + 'postcodes' => 'Limitar a C贸digos Postales', + ], + ], + 'price_display' => [ + 'label' => 'Visualizaci贸n de Precios', + 'options' => [ + 'include_tax' => 'Incluir Impuesto', + 'exclude_tax' => 'Excluir Impuesto', + ], + ], + 'active' => [ + 'label' => 'Activo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + + 'zone_countries' => [ + 'label' => 'Pa铆ses', + ], + + 'zone_country' => [ + 'label' => 'Pa铆s', + ], + + 'zone_states' => [ + 'label' => 'Estados', + ], + + 'zone_postcodes' => [ + 'label' => 'C贸digos Postales', + 'helper' => 'Enumera cada c贸digo postal en una nueva l铆nea. Soporta comodines como NW*', + ], + + ], + +]; diff --git a/packages/admin/resources/lang/es/user.php b/packages/admin/resources/lang/es/user.php new file mode 100644 index 0000000000..7abb94ae03 --- /dev/null +++ b/packages/admin/resources/lang/es/user.php @@ -0,0 +1,29 @@ + 'Usuario', + + 'plural_label' => 'Usuarios', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'email' => [ + 'label' => 'Correo Electr贸nico', + ], + ], + + 'form' => [ + 'email' => [ + 'label' => 'Correo Electr贸nico', + ], + 'password' => [ + 'label' => 'Nueva Contrase帽a', + ], + 'password_confirmation' => [ + 'label' => 'Confirmar Nueva Contrase帽a', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/widgets.php b/packages/admin/resources/lang/es/widgets.php new file mode 100644 index 0000000000..93fb0c8852 --- /dev/null +++ b/packages/admin/resources/lang/es/widgets.php @@ -0,0 +1,118 @@ + [ + 'orders' => [ + 'order_stats_overview' => [ + 'stat_one' => [ + 'label' => 'Pedidos hoy', + 'increase' => 'Aumento del :percentage% desde :count ayer', + 'decrease' => 'Disminuci贸n del :percentage% desde :count ayer', + 'neutral' => 'Sin cambios en comparaci贸n con ayer', + ], + 'stat_two' => [ + 'label' => 'Pedidos en los 煤ltimos 7 d铆as', + 'increase' => 'Aumento del :percentage% desde :count el periodo anterior', + 'decrease' => 'Disminuci贸n del :percentage% desde :count el periodo anterior', + 'neutral' => 'Sin cambios en comparaci贸n con el periodo anterior', + ], + 'stat_three' => [ + 'label' => 'Pedidos en los 煤ltimos 30 d铆as', + 'increase' => 'Aumento del :percentage% desde :count el periodo anterior', + 'decrease' => 'Disminuci贸n del :percentage% desde :count el periodo anterior', + 'neutral' => 'Sin cambios en comparaci贸n con el periodo anterior', + ], + 'stat_four' => [ + 'label' => 'Ventas hoy', + 'increase' => 'Aumento del :percentage% desde :total ayer', + 'decrease' => 'Disminuci贸n del :percentage% desde :total ayer', + 'neutral' => 'Sin cambios en comparaci贸n con ayer', + ], + 'stat_five' => [ + 'label' => 'Ventas en los 煤ltimos 7 d铆as', + 'increase' => 'Aumento del :percentage% desde :total el periodo anterior', + 'decrease' => 'Disminuci贸n del :percentage% desde :total el periodo anterior', + 'neutral' => 'Sin cambios en comparaci贸n con el periodo anterior', + ], + 'stat_six' => [ + 'label' => 'Ventas en los 煤ltimos 30 d铆as', + 'increase' => 'Aumento del :percentage% desde :total el periodo anterior', + 'decrease' => 'Disminuci贸n del :percentage% desde :total el periodo anterior', + 'neutral' => 'Sin cambios en comparaci贸n con el periodo anterior', + ], + ], + 'order_totals_chart' => [ + 'heading' => 'Totales de pedidos del 煤ltimo a帽o', + 'series_one' => [ + 'label' => 'Este Periodo', + ], + 'series_two' => [ + 'label' => 'Periodo Anterior', + ], + 'yaxis' => [ + 'label' => 'Ingresos :currency', + ], + ], + 'order_sales_chart' => [ + 'heading' => 'Informe de Pedidos / Ventas', + 'series_one' => [ + 'label' => 'Pedidos', + ], + 'series_two' => [ + 'label' => 'Ingresos', + ], + 'yaxis' => [ + 'series_one' => [ + 'label' => '# Pedidos', + ], + 'series_two' => [ + 'label' => 'Valor Total', + ], + ], + ], + 'average_order_value' => [ + 'heading' => 'Valor Promedio del Pedido', + ], + 'new_returning_customers' => [ + 'heading' => 'Nuevos vs Clientes Recurrentes', + 'series_one' => [ + 'label' => 'Nuevos Clientes', + ], + 'series_two' => [ + 'label' => 'Clientes Recurrentes', + ], + ], + 'popular_products' => [ + 'heading' => 'M谩s vendidos (煤ltimos 12 meses)', + 'description' => 'Estas cifras se basan en el n煤mero de veces que un producto aparece en un pedido, no en la cantidad pedida.', + ], + 'latest_orders' => [ + 'heading' => '脷ltimos pedidos', + ], + ], + ], + 'customer' => [ + 'stats_overview' => [ + 'total_orders' => [ + 'label' => 'Total de pedidos', + ], + 'avg_spend' => [ + 'label' => 'Gasto Promedio', + ], + 'total_spend' => [ + 'label' => 'Gasto Total', + ], + ], + ], + 'variant_switcher' => [ + 'label' => 'Cambiar Variante', + 'table' => [ + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], + ], +]; diff --git a/packages/admin/src/Filament/Resources/CustomerResource/RelationManagers/OrdersRelationManager.php b/packages/admin/src/Filament/Resources/CustomerResource/RelationManagers/OrdersRelationManager.php index 5598f7863e..b01eea5116 100644 --- a/packages/admin/src/Filament/Resources/CustomerResource/RelationManagers/OrdersRelationManager.php +++ b/packages/admin/src/Filament/Resources/CustomerResource/RelationManagers/OrdersRelationManager.php @@ -5,6 +5,7 @@ use Filament\Tables; use Filament\Tables\Table; use Lunar\Admin\Filament\Resources\OrderResource; +use Lunar\Admin\Filament\Resources\OrderResource\Pages\ManageOrder; use Lunar\Admin\Support\RelationManagers\BaseRelationManager; use Lunar\Models\Order; @@ -18,7 +19,7 @@ public function getDefaultTable(Table $table): Table OrderResource::getTableColumns() )->actions([ Tables\Actions\Action::make('viewOrder') - ->url(fn (Order $record): string => route('filament.lunar.resources.orders.order', $record)), + ->url(fn (Order $record): string => ManageOrder::getUrl(['record' => $record])), ]); } } diff --git a/packages/admin/src/Filament/Resources/DiscountResource.php b/packages/admin/src/Filament/Resources/DiscountResource.php index 82b052e342..8eff546762 100644 --- a/packages/admin/src/Filament/Resources/DiscountResource.php +++ b/packages/admin/src/Filament/Resources/DiscountResource.php @@ -361,7 +361,8 @@ protected static function getTableColumns(): array \Lunar\Models\Discount::SCHEDULED => 'info', }), Tables\Columns\TextColumn::make('name') - ->label(__('lunarpanel::discount.table.name.label')), + ->label(__('lunarpanel::discount.table.name.label')) + ->searchable(), Tables\Columns\TextColumn::make('type') ->formatStateUsing(function ($state) { return (new $state)->getName(); diff --git a/packages/admin/src/Filament/Resources/OrderResource/Pages/EditOrder.php b/packages/admin/src/Filament/Resources/OrderResource/Pages/EditOrder.php index 7faee4a2f4..818581b64c 100644 --- a/packages/admin/src/Filament/Resources/OrderResource/Pages/EditOrder.php +++ b/packages/admin/src/Filament/Resources/OrderResource/Pages/EditOrder.php @@ -44,7 +44,7 @@ protected function getDefaultHeaderActions(): array return response()->streamDownload(function () { echo Pdf::loadView('lunarpanel::pdf.order', [ - 'order' => $this->record, + 'record' => $this->record, ])->stream(); }, name: "Order-{$this->record->reference}.pdf"); }), diff --git a/packages/admin/src/Filament/Resources/ProductResource.php b/packages/admin/src/Filament/Resources/ProductResource.php index 724c09a1a9..7627d533da 100644 --- a/packages/admin/src/Filament/Resources/ProductResource.php +++ b/packages/admin/src/Filament/Resources/ProductResource.php @@ -300,7 +300,8 @@ public static function getNameTableColumn(): Tables\Columns\Column ->attributeData() ->limitedTooltip() ->limit(50) - ->label(__('lunarpanel::product.table.name.label')); + ->label(__('lunarpanel::product.table.name.label')) + ->searchable(); } public static function getSkuTableColumn(): Tables\Columns\Column @@ -323,7 +324,8 @@ public static function getSkuTableColumn(): Tables\Columns\Column }) ->listWithLineBreaks() ->limitList(1) - ->toggleable(); + ->toggleable() + ->searchable(); } public static function getDefaultRelations(): array diff --git a/packages/admin/src/Filament/Resources/ProductResource/Pages/ListProducts.php b/packages/admin/src/Filament/Resources/ProductResource/Pages/ListProducts.php index f02e59b67f..f994e004ee 100644 --- a/packages/admin/src/Filament/Resources/ProductResource/Pages/ListProducts.php +++ b/packages/admin/src/Filament/Resources/ProductResource/Pages/ListProducts.php @@ -27,7 +27,7 @@ protected function getDefaultHeaderActions(): array static::createActionFormInputs() )->using( fn (array $data, string $model) => static::createRecord($data, $model) - )->successRedirectUrl(fn (Model $record): string => route('filament.lunar.resources.products.edit', [ + )->successRedirectUrl(fn (Model $record): string => ProductResource::getUrl('edit', [ 'record' => $record, ])), ]; diff --git a/packages/admin/src/Support/Forms/Components/Attributes.php b/packages/admin/src/Support/Forms/Components/Attributes.php index 8df4b49223..4f474aa802 100644 --- a/packages/admin/src/Support/Forms/Components/Attributes.php +++ b/packages/admin/src/Support/Forms/Components/Attributes.php @@ -61,7 +61,8 @@ protected function setUp(): void 'model' => $group, 'fields' => $attributes->groupBy('attribute_group_id')->get($group->id, []), ]; - }); + }) + ->filter(fn ($group) => count($group['fields'])); $groupComponents = []; @@ -86,7 +87,7 @@ protected function setUp(): void } foreach ($state as $key => $value) { - if (! $value instanceof \Lunar\Base\Fieldtype) { + if (! $value instanceof \Lunar\Base\FieldType) { continue; } diff --git a/packages/admin/src/Support/Resources/Pages/ManageUrlsRelatedRecords.php b/packages/admin/src/Support/Resources/Pages/ManageUrlsRelatedRecords.php index 3d8cc834d0..d644f000e1 100644 --- a/packages/admin/src/Support/Resources/Pages/ManageUrlsRelatedRecords.php +++ b/packages/admin/src/Support/Resources/Pages/ManageUrlsRelatedRecords.php @@ -55,7 +55,7 @@ public function form(Form $form): Form ignoreRecord: true, modifyRuleUsing: function (Unique $rule, callable $get) { return $rule - ->where('element_type', static::$model) + ->where('element_type', (new static::$model)->getMorphClass()) ->where('language_id', $get('language_id')); } ) diff --git a/packages/core/database/state/EnsureMediaCollectionsAreRenamed.php b/packages/core/database/state/EnsureMediaCollectionsAreRenamed.php index 9701b71553..3993a6bea0 100644 --- a/packages/core/database/state/EnsureMediaCollectionsAreRenamed.php +++ b/packages/core/database/state/EnsureMediaCollectionsAreRenamed.php @@ -35,7 +35,7 @@ protected function shouldRun() protected function getOutdatedMediaQuery() { return DB::table(app(config('media-library.media_model'))->getTable()) - ->whereIn('model_type', [Product::class, Collection::class, Brand::class]) + ->whereIn('model_type', [Product::morphName(), Collection::morphName(), Brand::morphName()]) ->where('collection_name', 'products'); } } diff --git a/packages/core/resources/lang/es/base.php b/packages/core/resources/lang/es/base.php new file mode 100644 index 0000000000..526e2863ca --- /dev/null +++ b/packages/core/resources/lang/es/base.php @@ -0,0 +1,9 @@ + [ + 'collection-titles' => [ + 'images' => 'Im谩genes', + ], + ], +]; diff --git a/packages/core/resources/lang/es/exceptions.php b/packages/core/resources/lang/es/exceptions.php new file mode 100644 index 0000000000..a0732874e7 --- /dev/null +++ b/packages/core/resources/lang/es/exceptions.php @@ -0,0 +1,21 @@ + 'El modelo ":class" no implementa la interfaz comprable.', + 'cart_line_id_mismatch' => 'Esta l铆nea del carrito no pertenece a este carrito.', + 'invalid_cart_line_quantity' => 'Se esperaba que la cantidad fuera al menos "1", se encontr贸 ":quantity".', + 'maximum_cart_line_quantity' => 'La cantidad no puede exceder :quantity.', + 'carts.invalid_action' => 'La acci贸n del carrito no es v谩lida.', + 'carts.shipping_missing' => 'Se requiere una direcci贸n de env铆o.', + 'carts.billing_missing' => 'Se requiere una direcci贸n de facturaci贸n.', + 'carts.billing_incomplete' => 'La direcci贸n de facturaci贸n est谩 incompleta.', + 'carts.order_exists' => 'Ya existe un pedido para este carrito.', + 'carts.shipping_option_missing' => 'Opci贸n de env铆o faltante.', + 'missing_currency_price' => 'No existe un precio para la moneda ":currency".', + 'minimum_quantity' => 'Debes agregar un m铆nimo de :quantity art铆culos.', + 'quantity_increment' => 'La cantidad :quantity debe ser en incrementos de :increment.', + 'fieldtype_missing' => 'El FieldType ":class" no existe.', + 'invalid_fieldtype' => 'La clase ":class" no implementa la interfaz FieldType.', + 'discounts.invalid_type' => 'La colecci贸n solo debe contener ":expected", se encontr贸 ":actual".', + 'disallow_multiple_cart_orders' => 'Los carritos solo pueden tener un pedido asociado.', +]; diff --git a/packages/core/src/DiscountTypes/AbstractDiscountType.php b/packages/core/src/DiscountTypes/AbstractDiscountType.php index 8e0d3305b5..868313bb49 100644 --- a/packages/core/src/DiscountTypes/AbstractDiscountType.php +++ b/packages/core/src/DiscountTypes/AbstractDiscountType.php @@ -64,7 +64,7 @@ protected function checkDiscountConditions(Cart $cart): bool $validCoupon = $cartCoupon ? ($cartCoupon === $conditionCoupon) : blank($conditionCoupon); - $minSpend = ($data['min_prices'][$cart->currency->code] ?? 0) / $cart->currency->factor; + $minSpend = (int) ($data['min_prices'][$cart->currency->code] ?? 0) / (int) $cart->currency->factor; $minSpend = (int) bcmul($minSpend, $cart->currency->factor); $lines = $this->getEligibleLines($cart); diff --git a/packages/core/src/DiscountTypes/AmountOff.php b/packages/core/src/DiscountTypes/AmountOff.php index 105bca64e9..a915a6f48d 100644 --- a/packages/core/src/DiscountTypes/AmountOff.php +++ b/packages/core/src/DiscountTypes/AmountOff.php @@ -224,7 +224,7 @@ protected function getEligibleLines(Cart $cart): \Illuminate\Support\Collection /** * Apply the percentage to the cart line. */ - private function applyPercentage(int $value, Cart $cart): Cart + private function applyPercentage(float $value, Cart $cart): Cart { $lines = $this->getEligibleLines($cart); diff --git a/packages/core/src/Observers/OrderLineObserver.php b/packages/core/src/Observers/OrderLineObserver.php index 967607dd53..af384a4281 100644 --- a/packages/core/src/Observers/OrderLineObserver.php +++ b/packages/core/src/Observers/OrderLineObserver.php @@ -32,8 +32,12 @@ public function creating(OrderLine $orderLine) */ public function updating(OrderLine $orderLine) { - if (! in_array(Purchasable::class, class_implements($orderLine->purchasable_type, true))) { - throw new NonPurchasableItemException($orderLine->purchasable_type); + $purchasableModel = class_exists($orderLine->purchasable_type) ? + $orderLine->purchasable_type : + Relation::getMorphedModel($orderLine->purchasable_type); + + if (! $purchasableModel || ! in_array(Purchasable::class, class_implements($purchasableModel, true))) { + throw new NonPurchasableItemException($purchasableModel); } } } diff --git a/packages/table-rate-shipping/resources/lang/es/plugin.php b/packages/table-rate-shipping/resources/lang/es/plugin.php new file mode 100644 index 0000000000..67e90b2b92 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/plugin.php @@ -0,0 +1,7 @@ + [ + 'group' => 'Env铆o', + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/relationmanagers.php b/packages/table-rate-shipping/resources/lang/es/relationmanagers.php new file mode 100644 index 0000000000..8a25486a86 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/relationmanagers.php @@ -0,0 +1,77 @@ + [ + 'customer_groups' => [ + 'description' => "Asocia grupos de clientes a este m茅todo de env铆o para determinar su disponibilidad.", + ], + ], + 'shipping_rates' => [ + 'title_plural' => 'Tarifas de Env铆o', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Tarifa de Env铆o', + ], + ], + 'notices' => [ + 'prices_incl_tax' => 'Todos los precios incluyen impuestos, que se tendr谩n en cuenta al calcular el gasto m铆nimo.', + 'prices_excl_tax' => 'Todos los precios excluyen impuestos, el gasto m铆nimo se basar谩 en el subtotal del carrito.', + ], + 'form' => [ + 'shipping_method_id' => [ + 'label' => 'M茅todo de Env铆o', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'prices' => [ + 'label' => 'Desglose de Precios', + 'repeater' => [ + 'customer_group_id' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Cualquiera', + ], + 'currency_id' => [ + 'label' => 'Moneda', + ], + 'min_quantity' => [ + 'label' => 'Gasto M铆n.', + ], + 'price' => [ + 'label' => 'Precio', + ], + ], + ], + ], + 'table' => [ + 'shipping_method' => [ + 'label' => 'M茅todo de Env铆o', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'price_breaks_count' => [ + 'label' => 'Desglose de Precios', + ], + ], + ], + 'exclusions' => [ + 'title_plural' => 'Exclusiones de Env铆o', + 'form' => [ + 'purchasable' => [ + 'label' => 'Producto', + ], + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar lista de exclusi贸n de env铆o', + ], + 'attach' => [ + 'label' => 'Agregar lista de exclusi贸n', + ], + 'detach' => [ + 'label' => 'Eliminar', + ], + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php b/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php new file mode 100644 index 0000000000..47a1e13f82 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php @@ -0,0 +1,19 @@ + 'Lista de Exclusi贸n de Env铆o', + 'label_plural' => 'Listas de Exclusi贸n de Env铆o', + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'exclusions_count' => [ + 'label' => 'N掳 Productos', + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingmethod.php b/packages/table-rate-shipping/resources/lang/es/shippingmethod.php new file mode 100644 index 0000000000..b77269d1b7 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingmethod.php @@ -0,0 +1,58 @@ + 'M茅todos de Env铆o', + 'label' => 'M茅todo de Env铆o', + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripci贸n', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'cutoff' => [ + 'label' => 'Corte', + ], + 'charge_by' => [ + 'label' => 'Cargar Por', + 'options' => [ + 'cart_total' => 'Total del Carrito', + 'weight' => 'Peso', + ], + ], + 'driver' => [ + 'label' => 'Tipo', + 'options' => [ + 'ship-by' => 'Est谩ndar', + 'collection' => 'Recogida', + ], + ], + 'stock_available' => [ + 'label' => 'El stock de todos los art铆culos del carrito debe estar disponible', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'C贸digo', + ], + 'driver' => [ + 'label' => 'Tipo', + 'options' => [ + 'ship-by' => 'Est谩ndar', + 'collection' => 'Recogida', + ], + ], + ], + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + 'customer_groups' => 'Este m茅todo de env铆o no est谩 disponible actualmente para todos los grupos de clientes.', + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingzone.php b/packages/table-rate-shipping/resources/lang/es/shippingzone.php new file mode 100644 index 0000000000..8fd52fa774 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingzone.php @@ -0,0 +1,50 @@ + 'Zona de Env铆o', + 'label_plural' => 'Zonas de Env铆o', + 'form' => [ + 'unrestricted' => [ + 'content' => 'Esta zona de env铆o no tiene restricciones y estar谩 disponible para todos los clientes al momento de pagar.', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'options' => [ + 'unrestricted' => 'Sin Restricciones', + 'countries' => 'Limitar a Pa铆ses', + 'states' => 'Limitar a Estados / Provincias', + 'postcodes' => 'Limitar a C贸digos Postales', + ], + ], + 'country' => [ + 'label' => 'Pa铆s', + ], + 'states' => [ + 'label' => 'Estados', + ], + 'countries' => [ + 'label' => 'Pa铆ses', + ], + 'postcodes' => [ + 'label' => 'C贸digos Postales', + 'helper' => 'Lista cada c贸digo postal en una nueva l铆nea. Soporta comodines como NW*', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'options' => [ + 'unrestricted' => 'Sin Restricciones', + 'countries' => 'Limitar a Pa铆ses', + 'states' => 'Limitar a Estados / Provincias', + 'postcodes' => 'Limitar a C贸digos Postales', + ], + ], + ], +]; diff --git a/tests/core/Unit/DiscountTypes/AmountOffTest.php b/tests/core/Unit/DiscountTypes/AmountOffTest.php index 06e9a03b74..f7729fc83e 100644 --- a/tests/core/Unit/DiscountTypes/AmountOffTest.php +++ b/tests/core/Unit/DiscountTypes/AmountOffTest.php @@ -784,7 +784,16 @@ expect($lastLine->discountTotal->value)->toEqual(333); }); -test('can apply percentage discount', function () { +test('can apply percentage discount', function ( + string $coupon, + float $percentage, + int $discountTotalForOne, + int $taxTotalForOne, + int $totalForOne, + int $discountTotalForTwo, + int $taxTotalForTwo, + int $totalForTwo +) { $customerGroup = CustomerGroup::getDefault(); $channel = Channel::getDefault(); @@ -794,7 +803,7 @@ $cart = Cart::factory()->create([ 'channel_id' => $channel->id, 'currency_id' => $currency->id, - 'coupon_code' => '10PERCENTOFF', + 'coupon_code' => $coupon, ]); $purchasable = ProductVariant::factory()->create(); @@ -816,9 +825,9 @@ $discount = Discount::factory()->create([ 'type' => AmountOff::class, 'name' => 'Test Coupon', - 'coupon' => '10PERCENTOFF', + 'coupon' => $coupon, 'data' => [ - 'percentage' => 10, + 'percentage' => $percentage, 'fixed_value' => false, ], ]); @@ -843,9 +852,9 @@ $cart = $cart->calculate(); - expect($cart->discountTotal->value)->toEqual(100); - expect($cart->taxTotal->value)->toEqual(180); - expect($cart->total->value)->toEqual(1080); + expect($cart->discountTotal->value)->toEqual($discountTotalForOne); + expect($cart->taxTotal->value)->toEqual($taxTotalForOne); + expect($cart->total->value)->toEqual($totalForOne); $cart->lines()->delete(); @@ -857,10 +866,14 @@ $cart = $cart->refresh()->calculate(); - expect($cart->discountTotal->value)->toEqual(200); - expect($cart->taxTotal->value)->toEqual(360); - expect($cart->total->value)->toEqual(2160); -}); + expect($cart->discountTotal->value)->toEqual($discountTotalForTwo); + expect($cart->taxTotal->value)->toEqual($taxTotalForTwo); + expect($cart->total->value)->toEqual($totalForTwo); +})->with([ + '10% Discount' => ['10PERCENTOFF', 10, 100, 180, 1080, 200, 360, 2160], + '10.25% Discount' => ['10PT25PERCENTOFF', 10.25, 103, 179, 1076, 205, 359, 2154], + '10.5% Discount' => ['10PT5PERCENTOFF', 10.5, 105, 179, 1074, 210, 358, 2148], +]); test('can only same discount to line once', function () { $customerGroup = CustomerGroup::getDefault();