type = $type; $this->document = $document; $this->contacts = $this->getContacts($type, $contacts); $this->contactType = $this->getContactType($type, $contactType); $this->hideContact = $hideContact; $this->hideIssuedAt = $hideIssuedAt; $this->hideDocumentNumber = $hideDocumentNumber; $this->hideDueAt = $hideDueAt; $this->hideOrderNumber = $hideOrderNumber; $this->issuedAt = $this->getissuedAt($type, $document, $issuedAt); $this->documentNumber = $this->getDocumentNumber($type, $document, $documentNumber); $this->dueAt = $this->getDueAt($type, $document, $dueAt); $this->orderNumber = $this->getOrderNumber($type, $document, $orderNumber); $this->textIssuedAt = $this->gettextIssuedAt($type, $textIssuedAt); $this->textDocumentNumber = $this->getTextDocumentNumber($type, $textDocumentNumber); $this->textDueAt = $this->getTextDueAt($type, $textDueAt); $this->textOrderNumber = $this->getTextOrderNumber($type, $textOrderNumber); } /** * Get the view / contents that represent the component. * * @return \Illuminate\Contracts\View\View|string */ public function render() { return view('components.documents.form.metadata'); } protected function getContacts($type, $contacts) { if (!empty($contacts)) { return $contacts; } $contact_type = $this->getContactType($type, null); if ($contact_type) { $contacts = Contact::$contact_type()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); } else { $contacts = Contact::enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); } return $contacts; } protected function getContactType($type, $contact_type) { if (!empty($contact_type)) { return $contact_type; } switch ($type) { case 'sale': case 'income': case 'invoice': $contact_type = 'customer'; break; case 'bill': case 'expense': case 'purchase': $contact_type = 'vendor'; break; } return $contact_type; } protected function getissuedAt($type, $document, $issued_at) { if (!empty($issued_at)) { return $issued_at; } if ($document) { return $document->issued_at; } switch ($type) { case 'sale': case 'income': case 'invoice': $issued_at = request()->get('invoiced_at', Date::now()->toDateString()); break; case 'bill': case 'expense': case 'purchase': $issued_at = request()->get('billed_at', Date::now()->toDateString()); break; } return $issued_at; } protected function getDocumentNumber($type, $document, $document_number) { if (!empty($document_number)) { return $document_number; } if ($document) { return $document->document_number; } switch ($type) { case 'sale': case 'income': case 'invoice': $document_number = $this->getNextDocumentNumber(Document::INVOICE_TYPE); break; case 'bill': case 'expense': case 'purchase': $document_number = $this->getNextDocumentNumber(Document::BILL_TYPE); break; } return $document_number; } protected function getDueAt($type, $document, $due_at) { if (!empty($due_at)) { return $due_at; } if ($document) { return $document->due_at; } switch ($type) { case 'sale': case 'income': case 'invoice': $due_at = Date::parse(request()->get('invoiced_at', Date::now()->toDateString()))->addDays(setting('invoice.payment_terms', 0))->toDateString(); break; case 'bill': case 'expense': case 'purchase': $due_at = request()->get('billed_at', Date::now()->toDateString()); break; } return $due_at; } protected function getOrderNumber($type, $document, $order_number) { if (!empty($order_number)) { return $order_number; } if ($document) { return $document->order_number; } $order_number = null; } protected function getTextDocumentNumber($type, $textDocumentNumber) { if (!empty($textDocumentNumber)) { return $textDocumentNumber; } switch ($type) { case 'sale': case 'income': case 'invoice': $textDocumentNumber = 'invoices.invoice_number'; break; case 'bill': case 'expense': case 'purchase': $textDocumentNumber = 'bills.bill_number'; break; } return $textDocumentNumber; } protected function getTextOrderNumber($type, $textOrderNumber) { if (!empty($textOrderNumber)) { return $textOrderNumber; } switch ($type) { case 'sale': case 'income': case 'invoice': $textOrderNumber = 'invoices.order_number'; break; case 'bill': case 'expense': case 'purchase': $textOrderNumber = 'bills.order_number'; break; } return $textOrderNumber; } protected function gettextIssuedAt($type, $textIssuedAt) { if (!empty($textIssuedAt)) { return $textIssuedAt; } switch ($type) { case 'sale': case 'income': case 'invoice': $textIssuedAt = 'invoices.invoice_date'; break; case 'bill': case 'expense': case 'purchase': $textIssuedAt = 'bills.bill_date'; break; } return $textIssuedAt; } protected function getTextDueAt($type, $textDueAt) { if (!empty($textDueAt)) { return $textDueAt; } switch ($type) { case 'sale': case 'income': case 'invoice': $textDueAt = 'invoices.due_date'; break; case 'bill': case 'expense': case 'purchase': $textDueAt = 'bills.due_date'; break; } return $textDueAt; } }