mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 03:07:30 -04:00 
			
		
		
		
	
						commit
						cea1ee8701
					
				| @ -71,6 +71,8 @@ class AccountApiController extends BaseAPIController | |||||||
|             'invoices' => ['invoice_items', 'user', 'client', 'payments'], |             'invoices' => ['invoice_items', 'user', 'client', 'payments'], | ||||||
|             'products' => [], |             'products' => [], | ||||||
|             'tax_rates' => [], |             'tax_rates' => [], | ||||||
|  |             'expenses' => ['client', 'invoice', 'vendor'], | ||||||
|  |             'payments' => ['invoice'], | ||||||
|         ]; |         ]; | ||||||
| 
 | 
 | ||||||
|         foreach ($map as $key => $values) { |         foreach ($map as $key => $values) { | ||||||
|  | |||||||
| @ -85,6 +85,36 @@ class InvoiceApiController extends BaseAPIController | |||||||
|         return $this->response($data); |         return $this->response($data); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |         /** | ||||||
|  |          * @SWG\Get( | ||||||
|  |          *   path="/invoices/{invoice_id}", | ||||||
|  |          *   summary="Individual Invoice", | ||||||
|  |          *   tags={"invoice"}, | ||||||
|  |          *   @SWG\Response( | ||||||
|  |          *     response=200, | ||||||
|  |          *     description="A single invoice", | ||||||
|  |          *      @SWG\Schema(type="object", @SWG\Items(ref="#/definitions/Invoice")) | ||||||
|  |          *   ), | ||||||
|  |          *   @SWG\Response( | ||||||
|  |          *     response="default", | ||||||
|  |          *     description="an ""unexpected"" error" | ||||||
|  |          *   ) | ||||||
|  |          * ) | ||||||
|  |          */ | ||||||
|  | 
 | ||||||
|  |     public function show($publicId) | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |         $invoice = Invoice::scope($publicId)->withTrashed()->first(); | ||||||
|  | 
 | ||||||
|  |         if(!$invoice) | ||||||
|  |             return $this->errorResponse(['message'=>'Invoice does not exist!'], 404); | ||||||
|  | 
 | ||||||
|  |         $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); | ||||||
|  |         $data = $this->createItem($invoice, $transformer, 'invoice'); | ||||||
|  | 
 | ||||||
|  |         return $this->response($data); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * @SWG\Post( |      * @SWG\Post( | ||||||
|  | |||||||
| @ -58,8 +58,8 @@ class PaymentApiController extends BaseAPIController | |||||||
| 
 | 
 | ||||||
|         $payments = $payments->orderBy('created_at', 'desc')->paginate(); |         $payments = $payments->orderBy('created_at', 'desc')->paginate(); | ||||||
|         $paginator = $paginator->paginate(); |         $paginator = $paginator->paginate(); | ||||||
|  | 
 | ||||||
|         $transformer = new PaymentTransformer(Auth::user()->account, Input::get('serializer')); |         $transformer = new PaymentTransformer(Auth::user()->account, Input::get('serializer')); | ||||||
|          |  | ||||||
|         $data = $this->createCollection($payments, $transformer, 'payments', $paginator); |         $data = $this->createCollection($payments, $transformer, 'payments', $paginator); | ||||||
| 
 | 
 | ||||||
|         return $this->response($data); |         return $this->response($data); | ||||||
| @ -98,11 +98,8 @@ class PaymentApiController extends BaseAPIController | |||||||
|                 $payment = Payment::scope($publicId)->withTrashed()->firstOrFail(); |                 $payment = Payment::scope($publicId)->withTrashed()->firstOrFail(); | ||||||
|                 $this->paymentRepo->archive($payment); |                 $this->paymentRepo->archive($payment); | ||||||
| 
 | 
 | ||||||
|                 $invoice = Invoice::scope($data['invoice_id'])->with('client')->with(['payments' => function($query) { |                 $transformer = new PaymentTransformer(\Auth::user()->account, Input::get('serializer')); | ||||||
|                     $query->withTrashed(); |                 $data = $this->createItem($payment, $transformer, 'invoice'); | ||||||
|                 }])->first(); |  | ||||||
|                 $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); |  | ||||||
|                 $data = $this->createItem($invoice, $transformer, 'invoice'); |  | ||||||
| 
 | 
 | ||||||
|                 return $this->response($data); |                 return $this->response($data); | ||||||
|             } |             } | ||||||
| @ -113,12 +110,17 @@ class PaymentApiController extends BaseAPIController | |||||||
|                 return $error; |                 return $error; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             /* | ||||||
|             $invoice = Invoice::scope($data['invoice_id'])->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { |             $invoice = Invoice::scope($data['invoice_id'])->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { | ||||||
|                 $query->withTrashed(); |                 $query->withTrashed(); | ||||||
|             }])->withTrashed()->first(); |             }])->withTrashed()->first(); | ||||||
|             $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); |             */ | ||||||
|             $data = $this->createItem($invoice, $transformer, 'invoice'); | 
 | ||||||
