From d7c7289ca962de41f2828f963fca4c34ff4fca79 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 7 Jun 2022 20:36:47 +1000 Subject: [PATCH] Update for invoice designs --- app/DataMapper/CompanySettings.php | 8 ++++++++ app/Repositories/PurchaseOrderRepository.php | 2 -- app/Services/PdfMaker/Design.php | 8 ++++++++ app/Services/PurchaseOrder/CreateInvitations.php | 12 ------------ app/Utils/VendorHtmlEngine.php | 13 ++++++++----- database/factories/CompanyFactory.php | 3 +++ database/factories/VendorFactory.php | 3 +++ resources/views/pdf-designs/bold.html | 4 +++- resources/views/pdf-designs/business.html | 2 ++ resources/views/pdf-designs/clean.html | 2 +- resources/views/pdf-designs/creative.html | 4 +++- resources/views/pdf-designs/elegant.html | 4 +++- resources/views/pdf-designs/hipster.html | 4 +++- resources/views/pdf-designs/modern.html | 4 +++- resources/views/pdf-designs/plain.html | 4 +++- resources/views/pdf-designs/playful.html | 4 +++- resources/views/pdf-designs/tech.html | 4 +++- tests/Feature/PurchaseOrderTest.php | 11 +++++++++-- tests/MockAccountData.php | 1 + 19 files changed, 67 insertions(+), 30 deletions(-) diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index bd202b8a91..b81ad887b5 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -656,6 +656,14 @@ class CompanySettings extends BaseSettings '$vendor.phone', '$contact.email', ], + 'purchase_order_details' => [ + '$purchase_order.number', + '$purchase_order.po_number', + '$purchase_order.date', + '$purchase_order.due_date', + '$purchase_order.total', + '$purchase_order.balance_due', + ], 'company_details' => [ '$company.name', '$company.id_number', diff --git a/app/Repositories/PurchaseOrderRepository.php b/app/Repositories/PurchaseOrderRepository.php index ff508f1f44..2ffdc0e935 100644 --- a/app/Repositories/PurchaseOrderRepository.php +++ b/app/Repositories/PurchaseOrderRepository.php @@ -83,8 +83,6 @@ class PurchaseOrderRepository extends BaseRepository /* If no invitations have been created, this is our fail safe to maintain state*/ if ($purchase_order->invitations()->count() == 0) $purchase_order->service()->createInvitations(); - -nlog("4"); /* Recalculate invoice amounts */ $purchase_order = $purchase_order->calc()->getPurchaseOrder(); diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index c7e34e3997..9e4b5efeec 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -252,6 +252,8 @@ class Design extends BaseDesign public function entityDetails(): array { + + if ($this->type === 'statement') { $s_date = $this->translateDate(now(), $this->client->date_format(), $this->client->locale()); @@ -286,6 +288,12 @@ class Design extends BaseDesign $variables = $this->context['pdf_variables']['credit_details']; } + if($this->vendor){ + + $variables = $this->context['pdf_variables']['purchase_order_details']; + + } + $elements = []; // We don't want to show account balance or invoice total on PDF.. or any amount with currency. diff --git a/app/Services/PurchaseOrder/CreateInvitations.php b/app/Services/PurchaseOrder/CreateInvitations.php index 141914faa8..fa01a8457b 100644 --- a/app/Services/PurchaseOrder/CreateInvitations.php +++ b/app/Services/PurchaseOrder/CreateInvitations.php @@ -44,8 +44,6 @@ class CreateInvitations extends AbstractService { $contacts = $this->purchase_order->vendor->contacts()->where('send_email', true)->get(); -nlog("a"); - if($contacts->count() == 0){ $this->createBlankContact(); @@ -53,8 +51,6 @@ nlog("a"); $contacts = $this->purchase_order->vendor->contacts; } -nlog("b"); -nlog($contacts->count()); $contacts->each(function ($contact) { $invitation = PurchaseOrderInvitation::where('company_id', $this->purchase_order->company_id) @@ -79,9 +75,6 @@ nlog($contacts->count()); } }); -nlog("c"); - - if($this->purchase_order->invitations()->count() == 0) { if($contacts->count() == 0){ @@ -102,9 +95,6 @@ nlog("c"); } } -nlog("d"); - - $ii = PurchaseOrderInvitationFactory::create($this->purchase_order->company_id, $this->purchase_order->user_id); $ii->key = $this->createDbHash($this->purchase_order->company->db); $ii->purchase_order_id = $this->purchase_order->id; @@ -112,8 +102,6 @@ nlog("d"); $ii->save(); } -nlog("e"); - return $this->purchase_order; } } diff --git a/app/Utils/VendorHtmlEngine.php b/app/Utils/VendorHtmlEngine.php index f56b68245e..7e20a95168 100644 --- a/app/Utils/VendorHtmlEngine.php +++ b/app/Utils/VendorHtmlEngine.php @@ -149,10 +149,12 @@ class VendorHtmlEngine $data['$view_button'] = &$data['$view_link']; $data['$paymentButton'] = &$data['$payment_button']; $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')]; - $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->company->date_format(), $this->company->locale()) ?: ' ', 'label' => ctrans('texts.invoice_date')]; + $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->company->date_format(), $this->company->locale()) ?: ' ', 'label' => ctrans('texts.date')]; - - + $data['$purchase_order.number'] = &$data['$number']; + $data['$purchase_order.date'] = &$data['$date']; + $data['$purchase_order.po_number'] = &$data['$poNumber']; + $data['$purchase_order.due_date'] = &$data['$due_date']; $data['$portal_url'] = ['value' => $this->invitation->getPortalLink(), 'label' =>'']; @@ -192,6 +194,9 @@ class VendorHtmlEngine $data['$partial'] = &$data['$partial_due']; $data['$total'] = ['value' => Number::formatMoney($this->entity_calc->getTotal(), $this->vendor) ?: ' ', 'label' => ctrans('texts.total')]; + + $data['$purchase_order.total'] = &$data['$total']; + $data['$amount'] = &$data['$total']; $data['$amount_due'] = ['value' => &$data['$total']['value'], 'label' => ctrans('texts.amount_due')]; $data['$balance'] = ['value' => Number::formatMoney($this->entity_calc->getBalance(), $this->vendor) ?: ' ', 'label' => ctrans('texts.balance')]; @@ -429,8 +434,6 @@ class VendorHtmlEngine $values = $this->buildEntityDataArray(); foreach ($values as $key => $value) { - nlog($key); - nlog($value); $data['values'][$key] = $value['value']; $data['labels'][$key.'_label'] = $value['label']; } diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 6fb2d23ef7..c2298fd718 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -12,10 +12,12 @@ namespace Database\Factories; use App\DataMapper\CompanySettings; use App\Models\Company; +use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Factories\Factory; class CompanyFactory extends Factory { + use MakesHash; /** * The name of the factory's corresponding model. * @@ -41,6 +43,7 @@ class CompanyFactory extends Factory 'enabled_modules' => config('ninja.enabled_modules'), 'custom_fields' => (object) [ ], + 'company_key' => $this->createHash(), ]; } } diff --git a/database/factories/VendorFactory.php b/database/factories/VendorFactory.php index 1bca58436f..152848e545 100644 --- a/database/factories/VendorFactory.php +++ b/database/factories/VendorFactory.php @@ -12,6 +12,7 @@ namespace Database\Factories; use App\Models\Vendor; use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Str; class VendorFactory extends Factory { @@ -45,6 +46,8 @@ class VendorFactory extends Factory 'state' => $this->faker->state, 'postal_code' => $this->faker->postcode, 'country_id' => 4, + 'vendor_hash' => Str::random(40), + ]; } } diff --git a/resources/views/pdf-designs/bold.html b/resources/views/pdf-designs/bold.html index d648ae8fc8..de716f40d3 100644 --- a/resources/views/pdf-designs/bold.html +++ b/resources/views/pdf-designs/bold.html @@ -331,6 +331,7 @@

$entity_label

+
@@ -380,7 +381,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'vendor-details', 'client-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/business.html b/resources/views/pdf-designs/business.html index 84a1cd9815..9c6fbbb7d3 100644 --- a/resources/views/pdf-designs/business.html +++ b/resources/views/pdf-designs/business.html @@ -324,6 +324,7 @@

$entity_issued_to_label:

+
@@ -365,6 +366,7 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', + 'vendor-details','client-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/clean.html b/resources/views/pdf-designs/clean.html index 35e9e2e4af..30d3015c38 100644 --- a/resources/views/pdf-designs/clean.html +++ b/resources/views/pdf-designs/clean.html @@ -295,7 +295,7 @@
-
+
diff --git a/resources/views/pdf-designs/creative.html b/resources/views/pdf-designs/creative.html index c68b769f1f..5d37e6d72f 100644 --- a/resources/views/pdf-designs/creative.html +++ b/resources/views/pdf-designs/creative.html @@ -267,6 +267,7 @@
+
@@ -322,7 +323,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'vendor-details', 'client-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/elegant.html b/resources/views/pdf-designs/elegant.html index 3843b50c50..a9c0fcffa5 100644 --- a/resources/views/pdf-designs/elegant.html +++ b/resources/views/pdf-designs/elegant.html @@ -279,6 +279,7 @@

$to_label

+

$from_label

@@ -328,7 +329,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'client-details','vendor-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/hipster.html b/resources/views/pdf-designs/hipster.html index 63de4dd2a1..02c452e383 100644 --- a/resources/views/pdf-designs/hipster.html +++ b/resources/views/pdf-designs/hipster.html @@ -297,6 +297,7 @@

$to_label:

+
{ diff --git a/resources/views/pdf-designs/modern.html b/resources/views/pdf-designs/modern.html index da83b85bed..51476ddec1 100644 --- a/resources/views/pdf-designs/modern.html +++ b/resources/views/pdf-designs/modern.html @@ -320,6 +320,7 @@
+
@@ -364,7 +365,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'client-details','vendor-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/plain.html b/resources/views/pdf-designs/plain.html index c1a5ab55da..a529de6c93 100644 --- a/resources/views/pdf-designs/plain.html +++ b/resources/views/pdf-designs/plain.html @@ -270,6 +270,7 @@
+
@@ -306,7 +307,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'client-details','vendor-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/playful.html b/resources/views/pdf-designs/playful.html index 43d0d0a468..85739d84cc 100644 --- a/resources/views/pdf-designs/playful.html +++ b/resources/views/pdf-designs/playful.html @@ -349,6 +349,7 @@

$to_label:

+
@@ -409,7 +410,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'client-details','vendor-details' ]; tables.forEach((tableIdentifier) => { diff --git a/resources/views/pdf-designs/tech.html b/resources/views/pdf-designs/tech.html index 2fb5428563..2eb7c69385 100644 --- a/resources/views/pdf-designs/tech.html +++ b/resources/views/pdf-designs/tech.html @@ -321,6 +321,7 @@
$from_label:
+
$to_label: @@ -369,7 +370,8 @@ $entity_images let tables = [ 'product-table', 'task-table', 'delivery-note-table', 'statement-invoice-table', 'statement-payment-table', 'statement-aging-table-totals', - 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table' + 'statement-invoice-table-totals', 'statement-payment-table-totals', 'statement-aging-table', + 'client-details','vendor-details' ]; tables.forEach((tableIdentifier) => { diff --git a/tests/Feature/PurchaseOrderTest.php b/tests/Feature/PurchaseOrderTest.php index 3450147e88..75e441c93f 100644 --- a/tests/Feature/PurchaseOrderTest.php +++ b/tests/Feature/PurchaseOrderTest.php @@ -19,6 +19,7 @@ use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Support\Facades\Session; +use Illuminate\Support\Str; class PurchaseOrderTest extends TestCase { @@ -46,7 +47,12 @@ class PurchaseOrderTest extends TestCase 'status_id' => 1, 'discount' => 0, 'is_amount_discount' => 1, - 'number' => '34343xx43', + 'number' => Str::random(10), + 'po_number' => Str::random(5), + 'due_date' => '2022-01-01', + 'date' => '2022-01-01', + 'balance' => 100, + 'amount' => 100, 'public_notes' => 'notes', 'is_deleted' => 0, 'custom_value1' => 0, @@ -69,8 +75,9 @@ class PurchaseOrderTest extends TestCase $this->assertNotNull($purchase_order); - $purchase_order->service()->markSent()->getPurchaseOrderPdf(); + $x = $purchase_order->service()->markSent()->getPurchaseOrderPdf(); + nlog($x); } public function testPurchaseOrderRest() diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index b9bc2957d2..93f2289011 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -56,6 +56,7 @@ use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Str; /** * Class MockAccountData.