mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange.git
synced 2026-08-19 04:14:04 +00:00
Merge branch 'invoice' into 'master'
Invoice See merge request CIEFWorldwideSdnBhd/exchange!152
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
"@vue/standard"
|
||||
],
|
||||
"rules": {
|
||||
"vue/max-attributes-per-line": "off"
|
||||
"vue/max-attributes-per-line": "off",
|
||||
"vue/camelcase": "off"
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -20,4 +20,6 @@ yarn-error.log
|
||||
vendor/composer/autoload_static.php
|
||||
vendor/composer/autoload_classmap.php
|
||||
package-lock.json
|
||||
composer.lock
|
||||
composer.lock
|
||||
config/database.php
|
||||
notes.txt
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,667 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Routing\ResponseFactory;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Booking;
|
||||
use App\Invoice;
|
||||
use App\InvoiceDetails;
|
||||
use App\InvoiceStatuses;
|
||||
use App\SupplierBooking;
|
||||
use App\SettingSupplier;
|
||||
use App\Marking;
|
||||
use App\User;
|
||||
use PDF;
|
||||
|
||||
class InvoiceController extends Controller
|
||||
{
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
// validate $id is number
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
// only allow if belongs or is admin
|
||||
if ($request->user()->role === 'member') {
|
||||
if (!$this->isUser($id, $request->user()->id)) {
|
||||
return response()->json(['message' => 'The Invoice Does not belongs to you.'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
$invoice = Invoice::where('booking_id', $id)->first();
|
||||
if (!$invoice) {
|
||||
return response()->json(['message' => 'Invoice Not Found'], 404);
|
||||
}
|
||||
$lines = InvoiceDetails::where('invoice_id', $invoice['id'])->orderBy('order', 'asc')->get();
|
||||
|
||||
$status = InvoiceStatuses::where('invoice_id', $invoice['id'])->orderBy('created_at', 'asc')->get();
|
||||
|
||||
$invoice->lines = $lines;
|
||||
$invoice->status = $status;
|
||||
return response()->json($invoice, 200);
|
||||
|
||||
}
|
||||
|
||||
public function create(Request $request, $id)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
// validate $id
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'address' => 'required',
|
||||
'buyer_company' => 'required',
|
||||
'contact_no' => 'required',
|
||||
'marking' => 'required',
|
||||
'reg_no' => 'required',
|
||||
'lines.*.order' => 'required|numeric',
|
||||
'lines.*.stock_code' => 'required',
|
||||
'lines.*.description' => 'max:256',
|
||||
'lines.*.quantity' => 'required|numeric',
|
||||
'lines.*.unit_price_rm' => 'required|numeric',
|
||||
'lines.*.unit_price_rmb' => '',
|
||||
'lines.*.total' => 'required|numeric',
|
||||
]);
|
||||
|
||||
// booking_id belongs to user
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
if (!$booking) {
|
||||
return response()->json(['message' => 'Unable to find booking'], 403);
|
||||
}
|
||||
|
||||
// user_id in booking does not match
|
||||
if ($booking->user_id !== $user->id) {
|
||||
return response()->json([
|
||||
'message' => 'Booking does not belongs to you.'
|
||||
], 403);
|
||||
}
|
||||
|
||||
// Amount match with total
|
||||
$subtotalArray = array_map(
|
||||
function ($line) { return $line['total']; },
|
||||
$validatedData['lines']
|
||||
);
|
||||
$total = array_reduce($subtotalArray, function ($v1, $v2) {
|
||||
return $v1 + $v2;
|
||||
});
|
||||
if ($total !== $booking->amount) {
|
||||
return response()->json([
|
||||
'message' => 'Booking amount expected is '.$booking->amount.'. Your Invoice amount is '.$total
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Write to database if does not exist
|
||||
$exist = Invoice::where('booking_id', $id)->first();
|
||||
if ($exist) {
|
||||
return response()
|
||||
->json(['message' => 'Invoice exist. Cannot create duplicate invoice. Try edit.'], 400);
|
||||
}
|
||||
|
||||
// Generate PO Number - po20200810-001(PO Format)
|
||||
$dt = Carbon::now();
|
||||
$po_number = 'po'.$dt->format('Ymmdd').'-'.$id;
|
||||
|
||||
$invoice = new Invoice;
|
||||
$invoice->amount = $total;
|
||||
$invoice->booking_id = (int)$id;
|
||||
$invoice->reg_no = $validatedData['reg_no'];
|
||||
$invoice->buyer_company = $validatedData['buyer_company'];
|
||||
$invoice->address = $validatedData['address'];
|
||||
$invoice->contact_no = $validatedData['contact_no'];
|
||||
$invoice->po_number = $po_number;
|
||||
$invoice->save();
|
||||
|
||||
if (!$invoice) {
|
||||
return response()
|
||||
->json(['message' => 'Unable to Save Data'], 500);
|
||||
}
|
||||
|
||||
// Insert invoice_id into lines
|
||||
foreach( $validatedData['lines'] as $key => $line) {
|
||||
$invoice_details = new InvoiceDetails;
|
||||
$invoice_details->order = $line['order'];
|
||||
$invoice_details->description = $line['description'];
|
||||
$invoice_details->quantity = $line['quantity'];
|
||||
$invoice_details->stock_code = $line['stock_code'];
|
||||
$invoice_details->invoice_id = $invoice->id;
|
||||
$invoice_details->unit_price_rmb = $line['unit_price_rmb'];
|
||||
$invoice_details->unit_price_rm = $line['unit_price_rm'];
|
||||
$invoice_details->total = $line['total'];
|
||||
|
||||
$invoice_details->save();
|
||||
}
|
||||
unset($line);
|
||||
|
||||
$invoice->lines = $invoice_details;
|
||||
|
||||
// Post status as pending
|
||||
$status = new InvoiceStatuses;
|
||||
$status->status = 'pending';
|
||||
$status->comment = '';
|
||||
$status->invoice_id = $invoice->id;
|
||||
$status->save();
|
||||
|
||||
if($invoice_details) {
|
||||
return $this->show($request, $id);
|
||||
} else {
|
||||
return response(500);
|
||||
}
|
||||
}
|
||||
|
||||
public function edit(Request $request, $id)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
// validate $id
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'address' => 'required',
|
||||
'buyer_company' => 'required',
|
||||
'contact_no' => 'required',
|
||||
'marking' => 'required',
|
||||
'reg_no' => 'required',
|
||||
'lines.*.order' => 'required|numeric',
|
||||
'lines.*.stock_code' => 'required',
|
||||
'lines.*.description' => 'max:256',
|
||||
'lines.*.quantity' => 'required|numeric',
|
||||
'lines.*.unit_price_rm' => 'required|numeric',
|
||||
'lines.*.unit_price_rmb' => '',
|
||||
'lines.*.total' => 'required|numeric',
|
||||
]);
|
||||
|
||||
// booking_id belongs to user
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
if (!$booking) {
|
||||
return response()->json(['message' => 'Unable to find booking'], 403);
|
||||
}
|
||||
|
||||
$invoice = Invoice::where('booking_id', $id)->first();
|
||||
if (!$invoice) {
|
||||
return response()->json(['message' => 'Invoice Not Found'], 404);
|
||||
}
|
||||
|
||||
// role === 'member' && $booking->user_id !== user()->id && $currentstatus !== 'request_change')
|
||||
if ($request->user()->role === 'member') {
|
||||
if ($booking->user_id !== $request->user()->id) {
|
||||
return response()->json([
|
||||
'message' => 'Booking does not belongs to you'
|
||||
], 403);
|
||||
}
|
||||
|
||||
$currentstatus = InvoiceStatuses::where('invoice_id', $invoice['id'])->latest('created_at')->first()->status;
|
||||
if ($currentstatus !== 'request_change') {
|
||||
return response()->json(['message' => 'Submitted PO can only be changed when status is request_change'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
// Amount match with total
|
||||
$subtotalArray = array_map(
|
||||
function ($line) { return $line['total']; },
|
||||
$validatedData['lines']
|
||||
);
|
||||
$total = array_reduce($subtotalArray, function ($v1, $v2) {
|
||||
return $v1 + $v2;
|
||||
});
|
||||
if ($total != $booking->amount) {
|
||||
return response()->json([
|
||||
'message' => 'Booking amount expected is '.$booking->amount.'. Your Invoice amount is '.$total
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Generate PO Number - po20200810-001(PO Format)
|
||||
$dt = Carbon::now();
|
||||
$po_number = 'po'.$dt->format('Ymd').'-'.$id;
|
||||
|
||||
$invoice->amount = $total;
|
||||
$invoice->booking_id = (int)$id;
|
||||
$invoice->reg_no = $validatedData['reg_no'];
|
||||
$invoice->buyer_company = $validatedData['buyer_company'];
|
||||
$invoice->address = $validatedData['address'];
|
||||
$invoice->contact_no = $validatedData['contact_no'];
|
||||
$invoice->po_number = $po_number;
|
||||
$invoice->save();
|
||||
|
||||
if (!$invoice) {
|
||||
return response()
|
||||
->json(['message' => 'Unable to Save Data'], 500);
|
||||
}
|
||||
|
||||
// Remove all invoice_details corresponding to invoice_id
|
||||
$invoice_details = InvoiceDetails::where('invoice_id', $invoice->id);
|
||||
$invoice_details->delete();
|
||||
|
||||
// Insert invoice_id into lines
|
||||
foreach( $validatedData['lines'] as $key => $line) {
|
||||
$invoice_details = new InvoiceDetails;
|
||||
$invoice_details->order = $line['order'];
|
||||
$invoice_details->description = $line['description'];
|
||||
$invoice_details->quantity = $line['quantity'];
|
||||
$invoice_details->stock_code = $line['stock_code'];
|
||||
$invoice_details->invoice_id = $invoice->id;
|
||||
$invoice_details->unit_price_rmb = $line['unit_price_rmb'];
|
||||
$invoice_details->unit_price_rm = $line['unit_price_rm'];
|
||||
$invoice_details->total = $line['total'];
|
||||
|
||||
$invoice_details->save();
|
||||
}
|
||||
unset($line);
|
||||
|
||||
// Post status as pending
|
||||
$status = new InvoiceStatuses;
|
||||
$status->status = 'pending';
|
||||
if ($request->user()->role === 'admin') {
|
||||
$status->comment = 'Edited by Admin.';
|
||||
} else {
|
||||
$status->comment = 'Edited by Member.';
|
||||
}
|
||||
$status->invoice_id = $invoice->id;
|
||||
$status->save();
|
||||
|
||||
if($invoice_details) {
|
||||
return $this->show($request, $id);
|
||||
} else {
|
||||
return response(500);
|
||||
}
|
||||
}
|
||||
|
||||
public function postStatus(Request $request, $id)
|
||||
{
|
||||
|
||||
// validate $id is integer
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'status' => ['required', Rule::in('request_change', 'approve')],
|
||||
'comment' => Rule::requiredIf($request->status === 'request_change')
|
||||
]);
|
||||
|
||||
// Save status to database
|
||||
$status = new InvoiceStatuses;
|
||||
$status->status = $validatedData['status'];
|
||||
$status->comment = $validatedData['comment'];
|
||||
$status->invoice_id = Invoice::where('booking_id', $id)->first()['id'];
|
||||
$status->save();
|
||||
|
||||
$booking = Booking::find($id);
|
||||
|
||||
$monthlycount = Invoice::where('ei', 'like', 'EI-'.Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'%')->count() + 1;
|
||||
$generatednumber = Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('Ym').'-'.sprintf("%05d", $monthlycount);
|
||||
|
||||
$invoice = Invoice::where('booking_id', $id)->first();
|
||||
$invoice->ei = 'EI-'.$generatednumber;
|
||||
$invoice->edo = 'EDO-'.$generatednumber;
|
||||
$invoice->save();
|
||||
|
||||
if(!$status) {
|
||||
return response()->json(['message' => 'Unable to Update Status'], 500);
|
||||
}
|
||||
|
||||
// Change Status to 7 if approve
|
||||
// Add email event here
|
||||
if ($validatedData['status'] === 'approve') {
|
||||
$booking = Booking::find($id);
|
||||
$booking->status = 7;
|
||||
$booking->admin_status = 7;
|
||||
$booking->save();
|
||||
|
||||
if(!$booking) {
|
||||
return response()->json(['message' => 'Unable to Complete Booking. Please Approve Again'], 500);
|
||||
}
|
||||
}
|
||||
|
||||
// Response
|
||||
return response()->json($status, 201);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function customerToCIEFPO(Request $request, $id)
|
||||
{
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
// Booking Exist and Belongs to User or is Admin
|
||||
if ($request->user()->role === 'member') {
|
||||
if (!$this->isUser($id, $request->user()->id)) {
|
||||
return response()->json(['message' => 'The PO Does not belongs to you.'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure Invoice Status is Approve
|
||||
// if ($this->invoiceStatus($id) !== 'approve') {
|
||||
// return response()->json(['message' => 'Invoice must and exist and approve status.'], 403);
|
||||
// }
|
||||
|
||||
// Generate PO
|
||||
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
$invoice = Invoice::where('booking_id', $booking['id'])->first();
|
||||
$lines = InvoiceDetails::where('invoice_id', $invoice->id)->get();
|
||||
$marking = User::find($booking->user_id)->marking;
|
||||
|
||||
$data = [
|
||||
'title' => 'Purchase Order',
|
||||
'detail' => [
|
||||
'date' => Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('d-m-Y'),
|
||||
'po' => $invoice->po_number,
|
||||
'do' => '',
|
||||
'ref' => $booking->id
|
||||
],
|
||||
'buyer' => [
|
||||
'buyer_company' => $invoice->buyer_company,
|
||||
'reg_no' => $invoice->reg_no,
|
||||
'address' => $invoice->address,
|
||||
'gst' => '',
|
||||
'phone' => $invoice->contact_no,
|
||||
'marking_no' => $marking
|
||||
],
|
||||
'seller' => [
|
||||
'seller_company' => 'CIEF Worldwide Sdn Bhd (1134596-M)',
|
||||
'address' => 'Malaysia Global Innovation & Creativity Centre, Level
|
||||
1 CWS, Block 3730, Persiaran APEC 63000
|
||||
Cyberjaya.',
|
||||
'phone' => '018 2909252',
|
||||
],
|
||||
'lines' => $lines,
|
||||
'amount' => $invoice->amount
|
||||
];
|
||||
|
||||
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||
$fontDirs = $defaultConfig['fontDir'];
|
||||
$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
|
||||
$fontData = $defaultFontConfig['fontdata'];
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'fontDir' => array_merge($fontDirs, [
|
||||
__DIR__ . '/custom/font/directory',
|
||||
]),
|
||||
]);
|
||||
$mpdf->shrink_tables_to_fit=1;
|
||||
$mpdf->keep_table_proportions = true;
|
||||
$mpdf->SetTitle('Invoice');
|
||||
|
||||
$html = view('pdf/po', $data);
|
||||
|
||||
$mpdf->Bookmark('Start of the document');
|
||||
$mpdf->SetHTMLFooter('
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td style="text-align: right; ">This is generated by computer. No signature required.</td>
|
||||
<td style="text-align: right; ">Page {PAGENO} of {nbpg}</td>
|
||||
</tr>
|
||||
</table>
|
||||
');
|
||||
$mpdf->setHeader($invoice->po_number);
|
||||
$mpdf->WriteHTML($html);
|
||||
|
||||
$mpdf->Output();
|
||||
|
||||
}
|
||||
|
||||
public function CIEFToSupplierDO(Request $request, $id)
|
||||
{
|
||||
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
// Booking Exist and Belongs to User or is Admin
|
||||
if ($request->user()->role === 'member') {
|
||||
if (!$this->isUser($id, $request->user()->id)) {
|
||||
return response()->json(['message' => 'The PO Does not belongs to you.'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure Invoice Status is Approve
|
||||
// if ($this->invoiceStatus($id) !== 'approve') {
|
||||
// return response()->json(['message' => 'Invoice must and exist and approve status.'], 403);
|
||||
// }
|
||||
|
||||
// Generate PO
|
||||
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
$invoice = Invoice::where('booking_id', $booking['id'])->first();
|
||||
$lines = InvoiceDetails::where('invoice_id', $invoice->id)->get();
|
||||
$supplierbooking = SupplierBooking::where('booking_id', $id)->first();
|
||||
$supplier = SettingSupplier::where('id', $supplierbooking->supplier_id)->first();
|
||||
|
||||
$data = [
|
||||
'title' => 'Delivery Order',
|
||||
'detail' => [
|
||||
'date' => Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('d-m-Y'),
|
||||
'po' => $invoice->po_number,
|
||||
'do' => '',
|
||||
'ref' => $booking->id
|
||||
],
|
||||
'buyer' => [
|
||||
'buyer_company' => 'CIEF Worldwide Sdn Bhd',
|
||||
'reg_no' => '1134596-M',
|
||||
'address' => 'Malaysia Global Innovation & Creativity Centre, Level
|
||||
1 CWS, Block 3730, Persiaran APEC 63000
|
||||
Cyberjaya.',
|
||||
'gst' => '',
|
||||
'phone' => '018 2909252',
|
||||
'marking_no' => ''
|
||||
],
|
||||
'seller' => [
|
||||
'seller_company' => $supplier->company_name,
|
||||
'address' => '',
|
||||
'phone' => '',
|
||||
],
|
||||
'lines' => $lines,
|
||||
'amount' => $invoice->amount
|
||||
];
|
||||
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||
$fontDirs = $defaultConfig['fontDir'];
|
||||
$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
|
||||
$fontData = $defaultFontConfig['fontdata'];
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'fontDir' => array_merge($fontDirs, [
|
||||
__DIR__ . '/custom/font/directory',
|
||||
]),
|
||||
]);
|
||||
$mpdf->shrink_tables_to_fit=1;
|
||||
$mpdf->keep_table_proportions = true;
|
||||
$mpdf->SetTitle('Invoice');
|
||||
|
||||
$html = view('pdf/po', $data);
|
||||
|
||||
$mpdf->Bookmark('Start of the document');
|
||||
$mpdf->SetHTMLFooter('
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td style="text-align: right; ">This is generated by computer. No signature required.</td>
|
||||
<td style="text-align: right; ">Page {PAGENO} of {nbpg}</td>
|
||||
</tr>
|
||||
</table>
|
||||
');
|
||||
$mpdf->setHeader($invoice->po_number);
|
||||
$mpdf->WriteHTML($html);
|
||||
|
||||
$mpdf->Output();
|
||||
|
||||
}
|
||||
|
||||
public function CIEFToCustomerInvoice(Request $request, $id)
|
||||
{
|
||||
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
// only allow if belongs or is admin
|
||||
if ($request->user()->role === 'member') {
|
||||
if (!$this->isUser($id, $request->user()->id)) {
|
||||
return response()->json(['message' => 'The Invoice Does not belongs to you.'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
$invoice = Invoice::where('booking_id', $booking['id'])->first();
|
||||
$lines = InvoiceDetails::where('invoice_id', $invoice->id)->get();
|
||||
|
||||
$data = [
|
||||
'title' => 'Invoice',
|
||||
'detail' => [
|
||||
'date' => Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('d-m-Y'),
|
||||
'ei' => $invoice->ei,
|
||||
'edo' => null,
|
||||
'ref' => $booking->id
|
||||
],
|
||||
'billto' => [
|
||||
'buyer_company' => $invoice->buyer_company,
|
||||
'reg_no' => $invoice->reg_no,
|
||||
'address' => $invoice->address,
|
||||
'gst' => '',
|
||||
'phone' => $invoice->contact_no,
|
||||
'marking_no' => ''
|
||||
],
|
||||
'total_page' => (count($lines) / 10),
|
||||
'lines' => $lines,
|
||||
'amount' => $invoice->amount
|
||||
];
|
||||
|
||||
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||
$fontDirs = $defaultConfig['fontDir'];
|
||||
$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
|
||||
$fontData = $defaultFontConfig['fontdata'];
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'fontDir' => array_merge($fontDirs, [
|
||||
__DIR__ . '/custom/font/directory',
|
||||
]),
|
||||
]);
|
||||
$mpdf->shrink_tables_to_fit=1;
|
||||
$mpdf->keep_table_proportions = true;
|
||||
$mpdf->SetTitle('Invoice');
|
||||
|
||||
$html = view('pdf/invoice', $data);
|
||||
|
||||
$mpdf->Bookmark('Start of the document');
|
||||
$mpdf->SetHTMLFooter('
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td style="text-align: right; ">This is generated by computer. No signature required.</td>
|
||||
<td style="text-align: right; ">Page {PAGENO} of {nbpg}</td>
|
||||
</tr>
|
||||
</table>
|
||||
');
|
||||
$mpdf->setHeader($invoice->ei);
|
||||
$mpdf->WriteHTML($html);
|
||||
|
||||
$mpdf->Output();
|
||||
}
|
||||
|
||||
public function CIEFToCustomerDO(Request $request, $id)
|
||||
{
|
||||
if (!is_numeric($id)) {
|
||||
return response()->json(["message" => "Invalid id. Id needs to be a number"], 400);
|
||||
}
|
||||
|
||||
// only allow if belongs or is admin
|
||||
if ($request->user()->role === 'member') {
|
||||
if (!$this->isUser($id, $request->user()->id)) {
|
||||
return response()->json(['message' => 'The Invoice Does not belongs to you.'], 403);
|
||||
}
|
||||
}
|
||||
|
||||
// Generate PO
|
||||
|
||||
$booking = Booking::where('id', $id)->first();
|
||||
$invoice = Invoice::where('booking_id', $booking['id'])->first();
|
||||
$lines = InvoiceDetails::where('invoice_id', $invoice->id)->get();
|
||||
|
||||
$data = [
|
||||
'title' => 'Delivery Order',
|
||||
'detail' => [
|
||||
'date' => Carbon::createFromFormat('Y-m-d H:i:s', $booking->created_at)->format('d-m-Y'),
|
||||
'ei' => '',
|
||||
'edo' => $invoice->edo,
|
||||
'ref' => $booking->id
|
||||
],
|
||||
'billto' => [
|
||||
'buyer_company' => $invoice->buyer_company,
|
||||
'reg_no' => $invoice->reg_no,
|
||||
'address' => $invoice->address,
|
||||
'gst' => '',
|
||||
'phone' => $invoice->contact_no,
|
||||
'marking_no' => ''
|
||||
],
|
||||
'lines' => $lines,
|
||||
'amount' => $invoice->amount
|
||||
];
|
||||
|
||||
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||
$fontDirs = $defaultConfig['fontDir'];
|
||||
$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
|
||||
$fontData = $defaultFontConfig['fontdata'];
|
||||
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'fontDir' => array_merge($fontDirs, [
|
||||
__DIR__ . '/custom/font/directory',
|
||||
]),
|
||||
]);
|
||||
$mpdf->shrink_tables_to_fit=1;
|
||||
$mpdf->keep_table_proportions = true;
|
||||
$mpdf->SetTitle('do');
|
||||
|
||||
$html = view('pdf/invoice', $data);
|
||||
|
||||
$mpdf->Bookmark('Start of the document');
|
||||
$mpdf->SetHTMLFooter('
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td style="text-align: right; ">This is generated by computer. No signature required.</td>
|
||||
<td style="text-align: right; ">Page {PAGENO} of {nbpg}</td>
|
||||
</tr>
|
||||
</table>
|
||||
');
|
||||
$mpdf->setHeader($invoice->edo);
|
||||
$mpdf->WriteHTML($html);
|
||||
|
||||
$mpdf->Output();
|
||||
}
|
||||
|
||||
|
||||
private function isUser($booking_id, $user_id) {
|
||||
|
||||
$booking = Booking::where([
|
||||
['id', '=', $booking_id],
|
||||
['user_id', '=', $user_id]
|
||||
])->first();
|
||||
|
||||
if ($booking) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private function invoiceStatus($booking_id) {
|
||||
$invoice = Invoice::where('booking_id', $booking_id)->first();
|
||||
if (!$invoice) {
|
||||
return;
|
||||
}
|
||||
$currentstatus = InvoiceStatuses::where('invoice_id', $invoice['id'])->latest('created_at')->first()->status;
|
||||
return $currentstatus;
|
||||
}
|
||||
|
||||
}
|
||||
+10
-2
@@ -6,9 +6,17 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Invoice extends Model
|
||||
{
|
||||
protected $fillable = ['invoice_url','amount','booking_id'];
|
||||
protected $fillable = ['invoice_url','amount','booking_id', 'buyer_company', 'address', 'contact_no', 'po_number'];
|
||||
|
||||
public function booking(){
|
||||
return $this->hasOne('App\Booking');
|
||||
return $this->belongsTo('App\Booking');
|
||||
}
|
||||
|
||||
public function invoiceDetails() {
|
||||
return $this->hasOne('App\InvoiceDetails');
|
||||
}
|
||||
|
||||
public function invoiceStatuses() {
|
||||
return $this->hasMany('App\InvoiceStatuses');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class InvoiceDetails extends Model
|
||||
{
|
||||
protected $fillable = ['invoice_id', 'order','description','quantity', 'stock_code', 'unit_price_rmb', 'unit_price_rm', 'total'];
|
||||
|
||||
public function invoice() {
|
||||
return $this->belongsTo('App/Invoice');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class InvoiceStatuses extends Model
|
||||
{
|
||||
protected $fillable = ['status','comment', 'invoice_id'];
|
||||
|
||||
public function invoice() {
|
||||
return $this->belongsTo('App/Invoice');
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"barryvdh/laravel-dompdf": "^0.8.6",
|
||||
"doctrine/dbal": "^2.7",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"intervention/image": "^2.4",
|
||||
@@ -14,11 +15,13 @@
|
||||
"laravel/tinker": "~1.0",
|
||||
"laravelcollective/html": "^5.6",
|
||||
"maatwebsite/excel": "^3.1",
|
||||
"mpdf/mpdf": "^8.0",
|
||||
"pusher/pusher-php-server": "~3.0",
|
||||
"tymon/jwt-auth": "^1.0.0-rc.2",
|
||||
"zizaco/entrust": "dev-master"
|
||||
},
|
||||
"require-dev": {
|
||||
"beyondcode/laravel-er-diagram-generator": "^1.4",
|
||||
"filp/whoops": "^2.0",
|
||||
"fzaninotto/faker": "^1.4",
|
||||
"laravel/dusk": "^3.0",
|
||||
|
||||
+4
-1
@@ -169,7 +169,9 @@ return [
|
||||
App\Providers\EventServiceProvider::class,
|
||||
App\Providers\RouteServiceProvider::class,
|
||||
|
||||
Tymon\JWTAuth\Providers\LaravelServiceProvider::class
|
||||
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
|
||||
|
||||
Barryvdh\DomPDF\ServiceProvider::class,
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -222,6 +224,7 @@ return [
|
||||
'Entrust' => Zizaco\Entrust\EntrustFacade::class,
|
||||
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
|
||||
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
|
||||
'PDF' => Barryvdh\DomPDF\Facade::class
|
||||
|
||||
],
|
||||
|
||||
|
||||
+3
-3
@@ -43,9 +43,9 @@ return [
|
||||
'driver' => 'mysql',
|
||||
'host' => env('DB_HOST', 'localhost'),
|
||||
'port' => env('DB_PORT', '3306'),
|
||||
'database' => env('DB_DATABASE', 'forge'),
|
||||
'username' => env('DB_USERNAME', 'forge'),
|
||||
'password' => env('DB_PASSWORD', ''),
|
||||
'database' => env('DB_DATABASE', 'exchange'),
|
||||
'username' => env('DB_USERNAME', 'exchange'),
|
||||
'password' => env('DB_PASSWORD', 'exchange1!Q'),
|
||||
'unix_socket' => env('DB_SOCKET', ''),
|
||||
'charset' => 'utf8mb4',
|
||||
'collation' => 'utf8mb4_unicode_ci',
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'mode' => 'utf-8',
|
||||
'format' => 'A4',
|
||||
'author' => '',
|
||||
'subject' => '',
|
||||
'keywords' => '',
|
||||
'creator' => 'Laravel Pdf',
|
||||
'display_mode' => 'fullpage',
|
||||
'tempDir' => base_path('../temp/'),
|
||||
'font_path' => base_path('resources/fonts/'),
|
||||
'font_data' => [
|
||||
'examplefont' => [
|
||||
'R' => 'ExampleFont-Regular.ttf', // regular font
|
||||
'B' => 'ExampleFont-Bold.ttf', // optional: bold font
|
||||
'I' => 'ExampleFont-Italic.ttf', // optional: italic font
|
||||
'BI' => 'ExampleFont-Bold-Italic.ttf', // optional: bold-italic font
|
||||
'useOTL' => 0xFF, // required for complicated langs like Persian, Arabic and Chinese
|
||||
'useKashida' => 75, // required for complicated langs like Persian, Arabic and Chinese
|
||||
]
|
||||
// ...add as many as you want.
|
||||
]
|
||||
];
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddFieldsToInvoice extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('buyer_company', 50);
|
||||
$table->string('reg_no', 100);
|
||||
$table->string('address', 120);
|
||||
$table->string('contact_no', 20);
|
||||
$table->string('po_number', 20);
|
||||
$table->string('order_no', 20);
|
||||
$table->double('tax_rate')->default(0);
|
||||
$table->double('billing_charge_rate');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddInvoiceDetails extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('invoice_details', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->integer('order');
|
||||
$table->string('description');
|
||||
$table->integer('quantity');
|
||||
$table->double('unit_price');
|
||||
$table->string('stock_code');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('invoice_details');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Query\Expression;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddForeignIdToInvoiceDetails extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
$table->integer('invoice_id')->unsigned();
|
||||
|
||||
$table->foreign('invoice_id')
|
||||
->references('id')
|
||||
->on('invoices')
|
||||
->onDelete('cascade');
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateInvoiceStatus extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('invoice_statuses', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('status', 20);
|
||||
$table->string('comment');
|
||||
$table->timestamps();
|
||||
$table->integer('invoice_id')->unsigned();
|
||||
$table->foreign('invoice_id')
|
||||
->references('id')
|
||||
->on('invoices')
|
||||
->onDelete('cascade');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('invoice_statuses');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddDefaultValueInvoices extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('buyer_company', 50)->default('')->change();
|
||||
$table->string('reg_no', 100)->default('')->change();
|
||||
$table->string('address', 120)->default('')->change();
|
||||
$table->string('contact_no', 20)->default('')->change();
|
||||
$table->string('po_number', 20)->default('')->change();
|
||||
$table->string('order_no', 20)->default('')->change();
|
||||
$table->float('tax_rate')->default(0)->change();
|
||||
$table->float('billing_charge_rate')->default(0)->change();
|
||||
$table->string('invoice_path')->default('')->change();
|
||||
$table->float('amount')->default(0)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RemoveRegNoOrderNoInvoicesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->dropColumn(['reg_no', 'order_no', 'tax_rate', 'billing_charge_rate']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RemoveUnitPriceAddUnitPriceRmbRm extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
$table->dropColumn('unit_price');
|
||||
$table->double('unit_price_rmb');
|
||||
$table->double('unit_price_rm');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddTotalInvoiceDetails extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
$table->double('total');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class ChangeDefaultCommentNull extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_statuses', function (Blueprint $table) {
|
||||
$table->string('comment')->default(null)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_statuses', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class ChangeToNullableCommentNull extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_statuses', function (Blueprint $table) {
|
||||
$table->string('comment')->default(null)->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_statuses', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddRegNoToInvoices extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('reg_no');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class ChangeDescriptionTo256Varchar extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
$table->string('description', 256)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddEiEdoEpoToInvoice extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('edo');
|
||||
$table->string('ei');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->dropColumn(['edo', 'ei']);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddDefaultNullToEdoEiAndNullable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('edo')->default(null)->nullable()->change();
|
||||
$table->string('ei')->default(null)->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RemoveEdoEi extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->dropColumn(['edo', 'ei']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateEdoEi extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
$table->string('ei')->default(null)->nullable()->unique();
|
||||
$table->string('edo')->default(null)->nullable()->unique();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoices', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class InvoiceDetailsDescriptionNullable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
$table->string('description', 256)->nullable()->default(null)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_details', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
1. Run database migration
|
||||
2. Run composer. New libraries have been added to generate pdf
|
||||
3. Run npm install // I installed vuelidate for Vue Form validations
|
||||
4. Run npm run prod // To build new vue files
|
||||
5. Mbstring required to print chinese fonts.
|
||||
6. Run composer. New libraries have been added to generate pdf.
|
||||
@@ -43,6 +43,7 @@
|
||||
"vue-loading-spinner": "^1.0.11",
|
||||
"vue-meta": "^1.4.4",
|
||||
"vue-router": "^3.0.1",
|
||||
"vuelidate": "^0.7.5",
|
||||
"vuex": "^3.0.1",
|
||||
"vuex-router-sync": "^5.0.0"
|
||||
},
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"/js/lang-zh-CN.c0da3973e52421a8cfe5.js": "/js/lang-zh-CN.c0da3973e52421a8cfe5.js",
|
||||
"/js/lang-es.f4a1a5b4a30e92527b46.js": "/js/lang-es.f4a1a5b4a30e92527b46.js",
|
||||
"/js/lang-en.0f790217417404ecc662.js": "/js/lang-en.0f790217417404ecc662.js",
|
||||
"/js/lang-zh-CN.301fa7c2a76971d5e1ff.js": "/js/lang-zh-CN.301fa7c2a76971d5e1ff.js",
|
||||
"/js/lang-es.672a5851ff01fcf8d1b1.js": "/js/lang-es.672a5851ff01fcf8d1b1.js",
|
||||
"/js/lang-en.3d0dc40deef054cb1338.js": "/js/lang-en.3d0dc40deef054cb1338.js",
|
||||
"/js/app.js": "/js/app.js",
|
||||
"/css/app.css": "/css/app.css"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,777 @@
|
||||
/* eslint-disable camelcase */
|
||||
<template>
|
||||
<div class="invoice">
|
||||
<div class="header-container">
|
||||
<h3 v-if="currentStatus === 'pending'" class="title">
|
||||
Purchase Order (Pending Approval)
|
||||
</h3>
|
||||
<h3 v-else-if="currentStatus === 'approve'" class="title" >
|
||||
Purchase Order (Approved)
|
||||
</h3>
|
||||
<h3 v-else-if="currentStatus === 'request_change'" class="title">
|
||||
Purchase Order (Please Change)
|
||||
<div class="error">
|
||||
{{ statuses[statuses.length - 1].comment }}
|
||||
</div>
|
||||
</h3>
|
||||
<h3 v-else class="title">
|
||||
Purchase Order
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="invoice-container">
|
||||
<form @submit.prevent="submitForm">
|
||||
<div class="buyer-detail card">
|
||||
<div class="card-body">
|
||||
<div class="card-title">
|
||||
<h5>
|
||||
My Infomation
|
||||
</h5>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="marking">Marking</label>
|
||||
<input id="marking" v-model="$v.form.formData.marking.$model" type="text" class="form-control" disabled>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="buyer-company">Buyer's Company</label>
|
||||
<input id="buyer-company"
|
||||
v-model="$v.form.formData.buyer_company.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.formData.buyer_company.$invalid && $v.form.formData.buyer_company.$dirty,
|
||||
'is-valid': !$v.form.formData.buyer_company.$invalid && $v.form.formData.buyer_company.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="text"
|
||||
class="form-control"
|
||||
@blur="$v.form.formData.buyer_company.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Buyer Company Required
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="form-group">
|
||||
<label for="gst-id">GST ID</label>
|
||||
<input id="gst-id" type="text" class="form-control" disabled>
|
||||
</div> -->
|
||||
<div class="form-group">
|
||||
<label for="contact-number">Contact Number</label>
|
||||
<input id="contact-number"
|
||||
v-model.trim="$v.form.formData.contact_no.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.formData.contact_no.$invalid && $v.form.formData.contact_no.$dirty,
|
||||
'is-valid': !$v.form.formData.contact_no.$invalid && $v.form.formData.contact_no.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="tel"
|
||||
class="form-control"
|
||||
@blur="$v.form.formData.contact_no.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Contact Number Required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="reg-no">Company Registration Number</label>
|
||||
<input id="reg-no"
|
||||
v-model.trim="$v.form.formData.reg_no.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.formData.reg_no.$invalid && $v.form.formData.reg_no.$dirty,
|
||||
'is-valid': !$v.form.formData.reg_no.$invalid && $v.form.formData.reg_no.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="text" class="form-control"
|
||||
@blur="$v.form.formData.reg_no.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Company Registration Number Required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address">Address</label>
|
||||
<textarea id="address"
|
||||
v-model="$v.form.formData.address.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.formData.address.$invalid && $v.form.formData.address.$dirty,
|
||||
'is-valid': !$v.form.formData.address.$invalid && $v.form.formData.address.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
class="form-control"
|
||||
cols="30"
|
||||
rows="4"
|
||||
@blur="$v.form.formData.address.$touch()"/>
|
||||
<div class="invalid-feedback">
|
||||
Address Required
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conversion-rate">
|
||||
<h5>
|
||||
Conversion: {{ rate }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="billing-detail-title">
|
||||
<h5>Billing Detail</h5>
|
||||
</div>
|
||||
<div class="billing-detail-lines">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="align-middle">#</th>
|
||||
<th class="align-middle">Stock Code</th>
|
||||
<th class="align-middle">Description</th>
|
||||
<th class="text-center align-middle">Qty</th>
|
||||
<th class="text-center align-middle">Unit Price (RMB)</th>
|
||||
<th class="text-center align-middle">Unit Price (RM)</th>
|
||||
<th class="text-center align-middle">Total Amount (RM)</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<input v-model="$v.form.addLine.stock_code.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.addLine.stock_code.$invalid && $v.form.addLine.stock_code.$dirty,
|
||||
'is-valid': !$v.form.addLine.stock_code.$invalid && $v.form.addLine.stock_code.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
name="stockcode" type="text"
|
||||
class="form-control"
|
||||
@blur="$v.form.addLine.stock_code.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Stock Code Required
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<textarea id="description"
|
||||
v-model="$v.form.addLine.description.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.addLine.description.$invalid && $v.form.addLine.description.$dirty,
|
||||
'is-valid': !$v.form.addLine.description.$invalid && $v.form.addLine.description.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
name="description" cols="20" rows="2"
|
||||
@blur="$v.form.addLine.description.$touch()"/>
|
||||
<div class="invalid-feedback">
|
||||
Maximum length for description is 256 characters
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<input id="quantity"
|
||||
v-model="$v.form.addLine.quantity.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.addLine.quantity.$invalid && $v.form.addLine.quantity.$dirty,
|
||||
'is-valid': !$v.form.addLine.quantity.$invalid && $v.form.addLine.quantity.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="number"
|
||||
min="1"
|
||||
class="form-control"
|
||||
name="quantity"
|
||||
@change="onUnitPriceRM()"
|
||||
@blur="$v.form.addLine.quantity.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Quantity Required
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<input id="rmb-unit-price"
|
||||
v-model="$v.form.addLine.unit_price_rmb.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.addLine.unit_price_rmb.$invalid && $v.form.addLine.unit_price_rmb.$dirty,
|
||||
'is-valid': !$v.form.addLine.unit_price_rmb.$invalid && $v.form.addLine.unit_price_rmb.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="number"
|
||||
min="0"
|
||||
name="rmb-unit-price"
|
||||
class="form-control"
|
||||
@change="onUnitPriceRMB()"
|
||||
@blur="$v.form.addLine.unit_price_rmb.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Unit Price Required
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<input id="rm-unit-price"
|
||||
v-model="$v.form.addLine.unit_price_rm.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.addLine.unit_price_rm.$invalid && $v.form.addLine.unit_price_rm.$dirty,
|
||||
'is-valid': !$v.form.addLine.unit_price_rm.$invalid && $v.form.addLine.unit_price_rm.$dirty
|
||||
}"
|
||||
:disabled="!editable"
|
||||
type="number"
|
||||
min="0"
|
||||
name="rm-unit-price"
|
||||
class="form-control"
|
||||
@change="onUnitPriceRM()"
|
||||
@blur="$v.form.addLine.unit_price_rm.$touch()">
|
||||
<div class="invalid-feedback">
|
||||
Unit Price Required
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="form-group">
|
||||
<input id="total"
|
||||
v-model="$v.form.addLine.total.$model"
|
||||
type="number"
|
||||
min="0"
|
||||
name="subtotal"
|
||||
class="form-control"
|
||||
disabled>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button :disabled="!editable" class="btn btn-success" type="button" @click="onAddLine()">
|
||||
Add
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="(line, index) in form.formData.lines" :key="index">
|
||||
<td class="line-number text-center align-middle">
|
||||
{{ index + 1 }}
|
||||
</td>
|
||||
<td class="stock-code text-center align-middle">
|
||||
{{ line.stock_code }}
|
||||
</td>
|
||||
<td class="description align-middle">
|
||||
{{ line.description }}
|
||||
</td>
|
||||
<td class="quantity text-center align-middle">
|
||||
{{ line.quantity }}
|
||||
</td>
|
||||
<td class="unit-price-rmb text-center align-middle">
|
||||
{{ line.unit_price_rmb }}
|
||||
</td>
|
||||
<td class="unit-price-rm text-center align-middle">
|
||||
{{ line.unit_price_rm }}
|
||||
</td>
|
||||
<td class="line-subtotal text-center align-middle">
|
||||
{{ line.total }}
|
||||
</td>
|
||||
<td>
|
||||
<button :disabled="!editable" type="button" class="btn btn-danger" @click="onRemoveLine(index)">
|
||||
Remove
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="subtotal-line">
|
||||
<td colspan="5"/>
|
||||
<td class="subtotal-title text-center">
|
||||
Subtotal
|
||||
</td>
|
||||
<td class="subtotal text-center">
|
||||
{{ subtotal }}
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="tax > 0" class="gst-line">
|
||||
<td colspan="5"/>
|
||||
<td class="gst-title text-center">
|
||||
GST
|
||||
</td>
|
||||
<td class="gst-total text-center">
|
||||
{{ tax }}
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="total-line">
|
||||
<td colspan="5"/>
|
||||
<td class="total-title text-center">
|
||||
Total
|
||||
</td>
|
||||
<td class="total text-center">
|
||||
{{ total }}
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5"> </td>
|
||||
<td colspan="2">
|
||||
<button :disabled="!editable" class="btn btn-success btn-block" type="submit">
|
||||
Create PO
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</div> <!-- invoice-container -->
|
||||
<div v-if="role === 'admin'" class="admin-panel">
|
||||
<div v-if="statuses.length > 0" class="comments">
|
||||
<h5>Log</h5>
|
||||
<table class="table comment-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date Time</th>
|
||||
<th>Status</th>
|
||||
<th>Comment</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(comment, index) in statuses" :key="index">
|
||||
<td>{{ comment.created_at }}</td>
|
||||
<td>{{ comment.status }}</td>
|
||||
<td>{{ comment.comment }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<form @submit.prevent="onSubmitStatus">
|
||||
<h5>Admin Panel</h5>
|
||||
<div class="form-group">
|
||||
<label for="action">Action</label>
|
||||
<select id="action"
|
||||
v-model="$v.form.postStatus.status.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.postStatus.status.$invalid && $v.form.postStatus.status.$dirty,
|
||||
'is-valid': !$v.form.postStatus.status.$invalid && $v.form.postStatus.status.$dirty
|
||||
}"
|
||||
name="action"
|
||||
class="form-control">
|
||||
<option value="approve">Approve</option>
|
||||
<option value="request_change">Request Change</option>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
Action Required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="comment">Comment</label>
|
||||
<textarea id="comment"
|
||||
v-model="$v.form.postStatus.comment.$model"
|
||||
:class="{
|
||||
'is-invalid': $v.form.postStatus.comment.$invalid && $v.form.postStatus.comment.$dirty,
|
||||
'is-valid': !$v.form.postStatus.comment.$invalid && $v.form.postStatus.comment.$dirty
|
||||
}"
|
||||
name="comment"
|
||||
cols="30" rows="3" class="form-control" />
|
||||
<div class="invalid-feedback">
|
||||
Comment required if you are requesting change from customer.
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<style>
|
||||
input {
|
||||
min-width: 6em;
|
||||
}
|
||||
.container {
|
||||
margin-left: 10% !important;
|
||||
margin-right: 10% !important;
|
||||
}
|
||||
.el-main {
|
||||
padding-left: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
.title {
|
||||
margin-top: 1em;
|
||||
padding-left: 1.7em;
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
.buyer-detail {
|
||||
grid-area: buyer-detail;
|
||||
width: 100%;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
.card-body {
|
||||
display: flex !important;
|
||||
flex-direction: row !important;
|
||||
flex-wrap: wrap !important;
|
||||
justify-content: space-around !important;
|
||||
}
|
||||
.buyer-detail .form-group {
|
||||
width: 45%;
|
||||
}
|
||||
.card-title {
|
||||
width: 100%;
|
||||
}
|
||||
.conversion-rate {
|
||||
grid-area: conversion-rate;
|
||||
}
|
||||
.conversion-rate h5 {
|
||||
float: right;
|
||||
background-color: lightblue;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
.billing-detail-title {
|
||||
width: 100%;
|
||||
grid-area: billing-detail-title;
|
||||
}
|
||||
.billing-detail-lines {
|
||||
width: 100%;
|
||||
grid-area: billing-detail-lines;
|
||||
}
|
||||
.invoice-container {
|
||||
padding: 2em 3em;
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
'buyer-detail buyer-detail'
|
||||
'billing-detail-title conversion-rate'
|
||||
'billing-detail-lines billing-detail-lines';
|
||||
}
|
||||
.header-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.admin-panel {
|
||||
margin-left: 3em;
|
||||
margin-right: 3em;
|
||||
}
|
||||
.error {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import Vue from 'vue'
|
||||
import Vuelidate from 'vuelidate'
|
||||
import { required, numeric, decimal, requiredIf, maxLength } from 'vuelidate/lib/validators'
|
||||
import axios from 'axios'
|
||||
Vue.use(Vuelidate)
|
||||
|
||||
export default {
|
||||
name: 'NewComponent',
|
||||
props: {
|
||||
trackerConfig: {
|
||||
type: Object,
|
||||
default: function () {
|
||||
return {
|
||||
status: 5,
|
||||
term: null
|
||||
}
|
||||
}
|
||||
},
|
||||
booking_id: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
booking_details: {
|
||||
type: Object,
|
||||
default: function () {
|
||||
return {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null,
|
||||
china_bankslip_path: null,
|
||||
marking: null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data: function () {
|
||||
return {
|
||||
form: {
|
||||
formData: {
|
||||
buyer_company: '',
|
||||
address: '',
|
||||
contact_no: '',
|
||||
marking: this.booking_details.marking,
|
||||
gst_id: '',
|
||||
reg_no: '',
|
||||
lines: []
|
||||
},
|
||||
addLine: {
|
||||
order: null,
|
||||
description: null,
|
||||
quantity: null,
|
||||
unit_price_rmb: null,
|
||||
unit_price_rm: null,
|
||||
stock_code: null,
|
||||
total: null
|
||||
},
|
||||
postStatus: {
|
||||
status: null,
|
||||
comment: null
|
||||
}
|
||||
},
|
||||
rate: 0,
|
||||
service_charge: 0,
|
||||
amount: 0,
|
||||
invoice_total: 0,
|
||||
tax: 0,
|
||||
subtotal: 0,
|
||||
total: 0,
|
||||
role: null,
|
||||
currentStatus: null,
|
||||
statuses: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
editable: function () {
|
||||
// Not editable if created and not admin
|
||||
return this.role === 'admin' || this.currentStatus === null || this.currentStatus === 'request_change'
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
form: {
|
||||
formData: {
|
||||
buyer_company: {
|
||||
required
|
||||
},
|
||||
address: {
|
||||
required
|
||||
},
|
||||
contact_no: {
|
||||
required
|
||||
},
|
||||
marking: {
|
||||
required
|
||||
},
|
||||
reg_no: {
|
||||
required
|
||||
},
|
||||
gst_id: {
|
||||
|
||||
}
|
||||
},
|
||||
addLine: {
|
||||
stock_code: {
|
||||
required
|
||||
},
|
||||
description: {
|
||||
maxLength: maxLength(256)
|
||||
},
|
||||
quantity: {
|
||||
required,
|
||||
numeric
|
||||
},
|
||||
unit_price_rmb: {
|
||||
required,
|
||||
decimal
|
||||
},
|
||||
unit_price_rm: {
|
||||
required,
|
||||
decimal
|
||||
},
|
||||
total: {
|
||||
required,
|
||||
decimal
|
||||
}
|
||||
},
|
||||
postStatus: {
|
||||
status: {
|
||||
required
|
||||
},
|
||||
comment: {
|
||||
required: requiredIf(function () {
|
||||
return this.form.postStatus.status === 'request_change'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
booking_details: function () {
|
||||
const {
|
||||
marking,
|
||||
tax,
|
||||
service_charge,
|
||||
amount,
|
||||
rate
|
||||
} = this.booking_details
|
||||
|
||||
this.form.formData.marking = marking
|
||||
this.tax = tax
|
||||
this.service_charge = service_charge
|
||||
this.amount = amount
|
||||
this.rate = rate
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.getInvoice()
|
||||
this.getUser()
|
||||
},
|
||||
methods: {
|
||||
onAddLine: function () {
|
||||
if (this.$v.form.addLine.$invalid) {
|
||||
this.$v.form.addLine.$touch()
|
||||
return
|
||||
}
|
||||
const {
|
||||
order,
|
||||
description,
|
||||
quantity,
|
||||
stock_code,
|
||||
unit_price_rmb,
|
||||
unit_price_rm,
|
||||
total
|
||||
} = this.form.addLine
|
||||
const data = {
|
||||
order: order,
|
||||
description,
|
||||
quantity,
|
||||
stock_code,
|
||||
unit_price_rmb,
|
||||
unit_price_rm,
|
||||
total
|
||||
}
|
||||
|
||||
this.form.formData.lines.push(data)
|
||||
this.setTotal()
|
||||
this.clearAddLine()
|
||||
},
|
||||
onUnitPriceRMB: function () {
|
||||
this.form.addLine.unit_price_rm = (+this.form.addLine.unit_price_rmb * +this.rate).toFixed(2)
|
||||
this.form.addLine.total = (+this.form.addLine.unit_price_rm * +this.form.addLine.quantity).toFixed(2)
|
||||
},
|
||||
onUnitPriceRM: function () {
|
||||
this.form.addLine.unit_price_rmb = (this.form.addLine.unit_price_rm / this.rate).toFixed(2)
|
||||
this.form.addLine.total = (+this.form.addLine.unit_price_rm * +this.form.addLine.quantity).toFixed(2)
|
||||
},
|
||||
onRemoveLine: function (line) {
|
||||
console.log('line', line)
|
||||
this.form.formData.lines.splice(line, 1)
|
||||
this.setTotal()
|
||||
},
|
||||
setTotal: function () {
|
||||
if (this.form.formData.lines.length < 1) {
|
||||
this.subtotal = 0
|
||||
this.total = 0
|
||||
return
|
||||
}
|
||||
this.subtotal = parseFloat(this.form.formData.lines.map(line => line.total).reduce((a, b) => parseFloat(a) + parseFloat(b))).toFixed(2)
|
||||
this.total = parseFloat(+this.subtotal + (+this.subtotal * (+this.tax || 0) / 100)).toFixed(2)
|
||||
},
|
||||
clearAddLine: function () {
|
||||
this.form.addLine.order = null
|
||||
this.form.addLine.description = null
|
||||
this.form.addLine.quantity = null
|
||||
this.form.addLine.unit_price_rmb = null
|
||||
this.form.addLine.unit_price_rm = null
|
||||
this.form.addLine.stock_code = null
|
||||
this.form.addLine.total = null
|
||||
this.$v.form.addLine.$reset()
|
||||
},
|
||||
submitForm () {
|
||||
if (this.$v.form.formData.$invalid) {
|
||||
this.$v.form.formData.$touch()
|
||||
console.log('form not valid')
|
||||
return
|
||||
}
|
||||
|
||||
if (this.amount != this.total) {
|
||||
console.log('amount not matched')
|
||||
alert(`PO Total RM${this.total} Does Not Match Expected RM${this.amount}`)
|
||||
return
|
||||
}
|
||||
|
||||
// create order in line
|
||||
this.form.formData.lines
|
||||
.forEach((el, i) => {
|
||||
this.form.formData.lines[i].order = (i + 1)
|
||||
})
|
||||
|
||||
if (this.currentStatus) {
|
||||
console.log('edit invoice')
|
||||
this.editInvoice()
|
||||
} else {
|
||||
console.log('create invoice')
|
||||
this.createInvoice()
|
||||
}
|
||||
},
|
||||
createInvoice () {
|
||||
const url = '/api/invoice/' + this.booking_id
|
||||
axios
|
||||
.post(url, this.form.formData)
|
||||
.then(resp => {
|
||||
alert('PO Created. Pending Approval.')
|
||||
this.$router.push({ name: 'home' })
|
||||
})
|
||||
.catch(err => {
|
||||
alert(JSON.stringify(err.response.data.message))
|
||||
console.error(err.response.data.message)
|
||||
})
|
||||
},
|
||||
editInvoice () {
|
||||
const url = '/api/invoice/' + this.booking_id
|
||||
axios
|
||||
.put(url, this.form.formData)
|
||||
.then(resp => {
|
||||
alert(`PO have been edited${this.role === 'admin' ? ' by admin.' : '. Pending Approval'}`)
|
||||
this.$router.push({ name: 'home' })
|
||||
})
|
||||
.catch(err => {
|
||||
alert(JSON.stringify(err.response.data.message))
|
||||
console.error(err.response.data.message)
|
||||
})
|
||||
},
|
||||
getInvoice () {
|
||||
const url = '/api/invoice/' + this.booking_id
|
||||
axios
|
||||
.get(url)
|
||||
.then(resp => {
|
||||
this.form.formData.buyer_company = resp.data.buyer_company
|
||||
this.form.formData.contact_no = resp.data.contact_no
|
||||
this.form.formData.address = resp.data.address
|
||||
this.form.formData.reg_no = resp.data.reg_no
|
||||
|
||||
this.form.formData.lines = []
|
||||
this.statuses = []
|
||||
|
||||
resp.data.lines.forEach((el, i) => {
|
||||
this.form.formData.lines.push(el)
|
||||
})
|
||||
|
||||
resp.data.status.forEach((el, i) => {
|
||||
this.statuses.push(el)
|
||||
})
|
||||
|
||||
this.currentStatus = resp.data.status[resp.data.status.length - 1].status
|
||||
|
||||
this.setTotal()
|
||||
})
|
||||
},
|
||||
getUser () {
|
||||
const url = '/api/user'
|
||||
axios
|
||||
.get(url)
|
||||
.then(resp => {
|
||||
this.role = resp.data.role
|
||||
})
|
||||
},
|
||||
onSubmitStatus () {
|
||||
if (this.$v.form.postStatus.$invalid) {
|
||||
this.$v.form.postStatus.$touch()
|
||||
return
|
||||
}
|
||||
const url = '/api/invoice/' + this.booking_id + '/comment'
|
||||
axios
|
||||
.post(url, this.form.postStatus)
|
||||
.then(resp => {
|
||||
this.getInvoice()
|
||||
this.form.postStatus.status = null
|
||||
this.form.postStatus.comment = null
|
||||
this.$v.form.postStatus.$reset()
|
||||
alert('Status Updated')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -21,11 +21,11 @@
|
||||
</div>
|
||||
<el-row :gutter="12" type="flex">
|
||||
<el-col :span="12" align="center">
|
||||
<div v-for="po in booking_details.user_po_path" :key='po'>
|
||||
<a target="_blank" :href="getURL(po)">
|
||||
<img v-if="isImage(po)" v-bind:src="po" class="image" style="max-width: 100%">
|
||||
<div v-for="po in booking_details.user_po_path" :key="po">
|
||||
<a :href="getURL(po)" target="_blank">
|
||||
<img v-if="isImage(po)" :src="po" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -41,11 +41,11 @@
|
||||
</div>
|
||||
<el-row :gutter="12" type="flex">
|
||||
<el-col :span="12" align="center">
|
||||
<div v-for="cn_bankslip in booking_details.china_bankslip_path" :key='cn_bankslip'>
|
||||
<a target="_blank" :href="getURL(cn_bankslip)">
|
||||
<img v-if="isImage(cn_bankslip)" v-bind:src="cn_bankslip" class="image" style="max-width: 100%">
|
||||
<div v-for="cn_bankslip in booking_details.china_bankslip_path" :key="cn_bankslip">
|
||||
<a :href="getURL(cn_bankslip)" target="_blank">
|
||||
<img v-if="isImage(cn_bankslip)" :src="cn_bankslip" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
@@ -54,21 +54,37 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>Invoice</span>
|
||||
<!-- <el-button style="float: right; padding: 3px 0" type="text">Operation button</el-button> -->
|
||||
<div v-if="booking_details.invoice_path[0] !== '/storage/'">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>Invoice</span>
|
||||
<!-- <el-button style="float: right; padding: 3px 0" type="text">Operation button</el-button> -->
|
||||
</div>
|
||||
<el-row :gutter="12" type="flex">
|
||||
<el-col :span="12" align="center">
|
||||
<div v-for="invoice in booking_details.invoice_path" :key="invoice">
|
||||
<a :href="getURL(invoice)" target="_blank">
|
||||
<img v-if="isImage(invoice)" :src="invoice" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div v-else>
|
||||
<button class="btn btn-success" type="button" @click="onDownloadPO">
|
||||
Download PO
|
||||
</button>
|
||||
<button class="btn btn-primary" type="button" @click="onDownloadDO">
|
||||
Download DO
|
||||
</button>
|
||||
<button class="btn btn-info" type="button" @click="onDownloadInvoice">
|
||||
Download Invoice
|
||||
</button>
|
||||
<button class="btn btn-warning" type="button" @click="onDownloadSupplier">
|
||||
Download Supplier PO
|
||||
</button>
|
||||
</div>
|
||||
<el-row :gutter="12" type="flex">
|
||||
<el-col :span="12" align="center">
|
||||
<div v-for="invoice in booking_details.invoice_path" :key='invoice'>
|
||||
<a target="_blank" :href="getURL(invoice)">
|
||||
<img v-if="isImage(invoice)" v-bind:src="invoice" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -143,7 +159,7 @@
|
||||
<div class="cell">Beneficiary Account : </div>
|
||||
</td>
|
||||
<td class="el-table_2_column_10 is-left ">
|
||||
<div class="cell">{{booking_details.account_name}}</div>
|
||||
<div class="cell">{{ booking_details.account_name }}</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="el-table__row">
|
||||
@@ -151,7 +167,7 @@
|
||||
<div class="cell">Beneficiary Account Number : </div>
|
||||
</td>
|
||||
<td class="el-table_2_column_10 is-left ">
|
||||
<div class="cell">{{booking_details.account_num}}</div>
|
||||
<div class="cell">{{ booking_details.account_num }}</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!---->
|
||||
@@ -164,14 +180,14 @@
|
||||
<!---->
|
||||
<!---->
|
||||
<!---->
|
||||
<div class="el-table__column-resize-proxy" style="display: none;"></div>
|
||||
<div class="el-table__column-resize-proxy" style="display: none;" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="el-col el-col-12" style="padding-left: 6px; padding-right: 6px;">
|
||||
<div class="el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition" align="center">
|
||||
<div class="hidden-columns">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div />
|
||||
<div />
|
||||
</div>
|
||||
<!---->
|
||||
<div class="el-table__body-wrapper is-scrolling-none">
|
||||
@@ -207,7 +223,7 @@
|
||||
</tr>
|
||||
<tr class="el-table__row">
|
||||
<td class="el-table_3_column_11 is-right ">
|
||||
<div class="cell"></div>
|
||||
<div class="cell" />
|
||||
</td>
|
||||
<td class="el-table_3_column_12 is-left ">
|
||||
<div class="cell">MYR {{ booking_details.bia }}</div>
|
||||
@@ -223,7 +239,7 @@
|
||||
</tr> -->
|
||||
<tr class="el-table__row">
|
||||
<td class="el-table_3_column_11 is-right ">
|
||||
<div class="cell"></div>
|
||||
<div class="cell" />
|
||||
</td>
|
||||
<td class="el-table_3_column_12 is-left ">
|
||||
<div class="cell">
|
||||
@@ -233,10 +249,10 @@
|
||||
</tr>
|
||||
<tr class="el-table__row">
|
||||
<td class="el-table_3_column_11 is-right ">
|
||||
<div class="cell"></div>
|
||||
<div class="cell" />
|
||||
</td>
|
||||
<td class="el-table_3_column_12 is-left ">
|
||||
<div class="cell"></div>
|
||||
<div class="cell" />
|
||||
</td>
|
||||
</tr>
|
||||
<!---->
|
||||
@@ -249,7 +265,7 @@
|
||||
<!---->
|
||||
<!---->
|
||||
<!---->
|
||||
<div class="el-table__column-resize-proxy" style="display: none;"></div>
|
||||
<div class="el-table__column-resize-proxy" style="display: none;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -270,7 +286,7 @@
|
||||
</el-card>
|
||||
</el-row>
|
||||
<br>
|
||||
<el-row justify="center" align="center">
|
||||
<el-row justify="center" align="center">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>Supplier Report</span>
|
||||
@@ -278,9 +294,9 @@
|
||||
</div>
|
||||
<el-row :gutter="12" style="text-align:center">
|
||||
<el-col :span="20" style="text-align:center">
|
||||
<canvas id="myCanvas" ref="myCanvas" v-insert-message="supplier_booking"></canvas>
|
||||
<canvas v-insert-message="supplier_booking" id="myCanvas" ref="myCanvas"/>
|
||||
<br>
|
||||
<el-button @click="downloadReport()" type="text">Download Now</el-button>
|
||||
<el-button type="text" @click="downloadReport()">Download Now</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
@@ -292,8 +308,8 @@
|
||||
</div>
|
||||
<el-row :gutter="12">
|
||||
<el-col :span="22" style="text-align:center">
|
||||
<a target="_blank" :href="getURL(booking_details.user_bankslip_path)">
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" v-bind:src="booking_details.user_bankslip_path" class="image" style="max-width: 100%">
|
||||
<a :href="getURL(booking_details.user_bankslip_path)" target="_blank" >
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" :src="booking_details.user_bankslip_path" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</el-col>
|
||||
@@ -309,8 +325,8 @@
|
||||
</div>
|
||||
<el-row :gutter="12">
|
||||
<el-col :span="22" style="text-align:center">
|
||||
<a target="_blank" :href="getURL(booking_details.user_bankslip_path)">
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" v-bind:src="booking_details.user_bankslip_path" class="image">
|
||||
<a :href="getURL(booking_details.user_bankslip_path)" target="_blank">
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" :src="booking_details.user_bankslip_path" class="image">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</el-col>
|
||||
@@ -336,257 +352,324 @@
|
||||
.image:hover {
|
||||
box-shadow: 0 0 2px 1px rgba(0, 140, 186, 0.5);
|
||||
}
|
||||
.btn-warning {
|
||||
margin-top: 0.4em !important;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import ProgressTrack from '~/components/AdminProgressTrack'
|
||||
import X2ProgressTrack from '~/components/X2AdminProgressTrack'
|
||||
import axios from 'axios'
|
||||
import ProgressTrack from '~/components/AdminProgressTrack'
|
||||
import X2ProgressTrack from '~/components/X2AdminProgressTrack'
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
'progress-track': ProgressTrack,
|
||||
'x2-progress-track': X2ProgressTrack
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
trackerConfig: {
|
||||
status: 8,
|
||||
term: null
|
||||
},
|
||||
supplier_booking:{},
|
||||
loading_btn: false,
|
||||
booking_details: {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null,
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Please wait..',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
|
||||
axios
|
||||
.get('/api/admin/booking/' + this.$route.params.id + '/details')
|
||||
.then((response) => {
|
||||
this.booking_details = response.data
|
||||
this.trackerConfig.term = response.data.term;
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
loading.close()
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
})
|
||||
axios.get('/api/supplier-booking/' + this.$route.params.id)
|
||||
.then((response) => {
|
||||
this.supplier_booking = response.data
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
loading.close()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getExtension(path){
|
||||
let index = path.lastIndexOf('.') + 1;
|
||||
return path.slice(index);
|
||||
export default {
|
||||
components: {
|
||||
'progress-track': ProgressTrack,
|
||||
'x2-progress-track': X2ProgressTrack
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
trackerConfig: {
|
||||
status: 8,
|
||||
term: null
|
||||
},
|
||||
isImage(path){
|
||||
var ext = this.getExtension(path);
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png';
|
||||
},
|
||||
getURL(path) {
|
||||
var getUrl = window.location;
|
||||
var baseUrl = getUrl.protocol + "//" + getUrl.host;
|
||||
return baseUrl + path;
|
||||
}
|
||||
},
|
||||
directives: {
|
||||
insertMessage: function (canvasElement, binding) {
|
||||
setTimeout(function (canvasElement, binding) {
|
||||
////////////////// variable //////////////////////////
|
||||
var canvasWidth = 450;
|
||||
var rowHeight = [20, 40, 60, 80, 100, 120, 140, 170, 190, 210, 230, 250, 270, 290, 310, 330, 350, 390,
|
||||
410,
|
||||
470, 490, 510, 610, 630
|
||||
]
|
||||
const canvasHeight = rowHeight[rowHeight.length - 1];
|
||||
|
||||
var column1X = 220;
|
||||
var column2X = 320;
|
||||
var column3X = 420;
|
||||
|
||||
///////////////////Canvast Init////////////////////
|
||||
var canvas = document.getElementById("myCanvas");
|
||||
canvas.width = canvasWidth;
|
||||
canvas.height = canvasHeight;
|
||||
// Get canvas context
|
||||
var ctx = canvasElement.getContext("2d");
|
||||
// Clear the canvas
|
||||
ctx.clearRect(0, 0, 300, 150);
|
||||
|
||||
ctx.fillStyle = "#FFFFFF";
|
||||
ctx.fillRect(0, 0, canvasWidth, rowHeight[0]);
|
||||
for (var i = 1; i < rowHeight.length; i++) {
|
||||
if (i % 2 == 1)
|
||||
ctx.fillStyle = "#A9D08E";
|
||||
else
|
||||
ctx.fillStyle = "#FFFFFF";
|
||||
ctx.fillRect(0, rowHeight[i - 1], canvasWidth, rowHeight[i]);
|
||||
}
|
||||
///////////// fillup with text////////////////
|
||||
//// config canvas
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
ctx.textAlign = "right";
|
||||
//// Row 1
|
||||
ctx.fillText("Ref No. :", column1X, rowHeight[1] - 5);
|
||||
ctx.fillText(binding.value.booking_id, column3X, rowHeight[1] - 5);
|
||||
//// Row 2
|
||||
ctx.fillText("Date :", column1X, rowHeight[2] - 5);
|
||||
ctx.fillText(binding.value.date, column3X, rowHeight[2] - 5);
|
||||
//// Row 3
|
||||
ctx.fillText("Marking :", column1X, rowHeight[3] - 5);
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText(binding.value.marking, column3X, rowHeight[3] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 4
|
||||
ctx.fillText("Payment For(Order No.) :", column1X, rowHeight[4] - 5);
|
||||
ctx.fillText(binding.value.order_no, column3X, rowHeight[4] - 5);
|
||||
//// Row 4
|
||||
ctx.fillText("Payment For :", column1X, rowHeight[5] - 5);
|
||||
ctx.fillText(binding.value.payment_for, column3X, rowHeight[5] - 5);
|
||||
//// Row 5
|
||||
ctx.fillText("Payment Method :", column1X, rowHeight[6] - 5);
|
||||
ctx.fillText(binding.value.payment_method, column3X, rowHeight[6] - 5);
|
||||
//// Row 6
|
||||
ctx.fillText("Remark :", column1X, rowHeight[7] - 10);
|
||||
//// Row 7
|
||||
// Empty
|
||||
//// Row 8
|
||||
ctx.fillText("MYR/RM :", column1X, rowHeight[9] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[9] - 5);
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText(binding.value.amount_in_myr, column3X, rowHeight[9] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 8
|
||||
ctx.fillText("* RATE :", column1X, rowHeight[10] - 5);
|
||||
ctx.fillText(binding.value.rate, column3X, rowHeight[10] - 5);
|
||||
//// Row 9
|
||||
ctx.fillText("REBATE :", column1X, rowHeight[11] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[11] - 5);
|
||||
ctx.font = "14px Arial";
|
||||
ctx.fillText(binding.value.rebate, column3X, rowHeight[11] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 10
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("CNY", column2X, rowHeight[12] - 5);
|
||||
ctx.fillText(binding.value.amountInRMB, column3X, rowHeight[12] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//line
|
||||
ctx.beginPath();
|
||||
ctx.lineWidth = 1;
|
||||
ctx.moveTo(column1X + 30, rowHeight[11]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[11]);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.lineWidth = 2;
|
||||
ctx.moveTo(column1X + 30, rowHeight[12]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[12]);
|
||||
ctx.stroke();
|
||||
//// Row 11
|
||||
ctx.fillText("MYR/RM :", column1X, rowHeight[14] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[14] - 5);
|
||||
ctx.fillText(binding.value.amount_in_myr, column3X, rowHeight[14] - 5);
|
||||
//// Row 12
|
||||
// ctx.fillText("Billing(1.0%) :", column1X, rowHeight[15] - 5);
|
||||
// ctx.fillText("MYR", column2X, rowHeight[15] - 5);
|
||||
// ctx.fillText(binding.value.billing_amount, column3X, rowHeight[15] - 5);
|
||||
//// Row 13
|
||||
|
||||
ctx.fillText("+ TAX " + (Math.round((binding.value.tax_rate * 100 - 100) * 100) / 100) + "% :",
|
||||
column1X, rowHeight[16] - 5); // TODO : Change to percentage
|
||||
ctx.fillText("MYR", column2X, rowHeight[16] - 5);
|
||||
ctx.fillText(binding.value.salestax_amount, column3X, rowHeight[16] - 5);
|
||||
// //// Row 14
|
||||
// ctx.fillText("+ GST 6% :", column1X, rowHeight[17] - 15);
|
||||
// ctx.fillText("MYR", column2X, rowHeight[17] - 15);
|
||||
// ctx.fillText("289.84", column3X, rowHeight[17] - 15);
|
||||
//// Row 15
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("Bank In Amount :", column1X, rowHeight[18] - 5);
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText("MYR", column2X, rowHeight[18] - 5);
|
||||
ctx.fillText(binding.value.amount_after_tax, column3X, rowHeight[18] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//line
|
||||
ctx.lineWidth = 1;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[17]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[17]);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[18] + 1);
|
||||
ctx.lineTo(column3X + 20, rowHeight[18] + 1);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[18] - 2);
|
||||
ctx.lineTo(column3X + 20, rowHeight[18] - 2);
|
||||
ctx.stroke();
|
||||
//// Row 16
|
||||
// ctx.fillText("Rebate :", column1X, rowHeight[19] - 25);
|
||||
// ctx.fillText("CNY", column2X, rowHeight[19] - 25);
|
||||
// ctx.fillText("224.68", column3X, rowHeight[19] - 25);
|
||||
//// Row 16
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("Bank In to Account Below :", column1X, rowHeight[20] - 5);
|
||||
ctx.font = "bold italic 15px Arial";
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText("CNY", column2X, rowHeight[20] - 5);
|
||||
ctx.fillText(binding.value.amountInRMB, column3X - 20, rowHeight[20] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 17
|
||||
//// Row 18
|
||||
//// Row 19
|
||||
// var img = new Image();
|
||||
// img.src = "/banklogo.png";
|
||||
// img.crossOrigin = "anonymous";
|
||||
// var maxwidth = 70;
|
||||
// var ratio = maxwidth / img.width;
|
||||
// var offset = ((rowHeight[22] - rowHeight[21]) / 2) - (img.height * ratio / 2);
|
||||
// var y = rowHeight[21] + offset; // to make it always center
|
||||
|
||||
// img.onload=function(){
|
||||
// ctx.drawImage(img, 50, 530, 80, 50);
|
||||
// };
|
||||
|
||||
// text
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.textAlign = "center";
|
||||
ctx.fillText("China beneficiary Account", column2X - 40, rowHeight[22] - 80);
|
||||
ctx.fillText("户名 : " + binding.value.acc_name, column2X - 40, rowHeight[22] - 60);
|
||||
ctx.fillText(binding.value.acc_no, column2X - 40, rowHeight[22] - 40);
|
||||
ctx.fillText(binding.value.bank_name, column2X - 40, rowHeight[22] - 20);
|
||||
ctx.fillText(binding.value.bank_branch, column2X - 40, rowHeight[22] - 2);
|
||||
|
||||
ctx.font = "13px Arial";
|
||||
}, 1000, canvasElement, binding);
|
||||
|
||||
supplier_booking: {},
|
||||
loading_btn: false,
|
||||
booking_details: {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeCreate () {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Please wait..',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
|
||||
axios
|
||||
.get('/api/admin/booking/' + this.$route.params.id + '/details')
|
||||
.then((response) => {
|
||||
this.booking_details = response.data
|
||||
this.trackerConfig.term = response.data.term
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
loading.close()
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
})
|
||||
axios.get('/api/supplier-booking/' + this.$route.params.id)
|
||||
.then((response) => {
|
||||
this.supplier_booking = response.data
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
loading.close()
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getExtension (path) {
|
||||
let index = path.lastIndexOf('.') + 1
|
||||
return path.slice(index)
|
||||
},
|
||||
isImage (path) {
|
||||
var ext = this.getExtension(path)
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'
|
||||
},
|
||||
getURL (path) {
|
||||
var getUrl = window.location
|
||||
var baseUrl = getUrl.protocol + '//' + getUrl.host
|
||||
return baseUrl + path
|
||||
},
|
||||
onDownloadPO () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/po'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'po.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
},
|
||||
onDownloadDO () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/do'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'do.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
},
|
||||
onDownloadSupplier () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/supplierdo'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'supplier-do.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
},
|
||||
onDownloadInvoice () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/invoice'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'invoice.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
}
|
||||
},
|
||||
directives: {
|
||||
insertMessage: function (canvasElement, binding) {
|
||||
setTimeout(function (canvasElement, binding) {
|
||||
// //////////////// variable //////////////////////////
|
||||
var canvasWidth = 450;
|
||||
var rowHeight = [20, 40, 60, 80, 100, 120, 140, 170, 190, 210, 230, 250, 270, 290, 310, 330, 350, 390,
|
||||
410,
|
||||
470, 490, 510, 610, 630
|
||||
]
|
||||
const canvasHeight = rowHeight[rowHeight.length - 1];
|
||||
|
||||
var column1X = 220;
|
||||
var column2X = 320;
|
||||
var column3X = 420;
|
||||
|
||||
// /////////////////Canvast Init////////////////////
|
||||
var canvas = document.getElementById("myCanvas");
|
||||
canvas.width = canvasWidth;
|
||||
canvas.height = canvasHeight;
|
||||
// Get canvas context
|
||||
var ctx = canvasElement.getContext("2d");
|
||||
// Clear the canvas
|
||||
ctx.clearRect(0, 0, 300, 150);
|
||||
|
||||
ctx.fillStyle = "#FFFFFF";
|
||||
ctx.fillRect(0, 0, canvasWidth, rowHeight[0]);
|
||||
for (var i = 1; i < rowHeight.length; i++) {
|
||||
if (i % 2 == 1)
|
||||
ctx.fillStyle = "#A9D08E";
|
||||
else
|
||||
ctx.fillStyle = "#FFFFFF";
|
||||
ctx.fillRect(0, rowHeight[i - 1], canvasWidth, rowHeight[i]);
|
||||
}
|
||||
///////////// fillup with text////////////////
|
||||
//// config canvas
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
ctx.textAlign = "right";
|
||||
//// Row 1
|
||||
ctx.fillText("Ref No. :", column1X, rowHeight[1] - 5);
|
||||
ctx.fillText(binding.value.booking_id, column3X, rowHeight[1] - 5);
|
||||
//// Row 2
|
||||
ctx.fillText("Date :", column1X, rowHeight[2] - 5);
|
||||
ctx.fillText(binding.value.date, column3X, rowHeight[2] - 5);
|
||||
//// Row 3
|
||||
ctx.fillText("Marking :", column1X, rowHeight[3] - 5);
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText(binding.value.marking, column3X, rowHeight[3] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 4
|
||||
ctx.fillText("Payment For(Order No.) :", column1X, rowHeight[4] - 5);
|
||||
ctx.fillText(binding.value.order_no, column3X, rowHeight[4] - 5);
|
||||
//// Row 4
|
||||
ctx.fillText("Payment For :", column1X, rowHeight[5] - 5);
|
||||
ctx.fillText(binding.value.payment_for, column3X, rowHeight[5] - 5);
|
||||
//// Row 5
|
||||
ctx.fillText("Payment Method :", column1X, rowHeight[6] - 5);
|
||||
ctx.fillText(binding.value.payment_method, column3X, rowHeight[6] - 5);
|
||||
//// Row 6
|
||||
ctx.fillText("Remark :", column1X, rowHeight[7] - 10);
|
||||
//// Row 7
|
||||
// Empty
|
||||
//// Row 8
|
||||
ctx.fillText("MYR/RM :", column1X, rowHeight[9] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[9] - 5);
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText(binding.value.amount_in_myr, column3X, rowHeight[9] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 8
|
||||
ctx.fillText("* RATE :", column1X, rowHeight[10] - 5);
|
||||
ctx.fillText(binding.value.rate, column3X, rowHeight[10] - 5);
|
||||
//// Row 9
|
||||
ctx.fillText("REBATE :", column1X, rowHeight[11] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[11] - 5);
|
||||
ctx.font = "14px Arial";
|
||||
ctx.fillText(binding.value.rebate, column3X, rowHeight[11] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 10
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("CNY", column2X, rowHeight[12] - 5);
|
||||
ctx.fillText(binding.value.amountInRMB, column3X, rowHeight[12] - 5);
|
||||
ctx.font = "13px Arial";
|
||||
//line
|
||||
ctx.beginPath();
|
||||
ctx.lineWidth = 1;
|
||||
ctx.moveTo(column1X + 30, rowHeight[11]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[11]);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.lineWidth = 2;
|
||||
ctx.moveTo(column1X + 30, rowHeight[12]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[12]);
|
||||
ctx.stroke();
|
||||
//// Row 11
|
||||
ctx.fillText("MYR/RM :", column1X, rowHeight[14] - 5);
|
||||
ctx.fillText("MYR", column2X, rowHeight[14] - 5);
|
||||
ctx.fillText(binding.value.amount_in_myr, column3X, rowHeight[14] - 5);
|
||||
//// Row 12
|
||||
// ctx.fillText("Billing(1.0%) :", column1X, rowHeight[15] - 5);
|
||||
// ctx.fillText("MYR", column2X, rowHeight[15] - 5);
|
||||
// ctx.fillText(binding.value.billing_amount, column3X, rowHeight[15] - 5);
|
||||
//// Row 13
|
||||
|
||||
ctx.fillText("+ TAX " + (Math.round((binding.value.tax_rate * 100 - 100) * 100) / 100) + "% :",
|
||||
column1X, rowHeight[16] - 5); // TODO : Change to percentage
|
||||
ctx.fillText("MYR", column2X, rowHeight[16] - 5);
|
||||
ctx.fillText(binding.value.salestax_amount, column3X, rowHeight[16] - 5);
|
||||
// //// Row 14
|
||||
// ctx.fillText("+ GST 6% :", column1X, rowHeight[17] - 15);
|
||||
// ctx.fillText("MYR", column2X, rowHeight[17] - 15);
|
||||
// ctx.fillText("289.84", column3X, rowHeight[17] - 15);
|
||||
//// Row 15
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("Bank In Amount :", column1X, rowHeight[18] - 5);
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText("MYR", column2X, rowHeight[18] - 5);
|
||||
ctx.fillText(binding.value.amount_after_tax, column3X, rowHeight[18] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//line
|
||||
ctx.lineWidth = 1;
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[17]);
|
||||
ctx.lineTo(column3X + 20, rowHeight[17]);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[18] + 1);
|
||||
ctx.lineTo(column3X + 20, rowHeight[18] + 1);
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(column1X + 30, rowHeight[18] - 2);
|
||||
ctx.lineTo(column3X + 20, rowHeight[18] - 2);
|
||||
ctx.stroke();
|
||||
//// Row 16
|
||||
// ctx.fillText("Rebate :", column1X, rowHeight[19] - 25);
|
||||
// ctx.fillText("CNY", column2X, rowHeight[19] - 25);
|
||||
// ctx.fillText("224.68", column3X, rowHeight[19] - 25);
|
||||
//// Row 16
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.fillText("Bank In to Account Below :", column1X, rowHeight[20] - 5);
|
||||
ctx.font = "bold italic 15px Arial";
|
||||
ctx.fillStyle = "#0070D5";
|
||||
ctx.fillText("CNY", column2X, rowHeight[20] - 5);
|
||||
ctx.fillText(binding.value.amountInRMB, column3X - 20, rowHeight[20] - 5);
|
||||
ctx.fillStyle = "#000000";
|
||||
ctx.font = "13px Arial";
|
||||
//// Row 17
|
||||
//// Row 18
|
||||
//// Row 19
|
||||
// var img = new Image();
|
||||
// img.src = "/banklogo.png";
|
||||
// img.crossOrigin = "anonymous";
|
||||
// var maxwidth = 70;
|
||||
// var ratio = maxwidth / img.width;
|
||||
// var offset = ((rowHeight[22] - rowHeight[21]) / 2) - (img.height * ratio / 2);
|
||||
// var y = rowHeight[21] + offset; // to make it always center
|
||||
|
||||
// img.onload=function(){
|
||||
// ctx.drawImage(img, 50, 530, 80, 50);
|
||||
// };
|
||||
|
||||
// text
|
||||
ctx.font = "bold 14px Arial";
|
||||
ctx.textAlign = "center";
|
||||
ctx.fillText("China beneficiary Account", column2X - 40, rowHeight[22] - 80);
|
||||
ctx.fillText("户名 : " + binding.value.acc_name, column2X - 40, rowHeight[22] - 60);
|
||||
ctx.fillText(binding.value.acc_no, column2X - 40, rowHeight[22] - 40);
|
||||
ctx.fillText(binding.value.bank_name, column2X - 40, rowHeight[22] - 20);
|
||||
ctx.fillText(binding.value.bank_branch, column2X - 40, rowHeight[22] - 2);
|
||||
|
||||
ctx.font = "13px Arial";
|
||||
}, 1000, canvasElement, binding);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,12 +11,12 @@
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">Purchase Order</div>
|
||||
<div class="row" v-for="po in booking_details.user_po_path" :key='po'>
|
||||
<div v-for="po in booking_details.user_po_path" :key="po" class="row">
|
||||
<div class="col">
|
||||
<a target="_blank" :href="getURL(po)">
|
||||
<img v-if="isImage(po)" v-bind:src="po" class="image" style="max-width: 100%">
|
||||
<a :href="getURL(po)" target="_blank">
|
||||
<img v-if="isImage(po)" :src="po" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -25,36 +25,49 @@
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">China Bank Slip</div>
|
||||
<div class="row" v-for="cn_bankslip in booking_details.china_bankslip_path" :key='cn_bankslip'>
|
||||
<div v-for="cn_bankslip in booking_details.china_bankslip_path" :key="cn_bankslip" class="row" >
|
||||
<div class="col">
|
||||
<a target="_blank" :href="getURL(cn_bankslip)">
|
||||
<img v-if="isImage(cn_bankslip)" v-bind:src="cn_bankslip" class="image" style="max-width: 100%">
|
||||
<a :href="getURL(cn_bankslip)" target="_blank">
|
||||
<img v-if="isImage(cn_bankslip)" :src="cn_bankslip" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div v-if="booking_details.invoice_path[0] !== '/storage/'" class="card" >
|
||||
<div class="card-header">Invoice</div>
|
||||
<div class="row" v-for="invoice in booking_details.invoice_path" :key='invoice'>
|
||||
<div class="col">
|
||||
<a target="_blank" :href="getURL(invoice)">
|
||||
<img v-if="isImage(invoice)" v-bind:src="invoice" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br/>
|
||||
</a>
|
||||
<div >
|
||||
<div v-for="invoice in booking_details.invoice_path" :key="invoice" class="row" >
|
||||
<div class="col">
|
||||
<a :href="getURL(invoice)" target="_blank">
|
||||
<img v-if="isImage(invoice)" :src="invoice" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
<br>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<button class="btn btn-success" type="button" @click="onDownloadPO">
|
||||
Download PO
|
||||
</button>
|
||||
<button class="btn btn-primary" type="button" @click="onDownloadDO">
|
||||
Download DO
|
||||
</button>
|
||||
<button class="btn btn-info" type="button" @click="onDownloadInvoice">
|
||||
Download Invoice
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- order details -->
|
||||
<div class="card">
|
||||
<div class="card-header">Order Details</div>
|
||||
<div class="card-body">
|
||||
<div class="card-header">Order Details</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<table class="table table-striped">
|
||||
@@ -65,11 +78,11 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Date :</td>
|
||||
<td>{{ booking_details.created_at }}</td>
|
||||
<td>{{ booking_details.created_at }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Customer Marking :</td>
|
||||
<td>{{ booking_details.marking }}</td>
|
||||
<td>{{ booking_details.marking }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Term: </td>
|
||||
@@ -87,14 +100,14 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>+ Service Charge :</td>
|
||||
<td>CNY {{ booking_details.service_charge }}</td>
|
||||
<td>CNY {{ booking_details.service_charge }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RATE :</td>
|
||||
<td>{{ booking_details.rate }}</td>
|
||||
<td>{{ booking_details.rate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td/>
|
||||
<td><b>MYR {{ booking_details.bia }}</b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -107,10 +120,10 @@
|
||||
<div class="card-header">Order Bankin Slip</div>
|
||||
<div class="row">
|
||||
<div class="card-body">
|
||||
<a target="_blank" :href="getURL(booking_details.user_bankslip_path)">
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" v-bind:src="booking_details.user_bankslip_path" class="image" style="max-width: 100%">
|
||||
<a :href="getURL(booking_details.user_bankslip_path)" target="_blank" >
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" :src="booking_details.user_bankslip_path" class="image" style="max-width: 100%">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -142,13 +155,13 @@
|
||||
margin-bottom: 3%;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.table {
|
||||
font-size: 3.5vmin;
|
||||
}
|
||||
h1 {
|
||||
.table {
|
||||
font-size: 3.5vmin;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import ProgressTrack from '~/components/ProgressTrack'
|
||||
@@ -162,17 +175,17 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
trackerConfig :{
|
||||
status: 7,
|
||||
term: null,
|
||||
trackerConfig: {
|
||||
status: 7,
|
||||
term: null
|
||||
},
|
||||
loading_btn: false,
|
||||
booking_details:{
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null,
|
||||
}
|
||||
booking_details: {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeCreate () {
|
||||
@@ -188,8 +201,7 @@ export default {
|
||||
.then((response) => {
|
||||
this.booking_details = response.data
|
||||
this.trackerConfig.term = response.data.term
|
||||
loading.close();
|
||||
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
loading.close()
|
||||
@@ -199,18 +211,66 @@ export default {
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getExtension(path){
|
||||
let index = path.lastIndexOf('.') + 1;
|
||||
return path.slice(index);
|
||||
getExtension (path) {
|
||||
let index = path.lastIndexOf('.') + 1
|
||||
return path.slice(index)
|
||||
},
|
||||
isImage(path){
|
||||
var ext = this.getExtension(path);
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png';
|
||||
isImage (path) {
|
||||
var ext = this.getExtension(path)
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'
|
||||
},
|
||||
getURL(path){
|
||||
var getUrl = window.location;
|
||||
var baseUrl = getUrl.protocol + "//" + getUrl.host;
|
||||
return baseUrl + path;
|
||||
getURL (path) {
|
||||
var getUrl = window.location
|
||||
var baseUrl = getUrl.protocol + '//' + getUrl.host
|
||||
return baseUrl + path
|
||||
},
|
||||
onDownloadPO () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/po'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'po.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
},
|
||||
onDownloadDO () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/do'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'do.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
},
|
||||
onDownloadInvoice () {
|
||||
const url = '/api/invoice/' + this.booking_details.id + '/invoice'
|
||||
axios({
|
||||
url: url,
|
||||
method: 'GET',
|
||||
responseType: 'blob' // important
|
||||
}).then(resp => {
|
||||
const url = window.URL.createObjectURL(new Blob([resp.data]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', 'invoice.pdf')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
})
|
||||
.catch(err => console.error(JSON.stringify(err)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,124 +2,126 @@
|
||||
<el-main>
|
||||
<x2-progress-track v-if="(trackerConfig.term == 'x2_cash' || trackerConfig.term == 'x2_cheque' || trackerConfig.term == 'x2_ba')" v-model="trackerConfig" />
|
||||
<progress-track v-else v-model="trackerConfig" />
|
||||
<h1>Transfer Completed</h1>
|
||||
<h2> Please upload your purchase order </h2>
|
||||
<!-- upload card -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">Upload PO
|
||||
<a href="/CIEF-X-Plan-PO-Format-15.0.xlsm" target="_blank">(Download Po Format)</a>
|
||||
</div>
|
||||
<!-- upload image -->
|
||||
<div class="card-body">
|
||||
|
||||
<el-upload :action="'/api/booking/' + booking_id + '/upload-po'" :auto-upload="false" :on-change="beforeFileUpload" :on-exceed="handleExceed" :on-preview="handlePreview" :on-remove="handleRemove"
|
||||
:on-error="uploadError" class="upload-demo uploadAreaOne" accept=".jpeg, .jpg, .png, .bmp, .doc, .docx, .xls, .xlsx, .pdf"
|
||||
drag multiple>
|
||||
<i class="el-icon-upload" />
|
||||
<div class="el-upload__text">Drop file here or
|
||||
<em>click to upload</em>
|
||||
</div>
|
||||
<div slot="tip" class="el-upload__tip">bmp/jpeg/jpg/png/pdf/xls/xlxs/doc/docx files with a size less than 3MB</div>
|
||||
</el-upload>
|
||||
<el-upload class="upload-demo uploadAreaTwo" :action="'/api/booking/' + booking_id + '/upload-po'" :on-preview="handlePreview"
|
||||
:on-remove="handleRemove" :before-remove="beforeRemove" multiple :file-list="fileList">
|
||||
<el-button size="small" type="primary">Click to upload</el-button>
|
||||
<div slot="tip" class="el-upload__tip">jpg/png files with a size less than 500kb</div>
|
||||
</el-upload>
|
||||
|
||||
<div class="bottom clearfix" style="text-align:right;">
|
||||
<el-button :loading="loading_btn" type="primary" @click="uploadPo">Submit</el-button>
|
||||
<div v-if="isLegacy" id="legacy-invoice">
|
||||
<h1>Transfer Completed</h1>
|
||||
<h2> Please upload your purchase order </h2>
|
||||
<!-- upload card -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">Upload PO
|
||||
<a href="/CIEF-X-Plan-PO-Format-15.0.xlsm" target="_blank">(Download Po Format)</a>
|
||||
</div>
|
||||
<!-- upload image -->
|
||||
<div class="card-body">
|
||||
|
||||
<el-upload :action="'/api/booking/' + booking_id + '/upload-po'" :auto-upload="false" :on-change="beforeFileUpload" :on-exceed="handleExceed" :on-preview="handlePreview" :on-remove="handleRemove" :on-error="uploadError" class="upload-demo uploadAreaOne" accept=".jpeg, .jpg, .png, .bmp, .doc, .docx, .xls, .xlsx, .pdf" drag multiple>
|
||||
<i class="el-icon-upload" />
|
||||
<div class="el-upload__text">Drop file here or
|
||||
<em>click to upload</em>
|
||||
</div>
|
||||
<div slot="tip" class="el-upload__tip">bmp/jpeg/jpg/png/pdf/xls/xlxs/doc/docx files with a size less than 3MB</div>
|
||||
</el-upload>
|
||||
<el-upload :action="'/api/booking/' + booking_id + '/upload-po'" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove" :file-list="fileList" multiple class="upload-demo uploadAreaTwo" >
|
||||
<el-button size="small" type="primary">Click to upload</el-button>
|
||||
<div slot="tip" class="el-upload__tip">jpg/png files with a size less than 500kb</div>
|
||||
</el-upload>
|
||||
|
||||
<div class="bottom clearfix" style="text-align:right;">
|
||||
<el-button :loading="loading_btn" type="primary" @click="uploadPo">Submit</el-button>
|
||||
</div>
|
||||
<!-- upload image end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">China Bank Slip</div>
|
||||
<div class="card-body">
|
||||
<a :href="getURL(booking_details.china_bankslip_path)" target="_blank" >
|
||||
<img v-if="isImage(booking_details.china_bankslip_path)" :src="booking_details.china_bankslip_path" class="image">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</div>
|
||||
<!-- upload image end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">China Bank Slip</div>
|
||||
<!-- order details -->
|
||||
<div class="card">
|
||||
<div class="card-header">Order Details</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Ref No :</td>
|
||||
<td>{{ booking_details.id }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Date :</td>
|
||||
<td>{{ booking_details.created_at }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Customer Marking :</td>
|
||||
<td>{{ booking_details.marking }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Term: </td>
|
||||
<td>{{ booking_details.term }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beneficiary Account : </td>
|
||||
<td>{{ booking_details.account_name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col">
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>CNY/RMB :</td>
|
||||
<td>CNY {{ booking_details.amount }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>+ Service Charge :</td>
|
||||
<td>CNY {{ booking_details.service_charge }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RATE :</td>
|
||||
<td>{{ booking_details.rate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td/>
|
||||
<td>
|
||||
<b>MYR {{ booking_details.bia }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beneficiary Account Number : </td>
|
||||
<td>{{ booking_details.account_num }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">Order Bankin Slip</div>
|
||||
<div class="row">
|
||||
<div class="card-body">
|
||||
<a target="_blank" :href="getURL(booking_details.china_bankslip_path)">
|
||||
<img v-if="isImage(booking_details.china_bankslip_path)" v-bind:src="booking_details.china_bankslip_path" class="image">
|
||||
<a :href="getURL(booking_details.user_bankslip_path)" target="_blank" >
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" :src="booking_details.user_bankslip_path" class="image">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- order details -->
|
||||
<div class="card">
|
||||
<div class="card-header">Order Details</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Ref No :</td>
|
||||
<td>{{ booking_details.id }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Date :</td>
|
||||
<td>{{ booking_details.created_at }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Customer Marking :</td>
|
||||
<td>{{ booking_details.marking }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Term: </td>
|
||||
<td>{{ booking_details.term }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beneficiary Account : </td>
|
||||
<td>{{ booking_details.account_name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col">
|
||||
<table class="table table-striped">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>CNY/RMB :</td>
|
||||
<td>CNY {{ booking_details.amount }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>+ Service Charge :</td>
|
||||
<td>CNY {{ booking_details.service_charge }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>RATE :</td>
|
||||
<td>{{ booking_details.rate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<b>MYR {{ booking_details.bia }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beneficiary Account Number : </td>
|
||||
<td>{{ booking_details.account_num }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">Order Bankin Slip</div>
|
||||
<div class="row">
|
||||
<div class="card-body">
|
||||
<a target="_blank" :href="getURL(booking_details.user_bankslip_path)">
|
||||
<img v-if="isImage(booking_details.user_bankslip_path)" v-bind:src="booking_details.user_bankslip_path" class="image">
|
||||
<p v-else>Download</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else id="new-invoice">
|
||||
<new-invoice :booking_details="booking_details" :booking_id="booking_id.toString()"/>
|
||||
</div>
|
||||
</el-main>
|
||||
</template>
|
||||
@@ -184,152 +186,156 @@
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import ProgressTrack from '~/components/ProgressTrack'
|
||||
import ProgressTrack from '~/components/ProgressTrack'
|
||||
import X2ProgressTrack from '~/components/X2ProgressTrack'
|
||||
import NewInvoice from '~/components/NewInvoice'
|
||||
import axios from 'axios'
|
||||
import ImageCompressor from 'image-compressor.js'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
'progress-track': ProgressTrack,
|
||||
'x2-progress-track': X2ProgressTrack
|
||||
'x2-progress-track': X2ProgressTrack,
|
||||
'new-invoice': NewInvoice
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
booking_id: this.$route.params.id,
|
||||
trackerConfig :{
|
||||
status: 5,
|
||||
term: null
|
||||
},
|
||||
purchaseOrderArray: [],
|
||||
loading_btn: false,
|
||||
booking_details: {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null,
|
||||
china_bankslip_path: null,
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Please wait..',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
|
||||
axios
|
||||
.get('/api/booking/' + this.$route.params.id)
|
||||
.then((response) => {
|
||||
this.booking_details = response.data
|
||||
this.trackerConfig.term = response.data.term
|
||||
loading.close()
|
||||
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
loading.close()
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
uploadPo() {
|
||||
this.loading_btn = true
|
||||
console.log(this.purchaseOrderArray);
|
||||
axios
|
||||
.post('/api/booking/' + this.$route.params.id + '/confirm-po', { images: this.purchaseOrderArray})
|
||||
.then((response) => {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: 'Your PO has been uploaded. We are processing the Invoice.',
|
||||
type: 'success',
|
||||
duration: 5000
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'home'
|
||||
})
|
||||
this.loading_btn = false
|
||||
}).catch((error) => {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: "Please upload your purchase order",
|
||||
type: 'error',
|
||||
duration: 30000
|
||||
})
|
||||
this.loading_btn = false
|
||||
})
|
||||
data () {
|
||||
return {
|
||||
booking_id: this.$route.params.id,
|
||||
trackerConfig: {
|
||||
status: 5,
|
||||
term: null
|
||||
},
|
||||
beforeFileUpload(file, fileList) {
|
||||
this.purchaseOrderArray = [];
|
||||
var vm = this;
|
||||
for (var i in fileList) {
|
||||
var filetype = fileList[i].raw.type.split("/")[0];
|
||||
if(filetype === 'image'){
|
||||
new ImageCompressor(fileList[i].raw, {
|
||||
quality: .4,
|
||||
convertSize: 1500000,
|
||||
success(result) {
|
||||
vm.convertFile(result)
|
||||
},
|
||||
error(e) {
|
||||
console.log(e.message);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.convertFile(fileList[i].raw)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
convertFile(file){
|
||||
var vm = this,
|
||||
reader = new FileReader();
|
||||
reader.readAsDataURL(file);
|
||||
reader.onloadend = function() {
|
||||
vm.purchaseOrderArray.push(reader.result);
|
||||
console.log(vm.purchaseOrderArray);
|
||||
}
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
console.log(file, fileList)
|
||||
// Should send some reqeust to controller to delete the file
|
||||
},
|
||||
handlePreview(file) {
|
||||
console.log(file)
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(
|
||||
`The limit is 3, you selected ${files.length} files this time, add up to ${files.length + fileList.length} totally`
|
||||
)
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
uploadError(file, fileList) {
|
||||
this.$message.warning(`Incorrect file format or file size too big.`)
|
||||
},
|
||||
getExtension(path) {
|
||||
return path.slice(-3);
|
||||
},
|
||||
isImage(path) {
|
||||
if(path != null){
|
||||
var ext = this.getExtension(path);
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
},
|
||||
getURL(path) {
|
||||
var getUrl = window.location;
|
||||
var baseUrl = getUrl.protocol + "//" + getUrl.host;
|
||||
return baseUrl + path;
|
||||
purchaseOrderArray: [],
|
||||
loading_btn: false,
|
||||
booking_details: {
|
||||
id: null,
|
||||
amount: null,
|
||||
bia: null,
|
||||
user_bankslip_path: null,
|
||||
china_bankslip_path: null
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isLegacy: function () {
|
||||
return this.booking_details.user_po_path && this.booking_details.user_po_path.length > 0
|
||||
}
|
||||
},
|
||||
beforeCreate () {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: 'Please wait..',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
|
||||
axios
|
||||
.get('/api/booking/' + this.$route.params.id)
|
||||
.then((response) => {
|
||||
console.log(response)
|
||||
this.booking_details = response.data
|
||||
this.trackerConfig.term = response.data.term
|
||||
loading.close()
|
||||
}).catch((error) => {
|
||||
console.log(error)
|
||||
loading.close()
|
||||
this.$router.push({
|
||||
name: 'notfound'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
uploadPo () {
|
||||
this.loading_btn = true
|
||||
console.log(this.purchaseOrderArray)
|
||||
axios
|
||||
.post('/api/booking/' + this.$route.params.id + '/confirm-po', { images: this.purchaseOrderArray })
|
||||
.then((response) => {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: 'Your PO has been uploaded. We are processing the Invoice.',
|
||||
type: 'success',
|
||||
duration: 5000
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'home'
|
||||
})
|
||||
this.loading_btn = false
|
||||
}).catch((error) => {
|
||||
console.error(error)
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: 'Please upload your purchase order',
|
||||
type: 'error',
|
||||
duration: 30000
|
||||
})
|
||||
this.loading_btn = false
|
||||
})
|
||||
},
|
||||
beforeFileUpload (file, fileList) {
|
||||
this.purchaseOrderArray = []
|
||||
const vm = this
|
||||
for (let i in fileList) {
|
||||
const filetype = fileList[i].raw.type.split('/')[0]
|
||||
if (filetype === 'image') {
|
||||
ImageCompressor(fileList[i].raw, {
|
||||
quality: 0.4,
|
||||
convertSize: 1500000,
|
||||
success (result) {
|
||||
vm.convertFile(result)
|
||||
},
|
||||
error (e) {
|
||||
console.error(e.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.convertFile(fileList[i].raw)
|
||||
}
|
||||
}
|
||||
},
|
||||
convertFile (file) {
|
||||
let vm = this
|
||||
const reader = new FileReader()
|
||||
reader.readAsDataURL(file)
|
||||
reader.onloadend = function () {
|
||||
vm.purchaseOrderArray.push(reader.result)
|
||||
console.log(vm.purchaseOrderArray)
|
||||
}
|
||||
},
|
||||
handleRemove (file, fileList) {
|
||||
console.log(file, fileList)
|
||||
// Should send some reqeust to controller to delete the file
|
||||
},
|
||||
handlePreview (file) {
|
||||
console.log(file)
|
||||
},
|
||||
handleExceed (files, fileList) {
|
||||
this.$message.warning(
|
||||
`The limit is 3, you selected ${files.length} files this time, add up to ${files.length + fileList.length} totally`
|
||||
)
|
||||
},
|
||||
beforeRemove (file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
uploadError (file, fileList) {
|
||||
this.$message.warning(`Incorrect file format or file size too big.`)
|
||||
},
|
||||
getExtension (path) {
|
||||
return path.slice(-3)
|
||||
},
|
||||
isImage (path) {
|
||||
if (path != null) {
|
||||
const ext = this.getExtension(path)
|
||||
return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
getURL (path) {
|
||||
const getUrl = window.location
|
||||
const baseUrl = getUrl.protocol + '//' + getUrl.host
|
||||
return baseUrl + path
|
||||
}
|
||||
}
|
||||
</script>
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Document</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: sun-extA;
|
||||
}
|
||||
img.logo {
|
||||
top: 10px;
|
||||
}
|
||||
img {
|
||||
height: 7em;
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 2em;
|
||||
font-weight: 1200;
|
||||
}
|
||||
.details {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
|
||||
}
|
||||
.sub-title {
|
||||
font-size: 1.3em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.label {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.bill-to {
|
||||
margin-top: 30px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
td {
|
||||
padding: 0.4em;
|
||||
text-align: center;
|
||||
}
|
||||
td.description, th.description {
|
||||
text-align: justify;
|
||||
max-width: 40em;
|
||||
}
|
||||
td.stock-code, th.stock-code {
|
||||
text-align: center;
|
||||
}
|
||||
th {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
td, th {
|
||||
margin-top: 0.6em;
|
||||
margin-right: 0.6em;
|
||||
}
|
||||
.subtotal td {
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
.total {
|
||||
border-top: 1px solid black;
|
||||
border-bottom: 3px double black;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.address {
|
||||
} */
|
||||
td.header-logo {
|
||||
text-align: left;
|
||||
width: fit-content;
|
||||
}
|
||||
td.header-cief-address {
|
||||
text-align: left;
|
||||
}
|
||||
td.header-details {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
td.bill-to {
|
||||
text-align: left;
|
||||
}
|
||||
td.address {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="header-logo">
|
||||
<img src="https://firebasestorage.googleapis.com/v0/b/edmondtm-1d8ed.appspot.com/o/logo.png?alt=media&token=e8458dc5-b9cd-4db4-b2c9-b953c0b9d09e" alt="logo" id="logo" class="">
|
||||
</td>
|
||||
<td class="header-cief-address">
|
||||
<span class="company-name">
|
||||
<strong>
|
||||
CIEF WORLDWIDE SDN BHD
|
||||
</strong>
|
||||
</span>
|
||||
<span class="company-reg">(1134596-M)</span><br>
|
||||
Malaysian Global Innovation & Creativity Center <br>
|
||||
Level 1 CWS, Block 3730, Persiaran APEC, <br>
|
||||
63000 Cyberjaya, Malaysian. <br>
|
||||
Tel: 018-2909252
|
||||
</td>
|
||||
<td class="header-details">
|
||||
<div class="title">
|
||||
<strong>
|
||||
{{$title}}
|
||||
</strong>
|
||||
</div>
|
||||
@if($detail['ei'])
|
||||
<div class="number">EI#: {{$detail['ei']}}</div>
|
||||
@endif
|
||||
@if($detail['edo'])
|
||||
<div class="number">EDO#: {{$detail['edo']}}</div>
|
||||
@endif
|
||||
<div class="ref">Ref#: {{$detail['ref']}}</div>
|
||||
<div class="date">Date: {{$detail['date']}}</div>
|
||||
<div> </div>
|
||||
</div>
|
||||
</td>
|
||||
<tr>
|
||||
<td colspan="3" class="bill-to">
|
||||
<span class="sub-title">
|
||||
Bill To
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" class="address">
|
||||
<div class="label">
|
||||
{{$billto['buyer_company']}}
|
||||
</div>
|
||||
<div class="address">
|
||||
{{$billto['address']}}
|
||||
</div>
|
||||
<div>
|
||||
Phone: {{$billto['phone']}}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<table style="overflow: wrap" autosize="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="5%">No</th>
|
||||
<th class="stock-code" width="10%">Stock Code</th>
|
||||
<th class="description">Description</th>
|
||||
<th width="10%">Quantity</th>
|
||||
<th width="12%">Unit Price (RM)</th>
|
||||
<th width="10%">Total Amount<br>(RM)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($lines as $line)
|
||||
<tr>
|
||||
<td width="5%">{{$line->order}}</td>
|
||||
<td class="stock-code" width="10%">{{$line->stock_code}}</td>
|
||||
<td class="description" >{{$line->description}}</td>
|
||||
<td width="10%">{{$line->quantity}}</td>
|
||||
<td width="12%">{{number_format($line->unit_price_rm, 2)}}</td>
|
||||
<td width="20%">{{number_format($line->total, 2)}}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="subtotal">
|
||||
<td colspan="4"></td>
|
||||
<td>Subtotal</td>
|
||||
<td>{{ number_format($amount, 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
<td>Total</td>
|
||||
<td class="total">{{ number_format($amount, 2) }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>document</title>
|
||||
<style>
|
||||
|
||||
body {
|
||||
font-family: sun-extA;
|
||||
overflow: wrap;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
td.title {
|
||||
text-align: left;
|
||||
}
|
||||
td.document-detail {
|
||||
text-align: left;
|
||||
border: 1px solid black;
|
||||
padding: 1em 1em 1em 1em;
|
||||
width: 16em;
|
||||
}
|
||||
.buyer-seller-title {
|
||||
font-size: 1.2em;
|
||||
font-weight: bolder;
|
||||
}
|
||||
td.description, th.description {
|
||||
text-align: justify;
|
||||
max-width: 40em;
|
||||
}
|
||||
td.stock-code, th.stock-code {
|
||||
text-align: center;
|
||||
}
|
||||
th {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
td.description, th.description {
|
||||
text-align: justify;
|
||||
}
|
||||
.total {
|
||||
border-top: 1px solid black;
|
||||
border-bottom: 3px double black;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.middle {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.top {
|
||||
vertical-align: top;
|
||||
}
|
||||
td {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
.subtotal td {
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table class="header">
|
||||
<tr>
|
||||
<td class="title">
|
||||
<h1>
|
||||
{{ $title }}
|
||||
</h1>
|
||||
</td>
|
||||
<td class="document-detail">
|
||||
PO#: {{$detail['po']}} <br>
|
||||
Ref#: {{ $detail['ref'] }} <br>
|
||||
Date: {{ $detail['date'] }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<table class="buyer-seller">
|
||||
<tr>
|
||||
<td width="50%" class="top">
|
||||
<span class="buyer-seller-title">
|
||||
Buyer
|
||||
</span>
|
||||
<br>
|
||||
@if($buyer['marking_no'])
|
||||
<div class="buyer-company">
|
||||
Marking#: {{$buyer['marking_no']}}
|
||||
</div>
|
||||
@endif
|
||||
<span class="buyer-company">
|
||||
{{ $buyer['buyer_company'] }}
|
||||
</span>
|
||||
<span class="reg">
|
||||
({{ $buyer['reg_no'] }})
|
||||
</span>
|
||||
<br>
|
||||
<span class="address">
|
||||
{{ $buyer['address'] }}
|
||||
</span>
|
||||
<br>
|
||||
<span class="contact-no">
|
||||
Phone: {{ $buyer['phone'] }}
|
||||
</span>
|
||||
</td>
|
||||
<td width="50%" class="top">
|
||||
<span class="buyer-seller-title">
|
||||
Seller
|
||||
</span>
|
||||
<br>
|
||||
<span class="buyer-company">
|
||||
{{ $seller['seller_company'] }}
|
||||
</span>
|
||||
<div class="address">
|
||||
{{ $seller['address'] }}
|
||||
</div>
|
||||
@if($seller['phone'])
|
||||
<div class="contact-no">
|
||||
Phone: {{ $seller['phone'] }}
|
||||
</div>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<table class="line-table" style="overflow: wrap" autosize="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="5%" >No</th>
|
||||
<th class="stock-code" width="10%">Stock Code</th>
|
||||
<th class="description">Description</th>
|
||||
<th width="10%">Quantity</th>
|
||||
<th width="12%">Unit Price (RM)</th>
|
||||
<th width="10%">Total Amount<br>(RM)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($lines as $line)
|
||||
<tr>
|
||||
<td width="5%" class="center top">{{$line->order}}</td>
|
||||
<td class="stock-code top" width="10%">{{$line->stock_code}}</td>
|
||||
<td class="description" >{{$line->description}}</td>
|
||||
<td width="10%" class="center top">{{$line->quantity}}</td>
|
||||
<td width="12%" class="center top">{{number_format($line->unit_price_rm, 2)}}</td>
|
||||
<td width="20%" class="center top">{{number_format($line->total, 2)}}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr class="subtotal">
|
||||
<td colspan="4"></td>
|
||||
<td class="center middle">Subtotal</td>
|
||||
<td class="center middle">{{ number_format($amount, 2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"></td>
|
||||
<td class="center center middle">Total</td>
|
||||
<td class="total center middle">{{ number_format($amount, 2) }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+17
-1
@@ -49,6 +49,14 @@ Route::group(['middleware' => 'auth:api'], function () {
|
||||
Route::patch('settings/profile', 'Settings\ProfileController@update');
|
||||
Route::patch('settings/password', 'Settings\PasswordController@update');
|
||||
|
||||
// New Invoice Routes
|
||||
Route::get('invoice/{id}', 'InvoiceController@show');
|
||||
Route::post('invoice/{id}', 'InvoiceController@create');
|
||||
Route::put('invoice/{id}', 'InvoiceController@edit');
|
||||
Route::get('invoice/{id}/po', 'InvoiceController@customerToCIEFPO');
|
||||
Route::get('invoice/{id}/do', 'InvoiceController@CIEFToCustomerDO');
|
||||
Route::get('invoice/{id}/invoice', 'InvoiceController@CIEFToCustomerInvoice');
|
||||
|
||||
//Route::get('notification/user', 'NotificationController@getUserMessage');
|
||||
//Route::post('notification/read-notification/{notification_id}', 'NotificationController@readNotification');
|
||||
|
||||
@@ -60,6 +68,8 @@ Route::group(['middleware' => 'auth:api'], function () {
|
||||
});
|
||||
|
||||
Route::group(['middleware' => 'guest:api'], function () {
|
||||
|
||||
Route::get('showinvoice', 'InvoiceController@showinvoice');
|
||||
Route::post('login', 'Auth\LoginController@login')->name('login');
|
||||
Route::post('register', 'Auth\RegisterController@create');
|
||||
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLink');
|
||||
@@ -128,7 +138,13 @@ Route::group(['middleware' => ['role:admin']], function() {
|
||||
Route::patch('booking/{id}/update-china-bankslip','ChinaBankSlipController@update');
|
||||
Route::get('booking/{id}/po', 'BookingController@showPurchaseOrder');
|
||||
Route::post('booking/{id}/upload-invoice', 'BookingController@uploadInvoice');
|
||||
Route::post('booking/{id}/confirm-invoice', 'BookingController@confirmInvoice');
|
||||
Route::post('booking/{id}/confirm-invoice', 'BookingController@confirmInvoice');
|
||||
|
||||
// New routes for invoice
|
||||
|
||||
Route::patch('invoice/{id}/status', 'InvoiceController@updateStatus');
|
||||
Route::get('invoice/{id}/supplierdo', 'InvoiceController@CIEFToSupplierDO');
|
||||
Route::post('invoice/{id}/comment', 'InvoiceController@postStatus');
|
||||
|
||||
Route::get('admin/complete-orders', 'BookingController@adminShowCompletedOrders');
|
||||
// for both user and admin
|
||||
|
||||
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Courier-Bold',
|
||||
'FullName' => 'Courier Bold',
|
||||
'FamilyName' => 'Courier',
|
||||
'Weight' => 'Bold',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'true',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-113',
|
||||
1 => '-250',
|
||||
2 => '749',
|
||||
3 => '801',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '003.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '562',
|
||||
'XHeight' => '439',
|
||||
'Ascender' => '629',
|
||||
'Descender' => '-157',
|
||||
'StdHW' => '84',
|
||||
'StdVW' => '106',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 600.0,
|
||||
160 => 600.0,
|
||||
33 => 600.0,
|
||||
34 => 600.0,
|
||||
35 => 600.0,
|
||||
36 => 600.0,
|
||||
37 => 600.0,
|
||||
38 => 600.0,
|
||||
146 => 600.0,
|
||||
40 => 600.0,
|
||||
41 => 600.0,
|
||||
42 => 600.0,
|
||||
43 => 600.0,
|
||||
44 => 600.0,
|
||||
45 => 600.0,
|
||||
173 => 600.0,
|
||||
46 => 600.0,
|
||||
47 => 600.0,
|
||||
48 => 600.0,
|
||||
49 => 600.0,
|
||||
50 => 600.0,
|
||||
51 => 600.0,
|
||||
52 => 600.0,
|
||||
53 => 600.0,
|
||||
54 => 600.0,
|
||||
55 => 600.0,
|
||||
56 => 600.0,
|
||||
57 => 600.0,
|
||||
58 => 600.0,
|
||||
59 => 600.0,
|
||||
60 => 600.0,
|
||||
61 => 600.0,
|
||||
62 => 600.0,
|
||||
63 => 600.0,
|
||||
64 => 600.0,
|
||||
65 => 600.0,
|
||||
66 => 600.0,
|
||||
67 => 600.0,
|
||||
68 => 600.0,
|
||||
69 => 600.0,
|
||||
70 => 600.0,
|
||||
71 => 600.0,
|
||||
72 => 600.0,
|
||||
73 => 600.0,
|
||||
74 => 600.0,
|
||||
75 => 600.0,
|
||||
76 => 600.0,
|
||||
77 => 600.0,
|
||||
78 => 600.0,
|
||||
79 => 600.0,
|
||||
80 => 600.0,
|
||||
81 => 600.0,
|
||||
82 => 600.0,
|
||||
83 => 600.0,
|
||||
84 => 600.0,
|
||||
85 => 600.0,
|
||||
86 => 600.0,
|
||||
87 => 600.0,
|
||||
88 => 600.0,
|
||||
89 => 600.0,
|
||||
90 => 600.0,
|
||||
91 => 600.0,
|
||||
92 => 600.0,
|
||||
93 => 600.0,
|
||||
94 => 600.0,
|
||||
95 => 600.0,
|
||||
145 => 600.0,
|
||||
97 => 600.0,
|
||||
98 => 600.0,
|
||||
99 => 600.0,
|
||||
100 => 600.0,
|
||||
101 => 600.0,
|
||||
102 => 600.0,
|
||||
103 => 600.0,
|
||||
104 => 600.0,
|
||||
105 => 600.0,
|
||||
106 => 600.0,
|
||||
107 => 600.0,
|
||||
108 => 600.0,
|
||||
109 => 600.0,
|
||||
110 => 600.0,
|
||||
111 => 600.0,
|
||||
112 => 600.0,
|
||||
113 => 600.0,
|
||||
114 => 600.0,
|
||||
115 => 600.0,
|
||||
116 => 600.0,
|
||||
117 => 600.0,
|
||||
118 => 600.0,
|
||||
119 => 600.0,
|
||||
120 => 600.0,
|
||||
121 => 600.0,
|
||||
122 => 600.0,
|
||||
123 => 600.0,
|
||||
124 => 600.0,
|
||||
125 => 600.0,
|
||||
126 => 600.0,
|
||||
161 => 600.0,
|
||||
162 => 600.0,
|
||||
163 => 600.0,
|
||||
'fraction' => 600.0,
|
||||
165 => 600.0,
|
||||
131 => 600.0,
|
||||
167 => 600.0,
|
||||
164 => 600.0,
|
||||
39 => 600.0,
|
||||
147 => 600.0,
|
||||
171 => 600.0,
|
||||
139 => 600.0,
|
||||
155 => 600.0,
|
||||
'fi' => 600.0,
|
||||
'fl' => 600.0,
|
||||
150 => 600.0,
|
||||
134 => 600.0,
|
||||
135 => 600.0,
|
||||
183 => 600.0,
|
||||
182 => 600.0,
|
||||
149 => 600.0,
|
||||
130 => 600.0,
|
||||
132 => 600.0,
|
||||
148 => 600.0,
|
||||
187 => 600.0,
|
||||
133 => 600.0,
|
||||
137 => 600.0,
|
||||
191 => 600.0,
|
||||
96 => 600.0,
|
||||
180 => 600.0,
|
||||
136 => 600.0,
|
||||
152 => 600.0,
|
||||
175 => 600.0,
|
||||
'breve' => 600.0,
|
||||
'dotaccent' => 600.0,
|
||||
168 => 600.0,
|
||||
'ring' => 600.0,
|
||||
184 => 600.0,
|
||||
'hungarumlaut' => 600.0,
|
||||
'ogonek' => 600.0,
|
||||
'caron' => 600.0,
|
||||
151 => 600.0,
|
||||
198 => 600.0,
|
||||
170 => 600.0,
|
||||
'Lslash' => 600.0,
|
||||
216 => 600.0,
|
||||
140 => 600.0,
|
||||
186 => 600.0,
|
||||
230 => 600.0,
|
||||
'dotlessi' => 600.0,
|
||||
'lslash' => 600.0,
|
||||
248 => 600.0,
|
||||
156 => 600.0,
|
||||
223 => 600.0,
|
||||
207 => 600.0,
|
||||
233 => 600.0,
|
||||
'abreve' => 600.0,
|
||||
'uhungarumlaut' => 600.0,
|
||||
'ecaron' => 600.0,
|
||||
159 => 600.0,
|
||||
247 => 600.0,
|
||||
221 => 600.0,
|
||||
194 => 600.0,
|
||||
225 => 600.0,
|
||||
219 => 600.0,
|
||||
253 => 600.0,
|
||||
'scommaaccent' => 600.0,
|
||||
234 => 600.0,
|
||||
'Uring' => 600.0,
|
||||
220 => 600.0,
|
||||
'aogonek' => 600.0,
|
||||
218 => 600.0,
|
||||
'uogonek' => 600.0,
|
||||
203 => 600.0,
|
||||
'Dcroat' => 600.0,
|
||||
'commaaccent' => 600.0,
|
||||
169 => 600.0,
|
||||
'Emacron' => 600.0,
|
||||
'ccaron' => 600.0,
|
||||
229 => 600.0,
|
||||
'Ncommaaccent' => 600.0,
|
||||
'lacute' => 600.0,
|
||||
224 => 600.0,
|
||||
'Tcommaaccent' => 600.0,
|
||||
'Cacute' => 600.0,
|
||||
227 => 600.0,
|
||||
'Edotaccent' => 600.0,
|
||||
154 => 600.0,
|
||||
'scedilla' => 600.0,
|
||||
237 => 600.0,
|
||||
'lozenge' => 600.0,
|
||||
'Rcaron' => 600.0,
|
||||
'Gcommaaccent' => 600.0,
|
||||
251 => 600.0,
|
||||
226 => 600.0,
|
||||
'Amacron' => 600.0,
|
||||
'rcaron' => 600.0,
|
||||
231 => 600.0,
|
||||
'Zdotaccent' => 600.0,
|
||||
222 => 600.0,
|
||||
'Omacron' => 600.0,
|
||||
'Racute' => 600.0,
|
||||
'Sacute' => 600.0,
|
||||
'dcaron' => 600.0,
|
||||
'Umacron' => 600.0,
|
||||
'uring' => 600.0,
|
||||
179 => 600.0,
|
||||
210 => 600.0,
|
||||
192 => 600.0,
|
||||
'Abreve' => 600.0,
|
||||
215 => 600.0,
|
||||
250 => 600.0,
|
||||
'Tcaron' => 600.0,
|
||||
'partialdiff' => 600.0,
|
||||
255 => 600.0,
|
||||
'Nacute' => 600.0,
|
||||
238 => 600.0,
|
||||
202 => 600.0,
|
||||
228 => 600.0,
|
||||
235 => 600.0,
|
||||
'cacute' => 600.0,
|
||||
'nacute' => 600.0,
|
||||
'umacron' => 600.0,
|
||||
'Ncaron' => 600.0,
|
||||
205 => 600.0,
|
||||
177 => 600.0,
|
||||
166 => 600.0,
|
||||
174 => 600.0,
|
||||
'Gbreve' => 600.0,
|
||||
'Idotaccent' => 600.0,
|
||||
'summation' => 600.0,
|
||||
200 => 600.0,
|
||||
'racute' => 600.0,
|
||||
'omacron' => 600.0,
|
||||
'Zacute' => 600.0,
|
||||
142 => 600.0,
|
||||
'greaterequal' => 600.0,
|
||||
208 => 600.0,
|
||||
199 => 600.0,
|
||||
'lcommaaccent' => 600.0,
|
||||
'tcaron' => 600.0,
|
||||
'eogonek' => 600.0,
|
||||
'Uogonek' => 600.0,
|
||||
193 => 600.0,
|
||||
196 => 600.0,
|
||||
232 => 600.0,
|
||||
'zacute' => 600.0,
|
||||
'iogonek' => 600.0,
|
||||
211 => 600.0,
|
||||
243 => 600.0,
|
||||
'amacron' => 600.0,
|
||||
'sacute' => 600.0,
|
||||
239 => 600.0,
|
||||
212 => 600.0,
|
||||
217 => 600.0,
|
||||
'Delta' => 600.0,
|
||||
254 => 600.0,
|
||||
178 => 600.0,
|
||||
214 => 600.0,
|
||||
181 => 600.0,
|
||||
236 => 600.0,
|
||||
'ohungarumlaut' => 600.0,
|
||||
'Eogonek' => 600.0,
|
||||
'dcroat' => 600.0,
|
||||
190 => 600.0,
|
||||
'Scedilla' => 600.0,
|
||||
'lcaron' => 600.0,
|
||||
'Kcommaaccent' => 600.0,
|
||||
'Lacute' => 600.0,
|
||||
153 => 600.0,
|
||||
'edotaccent' => 600.0,
|
||||
204 => 600.0,
|
||||
'Imacron' => 600.0,
|
||||
'Lcaron' => 600.0,
|
||||
189 => 600.0,
|
||||
'lessequal' => 600.0,
|
||||
244 => 600.0,
|
||||
241 => 600.0,
|
||||
'Uhungarumlaut' => 600.0,
|
||||
201 => 600.0,
|
||||
'emacron' => 600.0,
|
||||
'gbreve' => 600.0,
|
||||
188 => 600.0,
|
||||
138 => 600.0,
|
||||
'Scommaaccent' => 600.0,
|
||||
'Ohungarumlaut' => 600.0,
|
||||
176 => 600.0,
|
||||
242 => 600.0,
|
||||
'Ccaron' => 600.0,
|
||||
249 => 600.0,
|
||||
'radical' => 600.0,
|
||||
'Dcaron' => 600.0,
|
||||
'rcommaaccent' => 600.0,
|
||||
209 => 600.0,
|
||||
245 => 600.0,
|
||||
'Rcommaaccent' => 600.0,
|
||||
'Lcommaaccent' => 600.0,
|
||||
195 => 600.0,
|
||||
'Aogonek' => 600.0,
|
||||
197 => 600.0,
|
||||
213 => 600.0,
|
||||
'zdotaccent' => 600.0,
|
||||
'Ecaron' => 600.0,
|
||||
'Iogonek' => 600.0,
|
||||
'kcommaaccent' => 600.0,
|
||||
'minus' => 600.0,
|
||||
206 => 600.0,
|
||||
'ncaron' => 600.0,
|
||||
'tcommaaccent' => 600.0,
|
||||
172 => 600.0,
|
||||
246 => 600.0,
|
||||
252 => 600.0,
|
||||
'notequal' => 600.0,
|
||||
'gcommaaccent' => 600.0,
|
||||
240 => 600.0,
|
||||
158 => 600.0,
|
||||
'ncommaaccent' => 600.0,
|
||||
185 => 600.0,
|
||||
'imacron' => 600.0,
|
||||
128 => 600.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Courier',
|
||||
'FullName' => 'Courier',
|
||||
'FamilyName' => 'Courier',
|
||||
'Weight' => 'Medium',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'true',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-23',
|
||||
1 => '-250',
|
||||
2 => '715',
|
||||
3 => '805',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '003.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '562',
|
||||
'XHeight' => '426',
|
||||
'Ascender' => '629',
|
||||
'Descender' => '-157',
|
||||
'StdHW' => '51',
|
||||
'StdVW' => '51',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 600.0,
|
||||
160 => 600.0,
|
||||
33 => 600.0,
|
||||
34 => 600.0,
|
||||
35 => 600.0,
|
||||
36 => 600.0,
|
||||
37 => 600.0,
|
||||
38 => 600.0,
|
||||
146 => 600.0,
|
||||
40 => 600.0,
|
||||
41 => 600.0,
|
||||
42 => 600.0,
|
||||
43 => 600.0,
|
||||
44 => 600.0,
|
||||
45 => 600.0,
|
||||
173 => 600.0,
|
||||
46 => 600.0,
|
||||
47 => 600.0,
|
||||
48 => 600.0,
|
||||
49 => 600.0,
|
||||
50 => 600.0,
|
||||
51 => 600.0,
|
||||
52 => 600.0,
|
||||
53 => 600.0,
|
||||
54 => 600.0,
|
||||
55 => 600.0,
|
||||
56 => 600.0,
|
||||
57 => 600.0,
|
||||
58 => 600.0,
|
||||
59 => 600.0,
|
||||
60 => 600.0,
|
||||
61 => 600.0,
|
||||
62 => 600.0,
|
||||
63 => 600.0,
|
||||
64 => 600.0,
|
||||
65 => 600.0,
|
||||
66 => 600.0,
|
||||
67 => 600.0,
|
||||
68 => 600.0,
|
||||
69 => 600.0,
|
||||
70 => 600.0,
|
||||
71 => 600.0,
|
||||
72 => 600.0,
|
||||
73 => 600.0,
|
||||
74 => 600.0,
|
||||
75 => 600.0,
|
||||
76 => 600.0,
|
||||
77 => 600.0,
|
||||
78 => 600.0,
|
||||
79 => 600.0,
|
||||
80 => 600.0,
|
||||
81 => 600.0,
|
||||
82 => 600.0,
|
||||
83 => 600.0,
|
||||
84 => 600.0,
|
||||
85 => 600.0,
|
||||
86 => 600.0,
|
||||
87 => 600.0,
|
||||
88 => 600.0,
|
||||
89 => 600.0,
|
||||
90 => 600.0,
|
||||
91 => 600.0,
|
||||
92 => 600.0,
|
||||
93 => 600.0,
|
||||
94 => 600.0,
|
||||
95 => 600.0,
|
||||
145 => 600.0,
|
||||
97 => 600.0,
|
||||
98 => 600.0,
|
||||
99 => 600.0,
|
||||
100 => 600.0,
|
||||
101 => 600.0,
|
||||
102 => 600.0,
|
||||
103 => 600.0,
|
||||
104 => 600.0,
|
||||
105 => 600.0,
|
||||
106 => 600.0,
|
||||
107 => 600.0,
|
||||
108 => 600.0,
|
||||
109 => 600.0,
|
||||
110 => 600.0,
|
||||
111 => 600.0,
|
||||
112 => 600.0,
|
||||
113 => 600.0,
|
||||
114 => 600.0,
|
||||
115 => 600.0,
|
||||
116 => 600.0,
|
||||
117 => 600.0,
|
||||
118 => 600.0,
|
||||
119 => 600.0,
|
||||
120 => 600.0,
|
||||
121 => 600.0,
|
||||
122 => 600.0,
|
||||
123 => 600.0,
|
||||
124 => 600.0,
|
||||
125 => 600.0,
|
||||
126 => 600.0,
|
||||
161 => 600.0,
|
||||
162 => 600.0,
|
||||
163 => 600.0,
|
||||
'fraction' => 600.0,
|
||||
165 => 600.0,
|
||||
131 => 600.0,
|
||||
167 => 600.0,
|
||||
164 => 600.0,
|
||||
39 => 600.0,
|
||||
147 => 600.0,
|
||||
171 => 600.0,
|
||||
139 => 600.0,
|
||||
155 => 600.0,
|
||||
'fi' => 600.0,
|
||||
'fl' => 600.0,
|
||||
150 => 600.0,
|
||||
134 => 600.0,
|
||||
135 => 600.0,
|
||||
183 => 600.0,
|
||||
182 => 600.0,
|
||||
149 => 600.0,
|
||||
130 => 600.0,
|
||||
132 => 600.0,
|
||||
148 => 600.0,
|
||||
187 => 600.0,
|
||||
133 => 600.0,
|
||||
137 => 600.0,
|
||||
191 => 600.0,
|
||||
96 => 600.0,
|
||||
180 => 600.0,
|
||||
136 => 600.0,
|
||||
152 => 600.0,
|
||||
175 => 600.0,
|
||||
'breve' => 600.0,
|
||||
'dotaccent' => 600.0,
|
||||
168 => 600.0,
|
||||
'ring' => 600.0,
|
||||
184 => 600.0,
|
||||
'hungarumlaut' => 600.0,
|
||||
'ogonek' => 600.0,
|
||||
'caron' => 600.0,
|
||||
151 => 600.0,
|
||||
198 => 600.0,
|
||||
170 => 600.0,
|
||||
'Lslash' => 600.0,
|
||||
216 => 600.0,
|
||||
140 => 600.0,
|
||||
186 => 600.0,
|
||||
230 => 600.0,
|
||||
'dotlessi' => 600.0,
|
||||
'lslash' => 600.0,
|
||||
248 => 600.0,
|
||||
156 => 600.0,
|
||||
223 => 600.0,
|
||||
207 => 600.0,
|
||||
233 => 600.0,
|
||||
'abreve' => 600.0,
|
||||
'uhungarumlaut' => 600.0,
|
||||
'ecaron' => 600.0,
|
||||
159 => 600.0,
|
||||
247 => 600.0,
|
||||
221 => 600.0,
|
||||
194 => 600.0,
|
||||
225 => 600.0,
|
||||
219 => 600.0,
|
||||
253 => 600.0,
|
||||
'scommaaccent' => 600.0,
|
||||
234 => 600.0,
|
||||
'Uring' => 600.0,
|
||||
220 => 600.0,
|
||||
'aogonek' => 600.0,
|
||||
218 => 600.0,
|
||||
'uogonek' => 600.0,
|
||||
203 => 600.0,
|
||||
'Dcroat' => 600.0,
|
||||
'commaaccent' => 600.0,
|
||||
169 => 600.0,
|
||||
'Emacron' => 600.0,
|
||||
'ccaron' => 600.0,
|
||||
229 => 600.0,
|
||||
'Ncommaaccent' => 600.0,
|
||||
'lacute' => 600.0,
|
||||
224 => 600.0,
|
||||
'Tcommaaccent' => 600.0,
|
||||
'Cacute' => 600.0,
|
||||
227 => 600.0,
|
||||
'Edotaccent' => 600.0,
|
||||
154 => 600.0,
|
||||
'scedilla' => 600.0,
|
||||
237 => 600.0,
|
||||
'lozenge' => 600.0,
|
||||
'Rcaron' => 600.0,
|
||||
'Gcommaaccent' => 600.0,
|
||||
251 => 600.0,
|
||||
226 => 600.0,
|
||||
'Amacron' => 600.0,
|
||||
'rcaron' => 600.0,
|
||||
231 => 600.0,
|
||||
'Zdotaccent' => 600.0,
|
||||
222 => 600.0,
|
||||
'Omacron' => 600.0,
|
||||
'Racute' => 600.0,
|
||||
'Sacute' => 600.0,
|
||||
'dcaron' => 600.0,
|
||||
'Umacron' => 600.0,
|
||||
'uring' => 600.0,
|
||||
179 => 600.0,
|
||||
210 => 600.0,
|
||||
192 => 600.0,
|
||||
'Abreve' => 600.0,
|
||||
215 => 600.0,
|
||||
250 => 600.0,
|
||||
'Tcaron' => 600.0,
|
||||
'partialdiff' => 600.0,
|
||||
255 => 600.0,
|
||||
'Nacute' => 600.0,
|
||||
238 => 600.0,
|
||||
202 => 600.0,
|
||||
228 => 600.0,
|
||||
235 => 600.0,
|
||||
'cacute' => 600.0,
|
||||
'nacute' => 600.0,
|
||||
'umacron' => 600.0,
|
||||
'Ncaron' => 600.0,
|
||||
205 => 600.0,
|
||||
177 => 600.0,
|
||||
166 => 600.0,
|
||||
174 => 600.0,
|
||||
'Gbreve' => 600.0,
|
||||
'Idotaccent' => 600.0,
|
||||
'summation' => 600.0,
|
||||
200 => 600.0,
|
||||
'racute' => 600.0,
|
||||
'omacron' => 600.0,
|
||||
'Zacute' => 600.0,
|
||||
142 => 600.0,
|
||||
'greaterequal' => 600.0,
|
||||
208 => 600.0,
|
||||
199 => 600.0,
|
||||
'lcommaaccent' => 600.0,
|
||||
'tcaron' => 600.0,
|
||||
'eogonek' => 600.0,
|
||||
'Uogonek' => 600.0,
|
||||
193 => 600.0,
|
||||
196 => 600.0,
|
||||
232 => 600.0,
|
||||
'zacute' => 600.0,
|
||||
'iogonek' => 600.0,
|
||||
211 => 600.0,
|
||||
243 => 600.0,
|
||||
'amacron' => 600.0,
|
||||
'sacute' => 600.0,
|
||||
239 => 600.0,
|
||||
212 => 600.0,
|
||||
217 => 600.0,
|
||||
'Delta' => 600.0,
|
||||
254 => 600.0,
|
||||
178 => 600.0,
|
||||
214 => 600.0,
|
||||
181 => 600.0,
|
||||
236 => 600.0,
|
||||
'ohungarumlaut' => 600.0,
|
||||
'Eogonek' => 600.0,
|
||||
'dcroat' => 600.0,
|
||||
190 => 600.0,
|
||||
'Scedilla' => 600.0,
|
||||
'lcaron' => 600.0,
|
||||
'Kcommaaccent' => 600.0,
|
||||
'Lacute' => 600.0,
|
||||
153 => 600.0,
|
||||
'edotaccent' => 600.0,
|
||||
204 => 600.0,
|
||||
'Imacron' => 600.0,
|
||||
'Lcaron' => 600.0,
|
||||
189 => 600.0,
|
||||
'lessequal' => 600.0,
|
||||
244 => 600.0,
|
||||
241 => 600.0,
|
||||
'Uhungarumlaut' => 600.0,
|
||||
201 => 600.0,
|
||||
'emacron' => 600.0,
|
||||
'gbreve' => 600.0,
|
||||
188 => 600.0,
|
||||
138 => 600.0,
|
||||
'Scommaaccent' => 600.0,
|
||||
'Ohungarumlaut' => 600.0,
|
||||
176 => 600.0,
|
||||
242 => 600.0,
|
||||
'Ccaron' => 600.0,
|
||||
249 => 600.0,
|
||||
'radical' => 600.0,
|
||||
'Dcaron' => 600.0,
|
||||
'rcommaaccent' => 600.0,
|
||||
209 => 600.0,
|
||||
245 => 600.0,
|
||||
'Rcommaaccent' => 600.0,
|
||||
'Lcommaaccent' => 600.0,
|
||||
195 => 600.0,
|
||||
'Aogonek' => 600.0,
|
||||
197 => 600.0,
|
||||
213 => 600.0,
|
||||
'zdotaccent' => 600.0,
|
||||
'Ecaron' => 600.0,
|
||||
'Iogonek' => 600.0,
|
||||
'kcommaaccent' => 600.0,
|
||||
'minus' => 600.0,
|
||||
206 => 600.0,
|
||||
'ncaron' => 600.0,
|
||||
'tcommaaccent' => 600.0,
|
||||
172 => 600.0,
|
||||
246 => 600.0,
|
||||
252 => 600.0,
|
||||
'notequal' => 600.0,
|
||||
'gcommaaccent' => 600.0,
|
||||
240 => 600.0,
|
||||
158 => 600.0,
|
||||
'ncommaaccent' => 600.0,
|
||||
185 => 600.0,
|
||||
'imacron' => 600.0,
|
||||
128 => 600.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Helvetica-Bold',
|
||||
'FullName' => 'Helvetica Bold',
|
||||
'FamilyName' => 'Helvetica',
|
||||
'Weight' => 'Bold',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-170',
|
||||
1 => '-228',
|
||||
2 => '1003',
|
||||
3 => '962',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '718',
|
||||
'XHeight' => '532',
|
||||
'Ascender' => '718',
|
||||
'Descender' => '-207',
|
||||
'StdHW' => '118',
|
||||
'StdVW' => '140',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 278.0,
|
||||
160 => 278.0,
|
||||
33 => 333.0,
|
||||
34 => 474.0,
|
||||
35 => 556.0,
|
||||
36 => 556.0,
|
||||
37 => 889.0,
|
||||
38 => 722.0,
|
||||
146 => 278.0,
|
||||
40 => 333.0,
|
||||
41 => 333.0,
|
||||
42 => 389.0,
|
||||
43 => 584.0,
|
||||
44 => 278.0,
|
||||
45 => 333.0,
|
||||
173 => 333.0,
|
||||
46 => 278.0,
|
||||
47 => 278.0,
|
||||
48 => 556.0,
|
||||
49 => 556.0,
|
||||
50 => 556.0,
|
||||
51 => 556.0,
|
||||
52 => 556.0,
|
||||
53 => 556.0,
|
||||
54 => 556.0,
|
||||
55 => 556.0,
|
||||
56 => 556.0,
|
||||
57 => 556.0,
|
||||
58 => 333.0,
|
||||
59 => 333.0,
|
||||
60 => 584.0,
|
||||
61 => 584.0,
|
||||
62 => 584.0,
|
||||
63 => 611.0,
|
||||
64 => 975.0,
|
||||
65 => 722.0,
|
||||
66 => 722.0,
|
||||
67 => 722.0,
|
||||
68 => 722.0,
|
||||
69 => 667.0,
|
||||
70 => 611.0,
|
||||
71 => 778.0,
|
||||
72 => 722.0,
|
||||
73 => 278.0,
|
||||
74 => 556.0,
|
||||
75 => 722.0,
|
||||
76 => 611.0,
|
||||
77 => 833.0,
|
||||
78 => 722.0,
|
||||
79 => 778.0,
|
||||
80 => 667.0,
|
||||
81 => 778.0,
|
||||
82 => 722.0,
|
||||
83 => 667.0,
|
||||
84 => 611.0,
|
||||
85 => 722.0,
|
||||
86 => 667.0,
|
||||
87 => 944.0,
|
||||
88 => 667.0,
|
||||
89 => 667.0,
|
||||
90 => 611.0,
|
||||
91 => 333.0,
|
||||
92 => 278.0,
|
||||
93 => 333.0,
|
||||
94 => 584.0,
|
||||
95 => 556.0,
|
||||
145 => 278.0,
|
||||
97 => 556.0,
|
||||
98 => 611.0,
|
||||
99 => 556.0,
|
||||
100 => 611.0,
|
||||
101 => 556.0,
|
||||
102 => 333.0,
|
||||
103 => 611.0,
|
||||
104 => 611.0,
|
||||
105 => 278.0,
|
||||
106 => 278.0,
|
||||
107 => 556.0,
|
||||
108 => 278.0,
|
||||
109 => 889.0,
|
||||
110 => 611.0,
|
||||
111 => 611.0,
|
||||
112 => 611.0,
|
||||
113 => 611.0,
|
||||
114 => 389.0,
|
||||
115 => 556.0,
|
||||
116 => 333.0,
|
||||
117 => 611.0,
|
||||
118 => 556.0,
|
||||
119 => 778.0,
|
||||
120 => 556.0,
|
||||
121 => 556.0,
|
||||
122 => 500.0,
|
||||
123 => 389.0,
|
||||
124 => 280.0,
|
||||
125 => 389.0,
|
||||
126 => 584.0,
|
||||
161 => 333.0,
|
||||
162 => 556.0,
|
||||
163 => 556.0,
|
||||
'fraction' => 167.0,
|
||||
165 => 556.0,
|
||||
131 => 556.0,
|
||||
167 => 556.0,
|
||||
164 => 556.0,
|
||||
39 => 238.0,
|
||||
147 => 500.0,
|
||||
171 => 556.0,
|
||||
139 => 333.0,
|
||||
155 => 333.0,
|
||||
'fi' => 611.0,
|
||||
'fl' => 611.0,
|
||||
150 => 556.0,
|
||||
134 => 556.0,
|
||||
135 => 556.0,
|
||||
183 => 278.0,
|
||||
182 => 556.0,
|
||||
149 => 350.0,
|
||||
130 => 278.0,
|
||||
132 => 500.0,
|
||||
148 => 500.0,
|
||||
187 => 556.0,
|
||||
133 => 1000.0,
|
||||
137 => 1000.0,
|
||||
191 => 611.0,
|
||||
96 => 333.0,
|
||||
180 => 333.0,
|
||||
136 => 333.0,
|
||||
152 => 333.0,
|
||||
175 => 333.0,
|
||||
'breve' => 333.0,
|
||||
'dotaccent' => 333.0,
|
||||
168 => 333.0,
|
||||
'ring' => 333.0,
|
||||
184 => 333.0,
|
||||
'hungarumlaut' => 333.0,
|
||||
'ogonek' => 333.0,
|
||||
'caron' => 333.0,
|
||||
151 => 1000.0,
|
||||
198 => 1000.0,
|
||||
170 => 370.0,
|
||||
'Lslash' => 611.0,
|
||||
216 => 778.0,
|
||||
140 => 1000.0,
|
||||
186 => 365.0,
|
||||
230 => 889.0,
|
||||
'dotlessi' => 278.0,
|
||||
'lslash' => 278.0,
|
||||
248 => 611.0,
|
||||
156 => 944.0,
|
||||
223 => 611.0,
|
||||
207 => 278.0,
|
||||
233 => 556.0,
|
||||
'abreve' => 556.0,
|
||||
'uhungarumlaut' => 611.0,
|
||||
'ecaron' => 556.0,
|
||||
159 => 667.0,
|
||||
247 => 584.0,
|
||||
221 => 667.0,
|
||||
194 => 722.0,
|
||||
225 => 556.0,
|
||||
219 => 722.0,
|
||||
253 => 556.0,
|
||||
'scommaaccent' => 556.0,
|
||||
234 => 556.0,
|
||||
'Uring' => 722.0,
|
||||
220 => 722.0,
|
||||
'aogonek' => 556.0,
|
||||
218 => 722.0,
|
||||
'uogonek' => 611.0,
|
||||
203 => 667.0,
|
||||
'Dcroat' => 722.0,
|
||||
'commaaccent' => 250.0,
|
||||
169 => 737.0,
|
||||
'Emacron' => 667.0,
|
||||
'ccaron' => 556.0,
|
||||
229 => 556.0,
|
||||
'Ncommaaccent' => 722.0,
|
||||
'lacute' => 278.0,
|
||||
224 => 556.0,
|
||||
'Tcommaaccent' => 611.0,
|
||||
'Cacute' => 722.0,
|
||||
227 => 556.0,
|
||||
'Edotaccent' => 667.0,
|
||||
154 => 556.0,
|
||||
'scedilla' => 556.0,
|
||||
237 => 278.0,
|
||||
'lozenge' => 494.0,
|
||||
'Rcaron' => 722.0,
|
||||
'Gcommaaccent' => 778.0,
|
||||
251 => 611.0,
|
||||
226 => 556.0,
|
||||
'Amacron' => 722.0,
|
||||
'rcaron' => 389.0,
|
||||
231 => 556.0,
|
||||
'Zdotaccent' => 611.0,
|
||||
222 => 667.0,
|
||||
'Omacron' => 778.0,
|
||||
'Racute' => 722.0,
|
||||
'Sacute' => 667.0,
|
||||
'dcaron' => 743.0,
|
||||
'Umacron' => 722.0,
|
||||
'uring' => 611.0,
|
||||
179 => 333.0,
|
||||
210 => 778.0,
|
||||
192 => 722.0,
|
||||
'Abreve' => 722.0,
|
||||
215 => 584.0,
|
||||
250 => 611.0,
|
||||
'Tcaron' => 611.0,
|
||||
'partialdiff' => 494.0,
|
||||
255 => 556.0,
|
||||
'Nacute' => 722.0,
|
||||
238 => 278.0,
|
||||
202 => 667.0,
|
||||
228 => 556.0,
|
||||
235 => 556.0,
|
||||
'cacute' => 556.0,
|
||||
'nacute' => 611.0,
|
||||
'umacron' => 611.0,
|
||||
'Ncaron' => 722.0,
|
||||
205 => 278.0,
|
||||
177 => 584.0,
|
||||
166 => 280.0,
|
||||
174 => 737.0,
|
||||
'Gbreve' => 778.0,
|
||||
'Idotaccent' => 278.0,
|
||||
'summation' => 600.0,
|
||||
200 => 667.0,
|
||||
'racute' => 389.0,
|
||||
'omacron' => 611.0,
|
||||
'Zacute' => 611.0,
|
||||
142 => 611.0,
|
||||
'greaterequal' => 549.0,
|
||||
208 => 722.0,
|
||||
199 => 722.0,
|
||||
'lcommaaccent' => 278.0,
|
||||
'tcaron' => 389.0,
|
||||
'eogonek' => 556.0,
|
||||
'Uogonek' => 722.0,
|
||||
193 => 722.0,
|
||||
196 => 722.0,
|
||||
232 => 556.0,
|
||||
'zacute' => 500.0,
|
||||
'iogonek' => 278.0,
|
||||
211 => 778.0,
|
||||
243 => 611.0,
|
||||
'amacron' => 556.0,
|
||||
'sacute' => 556.0,
|
||||
239 => 278.0,
|
||||
212 => 778.0,
|
||||
217 => 722.0,
|
||||
'Delta' => 612.0,
|
||||
254 => 611.0,
|
||||
178 => 333.0,
|
||||
214 => 778.0,
|
||||
181 => 611.0,
|
||||
236 => 278.0,
|
||||
'ohungarumlaut' => 611.0,
|
||||
'Eogonek' => 667.0,
|
||||
'dcroat' => 611.0,
|
||||
190 => 834.0,
|
||||
'Scedilla' => 667.0,
|
||||
'lcaron' => 400.0,
|
||||
'Kcommaaccent' => 722.0,
|
||||
'Lacute' => 611.0,
|
||||
153 => 1000.0,
|
||||
'edotaccent' => 556.0,
|
||||
204 => 278.0,
|
||||
'Imacron' => 278.0,
|
||||
'Lcaron' => 611.0,
|
||||
189 => 834.0,
|
||||
'lessequal' => 549.0,
|
||||
244 => 611.0,
|
||||
241 => 611.0,
|
||||
'Uhungarumlaut' => 722.0,
|
||||
201 => 667.0,
|
||||
'emacron' => 556.0,
|
||||
'gbreve' => 611.0,
|
||||
188 => 834.0,
|
||||
138 => 667.0,
|
||||
'Scommaaccent' => 667.0,
|
||||
'Ohungarumlaut' => 778.0,
|
||||
176 => 400.0,
|
||||
242 => 611.0,
|
||||
'Ccaron' => 722.0,
|
||||
249 => 611.0,
|
||||
'radical' => 549.0,
|
||||
'Dcaron' => 722.0,
|
||||
'rcommaaccent' => 389.0,
|
||||
209 => 722.0,
|
||||
245 => 611.0,
|
||||
'Rcommaaccent' => 722.0,
|
||||
'Lcommaaccent' => 611.0,
|
||||
195 => 722.0,
|
||||
'Aogonek' => 722.0,
|
||||
197 => 722.0,
|
||||
213 => 778.0,
|
||||
'zdotaccent' => 500.0,
|
||||
'Ecaron' => 667.0,
|
||||
'Iogonek' => 278.0,
|
||||
'kcommaaccent' => 556.0,
|
||||
'minus' => 584.0,
|
||||
206 => 278.0,
|
||||
'ncaron' => 611.0,
|
||||
'tcommaaccent' => 333.0,
|
||||
172 => 584.0,
|
||||
246 => 611.0,
|
||||
252 => 611.0,
|
||||
'notequal' => 549.0,
|
||||
'gcommaaccent' => 611.0,
|
||||
240 => 611.0,
|
||||
158 => 500.0,
|
||||
'ncommaaccent' => 611.0,
|
||||
185 => 333.0,
|
||||
'imacron' => 278.0,
|
||||
128 => 556.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Helvetica',
|
||||
'FullName' => 'Helvetica',
|
||||
'FamilyName' => 'Helvetica',
|
||||
'Weight' => 'Medium',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-166',
|
||||
1 => '-225',
|
||||
2 => '1000',
|
||||
3 => '931',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '718',
|
||||
'XHeight' => '523',
|
||||
'Ascender' => '718',
|
||||
'Descender' => '-207',
|
||||
'StdHW' => '76',
|
||||
'StdVW' => '88',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 278.0,
|
||||
160 => 278.0,
|
||||
33 => 278.0,
|
||||
34 => 355.0,
|
||||
35 => 556.0,
|
||||
36 => 556.0,
|
||||
37 => 889.0,
|
||||
38 => 667.0,
|
||||
146 => 222.0,
|
||||
40 => 333.0,
|
||||
41 => 333.0,
|
||||
42 => 389.0,
|
||||
43 => 584.0,
|
||||
44 => 278.0,
|
||||
45 => 333.0,
|
||||
173 => 333.0,
|
||||
46 => 278.0,
|
||||
47 => 278.0,
|
||||
48 => 556.0,
|
||||
49 => 556.0,
|
||||
50 => 556.0,
|
||||
51 => 556.0,
|
||||
52 => 556.0,
|
||||
53 => 556.0,
|
||||
54 => 556.0,
|
||||
55 => 556.0,
|
||||
56 => 556.0,
|
||||
57 => 556.0,
|
||||
58 => 278.0,
|
||||
59 => 278.0,
|
||||
60 => 584.0,
|
||||
61 => 584.0,
|
||||
62 => 584.0,
|
||||
63 => 556.0,
|
||||
64 => 1015.0,
|
||||
65 => 667.0,
|
||||
66 => 667.0,
|
||||
67 => 722.0,
|
||||
68 => 722.0,
|
||||
69 => 667.0,
|
||||
70 => 611.0,
|
||||
71 => 778.0,
|
||||
72 => 722.0,
|
||||
73 => 278.0,
|
||||
74 => 500.0,
|
||||
75 => 667.0,
|
||||
76 => 556.0,
|
||||
77 => 833.0,
|
||||
78 => 722.0,
|
||||
79 => 778.0,
|
||||
80 => 667.0,
|
||||
81 => 778.0,
|
||||
82 => 722.0,
|
||||
83 => 667.0,
|
||||
84 => 611.0,
|
||||
85 => 722.0,
|
||||
86 => 667.0,
|
||||
87 => 944.0,
|
||||
88 => 667.0,
|
||||
89 => 667.0,
|
||||
90 => 611.0,
|
||||
91 => 278.0,
|
||||
92 => 278.0,
|
||||
93 => 278.0,
|
||||
94 => 469.0,
|
||||
95 => 556.0,
|
||||
145 => 222.0,
|
||||
97 => 556.0,
|
||||
98 => 556.0,
|
||||
99 => 500.0,
|
||||
100 => 556.0,
|
||||
101 => 556.0,
|
||||
102 => 278.0,
|
||||
103 => 556.0,
|
||||
104 => 556.0,
|
||||
105 => 222.0,
|
||||
106 => 222.0,
|
||||
107 => 500.0,
|
||||
108 => 222.0,
|
||||
109 => 833.0,
|
||||
110 => 556.0,
|
||||
111 => 556.0,
|
||||
112 => 556.0,
|
||||
113 => 556.0,
|
||||
114 => 333.0,
|
||||
115 => 500.0,
|
||||
116 => 278.0,
|
||||
117 => 556.0,
|
||||
118 => 500.0,
|
||||
119 => 722.0,
|
||||
120 => 500.0,
|
||||
121 => 500.0,
|
||||
122 => 500.0,
|
||||
123 => 334.0,
|
||||
124 => 260.0,
|
||||
125 => 334.0,
|
||||
126 => 584.0,
|
||||
161 => 333.0,
|
||||
162 => 556.0,
|
||||
163 => 556.0,
|
||||
'fraction' => 167.0,
|
||||
165 => 556.0,
|
||||
131 => 556.0,
|
||||
167 => 556.0,
|
||||
164 => 556.0,
|
||||
39 => 191.0,
|
||||
147 => 333.0,
|
||||
171 => 556.0,
|
||||
139 => 333.0,
|
||||
155 => 333.0,
|
||||
'fi' => 500.0,
|
||||
'fl' => 500.0,
|
||||
150 => 556.0,
|
||||
134 => 556.0,
|
||||
135 => 556.0,
|
||||
183 => 278.0,
|
||||
182 => 537.0,
|
||||
149 => 350.0,
|
||||
130 => 222.0,
|
||||
132 => 333.0,
|
||||
148 => 333.0,
|
||||
187 => 556.0,
|
||||
133 => 1000.0,
|
||||
137 => 1000.0,
|
||||
191 => 611.0,
|
||||
96 => 333.0,
|
||||
180 => 333.0,
|
||||
136 => 333.0,
|
||||
152 => 333.0,
|
||||
175 => 333.0,
|
||||
'breve' => 333.0,
|
||||
'dotaccent' => 333.0,
|
||||
168 => 333.0,
|
||||
'ring' => 333.0,
|
||||
184 => 333.0,
|
||||
'hungarumlaut' => 333.0,
|
||||
'ogonek' => 333.0,
|
||||
'caron' => 333.0,
|
||||
151 => 1000.0,
|
||||
198 => 1000.0,
|
||||
170 => 370.0,
|
||||
'Lslash' => 556.0,
|
||||
216 => 778.0,
|
||||
140 => 1000.0,
|
||||
186 => 365.0,
|
||||
230 => 889.0,
|
||||
'dotlessi' => 278.0,
|
||||
'lslash' => 222.0,
|
||||
248 => 611.0,
|
||||
156 => 944.0,
|
||||
223 => 611.0,
|
||||
207 => 278.0,
|
||||
233 => 556.0,
|
||||
'abreve' => 556.0,
|
||||
'uhungarumlaut' => 556.0,
|
||||
'ecaron' => 556.0,
|
||||
159 => 667.0,
|
||||
247 => 584.0,
|
||||
221 => 667.0,
|
||||
194 => 667.0,
|
||||
225 => 556.0,
|
||||
219 => 722.0,
|
||||
253 => 500.0,
|
||||
'scommaaccent' => 500.0,
|
||||
234 => 556.0,
|
||||
'Uring' => 722.0,
|
||||
220 => 722.0,
|
||||
'aogonek' => 556.0,
|
||||
218 => 722.0,
|
||||
'uogonek' => 556.0,
|
||||
203 => 667.0,
|
||||
'Dcroat' => 722.0,
|
||||
'commaaccent' => 250.0,
|
||||
169 => 737.0,
|
||||
'Emacron' => 667.0,
|
||||
'ccaron' => 500.0,
|
||||
229 => 556.0,
|
||||
'Ncommaaccent' => 722.0,
|
||||
'lacute' => 222.0,
|
||||
224 => 556.0,
|
||||
'Tcommaaccent' => 611.0,
|
||||
'Cacute' => 722.0,
|
||||
227 => 556.0,
|
||||
'Edotaccent' => 667.0,
|
||||
154 => 500.0,
|
||||
'scedilla' => 500.0,
|
||||
237 => 278.0,
|
||||
'lozenge' => 471.0,
|
||||
'Rcaron' => 722.0,
|
||||
'Gcommaaccent' => 778.0,
|
||||
251 => 556.0,
|
||||
226 => 556.0,
|
||||
'Amacron' => 667.0,
|
||||
'rcaron' => 333.0,
|
||||
231 => 500.0,
|
||||
'Zdotaccent' => 611.0,
|
||||
222 => 667.0,
|
||||
'Omacron' => 778.0,
|
||||
'Racute' => 722.0,
|
||||
'Sacute' => 667.0,
|
||||
'dcaron' => 643.0,
|
||||
'Umacron' => 722.0,
|
||||
'uring' => 556.0,
|
||||
179 => 333.0,
|
||||
210 => 778.0,
|
||||
192 => 667.0,
|
||||
'Abreve' => 667.0,
|
||||
215 => 584.0,
|
||||
250 => 556.0,
|
||||
'Tcaron' => 611.0,
|
||||
'partialdiff' => 476.0,
|
||||
255 => 500.0,
|
||||
'Nacute' => 722.0,
|
||||
238 => 278.0,
|
||||
202 => 667.0,
|
||||
228 => 556.0,
|
||||
235 => 556.0,
|
||||
'cacute' => 500.0,
|
||||
'nacute' => 556.0,
|
||||
'umacron' => 556.0,
|
||||
'Ncaron' => 722.0,
|
||||
205 => 278.0,
|
||||
177 => 584.0,
|
||||
166 => 260.0,
|
||||
174 => 737.0,
|
||||
'Gbreve' => 778.0,
|
||||
'Idotaccent' => 278.0,
|
||||
'summation' => 600.0,
|
||||
200 => 667.0,
|
||||
'racute' => 333.0,
|
||||
'omacron' => 556.0,
|
||||
'Zacute' => 611.0,
|
||||
142 => 611.0,
|
||||
'greaterequal' => 549.0,
|
||||
208 => 722.0,
|
||||
199 => 722.0,
|
||||
'lcommaaccent' => 222.0,
|
||||
'tcaron' => 317.0,
|
||||
'eogonek' => 556.0,
|
||||
'Uogonek' => 722.0,
|
||||
193 => 667.0,
|
||||
196 => 667.0,
|
||||
232 => 556.0,
|
||||
'zacute' => 500.0,
|
||||
'iogonek' => 222.0,
|
||||
211 => 778.0,
|
||||
243 => 556.0,
|
||||
'amacron' => 556.0,
|
||||
'sacute' => 500.0,
|
||||
239 => 278.0,
|
||||
212 => 778.0,
|
||||
217 => 722.0,
|
||||
'Delta' => 612.0,
|
||||
254 => 556.0,
|
||||
178 => 333.0,
|
||||
214 => 778.0,
|
||||
181 => 556.0,
|
||||
236 => 278.0,
|
||||
'ohungarumlaut' => 556.0,
|
||||
'Eogonek' => 667.0,
|
||||
'dcroat' => 556.0,
|
||||
190 => 834.0,
|
||||
'Scedilla' => 667.0,
|
||||
'lcaron' => 299.0,
|
||||
'Kcommaaccent' => 667.0,
|
||||
'Lacute' => 556.0,
|
||||
153 => 1000.0,
|
||||
'edotaccent' => 556.0,
|
||||
204 => 278.0,
|
||||
'Imacron' => 278.0,
|
||||
'Lcaron' => 556.0,
|
||||
189 => 834.0,
|
||||
'lessequal' => 549.0,
|
||||
244 => 556.0,
|
||||
241 => 556.0,
|
||||
'Uhungarumlaut' => 722.0,
|
||||
201 => 667.0,
|
||||
'emacron' => 556.0,
|
||||
'gbreve' => 556.0,
|
||||
188 => 834.0,
|
||||
138 => 667.0,
|
||||
'Scommaaccent' => 667.0,
|
||||
'Ohungarumlaut' => 778.0,
|
||||
176 => 400.0,
|
||||
242 => 556.0,
|
||||
'Ccaron' => 722.0,
|
||||
249 => 556.0,
|
||||
'radical' => 453.0,
|
||||
'Dcaron' => 722.0,
|
||||
'rcommaaccent' => 333.0,
|
||||
209 => 722.0,
|
||||
245 => 556.0,
|
||||
'Rcommaaccent' => 722.0,
|
||||
'Lcommaaccent' => 556.0,
|
||||
195 => 667.0,
|
||||
'Aogonek' => 667.0,
|
||||
197 => 667.0,
|
||||
213 => 778.0,
|
||||
'zdotaccent' => 500.0,
|
||||
'Ecaron' => 667.0,
|
||||
'Iogonek' => 278.0,
|
||||
'kcommaaccent' => 500.0,
|
||||
'minus' => 584.0,
|
||||
206 => 278.0,
|
||||
'ncaron' => 556.0,
|
||||
'tcommaaccent' => 278.0,
|
||||
172 => 584.0,
|
||||
246 => 556.0,
|
||||
252 => 556.0,
|
||||
'notequal' => 549.0,
|
||||
'gcommaaccent' => 556.0,
|
||||
240 => 556.0,
|
||||
158 => 500.0,
|
||||
'ncommaaccent' => 556.0,
|
||||
185 => 333.0,
|
||||
'imacron' => 278.0,
|
||||
128 => 556.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Times-Bold',
|
||||
'FullName' => 'Times Bold',
|
||||
'FamilyName' => 'Times',
|
||||
'Weight' => 'Bold',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-168',
|
||||
1 => '-218',
|
||||
2 => '1000',
|
||||
3 => '935',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '676',
|
||||
'XHeight' => '461',
|
||||
'Ascender' => '683',
|
||||
'Descender' => '-217',
|
||||
'StdHW' => '44',
|
||||
'StdVW' => '139',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 250.0,
|
||||
160 => 250.0,
|
||||
33 => 333.0,
|
||||
34 => 555.0,
|
||||
35 => 500.0,
|
||||
36 => 500.0,
|
||||
37 => 1000.0,
|
||||
38 => 833.0,
|
||||
146 => 333.0,
|
||||
40 => 333.0,
|
||||
41 => 333.0,
|
||||
42 => 500.0,
|
||||
43 => 570.0,
|
||||
44 => 250.0,
|
||||
45 => 333.0,
|
||||
173 => 333.0,
|
||||
46 => 250.0,
|
||||
47 => 278.0,
|
||||
48 => 500.0,
|
||||
49 => 500.0,
|
||||
50 => 500.0,
|
||||
51 => 500.0,
|
||||
52 => 500.0,
|
||||
53 => 500.0,
|
||||
54 => 500.0,
|
||||
55 => 500.0,
|
||||
56 => 500.0,
|
||||
57 => 500.0,
|
||||
58 => 333.0,
|
||||
59 => 333.0,
|
||||
60 => 570.0,
|
||||
61 => 570.0,
|
||||
62 => 570.0,
|
||||
63 => 500.0,
|
||||
64 => 930.0,
|
||||
65 => 722.0,
|
||||
66 => 667.0,
|
||||
67 => 722.0,
|
||||
68 => 722.0,
|
||||
69 => 667.0,
|
||||
70 => 611.0,
|
||||
71 => 778.0,
|
||||
72 => 778.0,
|
||||
73 => 389.0,
|
||||
74 => 500.0,
|
||||
75 => 778.0,
|
||||
76 => 667.0,
|
||||
77 => 944.0,
|
||||
78 => 722.0,
|
||||
79 => 778.0,
|
||||
80 => 611.0,
|
||||
81 => 778.0,
|
||||
82 => 722.0,
|
||||
83 => 556.0,
|
||||
84 => 667.0,
|
||||
85 => 722.0,
|
||||
86 => 722.0,
|
||||
87 => 1000.0,
|
||||
88 => 722.0,
|
||||
89 => 722.0,
|
||||
90 => 667.0,
|
||||
91 => 333.0,
|
||||
92 => 278.0,
|
||||
93 => 333.0,
|
||||
94 => 581.0,
|
||||
95 => 500.0,
|
||||
145 => 333.0,
|
||||
97 => 500.0,
|
||||
98 => 556.0,
|
||||
99 => 444.0,
|
||||
100 => 556.0,
|
||||
101 => 444.0,
|
||||
102 => 333.0,
|
||||
103 => 500.0,
|
||||
104 => 556.0,
|
||||
105 => 278.0,
|
||||
106 => 333.0,
|
||||
107 => 556.0,
|
||||
108 => 278.0,
|
||||
109 => 833.0,
|
||||
110 => 556.0,
|
||||
111 => 500.0,
|
||||
112 => 556.0,
|
||||
113 => 556.0,
|
||||
114 => 444.0,
|
||||
115 => 389.0,
|
||||
116 => 333.0,
|
||||
117 => 556.0,
|
||||
118 => 500.0,
|
||||
119 => 722.0,
|
||||
120 => 500.0,
|
||||
121 => 500.0,
|
||||
122 => 444.0,
|
||||
123 => 394.0,
|
||||
124 => 220.0,
|
||||
125 => 394.0,
|
||||
126 => 520.0,
|
||||
161 => 333.0,
|
||||
162 => 500.0,
|
||||
163 => 500.0,
|
||||
'fraction' => 167.0,
|
||||
165 => 500.0,
|
||||
131 => 500.0,
|
||||
167 => 500.0,
|
||||
164 => 500.0,
|
||||
39 => 278.0,
|
||||
147 => 500.0,
|
||||
171 => 500.0,
|
||||
139 => 333.0,
|
||||
155 => 333.0,
|
||||
'fi' => 556.0,
|
||||
'fl' => 556.0,
|
||||
150 => 500.0,
|
||||
134 => 500.0,
|
||||
135 => 500.0,
|
||||
183 => 250.0,
|
||||
182 => 540.0,
|
||||
149 => 350.0,
|
||||
130 => 333.0,
|
||||
132 => 500.0,
|
||||
148 => 500.0,
|
||||
187 => 500.0,
|
||||
133 => 1000.0,
|
||||
137 => 1000.0,
|
||||
191 => 500.0,
|
||||
96 => 333.0,
|
||||
180 => 333.0,
|
||||
136 => 333.0,
|
||||
152 => 333.0,
|
||||
175 => 333.0,
|
||||
'breve' => 333.0,
|
||||
'dotaccent' => 333.0,
|
||||
168 => 333.0,
|
||||
'ring' => 333.0,
|
||||
184 => 333.0,
|
||||
'hungarumlaut' => 333.0,
|
||||
'ogonek' => 333.0,
|
||||
'caron' => 333.0,
|
||||
151 => 1000.0,
|
||||
198 => 1000.0,
|
||||
170 => 300.0,
|
||||
'Lslash' => 667.0,
|
||||
216 => 778.0,
|
||||
140 => 1000.0,
|
||||
186 => 330.0,
|
||||
230 => 722.0,
|
||||
'dotlessi' => 278.0,
|
||||
'lslash' => 278.0,
|
||||
248 => 500.0,
|
||||
156 => 722.0,
|
||||
223 => 556.0,
|
||||
207 => 389.0,
|
||||
233 => 444.0,
|
||||
'abreve' => 500.0,
|
||||
'uhungarumlaut' => 556.0,
|
||||
'ecaron' => 444.0,
|
||||
159 => 722.0,
|
||||
247 => 570.0,
|
||||
221 => 722.0,
|
||||
194 => 722.0,
|
||||
225 => 500.0,
|
||||
219 => 722.0,
|
||||
253 => 500.0,
|
||||
'scommaaccent' => 389.0,
|
||||
234 => 444.0,
|
||||
'Uring' => 722.0,
|
||||
220 => 722.0,
|
||||
'aogonek' => 500.0,
|
||||
218 => 722.0,
|
||||
'uogonek' => 556.0,
|
||||
203 => 667.0,
|
||||
'Dcroat' => 722.0,
|
||||
'commaaccent' => 250.0,
|
||||
169 => 747.0,
|
||||
'Emacron' => 667.0,
|
||||
'ccaron' => 444.0,
|
||||
229 => 500.0,
|
||||
'Ncommaaccent' => 722.0,
|
||||
'lacute' => 278.0,
|
||||
224 => 500.0,
|
||||
'Tcommaaccent' => 667.0,
|
||||
'Cacute' => 722.0,
|
||||
227 => 500.0,
|
||||
'Edotaccent' => 667.0,
|
||||
154 => 389.0,
|
||||
'scedilla' => 389.0,
|
||||
237 => 278.0,
|
||||
'lozenge' => 494.0,
|
||||
'Rcaron' => 722.0,
|
||||
'Gcommaaccent' => 778.0,
|
||||
251 => 556.0,
|
||||
226 => 500.0,
|
||||
'Amacron' => 722.0,
|
||||
'rcaron' => 444.0,
|
||||
231 => 444.0,
|
||||
'Zdotaccent' => 667.0,
|
||||
222 => 611.0,
|
||||
'Omacron' => 778.0,
|
||||
'Racute' => 722.0,
|
||||
'Sacute' => 556.0,
|
||||
'dcaron' => 672.0,
|
||||
'Umacron' => 722.0,
|
||||
'uring' => 556.0,
|
||||
179 => 300.0,
|
||||
210 => 778.0,
|
||||
192 => 722.0,
|
||||
'Abreve' => 722.0,
|
||||
215 => 570.0,
|
||||
250 => 556.0,
|
||||
'Tcaron' => 667.0,
|
||||
'partialdiff' => 494.0,
|
||||
255 => 500.0,
|
||||
'Nacute' => 722.0,
|
||||
238 => 278.0,
|
||||
202 => 667.0,
|
||||
228 => 500.0,
|
||||
235 => 444.0,
|
||||
'cacute' => 444.0,
|
||||
'nacute' => 556.0,
|
||||
'umacron' => 556.0,
|
||||
'Ncaron' => 722.0,
|
||||
205 => 389.0,
|
||||
177 => 570.0,
|
||||
166 => 220.0,
|
||||
174 => 747.0,
|
||||
'Gbreve' => 778.0,
|
||||
'Idotaccent' => 389.0,
|
||||
'summation' => 600.0,
|
||||
200 => 667.0,
|
||||
'racute' => 444.0,
|
||||
'omacron' => 500.0,
|
||||
'Zacute' => 667.0,
|
||||
142 => 667.0,
|
||||
'greaterequal' => 549.0,
|
||||
208 => 722.0,
|
||||
199 => 722.0,
|
||||
'lcommaaccent' => 278.0,
|
||||
'tcaron' => 416.0,
|
||||
'eogonek' => 444.0,
|
||||
'Uogonek' => 722.0,
|
||||
193 => 722.0,
|
||||
196 => 722.0,
|
||||
232 => 444.0,
|
||||
'zacute' => 444.0,
|
||||
'iogonek' => 278.0,
|
||||
211 => 778.0,
|
||||
243 => 500.0,
|
||||
'amacron' => 500.0,
|
||||
'sacute' => 389.0,
|
||||
239 => 278.0,
|
||||
212 => 778.0,
|
||||
217 => 722.0,
|
||||
'Delta' => 612.0,
|
||||
254 => 556.0,
|
||||
178 => 300.0,
|
||||
214 => 778.0,
|
||||
181 => 556.0,
|
||||
236 => 278.0,
|
||||
'ohungarumlaut' => 500.0,
|
||||
'Eogonek' => 667.0,
|
||||
'dcroat' => 556.0,
|
||||
190 => 750.0,
|
||||
'Scedilla' => 556.0,
|
||||
'lcaron' => 394.0,
|
||||
'Kcommaaccent' => 778.0,
|
||||
'Lacute' => 667.0,
|
||||
153 => 1000.0,
|
||||
'edotaccent' => 444.0,
|
||||
204 => 389.0,
|
||||
'Imacron' => 389.0,
|
||||
'Lcaron' => 667.0,
|
||||
189 => 750.0,
|
||||
'lessequal' => 549.0,
|
||||
244 => 500.0,
|
||||
241 => 556.0,
|
||||
'Uhungarumlaut' => 722.0,
|
||||
201 => 667.0,
|
||||
'emacron' => 444.0,
|
||||
'gbreve' => 500.0,
|
||||
188 => 750.0,
|
||||
138 => 556.0,
|
||||
'Scommaaccent' => 556.0,
|
||||
'Ohungarumlaut' => 778.0,
|
||||
176 => 400.0,
|
||||
242 => 500.0,
|
||||
'Ccaron' => 722.0,
|
||||
249 => 556.0,
|
||||
'radical' => 549.0,
|
||||
'Dcaron' => 722.0,
|
||||
'rcommaaccent' => 444.0,
|
||||
209 => 722.0,
|
||||
245 => 500.0,
|
||||
'Rcommaaccent' => 722.0,
|
||||
'Lcommaaccent' => 667.0,
|
||||
195 => 722.0,
|
||||
'Aogonek' => 722.0,
|
||||
197 => 722.0,
|
||||
213 => 778.0,
|
||||
'zdotaccent' => 444.0,
|
||||
'Ecaron' => 667.0,
|
||||
'Iogonek' => 389.0,
|
||||
'kcommaaccent' => 556.0,
|
||||
'minus' => 570.0,
|
||||
206 => 389.0,
|
||||
'ncaron' => 556.0,
|
||||
'tcommaaccent' => 333.0,
|
||||
172 => 570.0,
|
||||
246 => 500.0,
|
||||
252 => 556.0,
|
||||
'notequal' => 549.0,
|
||||
'gcommaaccent' => 500.0,
|
||||
240 => 500.0,
|
||||
158 => 444.0,
|
||||
'ncommaaccent' => 556.0,
|
||||
185 => 300.0,
|
||||
'imacron' => 278.0,
|
||||
128 => 500.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
@@ -0,0 +1,572 @@
|
||||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
171 => 'guillemotleft',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
170 => 'ordfeminine',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Times-Roman',
|
||||
'FullName' => 'Times Roman',
|
||||
'FamilyName' => 'Times',
|
||||
'Weight' => 'Roman',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-168',
|
||||
1 => '-218',
|
||||
2 => '1000',
|
||||
3 => '898',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.00',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '662',
|
||||
'XHeight' => '450',
|
||||
'Ascender' => '683',
|
||||
'Descender' => '-217',
|
||||
'StdHW' => '28',
|
||||
'StdVW' => '84',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 250.0,
|
||||
160 => 250.0,
|
||||
33 => 333.0,
|
||||
34 => 408.0,
|
||||
35 => 500.0,
|
||||
36 => 500.0,
|
||||
37 => 833.0,
|
||||
38 => 778.0,
|
||||
146 => 333.0,
|
||||
40 => 333.0,
|
||||
41 => 333.0,
|
||||
42 => 500.0,
|
||||
43 => 564.0,
|
||||
44 => 250.0,
|
||||
45 => 333.0,
|
||||
173 => 333.0,
|
||||
46 => 250.0,
|
||||
47 => 278.0,
|
||||
48 => 500.0,
|
||||
49 => 500.0,
|
||||
50 => 500.0,
|
||||
51 => 500.0,
|
||||
52 => 500.0,
|
||||
53 => 500.0,
|
||||
54 => 500.0,
|
||||
55 => 500.0,
|
||||
56 => 500.0,
|
||||
57 => 500.0,
|
||||
58 => 278.0,
|
||||
59 => 278.0,
|
||||
60 => 564.0,
|
||||
61 => 564.0,
|
||||
62 => 564.0,
|
||||
63 => 444.0,
|
||||
64 => 921.0,
|
||||
65 => 722.0,
|
||||
66 => 667.0,
|
||||
67 => 667.0,
|
||||
68 => 722.0,
|
||||
69 => 611.0,
|
||||
70 => 556.0,
|
||||
71 => 722.0,
|
||||
72 => 722.0,
|
||||
73 => 333.0,
|
||||
74 => 389.0,
|
||||
75 => 722.0,
|
||||
76 => 611.0,
|
||||
77 => 889.0,
|
||||
78 => 722.0,
|
||||
79 => 722.0,
|
||||
80 => 556.0,
|
||||
81 => 722.0,
|
||||
82 => 667.0,
|
||||
83 => 556.0,
|
||||
84 => 611.0,
|
||||
85 => 722.0,
|
||||
86 => 722.0,
|
||||
87 => 944.0,
|
||||
88 => 722.0,
|
||||
89 => 722.0,
|
||||
90 => 611.0,
|
||||
91 => 333.0,
|
||||
92 => 278.0,
|
||||
93 => 333.0,
|
||||
94 => 469.0,
|
||||
95 => 500.0,
|
||||
145 => 333.0,
|
||||
97 => 444.0,
|
||||
98 => 500.0,
|
||||
99 => 444.0,
|
||||
100 => 500.0,
|
||||
101 => 444.0,
|
||||
102 => 333.0,
|
||||
103 => 500.0,
|
||||
104 => 500.0,
|
||||
105 => 278.0,
|
||||
106 => 278.0,
|
||||
107 => 500.0,
|
||||
108 => 278.0,
|
||||
109 => 778.0,
|
||||
110 => 500.0,
|
||||
111 => 500.0,
|
||||
112 => 500.0,
|
||||
113 => 500.0,
|
||||
114 => 333.0,
|
||||
115 => 389.0,
|
||||
116 => 278.0,
|
||||
117 => 500.0,
|
||||
118 => 500.0,
|
||||
119 => 722.0,
|
||||
120 => 500.0,
|
||||
121 => 500.0,
|
||||
122 => 444.0,
|
||||
123 => 480.0,
|
||||
124 => 200.0,
|
||||
125 => 480.0,
|
||||
126 => 541.0,
|
||||
161 => 333.0,
|
||||
162 => 500.0,
|
||||
163 => 500.0,
|
||||
'fraction' => 167.0,
|
||||
165 => 500.0,
|
||||
131 => 500.0,
|
||||
167 => 500.0,
|
||||
164 => 500.0,
|
||||
39 => 180.0,
|
||||
147 => 444.0,
|
||||
171 => 500.0,
|
||||
139 => 333.0,
|
||||
155 => 333.0,
|
||||
'fi' => 556.0,
|
||||
'fl' => 556.0,
|
||||
150 => 500.0,
|
||||
134 => 500.0,
|
||||
135 => 500.0,
|
||||
183 => 250.0,
|
||||
182 => 453.0,
|
||||
149 => 350.0,
|
||||
130 => 333.0,
|
||||
132 => 444.0,
|
||||
148 => 444.0,
|
||||
187 => 500.0,
|
||||
133 => 1000.0,
|
||||
137 => 1000.0,
|
||||
191 => 444.0,
|
||||
96 => 333.0,
|
||||
180 => 333.0,
|
||||
136 => 333.0,
|
||||
152 => 333.0,
|
||||
175 => 333.0,
|
||||
'breve' => 333.0,
|
||||
'dotaccent' => 333.0,
|
||||
168 => 333.0,
|
||||
'ring' => 333.0,
|
||||
184 => 333.0,
|
||||
'hungarumlaut' => 333.0,
|
||||
'ogonek' => 333.0,
|
||||
'caron' => 333.0,
|
||||
151 => 1000.0,
|
||||
198 => 889.0,
|
||||
170 => 276.0,
|
||||
'Lslash' => 611.0,
|
||||
216 => 722.0,
|
||||
140 => 889.0,
|
||||
186 => 310.0,
|
||||
230 => 667.0,
|
||||
'dotlessi' => 278.0,
|
||||
'lslash' => 278.0,
|
||||
248 => 500.0,
|
||||
156 => 722.0,
|
||||
223 => 500.0,
|
||||
207 => 333.0,
|
||||
233 => 444.0,
|
||||
'abreve' => 444.0,
|
||||
'uhungarumlaut' => 500.0,
|
||||
'ecaron' => 444.0,
|
||||
159 => 722.0,
|
||||
247 => 564.0,
|
||||
221 => 722.0,
|
||||
194 => 722.0,
|
||||
225 => 444.0,
|
||||
219 => 722.0,
|
||||
253 => 500.0,
|
||||
'scommaaccent' => 389.0,
|
||||
234 => 444.0,
|
||||
'Uring' => 722.0,
|
||||
220 => 722.0,
|
||||
'aogonek' => 444.0,
|
||||
218 => 722.0,
|
||||
'uogonek' => 500.0,
|
||||
203 => 611.0,
|
||||
'Dcroat' => 722.0,
|
||||
'commaaccent' => 250.0,
|
||||
169 => 760.0,
|
||||
'Emacron' => 611.0,
|
||||
'ccaron' => 444.0,
|
||||
229 => 444.0,
|
||||
'Ncommaaccent' => 722.0,
|
||||
'lacute' => 278.0,
|
||||
224 => 444.0,
|
||||
'Tcommaaccent' => 611.0,
|
||||
'Cacute' => 667.0,
|
||||
227 => 444.0,
|
||||
'Edotaccent' => 611.0,
|
||||
154 => 389.0,
|
||||
'scedilla' => 389.0,
|
||||
237 => 278.0,
|
||||
'lozenge' => 471.0,
|
||||
'Rcaron' => 667.0,
|
||||
'Gcommaaccent' => 722.0,
|
||||
251 => 500.0,
|
||||
226 => 444.0,
|
||||
'Amacron' => 722.0,
|
||||
'rcaron' => 333.0,
|
||||
231 => 444.0,
|
||||
'Zdotaccent' => 611.0,
|
||||
222 => 556.0,
|
||||
'Omacron' => 722.0,
|
||||
'Racute' => 667.0,
|
||||
'Sacute' => 556.0,
|
||||
'dcaron' => 588.0,
|
||||
'Umacron' => 722.0,
|
||||
'uring' => 500.0,
|
||||
179 => 300.0,
|
||||
210 => 722.0,
|
||||
192 => 722.0,
|
||||
'Abreve' => 722.0,
|
||||
215 => 564.0,
|
||||
250 => 500.0,
|
||||
'Tcaron' => 611.0,
|
||||
'partialdiff' => 476.0,
|
||||
255 => 500.0,
|
||||
'Nacute' => 722.0,
|
||||
238 => 278.0,
|
||||
202 => 611.0,
|
||||
228 => 444.0,
|
||||
235 => 444.0,
|
||||
'cacute' => 444.0,
|
||||
'nacute' => 500.0,
|
||||
'umacron' => 500.0,
|
||||
'Ncaron' => 722.0,
|
||||
205 => 333.0,
|
||||
177 => 564.0,
|
||||
166 => 200.0,
|
||||
174 => 760.0,
|
||||
'Gbreve' => 722.0,
|
||||
'Idotaccent' => 333.0,
|
||||
'summation' => 600.0,
|
||||
200 => 611.0,
|
||||
'racute' => 333.0,
|
||||
'omacron' => 500.0,
|
||||
'Zacute' => 611.0,
|
||||
142 => 611.0,
|
||||
'greaterequal' => 549.0,
|
||||
208 => 722.0,
|
||||
199 => 667.0,
|
||||
'lcommaaccent' => 278.0,
|
||||
'tcaron' => 326.0,
|
||||
'eogonek' => 444.0,
|
||||
'Uogonek' => 722.0,
|
||||
193 => 722.0,
|
||||
196 => 722.0,
|
||||
232 => 444.0,
|
||||
'zacute' => 444.0,
|
||||
'iogonek' => 278.0,
|
||||
211 => 722.0,
|
||||
243 => 500.0,
|
||||
'amacron' => 444.0,
|
||||
'sacute' => 389.0,
|
||||
239 => 278.0,
|
||||
212 => 722.0,
|
||||
217 => 722.0,
|
||||
'Delta' => 612.0,
|
||||
254 => 500.0,
|
||||
178 => 300.0,
|
||||
214 => 722.0,
|
||||
181 => 500.0,
|
||||
236 => 278.0,
|
||||
'ohungarumlaut' => 500.0,
|
||||
'Eogonek' => 611.0,
|
||||
'dcroat' => 500.0,
|
||||
190 => 750.0,
|
||||
'Scedilla' => 556.0,
|
||||
'lcaron' => 344.0,
|
||||
'Kcommaaccent' => 722.0,
|
||||
'Lacute' => 611.0,
|
||||
153 => 980.0,
|
||||
'edotaccent' => 444.0,
|
||||
204 => 333.0,
|
||||
'Imacron' => 333.0,
|
||||
'Lcaron' => 611.0,
|
||||
189 => 750.0,
|
||||
'lessequal' => 549.0,
|
||||
244 => 500.0,
|
||||
241 => 500.0,
|
||||
'Uhungarumlaut' => 722.0,
|
||||
201 => 611.0,
|
||||
'emacron' => 444.0,
|
||||
'gbreve' => 500.0,
|
||||
188 => 750.0,
|
||||
138 => 556.0,
|
||||
'Scommaaccent' => 556.0,
|
||||
'Ohungarumlaut' => 722.0,
|
||||
176 => 400.0,
|
||||
242 => 500.0,
|
||||
'Ccaron' => 667.0,
|
||||
249 => 500.0,
|
||||
'radical' => 453.0,
|
||||
'Dcaron' => 722.0,
|
||||
'rcommaaccent' => 333.0,
|
||||
209 => 722.0,
|
||||
245 => 500.0,
|
||||
'Rcommaaccent' => 667.0,
|
||||
'Lcommaaccent' => 611.0,
|
||||
195 => 722.0,
|
||||
'Aogonek' => 722.0,
|
||||
197 => 722.0,
|
||||
213 => 722.0,
|
||||
'zdotaccent' => 444.0,
|
||||
'Ecaron' => 611.0,
|
||||
'Iogonek' => 333.0,
|
||||
'kcommaaccent' => 500.0,
|
||||
'minus' => 564.0,
|
||||
206 => 333.0,
|
||||
'ncaron' => 500.0,
|
||||
'tcommaaccent' => 278.0,
|
||||
172 => 564.0,
|
||||
246 => 500.0,
|
||||
252 => 500.0,
|
||||
'notequal' => 549.0,
|
||||
'gcommaaccent' => 500.0,
|
||||
240 => 500.0,
|
||||
158 => 444.0,
|
||||
'ncommaaccent' => 500.0,
|
||||
185 => 300.0,
|
||||
'imacron' => 278.0,
|
||||
128 => 500.0,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 6,
|
||||
);
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,110 @@
|
||||
<?php return array (
|
||||
'sans-serif' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Helvetica',
|
||||
'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
|
||||
),
|
||||
'times' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Times-Roman',
|
||||
'bold' => $rootDir . '/lib/fonts/Times-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Times-Italic',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
|
||||
),
|
||||
'times-roman' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Times-Roman',
|
||||
'bold' => $rootDir . '/lib/fonts/Times-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Times-Italic',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
|
||||
),
|
||||
'courier' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Courier',
|
||||
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
|
||||
),
|
||||
'helvetica' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Helvetica',
|
||||
'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
|
||||
),
|
||||
'zapfdingbats' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/ZapfDingbats',
|
||||
'bold' => $rootDir . '/lib/fonts/ZapfDingbats',
|
||||
'italic' => $rootDir . '/lib/fonts/ZapfDingbats',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/ZapfDingbats',
|
||||
),
|
||||
'symbol' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Symbol',
|
||||
'bold' => $rootDir . '/lib/fonts/Symbol',
|
||||
'italic' => $rootDir . '/lib/fonts/Symbol',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Symbol',
|
||||
),
|
||||
'serif' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Times-Roman',
|
||||
'bold' => $rootDir . '/lib/fonts/Times-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Times-Italic',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
|
||||
),
|
||||
'monospace' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Courier',
|
||||
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
|
||||
),
|
||||
'fixed' => array(
|
||||
'normal' => $rootDir . '/lib/fonts/Courier',
|
||||
'bold' => $rootDir . '/lib/fonts/Courier-Bold',
|
||||
'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
|
||||
),
|
||||
'dejavu sans' => array(
|
||||
'bold' => $rootDir . '/lib/fonts/DejaVuSans-Bold',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSans-BoldOblique',
|
||||
'italic' => $rootDir . '/lib/fonts/DejaVuSans-Oblique',
|
||||
'normal' => $rootDir . '/lib/fonts/DejaVuSans',
|
||||
),
|
||||
'dejavu sans mono' => array(
|
||||
'bold' => $rootDir . '/lib/fonts/DejaVuSansMono-Bold',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSansMono-BoldOblique',
|
||||
'italic' => $rootDir . '/lib/fonts/DejaVuSansMono-Oblique',
|
||||
'normal' => $rootDir . '/lib/fonts/DejaVuSansMono',
|
||||
),
|
||||
'dejavu serif' => array(
|
||||
'bold' => $rootDir . '/lib/fonts/DejaVuSerif-Bold',
|
||||
'bold_italic' => $rootDir . '/lib/fonts/DejaVuSerif-BoldItalic',
|
||||
'italic' => $rootDir . '/lib/fonts/DejaVuSerif-Italic',
|
||||
'normal' => $rootDir . '/lib/fonts/DejaVuSerif',
|
||||
),
|
||||
'cwtexkai' => array(
|
||||
'500' => $fontDir . '/cwtexkai-500_f9ebc6334543dec371b780ca16a50941',
|
||||
),
|
||||
'fireflysung' => array(
|
||||
'500' => $fontDir . '/fireflysung-500_f9ebc6334543dec371b780ca16a50941',
|
||||
),
|
||||
'simhei' => array(
|
||||
'normal' => $fontDir . 'simhei',
|
||||
'bold' => $fontDir . 'simhei',
|
||||
'bold_italic' => $fontDir . 'simhei',
|
||||
'italic' => $fontDir . 'simhei'
|
||||
),
|
||||
'droidsans' => array(
|
||||
'normal' => $fontDir . '/DroidSansFallback',
|
||||
'bold' => $fontDir . '/DroidSansFallback',
|
||||
'italic' => $fontDir . '/DroidSansFallback',
|
||||
'bold_italic' => $fontDir . '/DroidSansFallback',
|
||||
),
|
||||
'droidsansfallback' => array(
|
||||
'normal' => $fontDir . '/DroidSansFallback',
|
||||
'bold' => $fontDir . '/DroidSansFallback',
|
||||
'italic' => $fontDir . '/DroidSansFallback',
|
||||
'bold_italic' => $fontDir . '/DroidSansFallback',
|
||||
),
|
||||
'noto' => array(
|
||||
'normal' => $fontDir . '/NotoSerifSC-Regular',
|
||||
'bold' => $fontDir . '/NotoSerifSC-Regular',
|
||||
'italic' => $fontDir . '/NotoSerifSC-Regular',
|
||||
'bold_italic' => $fontDir . '/NotoSerifSC-Regular',
|
||||
),
|
||||
) ?>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Submodule
+1
Submodule utils added at 47ddd6dedb
Reference in New Issue
Block a user