1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

Merge pull request #8371 from turbo124/v5-develop

v5.5.89
This commit is contained in:
David Bomba 2023-03-13 08:10:37 +11:00 committed by GitHub
commit 5aed0e5024
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 149 additions and 64 deletions

View File

@ -1 +1 @@
5.5.88
5.5.89

View File

@ -11,19 +11,26 @@
namespace App\Services\Pdf;
use App\DataMapper\ClientSettings;
use App\Models\Quote;
use App\Models\Client;
use App\Models\Credit;
use App\Models\Design;
use App\Models\Vendor;
use App\Models\Company;
use App\Models\Country;
use App\Models\Credit;
use App\Models\Currency;
use App\Models\Design;
use App\Models\Invoice;
use App\Models\InvoiceInvitation;
use App\Models\Currency;
use App\Models\PurchaseOrder;
use App\Models\Quote;
use App\Models\Vendor;
use App\Models\QuoteInvitation;
use App\Utils\Traits\MakesHash;
use App\Models\CreditInvitation;
use App\Services\Pdf\PdfBuilder;
use App\Services\Pdf\PdfService;
use App\Models\InvoiceInvitation;
use App\Services\Pdf\PdfDesigner;
use App\DataMapper\ClientSettings;
use App\Services\Pdf\PdfConfiguration;
use App\Models\PurchaseOrderInvitation;
class PdfMock
{
@ -81,23 +88,46 @@ class PdfMock
public function initEntity(): mixed
{
match ($this->request['entity_type']) {
'invoice' => $entity = Invoice::factory()->make(),
'quote' => $entity = Quote::factory()->make(),
'credit' => $entity = Credit::factory()->make(),
'purchase_order' => $entity = PurchaseOrder::factory()->make(),
default => $entity = Invoice::factory()->make()
};
$settings = new \stdClass;
$settings->entity = Client::class;
$settings->currency_id = '1';
$settings->industry_id = '';
$settings->size_id = '';
if ($this->request['entity_type'] == PurchaseOrder::class) {
$entity->vendor = Vendor::factory()->make();
} else {
$entity->client = Client::factory()->make();
switch ($this->request['entity_type']) {
case 'invoice':
$entity = Invoice::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = InvoiceInvitation::factory()->make();
break;
case 'quote':
$entity = Quote::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = QuoteInvitation::factory()->make();
break;
case 'credit':
$entity = Credit::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = CreditInvitation::factory()->make();
break;
case 'purchase_order':
$entity = PurchaseOrder::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = PurchaseOrderInvitation::factory()->make();
break;
case PurchaseOrder::class:
$entity = PurchaseOrder::factory()->make();
$entity->invitation = PurchaseOrderInvitation::factory()->make();
$entity->vendor = Vendor::factory()->make();
break;
default:
# code...
break;
}
$entity->tax_map = $this->getTaxMap();
$entity->total_tax_map = $this->getTotalTaxMap();
$entity->invitation = InvoiceInvitation::factory()->make();
$entity->invitation->company = $this->company;
return $entity;
@ -182,7 +212,7 @@ class PdfMock
'$client.public_notes' => ' ',
'$company.postal_code' => $this->settings->postal_code,
'$client.billing_city' => 'Aufderharchester',
'$secondary_font_name' => $this->settings->primary_font,
'$secondary_font_name' => isset($this->settings?->secondary_font) ? $this->settings->secondary_font : 'Roboto',
'$product.line_total' => '',
'$product.tax_amount' => '',
'$company.vat_number' => $this->settings->vat_number,
@ -417,7 +447,7 @@ EPD
'$country_2' => 'AF',
'$firstName' => 'Benedict',
'$user.name' => 'Derrick Monahan DDS Erna Wunsch',
'$font_name' => 'Roboto',
'$font_name' => $this->settings?->primary_font ?: 'Roboto',
'$auto_bill' => 'This invoice will automatically be billed to your credit card on file on the due date.',
'$payments' => '',
'$task.tax' => '',

View File

@ -14,8 +14,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => '5.5.88',
'app_tag' => '5.5.88',
'app_version' => '5.5.89',
'app_tag' => '5.5.89',
'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''),

View File

@ -12,6 +12,7 @@
namespace Database\Factories;
use App\Models\Quote;
use App\Factory\InvoiceItemFactory;
use Illuminate\Database\Eloquent\Factories\Factory;
class QuoteFactory extends Factory
@ -39,7 +40,7 @@ class QuoteFactory extends Factory
// 'custom_value4' => $this->faker->numberBetween(1, 4),
'is_deleted' => false,
'po_number' => $this->faker->text(10),
'line_items' => false,
'line_items' => InvoiceItemFactory::generate(5),
];
}
}

View File

@ -40,7 +40,7 @@ class VendorFactory extends Factory
'postal_code' => $this->faker->postcode(),
'country_id' => 4,
'vendor_hash' => Str::random(40),
'currency_id' => 1,
];
}
}

View File

