Merge branch 'akaunting:master' into master
This commit is contained in:
commit
586db83514
@ -603,20 +603,18 @@ abstract class Form extends Component
|
|||||||
return $textCreateNewContact;
|
return $textCreateNewContact;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
$default_key = Str::plural(config('type.document.' . $type . '.contact_type'), 2);
|
$default_key = Str::plural(config('type.document.' . $type . '.contact_type'), 2);
|
||||||
|
|
||||||
$translation = $this->getTextFromConfig($type, 'create_new_contact', $default_key, 'trans_choice');
|
$translation = $this->getTextFromConfig($type, 'create_new_contact', $default_key, 'trans_choice');
|
||||||
|
|
||||||
if (!empty($translation)) {
|
if (!empty($translation)) {
|
||||||
return [
|
return [
|
||||||
'general.form.add_new',
|
'general.title.new',
|
||||||
$translation,
|
$translation,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
return 'general.add_new';
|
return 'general.title.add';
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getTextEditContact($type, $textEditContact)
|
protected function getTextEditContact($type, $textEditContact)
|
||||||
|
@ -132,8 +132,8 @@ class Contact extends Component
|
|||||||
|
|
||||||
protected function getTextCreateNewContact($type, $textCreateNewContact)
|
protected function getTextCreateNewContact($type, $textCreateNewContact)
|
||||||
{
|
{
|
||||||
if (!empty($textCreateNewContact)) {
|
if (!empty($textCreateNewContact) && is_array($textCreateNewContact)) {
|
||||||
return $textCreateNewContact;
|
return trans($textCreateNewContact[0], ['type' => trans_choice($textCreateNewContact[1], 1)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
|
@ -8,6 +8,18 @@ class Country extends Form
|
|||||||
{
|
{
|
||||||
public $type = 'country';
|
public $type = 'country';
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $formGroupClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(string $formGroupClass = 'sm:col-span-3') {
|
||||||
|
$this->formGroupClass = $formGroupClass;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the view / contents that represent the component.
|
* Get the view / contents that represent the component.
|
||||||
*
|
*
|
||||||
|
@ -46,8 +46,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="flex items-center justify-center h-11 text-center text-purple font-bold border border-l-0 border-r-0 border-b-0 rounded-bl-lg rounded-br-lg hover:bg-gray-100 cursor-pointer" tabindex="0" @click="onContactCreate">
|
<div class="flex items-center justify-center h-11 text-sm text-center text-purple font-bold border border-l-0 border-r-0 border-b-0 rounded-bl-lg rounded-br-lg hover:bg-gray-100 cursor-pointer" tabindex="0" @click="onContactCreate">
|
||||||
<span class="text-sm"> {{ createNewContactText }} </span>
|
<span class="material-icons text-lg font-bold mr-1 mt-1">add</span>
|
||||||
|
{{ createNewContactText }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -367,7 +368,7 @@ export default {
|
|||||||
|
|
||||||
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
||||||
resolve({
|
resolve({
|
||||||
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
[Select.name]: Select,
|
[Select.name]: Select,
|
||||||
@ -426,7 +427,7 @@ export default {
|
|||||||
|
|
||||||
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
||||||
resolve({
|
resolve({
|
||||||
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
[Select.name]: Select,
|
[Select.name]: Select,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<SlideYUpTransition :duration="animationDuration">
|
<SlideYUpTransition :duration="animationDuration">
|
||||||
<div class="modal fade w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade items-center justify-center"
|
<div class="modal fade w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade justify-center"
|
||||||
@click.self="closeModal"
|
@click.self="closeModal"
|
||||||
:class="[{'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
|
:class="[modalPositionTop ? 'items-start' : 'items-center', {'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
|
||||||
v-show="show"
|
v-show="show"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
role="dialog"
|
role="dialog"
|
||||||
@ -103,6 +103,11 @@ export default {
|
|||||||
default: 800,
|
default: 800,
|
||||||
description: "Modal transition duration"
|
description: "Modal transition duration"
|
||||||
},
|
},
|
||||||
|
modalPositionTop: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
description: "Modal Body position Class"
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<SlideYUpTransition :duration="animationDuration">
|
<SlideYUpTransition :duration="animationDuration">
|
||||||
<div class="modal w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade items-center justify-center"
|
<div class="modal w-full h-full fixed top-0 left-0 right-0 z-50 overflow-y-auto overflow-hidden modal-add-new fade justify-center"
|
||||||
@click.self="closeModal"
|
@click.self="closeModal"
|
||||||
:class="[{'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
|
:class="[modalPositionTop ? 'items-start' : 'items-center', {'show flex flex-wrap modal-background': show}, {'hidden': !show}]"
|
||||||
v-show="show"
|
v-show="show"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
role="dialog"
|
role="dialog"
|
||||||
@ -91,19 +91,16 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
is_component: Boolean,
|
is_component: Boolean,
|
||||||
|
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
description: "Modal header title"
|
description: "Modal header title"
|
||||||
},
|
},
|
||||||
|
|
||||||
message: {
|
message: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
description: "Modal body message"
|
description: "Modal body message"
|
||||||
},
|
},
|
||||||
|
|
||||||
buttons: {
|
buttons: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: function () {
|
default: function () {
|
||||||
@ -120,18 +117,21 @@ export default {
|
|||||||
},
|
},
|
||||||
description: "Modal footer button"
|
description: "Modal footer button"
|
||||||
},
|
},
|
||||||
|
|
||||||
animationDuration: {
|
animationDuration: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 800,
|
default: 800,
|
||||||
description: "Modal transition duration"
|
description: "Modal transition duration"
|
||||||
},
|
},
|
||||||
|
modalDialogClass: {
|
||||||
modalDialogClass: {
|
|
||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
description: "Modal Body size Class"
|
description: "Modal Body size Class"
|
||||||
},
|
},
|
||||||
|
modalPositionTop: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
description: "Modal Body position Class"
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -583,7 +583,7 @@ export default {
|
|||||||
|
|
||||||
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
this.add_new_html = Vue.component('add-new-component', function (resolve, reject) {
|
||||||
resolve({
|
resolve({
|
||||||
template: '<div><akaunting-modal-add-new :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
template: '<div><akaunting-modal-add-new modal-dialog-class="max-w-md" :show="add_new.show" @submit="onSubmit" @cancel="onCancel" :buttons="add_new.buttons" :title="add_new.text" :is_component=true :message="add_new.html"></akaunting-modal-add-new></div>',
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
AkauntingModalAddNew,
|
AkauntingModalAddNew,
|
||||||
|
@ -585,7 +585,7 @@ const app = new Vue({
|
|||||||
|
|
||||||
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
||||||
resolve({
|
resolve({
|
||||||
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
|
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
|
||||||
|
|
||||||
mixins: [
|
mixins: [
|
||||||
Global
|
Global
|
||||||
@ -703,7 +703,7 @@ const app = new Vue({
|
|||||||
|
|
||||||
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
this.component = Vue.component('add-new-component', (resolve, reject) => {
|
||||||
resolve({
|
resolve({
|
||||||
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-screen-lg" :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
|
template: '<div id="dynamic-payment-component"><akaunting-modal-add-new modal-dialog-class="max-w-md" modal-position-top :show="payment.modal" @submit="onSubmit" @cancel="onCancel" :buttons="payment.buttons" :title="payment.title" :is_component=true :message="payment.html"></akaunting-modal-add-new></div>',
|
||||||
|
|
||||||
mixins: [
|
mixins: [
|
||||||
Global
|
Global
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
choose-different-contact-text="{{ is_array($textChooseDifferentContact) ? trans($textChooseDifferentContact[0], ['field' => Str::lower(trans_choice($textChooseDifferentContact[1], 1))]) : trans($textChooseDifferentContact) }}"
|
choose-different-contact-text="{{ is_array($textChooseDifferentContact) ? trans($textChooseDifferentContact[0], ['field' => Str::lower(trans_choice($textChooseDifferentContact[1], 1))]) : trans($textChooseDifferentContact) }}"
|
||||||
:add-new="{{ json_encode([
|
:add-new="{{ json_encode([
|
||||||
'status' => true,
|
'status' => true,
|
||||||
'text' => trans('general.add_new'),
|
'text' => is_array($textCreateNewContact) ? trans($textCreateNewContact[0], ['field' => trans_choice($textCreateNewContact[1], 1)]) : trans($textCreateNewContact),
|
||||||
'new_text' => trans('modules.new'),
|
'new_text' => trans('modules.new'),
|
||||||
'buttons' => [
|
'buttons' => [
|
||||||
'cancel' => [
|
'cancel' => [
|
||||||
|
@ -9,5 +9,5 @@
|
|||||||
:search-char-limit="{{ $searchCharLimit }}"
|
:search-char-limit="{{ $searchCharLimit }}"
|
||||||
@item="onSelectedItem($event)"
|
@item="onSelectedItem($event)"
|
||||||
add-item-text="{{ trans('general.form.add_an', ['field' => trans_choice('general.items', 1)]) }}"
|
add-item-text="{{ trans('general.form.add_an', ['field' => trans_choice('general.items', 1)]) }}"
|
||||||
create-new-item-text="{{ trans('general.title.create', ['type' => trans_choice('general.items', 1)]) }}"
|
create-new-item-text="{{ trans('general.title.new', ['type' => trans_choice('general.items', 1)]) }}"
|
||||||
></akaunting-item-button>
|
></akaunting-item-button>
|
||||||
|
@ -350,7 +350,7 @@
|
|||||||
:value="tax_id"
|
:value="tax_id"
|
||||||
:add-new="{{ json_encode([
|
:add-new="{{ json_encode([
|
||||||
'status' => true,
|
'status' => true,
|
||||||
'text' => trans('general.add_new'),
|
'text' => trans('general.title.new', ['type' => trans_choice('general.taxes', 1)]),
|
||||||
'path' => route('modals.taxes.create'),
|
'path' => route('modals.taxes.create'),
|
||||||
'type' => 'modal',
|
'type' => 'modal',
|
||||||
'field' => [
|
'field' => [
|
||||||
|
@ -5,4 +5,5 @@
|
|||||||
:selected="setting('company.country')"
|
:selected="setting('company.country')"
|
||||||
not-required
|
not-required
|
||||||
model="form.country"
|
model="form.country"
|
||||||
|
form-group-class="{{ $formGroupClass }}"
|
||||||
/>
|
/>
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
@if (! empty($addNew))
|
@if (! empty($addNew))
|
||||||
:add-new="{{ json_encode([
|
:add-new="{{ json_encode([
|
||||||
'status' => true,
|
'status' => true,
|
||||||
'text' => trans('general.add_new'),
|
'text' => trans('general.title.new', ['type' => $label ?? '']),
|
||||||
'path' => isset($attributes['path']) ? $attributes['path']: false,
|
'path' => isset($attributes['path']) ? $attributes['path']: false,
|
||||||
'type' => isset($attributes['type']) ? $attributes['type'] : 'modal',
|
'type' => isset($attributes['type']) ? $attributes['type'] : 'modal',
|
||||||
'field' => [
|
'field' => [
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
<x-form id="form-create-currency" route="modals.currencies.store">
|
<x-form id="form-create-currency" route="modals.currencies.store">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" />
|
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" />
|
<x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
<x-form.input.hidden name="symbol_first" value="1" />
|
<x-form.input.hidden name="symbol_first" value="1" />
|
||||||
|
@ -1,18 +1,90 @@
|
|||||||
<x-form id="form-create-customer" route="customers.store">
|
<x-form id="form-create-customer" route="customers.store">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div x-data="{ active: 'general' }">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<div>
|
||||||
|
<div>
|
||||||
|
<ul class="grid grid-cols-6">
|
||||||
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-general"
|
||||||
|
data-id="tab-general"
|
||||||
|
data-tabs="general"
|
||||||
|
x-on:click="active = 'general'"
|
||||||
|
x-bind:class="active != 'general' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.general') }}
|
||||||
|
|
||||||
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-address"
|
||||||
|
data-id="tab-address"
|
||||||
|
data-tabs="address"
|
||||||
|
x-on:click="active = 'address'"
|
||||||
|
x-bind:class="active != 'address' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.address') }}
|
||||||
|
|
||||||
<x-form.group.currency without-add-new />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-other"
|
||||||
|
data-id="tab-other"
|
||||||
|
data-tabs="other"
|
||||||
|
x-on:click="active = 'other'"
|
||||||
|
x-bind:class="active != 'other' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans_choice('general.others', 1) }}
|
||||||
|
|
||||||
<x-form.group.country />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<x-form.input.hidden name="type" value="customer" />
|
<div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
|
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.currency without-add-new form-group-class="col-span-6" :add-new-text="trans_choice('general.currencies', 1)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" rows=2 not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.input.hidden name="type" value="customer" />
|
||||||
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-form>
|
</x-form>
|
||||||
|
@ -1,18 +1,90 @@
|
|||||||
<x-form id="form-edit-customer" method="PATCH" :route="['customers.update', $customer->id]" :model="$customer">
|
<x-form id="form-edit-customer" method="PATCH" :route="['customers.update', $customer->id]" :model="$customer">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div x-data="{ active: 'general' }">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<div>
|
||||||
|
<div>
|
||||||
|
<ul class="grid grid-cols-6">
|
||||||
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-general"
|
||||||
|
data-id="tab-general"
|
||||||
|
data-tabs="general"
|
||||||
|
x-on:click="active = 'general'"
|
||||||
|
x-bind:class="active != 'general' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.general') }}
|
||||||
|
|
||||||
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-address"
|
||||||
|
data-id="tab-address"
|
||||||
|
data-tabs="address"
|
||||||
|
x-on:click="active = 'address'"
|
||||||
|
x-bind:class="active != 'address' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.address') }}
|
||||||
|
|
||||||
<x-form.group.currency without-add-new />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-other"
|
||||||
|
data-id="tab-other"
|
||||||
|
data-tabs="other"
|
||||||
|
x-on:click="active = 'other'"
|
||||||
|
x-bind:class="active != 'other' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans_choice('general.others', 1) }}
|
||||||
|
|
||||||
<x-form.group.country />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<x-form.input.hidden name="type" value="customer" />
|
<div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
|
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.currency without-add-new form-group-class="col-span-6" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.input.hidden name="type" value="customer" />
|
||||||
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-form>
|
</x-form>
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
<x-form.group.textarea name="description" label="{{ trans('general.description') }}" rows="3" not-required form-group-class="col-span-6" />
|
<x-form.group.textarea name="description" label="{{ trans('general.description') }}" rows="2" not-required form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.group.text name="number" label="{{ trans_choice('general.numbers', 1) }}" value="{{ $number }}" form-group-class="col-span-6" />
|
<x-form.group.text name="number" label="{{ trans_choice('general.numbers', 1) }}" value="{{ $number }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
<x-form id="form-create-tax" route="taxes.store">
|
<x-form id="form-create-tax" route="taxes.store">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.group.text name="rate" label="{{ trans('taxes.rate') }}" />
|
<x-form.group.text name="rate" label="{{ trans('taxes.rate') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
<x-form.input.hidden name="type" value="normal" />
|
<x-form.input.hidden name="type" value="normal" />
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
|
90
resources/views/modals/vendors/create.blade.php
vendored
90
resources/views/modals/vendors/create.blade.php
vendored
@ -1,18 +1,90 @@
|
|||||||
<x-form id="form-create-vendor" route="vendors.store">
|
<x-form id="form-create-vendor" route="vendors.store">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div x-data="{ active: 'general' }">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<div>
|
||||||
|
<div>
|
||||||
|
<ul class="grid grid-cols-6">
|
||||||
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-general"
|
||||||
|
data-id="tab-general"
|
||||||
|
data-tabs="general"
|
||||||
|
x-on:click="active = 'general'"
|
||||||
|
x-bind:class="active != 'general' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.general') }}
|
||||||
|
|
||||||
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-address"
|
||||||
|
data-id="tab-address"
|
||||||
|
data-tabs="address"
|
||||||
|
x-on:click="active = 'address'"
|
||||||
|
x-bind:class="active != 'address' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.address') }}
|
||||||
|
|
||||||
<x-form.group.currency without-add-new />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-other"
|
||||||
|
data-id="tab-other"
|
||||||
|
data-tabs="other"
|
||||||
|
x-on:click="active = 'other'"
|
||||||
|
x-bind:class="active != 'other' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans_choice('general.others', 1) }}
|
||||||
|
|
||||||
<x-form.group.country />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<x-form.input.hidden name="type" value="vendor" />
|
<div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
|
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.currency without-add-new form-group-class="col-span-6" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.input.hidden name="type" value="vendor" />
|
||||||
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-form>
|
</x-form>
|
||||||
|
90
resources/views/modals/vendors/edit.blade.php
vendored
90
resources/views/modals/vendors/edit.blade.php
vendored
@ -1,18 +1,90 @@
|
|||||||
<x-form id="form-edit-vendor" method="PATCH" :route="['vendors.update', $vendor->id]" :model="$vendor">
|
<x-form id="form-edit-vendor" method="PATCH" :route="['vendors.update', $vendor->id]" :model="$vendor">
|
||||||
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
<div x-data="{ active: 'general' }">
|
||||||
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
|
<div>
|
||||||
|
<div>
|
||||||
|
<ul class="grid grid-cols-6">
|
||||||
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-general"
|
||||||
|
data-id="tab-general"
|
||||||
|
data-tabs="general"
|
||||||
|
x-on:click="active = 'general'"
|
||||||
|
x-bind:class="active != 'general' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.general') }}
|
||||||
|
|
||||||
<x-form.group.text name="email" label="{{ trans('general.email') }}" not-required />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('name')||form.errors.has('email')||form.errors.has('phone')||form.errors.has('tax_number')||form.errors.has('currency_code')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" not-required />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-address"
|
||||||
|
data-id="tab-address"
|
||||||
|
data-tabs="address"
|
||||||
|
x-on:click="active = 'address'"
|
||||||
|
x-bind:class="active != 'address' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans('general.address') }}
|
||||||
|
|
||||||
<x-form.group.currency without-add-new />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('address')||form.errors.has('city')||form.errors.has('zip_code')||form.errors.has('state')||form.errors.has('country')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" />
|
<li class="relative px-8 text-sm text-black text-center pb-2 cursor-pointer transition-all border-b tabs-link col-span-2"
|
||||||
|
id="tab-other"
|
||||||
|
data-id="tab-other"
|
||||||
|
data-tabs="other"
|
||||||
|
x-on:click="active = 'other'"
|
||||||
|
x-bind:class="active != 'other' ? '' : 'active-tabs text-purple border-purple transition-all after:absolute after:w-full after:h-0.5 after:left-0 after:right-0 after:bottom-0 after:bg-purple after:rounded-tl-md after:rounded-tr-md'"
|
||||||
|
>
|
||||||
|
{{ trans_choice('general.others', 1) }}
|
||||||
|
|
||||||
<x-form.group.country />
|
<span class="invalid-feedback block text-xs text-red whitespace-normal" v-if="form.errors.has('website')||form.errors.has('reference')">
|
||||||
|
{{ trans('general.validation_error') }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<x-form.input.hidden name="type" value="vendor" />
|
<div id="tab-general" data-tabs-content="general" x-show="active === 'general'">
|
||||||
<x-form.input.hidden name="enabled" value="1" />
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="name" label="{{ trans('general.name') }}" form-group-class="col-span-6" />
|
||||||
|
|
||||||
|
<x-form.group.text name="email" label="{{ trans('general.email') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="phone" label="{{ trans('general.phone') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="tax_number" label="{{ trans('general.tax_number') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.currency without-add-new form-group-class="col-span-6" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-address" data-tabs-content="address" x-show="active === 'address'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.textarea name="address" label="{{ trans('general.address') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="city" label="{{ trans_choice('general.cities', 1) }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="zip_code" label="{{ trans('general.zip_code') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="state" label="{{ trans('general.state') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.country form-group-class="col-span-6 el-select-tags-pl-38" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-other" data-tabs-content="other" x-show="active === 'other'">
|
||||||
|
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
|
||||||
|
<x-form.group.text name="website" label="{{ trans('general.website') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.group.text name="reference" label="{{ trans('general.reference') }}" form-group-class="col-span-6" not-required />
|
||||||
|
|
||||||
|
<x-form.input.hidden name="type" value="vendor" />
|
||||||
|
<x-form.input.hidden name="enabled" value="1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-form>
|
</x-form>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user