Merge support for purchase order PDF generation

This commit is contained in:
David Bomba 2023-10-26 17:50:07 +11:00
parent e8100ac1c3
commit 55ba708fd0
9 changed files with 48 additions and 68 deletions

View File

@ -94,7 +94,7 @@ class InvitationController extends Controller
$file_name = $invitation->purchase_order->numberFormatter().'.pdf'; $file_name = $invitation->purchase_order->numberFormatter().'.pdf';
$file = (new CreatePurchaseOrderPdf($invitation))->rawPdf(); $file = $invitation->purchase_order->service()->getPurchaseOrderPdf();
$headers = ['Content-Type' => 'application/pdf']; $headers = ['Content-Type' => 'application/pdf'];

View File

@ -11,23 +11,24 @@
namespace App\Http\Controllers\VendorPortal; namespace App\Http\Controllers\VendorPortal;
use App\Events\Misc\InvitationWasViewed; use App\Utils\Ninja;
use App\Events\PurchaseOrder\PurchaseOrderWasAccepted; use Illuminate\View\View;
use App\Events\PurchaseOrder\PurchaseOrderWasViewed; use App\Models\PurchaseOrder;
use App\Utils\Traits\MakesHash;
use App\Utils\Traits\MakesDates;
use App\Jobs\Entity\CreateRawPdf;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\VendorPortal\PurchaseOrders\ProcessPurchaseOrdersInBulkRequest; use App\Jobs\Invoice\InjectSignature;
use Illuminate\Support\Facades\Cache;
use Illuminate\Contracts\View\Factory;
use App\Models\PurchaseOrderInvitation;
use App\Events\Misc\InvitationWasViewed;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Events\PurchaseOrder\PurchaseOrderWasViewed;
use App\Events\PurchaseOrder\PurchaseOrderWasAccepted;
use App\Http\Requests\VendorPortal\PurchaseOrders\ShowPurchaseOrderRequest; use App\Http\Requests\VendorPortal\PurchaseOrders\ShowPurchaseOrderRequest;
use App\Http\Requests\VendorPortal\PurchaseOrders\ShowPurchaseOrdersRequest; use App\Http\Requests\VendorPortal\PurchaseOrders\ShowPurchaseOrdersRequest;
use App\Jobs\Invoice\InjectSignature; use App\Http\Requests\VendorPortal\PurchaseOrders\ProcessPurchaseOrdersInBulkRequest;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Models\PurchaseOrder;
use App\Models\PurchaseOrderInvitation;
use App\Utils\Ninja;
use App\Utils\Traits\MakesDates;
use App\Utils\Traits\MakesHash;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Cache;
use Illuminate\View\View;
class PurchaseOrderController extends Controller class PurchaseOrderController extends Controller
{ {
@ -116,7 +117,7 @@ class PurchaseOrderController extends Controller
$invitation = PurchaseOrderInvitation::withTrashed()->find($data['invitation_id']); $invitation = PurchaseOrderInvitation::withTrashed()->find($data['invitation_id']);
$file = (new CreatePurchaseOrderPdf($invitation, $invitation->company->db))->rawPdf(); $file = $invitation->purchase_order->service()->getPurchaseOrderPdf();
$headers = ['Content-Type' => 'application/pdf']; $headers = ['Content-Type' => 'application/pdf'];
@ -211,7 +212,8 @@ class PurchaseOrderController extends Controller
if (count($purchase_order_invitations) == 1) { if (count($purchase_order_invitations) == 1) {
$invitation = $purchase_order_invitations->first(); $invitation = $purchase_order_invitations->first();
$file = (new CreatePurchaseOrderPdf($invitation, $invitation->company->db))->rawPdf(); $file = (new CreateRawPdf($invitation))->handle();
return response()->streamDownload(function () use ($file) { return response()->streamDownload(function () use ($file) {
echo $file; echo $file;
}, $invitation->purchase_order->numberFormatter().".pdf", ['Content-Type' => 'application/pdf']); }, $invitation->purchase_order->numberFormatter().".pdf", ['Content-Type' => 'application/pdf']);
@ -226,7 +228,8 @@ class PurchaseOrderController extends Controller
$zipFile = new \PhpZip\ZipFile(); $zipFile = new \PhpZip\ZipFile();
try { try {
foreach ($invitations as $invitation) { foreach ($invitations as $invitation) {
$file = (new CreatePurchaseOrderPdf($invitation, $invitation->company->db))->rawPdf();
$file = (new CreateRawPdf($invitation))->handle();
$zipFile->addFromString($invitation->purchase_order->numberFormatter().".pdf", $file); $zipFile->addFromString($invitation->purchase_order->numberFormatter().".pdf", $file);
} }

View File

@ -95,11 +95,7 @@ class PdfSlot extends Component
$file_name = $this->entity->numberFormatter().'.pdf'; $file_name = $this->entity->numberFormatter().'.pdf';
if($this->entity instanceof \App\Models\PurchaseOrder) { $file = (new \App\Jobs\Entity\CreateRawPdf($this->invitation))->handle();
$file = (new CreatePurchaseOrderPdf($this->invitation, $this->invitation->company->db))->rawPdf();
} else {
$file = (new \App\Jobs\Entity\CreateRawPdf($this->invitation))->handle();
}
$headers = ['Content-Type' => 'application/pdf']; $headers = ['Content-Type' => 'application/pdf'];
@ -108,6 +104,7 @@ class PdfSlot extends Component
}, $file_name, $headers); }, $file_name, $headers);
} }
public function downloadEInvoice() public function downloadEInvoice()
{ {

View File

@ -11,20 +11,21 @@
namespace App\Jobs\PurchaseOrder; namespace App\Jobs\PurchaseOrder;
use App\Models\User;
use App\Models\Company;
use App\Libraries\MultiDB;
use App\Jobs\Util\UnlinkFile;
use Illuminate\Bus\Queueable;
use App\Jobs\Entity\CreateRawPdf;
use App\Jobs\Mail\NinjaMailerJob; use App\Jobs\Mail\NinjaMailerJob;
use App\Jobs\Mail\NinjaMailerObject; use App\Jobs\Mail\NinjaMailerObject;
use App\Jobs\Util\UnlinkFile;
use App\Libraries\MultiDB;
use App\Mail\DownloadPurchaseOrders; use App\Mail\DownloadPurchaseOrders;
use App\Models\Company; use Illuminate\Queue\SerializesModels;
use App\Models\PurchaseOrderInvitation; use App\Models\PurchaseOrderInvitation;
use App\Models\User; use Illuminate\Support\Facades\Storage;
use Illuminate\Bus\Queueable; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Storage;
class ZipPurchaseOrders implements ShouldQueue class ZipPurchaseOrders implements ShouldQueue
{ {
@ -62,7 +63,9 @@ class ZipPurchaseOrders implements ShouldQueue
try { try {
foreach ($invitations as $invitation) { foreach ($invitations as $invitation) {
$file = (new \App\Jobs\Vendor\CreatePurchaseOrderPdf($invitation))->rawPdf();
$file = (new CreateRawPdf($invitation))->handle();
$zipFile->addFromString($invitation->purchase_order->numberFormatter().".pdf", $file); $zipFile->addFromString($invitation->purchase_order->numberFormatter().".pdf", $file);
} }

View File

@ -11,18 +11,19 @@
namespace App\Mail\Engine; namespace App\Mail\Engine;
use App\DataMapper\EmailTemplateDefaults;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Models\Account;
use App\Models\PurchaseOrder;
use App\Models\Vendor;
use App\Utils\HtmlEngine;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Number; use App\Utils\Number;
use App\Models\Vendor;
use App\Models\Account;
use App\Utils\HtmlEngine;
use App\Models\PurchaseOrder;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use App\Utils\VendorHtmlEngine; use App\Utils\VendorHtmlEngine;
use App\Jobs\Entity\CreateRawPdf;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\URL;
use App\DataMapper\EmailTemplateDefaults;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
class PurchaseOrderEmailEngine extends BaseEmailEngine class PurchaseOrderEmailEngine extends BaseEmailEngine
{ {
@ -119,7 +120,8 @@ class PurchaseOrderEmailEngine extends BaseEmailEngine
->setTextBody($text_body); ->setTextBody($text_body);
if ($this->vendor->getSetting('pdf_email_attachment') !== false && $this->purchase_order->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { if ($this->vendor->getSetting('pdf_email_attachment') !== false && $this->purchase_order->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
$pdf = (new CreatePurchaseOrderPdf($this->invitation))->rawPdf();
$pdf = (new CreateRawPdf($this->invitation))->handle();
$this->setAttachments([['file' => base64_encode($pdf), 'name' => $this->purchase_order->numberFormatter().'.pdf']]); $this->setAttachments([['file' => base64_encode($pdf), 'name' => $this->purchase_order->numberFormatter().'.pdf']]);
} }

View File

@ -302,10 +302,6 @@ class BaseModel extends Model
if (! $invitation) { if (! $invitation) {
throw new \Exception('Hard fail, could not create an invitation.'); throw new \Exception('Hard fail, could not create an invitation.');
} }
if($this instanceof \App\Models\PurchaseOrder) {
return "data:application/pdf;base64,".base64_encode((new CreatePurchaseOrderPdf($invitation, $invitation->company->db))->rawPdf());
}
return "data:application/pdf;base64,".base64_encode((new CreateRawPdf($invitation))->handle()); return "data:application/pdf;base64,".base64_encode((new CreateRawPdf($invitation))->handle());

View File

@ -299,14 +299,7 @@ class EmailDefaults
} }
/** Purchase Order / Invoice / Credit / Quote PDF */ /** Purchase Order / Invoice / Credit / Quote PDF */
if ($this->email->email_object->settings->pdf_email_attachment && $this->email->email_object->entity instanceof PurchaseOrder) { if ($this->email->email_object->settings->pdf_email_attachment){
$pdf = (new CreatePurchaseOrderPdf($this->email->email_object->invitation))->rawPdf();
$this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->email->email_object->entity->numberFormatter().'.pdf']]);
} elseif ($this->email->email_object->settings->pdf_email_attachment &&
($this->email->email_object->entity instanceof Invoice ||
$this->email->email_object->entity instanceof Quote ||
$this->email->email_object->entity instanceof Credit)) {
$pdf = ((new CreateRawPdf($this->email->email_object->invitation))->handle()); $pdf = ((new CreateRawPdf($this->email->email_object->invitation))->handle());
$this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->email->email_object->entity->numberFormatter().'.pdf']]); $this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->email->email_object->entity->numberFormatter().'.pdf']]);
} }

