merge master

This commit is contained in:
Jay_Makwana
2019-11-13 18:53:05 +05:30
14 changed files with 88 additions and 108 deletions

View File

@ -1,27 +0,0 @@
{
"authHost": "http://crater-vue.test",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"apiOriginAllow": {
"allowCors": false,
"allowOrigin": "",
"allowMethods": "",
"allowHeaders": ""
}
}

View File

@ -1,37 +0,0 @@
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'run',
1 verbose cli 'watch' ]
2 info using npm@3.10.10
3 info using node@v6.11.2
4 verbose run-script [ 'prewatch', 'watch', 'postwatch' ]
5 info lifecycle @~prewatch: @
6 silly lifecycle @~prewatch: no script for prewatch, continuing
7 info lifecycle @~watch: @
8 verbose lifecycle @~watch: unsafe-perm in lifecycle true
9 verbose lifecycle @~watch: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;C:\laragon2\www\crater-vue\node_modules\.bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\laragon2\bin\php\php-7.2.5-Win32-VC15-x86;C:\ProgramData\ComposerSetup\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\laragon2\bin\yarn\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk-10.0.1\bin;C:\Users\bytefury\AppData\Roaming\Composer\vendor\bin;C:\laragon\www\wp\node_modules\.bin;C:\laragon\www\Laravel\node_modules\webpack\bin;C:\Users\bytefury\AppData\Roaming\npm;C:\Program Files\Microsoft VS Code\bin;C:\Users\bytefury\AppData\Local\Microsoft\WindowsApps;
10 verbose lifecycle @~watch: CWD: C:\laragon2\www\crater-vue
11 silly lifecycle @~watch: Args: [ '/d /s /c',
11 silly lifecycle 'cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js' ]
12 verbose stack Error: kill ENOSYS
12 verbose stack at exports._errnoException (util.js:1020:11)
12 verbose stack at process.kill (internal/process.js:190:13)
12 verbose stack at process.listener (C:\Program Files\nodejs\node_modules\npm\node_modules\npmlog\node_modules\gauge\node_modules\signal-exit\index.js:86:15)
12 verbose stack at emitNone (events.js:91:20)
12 verbose stack at process.emit (events.js:185:7)
12 verbose stack at processEmit (C:\Program Files\nodejs\node_modules\npm\node_modules\npmlog\node_modules\gauge\node_modules\signal-exit\index.js:146:32)
12 verbose stack at processEmit (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\node_modules\npmlog\node_modules\gauge\node_modules\signal-exit\index.js:146:32)
12 verbose stack at Signal.wrap.onsignal (internal/process.js:217:44)
13 verbose cwd C:\laragon2\www\crater-vue
14 error Windows_NT 10.0.17134
15 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "watch"
16 error node v6.11.2
17 error npm v3.10.10
18 error code ENOSYS
19 error errno ENOSYS
20 error syscall kill
21 error kill ENOSYS
22 error If you need help, you may report this error at:
22 error <https://github.com/npm/npm/issues>
23 verbose exit [ 1, true ]

View File

