dbfdg
creatorId())->get()->pluck('name', 'id');
$vender->prepend('Select Vendor', '');
$status = Purchase::$statues;
$purchases = Purchase::where('created_by', '=', \Auth::user()->creatorId())->with(['vender','category'])->get();
return view('purchase.index', compact('purchases', 'status','vender'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create($vendorId)
{
if(\Auth::user()->can('create purchase'))
{
$customFields = CustomField::where('created_by', '=', \Auth::user()->creatorId())->where('module', '=', 'purchase')->get();
$category = ProductServiceCategory::where('created_by', \Auth::user()->creatorId())->where('type', 'expense')->get()->pluck('name', 'id');
$category->prepend('Select Category', '');
$purchase_number = \Auth::user()->purchaseNumberFormat($this->purchaseNumber());
$venders = Vender::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$venders->prepend('Select Vender', '');
$warehouse = warehouse::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$warehouse->prepend('Select Warehouse', '');
$product_services = ProductService::where('created_by', \Auth::user()->creatorId())->where('type','!=', 'service')->get()->pluck('name', 'id');
$product_services->prepend('--', '');
return view('purchase.create', compact('venders', 'purchase_number', 'product_services', 'category', 'customFields','vendorId','warehouse'));
}
else
{
return response()->json(['error' => __('Permission denied.')], 401);
}
}
/**
* 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('create purchase'))
{
$validator = \Validator::make(
$request->all(), [
'vender_id' => 'required',
'warehouse_id' => 'required',
'purchase_date' => 'required',
'category_id' => 'required',
'items' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$purchase = new Purchase();
$purchase->purchase_id = $this->purchaseNumber();
$purchase->vender_id = $request->vender_id;
$purchase->warehouse_id = $request->warehouse_id;
$purchase->purchase_date = $request->purchase_date;
$purchase->purchase_number = !empty($request->purchase_number) ? $request->purchase_number : 0;
$purchase->status = 0;
// $purchase->discount_apply = isset($request->discount_apply) ? 1 : 0;
$purchase->category_id = $request->category_id;
$purchase->created_by = \Auth::user()->creatorId();
$purchase->save();
$products = $request->items;
for($i = 0; $i < count($products); $i++)
{
$purchaseProduct = new PurchaseProduct();
$purchaseProduct->purchase_id = $purchase->id;
$purchaseProduct->product_id = $products[$i]['item'];
$purchaseProduct->quantity = $products[$i]['quantity'];
$purchaseProduct->tax = $products[$i]['tax'];
// $purchaseProduct->discount = isset($products[$i]['discount']) ? $products[$i]['discount'] : 0;
$purchaseProduct->discount = $products[$i]['discount'];
$purchaseProduct->price = $products[$i]['price'];
$purchaseProduct->description = $products[$i]['description'];
$purchaseProduct->save();
//inventory management (Quantity)
Utility::total_quantity('plus',$purchaseProduct->quantity,$purchaseProduct->product_id);
//Product Stock Report
$type='purchase';
$type_id = $purchase->id;
$description=$products[$i]['quantity'].' '.__(' quantity add in purchase').' '. \Auth::user()->purchaseNumberFormat($purchase->purchase_id);
Utility::addProductStock( $products[$i]['item'],$products[$i]['quantity'],$type,$description,$type_id);
//Warehouse Stock Report
if(isset($products[$i]['item']))
{
Utility::addWarehouseStock( $products[$i]['item'],$products[$i]['quantity'],$request->warehouse_id);
}
}
return redirect()->route('purchase.index', $purchase->id)->with('success', __('Purchase successfully created.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function show($ids)
{
if(\Auth::user()->can('show purchase'))
{
try {
$id = Crypt::decrypt($ids);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Purchase Not Found.'));
}
$id = Crypt::decrypt($ids);
$purchase = Purchase::find($id);
if($purchase->created_by == \Auth::user()->creatorId())
{
$purchasePayment = PurchasePayment::where('purchase_id', $purchase->id)->first();
$vendor = $purchase->vender;
$iteams = $purchase->items;
return view('purchase.view', compact('purchase', 'vendor', 'iteams', 'purchasePayment'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function edit($idsd)
{
if(\Auth::user()->can('edit purchase'))
{
$idwww = Crypt::decrypt($idsd);
$purchase = Purchase::find($idwww);
$category = ProductServiceCategory::where('created_by', \Auth::user()->creatorId())->where('type', 'expense')->get()->pluck('name', 'id');
$category->prepend('Select Category', '');
$warehouse = warehouse::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$purchase_number = \Auth::user()->purchaseNumberFormat($purchase->purchase_id);
$venders = Vender::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$product_services = ProductService::where('created_by', \Auth::user()->creatorId())->where('type','!=', 'service')->get()->pluck('name', 'id');
return view('purchase.edit', compact('venders', 'product_services', 'purchase', 'warehouse','purchase_number', 'category'));
}
else
{
return response()->json(['error' => __('Permission denied.')], 401);
}
}
public function update(Request $request, Purchase $purchase)
{
if(\Auth::user()->can('edit purchase'))
{
if($purchase->created_by == \Auth::user()->creatorId())
{
$validator = \Validator::make(
$request->all(), [
'vender_id' => 'required',
'purchase_date' => 'required',
'items' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->route('purchase.index')->with('error', $messages->first());
}
$purchase->vender_id = $request->vender_id;
$purchase->purchase_date = $request->purchase_date;
$purchase->category_id = $request->category_id;
$purchase->save();
$products = $request->items;
for($i = 0; $i < count($products); $i++)
{
$purchaseProduct = PurchaseProduct::find($products[$i]['id']);
if($purchaseProduct == null)
{
$purchaseProduct = new PurchaseProduct();
$purchaseProduct->purchase_id = $purchase->id;
Utility::total_quantity('plus',$products[$i]['quantity'],$products[$i]['item']);
$old_qty=0;
}
else{
$old_qty = $purchaseProduct->quantity;
Utility::total_quantity('minus',$purchaseProduct->quantity,$purchaseProduct->product_id);
}
if(isset($products[$i]['item']))
{
$purchaseProduct->product_id = $products[$i]['item'];
}
$purchaseProduct->quantity = $products[$i]['quantity'];
$purchaseProduct->tax = $products[$i]['tax'];
$purchaseProduct->discount = $products[$i]['discount'];
$purchaseProduct->price = $products[$i]['price'];
$purchaseProduct->description = $products[$i]['description'];
$purchaseProduct->save();
if ($products[$i]['id']>0) {
Utility::total_quantity('plus',$products[$i]['quantity'],$purchaseProduct->product_id);
}
//Product Stock Report
$type='purchase';
$type_id = $purchase->id;
StockReport::where('type','=','purchase')->where('type_id','=',$purchase->id)->delete();
$description=$products[$i]['quantity'].' '.__(' quantity add in purchase').' '. \Auth::user()->purchaseNumberFormat($purchase->purchase_id);
if(isset($products[$i]['item']) ){
Utility::addProductStock( $products[$i]['item'],$products[$i]['quantity'],$type,$description,$type_id);
}
//Warehouse Stock Report
$new_qty = $purchaseProduct->quantity;
$total_qty= $new_qty - $old_qty;
if(isset($products[$i]['item'])){
Utility::addWarehouseStock($products[$i]['item'],$total_qty,$request->warehouse_id);
}
}
return redirect()->route('purchase.index')->with('success', __('Purchase successfully updated.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Purchase $purchase
* @return \Illuminate\Http\Response
*/
public function destroy(Purchase $purchase)
{
if(\Auth::user()->can('delete purchase'))
{
if($purchase->created_by == \Auth::user()->creatorId())
{
$purchase_products = PurchaseProduct::where('purchase_id',$purchase->id)->get();
$purchasepayments = $purchase->payments;
foreach($purchasepayments as $key => $value)
{
$purchasepayment = PurchasePayment::find($value->id)->first();
$purchasepayment->delete();
}
foreach($purchase_products as $purchase_product)
{
$warehouse_qty = WarehouseProduct::where('warehouse_id',$purchase->warehouse_id)->where('product_id',$purchase_product->product_id)->first();
$warehouse_transfers = WarehouseTransfer::where('product_id',$purchase_product->product_id)->where('from_warehouse',$purchase->warehouse_id)->get();
foreach ($warehouse_transfers as $warehouse_transfer)
{
$temp = WarehouseProduct::where('warehouse_id',$warehouse_transfer->to_warehouse)->first();
if($temp)
{
$temp->quantity = $temp->quantity - $warehouse_transfer->quantity;
if($temp->quantity > 0)
{
$temp->save();
}
else
{
$temp->delete();
}
}
}
if(!empty($warehouse_qty))
{
$warehouse_qty->quantity = $warehouse_qty->quantity - $purchase_product->quantity;
if( $warehouse_qty->quantity > 0)
{
$warehouse_qty->save();
}
else
{
$warehouse_qty->delete();
}
}
$product_qty = ProductService::where('id',$purchase_product->product_id)->first();
if(!empty($product_qty))
{
$product_qty->quantity = $product_qty->quantity - $purchase_product->quantity;
$product_qty->save();
}
$purchase_product->delete();
}
$purchase->delete();
PurchaseProduct::where('purchase_id', '=', $purchase->id)->delete();
return redirect()->route('purchase.index')->with('success', __('Purchase successfully deleted.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
function purchaseNumber()
{
$latest = Purchase::where('created_by', '=', \Auth::user()->creatorId())->latest()->first();
if(!$latest)
{
return 1;
}
return $latest->purchase_id + 1;
}
public function sent($id)
{
if(\Auth::user()->can('send purchase'))
{
$purchase = Purchase::where('id', $id)->first();
$purchase->send_date = date('Y-m-d');
$purchase->status = 1;
$purchase->save();
$vender = Vender::where('id', $purchase->vender_id)->first();
$purchase->name = !empty($vender) ? $vender->name : '';
$purchase->purchase = \Auth::user()->purchaseNumberFormat($purchase->purchase_id);
$purchaseId = Crypt::encrypt($purchase->id);
$purchase->url = route('purchase.pdf', $purchaseId);
Utility::userBalance('vendor', $vender->id, $purchase->getTotal(), 'credit');
$vendorArr = [
'vender_bill_name' => $purchase->name,
'vender_bill_number' =>$purchase->purchase,
'vender_bill_url' => $purchase->url,
];
$resp = \App\Models\Utility::sendEmailTemplate('vender_bill_sent', [$vender->id => $vender->email], $vendorArr);
return redirect()->back()->with('success', __('Purchase successfully sent.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function resent($id)
{
if(\Auth::user()->can('send purchase'))
{
$purchase = Purchase::where('id', $id)->first();
$vender = Vender::where('id', $purchase->vender_id)->first();
$purchase->name = !empty($vender) ? $vender->name : '';
$purchase->purchase = \Auth::user()->purchaseNumberFormat($purchase->purchase_id);
$purchaseId = Crypt::encrypt($purchase->id);
$purchase->url = route('purchase.pdf', $purchaseId);
//
// Send Email
// $setings = Utility::settings();
//
// if($setings['bill_resend'] == 1)
// {
// $bill = Bill::where('id', $id)->first();
// $vender = Vender::where('id', $bill->vender_id)->first();
// $bill->name = !empty($vender) ? $vender->name : '';
// $bill->bill = \Auth::user()->billNumberFormat($bill->bill_id);
// $billId = Crypt::encrypt($bill->id);
// $bill->url = route('bill.pdf', $billId);
// $billResendArr = [
// 'vender_name' => $vender->name,
// 'vender_email' => $vender->email,
// 'bill_name' => $bill->name,
// 'bill_number' => $bill->bill,
// 'bill_url' =>$bill->url,
// ];
//
// $resp = Utility::sendEmailTemplate('bill_resend', [$vender->id => $vender->email], $billResendArr);
//
//
// }
//
// return redirect()->back()->with('success', __('Bill successfully sent.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
//
return redirect()->back()->with('success', __('Bill successfully sent.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function purchase($purchase_id)
{
$settings = Utility::settings();
$purchaseId = Crypt::decrypt($purchase_id);
$purchase = Purchase::where('id', $purchaseId)->first();
$data = DB::table('settings');
$data = $data->where('created_by', '=', $purchase->created_by);
$data1 = $data->get();
foreach($data1 as $row)
{
$settings[$row->name] = $row->value;
}
$vendor = $purchase->vender;
$totalTaxPrice = 0;
$totalQuantity = 0;
$totalRate = 0;
$totalDiscount = 0;
$taxesData = [];
$items = [];
foreach($purchase->items as $product)
{
$item = new \stdClass();
$item->name = !empty($product->product) ? $product->product->name : '';
$item->quantity = $product->quantity;
$item->tax = $product->tax;
$item->discount = $product->discount;
$item->price = $product->price;
$item->description = $product->description;
$totalQuantity += $item->quantity;
$totalRate += $item->price;
$totalDiscount += $item->discount;
$taxes = Utility::tax($product->tax);
$itemTaxes = [];
if(!empty($item->tax))
{
foreach($taxes as $tax)
{
$taxPrice = Utility::taxRate($tax->rate, $item->price, $item->quantity,$item->discount);
$totalTaxPrice += $taxPrice;
$itemTax['name'] = $tax->name;
$itemTax['rate'] = $tax->rate . '%';
$itemTax['price'] = Utility::priceFormat($settings, $taxPrice);
$itemTax['tax_price'] =$taxPrice;
$itemTaxes[] = $itemTax;
if(array_key_exists($tax->name, $taxesData))
{
$taxesData[$tax->name] = $taxesData[$tax->name] + $taxPrice;
}
else
{
$taxesData[$tax->name] = $taxPrice;
}
}
$item->itemTax = $itemTaxes;
}
else
{
$item->itemTax = [];
}
$items[] = $item;
}
$purchase->itemData = $items;
$purchase->totalTaxPrice = $totalTaxPrice;
$purchase->totalQuantity = $totalQuantity;
$purchase->totalRate = $totalRate;
$purchase->totalDiscount = $totalDiscount;
$purchase->taxesData = $taxesData;
// $logo = asset(Storage::url('uploads/logo/'));
// $company_logo = Utility::getValByName('company_logo_dark');
// $img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
$logo = asset(Storage::url('uploads/logo/'));
$company_logo = Utility::getValByName('company_logo_dark');
$purchase_logo = Utility::getValByName('purchase_logo');
if(isset($purchase_logo) && !empty($purchase_logo))
{
$img = Utility::get_file('purchase_logo/') . $purchase_logo;
}
else{
$img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
}
if($purchase)
{
$color = '#' . $settings['purchase_color'];
$font_color = Utility::getFontColor($color);
return view('purchase.templates.' . $settings['purchase_template'], compact('purchase', 'color', 'settings', 'vendor', 'img', 'font_color'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function previewPurchase($template, $color)
{
$objUser = \Auth::user();
$settings = Utility::settings();
$purchase = new Purchase();
$vendor = new \stdClass();
$vendor->email = '';
$vendor->shipping_name = '';
$vendor->shipping_country = '';
$vendor->shipping_state = '';
$vendor->shipping_city = '';
$vendor->shipping_phone = '';
$vendor->shipping_zip = '';
$vendor->shipping_address = '';
$vendor->billing_name = '';
$vendor->billing_country = '';
$vendor->billing_state = '';
$vendor->billing_city = '';
$vendor->billing_phone = '';
$vendor->billing_zip = '';
$vendor->billing_address = '';
$totalTaxPrice = 0;
$taxesData = [];
$items = [];
for($i = 1; $i <= 3; $i++)
{
$item = new \stdClass();
$item->name = 'Item ' . $i;
$item->quantity = 1;
$item->tax = 5;
$item->discount = 50;
$item->price = 100;
$taxes = [
'Tax 1',
'Tax 2',
];
$itemTaxes = [];
foreach($taxes as $k => $tax)
{
$taxPrice = 10;
$totalTaxPrice += $taxPrice;
$itemTax['name'] = 'Tax ' . $k;
$itemTax['rate'] = '10 %';
$itemTax['price'] = '$10';
$itemTax['tax_price'] = 10;
$itemTaxes[] = $itemTax;
if(array_key_exists('Tax ' . $k, $taxesData))
{
$taxesData['Tax ' . $k] = $taxesData['Tax 1'] + $taxPrice;
}
else
{
$taxesData['Tax ' . $k] = $taxPrice;
}
}
$item->itemTax = $itemTaxes;
$items[] = $item;
}
$purchase->purchase_id = 1;
$purchase->issue_date = date('Y-m-d H:i:s');
// $purchase->due_date = date('Y-m-d H:i:s');
$purchase->itemData = $items;
$purchase->totalTaxPrice = 60;
$purchase->totalQuantity = 3;
$purchase->totalRate = 300;
$purchase->totalDiscount = 10;
$purchase->taxesData = $taxesData;
$purchase->created_by = $objUser->creatorId();
$preview = 1;
$color = '#' . $color;
$font_color = Utility::getFontColor($color);
$logo = asset(Storage::url('uploads/logo/'));
$company_logo = Utility::getValByName('company_logo_dark');
$settings_data = \App\Models\Utility::settingsById($purchase->created_by);
$purchase_logo = $settings_data['purchase_logo'];
if(isset($purchase_logo) && !empty($purchase_logo))
{
$img = Utility::get_file('purchase_logo/') . $purchase_logo;
}
else{
$img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
}
return view('purchase.templates.' . $template, compact('purchase', 'preview', 'color', 'img', 'settings', 'vendor', 'font_color'));
}
public function savePurchaseTemplateSettings(Request $request)
{
$post = $request->all();
unset($post['_token']);
if(isset($post['purchase_template']) && (!isset($post['purchase_color']) || empty($post['purchase_color'])))
{
$post['purchase_color'] = "ffffff";
}
if($request->purchase_logo)
{
$dir = 'purchase_logo/';
$purchase_logo = \Auth::user()->id . '_purchase_logo.png';
$validation =[
'mimes:'.'png',
'max:'.'20480',
];
$path = Utility::upload_file($request,'purchase_logo',$purchase_logo,$dir,$validation);
if($path['flag']==0)
{
return redirect()->back()->with('error', __($path['msg']));
}
$post['purchase_logo'] = $purchase_logo;
}
foreach($post as $key => $data)
{
\DB::insert(
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
$data,
$key,
\Auth::user()->creatorId(),
]
);
}
return redirect()->back()->with('success', __('Purchase Setting updated successfully'));
}
public function items(Request $request)
{
$items = PurchaseProduct::where('purchase_id', $request->purchase_id)->where('product_id', $request->product_id)->first();
return json_encode($items);
}
public function purchaseLink($purchaseId)
{
try {
$id = Crypt::decrypt($purchaseId);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Purchase Not Found.'));
}
$id = Crypt::decrypt($purchaseId);
$purchase = Purchase::find($id);
if(!empty($purchase))
{
$user_id = $purchase->created_by;
$user = User::find($user_id);
$purchasePayment = PurchasePayment::where('purchase_id', $purchase->id)->first();
$vendor = $purchase->vender;
$iteams = $purchase->items;
return view('purchase.customer_bill', compact('purchase', 'vendor', 'iteams','purchasePayment','user'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function payment($purchase_id)
{
if(\Auth::user()->can('create payment purchase'))
{
$purchase = Purchase::where('id', $purchase_id)->first();
$venders = Vender::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$categories = ProductServiceCategory::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$accounts = BankAccount::select('*', \DB::raw("CONCAT(bank_name,' ',holder_name) AS name"))->where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
return view('purchase.payment', compact('venders', 'categories', 'accounts', 'purchase'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function createPayment(Request $request, $purchase_id)
{
if(\Auth::user()->can('create payment purchase'))
{
$validator = \Validator::make(
$request->all(), [
'date' => 'required',
'amount' => 'required',
'account_id' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$purchasePayment = new PurchasePayment();
$purchasePayment->purchase_id = $purchase_id;
$purchasePayment->date = $request->date;
$purchasePayment->amount = $request->amount;
$purchasePayment->account_id = $request->account_id;
$purchasePayment->payment_method = 0;
$purchasePayment->reference = $request->reference;
$purchasePayment->description = $request->description;
if(!empty($request->add_receipt))
{
$fileName = time() . "_" . $request->add_receipt->getClientOriginalName();
$request->add_receipt->storeAs('uploads/payment', $fileName);
$purchasePayment->add_receipt = $fileName;
}
$purchasePayment->save();
$purchase = Purchase::where('id', $purchase_id)->first();
$due = $purchase->getDue();
$total = $purchase->getTotal();
if($purchase->status == 0)
{
$purchase->send_date = date('Y-m-d');
$purchase->save();
}
if($due <= 0)
{
$purchase->status = 4;
$purchase->save();
}
else
{
$purchase->status = 3;
$purchase->save();
}
$purchasePayment->user_id = $purchase->vender_id;
$purchasePayment->user_type = 'Vender';
$purchasePayment->type = 'Partial';
$purchasePayment->created_by = \Auth::user()->id;
$purchasePayment->payment_id = $purchasePayment->id;
$purchasePayment->category = 'Bill';
$purchasePayment->account = $request->account_id;
Transaction::addTransaction($purchasePayment);
$vender = Vender::where('id', $purchase->vender_id)->first();
$payment = new PurchasePayment();
$payment->name = $vender['name'];
$payment->method = '-';
$payment->date = \Auth::user()->dateFormat($request->date);
$payment->amount = \Auth::user()->priceFormat($request->amount);
$payment->bill = 'bill ' . \Auth::user()->purchaseNumberFormat($purchasePayment->purchase_id);
Utility::userBalance('vendor', $purchase->vender_id, $request->amount, 'debit');
Utility::bankAccountBalance($request->account_id, $request->amount, 'debit');
// Send Email
$setings = Utility::settings();
if($setings['new_bill_payment'] == 1)
{
$vender = Vender::where('id', $purchase->vender_id)->first();
$billPaymentArr = [
'vender_name' => $vender->name,
'vender_email' => $vender->email,
'payment_name' =>$payment->name,
'payment_amount'=>$payment->amount,
'payment_bill' =>$payment->bill,
'payment_date' =>$payment->date,
'payment_method'=>$payment->method,
'company_name'=>$payment->method,
];
$resp = Utility::sendEmailTemplate('new_bill_payment', [$vender->id => $vender->email], $billPaymentArr);
return redirect()->back()->with('success', __('Payment successfully added.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
return redirect()->back()->with('success', __('Payment successfully added.'));
}
}
public function paymentDestroy(Request $request, $purchase_id, $payment_id)
{
if(\Auth::user()->can('delete payment purchase'))
{
$payment = PurchasePayment::find($payment_id);
PurchasePayment::where('id', '=', $payment_id)->delete();
$purchase = Purchase::where('id', $purchase_id)->first();
$due = $purchase->getDue();
$total = $purchase->getTotal();
if($due > 0 && $total != $due)
{
$purchase->status = 3;
}
else
{
$purchase->status = 2;
}
Utility::userBalance('vendor', $purchase->vender_id, $payment->amount, 'credit');
Utility::bankAccountBalance($payment->account_id, $payment->amount, 'credit');
$purchase->save();
$type = 'Partial';
$user = 'Vender';
Transaction::destroyTransaction($payment_id, $type, $user);
return redirect()->back()->with('success', __('Payment successfully deleted.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function vender(Request $request)
{
$vender = Vender::where('id', '=', $request->id)->first();
return view('purchase.vender_detail', compact('vender'));
}
public function product(Request $request)
{
$data['product'] = $product = ProductService::find($request->product_id);
$data['unit'] = !empty($product->unit) ? $product->unit->name : '';
$data['taxRate'] = $taxRate = !empty($product->tax_id) ? $product->taxRate($product->tax_id) : 0;
$data['taxes'] = !empty($product->tax_id) ? $product->tax($product->tax_id) : 0;
$salePrice = $product->purchase_price;
$quantity = 1;
$taxPrice = ($taxRate / 100) * ($salePrice * $quantity);
$data['totalAmount'] = ($salePrice * $quantity);
return json_encode($data);
}
public function productDestroy(Request $request)
{
if(\Auth::user()->can('delete purchase'))
{
$res = PurchaseProduct::where('id', '=', $request->id)->first();
// $res1 = PurchaseProduct::where('purchase_id', '=', $res->purchase_id)->where('product_id', '=', $res->product_id)->get();
$purchase = Purchase::where('created_by', '=', \Auth::user()->creatorId())->first();
$warehouse_id= $purchase->warehouse_id;
$ware_pro =WarehouseProduct::where('warehouse_id',$warehouse_id)->where('product_id',$res->product_id)->first();
$qty = $ware_pro->quantity;
if($res->quantity == $qty || $res->quantity > $qty)
{
$ware_pro->delete();
}
elseif($res->quantity < $qty)
{
$ware_pro->quantity = $qty - $res->quantity;
$ware_pro->save();
}
PurchaseProduct::where('id', '=', $request->id)->delete();
return redirect()->back()->with('success', __('Purchase product successfully deleted.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
}