Merge Invoice and Bill into Document

This commit is contained in:
Burak Çakırel
2020-12-24 01:28:38 +03:00
parent 830cc05957
commit 0c1424db47
436 changed files with 31655 additions and 37350 deletions

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Abstracts;
use App\Models\Document\Document;
/**
* @deprecated
* @see Document
*/
abstract class DocumentModel extends Document
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentCancelled;
/**
* @deprecated
* @see DocumentCancelled
*/
class BillCancelled extends DocumentCancelled
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentCreated;
/**
* @deprecated
* @see Document
*/
class BillCreated extends DocumentCreated
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentCreating;
/**
* @deprecated
* @see DocumentCreating
*/
class BillCreating extends DocumentCreating
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentReceived;
/**
* @deprecated
* @see DocumentReceived
*/
class BillReceived extends DocumentReceived
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentRecurring;
/**
* @deprecated
* @see DocumentRecurring
*/
class BillRecurring extends DocumentRecurring
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentReminded;
/**
* @deprecated
* @see DocumentReminded
*/
class BillReminded extends DocumentReminded
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentUpdated;
/**
* @deprecated
* @see DocumentUpdated
*/
class BillUpdated extends DocumentUpdated
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Purchase;
use App\Events\Document\DocumentUpdating;
/**
* @deprecated
* @see DocumentUpdating
*/
class BillUpdating extends DocumentUpdating
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentCancelled;
/**
* @deprecated
* @see DocumentCancelled
*/
class InvoiceCancelled extends DocumentCancelled
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentCreated;
/**
* @deprecated
* @see DocumentCreated
*/
class InvoiceCreated extends DocumentCreated
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentCreating;
/**
* @deprecated
* @see DocumentCreating
*/
class InvoiceCreating extends DocumentCreating
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentPrinting;
/**
* @deprecated
* @see DocumentPrinting
*/
class InvoicePrinting extends DocumentPrinting
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentRecurring;
/**
* @deprecated
* @see DocumentRecurring
*/
class InvoiceRecurring extends DocumentRecurring
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentReminded;
/**
* @deprecated
* @see DocumentReminded
*/
class InvoiceReminded extends DocumentReminded
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentSent;
/**
* @deprecated
* @see DocumentSent
*/
class InvoiceSent extends DocumentSent
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentUpdated;
/**
* @deprecated
* @see DocumentUpdated
*/
class InvoiceUpdated extends DocumentUpdated
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentUpdating;
/**
* @deprecated
* @see DocumentUpdating
*/
class InvoiceUpdating extends DocumentUpdating
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Events\Sale;
use App\Events\Document\DocumentViewed;
/**
* @deprecated
* @see DocumentViewed
*/
class InvoiceViewed extends DocumentViewed
{
}

View File