|  |             $transformer = new PaymentTransformer(\Auth::user()->account, Input::get('serializer')); | ||||||
|  |             $data = $this->createItem($payment, $transformer, 'invoice'); | ||||||
|  | 
 | ||||||
|             return $this->response($data); |             return $this->response($data); | ||||||
|  | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -175,13 +177,17 @@ class PaymentApiController extends BaseAPIController | |||||||
|             $this->contactMailer->sendPaymentConfirmation($payment); |             $this->contactMailer->sendPaymentConfirmation($payment); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         /* | ||||||
|         $invoice = Invoice::scope($invoice->public_id)->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { |         $invoice = Invoice::scope($invoice->public_id)->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { | ||||||
|             $query->withTrashed(); |             $query->withTrashed(); | ||||||
|         }])->first(); |         }])->first(); | ||||||
|         $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); |         */ | ||||||
|         $data = $this->createItem($invoice, $transformer, 'invoice'); | 
 | ||||||
|  |         $transformer = new PaymentTransformer(\Auth::user()->account, Input::get('serializer')); | ||||||
|  |         $data = $this->createItem($payment, $transformer, 'invoice'); | ||||||
| 
 | 
 | ||||||
|         return $this->response($data); |         return $this->response($data); | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|         /** |         /** | ||||||
| @ -214,12 +220,13 @@ class PaymentApiController extends BaseAPIController | |||||||
| 
 | 
 | ||||||
|             $this->paymentRepo->delete($payment); |             $this->paymentRepo->delete($payment); | ||||||
| 
 | 
 | ||||||
|  |             /* | ||||||
|             $invoice = Invoice::scope($invoiceId)->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { |             $invoice = Invoice::scope($invoiceId)->with('client', 'invoice_items', 'invitations')->with(['payments' => function($query) { | ||||||
|                 $query->withTrashed(); |                 $query->withTrashed(); | ||||||
|             }])->first(); |             }])->first(); | ||||||
| 
 |             */ | ||||||
|             $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); |             $transformer = new PaymentTransformer(\Auth::user()->account, Input::get('serializer')); | ||||||
|             $data = $this->createItem($invoice, $transformer, 'invoice'); |             $data = $this->createItem($payment, $transformer, 'invoice'); | ||||||
| 
 | 
 | ||||||
