mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Compare commits
9 Commits
fix-tax-is
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ef7bca3b2 | |||
| bc8f2cd484 | |||
| 4e47f58bad | |||
| d8c429912e | |||
| 0aaf0e7e75 | |||
| 3d0b89bb4d | |||
| 38c4b9ebce | |||
| 7be59e78e0 | |||
| 204483836a |
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@ Homestead.yaml
|
||||
.gitkeep
|
||||
/public/docs
|
||||
/.scribe
|
||||
!storage/fonts/.gitkeep
|
||||
@ -2,24 +2,25 @@
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Admin\Report;
|
||||
|
||||
use PDF;
|
||||
use Carbon\Carbon;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Currency;
|
||||
use Crater\Models\Customer;
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
|
||||
class CustomerSalesReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request, $hash)
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
@ -56,6 +57,7 @@ class CustomerSalesReportController extends Controller
|
||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
|
||||
$from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat);
|
||||
$to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat);
|
||||
$currency = Currency::findOrFail(CompanySetting::getSetting('currency', $company->id));
|
||||
|
||||
$colors = [
|
||||
'primary_text_color',
|
||||
@ -80,6 +82,7 @@ class CustomerSalesReportController extends Controller
|
||||
'company' => $company,
|
||||
'from_date' => $from_date,
|
||||
'to_date' => $to_date,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
|
||||
$pdf = PDF::loadView('app.pdf.reports.sales-customers');
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Admin\Report;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Expense;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
use Carbon\Carbon;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\Expense;
|
||||
use Crater\Models\Currency;
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
|
||||
class ExpensesReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request, $hash)
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
@ -43,6 +44,7 @@ class ExpensesReportController extends Controller
|
||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
|
||||
$from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat);
|
||||
$to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat);
|
||||
$currency = Currency::findOrFail(CompanySetting::getSetting('currency', $company->id));
|
||||
|
||||
$colors = [
|
||||
'primary_text_color',
|
||||
@ -66,6 +68,7 @@ class ExpensesReportController extends Controller
|
||||
'company' => $company,
|
||||
'from_date' => $from_date,
|
||||
'to_date' => $to_date,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
$pdf = PDF::loadView('app.pdf.reports.expenses');
|
||||
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Admin\Report;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\InvoiceItem;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
use Carbon\Carbon;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\Currency;
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Models\InvoiceItem;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
|
||||
class ItemSalesReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request, $hash)
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
@ -43,6 +44,7 @@ class ItemSalesReportController extends Controller
|
||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
|
||||
$from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat);
|
||||
$to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat);
|
||||
$currency = Currency::findOrFail(CompanySetting::getSetting('currency', $company->id));
|
||||
|
||||
$colors = [
|
||||
'primary_text_color',
|
||||
@ -66,6 +68,7 @@ class ItemSalesReportController extends Controller
|
||||
'company' => $company,
|
||||
'from_date' => $from_date,
|
||||
'to_date' => $to_date,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
$pdf = PDF::loadView('app.pdf.reports.sales-items');
|
||||
|
||||
|
||||
@ -2,25 +2,26 @@
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Admin\Report;
|
||||
|
||||
use PDF;
|
||||
use Carbon\Carbon;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Expense;
|
||||
use Crater\Models\Payment;
|
||||
use Crater\Models\Currency;
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
|
||||
class ProfitLossReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request, $hash)
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
@ -49,6 +50,8 @@ class ProfitLossReportController extends Controller
|
||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
|
||||
$from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat);
|
||||
$to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat);
|
||||
$currency = Currency::findOrFail(CompanySetting::getSetting('currency', $company->id));
|
||||
|
||||
|
||||
$colors = [
|
||||
'primary_text_color',
|
||||
@ -74,6 +77,7 @@ class ProfitLossReportController extends Controller
|
||||
'company' => $company,
|
||||
'from_date' => $from_date,
|
||||
'to_date' => $to_date,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
$pdf = PDF::loadView('app.pdf.reports.profit-loss');
|
||||
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Admin\Report;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Tax;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
use Carbon\Carbon;
|
||||
use Crater\Models\Tax;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\Currency;
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Crater\Http\Controllers\Controller;
|
||||
|
||||
class TaxSummaryReportController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $hash
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request, $hash)
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
@ -44,6 +45,8 @@ class TaxSummaryReportController extends Controller
|
||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
|
||||
$from_date = Carbon::createFromFormat('Y-m-d', $request->from_date)->format($dateFormat);
|
||||
$to_date = Carbon::createFromFormat('Y-m-d', $request->to_date)->format($dateFormat);
|
||||
$currency = Currency::findOrFail(CompanySetting::getSetting('currency', $company->id));
|
||||
|
||||
|
||||
$colors = [
|
||||
'primary_text_color',
|
||||
@ -68,6 +71,7 @@ class TaxSummaryReportController extends Controller
|
||||
'company' => $company,
|
||||
'from_date' => $from_date,
|
||||
'to_date' => $to_date,
|
||||
'currency' => $currency,
|
||||
]);
|
||||
|
||||
$pdf = PDF::loadView('app.pdf.reports.tax-summary');
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
"barryvdh/laravel-ide-helper": "^2.6",
|
||||
"beyondcode/laravel-dump-server": "^1.0",
|
||||
"facade/ignition": "^2.3.6",
|
||||
"friendsofphp/php-cs-fixer": "^3.0",
|
||||
"friendsofphp/php-cs-fixer": "^3.8",
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
"mockery/mockery": "^1.3.1",
|
||||
"nunomaduro/collision": "^5.0",
|
||||
@ -81,7 +81,10 @@
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true
|
||||
"sort-packages": true,
|
||||
"allow-plugins": {
|
||||
"pestphp/pest-plugin": true
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
|
||||
2351
composer.lock
generated
2351
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -71,6 +71,7 @@ return [
|
||||
["code" => "cs", "name" => "Czech"],
|
||||
["code" => "el", "name" => "Greek"],
|
||||
["code" => "hr", "name" => "Crotian"],
|
||||
["code" => "th", "name" => "ไทย"],
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@ -170,7 +170,7 @@ class CountriesTableSeeder extends Seeder
|
||||
['id' => 152,'code' => 'NR','name' => "Nauru",'phonecode' => 674],
|
||||
['id' => 153,'code' => 'NP','name' => "Nepal",'phonecode' => 977],
|
||||
['id' => 154,'code' => 'AN','name' => "Netherlands Antilles",'phonecode' => 599],
|
||||
['id' => 155,'code' => 'NL','name' => "Netherlands The",'phonecode' => 31],
|
||||
['id' => 155,'code' => 'NL','name' => "Netherlands",'phonecode' => 31],
|
||||
['id' => 156,'code' => 'NC','name' => "New Caledonia",'phonecode' => 687],
|
||||
['id' => 157,'code' => 'NZ','name' => "New Zealand",'phonecode' => 64],
|
||||
['id' => 158,'code' => 'NI','name' => "Nicaragua",'phonecode' => 505],
|
||||
|
||||
@ -17,18 +17,7 @@
|
||||
<td class="px-5 py-4 text-left align-top">
|
||||
<div class="flex justify-start">
|
||||
<div
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-center
|
||||
w-5
|
||||
h-5
|
||||
mt-2
|
||||
text-gray-300
|
||||
cursor-move
|
||||
handle
|
||||
mr-2
|
||||
"
|
||||
class="flex items-center justify-center w-5 h-5 mt-2 mr-2 text-gray-300 cursor-move handle"
|
||||
>
|
||||
<DragIcon />
|
||||
</div>
|
||||
@ -108,7 +97,7 @@
|
||||
|
||||
<BaseIcon
|
||||
name="ChevronDownIcon"
|
||||
class="w-4 h-4 text-gray-500 ml-1"
|
||||
class="w-4 h-4 ml-1 text-gray-500"
|
||||
/>
|
||||
</span>
|
||||
</BaseButton>
|
||||
@ -155,7 +144,7 @@
|
||||
<BaseContentPlaceholders v-if="loading">
|
||||
<BaseContentPlaceholdersText
|
||||
:lines="1"
|
||||
class="w-24 h-8 rounded-md border"
|
||||
class="w-24 h-8 border rounded-md"
|
||||
/>
|
||||
</BaseContentPlaceholders>
|
||||
|
||||
@ -175,6 +164,7 @@
|
||||
:ability="abilities.CREATE_INVOICE"
|
||||
:store="store"
|
||||
:store-prop="storeProp"
|
||||
:discount="discount"
|
||||
@update="updateTax"
|
||||
/>
|
||||
</td>
|
||||
|
||||
@ -30,24 +30,13 @@
|
||||
<template v-if="userStore.hasAbilities(ability)" #action>
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-center
|
||||
w-full
|
||||
px-2
|
||||
cursor-pointer
|
||||
py-2
|
||||
bg-gray-200
|
||||
border-none
|
||||
outline-none
|
||||
"
|
||||
class="flex items-center justify-center w-full px-2 py-2 bg-gray-200 border-none outline-none cursor-pointer "
|
||||
@click="openTaxModal"
|
||||
>
|
||||
<BaseIcon name="CheckCircleIcon" class="h-5 text-primary-400" />
|
||||
|
||||
<label
|
||||
class="ml-2 text-sm leading-none text-primary-400 cursor-pointer"
|
||||
class="ml-2 text-sm leading-none cursor-pointer text-primary-400"
|
||||
>{{ $t('invoices.add_new_tax') }}</label
|
||||
>
|
||||
</button>
|
||||
@ -115,6 +104,10 @@ const props = defineProps({
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
discountedTotal: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
currency: {
|
||||
type: [Object, String],
|
||||
required: true,
|
||||
@ -153,19 +146,19 @@ const filteredTypes = computed(() => {
|
||||
})
|
||||
|
||||
const taxAmount = computed(() => {
|
||||
if (localTax.compound_tax && props.total) {
|
||||
return ((props.total + props.totalTax) * localTax.percent) / 100
|
||||
if (localTax.compound_tax && props.discountedTotal) {
|
||||
return ((props.discountedTotal + props.totalTax) * localTax.percent) / 100
|
||||
}
|
||||
|
||||
if (props.total && localTax.percent) {
|
||||
return (props.total * localTax.percent) / 100
|
||||
if (props.discountedTotal && localTax.percent) {
|
||||
return (props.discountedTotal * localTax.percent) / 100
|
||||
}
|
||||
|
||||
return 0
|
||||
})
|
||||
|
||||
watch(
|
||||
() => props.total,
|
||||
() => props.discountedTotal,
|
||||
() => {
|
||||
updateRowTax()
|
||||
}
|
||||
|
||||
@ -29,14 +29,7 @@
|
||||
|
||||
<label
|
||||
v-else
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-center
|
||||
m-0
|
||||
text-lg text-black
|
||||
uppercase
|
||||
"
|
||||
class="flex items-center justify-center m-0 text-lg text-black uppercase "
|
||||
>
|
||||
<BaseFormatMoney
|
||||
:amount="store.getSubTotal"
|
||||
@ -66,14 +59,7 @@
|
||||
|
||||
<label
|
||||
v-else-if="store[storeProp].tax_per_item === 'YES'"
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-center
|
||||
m-0
|
||||
text-lg text-black
|
||||
uppercase
|
||||
"
|
||||
class="flex items-center justify-center m-0 text-lg text-black uppercase "
|
||||
>
|
||||
<BaseFormatMoney :amount="tax.amount" :currency="defaultCurrency" />
|
||||
</label>
|
||||
@ -98,7 +84,7 @@
|
||||
<BaseContentPlaceholders v-if="isLoading">
|
||||
<BaseContentPlaceholdersText
|
||||
:lines="1"
|
||||
class="w-24 h-8 rounded-md border"
|
||||
class="w-24 h-8 border rounded-md"
|
||||
/>
|
||||
</BaseContentPlaceholders>
|
||||
<div v-else class="flex" style="width: 140px" role="group">
|
||||
@ -114,7 +100,7 @@
|
||||
<BaseDropdown position="bottom-end">
|
||||
<template #activator>
|
||||
<BaseButton
|
||||
class="rounded-tr-md rounded-br-md p-2 rounded-none"
|
||||
class="p-2 rounded-none rounded-tr-md rounded-br-md"
|
||||
type="button"
|
||||
variant="white"
|
||||
>
|
||||
@ -127,7 +113,7 @@
|
||||
|
||||
<BaseIcon
|
||||
name="ChevronDownIcon"
|
||||
class="w-4 h-4 text-gray-500 ml-1"
|
||||
class="w-4 h-4 ml-1 text-gray-500"
|
||||
/>
|
||||
</span>
|
||||
</BaseButton>
|
||||
@ -180,15 +166,7 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-between
|
||||
w-full
|
||||
pt-2
|
||||
mt-5
|
||||
border-t border-gray-200 border-solid
|
||||
"
|
||||
class="flex items-center justify-between w-full pt-2 mt-5 border-t border-gray-200 border-solid "
|
||||
>
|
||||
<BaseContentPlaceholders v-if="isLoading">
|
||||
<BaseContentPlaceholdersText :lines="1" class="w-16 h-5" />
|
||||
@ -204,14 +182,7 @@
|
||||
</BaseContentPlaceholders>
|
||||
<label
|
||||
v-else
|
||||
class="
|
||||
flex
|
||||
items-center
|
||||
justify-center
|
||||
text-lg
|
||||
uppercase
|
||||
text-primary-400
|
||||
"
|
||||
class="flex items-center justify-center text-lg uppercase text-primary-400"
|
||||
>
|
||||
<BaseFormatMoney :amount="store.getTotal" :currency="defaultCurrency" />
|
||||
</label>
|
||||
@ -334,6 +305,7 @@ function selectPercentage() {
|
||||
|
||||
function onSelectTax(selectedTax) {
|
||||
let amount = 0
|
||||
|
||||
if (selectedTax.compound_tax && props.store.getSubtotalWithDiscount) {
|
||||
amount = Math.round(
|
||||
((props.store.getSubtotalWithDiscount + props.store.getTotalSimpleTax) *
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
<template #activator>
|
||||
<img
|
||||
:src="previewAvatar"
|
||||
class="block w-8 h-8 rounded md:h-9 md:w-9"
|
||||
class="block w-8 h-8 rounded md:h-9 md:w-9 object-cover"
|
||||
/>
|
||||
</template>
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ import sk from './sk.json'
|
||||
import vi from './vi.json'
|
||||
import el from './el.json'
|
||||
import hr from './hr.json'
|
||||
import th from './th.json'
|
||||
|
||||
export default {
|
||||
cs,
|
||||
@ -37,5 +38,6 @@ export default {
|
||||
vi,
|
||||
pl,
|
||||
el,
|
||||
hr
|
||||
hr,
|
||||
th
|
||||
}
|
||||
|
||||
1525
resources/scripts/locales/th.json
Normal file
1525
resources/scripts/locales/th.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/static/fonts/THSarabunNew-Bold.ttf
Normal file
BIN
resources/static/fonts/THSarabunNew-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/static/fonts/THSarabunNew-BoldItalic.ttf
Normal file
BIN
resources/static/fonts/THSarabunNew-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
resources/static/fonts/THSarabunNew-Italic.ttf
Normal file
BIN
resources/static/fonts/THSarabunNew-Italic.ttf
Normal file
Binary file not shown.
BIN
resources/static/fonts/THSarabunNew.ttf
Normal file
BIN
resources/static/fonts/THSarabunNew.ttf
Normal file
Binary file not shown.
@ -386,6 +386,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -408,6 +408,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -346,6 +346,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -327,6 +327,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -377,6 +377,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_invoice_label') - {{$invoice->invoice_number}}</title>
|
||||
<title>@lang('pdf_invoice_label') - {{ $invoice->invoice_number }}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
@ -187,7 +187,7 @@
|
||||
|
||||
|
||||
.total-display-table {
|
||||
border-top: none;
|
||||
border-top: none;
|
||||
page-break-inside: avoid;
|
||||
page-break-before: auto;
|
||||
page-break-after: auto;
|
||||
@ -304,7 +304,12 @@
|
||||
.pl-0 {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -312,10 +317,10 @@
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" class="header-section-left">
|
||||
@if($logo)
|
||||
<img class="header-logo" style="height: 50px;" src="{{ $logo }}" alt="Company Logo">
|
||||
@if ($logo)
|
||||
<img class="header-logo" style="height: 50px;" src="{{ $logo }}" alt="Company Logo">
|
||||
@else
|
||||
<h1 class="header-logo"> {{$invoice->customer->company->name}} </h1>
|
||||
<h1 class="header-logo"> {{ $invoice->customer->company->name }} </h1>
|
||||
@endif
|
||||
</td>
|
||||
<td width="50%" class="text-right company-address-container company-address">
|
||||
@ -331,14 +336,14 @@
|
||||
<div class="main-content">
|
||||
<div class="customer-address-container">
|
||||
<div class="billing-address-container billing-address">
|
||||
@if($billing_address)
|
||||
@if ($billing_address)
|
||||
<b>@lang('pdf_bill_to')</b> <br>
|
||||
{!! $billing_address !!}
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div @if($billing_address !== '</br>') class="shipping-address-container shipping-address" @else class="shipping-address-container--left shipping-address" @endif>
|
||||
@if($shipping_address)
|
||||
<div @if ($billing_address !== '</br>') class="shipping-address-container shipping-address" @else class="shipping-address-container--left shipping-address" @endif>
|
||||
@if ($shipping_address)
|
||||
<b>@lang('pdf_ship_to')</b> <br>
|
||||
{!! $shipping_address !!}
|
||||
@endif
|
||||
@ -350,15 +355,15 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td class="attribute-label">@lang('pdf_invoice_number')</td>
|
||||
<td class="attribute-value"> {{$invoice->invoice_number}}</td>
|
||||
<td class="attribute-value"> {{ $invoice->invoice_number }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attribute-label">@lang('pdf_invoice_date')</td>
|
||||
<td class="attribute-value"> {{$invoice->formattedInvoiceDate}}</td>
|
||||
<td class="attribute-value"> {{ $invoice->formattedInvoiceDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attribute-label">@lang('pdf_invoice_due_date')</td>
|
||||
<td class="attribute-value"> {{$invoice->formattedDueDate}}</td>
|
||||
<td class="attribute-value"> {{ $invoice->formattedDueDate }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@ -368,7 +373,7 @@
|
||||
@include('app.pdf.invoice.partials.table')
|
||||
|
||||
<div class="notes">
|
||||
@if($notes)
|
||||
@if ($notes)
|
||||
<div class="notes-label">
|
||||
@lang('pdf_notes')
|
||||
</div>
|
||||
|
||||
34
resources/views/app/pdf/locale/th.blade.php
Normal file
34
resources/views/app/pdf/locale/th.blade.php
Normal file
@ -0,0 +1,34 @@
|
||||
<style type="text/css">
|
||||
@font-face {
|
||||
font-family: 'THSarabunNew';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: url("{{ resource_path('static/fonts/THSarabunNew.ttf') }}") format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'THSarabunNew';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: url("{{ resource_path('static/fonts/THSarabunNew-Bold.ttf') }}") format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'THSarabunNew';
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
src: url("{{ resource_path('static/fonts/THSarabunNew-Italic.ttf') }}") format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'THSarabunNew';
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
src: url("{{ resource_path('static/fonts/THSarabunNew-BoldItalic.ttf') }}") format('truetype');
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "THSarabunNew", sans-serif !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -276,6 +276,10 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_expense_report_label')</title>
|
||||
<style type="text/css">
|
||||
@ -11,7 +12,7 @@
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.sub-container{
|
||||
.sub-container {
|
||||
padding: 0px 20px;
|
||||
}
|
||||
|
||||
@ -133,7 +134,12 @@
|
||||
color: #5851D8;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="sub-container">
|
||||
<table class="report-header">
|
||||
@ -155,18 +161,18 @@
|
||||
<div class="expenses-table-container">
|
||||
<table class="expenses-table">
|
||||
@foreach ($expenseCategories as $expenseCategory)
|
||||
<tr>
|
||||
<td>
|
||||
<p class="expense-title">
|
||||
{{ $expenseCategory->category->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="expense-amount">
|
||||
{!! format_money_pdf($expenseCategory->total_amount) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p class="expense-title">
|
||||
{{ $expenseCategory->category->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="expense-amount">
|
||||
{!! format_money_pdf($expenseCategory->total_amount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@ -175,7 +181,7 @@
|
||||
<table class="expense-total-table">
|
||||
<tr>
|
||||
<td class="expense-total-cell">
|
||||
<p class="expense-total">{!! format_money_pdf($totalExpense) !!}</p>
|
||||
<p class="expense-total">{!! format_money_pdf($totalExpense, $currency) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -185,9 +191,10 @@
|
||||
<p class="report-footer-label">@lang('pdf_total_expenses_label')</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="report-footer-value">{!! format_money_pdf($totalExpense) !!}</p>
|
||||
<p class="report-footer-value">{!! format_money_pdf($totalExpense, $currency) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_profit_loss_label')</title>
|
||||
<style type="text/css">
|
||||
@ -11,7 +12,7 @@
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.sub-container{
|
||||
.sub-container {
|
||||
padding: 0px 20px;
|
||||
}
|
||||
|
||||
@ -158,7 +159,12 @@
|
||||
color: #5851D8;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="sub-container">
|
||||
<table class="report-header">
|
||||
@ -183,7 +189,7 @@
|
||||
<p class="income-title">@lang("pdf_income_label")</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="income-amount">{!! format_money_pdf($income) !!}</p>
|
||||
<p class="income-amount">{!! format_money_pdf($income, $currency) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -191,18 +197,18 @@
|
||||
<div class="expenses-table-container">
|
||||
<table class="expenses-table">
|
||||
@foreach ($expenseCategories as $expenseCategory)
|
||||
<tr>
|
||||
<td>
|
||||
<p class="expense-title">
|
||||
{{ $expenseCategory->category->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="expense-amount">
|
||||
{!! format_money_pdf($expenseCategory->total_amount) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p class="expense-title">
|
||||
{{ $expenseCategory->category->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="expense-amount">
|
||||
{!! format_money_pdf($expenseCategory->total_amount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</table>
|
||||
@ -212,7 +218,7 @@
|
||||
<table class="expense-total-indicator-table">
|
||||
<tr>
|
||||
<td class="expense-total-cell">
|
||||
<p class="expense-total">{!! format_money_pdf($totalExpense) !!}</p>
|
||||
<p class="expense-total">{!! format_money_pdf($totalExpense, $currency) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -222,9 +228,10 @@
|
||||
<p class="report-footer-label">@lang("pdf_net_profit_label")</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="report-footer-value">{!! format_money_pdf(($income-$totalExpense)) !!}</p>
|
||||
<p class="report-footer-value">{!! format_money_pdf($income - $totalExpense, $currency) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_sales_customers_label')</title>
|
||||
<style type="text/css">
|
||||
@ -11,7 +12,7 @@
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.sub-container{
|
||||
.sub-container {
|
||||
padding: 0px 20px;
|
||||
}
|
||||
|
||||
@ -132,11 +133,17 @@
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="sub-container">
|
||||
<table class="report-header">
|
||||
@ -156,34 +163,34 @@
|
||||
</table>
|
||||
|
||||
@foreach ($customers as $customer)
|
||||
<p class="sales-customer-name">{{ $customer->name }}</p>
|
||||
<div class="sales-table-container">
|
||||
<table class="sales-table">
|
||||
@foreach ($customer->invoices as $invoice)
|
||||
<tr>
|
||||
<td>
|
||||
<p class="sales-information-text">
|
||||
{{ $invoice->formattedInvoiceDate }} ({{ $invoice->invoice_number }})
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="sales-amount">
|
||||
{!! format_money_pdf($invoice->base_total) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
<table class="sales-total-indicator-table">
|
||||
<p class="sales-customer-name">{{ $customer->name }}</p>
|
||||
<div class="sales-table-container">
|
||||
<table class="sales-table">
|
||||
@foreach ($customer->invoices as $invoice)
|
||||
<tr>
|
||||
<td class="sales-total-cell">
|
||||
<p class="sales-total-amount">
|
||||
{!! format_money_pdf($customer->totalAmount) !!}
|
||||
<td>
|
||||
<p class="sales-information-text">
|
||||
{{ $invoice->formattedInvoiceDate }} ({{ $invoice->invoice_number }})
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="sales-amount">
|
||||
{!! format_money_pdf($invoice->base_total, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
<table class="sales-total-indicator-table">
|
||||
<tr>
|
||||
<td class="sales-total-cell">
|
||||
<p class="sales-total-amount">
|
||||
{!! format_money_pdf($customer->totalAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
@ -195,10 +202,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<p class="report-footer-value">
|
||||
{!! format_money_pdf($totalAmount) !!}
|
||||
{!! format_money_pdf($totalAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@ -1,17 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_sales_items_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
}
|
||||
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.sub-container{
|
||||
.sub-container {
|
||||
padding: 0px 20px;
|
||||
}
|
||||
|
||||
@ -132,11 +133,17 @@
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="sub-container">
|
||||
<table class="report-header">
|
||||
@ -154,36 +161,36 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<p class="sales-items-title">@lang('pdf_items_label')</p>
|
||||
@foreach ($items as $item)
|
||||
<div class="items-table-container">
|
||||
<table class="items-table">
|
||||
<tr>
|
||||
<td>
|
||||
<p class="item-title">
|
||||
{{ $item->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="item-sales-amount">
|
||||
{!! format_money_pdf($item->total_amount) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<table class="sales-total-indicator-table">
|
||||
<div class="items-table-container">
|
||||
<table class="items-table">
|
||||
<tr>
|
||||
<td class="sales-total-cell">
|
||||
<p class="sales-total-amount">
|
||||
{!! format_money_pdf($totalAmount) !!}
|
||||
<td>
|
||||
<p class="item-title">
|
||||
{{ $item->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="item-sales-amount">
|
||||
{!! format_money_pdf($item->total_amount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<table class="sales-total-indicator-table">
|
||||
<tr>
|
||||
<td class="sales-total-cell">
|
||||
<p class="sales-total-amount">
|
||||
{!! format_money_pdf($totalAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
@ -194,10 +201,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<p class="report-footer-value">
|
||||
{!! format_money_pdf($totalAmount) !!}
|
||||
{!! format_money_pdf($totalAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>@lang('pdf_tax_summery_label')</title>
|
||||
<style type="text/css">
|
||||
@ -11,7 +12,7 @@
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.sub-container{
|
||||
.sub-container {
|
||||
padding: 0px 20px;
|
||||
}
|
||||
|
||||
@ -134,7 +135,12 @@
|
||||
color: #5851D8;
|
||||
}
|
||||
</style>
|
||||
|
||||
@if (App::isLocale('th'))
|
||||
@include('app.pdf.locale.th')
|
||||
@endif
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="sub-container">
|
||||
<table class="report-header">
|
||||
@ -160,18 +166,18 @@
|
||||
<div class="tax-table-container">
|
||||
<table class="tax-table">
|
||||
@foreach ($taxTypes as $tax)
|
||||
<tr>
|
||||
<td>
|
||||
<p class="tax-title">
|
||||
{{ $tax->taxType->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="tax-amount">
|
||||
{!! format_money_pdf($tax->total_tax_amount) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p class="tax-title">
|
||||
{{ $tax->taxType->name }}
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="tax-amount">
|
||||
{!! format_money_pdf($tax->total_tax_amount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</table>
|
||||
@ -182,7 +188,7 @@
|
||||
<tr>
|
||||
<td class="tax-total-cell">
|
||||
<p class="tax-total">
|
||||
{!! format_money_pdf($totalTaxAmount) !!}
|
||||
{!! format_money_pdf($totalTaxAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -194,10 +200,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<p class="report-footer-value">
|
||||
{!! format_money_pdf($totalTaxAmount) !!}
|
||||
{!! format_money_pdf($totalTaxAmount, $currency) !!}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
0
storage/fonts/.gitkeep
Normal file
0
storage/fonts/.gitkeep
Normal file
Reference in New Issue
Block a user