@@ -0,0 +1,7 @@
<?php
namespace App\Events\Sale;
class PaymentReceived extends \App\Events\Document\PaymentReceived
{
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Exports\Purchases;
use App\Exports\Document\Documents;
use App\Models\Document\Document;
/**
* @deprecated
* @see Document
*/
class Bills extends Documents
{
public function __construct($ids = null, string $type = '')
{
parent::__construct($ids, Document::BILL_TYPE);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Exports\Sales;
use App\Exports\Document\Documents;
use App\Models\Document\Document;
/**
* @deprecated
* @see Document
*/
class Invoices extends Documents
{
public function __construct($ids = null, string $type = '')
{
parent::__construct($ids, Document::INVOICE_TYPE);
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Api\Purchases;
use App\Abstracts\Http\ApiController;
use App\Http\Requests\Document\Document as Request;
use App\Jobs\Document\CreateDocument;
use App\Jobs\Document\DeleteDocument;
use App\Jobs\Document\UpdateDocument;
use App\Models\Document\Document;
use App\Transformers\Purchase\Bill as Transformer;
class Bills extends ApiController
{
/**
* Display a listing of the resource.
*
* @return \Dingo\Api\Http\Response
*/
public function index()
{
$bills = Document::bill()->with('contact', 'histories', 'items', 'transactions')->collect(['issued_at'=> 'desc']);
return $this->response->paginator($bills, new Transformer());
}
/**
* Display the specified resource.
*
* @param Document $document
*
* @return \Dingo\Api\Http\Response
*/
public function show(Document $document)
{
return $this->response->item($document, new Transformer());
}
/**
* Store a newly created resource in storage.
*
* @param $request
*
* @return \Dingo\Api\Http\Response
*/
public function store(Request $request)
{
$bill = $this->dispatch(new CreateDocument($request));
return $this->response->created(route('api.bills.show', $bill->id));
}
/**
* Update the specified resource in storage.
*
* @param $document
* @param $request
*
* @return \Dingo\Api\Http\Response
*/
public function update(Document $document, Request $request)
{
$document = $this->dispatch(new UpdateDocument($document, $request));
return $this->item($document->fresh(), new Transformer());
}
/**
* Remove the specified resource from storage.
*
* @param Document $document
*
* @return \Dingo\Api\Http\Response
*/
public function destroy(Document $document)
{
try {
$this->dispatch(new DeleteDocument($document));
return $this->response->noContent();
} catch(\Exception $e) {
$this->response->errorUnauthorized($e->getMessage());
}
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace App\Http\Controllers\Api\Sales;
use App\Http\Requests\Banking\Transaction as Request;
use App\Jobs\Banking\CreateBankingDocumentTransaction;
use App\Jobs\Banking\DeleteTransaction;
use App\Models\Banking\Transaction;
use App\Models\Document\Document;
use App\Transformers\Banking\Transaction as Transformer;
use Dingo\Api\Routing\Helpers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class InvoiceTransactions extends BaseController
{
use Helpers, AuthorizesRequests, DispatchesJobs, ValidatesRequests;
/**
* Display a listing of the resource.
*
* @param $invoice_id
* @return \Dingo\Api\Http\Response
*/
public function index($invoice_id)
{
$transactions = Transaction::document($invoice_id)->get();
return $this->response->collection($transactions, new Transformer());
}
/**
* Display the specified resource.
*
* @param $invoice_id
* @param $id
* @return \Dingo\Api\Http\Response
*/
public function show($invoice_id, $id)
{
$transaction = Transaction::document($invoice_id)->find($id);
return $this->response->item($transaction, new Transformer());
}
/**
* Store a newly created resource in storage.
*
* @param $invoice_id
* @param $request
* @return \Dingo\Api\Http\Response
*/
public function store($invoice_id, Request $request)
{
$invoice = Document::find($invoice_id);
$transaction = $this->dispatch(new CreateBankingDocumentTransaction($invoice, $request));
return $this->response->created(url('api/invoices/' . $invoice_id . '/transactions/' . $transaction->id));
}
/**
* Remove the specified resource from storage.
*
* @param $invoice_id
* @param $id
* @return \Dingo\Api\Http\Response
*/
public function destroy($invoice_id, $id)
{
$transaction = Transaction::document($invoice_id)->find($id);
$this->dispatch(new DeleteTransaction($transaction));
return $this->response->noContent();
}
}

View File

@@ -0,0 +1,91 @@
<?php
namespace App\Http\Controllers\Api\Sales;
use App\Abstracts\Http\ApiController;
use App\Http\Requests\Document\Document as Request;
use App\Jobs\Document\CreateDocument;
use App\Jobs\Document\DeleteDocument;
use App\Jobs\Document\UpdateDocument;
use App\Models\Document\Document;
use App\Transformers\Sale\Invoice as Transformer;
class Invoices extends ApiController
{
/**
* Display a listing of the resource.
*
* @return \Dingo\Api\Http\Response
*/
public function index()
{
$invoices = Document::invoice()->with('contact', 'histories', 'items', 'transactions')->collect(['issued_at'=> 'desc']);
return $this->response->paginator($invoices, new Transformer());
}
/**
* Display the specified resource.
*
* @param $id
* @return \Dingo\Api\Http\Response
*/
public function show($id)
{
// Check if we're querying by id or number
if (is_numeric($id)) {
$invoice = Document::find($id);
} else {
$invoice = Document::where('document_number', $id)->first();
}
return $this->response->item($invoice, new Transformer());
}
/**
* Store a newly created resource in storage.
*
* @param $request
*
* @return \Dingo\Api\Http\Response
*/
public function store(Request $request)
{
$invoice = $this->dispatch(new CreateDocument($request));
return $this->response->created(route('api.invoices.show', $invoice->id));
}
/**
* Update the specified resource in storage.
*
* @param $document
* @param $request
*
* @return \Dingo\Api\Http\Response
*/
public function update(Document $document, Request $request)
{
$document = $this->dispatch(new UpdateDocument($document, $request));
return $this->response->item($document->fresh(), new Transformer());
}
/**
* Remove the specified resource from storage.
*
* @param Document $document
*
* @return \Dingo\Api\Http\Response
*/
public function destroy(Document $document)
{
try {
$this->dispatch(new DeleteDocument($document));
return $this->response->noContent();
} catch(\Exception $e) {
$this->response->errorUnauthorized($e->getMessage());
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\Document;
/**
* @deprecated
* @see Document
*/
class Bill extends Document
{
/**
* @deprecated
* @see Document::rules()
*/
public function rules()
{
$rules = parent::rules();
$rules['bill_number'] = $rules['document_number'];
$rules['billed_at'] = $rules['issued_at'];
unset($rules['document_number'], $rules['issued_at']);
return $rules;
}
/**
* @deprecated
* @see Document::withValidator()
*/
public function withValidator($validator)
{
parent::withValidator($validator);
if ($validator->errors()->count()) {
$this->request->set('billed_at', $this->request->get('issued_at'));
$this->request->remove('issued_at');
}
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\DocumentAddItem;
/**
* @deprecated
* @see DocumentAddItem
*/
class BillAddItem extends DocumentAddItem
{
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\DocumentHistory;
/**
* @deprecated
* @see DocumentHistory
*/
class BillHistory extends DocumentHistory
{
public function rules()
{
$rules = parent::rules();
$rules['bill_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\DocumentItem;
/**
* @deprecated
* @see DocumentItem
*/
class BillItem extends DocumentItem
{
public function rules()
{
$rules = parent::rules();
$rules['bill_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\DocumentItemTax;
/**
* @deprecated
* @see DocumentItemTax
*/
class BillItemTax extends DocumentItemTax
{
public function rules()
{
$rules = parent::rules();
$rules['bill_id'] = $rules['document_id'];
$rules['bill_item_id'] = $rules['document_item_id'];
unset($rules['document_id'], $rules['document_item_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Purchase;
use App\Http\Requests\Document\DocumentTotal;
/**
* @deprecated
* @see DocumentTotal
*/
class BillTotal extends DocumentTotal
{
public function rules()
{
$rules = parent::rules();
$rules['bill_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\Document;
/**
* @deprecated
* @see Document
*/
class Invoice extends Document
{
/**
* @deprecated
* @see Document::rules()
*/
public function rules()
{
$rules = parent::rules();
$rules['invoice_number'] = $rules['document_number'];
$rules['invoiced_at'] = $rules['issued_at'];
unset($rules['document_number'], $rules['issued_at']);
return $rules;
}
/**
* @deprecated
* @see Document::withValidator()
*/
public function withValidator($validator)
{
parent::withValidator($validator);
if ($validator->errors()->count()) {
$this->request->set('invoiced_at', $this->request->get('issued_at'));
$this->request->remove('issued_at');
}
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\DocumentAddItem;
/**
* @deprecated
* @see DocumentAddItem
*/
class InvoiceAddItem extends DocumentAddItem
{
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\DocumentHistory;
/**
* @deprecated
* @see DocumentHistory
*/
class InvoiceHistory extends DocumentHistory
{
public function rules()
{
$rules = parent::rules();
$rules['invoice_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\DocumentItem;
/**
* @deprecated
* @see DocumentItem
*/
class InvoiceItem extends DocumentItem
{
public function rules()
{
$rules = parent::rules();
$rules['invoice_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\DocumentItemTax;
/**
* @deprecated
* @see DocumentItemTax
*/
class InvoiceItemTax extends DocumentItemTax
{
public function rules()
{
$rules = parent::rules();
$rules['invoice_id'] = $rules['document_id'];
$rules['invoice_item_id'] = $rules['document_item_id'];
unset($rules['document_id'], $rules['document_item_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Requests\Sale;
use App\Http\Requests\Document\DocumentTotal;
/**
* @deprecated
* @see DocumentTotal
*/
class InvoiceTotal extends DocumentTotal
{
public function rules()
{
$rules = parent::rules();
$rules['invoice_id'] = $rules['document_id'];
unset($rules['document_id'], $rules['type']);
return $rules;
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Imports\Purchases;
use App\Imports\Document\Documents;
use App\Models\Document\Document;
/**
* @deprecated
* @see Documents
*/
class Bills extends Documents
{
public function __construct(string $type = '')
{
parent::__construct(Document::BILL_TYPE);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Imports\Sales;
use App\Imports\Document\Documents;
use App\Models\Document\Document;
/**
* @deprecated
* @see Documents
*/
class Invoices extends Documents
{
public function __construct(string $type = '')
{
parent::__construct(Document::INVOICE_TYPE);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\CancelDocument;
/**
* @deprecated
* @see CancelDocument
*/
class CancelBill extends CancelDocument
{
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Jobs\Purchase;
use App\Abstracts\Http\FormRequest;
use App\Jobs\Document\CreateDocument;
use App\Models\Document\Document;
/**
* @deprecated
* @see CreateDocument
*/
class CreateBill extends CreateDocument
{
protected $bill;
protected $request;
/**
* Create a new job instance.
*
* @param FormRequest $request
*/
public function __construct($request)
{
$request->merge(
[
'type' => Document::BILL_TYPE,
'document_number' => $request->get('bill_number'),
'issued_at' => $request->get('billed_at'),
]
);
parent::__construct($request);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\CreateDocumentHistory;
/**
* @deprecated
* @see CreateDocumentHistory
*/
class CreateBillHistory extends CreateDocumentHistory
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\CreateDocumentItem;
/**
* @deprecated
* @see CreateDocumentItem
*/
class CreateBillItem extends CreateDocumentItem
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\CreateDocumentItemsAndTotals;
/**
* @deprecated
* @see CreateDocumentItemsAndTotals
*/
class CreateBillItemsAndTotals extends CreateDocumentItemsAndTotals
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\DeleteDocument;
/**
* @deprecated
* @see DeleteDocument
*/
class DeleteBill extends DeleteDocument
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\DuplicateDocument;
/**
* @deprecated
* @see DuplicateDocument
*/
class DuplicateBill extends DuplicateDocument
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Purchase;
use App\Jobs\Document\UpdateDocument;
/**
* @deprecated
* @see UpdateDocument
*/
class UpdateBill extends UpdateDocument
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\CancelDocument;
/**
* @deprecated
* @see CancelDocument
*/
class CancelInvoice extends CancelDocument
{
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Jobs\Sale;
use App\Abstracts\Http\FormRequest;
use App\Jobs\Document\CreateDocument;
use App\Models\Document\Document;
/**
* @deprecated
* @see CreateDocument
*/
class CreateInvoice extends CreateDocument
{
/**
* Create a new job instance.
*
* @param FormRequest $request
*/
public function __construct($request)
{
$request->merge(
[
'type' => Document::INVOICE_TYPE,
'document_number' => $request->get('invoice_number'),
'issued_at' => $request->get('invoiced_at'),
]
);
parent::__construct($request);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\CreateDocumentHistory;
/**
* @deprecated
* @see CreateDocumentHistory
*/
class CreateInvoiceHistory extends CreateDocumentHistory
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\CreateDocumentItem;
/**
* @deprecated
* @see CreateDocumentItem
*/
class CreateInvoiceItem extends CreateDocumentItem
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\CreateDocumentItemsAndTotals;
/**
* @deprecated
* @see CreateDocumentItemsAndTotals
*/
class CreateInvoiceItemsAndTotals extends CreateDocumentItemsAndTotals
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\DeleteDocument;
/**
* @deprecated
* @see DeleteDocument
*/
class DeleteInvoice extends DeleteDocument
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\DuplicateDocument;
/**
* @deprecated
* @see DuplicateDocument
*/
class DuplicateInvoice extends DuplicateDocument
{
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Jobs\Sale;
use App\Jobs\Document\UpdateDocument;
/**
* @deprecated
* @see UpdateDocument
*/
class UpdateInvoice extends UpdateDocument
{
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Models\Purchase;
use App\Models\Document\Document;
use App\Scopes\ReplaceDeprecatedColumns;
/**
* @deprecated
* @see Document
*/
class Bill extends Document
{
protected static function booted()
{
static::addGlobalScope(new ReplaceDeprecatedColumns);
}
public function getBillNumberAttribute($value)
{
return $this->document_number;
}
public function setBillNumberAttribute($value)
{
$this->attributes['document_number'] = $value;
}
public function getBilledAtAttribute($value)
{
return $this->issued_at;
}
public function setBilledAtAttribute($value)
{
$this->attributes['issued_at'] = $value;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Purchase;
use App\Models\Document\DocumentHistory;
/**
* @deprecated
* @see DocumentHistory
*/
class BillHistory extends DocumentHistory
{
public function getBillIdAttribute($value)
{
return $this->document_id;
}
public function setBillIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Purchase;
use App\Models\Document\DocumentItem;
/**
* @deprecated
* @see DocumentItem
*/
class BillItem extends DocumentItem
{
public function getBillIdAttribute($value)
{
return $this->document_id;
}
public function setBillIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Models\Purchase;
use App\Models\Document\DocumentItemTax;
/**
* @deprecated
* @see DocumentItemTax
*/
class BillItemTax extends DocumentItemTax
{
public function getBillIdAttribute($value)
{
return $this->document_id;
}
public function setBillIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
public function getBillItemIdAttribute($value)
{
return $this->document_item_id;
}
public function setBillItemIdAttribute($value)
{
$this->attributes['document_item_id'] = $value;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Purchase;
use App\Models\Document\DocumentTotal;
/**
* @deprecated
* @see DocumentTotal
*/
class BillTotal extends DocumentTotal
{
public function getBillIdAttribute($value)
{
return $this->document_id;
}
public function setBillIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Models\Sale;
use App\Models\Document\Document;
use App\Scopes\ReplaceDeprecatedColumns;
/**
* @deprecated
* @see Document
*/
class Invoice extends Document
{
protected static function booted()
{
static::addGlobalScope(new ReplaceDeprecatedColumns);
}
public function setInvoiceNumberAttribute($value)
{
$this->attributes['document_number'] = $value;
}
public function getInvoiceNumberAttribute($value)
{
return $this->document_number;
}
public function setInvoicedAtAttribute($value)
{
$this->attributes['issued_at'] = $value;
}
public function getInvoicedAtAttribute($value)
{
return $this->issued_at;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Sale;
use App\Models\Document\DocumentHistory;
/**
* @deprecated
* @see DocumentHistory
*/
class InvoiceHistory extends DocumentHistory
{
public function getInvoiceIdAttribute($value)
{
return $this->document_id;
}
public function setInvoiceIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Sale;
use App\Models\Document\DocumentItem;
/**
* @deprecated
* @see DocumentItem
*/
class InvoiceItem extends DocumentItem
{
public function getInvoiceIdAttribute($value)
{
return $this->document_id;
}
public function setInvoiceIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Models\Sale;
use App\Models\Document\DocumentItemTax;
/**
* @deprecated
* @see DocumentItemTax
*/
class InvoiceItemTax extends DocumentItemTax
{
public function getInvoiceIdAttribute($value)
{
return $this->document_id;
}
public function setInvoiceIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
public function getInvoiceItemIdAttribute($value)
{
return $this->document_item_id;
}
public function setInvoiceItemIdAttribute($value)
{
$this->attributes['document_item_id'] = $value;
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Sale;
use App\Models\Document\DocumentTotal;
/**
* @deprecated
* @see DocumentTotal
*/
class InvoiceTotal extends DocumentTotal
{
public function getInvoiceIdAttribute($value)
{
return $this->document_id;
}
public function setInvoiceIdAttribute($value)
{
$this->attributes['document_id'] = $value;
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace Modules\BC21\Providers;
use Illuminate\Support\ServiceProvider as Provider;
class Main extends Provider
{
/**
* Boot the application events.
*
* @return void
*/
public function boot()
{
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->loadRoutes();
}
/**
* Load routes.
*
* @return void
*/
public function loadRoutes()
{
if (app()->routesAreCached()) {
return;
}
$routes = ['api.php'];
foreach ($routes as $route) {
$this->loadRoutesFrom(__DIR__ . '/../Routes/' . $route);
}
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [];
}
}

View File

@@ -0,0 +1,72 @@
<?php
use Illuminate\Support\Facades\Route;
/**
* 'api' prefix applied to all routes
*
* @see \App\Providers\Route::mapApiRoutes
*/
$api = app('Dingo\Api\Routing\Router');
$api->version('v2', ['middleware' => ['api']], function($api) {
$api->group(['namespace' => 'App\Http\Controllers\Api'], function($api) {
// Companies
$api->get('companies/{company}/owner', 'Common\Companies@owner')->name('companies.owner');
$api->get('companies/{company}/enable', 'Common\Companies@enable')->name('companies.enable');
$api->get('companies/{company}/disable', 'Common\Companies@disable')->name('companies.disable');
$api->resource('companies', 'Common\Companies');
// Items
$api->get('items/{item}/enable', 'Common\Items@enable')->name('items.enable');
$api->get('items/{item}/disable', 'Common\Items@disable')->name('items.disable');
$api->resource('items', 'Common\Items');
// Contacts
$api->get('contacts/{contact}/enable', 'Common\Contacts@enable')->name('contacts.enable');
$api->get('contacts/{contact}/disable', 'Common\Contacts@disable')->name('contacts.disable');
$api->resource('contacts', 'Common\Contacts');
// Sales
$api->resource('invoices', 'Sales\Invoices');
$api->resource('invoices.transactions', 'Sales\InvoiceTransactions');
// Purchases
$api->get('bills/{bill}/received', 'Purchases\Bills@received')->name('bills.received');
$api->resource('bills', 'Purchases\Bills');
// Banking
$api->get('accounts/{account}/enable', 'Banking\Accounts@enable')->name('accounts.enable');
$api->get('accounts/{account}/disable', 'Banking\Accounts@disable')->name('accounts.disable');
$api->resource('accounts', 'Banking\Accounts');
$api->resource('reconciliations', 'Banking\Reconciliations');
$api->resource('transactions', 'Banking\Transactions');
$api->resource('transfers', 'Banking\Transfers');
// Reports
$api->resource('reports', 'Common\Reports');
// Settings
$api->get('categories/{category}/enable', 'Settings\Categories@enable')->name('categories.enable');
$api->get('categories/{category}/disable', 'Settings\Categories@disable')->name('categories.disable');
$api->resource('categories', 'Settings\Categories');
$api->get('currencies/{currency}/enable', 'Settings\Currencies@enable')->name('currencies.enable');
$api->get('currencies/{currency}/disable', 'Settings\Currencies@disable')->name('currencies.disable');
$api->resource('currencies', 'Settings\Currencies');
$api->resource('settings', 'Settings\Settings');
$api->get('taxes/{tax}/enable', 'Settings\Taxes@enable')->name('taxes.enable');
$api->get('taxes/{tax}/disable', 'Settings\Taxes@disable')->name('taxes.disable');
$api->resource('taxes', 'Settings\Taxes');
// Common
$api->resource('ping', 'Common\Ping');
// Auth
$api->resource('permissions', 'Auth\Permissions');
$api->resource('roles', 'Auth\Roles');
$api->get('users/{user}/enable', 'Auth\Users@enable')->name('users.enable');
$api->get('users/{user}/disable', 'Auth\Users@disable')->name('users.disable');
$api->resource('users', 'Auth\Users');
});
});

View File

@@ -0,0 +1,79 @@
<?php
namespace App\Scopes;
use App\Models\Purchase\Bill;
use App\Models\Sale\Invoice;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Support\Collection;
class ReplaceDeprecatedColumns implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param Builder $builder
* @param Model $model
*
* @return void
*/
public function apply(Builder $builder, Model $model)
{
switch (get_class($model)) {
case Invoice::class:
$replacements = [
'invoiced_at' => 'issued_at',
'invoice_number' => 'document_number',
];
break;
case Bill::class:
$replacements = [
'billed_at' => 'issued_at',
'bill_number' => 'document_number',
];
break;
}
if (false === isset($replacements)) {
return;
}
$query = $builder->getQuery();
foreach ($replacements as $column => $replace) {
if ($query->orders !== null) {
$query->orders = $this->replaceColumn($query->orders, $column, $replace);
}
if ($query->wheres !== null) {
$query->wheres = $this->replaceColumn($query->wheres, $column, $replace);
}
if ($query->havings !== null) {
$query->havings = $this->replaceColumn($query->havings, $column, $replace);
}
if ($query->unionOrders !== null) {
$query->unionOrders = $this->replaceColumn($query->unionOrders, $column, $replace);
}
}
}
private function replaceColumn(array $columns, string $column, string $replace): array
{
return Collection::make($columns)
->transform(
function ($item) use ($column, $replace) {
if (isset($item['column']) && $item['column'] === $column) {
$item['column'] = $replace;
}
return $item;
}
)->values()->all();
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Traits;
use App\Models\Document\Document;
use Illuminate\Support\Collection;
/**
* @deprecated
* @see Documents
*/
trait Purchases
{
use Documents;
/**
* Generate next bill number
*
* @deprecated
* @see Documents::getNextDocumentNumber()
*/
public function getNextBillNumber(): string
{
return $this->getNextDocumentNumber(Document::BILL_TYPE);
}
/**
* Increase the next bill number
*
* @deprecated`1
* @see Documents::increaseNextDocumentNumber()
*/
public function increaseNextBillNumber(): void
{
$this->increaseNextDocumentNumber(Document::BILL_TYPE);
}
/**
* Get a collection bill statuses
*
* @deprecated
* @see Documents::getBillStatuses()
*/
public function getBillStatuses(): Collection
{
return $this->getDocumentStatuses(Document::BILL_TYPE);
}
/**
* @deprecated
* @see Documents::getDocumentFileName()
*/
public function getBillFileName(Document $bill, string $separator = '-', string $extension = 'pdf'): string
{
return $this->getDocumentFileName($bill, $separator, $extension);
}
/**
* @deprecated
* @see Documents::getSafeDocumentNumber()
*/
public function getSafeBillNumber(Document $bill, string $separator = '-'): string
{
return $this->getSafeDocumentNumber($bill, $separator);
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Traits;
use App\Models\Document\Document;
use Illuminate\Support\Collection;
/**
* @deprecated
* @see Documents
*/
trait Sales
{
use Documents;
/**
* Generate next invoice number
*
* @deprecated
* @see Documents::getNextDocumentNumber()
*/
public function getNextInvoiceNumber(): string
{
return $this->getNextDocumentNumber(Document::INVOICE_TYPE);
}
/**
* Increase the next invoice number
*
* @deprecated
* @see Documents::increaseNextDocumentNumber()
*/
public function increaseNextInvoiceNumber(): void
{
$this->increaseNextDocumentNumber(Document::INVOICE_TYPE);
}
/**
* Get a collection invoice statuses
*
* @deprecated
* @see Documents::getInvoiceStatuses()
*/
public function getInvoiceStatuses(): Collection
{
return $this->getDocumentStatuses(Document::INVOICE_TYPE);
}
/**
* @deprecated
* @see Documents::getDocumentFileName()
*/
public function getInvoiceFileName(Document $invoice, string $separator = '-', string $extension = 'pdf'): string
{
return $this->getDocumentFileName($invoice, $separator, $extension);
}
/**
* @deprecated
* @see Documents::getSafeDocumentNumber()
*/
public function getSafeInvoiceNumber(Document $invoice, string $separator = '-'): string
{
return $this->getSafeDocumentNumber($invoice, $separator);
}
}

View File

@@ -0,0 +1,92 @@
<?php
namespace App\Transformers\Purchase;
use App\Transformers\Banking\Transaction;
use App\Transformers\Common\Contact;
use App\Transformers\Setting\Currency;
use App\Models\Document\Document as Model;
use League\Fractal\TransformerAbstract;
class Bill extends TransformerAbstract
{
/**
* @var array
*/
protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'transactions'];
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'bill_number' => $model->document_number,
'order_number' => $model->order_number,
'status' => $model->status,
'billed_at' => $model->issued_at ? $model->issued_at->toIso8601String() : '',
'due_at' => $model->due_at ? $model->due_at->toIso8601String() : '',
'amount' => $model->amount,
'currency_code' => $model->currency_code,
'currency_rate' => $model->currency_rate,
'contact_id' => $model->contact_id,
'contact_name' => $model->contact_name,
'contact_email' => $model->contact_email,
'contact_tax_number' => $model->contact_tax_number,
'contact_phone' => $model->contact_phone,
'contact_address' => $model->contact_address,
'notes' => $model->notes,
'attachment' => $model->attachment,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Item
*/
public function includeContact(Model $model)
{
return $this->item($model->contact, new Contact());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Item
*/
public function includeCurrency(Model $model)
{
return $this->item($model->currency, new Currency());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeHistories(Model $model)
{
return $this->collection($model->histories, new BillHistories());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeItems(Model $model)
{
return $this->collection($model->items, new BillItems());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeTransactions(Model $model)
{
return $this->collection($model->transactions, new Transaction());
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Transformers\Purchase;
use App\Models\Document\DocumentHistory as Model;
use League\Fractal\TransformerAbstract;
class BillHistories extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'bill_id' => $model->bill_id,
'status' => $model->status,
'notify' => $model->notify,
'description' => $model->description,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Transformers\Purchase;
use App\Models\Document\DocumentItem as Model;
use League\Fractal\TransformerAbstract;
class BillItems extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'bill_id' => $model->bill_id,
'item_id' => $model->item_id,
'name' => $model->name,
'price' => $model->price,
'total' => $model->total,
'tax' => $model->tax,
'tax_id' => $model->tax_id,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Transformers\Purchase;
use App\Models\Document\DocumentTotal as Model;
use League\Fractal\TransformerAbstract;
class BillTotals extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'bill_id' => $model->bill_id,
'code' => $model->code,
'name' => $model->name,
'amount' => $model->amount,
'sort_order' => $model->sort_order,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

View File

@@ -0,0 +1,92 @@
<?php
namespace App\Transformers\Sale;
use App\Transformers\Banking\Transaction;
use App\Transformers\Common\Contact;
use App\Transformers\Setting\Currency;
use App\Models\Document\Document as Model;
use League\Fractal\TransformerAbstract;
class Invoice extends TransformerAbstract
{
/**
* @var array
*/
protected $defaultIncludes = ['contact', 'currency', 'histories', 'items', 'transactions'];
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'invoice_number' => $model->document_number,
'order_number' => $model->order_number,
'status' => $model->status,
'invoiced_at' => $model->issued_at ? $model->issued_at->toIso8601String() : '',
'due_at' => $model->due_at ? $model->due_at->toIso8601String() : '',
'amount' => $model->amount,
'currency_code' => $model->currency_code,
'currency_rate' => $model->currency_rate,
'contact_id' => $model->contact_id,
'contact_name' => $model->contact_name,
'contact_email' => $model->contact_email,
'contact_tax_number' => $model->contact_tax_number,
'contact_phone' => $model->contact_phone,
'contact_address' => $model->contact_address,
'notes' => $model->notes,
'attachment' => $model->attachment,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Item
*/
public function includeContact(Model $model)
{
return $this->item($model->contact, new Contact());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Item
*/
public function includeCurrency(Model $model)
{
return $this->item($model->currency, new Currency());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeHistories(Model $model)
{
return $this->collection($model->histories, new InvoiceHistories());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeItems(Model $model)
{
return $this->collection($model->items, new InvoiceItems());
}
/**
* @param Model $model
* @return \League\Fractal\Resource\Collection
*/
public function includeTransactions(Model $model)
{
return $this->collection($model->transactions, new Transaction());
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Transformers\Sale;
use App\Models\Document\DocumentHistory as Model;
use League\Fractal\TransformerAbstract;
class InvoiceHistories extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'invoice_id' => $model->invoice_id,
'status' => $model->status,
'notify' => $model->notify,
'description' => $model->description,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Transformers\Sale;
use App\Models\Document\DocumentItem as Model;
use League\Fractal\TransformerAbstract;
class InvoiceItems extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'invoice_id' => $model->invoice_id,
'item_id' => $model->item_id,
'name' => $model->name,
'price' => $model->price,
'total' => $model->total,
'tax' => $model->tax,
'tax_id' => $model->tax_id,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Transformers\Sale;
use App\Models\Document\DocumentTotal as Model;
use League\Fractal\TransformerAbstract;
class InvoiceTotals extends TransformerAbstract
{
/**
* @param Model $model
* @return array
*/
public function transform(Model $model)
{
return [
'id' => $model->id,
'company_id' => $model->company_id,
'invoice_id' => $model->invoice_id,
'code' => $model->code,
'name' => $model->name,
'amount' => $model->amount,
'sort_order' => $model->sort_order,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : '',
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : '',
];
}
}

15
modules/BC21/module.json Normal file
View File

@@ -0,0 +1,15 @@
{
"alias": "bc21",
"icon": "fa fa-cog",
"version": "1.0.0",
"active": 1,
"providers": [
"Modules\\BC21\\Providers\\Main"
],
"aliases": {},
"files": [],
"requires": [],
"reports": [],
"widgets": [],
"settings": []
}

View File

@@ -3,9 +3,9 @@
namespace Modules\OfflinePayments\Http\Controllers;
use App\Abstracts\Http\PaymentController;
use \App\Events\Sale\PaymentReceived;
use \App\Events\Document\PaymentReceived;
use App\Http\Requests\Portal\InvoicePayment as PaymentRequest;
use App\Models\Sale\Invoice;
use App\Models\Document\Document;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
@@ -15,7 +15,7 @@ class Payment extends PaymentController
public $type = 'redirect';
public function show(Invoice $invoice, PaymentRequest $request)
public function show(Document $document, PaymentRequest $request)
{
$setting = [];
@@ -29,7 +29,7 @@ class Payment extends PaymentController
}
}
$html = view('offline-payments::show', compact('setting', 'invoice'))->render();
$html = view('offline-payments::show', compact('setting', 'document'))->render();
return response()->json([
'code' => $setting['code'],
@@ -40,7 +40,7 @@ class Payment extends PaymentController
]);
}
public function signed(Invoice $invoice, PaymentRequest $request)
public function signed(Document $document, PaymentRequest $request)
{
$setting = [];
@@ -54,9 +54,9 @@ class Payment extends PaymentController
}
}
$confirm_url = URL::signedRoute('signed.invoices.offline-payments.confirm', [$invoice->id, 'company_id' => session('company_id')]);
$confirm_url = URL::signedRoute('signed.invoices.offline-payments.confirm', [$document->id, 'company_id' => session('company_id')]);
$html = view('offline-payments::signed', compact('setting', 'invoice', 'confirm_url'))->render();
$html = view('offline-payments::signed', compact('setting', 'document', 'confirm_url'))->render();
return response()->json([
'code' => $setting['code'],
@@ -67,10 +67,10 @@ class Payment extends PaymentController
]);
}
public function confirm(Invoice $invoice, Request $request)
public function confirm(Document $document, Request $request)
{
try {
event(new PaymentReceived($invoice, $request));
event(new PaymentReceived($document, $request));
$message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]);

View File

@@ -5,6 +5,6 @@ Route::group([
'middleware' => 'portal',
'namespace' => 'Modules\OfflinePayments\Http\Controllers'
], function () {
Route::get('invoices/{invoice}/offline-payments', 'Payment@show')->name('portal.invoices.offline-payments.show');
Route::post('invoices/{invoice}/offline-payments/confirm', 'Payment@confirm')->name('portal.invoices.offline-payments.confirm');
Route::get('invoices/{document}/offline-payments', 'Payment@show')->name('portal.invoices.offline-payments.show');
Route::post('invoices/{document}/offline-payments/confirm', 'Payment@confirm')->name('portal.invoices.offline-payments.confirm');
});

View File

@@ -5,6 +5,6 @@ Route::group([
'middleware' => 'signed',
'namespace' => 'Modules\OfflinePayments\Http\Controllers'
], function () {
Route::get('invoices/{invoice}/offline-payments', 'Payment@signed')->name('signed.invoices.offline-payments.show');
Route::post('invoices/{invoice}/offline-payments/confirm', 'Payment@confirm')->name('signed.invoices.offline-payments.confirm');
Route::get('invoices/{document}/offline-payments', 'Payment@signed')->name('signed.invoices.offline-payments.show');
Route::post('invoices/{document}/offline-payments/confirm', 'Payment@confirm')->name('signed.invoices.offline-payments.confirm');
});

View File

@@ -3,9 +3,9 @@
namespace Modules\PaypalStandard\Http\Controllers;
use App\Abstracts\Http\PaymentController;
use App\Events\Sale\PaymentReceived;
use App\Events\Document\PaymentReceived;
use App\Http\Requests\Portal\InvoicePayment as PaymentRequest;
use App\Models\Sale\Invoice;
use App\Models\Document\Document;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use Monolog\Handler\StreamHandler;
@@ -17,17 +17,17 @@ class Payment extends PaymentController
public $type = 'redirect';
public function show(Invoice $invoice, PaymentRequest $request)
public function show(Document $document, PaymentRequest $request)
{
$setting = $this->setting;
$this->setContactFirstLastName($invoice);
$this->setContactFirstLastName($document);
$setting['action'] = ($setting['mode'] == 'live') ? 'https://www.paypal.com/cgi-bin/webscr' : 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$invoice_url = $this->getInvoiceUrl($invoice);
$document_url = $this->getInvoiceUrl($document);
$html = view('paypal-standard::show', compact('setting', 'invoice', 'invoice_url'))->render();
$html = view('paypal-standard::show', compact('setting', 'document', 'document_url'))->render();
return response()->json([
'code' => $setting['code'],
@@ -38,7 +38,7 @@ class Payment extends PaymentController
]);
}
public function return(Invoice $invoice, Request $request)
public function return(Document $document, Request $request)
{
$success = true;
@@ -66,12 +66,12 @@ class Payment extends PaymentController
flash($message)->warning();
}
$invoice_url = $this->getInvoiceUrl($invoice);
$document_url = $this->getInvoiceUrl($document);
return redirect($invoice_url);
return redirect($document_url);
}
public function complete(Invoice $invoice, Request $request)
public function complete(Document $document, Request $request)
{
$setting = $this->setting;
@@ -79,7 +79,7 @@ class Payment extends PaymentController
$paypal_log->pushHandler(new StreamHandler(storage_path('logs/paypal.log')), Logger::INFO);
if (!$invoice) {
if (!$document) {
return;
}
@@ -115,10 +115,10 @@ class Payment extends PaymentController
case 'Completed':
$receiver_match = (strtolower($request['receiver_email']) == strtolower($setting['email']));
$total_paid_match = ((double) $request['mc_gross'] == $invoice->amount);
$total_paid_match = ((double) $request['mc_gross'] == $document->amount);
if ($receiver_match && $total_paid_match) {
event(new PaymentReceived($invoice, $request));
event(new PaymentReceived($document, $request));
}
if (!$receiver_match) {

View File

@@ -21,29 +21,29 @@
<input type="hidden" name="upload" value="1" />
<input type="hidden" name="business" value="{{ $setting['email'] }}" />
<?php $i = 1; ?>
@foreach ($invoice->items as $item)
@foreach ($document->items as $item)
<input type="hidden" name="item_name_{{ $i }}" value="{{ $item->name }}" />
<input type="hidden" name="amount_{{ $i }}" value="{{ $item->price }}" />
<input type="hidden" name="quantity_{{ $i }}" value="{{ $item->quantity }}" />
<?php $i++; ?>
@endforeach
<input type="hidden" name="currency_code" value="{{ $invoice->currency_code}}" />
<input type="hidden" name="first_name" value="{{ $invoice->first_name }}" />
<input type="hidden" name="last_name" value="{{ $invoice->last_name }}" />
<input type="hidden" name="address1" value="{{ $invoice->customer_address }}" />
<input type="hidden" name="currency_code" value="{{ $document->currency_code}}" />
<input type="hidden" name="first_name" value="{{ $document->first_name }}" />
<input type="hidden" name="last_name" value="{{ $document->last_name }}" />
<input type="hidden" name="address1" value="{{ $document->customer_address }}" />
<input type="hidden" name="address_override" value="0" />
<input type="hidden" name="email" value="{{ $invoice->customer_email }}" />
<input type="hidden" name="invoice" value="{{ $invoice->id . '-' . $invoice->customer_name }}" />
<input type="hidden" name="email" value="{{ $document->customer_email }}" />
<input type="hidden" name="invoice" value="{{ $document->id . '-' . $document->customer_name }}" />
<input type="hidden" name="lc" value="{{ $setting['language'] }}" />
<input type="hidden" name="rm" value="2" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="charset" value="utf-8" />
<input type="hidden" name="return" value="{{ route('portal.invoices.paypal-standard.return', $invoice->id) }}" />
<input type="hidden" name="notify_url" value="{{ route('portal.invoices.paypal-standard.complete', $invoice->id) }}" />
<input type="hidden" name="cancel_return" value="{{ $invoice_url }}" />
<input type="hidden" name="return" value="{{ route('portal.invoices.paypal-standard.return', $document->id) }}" />
<input type="hidden" name="notify_url" value="{{ route('portal.invoices.paypal-standard.complete', $document->id) }}" />
<input type="hidden" name="cancel_return" value="{{ $document_url }}" />
<input type="hidden" name="paymentaction" value="{{ $setting['transaction'] }}" />
<input type="hidden" name="custom" value="{{ $invoice->id }}" />
<input type="hidden" name="custom" value="{{ $document->id }}" />
<input type="hidden" name="bn" value="Akaunting_2.0_WPS" />
<input type="submit" value="{{ trans('general.confirm') }}" class="btn btn-success" />

View File

@@ -5,6 +5,6 @@ Route::group([
'middleware' => 'guest',
'namespace' => 'Modules\PaypalStandard\Http\Controllers'
], function () {
Route::post('invoices/{invoice}/paypal-standard/return', 'Payment@return')->name('portal.invoices.paypal-standard.return');
Route::post('invoices/{invoice}/paypal-standard/complete', 'Payment@complete')->name('portal.invoices.paypal-standard.complete');
Route::post('invoices/{document}/paypal-standard/return', 'Payment@return')->name('portal.invoices.paypal-standard.return');
Route::post('invoices/{document}/paypal-standard/complete', 'Payment@complete')->name('portal.invoices.paypal-standard.complete');
});

View File

@@ -5,5 +5,5 @@ Route::group([
'middleware' => 'portal',
'namespace' => 'Modules\PaypalStandard\Http\Controllers'
], function () {
Route::get('invoices/{invoice}/paypal-standard', 'Payment@show')->name('portal.invoices.paypal-standard.show');
Route::get('invoices/{document}/paypal-standard', 'Payment@show')->name('portal.invoices.paypal-standard.show');
});

View File

@@ -5,5 +5,5 @@ Route::group([
'middleware' => 'signed',
'namespace' => 'Modules\PaypalStandard\Http\Controllers'
], function () {
Route::get('invoices/{invoice}/paypal-standard', 'Payment@show')->name('signed.invoices.paypal-standard.show');
Route::get('invoices/{document}/paypal-standard', 'Payment@show')->name('signed.invoices.paypal-standard.show');
});