@ -307,7 +307,9 @@ export default {
send_invoice: 'Send Invoice',
invoice_template: 'Invoice Template',
template: 'Template',
mark_as_sent: 'Mark as Sent',
mark_as_sent: 'Mark as sent',
invoice_mark_as_sent: 'This invoice will be marked as sent',
confirm_send: 'This invoice will be sent via email to the customer',
invoice_date: 'Invoice Date',
record_payment: 'Record Payment',
add_new_invoice: 'Add New Invoice',
@ -751,6 +753,7 @@ export default {
invalid_url: 'Invalid url (ex: http://www.crater.com)',
required: 'Field is required',
email_incorrect: 'Incorrect Email.',
email_already_taken: 'The email has already been taken.',
email_does_not_exist: "User with given email doesn't exist",
send_reset_link: 'Send Reset Link',
not_yet: 'Not yet? Send it again',
@ -767,9 +770,9 @@ export default {
payment_greater_than_due_amount: 'Entered Payment is more than due amount of this invoice.',
quantity_maxlength: 'Quantity should not be greater than 10 digits.',
price_maxlength: 'Price should not be greater than 10 digits.',
price_minvalue: 'Price should be greater than 0 digits',
price_minvalue: 'Price should be greater than 0.',
amount_maxlength: 'Amount should not be greater than 10 digits.',
amount_minvalue: 'Amount should be greater than 0 digits',
amount_minvalue: 'Amount should be greater than 0.',
description_maxlength: 'Description should not be greater than 255 characters.',
maximum_options_error: 'Maximum of {max} options selected. First remove a selected option to select another.',
notes_maxlength: 'Notes should not be greater than 255 characters.',

View File

@ -312,6 +312,8 @@ export default {
invoice_template: 'Plantilla de factura',
template: 'Modelo',
mark_as_sent: 'Marcar como enviado',
invoice_mark_as_sent: 'Esta factura se marcará como enviada',
confirm_send: 'Estas facturas se enviarán por correo electrónico al cliente.',
invoice_date: 'Fecha de la factura',
record_payment: 'Registro de pago',
add_new_invoice: 'Añadir nueva factura',

View File

@ -312,6 +312,8 @@ export default {
invoice_template: 'Modèle de facture',
template: 'Modèle',
mark_as_sent: 'Marquer comme envoyé',
invoice_mark_as_sent: 'Cette facture sera marquée comme envoyé',
confirm_send: 'Cette facture sera envoyée par courrier électronique au client.',
invoice_date: 'Date de facturation',
record_payment: 'Record de paiement',
add_new_invoice: 'Ajouter une nouvelle facture',

View File

@ -12,10 +12,15 @@
focus
type="email"
name="email"
@input="$v.loginData.email.$touch()"
/>
<div v-if="$v.loginData.email.$error">
<span v-if="!$v.loginData.email.required" class="text-danger">{{ $tc('validation.required') }}</span>
<span v-if="!$v.loginData.email.email" class="text-danger"> {{ $tc('validation.email_incorrect') }} </span>
<span v-if="!$v.loginData.email.required" class="text-danger">
{{ $tc('validation.required') }}
</span>
<span v-if="!$v.loginData.email.email" class="text-danger">
{{ $tc('validation.email_incorrect') }}
</span>
</div>
</div>
<div class="form-group">
@ -25,8 +30,10 @@
:invalid="$v.loginData.password.$error"
type="password"
name="password"
show-password
@input="$v.loginData.password.$touch()"
/>
<div v-if="$v.loginData.email.$error">
<div v-if="$v.loginData.password.$error">
<span v-if="!$v.loginData.password.required" class="text-danger">{{ $tc('validation.required') }}</span>
<span v-if="!$v.loginData.password.minLength" class="text-danger"> {{ $tc('validation.password_min_length', $v.loginData.password.$params.minLength.min, {count: $v.loginData.password.$params.minLength.min}) }} </span>
</div>

View File

@ -219,7 +219,7 @@
</div>
</div>
<hr> <!-- second row complete -->
<div class="row same-address-checkbox-container">
<div class="same-address-checkbox-container">
<div class="p-1">
<base-button ref="sameAddress" icon="copy" color="theme" class="btn-sm" @click="copyAddress(true)">
{{ $t('customers.copy_billing_address') }}
@ -624,17 +624,20 @@ export default {
this.isLoading = true
this.formData.currency_id = this.currency.id
}
let response = await this.addCustomer(this.formData)
if (response.data.success) {
window.toastr['success'](this.$t('customers.created_message'))
this.$router.push('/admin/customers')
this.isLoading = false
return true
try {
let response = await this.addCustomer(this.formData)
if (response.data.success) {
window.toastr['success'](this.$t('customers.created_message'))
this.$router.push('/admin/customers')
this.isLoading = false
return true
}
} catch (err) {
if (err.response.data.errors.email) {
this.isLoading = false
window.toastr['error'](this.$t('validation.email_already_taken'))
}
}
window.toastr['error'](response.data.error)
}
},
async fetchBillingState () {

View File

@ -247,13 +247,13 @@
{{ $t('invoices.view') }}
</router-link>
</v-dropdown-item>
<v-dropdown-item>
<v-dropdown-item v-if="row.status == 'DRAFT'">
<a class="dropdown-item" href="#" @click="sendInvoice(row.id)" >
<font-awesome-icon icon="paper-plane" class="dropdown-item-icon" />
{{ $t('invoices.send_invoice') }}
</a>
</v-dropdown-item>
<v-dropdown-item v-if="row.status === 'DRAFT'">
<v-dropdown-item v-if="row.status == 'DRAFT'">
<a class="dropdown-item" href="#" @click="sentInvoice(row.id)">
<font-awesome-icon icon="check-circle" class="dropdown-item-icon" />
{{ $t('invoices.mark_as_sent') }}
@ -384,24 +384,44 @@ export default {
'fetchCustomers'
]),
async sendInvoice (id) {
const data = {
id: id
}
let response = await this.sendEmail(data)
this.refreshTable()
if (response.data) {
window.toastr['success'](this.$tc('invoices.send_invoice'))
}
swal({
title: this.$t('general.are_you_sure'),
text: this.$t('invoices.confirm_send'),
icon: '/assets/icon/paper-plane-solid.svg',
buttons: true,
dangerMode: true
}).then(async (Send_Invoice) => {
if (Send_Invoice) {
const data = {
id: id
}
let response = await this.sendEmail(data)
this.refreshTable()
if (response.data) {
window.toastr['success'](this.$tc('invoices.send_invoice'))
}
}
})
},
async sentInvoice (id) {
const data = {
id: id
}
let response = await this.markAsSent(data)
this.refreshTable()
if (response.data) {
window.toastr['success'](this.$tc('invoices.mark_as_sent'))
}
swal({
title: this.$t('general.are_you_sure'),
text: this.$t('invoices.invoice_mark_as_sent'),
icon: '/assets/icon/check-circle-solid.svg',
buttons: true,
dangerMode: true
}).then(async (MarkAsSend_Invoice) => {
if (MarkAsSend_Invoice) {
const data = {
id: id
}
let response = await this.markAsSent(data)
this.refreshTable()
if (response.data) {
window.toastr['success'](this.$tc('invoices.mark_as_sent'))
}
}
})
},
getStatus (val) {
this.filters.status = {

View File

@ -8,7 +8,7 @@
</p>
</div>
<form action="" @submit.prevent="saveEmailConfig()">
<div class="row my-2 mt-5">
<div class="row">
<div class="col-md-6 my-2">
<label class="form-label">{{ $t('settings.mail.driver') }}</label>
<span class="text-danger"> *</span>
@ -116,12 +116,12 @@
</div>
<base-button
:loading="loading"
class="pull-right mt-5"
class="pull-right mt-4"
icon="save"
color="theme"
type="submit"
>
{{ $t('wizard.save_cont') }}
{{ $t('general.save') }}
</base-button>
</form>
</div>

View File

@ -43,6 +43,9 @@
type="password"
@input="$v.formData.password.$touch()"
/>
<div v-if="$v.formData.password.$error">
<span v-if="!$v.formData.password.minLength" class="text-danger"> {{ $tc('validation.password_min_length', $v.formData.password.$params.minLength.min, {count: $v.formData.password.$params.minLength.min}) }} </span>
</div>
</div>
<div class="col-md-6 mb-4 form-group">
<label class="input-label">{{ $tc('settings.account_settings.confirm_password') }}</label>
@ -78,7 +81,7 @@
<script>
import { validationMixin } from 'vuelidate'
import { mapActions } from 'vuex'
const { required, requiredIf, sameAs, email } = require('vuelidate/lib/validators')
const { required, requiredIf, sameAs, email, minLength } = require('vuelidate/lib/validators')
export default {
mixins: [validationMixin],
@ -103,6 +106,7 @@ export default {
email
},
password: {
minLength: minLength(8)
},
confirm_password: {
required: requiredIf('isRequired'),

View File

@ -45,6 +45,7 @@
/>
<div v-if="$v.profileData.password.$error">
<span v-if="!$v.profileData.password.required" class="text-danger">{{ $tc('validation.required') }}</span>
<span v-if="!$v.profileData.password.minLength" class="text-danger"> {{ $tc('validation.password_min_length', $v.profileData.password.$params.minLength.min, {count: $v.profileData.password.$params.minLength.min}) }} </span>
</div>
</div>
<div class="col-md-6">
@ -106,7 +107,8 @@ export default {
required
},
password: {
required
required,
minLength: minLength(8)
},
confirm_password: {
required: requiredIf('isRequired'),

View File

@ -111,6 +111,7 @@ code, .code {
justify-content: center;
align-items: center;
}
.swal-icon--custom {
height: 50px !important;
height: 70px !important;
}

View File

@ -27,8 +27,6 @@
.same-address-checkbox-container {
display: flex;
justify-content: flex-end;
padding-left: 12px;
margin-bottom: 1.5rem;
align-items: center;
justify-content: flex-end;
@ -97,7 +95,6 @@
.same-address-checkbox-container {
display: flex;
justify-content: flex-start;
padding-left: 15px;
margin-bottom: 0rem;
}

View File

@ -98,6 +98,9 @@
border-radius: 50%;
height: 21px;
width: 21px;
display: flex;
align-items: center;
justify-content: center;
.icon-check {
font-style: normal;