mirror of
https://github.com/crater-invoice/crater.git
synced 2025-12-16 02:12:54 -05:00
Merge branch 'master' of https://gitlab.com/mohit.panjvani/crater-web into fix-view-status
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<transition name="fade">
|
||||
<div v-if="modalActive" class="base-modal" :class="'size-' + modalSize">
|
||||
<div v-if="modalActive" :class="'size-' + modalSize" class="base-modal">
|
||||
<div class="modal-body">
|
||||
<div class="close-icon">
|
||||
<font-awesome-icon class="mr-2" icon="times" @click="closeModal"/>
|
||||
|
||||
@@ -233,6 +233,8 @@ export default {
|
||||
confirm_mark_as_accepted: 'This estimate will be marked as Accepted',
|
||||
confirm_mark_as_rejected: 'This estimate will be marked as Rejected',
|
||||
no_matching_estimates: 'There are no matching estimates!',
|
||||
mark_as_sent_successfully: 'Estimate marked as sent successfully',
|
||||
send_estimate_successfully: 'Estimate sent successfully',
|
||||
errors: {
|
||||
required: 'Field is required'
|
||||
},
|
||||
@@ -324,6 +326,8 @@ export default {
|
||||
list_of_invoices: 'This section will contain the list of invoices.',
|
||||
select_invoice: 'Select Invoice',
|
||||
no_matching_invoices: 'There are no matching invoices!',
|
||||
mark_as_sent_successfully: 'Invoice marked as sent successfully',
|
||||
send_invoice_successfully: 'Invoice sent successfully',
|
||||
item: {
|
||||
title: 'Item Title',
|
||||
description: 'Description',
|
||||
|
||||
@@ -237,6 +237,8 @@ export default {
|
||||
confirm_mark_as_sent: 'Esta estimación se marcará como enviada',
|
||||
confirm_mark_as_accepted: 'Esta estimación se marcará como Aceptada',
|
||||
confirm_mark_as_rejected: 'Esta estimación se marcará como Rechazada',
|
||||
mark_as_sent_successfully: 'Estimación marcada como enviada correctamente',
|
||||
send_estimate_successfully: 'Estimación enviada con éxito',
|
||||
errors: {
|
||||
required: 'Se requiere campo'
|
||||
},
|
||||
@@ -326,6 +328,8 @@ export default {
|
||||
no_invoices: '¡Aún no hay facturas!',
|
||||
list_of_invoices: 'Esta sección contendrá la lista de facturas.',
|
||||
select_invoice: 'Seleccionar factura',
|
||||
mark_as_sent_successfully: 'Factura marcada como enviada con éxito',
|
||||
send_invoice_successfully: 'Factura enviada exitosamente',
|
||||
item: {
|
||||
title: 'Título del artículo',
|
||||
description: 'Descripción',
|
||||
|
||||
@@ -237,6 +237,8 @@ export default {
|
||||
confirm_mark_as_sent: 'Cette estimation sera marquée comme envoyé',
|
||||
confirm_mark_as_accepted: 'Cette estimation sera marquée comme acceptée',
|
||||
confirm_mark_as_rejected: 'Cette estimation sera marquée comme Rejetée',
|
||||
mark_as_sent_successfully: 'Estimation marquée comme envoyée avec succès',
|
||||
send_estimate_successfully: 'Estimation envoyée avec succès',
|
||||
errors: {
|
||||
required: 'Champ requis'
|
||||
},
|
||||
@@ -326,6 +328,8 @@ export default {
|
||||
no_invoices: 'Aucune facture pour le moment!',
|
||||
list_of_invoices: 'Cette section contiendra la liste des factures.',
|
||||
select_invoice: 'Sélectionnez facture',
|
||||
mark_as_sent_successfully: 'Facture marquée comme envoyée avec succès',
|
||||
send_invoice_successfully: 'Facture envoyée avec succès',
|
||||
item: {
|
||||
title: 'Titre de larticle',
|
||||
description: 'La description',
|
||||
|
||||
@@ -396,7 +396,7 @@ export default {
|
||||
swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('estimates.confirm_delete', 1),
|
||||
icon: 'error',
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (willDelete) => {
|
||||
@@ -416,7 +416,7 @@ export default {
|
||||
swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_conversion'),
|
||||
icon: 'error',
|
||||
icon: '/assets/icon/envelope-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (willDelete) => {
|
||||
@@ -433,14 +433,24 @@ export default {
|
||||
})
|
||||
},
|
||||
async onMarkAsSent (id) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
this.$refs.table.refresh()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent'))
|
||||
}
|
||||
swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_sent'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (willMarkAsSent) => {
|
||||
if (willMarkAsSent) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
this.$refs.table.refresh()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async removeInvoice (id) {
|
||||
@@ -448,7 +458,7 @@ export default {
|
||||
swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('invoices.confirm_delete'),
|
||||
icon: 'error',
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (willDelete) => {
|
||||
@@ -465,24 +475,44 @@ export default {
|
||||
},
|
||||
|
||||
async sendInvoice (id) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.sendEmail(data)
|
||||
this.$refs.table.refresh()
|
||||
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 (willSendInvoice) => {
|
||||
if (willSendInvoice) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.sendEmail(data)
|
||||
this.$refs.table.refresh()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('invoices.send_invoice_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
async sentInvoice (id) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
this.$refs.table.refresh()
|
||||
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 (willMarkAsSend) => {
|
||||
if (willMarkAsSend) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
this.$refs.table.refresh()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('invoices.mark_as_sent_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ export default {
|
||||
if (response.data) {
|
||||
this.filters.status = 'ACCEPTED'
|
||||
this.$refs.table.refresh()
|
||||
window.toastr['success'](this.$tc('estimates.marked_as_rejected_message'))
|
||||
window.toastr['success'](this.$tc('estimates.confirm_mark_as_accepted'))
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -570,7 +570,7 @@ export default {
|
||||
let response = await this.markAsSent(data)
|
||||
this.refreshTable()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent'))
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -590,7 +590,7 @@ export default {
|
||||
let response = await this.sendEmail(data)
|
||||
this.refreshTable()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent'))
|
||||
window.toastr['success'](this.$tc('estimates.send_estimate_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<div class="page-actions row">
|
||||
<div class="col-xs-2">
|
||||
<base-button
|
||||
v-if="estimate.status !== 'SENT'"
|
||||
:loading="isRequestOnGoing"
|
||||
:disabled="isRequestOnGoing"
|
||||
:outline="true"
|
||||
@@ -33,7 +34,7 @@
|
||||
</v-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<div class="estimate-sidebar">
|
||||
<div class="estimate-si debar">
|
||||
<base-loader v-if="isSearching" />
|
||||
<div v-else class="side-header">
|
||||
<base-input
|
||||
@@ -144,6 +145,8 @@ export default {
|
||||
orderByField: null,
|
||||
searchText: null
|
||||
},
|
||||
status: ['DRAFT', 'SENT', 'VIEWED', 'EXPIRED', 'ACCEPTED', 'REJECTED'],
|
||||
isMarkAsSent: false,
|
||||
isRequestOnGoing: false,
|
||||
isSearching: false
|
||||
}
|
||||
@@ -230,11 +233,11 @@ export default {
|
||||
dangerMode: true
|
||||
}).then(async (willMarkAsSent) => {
|
||||
if (willMarkAsSent) {
|
||||
this.isRequestOnGoing = true
|
||||
this.isMarkAsSent = true
|
||||
let response = await this.markAsSent({id: this.estimate.id})
|
||||
this.isRequestOnGoing = false
|
||||
this.isMarkAsSent = false
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent'))
|
||||
window.toastr['success'](this.$tc('estimates.mark_as_sent_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -390,15 +390,15 @@ export default {
|
||||
icon: '/assets/icon/paper-plane-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (Send_Invoice) => {
|
||||
if (Send_Invoice) {
|
||||
}).then(async (willSendInvoice) => {
|
||||
if (willSendInvoice) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.sendEmail(data)
|
||||
this.refreshTable()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('invoices.send_invoice'))
|
||||
window.toastr['success'](this.$tc('invoices.send_invoice_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -410,15 +410,15 @@ export default {
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (MarkAsSend_Invoice) => {
|
||||
if (MarkAsSend_Invoice) {
|
||||
}).then(async (willMarkAsSend) => {
|
||||
if (willMarkAsSend) {
|
||||
const data = {
|
||||
id: id
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
this.refreshTable()
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('invoices.mark_as_sent'))
|
||||
window.toastr['success'](this.$tc('invoices.mark_as_sent_successfully'))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -263,7 +263,7 @@
|
||||
}
|
||||
|
||||
tr.main-table-header th {
|
||||
border-bottom: 1px solid #EAF1FB;
|
||||
border-bottom: 0.620315px solid #E8E8E8;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
}
|
||||
|
||||
tr.main-table-header th {
|
||||
border-bottom: 1px solid #EAF1FB;
|
||||
border-bottom: 0.620315px solid #E8E8E8;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<div class="notes">
|
||||
<div class="notes-label">
|
||||
Notes
|
||||
@if ($estimate->notes != '' && $estimate->notes != null)
|
||||
<div class="notes">
|
||||
<div class="notes-label">
|
||||
Notes
|
||||
</div>
|
||||
{{$estimate->notes}}
|
||||
</div>
|
||||
{{$estimate->notes}}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
<table width="100%" class="table2" cellspacing="0" border="0">
|
||||
<tr class="main-table-header">
|
||||
<th class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 20px">#</th>
|
||||
@if($estimate->discount_per_item === 'NO')
|
||||
<th width="80%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 0px">Items</th>
|
||||
@else
|
||||
<th width="40%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 0px">Items</th>
|
||||
@endif
|
||||
<th width="17%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 20px">Quantity</th>
|
||||
<th width="18%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 40px">Price</th>
|
||||
<th width="18%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 40px">Price</th>
|
||||
@if($estimate->discount_per_item === 'YES')
|
||||
<th width="10%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 10px">Discount</th>
|
||||
<th width="10%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-left: 10px">Discount</th>
|
||||
@endif
|
||||
<th width="15%" class="ItemTableHeader" style="text-align: right; color: #55547A;">Amount</th>
|
||||
</tr>
|
||||
@php
|
||||
$index = 1
|
||||
@endphp
|
||||
@foreach ($estimate->items as $item)
|
||||
<tr class="item-details">
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 20px; vertical-align: top;">{{$index}}</td>
|
||||
<td class="inv-item items" style="text-align: left; color: #040405;padding-left: 0px">
|
||||
<span>{{ $item->name }}</span><br>
|
||||
<span style="text-align: left; color: #595959; font-size: 9px; font-weight:300; line-height: 12px;">{{ $item->description }}</span>
|
||||
</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 20px">{{$item->quantity}}</td>
|
||||
<td class="inv-item items" style="text-align: left; color: #040405; padding-left: 40px">{{$item->price/100}}</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 40px">{{$item->price/100}}</td>
|
||||
@if($estimate->discount_per_item === 'YES')
|
||||
<td class="inv-item items" style="text-align: left; color: #040405; padding-left: 10px">
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-left: 10px">
|
||||
@if($item->discount_type === 'fixed')
|
||||
{{$item->discount_val/100}}
|
||||
@endif
|
||||
@@ -30,12 +35,15 @@
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
<td class="inv-item items" style="text-align: right; color: #040405">{{$item->total/100}}</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405;">{{$item->total/100}}</td>
|
||||
</tr>
|
||||
@php
|
||||
$index += 1
|
||||
@endphp
|
||||
@endforeach
|
||||
</table>
|
||||
|
||||
<table width="100%" style="margin-left:420px" cellspacing="0px" border="0" class="table3">
|
||||
<table width="100%" cellspacing="0px" style="margin-left:420px" border="0" class="table3 @if(count($estimate->items) > 12) page-break @endif">
|
||||
<tr>
|
||||
<td class="no-borde" style="color: #55547A; padding-left:10px; font-size:12px;">Subtotal</td>
|
||||
<td class="no-border items"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
html {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
table {
|
||||
@@ -35,7 +36,7 @@
|
||||
width: 100%;
|
||||
height: 90px;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
top: -50px;
|
||||
}
|
||||
|
||||
.header-logo {
|
||||
@@ -71,7 +72,7 @@
|
||||
|
||||
.wrapper {
|
||||
display: block;
|
||||
padding-top: 60px;
|
||||
padding-top: 16px;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
@@ -251,6 +252,7 @@
|
||||
page-break-after: auto;
|
||||
}
|
||||
|
||||
|
||||
.table2 hr {
|
||||
height:0.1px;
|
||||
}
|
||||
@@ -263,7 +265,7 @@
|
||||
}
|
||||
|
||||
tr.main-table-header th {
|
||||
border-bottom: 1px solid #EAF1FB;
|
||||
border-bottom: 0.620315px solid #E8E8E8;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
@@ -380,8 +382,8 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr class="header-line" style="border: 0.620315px solid #E8E8E8;"/>
|
||||
</div>
|
||||
<hr class="header-line" />
|
||||
<div class="wrapper">
|
||||
<div class="address">
|
||||
<div class="company">
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
}
|
||||
|
||||
tr.main-table-header th {
|
||||
border-bottom: 1px solid #EAF1FB;
|
||||
border-bottom: 0.620315px solid #E8E8E8;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<div class="notes">
|
||||
<div class="notes-label">
|
||||
Notes
|
||||
@if ($invoice->notes != '' && $invoice->notes != null)
|
||||
<div class="notes">
|
||||
<div class="notes-label">
|
||||
Notes
|
||||
</div>
|
||||
{{$invoice->notes}}
|
||||
</div>
|
||||
{{$invoice->notes}}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
<table width="100%" class="table2" cellspacing="0" border="0">
|
||||
<tr class="main-table-header">
|
||||
<th class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 20px">#</th>
|
||||
@if($invoice->discount_per_item === 'NO')
|
||||
<th width="80%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 0px">Items</th>
|
||||
@else
|
||||
<th width="40%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 0px">Items</th>
|
||||
@endif
|
||||
<th width="17%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 20px">Quantity</th>
|
||||
<th width="18%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 40px">Price</th>
|
||||
<th width="18%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-right: 40px">Price</th>
|
||||
@if($invoice->discount_per_item === 'YES')
|
||||
<th width="10%" class="ItemTableHeader" style="text-align: left; color: #55547A; padding-left: 10px">Discount</th>
|
||||
<th width="10%" class="ItemTableHeader" style="text-align: right; color: #55547A; padding-left: 10px">Discount</th>
|
||||
@endif
|
||||
<th width="15%" class="ItemTableHeader" style="text-align: right; color: #55547A;">Amount</th>
|
||||
</tr>
|
||||
@php
|
||||
$index = 1
|
||||
@endphp
|
||||
@foreach ($invoice->items as $item)
|
||||
<tr class="item-details">
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 20px; vertical-align: top;">{{$index}}</td>
|
||||
<td class="inv-item items" style="text-align: left; color: #040405;padding-left: 0px">
|
||||
<span>{{ $item->name }}</span><br>
|
||||
<span style="text-align: left; color: #595959; font-size: 9px; font-weight:300; line-height: 12px;">{{ $item->description }}</span>
|
||||
</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 20px">{{$item->quantity}}</td>
|
||||
<td class="inv-item items" style="text-align: left; color: #040405; padding-left: 40px">{{$item->price/100}}</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-right: 40px">{{$item->price/100}}</td>
|
||||
@if($invoice->discount_per_item === 'YES')
|
||||
<td class="inv-item items" style="text-align: left; color: #040405; padding-left: 10px">
|
||||
<td class="inv-item items" style="text-align: right; color: #040405; padding-left: 10px">
|
||||
@if($item->discount_type === 'fixed')
|
||||
{{$item->discount_val/100}}
|
||||
@endif
|
||||
@@ -30,8 +35,11 @@
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
<td class="inv-item items" style="text-align: right; color: #040405">{{$item->total/100}}</td>
|
||||
<td class="inv-item items" style="text-align: right; color: #040405;">{{$item->total/100}}</td>
|
||||
</tr>
|
||||
@php
|
||||
$index += 1
|
||||
@endphp
|
||||
@endforeach
|
||||
</table>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user