|             return $this->response($data); |             return $this->response($data); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -164,6 +164,15 @@ class Account extends Eloquent | |||||||
|         return $this->belongsTo('App\Models\TaxRate'); |         return $this->belongsTo('App\Models\TaxRate'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function expenses() | ||||||
|  |     { | ||||||
|  |         return $this->hasMany('App\Models\Expense','account_id','id')->withTrashed(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function payments() | ||||||
|  |     { | ||||||
|  |         return $this->hasMany('App\Models\Payment','account_id','id')->withTrashed(); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     public function setIndustryIdAttribute($value) |     public function setIndustryIdAttribute($value) | ||||||
|     { |     { | ||||||
|  | |||||||
| @ -139,6 +139,10 @@ class Client extends EntityModel | |||||||
|         return $this->hasMany('App\Models\Credit'); |         return $this->hasMany('App\Models\Credit'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function expenses() | ||||||
|  |     { | ||||||
|  |         return $this->hasMany('App\Models\Expense','client_id','id')->withTrashed(); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     public function addContact($data, $isPrimary = false) |     public function addContact($data, $isPrimary = false) | ||||||
|     { |     { | ||||||
|  | |||||||
| @ -197,6 +197,11 @@ class Invoice extends EntityModel implements BalanceAffecting | |||||||
|         return $this->hasMany('App\Models\Invitation')->orderBy('invitations.contact_id'); |         return $this->hasMany('App\Models\Invitation')->orderBy('invitations.contact_id'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function expenses() | ||||||
|  |     { | ||||||
|  |         return $this->hasMany('App\Models\Expense','invoice_id','id')->withTrashed(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public function markInvitationsSent($notify = false) |     public function markInvitationsSent($notify = false) | ||||||
|     { |     { | ||||||
|         foreach ($this->invitations as $invitation) { |         foreach ($this->invitations as $invitation) { | ||||||
|  | |||||||
| @ -12,10 +12,14 @@ class AccountTransformer extends EntityTransformer | |||||||
| { | { | ||||||
|     protected $defaultIncludes = [ |     protected $defaultIncludes = [ | ||||||
|         'users', |         'users', | ||||||
|     //    'clients',
 |  | ||||||
|         'invoices', |  | ||||||
|         'products', |         'products', | ||||||
|         'taxRates' |         'taxRates', | ||||||
|  |         'payments' | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     protected $availableIncludes = [ | ||||||
|  |         'clients', | ||||||
|  |         'invoices', | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     public function includeUsers(Account $account) |     public function includeUsers(Account $account) | ||||||
| @ -48,6 +52,12 @@ class AccountTransformer extends EntityTransformer | |||||||
|         return $this->includeCollection($account->tax_rates, $transformer, 'taxRates'); |         return $this->includeCollection($account->tax_rates, $transformer, 'taxRates'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function includePayments(Account $account) | ||||||
|  |     { | ||||||
|  |         $transformer = new PaymentTransformer($account, $this->serializer); | ||||||
|  |         return $this->includeCollection($account->payments, $transformer, 'payments'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public function transform(Account $account) |     public function transform(Account $account) | ||||||
|     { |     { | ||||||
|         return [ |         return [ | ||||||
|  | |||||||
| @ -47,6 +47,7 @@ class ClientTransformer extends EntityTransformer | |||||||
|     protected $availableIncludes = [ |     protected $availableIncludes = [ | ||||||
|         'invoices', |         'invoices', | ||||||
|         'credits', |         'credits', | ||||||
|  |         'expenses', | ||||||
|     ]; |     ]; | ||||||
|      |      | ||||||
|     public function includeContacts(Client $client) |     public function includeContacts(Client $client) | ||||||
| @ -67,6 +68,13 @@ class ClientTransformer extends EntityTransformer | |||||||
|         return $this->includeCollection($client->credits, $transformer, ENTITY_CREDIT); |         return $this->includeCollection($client->credits, $transformer, ENTITY_CREDIT); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function includeExpenses(Client $client) | ||||||
|  |     { | ||||||
|  |         $transformer = new ExpenseTransformer($this->account, $this->serializer); | ||||||
|  |         return $this->includeCollection($client->expenses, $transformer, ENTITY_EXPENSE); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     public function transform(Client $client) |     public function transform(Client $client) | ||||||
|     { |     { | ||||||
|         return [ |         return [ | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ class ExpenseTransformer extends EntityTransformer | |||||||
| { | { | ||||||
|     public function transform(Expense $expense) |     public function transform(Expense $expense) | ||||||
|     { |     { | ||||||
|  | 
 | ||||||
|         return [ |         return [ | ||||||
|             'id' => (int) $expense->public_id, |             'id' => (int) $expense->public_id, | ||||||
|             'private_notes' => $expense->private_notes, |             'private_notes' => $expense->private_notes, | ||||||
| @ -24,6 +25,9 @@ class ExpenseTransformer extends EntityTransformer | |||||||
|             'exchange_rate' => (float) $expense->exchange_rate, |             'exchange_rate' => (float) $expense->exchange_rate, | ||||||
|             'invoice_currency_id' => (int) $expense->invoice_currency_id, |             'invoice_currency_id' => (int) $expense->invoice_currency_id, | ||||||
|             'is_deleted' => (bool) $expense->is_deleted, |             'is_deleted' => (bool) $expense->is_deleted, | ||||||
|  |             'client_id' => isset($expense->client->public_id) ? (int) $expense->client->public_id : null, | ||||||
|  |             'invoice_id' => isset($expense->invoice->public_id) ? (int) $expense->invoice->public_id : null, | ||||||
|  |             'vendor_id' => isset($expense->vendor->public_id) ? (int) $expense->vendor->public_id : null, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -28,6 +28,7 @@ class InvoiceTransformer extends EntityTransformer | |||||||
|         'invitations', |         'invitations', | ||||||
|         'payments', |         'payments', | ||||||
|         'client', |         'client', | ||||||
|  |         'expenses', | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     public function includeInvoiceItems(Invoice $invoice) |     public function includeInvoiceItems(Invoice $invoice) | ||||||
| @ -51,9 +52,16 @@ class InvoiceTransformer extends EntityTransformer | |||||||
|     public function includeClient(Invoice $invoice) |     public function includeClient(Invoice $invoice) | ||||||
|     { |     { | ||||||
|         $transformer = new ClientTransformer($this->account, $this->serializer); |         $transformer = new ClientTransformer($this->account, $this->serializer); | ||||||
|         return $this->includeItem($invoice->client, $transformer, 'client'); |         return $this->includeItem($invoice->client, $transformer, ENTITY_CLIENT); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function includeExpenses(Invoice $invoice) | ||||||
|  |     { | ||||||
|  |         $transformer = new ExpenseTransformer($this->account, $this->serializer); | ||||||
|  |         return $this->includeCollection($invoice->expenses, $transformer, ENTITY_EXPENSE); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     public function transform(Invoice $invoice) |     public function transform(Invoice $invoice) | ||||||
|     { |     { | ||||||
|         return [ |         return [ | ||||||
|  | |||||||
| @ -57,6 +57,7 @@ class PaymentTransformer extends EntityTransformer | |||||||
|             'archived_at' => $this->getTimestamp($payment->deleted_at), |             'archived_at' => $this->getTimestamp($payment->deleted_at), | ||||||
|             'is_deleted' => (bool) $payment->is_deleted, |             'is_deleted' => (bool) $payment->is_deleted, | ||||||
|             'payment_type_id' => (int) $payment->payment_type_id, |             'payment_type_id' => (int) $payment->payment_type_id, | ||||||
|  |             'invoice_id' => (int) $payment->invoice->public_id, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -17,7 +17,6 @@ class VendorContactTransformer extends EntityTransformer | |||||||
|             'archived_at' => $this->getTimestamp($contact->deleted_at), |             'archived_at' => $this->getTimestamp($contact->deleted_at), | ||||||
|             'is_primary' => (bool) $contact->is_primary, |             'is_primary' => (bool) $contact->is_primary, | ||||||
|             'phone' => $contact->phone, |             'phone' => $contact->phone, | ||||||
|             'last_login' => $contact->last_login, |  | ||||||
|             'account_key' => $this->account->account_key, |             'account_key' => $this->account->account_key, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user