View File

@ -11,6 +11,7 @@
namespace App\Services\PurchaseOrder; namespace App\Services\PurchaseOrder;
use App\Jobs\Entity\CreateRawPdf;
use App\Jobs\Vendor\CreatePurchaseOrderPdf; use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Models\PurchaseOrder; use App\Models\PurchaseOrder;
use App\Models\VendorContact; use App\Models\VendorContact;
@ -35,21 +36,7 @@ class GetPurchaseOrderPdf extends AbstractService
$invitation = $this->purchase_order->invitations()->first(); $invitation = $this->purchase_order->invitations()->first();
} }
return (new CreatePurchaseOrderPdf($invitation))->handle(); return (new CreateRawPdf($invitation))->handle();
// $path = $this->purchase_order->vendor->purchase_order_filepath($invitation);
// $file_path = $path.$this->purchase_order->numberFormatter().'.pdf';
// // $disk = 'public';
// $disk = config('filesystems.default');
// $file = Storage::disk($disk)->exists($file_path);
// if (! $file) {
// $file_path = (new CreatePurchaseOrderPdf($invitation))->handle();
// }
// return $file_path;
} }
} }

View File

@ -233,7 +233,6 @@ class PurchaseOrderTest extends TestCase
$x = $purchase_order->service()->markSent()->getPurchaseOrderPdf(); $x = $purchase_order->service()->markSent()->getPurchaseOrderPdf();
// nlog($x);
} }
public function testPurchaseOrderRest() public function testPurchaseOrderRest()