266 lines
12 KiB
PHP
266 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\InvoiceLayout;
|
|
use App\Utils\Util;
|
|
use Illuminate\Http\Request;
|
|
use Validator;
|
|
|
|
class InvoiceLayoutController extends Controller
|
|
{
|
|
protected $commonUtil;
|
|
|
|
public function __construct(Util $commonUtil)
|
|
{
|
|
$this->commonUtil = $commonUtil;
|
|
}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
if (! auth()->user()->can('invoice_settings.access')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$designs = $this->getDesigns();
|
|
$common_settings = session()->get('business.common_settings');
|
|
$is_warranty_enabled = ! empty($common_settings['enable_product_warranty']) ? true : false;
|
|
$has_number_formatter = class_exists(\NumberFormatter::class);
|
|
|
|
return view('invoice_layout.create')->with(compact('designs', 'is_warranty_enabled', 'has_number_formatter'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
if (! auth()->user()->can('invoice_settings.access')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$validator = Validator::make($request->all(), [
|
|
'logo' => 'mimes:jpeg,gif,png|1000',
|
|
]);
|
|
|
|
$input = $request->only(['name', 'header_text',
|
|
'invoice_no_prefix', 'invoice_heading', 'sub_total_label', 'discount_label', 'tax_label', 'total_label', 'highlight_color', 'footer_text', 'invoice_heading_not_paid', 'invoice_heading_paid', 'total_due_label', 'customer_label', 'paid_label', 'sub_heading_line1', 'sub_heading_line2',
|
|
'sub_heading_line3', 'sub_heading_line4', 'sub_heading_line5',
|
|
'table_product_label', 'table_qty_label', 'table_unit_price_label',
|
|
'table_subtotal_label', 'client_id_label', 'date_label', 'quotation_heading', 'quotation_no_prefix', 'design', 'client_tax_label', 'cat_code_label', 'cn_heading', 'cn_no_label', 'cn_amount_label', 'sales_person_label', 'prev_bal_label', 'date_time_format', 'common_settings', 'change_return_label', 'round_off_label', 'qr_code_fields', 'commission_agent_label', 'previous_balance_due_label',]);
|
|
|
|
$business_id = $request->session()->get('user.business_id');
|
|
$input['business_id'] = $business_id;
|
|
|
|
//Set value for checkboxes
|
|
$checkboxes = ['show_business_name', 'show_location_name', 'show_landmark', 'show_city', 'show_state', 'show_country', 'show_zip_code', 'show_mobile_number', 'show_alternate_number', 'show_email', 'show_tax_1', 'show_tax_2', 'show_logo', 'show_barcode', 'show_payments', 'show_customer', 'show_client_id',
|
|
'show_brand', 'show_sku', 'show_cat_code', 'show_sale_description', 'show_sales_person', 'show_expiry',
|
|
'show_lot', 'show_previous_bal', 'show_previous_balance_due', 'show_image', 'show_reward_point', 'show_qr_code',
|
|
'show_commission_agent', 'show_letter_head', ];
|
|
foreach ($checkboxes as $name) {
|
|
$input[$name] = ! empty($request->input($name)) ? 1 : 0;
|
|
}
|
|
|
|
|
|
//Upload Logo
|
|
$logo_name = $this->commonUtil->uploadFile($request, 'logo', 'invoice_logos', 'image');
|
|
if (! empty($logo_name)) {
|
|
$input['logo'] = $logo_name;
|
|
}
|
|
|
|
$letter_head = $this->commonUtil->uploadFile($request, 'letter_head', 'invoice_logos', 'image');
|
|
if (! empty($letter_head)) {
|
|
$input['letter_head'] = $letter_head;
|
|
}
|
|
|
|
if (! empty($request->input('is_default'))) {
|
|
//get_default
|
|
$default = InvoiceLayout::where('business_id', $business_id)
|
|
->where('is_default', 1)
|
|
->update(['is_default' => 0]);
|
|
$input['is_default'] = 1;
|
|
}
|
|
|
|
//Module info
|
|
if ($request->has('module_info')) {
|
|
$input['module_info'] = json_encode($request->input('module_info'));
|
|
}
|
|
|
|
if (! empty($request->input('table_tax_headings'))) {
|
|
$input['table_tax_headings'] = json_encode($request->input('table_tax_headings'));
|
|
}
|
|
$input['product_custom_fields'] = ! empty($request->input('product_custom_fields')) ? $request->input('product_custom_fields') : null;
|
|
$input['contact_custom_fields'] = ! empty($request->input('contact_custom_fields')) ? $request->input('contact_custom_fields') : null;
|
|
$input['location_custom_fields'] = ! empty($request->input('location_custom_fields')) ? $request->input('location_custom_fields') : null;
|
|
|
|
InvoiceLayout::create($input);
|
|
$output = ['success' => 1,
|
|
'msg' => __('invoice.layout_added_success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = ['success' => 0,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return redirect('invoice-schemes')->with('status', $output);
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param \App\InvoiceLayout $invoiceLayout
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show(InvoiceLayout $invoiceLayout)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param \App\InvoiceLayout $invoiceLayout
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
if (! auth()->user()->can('invoice_settings.access')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$invoice_layout = InvoiceLayout::findOrFail($id);
|
|
|
|
//Module info
|
|
$invoice_layout->module_info = json_decode($invoice_layout->module_info, true);
|
|
$invoice_layout->table_tax_headings = ! empty($invoice_layout->table_tax_headings) ? json_decode($invoice_layout->table_tax_headings) : ['', '', '', ''];
|
|
|
|
$designs = $this->getDesigns();
|
|
$has_number_formatter = class_exists(\NumberFormatter::class);
|
|
|
|
return view('invoice_layout.edit')
|
|
->with(compact('invoice_layout', 'designs', 'has_number_formatter'));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \App\InvoiceLayout $invoiceLayout
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
if (! auth()->user()->can('invoice_settings.access')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
try {
|
|
$validator = Validator::make($request->all(), [
|
|
'logo' => 'mimes:jpeg,gif,png|1000',
|
|
]);
|
|
|
|
$input = $request->only(['name', 'header_text',
|
|
'invoice_no_prefix', 'invoice_heading', 'sub_total_label', 'discount_label', 'tax_label', 'total_label', 'highlight_color', 'footer_text', 'invoice_heading_not_paid', 'invoice_heading_paid', 'total_due_label', 'customer_label', 'paid_label', 'sub_heading_line1', 'sub_heading_line2',
|
|
'sub_heading_line3', 'sub_heading_line4', 'sub_heading_line5',
|
|
'table_product_label', 'table_qty_label', 'table_unit_price_label',
|
|
'table_subtotal_label', 'client_id_label', 'date_label', 'quotation_heading', 'quotation_no_prefix', 'design',
|
|
'client_tax_label', 'cat_code_label', 'cn_heading', 'cn_no_label', 'cn_amount_label',
|
|
'sales_person_label', 'prev_bal_label', 'date_time_format', 'change_return_label', 'round_off_label', 'commission_agent_label', 'previous_balance_due_label',]);
|
|
$business_id = $request->session()->get('user.business_id');
|
|
|
|
$checkboxes = ['show_business_name', 'show_location_name', 'show_landmark', 'show_city', 'show_state', 'show_country', 'show_zip_code', 'show_mobile_number', 'show_alternate_number', 'show_email', 'show_tax_1', 'show_tax_2', 'show_logo', 'show_barcode', 'show_payments', 'show_customer', 'show_client_id',
|
|
'show_brand', 'show_sku', 'show_cat_code', 'show_sale_description', 'show_sales_person',
|
|
'show_expiry', 'show_lot', 'show_previous_bal', 'show_previous_balance_due', 'show_image', 'show_reward_point',
|
|
'show_qr_code', 'show_commission_agent', 'show_letter_head', ];
|
|
foreach ($checkboxes as $name) {
|
|
$input[$name] = ! empty($request->input($name)) ? 1 : 0;
|
|
}
|
|
|
|
//Upload Logo
|
|
$logo_name = $this->commonUtil->uploadFile($request, 'logo', 'invoice_logos', 'image');
|
|
if (! empty($logo_name)) {
|
|
$input['logo'] = $logo_name;
|
|
}
|
|
|
|
//Upload letter head
|
|
$letter_head = $this->commonUtil->uploadFile($request, 'letter_head', 'invoice_logos', 'image');
|
|
if (! empty($letter_head)) {
|
|
$input['letter_head'] = $letter_head;
|
|
}
|
|
|
|
if (! empty($request->input('is_default'))) {
|
|
//get_default
|
|
$default = InvoiceLayout::where('business_id', $business_id)
|
|
->where('is_default', 1)
|
|
->update(['is_default' => 0]);
|
|
$input['is_default'] = 1;
|
|
}
|
|
|
|
//Module info
|
|
if ($request->has('module_info')) {
|
|
$input['module_info'] = json_encode($request->input('module_info'));
|
|
}
|
|
|
|
if (! empty($request->input('table_tax_headings'))) {
|
|
$input['table_tax_headings'] = json_encode($request->input('table_tax_headings'));
|
|
}
|
|
|
|
$input['product_custom_fields'] = ! empty($request->input('product_custom_fields')) ? json_encode($request->input('product_custom_fields')) : null;
|
|
$input['contact_custom_fields'] = ! empty($request->input('contact_custom_fields')) ? json_encode($request->input('contact_custom_fields')) : null;
|
|
$input['location_custom_fields'] = ! empty($request->input('location_custom_fields')) ? json_encode($request->input('location_custom_fields')) : null;
|
|
$input['common_settings'] = ! empty($request->input('common_settings')) ? json_encode($request->input('common_settings')) : null;
|
|
$input['qr_code_fields'] = ! empty($request->input('qr_code_fields')) ? json_encode($request->input('qr_code_fields')) : null;
|
|
|
|
InvoiceLayout::where('id', $id)
|
|
->where('business_id', $business_id)
|
|
->update($input);
|
|
$output = ['success' => 1,
|
|
'msg' => __('invoice.layout_updated_success'),
|
|
];
|
|
} catch (\Exception $e) {
|
|
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
|
|
|
|
$output = ['success' => 0,
|
|
'msg' => __('messages.something_went_wrong'),
|
|
];
|
|
}
|
|
|
|
return redirect('invoice-schemes')->with('status', $output);
|
|
}
|
|
|
|
private function getDesigns()
|
|
{
|
|
return ['classic' => __('lang_v1.classic').' ('.__('lang_v1.for_normal_printer').')',
|
|
'elegant' => __('lang_v1.elegant').' ('.__('lang_v1.for_normal_printer').')',
|
|
'detailed' => __('lang_v1.detailed').' ('.__('lang_v1.for_normal_printer').')',
|
|
'columnize-taxes' => __('lang_v1.columnize_taxes').' ('.__('lang_v1.for_normal_printer').')',
|
|
'slim' => __('lang_v1.slim').' ('.__('lang_v1.recomended_for_80mm').')',
|
|
'slim2' => __('lang_v1.slim').' 2 ('.__('lang_v1.recomended_for_58mm').')',
|
|
'english-arabic' => 'English-Arabic ('.__('lang_v1.for_normal_printer').')',
|
|
|
|
];
|
|
}
|
|
}
|