@ -12054,7 +12054,7 @@ paths:
/api/v1/recurring_invoices:
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "List recurring invoices"
description: |
Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
@ -12125,7 +12125,7 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Create recurring invoice"
description: "Adds a Recurring Invoice to the system"
operationId: storeRecurringInvoice
@ -12159,7 +12159,7 @@ paths:
"/api/v1/recurring_invoices/{id}":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Show recurring invoice"
description: "Displays an RecurringInvoice by id"
operationId: showRecurringInvoice
@ -12199,7 +12199,7 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Update recurring invoice"
description: "Handles the updating of an RecurringInvoice by id"
operationId: updateRecurringInvoice
@ -12239,7 +12239,7 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Delete recurring invoice"
description: "Handles the deletion of an RecurringInvoice by id"
operationId: deleteRecurringInvoice
@ -12276,7 +12276,7 @@ paths:
"/api/v1/recurring_invoices/{id}/edit":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Edit recurring invoice"
description: "Displays an RecurringInvoice by id"
operationId: editRecurringInvoice
@ -12318,7 +12318,7 @@ paths:
/api/v1/recurring_invoices/create:
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Blank recurring invoice"
description: "Returns a blank object with default values"
operationId: getRecurringInvoicesCreate
@ -12351,25 +12351,52 @@ paths:
/api/v1/recurring_invoices/bulk:
post:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Bulk recurring invoice actions"
description: ""
description: |
There are multiple actions that are available including:
operationId: bulkRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
description: "Hashed IDs"
description: "Bulk action details"
required: true
content:
application/json:
schema:
type: array
items:
description: "Array of hashed IDs to be bulk 'actioned"
type: integer
example: "[0,1,2,3]"
type: object
properties:
action:
type: string
description: |
The action to be performed, options include:
- `start`
Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
- `stop`
Stops the recurring invoice.
- `send_now`
Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
- `restore`
Restores the recurring invoice from an archived or deleted state.
- `archive`
Archives the recurring invoice. The recurring invoice will not fire in this state.
- `delete`
Deletes a recurring invoice.
required: true
ids:
required: true
type: array
items:
description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
type: string
example:
action: start
ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
responses:
200:
description: "The RecurringInvoice response"
@ -12396,7 +12423,7 @@ paths:
get:
deprecated: true
tags:
- recurring_invoices
- Recurring Invoices
summary: "Custom recurring invoice action"
description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
operationId: actionRecurringInvoice
@ -12445,7 +12472,7 @@ paths:
"/api/v1/recurring_invoice/{invitation_key}/download":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Download recurring invoice PDF"
description: "Downloads a specific invoice"
operationId: downloadRecurringInvoice
@ -12482,7 +12509,7 @@ paths:
"/api/v1/recurring_invoices/{id}/upload":
put:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Add recurring invoice document"
description: "Handles the uploading of a document to a recurring_invoice"
operationId: uploadRecurringInvoice
@ -17296,7 +17323,7 @@ tags:
- name: invoices
description: |
Endpoint definitions for interacting with invoices.
- name: recurring_invoices
- name: Recurring Invoices
description: |
Endpoint definitions for interacting with recurring_invoices.
- name: payments

View File

@ -14,7 +14,7 @@ tags:
- name: invoices
description: |
Endpoint definitions for interacting with invoices.
- name: recurring_invoices
- name: Recurring Invoices
description: |
Endpoint definitions for interacting with recurring_invoices.
- name: payments

View File

@ -1,7 +1,7 @@
/api/v1/recurring_invoices:
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "List recurring invoices"
description: |
Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
@ -72,7 +72,7 @@
$ref: "#/components/responses/default"
post:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Create recurring invoice"
description: "Adds a Recurring Invoice to the system"
operationId: storeRecurringInvoice
@ -106,7 +106,7 @@
"/api/v1/recurring_invoices/{id}":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Show recurring invoice"
description: "Displays an RecurringInvoice by id"
operationId: showRecurringInvoice
@ -146,7 +146,7 @@
$ref: "#/components/responses/default"
put:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Update recurring invoice"
description: "Handles the updating of an RecurringInvoice by id"
operationId: updateRecurringInvoice
@ -186,7 +186,7 @@
$ref: "#/components/responses/default"
delete:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Delete recurring invoice"
description: "Handles the deletion of an RecurringInvoice by id"
operationId: deleteRecurringInvoice
@ -223,7 +223,7 @@
"/api/v1/recurring_invoices/{id}/edit":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Edit recurring invoice"
description: "Displays an RecurringInvoice by id"
operationId: editRecurringInvoice
@ -265,7 +265,7 @@
/api/v1/recurring_invoices/create:
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Blank recurring invoice"
description: "Returns a blank object with default values"
operationId: getRecurringInvoicesCreate
@ -298,25 +298,52 @@
/api/v1/recurring_invoices/bulk:
post:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Bulk recurring invoice actions"
description: ""
description: |
There are multiple actions that are available including:
operationId: bulkRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
description: "Hashed IDs"
description: "Bulk action details"
required: true
content:
application/json:
schema:
type: array
items:
description: "Array of hashed IDs to be bulk 'actioned"
type: integer
example: "[0,1,2,3]"
type: object
properties:
action:
type: string
description: |
The action to be performed, options include:
- `start`
Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
- `stop`
Stops the recurring invoice.
- `send_now`
Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
- `restore`
Restores the recurring invoice from an archived or deleted state.
- `archive`
Archives the recurring invoice. The recurring invoice will not fire in this state.
- `delete`
Deletes a recurring invoice.
required: true
ids:
required: true
type: array
items:
description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
type: string
example:
action: start
ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
responses:
200:
description: "The RecurringInvoice response"
@ -343,7 +370,7 @@
get:
deprecated: true
tags:
- recurring_invoices
- Recurring Invoices
summary: "Custom recurring invoice action"
description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
operationId: actionRecurringInvoice
@ -392,7 +419,7 @@
"/api/v1/recurring_invoice/{invitation_key}/download":
get:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Download recurring invoice PDF"
description: "Downloads a specific invoice"
operationId: downloadRecurringInvoice
@ -429,7 +456,7 @@
"/api/v1/recurring_invoices/{id}/upload":
put:
tags:
- recurring_invoices
- Recurring Invoices
summary: "Add recurring invoice document"
description: "Handles the uploading of a document to a recurring_invoice"
operationId: uploadRecurringInvoice