Merge pull request #8342 from turbo124/v5-develop

Email refactor
This commit is contained in:
David Bomba 2023-03-09 11:27:00 +11:00 committed by GitHub
commit 4bfa2df1de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
115 changed files with 5684 additions and 1881 deletions

View File

@ -84,6 +84,7 @@ class ClientSettings extends BaseSettings
*/ */
public static function buildClientSettings($company_settings, $client_settings) public static function buildClientSettings($company_settings, $client_settings)
{ {
if (! $client_settings) { if (! $client_settings) {
return $company_settings; return $company_settings;
} }

View File

@ -28,6 +28,8 @@ class ClientExport extends BaseExport
private $contact_transformer; private $contact_transformer;
public Writer $csv;
public string $date_key = 'created_at'; public string $date_key = 'created_at';
public array $entity_keys = [ public array $entity_keys = [

View File

@ -29,6 +29,8 @@ class ContactExport extends BaseExport
private ClientContactTransformer $contact_transformer; private ClientContactTransformer $contact_transformer;
public Writer $csv;
public string $date_key = 'created_at'; public string $date_key = 'created_at';
public array $entity_keys = [ public array $entity_keys = [

View File

@ -27,6 +27,8 @@ class CreditExport extends BaseExport
public string $date_key = 'created_at'; public string $date_key = 'created_at';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -25,7 +25,9 @@ class DocumentExport extends BaseExport
private $entity_transformer; private $entity_transformer;
public $date_key = 'created_at'; public string $date_key = 'created_at';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'record_type' => 'record_type', 'record_type' => 'record_type',

View File

@ -25,7 +25,9 @@ class ExpenseExport extends BaseExport
private $expense_transformer; private $expense_transformer;
public $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',

View File

@ -27,6 +27,8 @@ class InvoiceExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -28,6 +28,8 @@ class InvoiceItemExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -27,6 +27,8 @@ class PaymentExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'applied' => 'applied', 'applied' => 'applied',

View File

@ -26,7 +26,9 @@ class ProductExport extends BaseExport
private $entity_transformer; private $entity_transformer;
public $date_key = 'created_at'; public string $date_key = 'created_at';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'project' => 'project_id', 'project' => 'project_id',

View File

@ -27,6 +27,8 @@ class QuoteExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -27,6 +27,8 @@ class QuoteItemExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -27,6 +27,8 @@ class RecurringInvoiceExport extends BaseExport
public string $date_key = 'date'; public string $date_key = 'date';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',

View File

@ -28,10 +28,12 @@ class TaskExport extends BaseExport
private $entity_transformer; private $entity_transformer;
public $date_key = 'created_at'; public string $date_key = 'created_at';
private string $date_format = 'YYYY-MM-DD'; private string $date_format = 'YYYY-MM-DD';
public Writer $csv;
public array $entity_keys = [ public array $entity_keys = [
'start_date' => 'start_date', 'start_date' => 'start_date',
'end_date' => 'end_date', 'end_date' => 'end_date',

View File

@ -11,26 +11,26 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Events\Credit\CreditWasEmailed; use App\Utils\Ninja;
use App\Events\Quote\QuoteWasEmailed; use App\Models\Quote;
use App\Http\Requests\Email\SendEmailRequest;
use App\Jobs\Entity\EmailEntity;
use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
use App\Models\Credit; use App\Models\Credit;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\PurchaseOrder; use App\Models\PurchaseOrder;
use App\Models\Quote; use App\Services\Email\Email;
use Illuminate\Http\Response;
use App\Utils\Traits\MakesHash;
use App\Jobs\Entity\EmailEntity;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use App\Services\Email\MailEntity; use App\Services\Email\EmailObject;
use App\Services\Email\MailObject; use App\Events\Quote\QuoteWasEmailed;
use App\Transformers\QuoteTransformer;
use App\Events\Credit\CreditWasEmailed;
use App\Transformers\CreditTransformer; use App\Transformers\CreditTransformer;
use App\Transformers\InvoiceTransformer; use App\Transformers\InvoiceTransformer;
use App\Http\Requests\Email\SendEmailRequest;
use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
use App\Transformers\PurchaseOrderTransformer; use App\Transformers\PurchaseOrderTransformer;
use App\Transformers\QuoteTransformer;
use App\Transformers\RecurringInvoiceTransformer; use App\Transformers\RecurringInvoiceTransformer;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Response;
class EmailController extends BaseController class EmailController extends BaseController
{ {
@ -119,7 +119,6 @@ class EmailController extends BaseController
$entity_obj = $entity::withTrashed()->with('invitations')->find($request->input('entity_id')); $entity_obj = $entity::withTrashed()->with('invitations')->find($request->input('entity_id'));
$subject = $request->has('subject') ? $request->input('subject') : ''; $subject = $request->has('subject') ? $request->input('subject') : '';
$body = $request->has('body') ? $request->input('body') : ''; $body = $request->has('body') ? $request->input('body') : '';
$entity_string = strtolower(class_basename($entity_obj));
$template = str_replace('email_template_', '', $request->input('template')); $template = str_replace('email_template_', '', $request->input('template'));
$data = [ $data = [
@ -127,27 +126,30 @@ class EmailController extends BaseController
'body' => $body, 'body' => $body,
]; ];
$mo = new MailObject; $mo = new EmailObject;
$mo->subject = empty($subject) ? null : $subject; $mo->subject = strlen($subject) > 3 ? $subject : null;
$mo->body = empty($body) ? null : $body; $mo->body = strlen($body) > 3 ? $body : null;
$mo->entity_string = $entity; $mo->entity_id = $request->input('entity_id');
$mo->email_template = $template; $mo->template = $request->input('template'); //full template name in use
$mo->entity_class = $this->resolveClass($entity);
$mo->email_template_body = $request->input('template');
$mo->email_template_subject = str_replace("template", "subject", $request->input('template'));
if (Ninja::isHosted() && !$entity_obj->company->account->account_sms_verified) {
return response(['message' => 'Please verify your account to send emails.'], 400);
}
if ($entity == 'purchaseOrder' || $entity == 'purchase_order' || $template == 'purchase_order' || $entity == 'App\Models\PurchaseOrder') {
return $this->sendPurchaseOrder($entity_obj, $data, $template);
}
$entity_obj->invitations->each(function ($invitation) use ($data, $entity_string, $entity_obj, $template, $mo) { // if ($entity == 'purchaseOrder' || $entity == 'purchase_order' || $template == 'purchase_order' || $entity == 'App\Models\PurchaseOrder') {
// return $this->sendPurchaseOrder($entity_obj, $data, $template);
// }
$entity_obj->invitations->each(function ($invitation) use ($data, $entity_obj, $template, $mo) {
if (! $invitation->contact->trashed() && $invitation->contact->email) { if (! $invitation->contact->trashed() && $invitation->contact->email) {
$entity_obj->service()->markSent()->save(); $entity_obj->service()->markSent()->save();
EmailEntity::dispatch($invitation->fresh(), $invitation->company, $template, $data); // EmailEntity::dispatch($invitation->fresh(), $invitation->company, $template, $data);
$mo->invitation_id = $invitation->id;
Email::dispatch($mo, $invitation->company);
// MailEntity::dispatch($invitation, $invitation->company->db, $mo);
} }
}); });
@ -188,6 +190,12 @@ class EmailController extends BaseController
$this->entity_transformer = RecurringInvoiceTransformer::class; $this->entity_transformer = RecurringInvoiceTransformer::class;
} }
if($entity_obj instanceof PurchaseOrder){
$this->entity_type = PurchaseOrder::class;
$this->entity_transformer = PurchaseOrderTransformer::class;
}
// @phpstan-ignore-next-line
return $this->itemResponse($entity_obj->fresh()); return $this->itemResponse($entity_obj->fresh());
} }
@ -203,4 +211,24 @@ class EmailController extends BaseController
return $this->itemResponse($entity_obj); return $this->itemResponse($entity_obj);
} }
private function resolveClass(string $entity): string
{
match($entity){
'invoice' => $class = Invoice::class,
'App\Models\Invoice' => $class = Invoice::class,
'credit' => $class = Credit::class,
'App\Models\Credit' => $class = Credit::class,
'quote' => $class = Quote::class,
'App\Models\Quote' => $class = Quote::class,
'purchase_order' => $class = PurchaseOrder::class,
'purchaseOrder' => $class = PurchaseOrder::class,
'App\Models\PurchaseOrder' => $class = PurchaseOrder::class,
default => $class = Invoice::class,
};
return $class;
}
} }

View File

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

View File

@ -22,7 +22,7 @@ use Livewire\Component;
class SubscriptionPlanSwitch extends Component class SubscriptionPlanSwitch extends Component
{ {
/** /**
* @var RecurringInvoice * @var \App\Models\RecurringInvoice
*/ */
public $recurring_invoice; public $recurring_invoice;

View File

@ -12,13 +12,16 @@
namespace App\Http\Requests\Email; namespace App\Http\Requests\Email;
use App\Http\Requests\Request; use App\Http\Requests\Request;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class SendEmailRequest extends Request class SendEmailRequest extends Request
{ {
use MakesHash; use MakesHash;
private string $error_message = '';
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
* *
@ -78,7 +81,14 @@ class SendEmailRequest extends Request
private function checkUserAbleToSend() private function checkUserAbleToSend()
{ {
$input = $this->all(); $input = $this->all();
if (Ninja::isHosted() && !auth()->user()->account->account_sms_verified) {
$this->error_message = ctrans('texts.authorization_sms_failure');
return false;
}
/*Make sure we have all the require ingredients to send a template*/ /*Make sure we have all the require ingredients to send a template*/
if (array_key_exists('entity', $input) && array_key_exists('entity_id', $input) && is_string($input['entity']) && $input['entity_id']) { if (array_key_exists('entity', $input) && array_key_exists('entity_id', $input) && is_string($input['entity']) && $input['entity_id']) {
$company = auth()->user()->company(); $company = auth()->user()->company();
@ -96,4 +106,9 @@ class SendEmailRequest extends Request
return false; return false;
} }
protected function failedAuthorization()
{
throw new AuthorizationException($this->error_message);
}
} }

View File

@ -56,8 +56,8 @@ class GenericReportRequest extends Request
$input['start_date'] = null; $input['start_date'] = null;
$input['end_date'] = null; $input['end_date'] = null;
} }
nlog($input);
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -48,10 +48,8 @@ class CreateUbl implements ShouldQueue
} }
/** /**
* Execute the job. * Execute the job
* * @return ?string
*
* @return void
*/ */
public function handle() public function handle()
{ {

View File

@ -27,6 +27,111 @@ use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Account
*
* @property int $id
* @property string|null $plan
* @property string|null $plan_term
* @property string|null $plan_started
* @property string|null $plan_paid
* @property string|null $plan_expires
* @property string|null $user_agent
* @property string|null $key
* @property int|null $payment_id
* @property int $default_company_id
* @property string|null $trial_started
* @property string|null $trial_plan
* @property string|null $plan_price
* @property int $num_users
* @property string|null $utm_source
* @property string|null $utm_medium
* @property string|null $utm_campaign
* @property string|null $utm_term
* @property string|null $utm_content
* @property string $latest_version
* @property int $report_errors
* @property string|null $referral_code
* @property int|null $created_at
* @property int|null $updated_at
* @property int $is_scheduler_running
* @property int|null $trial_duration
* @property int $is_onboarding
* @property object|null $onboarding
* @property int $is_migrated
* @property string|null $platform
* @property int|null $hosted_client_count
* @property int|null $hosted_company_count
* @property string|null $inapp_transaction_id
* @property bool $set_react_as_default_ap
* @property int $is_flagged
* @property int $is_verified_account
* @property string|null $account_sms_verification_code
* @property string|null $account_sms_verification_number
* @property int $account_sms_verified
* @property string|null $bank_integration_account_id
* @property int $is_trial
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankIntegration> $bank_integrations
* @property-read int|null $bank_integrations_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
* @property-read int|null $companies_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
* @property-read int|null $company_users_count
* @property-read \App\Models\Company|null $default_company
* @property-read mixed $hashed_id
* @property-read \App\Models\Payment|null $payment
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
* @property-read int|null $users_count
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\AccountFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Account newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Account newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Account query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerificationCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerificationNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerified($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereBankIntegrationAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereDefaultCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereHostedClientCount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereHostedCompanyCount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereInappTransactionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsFlagged($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsMigrated($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsOnboarding($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsSchedulerRunning($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsTrial($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereIsVerifiedAccount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereLatestVersion($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereNumUsers($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereOnboarding($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlan($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanExpires($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanPaid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanPrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanStarted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanTerm($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account wherePlatform($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereReferralCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereReportErrors($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereSetReactAsDefaultAp($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialDuration($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialPlan($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialStarted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUserAgent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmCampaign($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmContent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmMedium($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmSource($value)
* @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmTerm($value)
* @mixin \Eloquent
*/
class Account extends BaseModel class Account extends BaseModel
{ {
use PresentableTrait; use PresentableTrait;

View File

@ -13,6 +13,91 @@ namespace App\Models;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
/**
* App\Models\Activity
*
* @property int $id
* @property int|null $user_id
* @property int $company_id
* @property int|null $client_id
* @property int|null $client_contact_id
* @property int|null $account_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $payment_id
* @property int|null $invoice_id
* @property int|null $credit_id
* @property int|null $invitation_id
* @property int|null $task_id
* @property int|null $expense_id
* @property int|null $activity_type_id
* @property string $ip
* @property bool $is_system
* @property string $notes
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $token_id
* @property int|null $quote_id
* @property int|null $subscription_id
* @property int|null $recurring_invoice_id
* @property int|null $recurring_expense_id
* @property int|null $recurring_quote_id
* @property int|null $purchase_order_id
* @property int|null $vendor_contact_id
* @property-read \App\Models\Backup|null $backup
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact|null $contact
* @property-read \App\Models\Credit|null $credit
* @property-read \App\Models\Expense|null $expense
* @property-read mixed $hashed_id
* @property-read \App\Models\Backup|null $history
* @property-read \App\Models\Invoice|null $invoice
* @property-read \App\Models\Payment|null $payment
* @property-read \App\Models\PurchaseOrder|null $purchase_order
* @property-read \App\Models\Quote|null $quote
* @property-read \App\Models\RecurringExpense|null $recurring_expense
* @property-read \App\Models\RecurringInvoice|null $recurring_invoice
* @property-read \App\Models\Subscription|null $subscription
* @property-read \App\Models\Task|null $task
* @property-read \App\Models\User|null $user
* @property-read \App\Models\Vendor|null $vendor
* @property-read \App\Models\VendorContact|null $vendor_contact
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Activity newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Activity newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Activity query()
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereActivityTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereCreditId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereInvitationId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereIsSystem($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity wherePurchaseOrderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereQuoteId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringQuoteId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereTaskId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereTokenId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereVendorContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Activity whereVendorId($value)
* @mixin \Eloquent
*/
class Activity extends StaticModel class Activity extends StaticModel
{ {
use MakesHash; use MakesHash;

View File

@ -13,6 +13,35 @@ namespace App\Models;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\Backup
*
* @property int $id
* @property int $activity_id
* @property string|null $json_backup
* @property int|null $created_at
* @property int|null $updated_at
* @property string $amount
* @property string|null $filename
* @property string|null $disk
* @property-read \App\Models\Activity $activity
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Backup newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Backup newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Backup query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereActivityId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereDisk($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereJsonBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|Backup whereUpdatedAt($value)
* @mixin \Eloquent
*/
class Backup extends BaseModel class Backup extends BaseModel
{ {
public function getEntityType() public function getEntityType()

View File

@ -13,6 +13,23 @@ namespace App\Models;
/** /**
* Class Bank. * Class Bank.
*
* @property int $id
* @property string|null $name
* @property string|null $remote_id
* @property int $bank_library_id
* @property string|null $config
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Bank newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Bank newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Bank query()
* @method static \Illuminate\Database\Eloquent\Builder|Bank whereBankLibraryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Bank whereConfig($value)
* @method static \Illuminate\Database\Eloquent\Builder|Bank whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Bank whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Bank whereRemoteId($value)
* @mixin \Eloquent
*/ */
class Bank extends StaticModel class Bank extends StaticModel
{ {

View File

@ -18,6 +18,21 @@ use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class BankAccount. * Class BankAccount.
*
* @property-read \App\Models\Bank|null $bank
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankSubaccount> $bank_subaccounts
* @property-read int|null $bank_subaccounts_count
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankAccount withoutTrashed()
* @mixin \Eloquent
*/ */
class BankAccount extends BaseModel class BankAccount extends BaseModel
{ {

View File

@ -13,6 +13,70 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\BankIntegration
*
* @property int $id
* @property int $account_id
* @property int $company_id
* @property int $user_id
* @property string $provider_name
* @property int $provider_id
* @property int $bank_account_id
* @property string|null $bank_account_name
* @property string|null $bank_account_number
* @property string|null $bank_account_status
* @property string|null $bank_account_type
* @property string $balance
* @property string|null $currency
* @property string $nickname
* @property string|null $from_date
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $disabled_upstream
* @property int $auto_sync
* @property-read \App\Models\Account $account
* @property-read \App\Models\Company $company
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $transactions
* @property-read int|null $transactions_count
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\BankIntegrationFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereAutoSync($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountName($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountType($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCurrency($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereDisabledUpstream($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereFromDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereNickname($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereProviderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereProviderName($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankIntegration withoutTrashed()
* @mixin \Eloquent
*/
class BankIntegration extends BaseModel class BankIntegration extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -16,6 +16,19 @@ use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class BankSubaccount. * Class BankSubaccount.
*
* @property-read \App\Models\BankAccount|null $bank_account
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankSubaccount withoutTrashed()
* @mixin \Eloquent
*/ */
class BankSubaccount extends BaseModel class BankSubaccount extends BaseModel
{ {

View File

@ -15,6 +15,80 @@ use App\Services\Bank\BankService;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\BankTransaction
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $bank_integration_id
* @property int $transaction_id
* @property string $amount
* @property string|null $currency_code
* @property int|null $currency_id
* @property string|null $account_type
* @property int|null $category_id
* @property int|null $ninja_category_id
* @property string $category_type
* @property string $base_type
* @property string|null $date
* @property int $bank_account_id
* @property string|null $description
* @property string $invoice_ids
* @property int|null $expense_id
* @property int|null $vendor_id
* @property int $status_id
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int|null $bank_transaction_rule_id
* @property int|null $payment_id
* @property-read \App\Models\BankIntegration $bank_integration
* @property-read \App\Models\Company $company
* @property-read \App\Models\Expense|null $expense
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\BankTransactionFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereAccountType($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankIntegrationId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankTransactionRuleId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBaseType($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCategoryType($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCurrencyCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereInvoiceIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereNinjaCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereTransactionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransaction withoutTrashed()
* @mixin \Eloquent
*/
class BankTransaction extends BaseModel class BankTransaction extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -13,6 +13,58 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\BankTransactionRule
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property string $name
* @property array|null $rules
* @property int $auto_convert
* @property int $matches_on_all
* @property string $applies_to
* @property int|null $client_id
* @property int|null $vendor_id
* @property int|null $category_id
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \App\Models\ExpenseCategory|null $expense_category
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\BankTransactionRuleFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereAppliesTo($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereAutoConvert($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereMatchesOnAll($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereRules($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|BankTransactionRule withoutTrashed()
* @mixin \Eloquent
*/
class BankTransactionRule extends BaseModel class BankTransactionRule extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -26,8 +26,14 @@ use Illuminate\Support\Str;
* Class BaseModel * Class BaseModel
* *
* @method scope() static * @method scope() static
*
* @package App\Models * @package App\Models
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel query()
* @mixin \Eloquent
*/ */
class BaseModel extends Model class BaseModel extends Model
{ {

View File

@ -27,6 +27,147 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Client
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property string|null $name
* @property string|null $website
* @property string|null $private_notes
* @property string|null $public_notes
* @property string|null $client_hash
* @property string|null $logo
* @property string|null $phone
* @property string $balance
* @property string $paid_to_date
* @property string $credit_balance
* @property int|null $last_login
* @property int|null $industry_id
* @property int|null $size_id
* @property string|null $address1
* @property string|null $address2
* @property string|null $city
* @property string|null $state
* @property string|null $postal_code
* @property string|null $country_id
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $shipping_address1
* @property string|null $shipping_address2
* @property string|null $shipping_city
* @property string|null $shipping_state
* @property string|null $shipping_postal_code
* @property int|null $shipping_country_id
* @property object|null $settings
* @property bool $is_deleted
* @property int|null $group_settings_id
* @property string|null $vat_number
* @property string|null $number
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $id_number
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read int|null $company_ledger_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read int|null $contacts_count
* @property-read \App\Models\Country|null $country
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read int|null $credits_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read int|null $expenses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
* @property-read int|null $gateway_tokens_count
* @property-read mixed $hashed_id
* @property-read \App\Models\GroupSetting|null $group_settings
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read int|null $ledger_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
* @property-read int|null $primary_contact_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read int|null $projects_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read int|null $quotes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read int|null $recurring_expenses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read int|null $recurring_invoices_count
* @property-read \App\Models\Country|null $shipping_country
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read int|null $system_logs_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read int|null $tasks_count
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|Client exclude($columns)
* @method static \Database\Factories\ClientFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Client filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Client newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Client newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Client onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Client query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Client whereAddress1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereAddress2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereClientHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCreditBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereGroupSettingsId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereIdNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereIndustryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereLastLogin($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereLogo($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePostalCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingAddress1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingAddress2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingCity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingPostalCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereShippingState($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereSizeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereState($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereVatNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client whereWebsite($value)
* @method static \Illuminate\Database\Eloquent\Builder|Client withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Client withoutTrashed()
* @mixin \Eloquent
*/
class Client extends BaseModel implements HasLocalePreference class Client extends BaseModel implements HasLocalePreference
{ {
use PresentableTrait; use PresentableTrait;

View File

@ -32,6 +32,98 @@ use Laracasts\Presenter\PresentableTrait;
* Class ClientContact * Class ClientContact
* *
* @method scope() static * @method scope() static
* @property int $id
* @property int $company_id
* @property int $client_id
* @property int $user_id
* @property string|null $first_name
* @property string|null $last_name
* @property string|null $phone
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $email
* @property string|null $email_verified_at
* @property string|null $confirmation_code
* @property int $is_primary
* @property int $confirmed
* @property int|null $last_login
* @property int|null $failed_logins
* @property string|null $oauth_user_id
* @property int|null $oauth_provider_id
* @property string|null $google_2fa_secret
* @property string|null $accepted_terms_version
* @property string|null $avatar
* @property string|null $avatar_type
* @property string|null $avatar_size
* @property string $password
* @property string|null $token
* @property int $is_locked
* @property int $send_email
* @property string|null $contact_key
* @property string|null $remember_token
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CreditInvitation> $credit_invitations
* @property-read int|null $credit_invitations_count
* @property-read mixed $contact_id
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation> $invoice_invitations
* @property-read int|null $invoice_invitations_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $quote_invitations
* @property-read int|null $quote_invitations_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $recurring_invoice_invitations
* @property-read int|null $recurring_invoice_invitations_count
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact company()
* @method static \Database\Factories\ClientContactFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact query()
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereAcceptedTermsVersion($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereAvatar($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereAvatarSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereAvatarType($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereConfirmationCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereConfirmed($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereContactKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereEmailVerifiedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereFailedLogins($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereFirstName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereGoogle2faSecret($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereIsLocked($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereIsPrimary($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereLastLogin($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereLastName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereOauthProviderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereOauthUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact wherePassword($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact wherePhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereRememberToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereSendEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ClientContact withoutTrashed()
* @mixin \Eloquent
*/ */
class ClientContact extends Authenticatable implements HasLocalePreference class ClientContact extends Authenticatable implements HasLocalePreference
{ {

View File

@ -14,6 +14,54 @@ namespace App\Models;
use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesDates;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\ClientGatewayToken
*
* @property int $id
* @property int $company_id
* @property int|null $client_id
* @property string|null $token
* @property string|null $routing_number
* @property int $company_gateway_id
* @property string|null $gateway_customer_reference
* @property int $gateway_type_id
* @property int $is_default
* @property object|null $meta
* @property int|null $deleted_at
* @property int|null $created_at
* @property int|null $updated_at
* @property int $is_deleted
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \App\Models\CompanyGateway|null $gateway
* @property-read \App\Models\GatewayType|null $gateway_type
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereCompanyGatewayId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereGatewayCustomerReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereGatewayTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereIsDefault($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereMeta($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereRoutingNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ClientGatewayToken withoutTrashed()
* @mixin \Eloquent
*/
class ClientGatewayToken extends BaseModel class ClientGatewayToken extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -25,6 +25,265 @@ use Illuminate\Notifications\Notification;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Company
*
* @property int $id
* @property int $account_id
* @property int|null $industry_id
* @property string|null $ip
* @property string $company_key
* @property int $convert_products
* @property int $fill_products
* @property int $update_products
* @property int $show_product_details
* @property int $client_can_register
* @property int $custom_surcharge_taxes1
* @property int $custom_surcharge_taxes2
* @property int $custom_surcharge_taxes3
* @property int $custom_surcharge_taxes4
* @property int $show_product_cost
* @property int $enabled_tax_rates
* @property int $enabled_modules
* @property int $enable_product_cost
* @property int $enable_product_quantity
* @property int $default_quantity
* @property string|null $subdomain
* @property string|null $db
* @property int|null $size_id
* @property string|null $first_day_of_week
* @property string|null $first_month_of_year
* @property string $portal_mode
* @property string|null $portal_domain
* @property int $enable_modules
* @property object $custom_fields
* @property object $settings
* @property string $slack_webhook_url
* @property string $google_analytics_key
* @property int|null $created_at
* @property int|null $updated_at
* @property int $enabled_item_tax_rates
* @property int $is_large
* @property int $enable_shop_api
* @property string $default_auto_bill
* @property int $mark_expenses_invoiceable
* @property int $mark_expenses_paid
* @property int $invoice_expense_documents
* @property int $auto_start_tasks
* @property int $invoice_task_timelog
* @property int $invoice_task_documents
* @property int $show_tasks_table
* @property int $is_disabled
* @property int $default_task_is_date_based
* @property int $enable_product_discount
* @property int $calculate_expense_tax_by_amount
* @property int $expense_inclusive_taxes
* @property int $session_timeout
* @property int $oauth_password_required
* @property int $invoice_task_datelog
* @property int $default_password_timeout
* @property int $show_task_end_date
* @property int $markdown_enabled
* @property int $use_comma_as_decimal_place
* @property int $report_include_drafts
* @property array|null $client_registration_fields
* @property int $convert_rate_to_client
* @property int $markdown_email_enabled
* @property int $stop_on_unpaid_recurring
* @property int $use_quote_terms_on_conversion
* @property int $enable_applying_payments
* @property int $track_inventory
* @property int $inventory_notification_threshold
* @property int $stock_notification
* @property string|null $matomo_url
* @property int|null $matomo_id
* @property int $enabled_expense_tax_rates
* @property int $invoice_task_project
* @property int $report_include_deleted
* @property int $invoice_task_lock
* @property int $convert_payment_currency
* @property int $convert_expense_currency
* @property int $notify_vendor_when_paid
* @property int $invoice_task_hours
* @property-read \App\Models\Account $account
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $all_activities
* @property-read int|null $all_activities_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $all_documents
* @property-read int|null $all_documents_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankIntegration> $bank_integrations
* @property-read int|null $bank_integrations_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransactionRule> $bank_transaction_rules
* @property-read int|null $bank_transaction_rules_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankTransaction> $bank_transactions
* @property-read int|null $bank_transactions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $client_contacts
* @property-read int|null $client_contacts_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
* @property-read int|null $client_gateway_tokens_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read int|null $clients_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyGateway> $company_gateways
* @property-read int|null $company_gateways_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
* @property-read int|null $company_users_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read int|null $contacts_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read int|null $credits_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Design> $designs
* @property-read int|null $designs_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ExpenseCategory> $expense_categories
* @property-read int|null $expense_categories_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read int|null $expenses_count
* @property-read mixed $company_id
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\GroupSetting> $group_settings
* @property-read int|null $group_settings_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\GroupSetting> $groups
* @property-read int|null $groups_count
* @property-read \App\Models\Industry|null $industry
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
* @property-read int|null $ledger_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentTerm> $payment_terms
* @property-read int|null $payment_terms_count
* @property-read \App\Models\PaymentType|null $payment_type
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products
* @property-read int|null $products_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
* @property-read int|null $projects_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrder> $purchase_orders
* @property-read int|null $purchase_orders_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read int|null $quotes_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
* @property-read int|null $recurring_expenses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
* @property-read int|null $recurring_invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Scheduler> $schedulers
* @property-read int|null $schedulers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Subscription> $subscriptions
* @property-read int|null $subscriptions_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_log_relation
* @property-read int|null $system_log_relation_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
* @property-read int|null $system_logs_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Scheduler> $task_schedulers
* @property-read int|null $task_schedulers_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\TaskStatus> $task_statuses
* @property-read int|null $task_statuses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read int|null $tasks_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\TaxRate> $tax_rates
* @property-read int|null $tax_rates_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
* @property-read int|null $tokens_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens_hashed
* @property-read int|null $tokens_hashed_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Design> $user_designs
* @property-read int|null $user_designs_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentTerm> $user_payment_terms
* @property-read int|null $user_payment_terms_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
* @property-read int|null $users_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Vendor> $vendors
* @property-read int|null $vendors_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Webhook> $webhooks
* @property-read int|null $webhooks_count
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\CompanyFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Company newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Company newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Company query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Company whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereAutoStartTasks($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCalculateExpenseTaxByAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereClientCanRegister($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereClientRegistrationFields($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCompanyKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereConvertExpenseCurrency($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereConvertPaymentCurrency($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereConvertProducts($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereConvertRateToClient($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCustomFields($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCustomSurchargeTaxes1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCustomSurchargeTaxes2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCustomSurchargeTaxes3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereCustomSurchargeTaxes4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereDb($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereDefaultAutoBill($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereDefaultPasswordTimeout($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereDefaultQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereDefaultTaskIsDateBased($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableApplyingPayments($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableModules($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableProductCost($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableProductDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableProductQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnableShopApi($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnabledExpenseTaxRates($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnabledItemTaxRates($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnabledModules($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereEnabledTaxRates($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereExpenseInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereFillProducts($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereFirstDayOfWeek($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereFirstMonthOfYear($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereGoogleAnalyticsKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereIndustryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInventoryNotificationThreshold($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceExpenseDocuments($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskDatelog($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskDocuments($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskHours($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskLock($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskProject($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereInvoiceTaskTimelog($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereIsDisabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereIsLarge($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMarkExpensesInvoiceable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMarkExpensesPaid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMarkdownEmailEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMarkdownEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMatomoId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereMatomoUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereNotifyVendorWhenPaid($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereOauthPasswordRequired($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company wherePortalDomain($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company wherePortalMode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereReportIncludeDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereReportIncludeDrafts($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereSessionTimeout($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereShowProductCost($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereShowProductDetails($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereShowTaskEndDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereShowTasksTable($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereSizeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereSlackWebhookUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereStockNotification($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereStopOnUnpaidRecurring($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereSubdomain($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereTrackInventory($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereUpdateProducts($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereUseCommaAsDecimalPlace($value)
* @method static \Illuminate\Database\Eloquent\Builder|Company whereUseQuoteTermsOnConversion($value)
* @mixin \Eloquent
*/
class Company extends BaseModel class Company extends BaseModel
{ {
use PresentableTrait; use PresentableTrait;
@ -151,6 +410,7 @@ class Company extends BaseModel
self::ENTITY_RECURRING_INVOICE => 1, self::ENTITY_RECURRING_INVOICE => 1,
self::ENTITY_CREDIT => 2, self::ENTITY_CREDIT => 2,
self::ENTITY_QUOTE => 4, self::ENTITY_QUOTE => 4,
// @phpstan-ignore-next-line
self::ENTITY_TASK => 8, self::ENTITY_TASK => 8,
self::ENTITY_EXPENSE => 16, self::ENTITY_EXPENSE => 16,
self::ENTITY_PROJECT => 32, self::ENTITY_PROJECT => 32,
@ -368,9 +628,6 @@ class Company extends BaseModel
return $this->hasMany(Product::class)->withTrashed(); return $this->hasMany(Product::class)->withTrashed();
} }
/**
* @return BelongsTo
*/
public function country() public function country()
{ {
$companies = Cache::get('countries'); $companies = Cache::get('countries');
@ -429,9 +686,6 @@ class Company extends BaseModel
return $this->hasMany(PaymentTerm::class); return $this->hasMany(PaymentTerm::class);
} }
/**
* @return BelongsTo
*/
public function language() public function language()
{ {
$languages = Cache::get('languages'); $languages = Cache::get('languages');

View File

@ -14,6 +14,86 @@ namespace App\Models;
use App\Utils\Number; use App\Utils\Number;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\CompanyGateway
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property string $gateway_key
* @property int $accepted_credit_cards
* @property int $require_cvv
* @property int|null $require_billing_address
* @property int|null $require_shipping_address
* @property int|null $update_details
* @property int $is_deleted
* @property string $config
* @property object $fees_and_limits
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string $token_billing
* @property string|null $label
* @property int $require_client_name
* @property int $require_postal_code
* @property int $require_client_phone
* @property int $require_contact_name
* @property int $require_contact_email
* @property int $require_custom_value1
* @property int $require_custom_value2
* @property int $require_custom_value3
* @property int $require_custom_value4
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $client_gateway_tokens
* @property-read int|null $client_gateway_tokens_count
* @property-read \App\Models\Company $company
* @property-read \App\Models\Gateway $gateway
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereAcceptedCreditCards($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereConfig($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereFeesAndLimits($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereGatewayKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereLabel($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireBillingAddress($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireClientName($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireClientPhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireContactEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireContactName($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireCvv($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequirePostalCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereRequireShippingAddress($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereTokenBilling($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereUpdateDetails($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway withoutTrashed()
* @mixin \Eloquent
*/
class CompanyGateway extends BaseModel class CompanyGateway extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -13,6 +13,44 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/**
* App\Models\CompanyLedger
*
* @property int $id
* @property int $company_id
* @property int|null $client_id
* @property int|null $user_id
* @property int|null $activity_id
* @property string|null $adjustment
* @property string|null $balance
* @property string|null $notes
* @property string|null $hash
* @property int $company_ledgerable_id
* @property string $company_ledgerable_type
* @property int|null $created_at
* @property int|null $updated_at
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read Model|\Eloquent $company_ledgerable
* @property-read \App\Models\User|null $user
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger query()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereActivityId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereAdjustment($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereCompanyLedgerableId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereCompanyLedgerableType($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyLedger whereUserId($value)
* @mixin \Eloquent
*/
class CompanyLedger extends Model class CompanyLedger extends Model
{ {
protected $dateFormat = 'Y-m-d H:i:s.u'; protected $dateFormat = 'Y-m-d H:i:s.u';

View File

@ -13,6 +13,49 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\CompanyToken
*
* @property int $id
* @property int $company_id
* @property int $account_id
* @property int $user_id
* @property string|null $token
* @property string|null $name
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $is_deleted
* @property int $is_system
* @property-read \App\Models\Account $account
* @property-read \App\Models\Company $company
* @property-read \App\Models\CompanyUser|null $company_user
* @property-read \App\Models\CompanyUser|null $cu
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereIsSystem($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyToken withoutTrashed()
* @mixin \Eloquent
*/
class CompanyToken extends BaseModel class CompanyToken extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -14,6 +14,61 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\CompanyUser
*
* @property int $id
* @property int $company_id
* @property int $account_id
* @property int $user_id
* @property string|null $permissions
* @property object|null $notifications
* @property object|null $settings
* @property string $slack_webhook_url
* @property int $is_owner
* @property int $is_admin
* @property int $is_locked
* @property int|null $deleted_at
* @property int|null $created_at
* @property int|null $updated_at
* @property int $permissions_updated_at
* @property string $ninja_portal_url
* @property string|null $react_settings
* @property-read \App\Models\Account $account
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $token
* @property-read int|null $token_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
* @property-read int|null $tokens_count
* @property-read \App\Models\User $user
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\User> $users
* @property-read int|null $users_count
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser authCompany()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser query()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereIsAdmin($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereIsLocked($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereIsOwner($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereNinjaPortalUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereNotifications($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser wherePermissions($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser wherePermissionsUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereReactSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereSlackWebhookUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CompanyUser withoutTrashed()
* @mixin \Eloquent
*/
class CompanyUser extends Pivot class CompanyUser extends Pivot
{ {
use SoftDeletes; use SoftDeletes;
@ -74,7 +129,7 @@ class CompanyUser extends Pivot
{ {
return $this->hasOne(User::class)->withPivot('permissions', 'settings', 'react_settings', 'is_admin', 'is_owner', 'is_locked', 'slack_webhook_url', 'migrating'); return $this->hasOne(User::class)->withPivot('permissions', 'settings', 'react_settings', 'is_admin', 'is_owner', 'is_locked', 'slack_webhook_url', 'migrating');
} }
public function company_pivot() public function company_pivot()
{ {
return $this->hasOne(Company::class)->withPivot('permissions', 'settings', 'react_settings', 'is_admin', 'is_owner', 'is_locked', 'slack_webhook_url', 'migrating'); return $this->hasOne(Company::class)->withPivot('permissions', 'settings', 'react_settings', 'is_admin', 'is_owner', 'is_locked', 'slack_webhook_url', 'migrating');

View File

@ -11,6 +11,52 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Country
*
* @property int $id
* @property string|null $capital
* @property string|null $citizenship
* @property string|null $country_code
* @property string|null $currency
* @property string|null $currency_code
* @property string|null $currency_sub_unit
* @property string|null $full_name
* @property string|null $iso_3166_2
* @property string|null $iso_3166_3
* @property string|null $name
* @property string|null $region_code
* @property string|null $sub_region_code
* @property bool $eea
* @property bool $swap_postal_code
* @property bool $swap_currency_symbol
* @property string|null $thousand_separator
* @property string|null $decimal_separator
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Country newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Country newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Country query()
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCapital($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCitizenship($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCountryCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCurrency($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCurrencyCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereCurrencySubUnit($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereDecimalSeparator($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereEea($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereFullName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereIso31662($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereIso31663($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereRegionCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereSubRegionCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereSwapCurrencySymbol($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereSwapPostalCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Country whereThousandSeparator($value)
* @mixin \Eloquent
*/
class Country extends StaticModel class Country extends StaticModel
{ {
public $timestamps = false; public $timestamps = false;

View File

@ -27,6 +27,166 @@ use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Credit
*
* @property int $id
* @property int $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int $status_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $recurring_id
* @property int|null $design_id
* @property int|null $invoice_id
* @property string|null $number
* @property float $discount
* @property bool $is_amount_discount
* @property string|null $po_number
* @property string|null $date
* @property string|null $last_sent_date
* @property string|null $due_date
* @property int $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property int $uses_inclusive_taxes
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $next_send_date
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string $exchange_rate
* @property string $amount
* @property string $balance
* @property string|null $partial
* @property string|null $partial_due_date
* @property string|null $last_viewed
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $reminder1_sent
* @property string|null $reminder2_sent
* @property string|null $reminder3_sent
* @property string|null $reminder_last_sent
* @property string $paid_to_date
* @property int|null $subscription_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read int|null $company_ledger_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CreditInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \App\Models\Invoice|null $invoice
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\CreditFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Credit filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Credit newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Credit newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Credit onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Credit query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereRecurringId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder1Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder2Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder3Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminderLastSent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Credit withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Credit withoutTrashed()
* @mixin \Eloquent
*/
class Credit extends BaseModel class Credit extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -19,6 +19,64 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\CreditInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $client_contact_id
* @property int $credit_id
* @property string $key
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $signature_ip
* @property string|null $email_status
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact $contact
* @property-read \App\Models\Credit $credit
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\CreditInvitationFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereCreditId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereSignatureIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|CreditInvitation withoutTrashed()
* @mixin \Eloquent
*/
class CreditInvitation extends BaseModel class CreditInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -11,6 +11,34 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Currency
*
* @property int $id
* @property string $name
* @property string $symbol
* @property int $precision
* @property string $thousand_separator
* @property string $decimal_separator
* @property string $code
* @property bool $swap_currency_symbol
* @property float $exchange_rate
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Currency newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Currency newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Currency query()
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereDecimalSeparator($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency wherePrecision($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereSwapCurrencySymbol($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereSymbol($value)
* @method static \Illuminate\Database\Eloquent\Builder|Currency whereThousandSeparator($value)
* @mixin \Eloquent
*/
class Currency extends StaticModel class Currency extends StaticModel
{ {
public $timestamps = false; public $timestamps = false;

View File

@ -4,6 +4,21 @@ namespace App\Models;
/** /**
* Class DateFormat. * Class DateFormat.
*
* @property int $id
* @property string $format
* @property string $format_moment
* @property string $format_dart
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat query()
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat whereFormat($value)
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat whereFormatDart($value)
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat whereFormatMoment($value)
* @method static \Illuminate\Database\Eloquent\Builder|DateFormat whereId($value)
* @mixin \Eloquent
*/ */
class DateFormat extends StaticModel class DateFormat extends StaticModel
{ {

View File

@ -4,6 +4,21 @@ namespace App\Models;
/** /**
* Class DatetimeFormat. * Class DatetimeFormat.
*
* @property int $id
* @property string $format
* @property string $format_moment
* @property string $format_dart
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat query()
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat whereFormat($value)
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat whereFormatDart($value)
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat whereFormatMoment($value)
* @method static \Illuminate\Database\Eloquent\Builder|DatetimeFormat whereId($value)
* @mixin \Eloquent
*/ */
class DatetimeFormat extends StaticModel class DatetimeFormat extends StaticModel
{ {

View File

@ -13,6 +13,45 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Design
*
* @property int $id
* @property int|null $user_id
* @property int|null $company_id
* @property string $name
* @property int $is_custom
* @property int $is_active
* @property object|null $design
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read \App\Models\Company|null $company
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Design filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Design newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Design newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Design onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Design query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Design whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereDesign($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereIsActive($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereIsCustom($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Design withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Design withoutTrashed()
* @mixin \Eloquent
*/
class Design extends BaseModel class Design extends BaseModel
{ {
use Filterable; use Filterable;

View File

@ -15,6 +15,77 @@ use App\Helpers\Document\WithTypeHelpers;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\Document
*
* @property int $id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property string|null $url
* @property string|null $preview
* @property string|null $name
* @property string|null $type
* @property string|null $disk
* @property string|null $hash
* @property int|null $size
* @property int|null $width
* @property int|null $height
* @property int $is_default
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $deleted_at
* @property int $documentable_id
* @property string $documentable_type
* @property int|null $created_at
* @property int|null $updated_at
* @property int $is_public
* @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $documentable
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\DocumentFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Document filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Document newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Document newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Document onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Document query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Document whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereDisk($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereDocumentableId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereDocumentableType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereHeight($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereIsDefault($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereIsPublic($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document wherePreview($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document whereWidth($value)
* @method static \Illuminate\Database\Eloquent\Builder|Document withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Document withoutTrashed()
* @mixin \Eloquent
*/
class Document extends BaseModel class Document extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -13,6 +13,125 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Expense
*
* @property int $id
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $company_id
* @property int|null $vendor_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int|null $invoice_id
* @property int|null $client_id
* @property int|null $bank_id
* @property int|null $invoice_currency_id
* @property int|null $currency_id
* @property int|null $category_id
* @property int|null $payment_type_id
* @property int|null $recurring_expense_id
* @property bool $is_deleted
* @property string $amount
* @property string $foreign_amount
* @property string $exchange_rate
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string|null $date
* @property string|null $payment_date
* @property string|null $private_notes
* @property string|null $public_notes
* @property string|null $transaction_reference
* @property int $should_be_invoiced
* @property int $invoice_documents
* @property int|null $transaction_id
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $number
* @property int|null $project_id
* @property string $tax_amount1
* @property string $tax_amount2
* @property string $tax_amount3
* @property int $uses_inclusive_taxes
* @property int $calculate_tax_by_amount
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\ExpenseCategory|null $category
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \App\Models\Currency|null $currency
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \App\Models\PaymentType|null $payment_type
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\PurchaseOrder|null $purchase_order
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\ExpenseFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Expense filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Expense newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Expense newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Expense onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Expense query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereBankId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCalculateTaxByAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereForeignAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereInvoiceCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereInvoiceDocuments($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense wherePaymentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense wherePaymentTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereRecurringExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereShouldBeInvoiced($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxAmount1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxAmount2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxAmount3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTransactionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Expense withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Expense withoutTrashed()
* @mixin \Eloquent
*/
class Expense extends BaseModel class Expense extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -14,6 +14,44 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\ExpenseCategory
*
* @property int $id
* @property int $user_id
* @property int $company_id
* @property string|null $name
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $is_deleted
* @property string $color
* @property int|null $bank_category_id
* @property-read \App\Models\Expense|null $expense
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\ExpenseCategoryFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereBankCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|ExpenseCategory withoutTrashed()
* @mixin \Eloquent
*/
class ExpenseCategory extends BaseModel class ExpenseCategory extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -11,6 +11,43 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Gateway
*
* @property int $id
* @property string $name
* @property string $key
* @property string $provider
* @property bool $visible
* @property int $sort_order
* @property string|null $site_url
* @property bool $is_offsite
* @property bool $is_secure
* @property object|null $fields
* @property string $default_gateway_type_id
* @property int|null $created_at
* @property int|null $updated_at
* @property-read mixed $options
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Gateway newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Gateway query()
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereDefaultGatewayTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereFields($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereIsOffsite($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereIsSecure($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereProvider($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereSiteUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereSortOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Gateway whereVisible($value)
* @mixin \Eloquent
*/
class Gateway extends StaticModel class Gateway extends StaticModel
{ {
protected $casts = [ protected $casts = [

View File

@ -11,6 +11,25 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\GatewayType
*
* @property int $id
* @property string|null $alias
* @property string|null $name
* @property-read \App\Models\Gateway|null $gateway
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PaymentType> $payment_methods
* @property-read int|null $payment_methods_count
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType query()
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType whereAlias($value)
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|GatewayType whereName($value)
* @mixin \Eloquent
*/
class GatewayType extends StaticModel class GatewayType extends StaticModel
{ {
public $timestamps = false; public $timestamps = false;

View File

@ -16,6 +16,46 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\GroupSetting
*
* @property int $id
* @property int $company_id
* @property int|null $user_id
* @property string|null $name
* @property object|null $settings
* @property int $is_default
* @property int|null $deleted_at
* @property int|null $created_at
* @property int|null $updated_at
* @property int $is_deleted
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read int|null $clients_count
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \App\Models\User|null $user
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting query()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereIsDefault($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereSettings($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|GroupSetting withoutTrashed()
* @mixin \Eloquent
*/
class GroupSetting extends StaticModel class GroupSetting extends StaticModel
{ {
use MakesHash; use MakesHash;

View File

@ -11,6 +11,20 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Industry
*
* @property int $id
* @property string $name
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Industry newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Industry newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Industry query()
* @method static \Illuminate\Database\Eloquent\Builder|Industry whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Industry whereName($value)
* @mixin \Eloquent
*/
class Industry extends StaticModel class Industry extends StaticModel
{ {
public $timestamps = false; public $timestamps = false;

View File

@ -30,6 +30,181 @@ use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Invoice
*
* @property int $id
* @property int $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int $status_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $recurring_id
* @property int|null $design_id
* @property string|null $number
* @property float $discount
* @property bool $is_amount_discount
* @property string|null $po_number
* @property string|null $date
* @property string|null $last_sent_date
* @property string|null $due_date
* @property bool $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property int $uses_inclusive_taxes
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $next_send_date
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string $exchange_rate
* @property string $amount
* @property string $balance
* @property string|null $partial
* @property string|null $partial_due_date
* @property string|null $last_viewed
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $reminder1_sent
* @property string|null $reminder2_sent
* @property string|null $reminder3_sent
* @property string|null $reminder_last_sent
* @property int $auto_bill_enabled
* @property string $paid_to_date
* @property int|null $subscription_id
* @property int $auto_bill_tries
* @property int $is_proforma
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read int|null $company_ledger_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read int|null $credits_count
* @property-read \App\Models\Design|null $design
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read \App\Models\Expense|null $expense
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
* @property-read int|null $expenses_count
* @property-read mixed $balance_due
* @property-read mixed $hashed_id
* @property-read mixed $status
* @property-read mixed $total
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\RecurringInvoice|null $recurring_invoice
* @property-read \App\Models\Subscription|null $subscription
* @property-read \App\Models\Task|null $task
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read int|null $tasks_count
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\InvoiceFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Invoice filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Invoice newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Invoice onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Invoice query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereAutoBillEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereAutoBillTries($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereIsProforma($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereRecurringId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereReminder1Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereReminder2Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereReminder3Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereReminderLastSent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Invoice withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Invoice withoutTrashed()
* @mixin \Eloquent
*/
class Invoice extends BaseModel class Invoice extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -21,6 +21,64 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\InvoiceInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $client_contact_id
* @property int $invoice_id
* @property string $key
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $signature_ip
* @property string|null $email_status
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact $contact
* @property-read mixed $hashed_id
* @property-read \App\Models\Invoice $invoice
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\InvoiceInvitationFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereSignatureIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|InvoiceInvitation withoutTrashed()
* @mixin \Eloquent
*/
class InvoiceInvitation extends BaseModel class InvoiceInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -11,6 +11,22 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Language
*
* @property int $id
* @property string $name
* @property string $locale
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Language newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Language newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Language query()
* @method static \Illuminate\Database\Eloquent\Builder|Language whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Language whereLocale($value)
* @method static \Illuminate\Database\Eloquent\Builder|Language whereName($value)
* @mixin \Eloquent
*/
class Language extends StaticModel class Language extends StaticModel
{ {
public $timestamps = false; public $timestamps = false;

View File

@ -23,6 +23,117 @@ use App\Utils\Traits\MakesHash;
use App\Utils\Traits\Payment\Refundable; use App\Utils\Traits\Payment\Refundable;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Payment
*
* @property int $id
* @property int $company_id
* @property int $client_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $user_id
* @property int|null $assigned_user_id
* @property int|null $client_contact_id
* @property int|null $invitation_id
* @property int|null $company_gateway_id
* @property int|null $gateway_type_id
* @property int|null $type_id
* @property int $status_id
* @property string $amount
* @property string $refunded
* @property string $applied
* @property string|null $date
* @property string|null $transaction_reference
* @property string|null $payer_id
* @property string|null $number
* @property string|null $private_notes
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property bool $is_deleted
* @property int $is_manual
* @property float $exchange_rate
* @property int $currency_id
* @property int|null $exchange_currency_id
* @property object|null $meta
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $transaction_id
* @property string|null $idempotency_key
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \App\Models\CompanyGateway|null $company_gateway
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
* @property-read int|null $company_ledger_count
* @property-read \App\Models\ClientContact|null $contact
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
* @property-read int|null $credits_count
* @property-read \App\Models\Currency|null $currency
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read \App\Models\Currency|null $exchange_currency
* @property-read \App\Models\GatewayType|null $gateway_type
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Paymentable> $paymentables
* @property-read int|null $paymentables_count
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\PaymentType|null $type
* @property-read \App\Models\User|null $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\PaymentFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Payment filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Payment newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Payment newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Payment onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Payment query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereApplied($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCompanyGatewayId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereExchangeCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereGatewayTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereIdempotencyKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereInvitationId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereIsManual($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereMeta($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment wherePayerId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereRefunded($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereTransactionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Payment withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Payment withoutTrashed()
* @mixin \Eloquent
*/
class Payment extends BaseModel class Payment extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -13,6 +13,32 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/**
* App\Models\PaymentHash
*
* @property int $id
* @property string $hash
* @property string $fee_total
* @property int|null $fee_invoice_id
* @property object $data
* @property int|null $payment_id
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read \App\Models\Invoice|null $fee_invoice
* @property-read \App\Models\Payment|null $payment
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash query()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereData($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereFeeInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereFeeTotal($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentHash whereUpdatedAt($value)
* @mixin \Eloquent
*/
class PaymentHash extends Model class PaymentHash extends Model
{ {
protected $guarded = ['id']; protected $guarded = ['id'];

View File

@ -13,6 +13,25 @@ namespace App\Models;
/** /**
* Class PaymentLibrary. * Class PaymentLibrary.
*
* @property int $id
* @property int|null $created_at
* @property int|null $updated_at
* @property string|null $name
* @property bool $visible
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentLibrary whereVisible($value)
* @mixin \Eloquent
*/ */
class PaymentLibrary extends BaseModel class PaymentLibrary extends BaseModel
{ {

View File

@ -15,6 +15,37 @@ use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class PaymentTerm. * Class PaymentTerm.
*
* @property int $id
* @property int|null $num_days
* @property string|null $name
* @property int|null $company_id
* @property int|null $user_id
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereNumDays($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentTerm withoutTrashed()
* @mixin \Eloquent
*/ */
class PaymentTerm extends BaseModel class PaymentTerm extends BaseModel
{ {

View File

@ -11,6 +11,22 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\PaymentType
*
* @property int $id
* @property string $name
* @property int|null $gateway_type_id
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType query()
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType whereGatewayTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PaymentType whereName($value)
* @mixin \Eloquent
*/
class PaymentType extends StaticModel class PaymentType extends StaticModel
{ {
/** /**

View File

@ -14,6 +14,37 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Paymentable
*
* @property int $id
* @property int $payment_id
* @property int $paymentable_id
* @property string $amount
* @property string $refunded
* @property string $paymentable_type
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read \App\Models\Payment $payment
* @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $paymentable
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable query()
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable wherePaymentableId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable wherePaymentableType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereRefunded($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Paymentable withoutTrashed()
* @mixin \Eloquent
*/
class Paymentable extends Pivot class Paymentable extends Pivot
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -15,6 +15,89 @@ use App\Utils\Traits\MakesHash;
use League\CommonMark\CommonMarkConverter; use League\CommonMark\CommonMarkConverter;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Product
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $product_key
* @property string|null $notes
* @property string $cost
* @property string $price
* @property string $quantity
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property int|null $deleted_at
* @property int|null $created_at
* @property int|null $updated_at
* @property int $is_deleted
* @property int $in_stock_quantity
* @property int $stock_notification
* @property int $stock_notification_threshold
* @property int|null $max_quantity
* @property string|null $product_image
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\ProductFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Product filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Product newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Product newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Product onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Product query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Product whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCost($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereInStockQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereMaxQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product wherePrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereProductImage($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereProductKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereQuantity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotification($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotificationThreshold($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Product withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Product withoutTrashed()
* @mixin \Eloquent
*/
class Product extends BaseModel class Product extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -8,6 +8,71 @@ use Laracasts\Presenter\PresentableTrait;
/** /**
* Class Project. * Class Project.
*
* @property int $id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int|null $client_id
* @property string $name
* @property string $task_rate
* @property string|null $due_date
* @property string|null $private_notes
* @property string $budgeted_hours
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $public_notes
* @property int $is_deleted
* @property string|null $number
* @property string $color
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read Project|null $project
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
* @property-read int|null $tasks_count
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\ProjectFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Project filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Project newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Project newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Project onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Project query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Project whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereBudgetedHours($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereTaskRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Project withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Project withoutTrashed()
* @mixin \Eloquent
*/ */
class Project extends BaseModel class Project extends BaseModel
{ {

View File

@ -13,6 +13,23 @@ namespace App\Models;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
/**
* App\Models\Proposal
*
* @property-read \App\Models\User|null $assigned_user
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read mixed $proposal_id
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Proposal newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Proposal newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Proposal query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @mixin \Eloquent
*/
class Proposal extends BaseModel class Proposal extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -21,6 +21,167 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\PurchaseOrder
*
* @property int $id
* @property int|null $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int $status_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $recurring_id
* @property int|null $design_id
* @property int|null $invoice_id
* @property string|null $number
* @property float $discount
* @property bool $is_amount_discount
* @property string|null $po_number
* @property string|null $date
* @property string|null $last_sent_date
* @property string|null $due_date
* @property int $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property int $uses_inclusive_taxes
* @property string|null $reminder1_sent
* @property string|null $reminder2_sent
* @property string|null $reminder3_sent
* @property string|null $reminder_last_sent
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $next_send_date
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string $exchange_rate
* @property string $balance
* @property string|null $partial
* @property string $amount
* @property string $paid_to_date
* @property string|null $partial_due_date
* @property string|null $last_viewed
* @property int|null $deleted_at
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $expense_id
* @property int|null $currency_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read \App\Models\Expense|null $expense
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \App\Models\Invoice|null $invoice
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\PurchaseOrderFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereRecurringId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder1Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder2Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder3Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminderLastSent($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder withoutTrashed()
* @mixin \Eloquent
*/
class PurchaseOrder extends BaseModel class PurchaseOrder extends BaseModel
{ {
use Filterable; use Filterable;

View File

@ -18,6 +18,62 @@ use Carbon\Carbon;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str; use Illuminate\Support\Str;
/**
* App\Models\PurchaseOrderInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $vendor_contact_id
* @property int $purchase_order_id
* @property string $key
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $email_status
* @property-read \App\Models\Company $company
* @property-read \App\Models\VendorContact $contact
* @property-read mixed $hashed_id
* @property-read \App\Models\PurchaseOrder $purchase_order
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\PurchaseOrderInvitationFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation wherePurchaseOrderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereVendorContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrderInvitation withoutTrashed()
* @mixin \Eloquent
*/
class PurchaseOrderInvitation extends BaseModel class PurchaseOrderInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -26,6 +26,163 @@ use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Quote
*
* @property int $id
* @property int $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int $status_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int|null $recurring_id
* @property int|null $design_id
* @property int|null $invoice_id
* @property string|null $number
* @property float $discount
* @property bool $is_amount_discount
* @property string|null $po_number
* @property string|null $date
* @property string|null $last_sent_date
* @property string|null $due_date
* @property string|null $next_send_date
* @property bool $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property int $uses_inclusive_taxes
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string $exchange_rate
* @property string $amount
* @property string $balance
* @property string|null $partial
* @property string|null $partial_due_date
* @property string|null $last_viewed
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $reminder1_sent
* @property string|null $reminder2_sent
* @property string|null $reminder3_sent
* @property string|null $reminder_last_sent
* @property string $paid_to_date
* @property int|null $subscription_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $balance_due
* @property-read mixed $hashed_id
* @property-read mixed $total
* @property-read mixed $valid_until
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\QuoteInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \App\Models\Invoice|null $invoice
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\QuoteFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Quote filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Quote newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Quote newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Quote onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Quote query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereRecurringId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder1Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder2Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder3Sent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminderLastSent($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Quote withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Quote withoutTrashed()
* @mixin \Eloquent
*/
class Quote extends BaseModel class Quote extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -19,6 +19,64 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
/**
* App\Models\QuoteInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $client_contact_id
* @property int $quote_id
* @property string $key
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $signature_ip
* @property string|null $email_status
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact $contact
* @property-read mixed $hashed_id
* @property-read \App\Models\Quote $quote
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\QuoteInvitationFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereQuoteId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereSignatureIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|QuoteInvitation withoutTrashed()
* @mixin \Eloquent
*/
class QuoteInvitation extends BaseModel class QuoteInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -15,6 +15,132 @@ use App\Services\Recurring\RecurringService;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
/**
* App\Models\RecurringExpense
*
* @property int $id
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $company_id
* @property int|null $vendor_id
* @property int $user_id
* @property int $status_id
* @property int|null $invoice_id
* @property int|null $client_id
* @property int|null $bank_id
* @property int|null $project_id
* @property int|null $payment_type_id
* @property int|null $recurring_expense_id
* @property bool $is_deleted
* @property int $uses_inclusive_taxes
* @property string|null $tax_name1
* @property string|null $tax_name2
* @property string|null $tax_name3
* @property string|null $date
* @property string|null $payment_date
* @property int $should_be_invoiced
* @property int $invoice_documents
* @property string|null $transaction_id
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $category_id
* @property int $calculate_tax_by_amount
* @property string|null $tax_amount1
* @property string|null $tax_amount2
* @property string|null $tax_amount3
* @property string|null $tax_rate1
* @property string|null $tax_rate2
* @property string|null $tax_rate3
* @property string|null $amount
* @property string|null $foreign_amount
* @property string $exchange_rate
* @property int|null $assigned_user_id
* @property string|null $number
* @property int|null $invoice_currency_id
* @property int|null $currency_id
* @property string|null $private_notes
* @property string|null $public_notes
* @property string|null $transaction_reference
* @property int $frequency_id
* @property string|null $last_sent_date
* @property string|null $next_send_date
* @property int|null $remaining_cycles
* @property string|null $next_send_date_client
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\RecurringExpenseFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereBankId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCalculateTaxByAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereForeignAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereInvoiceCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereInvoiceDocuments($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereNextSendDateClient($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense wherePaymentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense wherePaymentTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereRecurringExpenseId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereRemainingCycles($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereShouldBeInvoiced($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxAmount1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxAmount2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxAmount3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTransactionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense withoutTrashed()
* @mixin \Eloquent
*/
class RecurringExpense extends BaseModel class RecurringExpense extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -24,6 +24,160 @@ use Laracasts\Presenter\PresentableTrait;
/** /**
* Class for Recurring Invoices. * Class for Recurring Invoices.
*
* @property int $id
* @property int $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int $status_id
* @property string|null $number
* @property float $discount
* @property int $is_amount_discount
* @property string|null $po_number
* @property string|null $date
* @property string|null $due_date
* @property int $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string $amount
* @property string $balance
* @property string|null $partial
* @property string|null $last_viewed
* @property int $frequency_id
* @property string|null $last_sent_date
* @property string|null $next_send_date
* @property int|null $remaining_cycles
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string $auto_bill
* @property int $auto_bill_enabled
* @property int|null $design_id
* @property int $uses_inclusive_taxes
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string|null $due_date_days
* @property string|null $partial_due_date
* @property string $exchange_rate
* @property string $paid_to_date
* @property int|null $subscription_id
* @property string|null $next_send_date_client
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read mixed $status
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read int|null $invoices_count
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\Subscription|null $subscription
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor|null $vendor
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\RecurringInvoiceFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAutoBill($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAutoBillEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDueDateDays($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNextSendDateClient($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereRemainingCycles($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice withoutTrashed()
* @mixin \Eloquent
*/ */
class RecurringInvoice extends BaseModel class RecurringInvoice extends BaseModel
{ {

View File

@ -16,6 +16,61 @@ use App\Utils\Traits\MakesDates;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\RecurringInvoiceInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $client_contact_id
* @property int $recurring_invoice_id
* @property string $key
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property string|null $email_status
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact $contact
* @property-read mixed $hashed_id
* @property-read \App\Models\RecurringInvoice $recurring_invoice
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereRecurringInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoiceInvitation withoutTrashed()
* @mixin \Eloquent
*/
class RecurringInvoiceInvitation extends BaseModel class RecurringInvoiceInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -24,6 +24,154 @@ use Laracasts\Presenter\PresentableTrait;
/** /**
* Class for Recurring Quotes. * Class for Recurring Quotes.
*
* @property int $id
* @property int $client_id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int|null $project_id
* @property int|null $vendor_id
* @property int $status_id
* @property float $discount
* @property int $is_amount_discount
* @property string|null $number
* @property string|null $po_number
* @property string|null $date
* @property string|null $due_date
* @property int $is_deleted
* @property object|null $line_items
* @property object|null $backup
* @property string|null $footer
* @property string|null $public_notes
* @property string|null $private_notes
* @property string|null $terms
* @property string|null $tax_name1
* @property string $tax_rate1
* @property string|null $tax_name2
* @property string $tax_rate2
* @property string|null $tax_name3
* @property string $tax_rate3
* @property string $total_taxes
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string $amount
* @property string $balance
* @property string|null $last_viewed
* @property int $frequency_id
* @property string|null $last_sent_date
* @property string|null $next_send_date
* @property int|null $remaining_cycles
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string $auto_bill
* @property int $auto_bill_enabled
* @property string $paid_to_date
* @property string|null $custom_surcharge1
* @property string|null $custom_surcharge2
* @property string|null $custom_surcharge3
* @property string|null $custom_surcharge4
* @property int $custom_surcharge_tax1
* @property int $custom_surcharge_tax2
* @property int $custom_surcharge_tax3
* @property int $custom_surcharge_tax4
* @property string|null $due_date_days
* @property string $exchange_rate
* @property string|null $partial
* @property string|null $partial_due_date
* @property int|null $subscription_id
* @property int $uses_inclusive_taxes
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read mixed $status
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read int|null $history_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringQuoteInvitation> $invitations
* @property-read int|null $invitations_count
* @property-read \App\Models\Project|null $project
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
* @property-read int|null $quotes_count
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\RecurringQuoteFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAutoBill($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAutoBillEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDueDateDays($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereRemainingCycles($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote withoutTrashed()
* @mixin \Eloquent
*/ */
class RecurringQuote extends BaseModel class RecurringQuote extends BaseModel
{ {

View File

@ -16,6 +16,61 @@ use App\Utils\Traits\MakesDates;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\RecurringQuoteInvitation
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $client_contact_id
* @property int $recurring_quote_id
* @property string $key
* @property string|null $transaction_reference
* @property string|null $message_id
* @property string|null $email_error
* @property string|null $signature_base64
* @property string|null $signature_date
* @property string|null $sent_date
* @property string|null $viewed_date
* @property string|null $opened_date
* @property string|null $email_status
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property-read \App\Models\Company $company
* @property-read \App\Models\ClientContact $contact
* @property-read mixed $hashed_id
* @property-read \App\Models\RecurringQuote $recurring_quote
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereClientContactId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereEmailError($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereEmailStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereMessageId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereOpenedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereRecurringQuoteId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereSignatureBase64($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereSignatureDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereTransactionReference($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation whereViewedDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringQuoteInvitation withoutTrashed()
* @mixin \Eloquent
*/
class RecurringQuoteInvitation extends BaseModel class RecurringQuoteInvitation extends BaseModel
{ {
use MakesDates; use MakesDates;

View File

@ -15,6 +15,8 @@ use App\Services\Scheduler\SchedulerService;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* App\Models\Scheduler
*
* @property bool paused * @property bool paused
* @property bool is_deleted * @property bool is_deleted
* @property \Carbon\Carbon|mixed start_from * @property \Carbon\Carbon|mixed start_from
@ -28,6 +30,50 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property mixed company * @property mixed company
* @property array parameters * @property array parameters
* @property string action_class * @property string action_class
* @property int $id
* @property bool $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property array|null $parameters
* @property int $company_id
* @property bool $is_paused
* @property int|null $frequency_id
* @property \Illuminate\Support\Carbon|null $next_run
* @property \Illuminate\Support\Carbon|null $next_run_client
* @property int $user_id
* @property string $name
* @property string $template
* @property int|null $remaining_cycles
* @property-read \App\Models\Company $company
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\SchedulerFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereIsPaused($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereNextRun($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereNextRunClient($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereParameters($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereRemainingCycles($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereTemplate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Scheduler withoutTrashed()
* @mixin \Eloquent
*/ */
class Scheduler extends BaseModel class Scheduler extends BaseModel
{ {

View File

@ -13,6 +13,17 @@ namespace App\Models;
/** /**
* Class Size. * Class Size.
*
* @property int $id
* @property string $name
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Size newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Size newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Size query()
* @method static \Illuminate\Database\Eloquent\Builder|Size whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Size whereName($value)
* @mixin \Eloquent
*/ */
class Size extends StaticModel class Size extends StaticModel
{ {

View File

@ -16,6 +16,17 @@ use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException;
/**
* App\Models\StaticModel
*
* @property-read mixed $id
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel query()
* @mixin \Eloquent
*/
class StaticModel extends Model class StaticModel extends Model
{ {
use MakesHash; use MakesHash;

View File

@ -15,6 +15,96 @@ use App\Services\Subscription\SubscriptionService;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Subscription
*
* @property int $id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property string|null $product_ids
* @property int|null $frequency_id
* @property string|null $auto_bill
* @property string|null $promo_code
* @property float $promo_discount
* @property int $is_amount_discount
* @property int $allow_cancellation
* @property int $per_seat_enabled
* @property int $min_seats_limit
* @property int $max_seats_limit
* @property int $trial_enabled
* @property int $trial_duration
* @property int $allow_query_overrides
* @property int $allow_plan_changes
* @property string|null $plan_map
* @property int|null $refund_period
* @property array $webhook_configuration
* @property int|null $deleted_at
* @property bool $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $currency_id
* @property string|null $recurring_product_ids
* @property string $name
* @property int|null $group_id
* @property string $price
* @property string $promo_price
* @property int $registration_required
* @property int $use_inventory_management
* @property string|null $optional_product_ids
* @property string|null $optional_recurring_product_ids
* @property-read \App\Models\Company $company
* @property-read mixed $hashed_id
* @property-read \App\Models\GroupSetting|null $group_settings
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\SubscriptionFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Subscription filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Subscription newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Subscription onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Subscription query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereAllowCancellation($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereAllowPlanChanges($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereAllowQueryOverrides($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereAutoBill($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereGroupId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereMaxSeatsLimit($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereMinSeatsLimit($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereOptionalProductIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereOptionalRecurringProductIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePerSeatEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePlanMap($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereProductIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePromoCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePromoDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription wherePromoPrice($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereRecurringProductIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereRefundPeriod($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereRegistrationRequired($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereTrialDuration($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereTrialEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereUseInventoryManagement($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription whereWebhookConfiguration($value)
* @method static \Illuminate\Database\Eloquent\Builder|Subscription withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Subscription withoutTrashed()
* @mixin \Eloquent
*/
class Subscription extends BaseModel class Subscription extends BaseModel
{ {
use HasFactory, SoftDeletes, Filterable; use HasFactory, SoftDeletes, Filterable;

View File

@ -15,6 +15,41 @@ use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\SystemLog
*
* @property int $id
* @property int $company_id
* @property int|null $user_id
* @property int|null $client_id
* @property int|null $category_id
* @property int|null $event_id
* @property int|null $type_id
* @property array $log
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog company()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog query()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereCategoryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereEventId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereLog($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereTypeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|SystemLog withoutTrashed()
* @mixin \Eloquent
*/
class SystemLog extends Model class SystemLog extends Model
{ {
use Filterable; use Filterable;

View File

@ -15,6 +15,84 @@ use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
/**
* App\Models\Task
*
* @property int $id
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property int|null $client_id
* @property int|null $invoice_id
* @property int|null $project_id
* @property int|null $status_id
* @property int|null $status_sort_order
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $duration
* @property string|null $description
* @property int $is_deleted
* @property int $is_running
* @property string|null $time_log
* @property string|null $number
* @property string $rate
* @property int $invoice_documents
* @property int $is_date_based
* @property int|null $status_order
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Client|null $client
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \App\Models\Invoice|null $invoice
* @property-read \App\Models\Project|null $project
* @property-read \App\Models\TaskStatus|null $status
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\TaskFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Task filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Task newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Task newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Task onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Task query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Task whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereDuration($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereInvoiceDocuments($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereIsDateBased($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereIsRunning($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereStatusOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereStatusSortOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereTimeLog($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Task withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Task withoutTrashed()
* @mixin \Eloquent
*/
class Task extends BaseModel class Task extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -15,6 +15,42 @@ use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class TaskStatus. * Class TaskStatus.
*
* @property int $id
* @property string|null $name
* @property int|null $company_id
* @property int|null $user_id
* @property int $is_deleted
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int|null $status_sort_order
* @property string $color
* @property int|null $status_order
* @property-read mixed $hashed_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\TaskStatusFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereStatusOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereStatusSortOrder($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|TaskStatus withoutTrashed()
* @mixin \Eloquent
*/ */
class TaskStatus extends BaseModel class TaskStatus extends BaseModel
{ {

View File

@ -14,6 +14,42 @@ namespace App\Models;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\TaxRate
*
* @property int $id
* @property int $company_id
* @property int|null $user_id
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string $name
* @property string $rate
* @property int $is_deleted
* @property-read mixed $hashed_id
* @property-read mixed $tax_rate_id
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\TaxRateFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|TaxRate withoutTrashed()
* @mixin \Eloquent
*/
class TaxRate extends BaseModel class TaxRate extends BaseModel
{ {
use MakesHash; use MakesHash;

View File

@ -11,6 +11,24 @@
namespace App\Models; namespace App\Models;
/**
* App\Models\Timezone
*
* @property int $id
* @property string $name
* @property string $location
* @property int $utc_offset
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Timezone newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Timezone newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Timezone query()
* @method static \Illuminate\Database\Eloquent\Builder|Timezone whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Timezone whereLocation($value)
* @method static \Illuminate\Database\Eloquent\Builder|Timezone whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Timezone whereUtcOffset($value)
* @mixin \Eloquent
*/
class Timezone extends StaticModel class Timezone extends StaticModel
{ {
/** /**

View File

@ -13,6 +13,63 @@ namespace App\Models;
/** /**
* Class Bank. * Class Bank.
*
* @property int $id
* @property int $client_id
* @property int $invoice_id
* @property int $payment_id
* @property int $credit_id
* @property string $client_balance
* @property string $client_paid_to_date
* @property string $client_credit_balance
* @property string $invoice_balance
* @property string $invoice_amount
* @property string $invoice_partial
* @property string $invoice_paid_to_date
* @property int|null $invoice_status
* @property string $payment_amount
* @property string $payment_applied
* @property string $payment_refunded
* @property int|null $payment_status
* @property array|null $paymentables
* @property int $event_id
* @property int $timestamp
* @property array|null $payment_request
* @property array|null $metadata
* @property string $credit_balance
* @property string $credit_amount
* @property int|null $credit_status
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel company()
* @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent query()
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereClientBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereClientCreditBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereClientPaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereCreditAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereCreditBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereCreditId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereCreditStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereEventId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoiceAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoiceBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoiceId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoicePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoicePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereInvoiceStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereMetadata($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentApplied($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentId($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentRefunded($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentRequest($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent wherePaymentables($value)
* @method static \Illuminate\Database\Eloquent\Builder|TransactionEvent whereTimestamp($value)
* @mixin \Eloquent
*/ */
class TransactionEvent extends StaticModel class TransactionEvent extends StaticModel
{ {

View File

@ -32,6 +32,115 @@ use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\User
*
* @property int $id
* @property int $account_id
* @property string|null $first_name
* @property string|null $last_name
* @property string|null $phone
* @property string|null $ip
* @property string|null $device_token
* @property string $email
* @property string|null $email_verified_at
* @property string|null $confirmation_code
* @property int|null $theme_id
* @property int|null $failed_logins
* @property string|null $referral_code
* @property string|null $oauth_user_id
* @property object|null $oauth_user_token
* @property string|null $oauth_provider_id
* @property string|null $google_2fa_secret
* @property string|null $accepted_terms_version
* @property string|null $avatar
* @property int|null $avatar_width
* @property int|null $avatar_height
* @property int|null $avatar_size
* @property int $is_deleted
* @property string|null $last_login
* @property string|null $signature
* @property string $password
* @property string|null $remember_token
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $oauth_user_refresh_token
* @property string|null $last_confirmed_email_address
* @property int $has_password
* @property Carbon|null $oauth_user_token_expiry
* @property string|null $sms_verification_code
* @property int $verified_phone_number
* @property-read \App\Models\Account $account
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Client> $clients
* @property-read int|null $clients_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
* @property-read int|null $companies_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
* @property-read int|null $company_users_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
* @property-read int|null $contacts_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyToken> $tokens
* @property-read int|null $tokens_count
* @method static \Database\Factories\UserFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|User filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|User newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|User onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|User query()
* @method static \Illuminate\Database\Eloquent\Builder|User whereAcceptedTermsVersion($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereAccountId($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereAvatar($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereAvatarHeight($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereAvatarSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereAvatarWidth($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereConfirmationCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereDeviceToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereFailedLogins($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereFirstName($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereGoogle2faSecret($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereHasPassword($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereIp($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereLastConfirmedEmailAddress($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereLastLogin($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereLastName($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereOauthProviderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereOauthUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereOauthUserRefreshToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereOauthUserToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereOauthUserTokenExpiry($value)
* @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
* @method static \Illuminate\Database\Eloquent\Builder|User wherePhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereReferralCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereSignature($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereSmsVerificationCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereThemeId($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|User whereVerifiedPhoneNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|User withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|User withoutTrashed()
* @mixin \Eloquent
*/
class User extends Authenticatable implements MustVerifyEmail class User extends Authenticatable implements MustVerifyEmail
{ {
use Notifiable; use Notifiable;

View File

@ -19,6 +19,93 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\Vendor
*
* @property int $id
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $user_id
* @property int|null $assigned_user_id
* @property int $company_id
* @property string|null $currency_id
* @property string|null $name
* @property string|null $address1
* @property string|null $address2
* @property string|null $city
* @property string|null $state
* @property string|null $postal_code
* @property string|null $country_id
* @property string|null $phone
* @property string|null $private_notes
* @property string|null $website
* @property bool $is_deleted
* @property string|null $vat_number
* @property string|null $transaction_name
* @property string|null $number
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property string|null $vendor_hash
* @property string|null $public_notes
* @property string|null $id_number
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read int|null $activities_count
* @property-read \App\Models\User|null $assigned_user
* @property-read \App\Models\Company $company
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $contacts
* @property-read int|null $contacts_count
* @property-read \App\Models\Country|null $country
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read int|null $documents_count
* @property-read mixed $hashed_id
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\VendorContact> $primary_contact
* @property-read int|null $primary_contact_count
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Database\Factories\VendorFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Vendor filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Vendor newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Vendor onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Vendor query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereAddress1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereAddress2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCity($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCountryId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCurrencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereIdNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor wherePhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor wherePostalCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereState($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereTransactionName($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereVatNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereVendorHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor whereWebsite($value)
* @method static \Illuminate\Database\Eloquent\Builder|Vendor withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Vendor withoutTrashed()
* @mixin \Eloquent
*/
class Vendor extends BaseModel class Vendor extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -23,6 +23,95 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait; use Laracasts\Presenter\PresentableTrait;
/**
* App\Models\VendorContact
*
* @property int $id
* @property int $company_id
* @property int $user_id
* @property int $vendor_id
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property int $is_primary
* @property string|null $first_name
* @property string|null $last_name
* @property string|null $email
* @property string|null $phone
* @property string|null $custom_value1
* @property string|null $custom_value2
* @property string|null $custom_value3
* @property string|null $custom_value4
* @property int $send_email
* @property string|null $email_verified_at
* @property string|null $confirmation_code
* @property int $confirmed
* @property string|null $last_login
* @property int|null $failed_logins
* @property string|null $oauth_user_id
* @property int|null $oauth_provider_id
* @property string|null $google_2fa_secret
* @property string|null $accepted_terms_version
* @property string|null $avatar
* @property string|null $avatar_type
* @property string|null $avatar_size
* @property string $password
* @property string|null $token
* @property int $is_locked
* @property string|null $contact_key
* @property string|null $remember_token
* @property-read \App\Models\Company $company
* @property-read mixed $contact_id
* @property-read mixed $hashed_id
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\PurchaseOrderInvitation> $purchase_order_invitations
* @property-read int|null $purchase_order_invitations_count
* @property-read \App\Models\User $user
* @property-read \App\Models\Vendor $vendor
* @method static \Database\Factories\VendorContactFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact query()
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereAcceptedTermsVersion($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereAvatar($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereAvatarSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereAvatarType($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereConfirmationCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereConfirmed($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereContactKey($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereEmailVerifiedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereFailedLogins($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereFirstName($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereGoogle2faSecret($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereIsLocked($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereIsPrimary($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereLastLogin($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereLastName($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereOauthProviderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereOauthUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact wherePassword($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact wherePhone($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereRememberToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereSendEmail($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|VendorContact withoutTrashed()
* @mixin \Eloquent
*/
class VendorContact extends Authenticatable implements HasLocalePreference class VendorContact extends Authenticatable implements HasLocalePreference
{ {
use Notifiable; use Notifiable;

View File

@ -13,6 +13,48 @@ namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/**
* App\Models\Webhook
*
* @property int $id
* @property int|null $company_id
* @property int|null $user_id
* @property int|null $event_id
* @property int $is_deleted
* @property string $target_url
* @property string $format
* @property int|null $created_at
* @property int|null $updated_at
* @property int|null $deleted_at
* @property string|null $rest_method
* @property array|null $headers
* @property-read \App\Models\Company|null $company
* @property-read mixed $hashed_id
* @property-read \App\Models\User|null $user
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook filter(\App\Filters\QueryFilters $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Webhook newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Webhook onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Webhook query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereEventId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereFormat($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereHeaders($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereRestMethod($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereTargetUrl($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Webhook withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|Webhook withoutTrashed()
* @mixin \Eloquent
*/
class Webhook extends BaseModel class Webhook extends BaseModel
{ {
use SoftDeletes; use SoftDeletes;

View File

@ -262,6 +262,7 @@ class ACH
{ {
$this->stripe->init(); $this->stripe->init();
$response = false;
try { try {
$data = [ $data = [
'amount' => $this->stripe->convertToStripeAmount($amount, $this->stripe->client->currency()->precision, $this->stripe->client->currency()), 'amount' => $this->stripe->convertToStripeAmount($amount, $this->stripe->client->currency()->precision, $this->stripe->client->currency()),

View File

@ -11,14 +11,15 @@
namespace App\Services\Client; namespace App\Services\Client;
use App\Utils\Number;
use App\Models\Client; use App\Models\Client;
use App\Models\Credit; use App\Models\Credit;
use App\Services\Email\Email;
use App\Utils\Traits\MakesDates;
use Illuminate\Support\Facades\DB;
use App\Services\Email\EmailObject; use App\Services\Email\EmailObject;
use App\Services\Email\EmailService; use App\Services\Email\EmailService;
use App\Utils\Number;
use App\Utils\Traits\MakesDates;
use Illuminate\Mail\Mailables\Address; use Illuminate\Mail\Mailables\Address;
use Illuminate\Support\Facades\DB;
class ClientService class ClientService
{ {
@ -149,9 +150,12 @@ class ClientService
$this->client_start_date = $this->translateDate($options['start_date'], $this->client->date_format(), $this->client->locale()); $this->client_start_date = $this->translateDate($options['start_date'], $this->client->date_format(), $this->client->locale());
$this->client_end_date = $this->translateDate($options['end_date'], $this->client->date_format(), $this->client->locale()); $this->client_end_date = $this->translateDate($options['end_date'], $this->client->date_format(), $this->client->locale());
$email_service = new EmailService($this->buildStatementMailableData($pdf), $this->client->company); // $email_service = new EmailService($this->buildStatementMailableData($pdf), $this->client->company);
// $email_service->send();
$email_object = $this->buildStatementMailableData($pdf);
Email::dispatch($email_object, $this->client->company);
$email_service->send();
} }
/** /**
@ -165,9 +169,7 @@ class ClientService
$email_object = new EmailObject; $email_object = new EmailObject;
$email_object->to = [new Address($this->client->present()->email(), $this->client->present()->name())]; $email_object->to = [new Address($this->client->present()->email(), $this->client->present()->name())];
$email_object->attachments = [['file' => base64_encode($pdf), 'name' => ctrans('texts.statement') . ".pdf"]]; $email_object->attachments = [['file' => base64_encode($pdf), 'name' => ctrans('texts.statement') . ".pdf"]];
$email_object->settings = $this->client->getMergedSettings(); $email_object->client_id = $this->client->id;
$email_object->company = $this->client->company;
$email_object->client = $this->client;
$email_object->email_template_subject = 'email_subject_statement'; $email_object->email_template_subject = 'email_subject_statement';
$email_object->email_template_body = 'email_template_statement'; $email_object->email_template_body = 'email_template_statement';
$email_object->variables = [ $email_object->variables = [

View File

@ -11,121 +11,400 @@
namespace App\Services\Email; namespace App\Services\Email;
use App\DataMapper\Analytics\EmailSuccess;
use App\Libraries\Google\Google;
use App\Libraries\MultiDB;
use App\Models\Company;
use App\Models\User; use App\Models\User;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\MakesHash; use App\Models\Client;
use GuzzleHttp\Exception\ClientException; use App\Models\Vendor;
use App\Models\Company;
use App\Models\Invoice;
use App\Models\Payment;
use App\Models\SystemLog;
use App\Utils\HtmlEngine;
use App\Libraries\MultiDB;
use App\Models\ClientContact;
use App\Models\VendorContact;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Mail\Mailer; use Illuminate\Mail\Mailable;
use App\Jobs\Util\SystemLogger;
use App\Utils\Traits\MakesHash;
use App\Utils\VendorHtmlEngine;
use App\Libraries\Google\Google;
use Illuminate\Support\Facades\Mail;
use App\Services\Email\EmailMailable;
use Illuminate\Support\Facades\Cache;
use Illuminate\Queue\SerializesModels;
use Turbo124\Beacon\Facades\LightLogs;
use Illuminate\Queue\InteractsWithQueue;
use GuzzleHttp\Exception\ClientException;
use App\DataMapper\Analytics\EmailFailure;
use App\DataMapper\Analytics\EmailSuccess;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Mail\Mailable; use App\Events\Invoice\InvoiceWasEmailedAndFailed;
use Illuminate\Queue\InteractsWithQueue; use App\Events\Payment\PaymentWasEmailedAndFailed;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Mail;
use Turbo124\Beacon\Facades\LightLogs;
class MailEntity implements ShouldQueue class Email implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash;
public Company $company; public $tries = 4;
public $deleteWhenMissingModels = true;
public bool $override;
protected ?string $client_postmark_secret = null;
protected ?string $client_mailgun_secret = null;
protected ?string $client_mailgun_domain = null;
private string $mailer = 'default';
public Mailable $mailable; public Mailable $mailable;
public Mailer $mail; public function __construct(public EmailObject $email_object, public Company $company)
public ?string $client_postmark_secret = null;
public ?string $client_mailgun_secret = null;
public ?string $client_mailgun_domain = null;
public bool $override = false;
private string $mailer = '';
public int $tries = 4;
public $deleteWhenMissingModels = true;
/**
* __construct
*
* @param mixed $invitation
* @param mixed $db
* @param mixed $mail_object
* @return void
*/
public function __construct(public mixed $invitation, private ?string $db, public MailObject $mail_object)
{ {
} }
/** /**
* Handle the job * The backoff time between retries.
* *
* @return void * @return array
*/ */
public function handle(): void public function backoff()
{ {
MultiDB::setDb($this->db); return [10, 30, 60, 240];
}
/* Where there are no invitations, we need to harvest the company and also use the correct context to build the mailable*/ public function handle()
$this->company = $this->invitation->company; {
$this->override = $this->mail_object->override; MultiDB::setDb($this->company->db);
$builder = new MailBuild($this); $this->setOverride()
->initModels()
->setDefaults()
->buildMailable();
/* Construct Mailable */ if($this->preFlightChecksFail())
$builder->run($this);
$this->mailable = $builder->getMailable();
/* Email quality checks */
if ($this->preFlightChecksFail()) {
return; return;
}
/* Try sending email */ $this->email();
$this->setMailDriver()
->configureMailer() $this->tearDown();
->trySending();
} }
/** /**
* configureMailer * Sets the override flag
* *
* @return self * @return self
*/ */
public function configureMailer(): self public function setOverride(): self
{ {
$this->mail = Mail::mailer($this->mailer); $this->override = $this->email_object->override;
return $this;
}
/**
* Initilializes the models
*
* @return self
*/
public function initModels(): self
{
$this->email_object->entity_id ? $this->email_object->entity = $this->email_object->entity_class::withTrashed()->with('invitations')->find($this->email_object->entity_id) : $this->email_object->entity = null;
$this->email_object->invitation_id ? $this->email_object->invitation = $this->email_object->entity->invitations()->where('id', $this->email_object->invitation_id)->first() : $this->email_object->invitation = null;
$this->email_object->invitation_id ? $this->email_object->contact = $this->email_object->invitation->contact : $this->email_object->contact = null;
$this->email_object->client_id ? $this->email_object->client = Client::withTrashed()->find($this->email_object->client_id) : $this->email_object->client = null;
$this->email_object->vendor_id ? $this->email_object->vendor = Vendor::withTrashed()->find($this->email_object->vendor_id) : $this->email_object->vendor = null;
if (!$this->email_object->contact)
{
$this->email_object->vendor_contact_id ? $this->email_object->contact = VendorContact::withTrashed()->find($this->email_object->vendor_contact_id) : null;
$this->email_object->client_contact_id ? $this->email_object->contact = ClientContact::withTrashed()->find($this->email_object->client_contact_id) : null;
}
$this->email_object->user_id ? $this->email_object->user = User::withTrashed()->find($this->email_object->user_id) : $this->email_object->user = $this->company->owner();
$this->email_object->company_key = $this->company->company_key;
$this->email_object->company = $this->company;
$this->email_object->client_id ? $this->email_object->settings = $this->email_object->client->getMergedSettings() : $this->email_object->settings = $this->company->settings;
$this->email_object->whitelabel = $this->company->account->isPaid() ? true : false;
$this->email_object->logo = $this->email_object->settings->company_logo;
$this->email_object->signature = $this->email_object->settings->email_signature;
$this->resolveVariables();
return $this;
}
/**
* Generates the correct set of variables
*
* @return self
*/
private function resolveVariables(): self
{
$_variables = $this->email_object->variables;
match(class_basename($this->email_object->entity)){
"Invoice" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(),
"Quote" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(),
"Credit" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(),
"PurchaseOrder" => $this->email_object->variables = (new VendorHtmlEngine($this->email_object->invitation))->makeValues(),
default => $this->email_object->variables = []
};
/** If we have passed some variable overrides we insert them here */
foreach($_variables as $key => $value)
{
$this->email_object->variables[$key] = $value;
}
return $this;
}
/**
* tearDown
*
* @return self
*/
private function tearDown(): self
{
$this->email_object->entity = null;
$this->email_object->invitation = null;
$this->email_object->client = null;
$this->email_object->vendor = null;
$this->email_object->user = null;
$this->email_object->contact = null;
$this->email_object->settings = null;
return $this;
}
/**
* Builds the email defaults
*
* @return self
*/
public function setDefaults(): self
{
(new EmailDefaults($this))->run();
return $this;
}
/**
* Populates the mailable
*
* @return self
*/
public function buildMailable(): self
{
$this->mailable = new EmailMailable($this->email_object);
return $this;
}
/**
* Attempts to send the email
*
* @return void
*/
public function email()
{
$this->setMailDriver();
/* Init the mailer*/
$mailer = Mail::mailer($this->mailer);
/* Additional configuration if using a client third party mailer */
if ($this->client_postmark_secret) { if ($this->client_postmark_secret) {
$this->mail->postmark_config($this->client_postmark_secret); $mailer->postmark_config($this->client_postmark_secret);
} }
if ($this->client_mailgun_secret) { if ($this->client_mailgun_secret) {
$this->mail->mailgun_config($this->client_mailgun_secret, $this->client_mailgun_domain); $mailer->mailgun_config($this->client_mailgun_secret, $this->client_mailgun_domain);
} }
return $this; /* Attempt the send! */
try {
nlog("Using mailer => ". $this->mailer. " ". now()->toDateTimeString());
$mailer->send($this->mailable);
Cache::increment($this->company->account->key);
LightLogs::create(new EmailSuccess($this->company->company_key))
->send();
} catch (\Exception | \RuntimeException | \Google\Service\Exception $e) {
nlog("Mailer failed with {$e->getMessage()}");
$message = $e->getMessage();
/**
* Post mark buries the proper message in a a guzzle response
* this merges a text string with a json object
* need to harvest the ->Message property using the following
*/
if ($e instanceof ClientException) { //postmark specific failure
$response = $e->getResponse();
$message_body = json_decode($response->getBody()->getContents());
if ($message_body && property_exists($message_body, 'Message')) {
$message = $message_body->Message;
nlog($message);
}
$this->fail();
$this->cleanUpMailers();
return;
}
//only report once, not on all tries
if ($this->attempts() == $this->tries) {
/* If the is an entity attached to the message send a failure mailer */
$this->entityEmailFailed($message);
/* Don't send postmark failures to Sentry */
if (Ninja::isHosted() && (!$e instanceof ClientException)) {
app('sentry')->captureException($e);
}
}
$this->tearDown();
/* Releasing immediately does not add in the backoff */
$this->release($this->backoff()[$this->attempts()-1]);
$message = null;
}
$this->cleanUpMailers();
} }
/**
* On the hosted platform we scan all outbound email for
* spam. This sequence processes the filters we use on all
* emails.
*
* @return bool
*/
public function preFlightChecksFail(): bool
{
/* If we are migrating data we don't want to fire any emails */
if ($this->company->is_disabled && !$this->override) {
return true;
}
if (Ninja::isSelfHost()) {
return false;
}
/* To handle spam users we drop all emails from flagged accounts */
if ($this->company->account && $this->company->account->is_flagged) {
return true;
}
/* On the hosted platform we set default contacts a @example.com email address - we shouldn't send emails to these types of addresses */
if ($this->hasInValidEmails()) {
return true;
}
/* GMail users are uncapped */
if (in_array($this->email_object->settings->email_sending_method, ['gmail', 'office365', 'client_postmark', 'client_mailgun'])) {
return false;
}
/* On the hosted platform, if the user is over the email quotas, we do not send the email. */
if ($this->company->account && $this->company->account->emailQuotaExceeded()) {
return true;
}
/* If the account is verified, we allow emails to flow */
if ($this->company->account && $this->company->account->is_verified_account) {
//11-01-2022
/* Continue to analyse verified accounts in case they later start sending poor quality emails*/
// if(class_exists(\Modules\Admin\Jobs\Account\EmailQuality::class))
// (new \Modules\Admin\Jobs\Account\EmailQuality($this->nmo, $this->company))->run();
return false;
}
/* On the hosted platform if the user has not verified their account we fail here - but still check what they are trying to send! */
if ($this->company->account && !$this->company->account->account_sms_verified) {
if (class_exists(\Modules\Admin\Jobs\Account\EmailFilter::class)) {
return (new \Modules\Admin\Jobs\Account\EmailFilter($this->email_object, $this->company))->run();
}
return true;
}
/* On the hosted platform we actively scan all outbound emails to ensure outbound email quality remains high */
if (class_exists(\Modules\Admin\Jobs\Account\EmailFilter::class)) {
return (new \Modules\Admin\Jobs\Account\EmailFilter($this->email_object, $this->company))->run();
}
return false;
}
/** /**
* hasInValidEmails
*
* @return bool
*/
private function hasInValidEmails(): bool
{
foreach ($this->email_object->to as $address_object) {
if (strpos($address_object->address, '@example.com') !== false) {
return true;
}
if (!str_contains($address_object->address, "@")) {
return true;
}
if ($address_object->address == " ") {
return true;
}
}
return false;
}
/**
* Sets the mail driver to use and applies any specific configuration * Sets the mail driver to use and applies any specific configuration
* the the mailable * the the mailable
*/ */
private function setMailDriver(): self private function setMailDriver(): self
{ {
switch ($this->mail_object->settings->email_sending_method) { switch ($this->email_object->settings->email_sending_method) {
case 'default': case 'default':
$this->mailer = config('mail.default'); $this->mailer = config('mail.default');
break; break;
@ -157,7 +436,7 @@ class MailEntity implements ShouldQueue
return $this; return $this;
} }
/** /**
* Allows configuration of multiple mailers * Allows configuration of multiple mailers
* per company for use by self hosted users * per company for use by self hosted users
*/ */
@ -189,176 +468,16 @@ class MailEntity implements ShouldQueue
*/ */
private function cleanUpMailers(): void private function cleanUpMailers(): void
{ {
$this->client_postmark_secret = false; $this->client_postmark_secret = null;
$this->client_mailgun_secret = false; $this->client_mailgun_secret = null;
$this->client_mailgun_domain = false; $this->client_mailgun_domain = null;
//always dump the drivers to prevent reuse
app('mail.manager')->forgetMailers(); app('mail.manager')->forgetMailers();
} }
/**
* Attempts to send the email
*
* @return void
*/
public function trySending(): void
{
try {
$this->mail->send($this->mailable);
/* Count the amount of emails sent across all the users accounts */
Cache::increment($this->company->account->key);
LightLogs::create(new EmailSuccess($this->company->company_key))
->send();
} catch(\Symfony\Component\Mime\Exception\RfcComplianceException $e) {
nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
$this->fail();
$this->cleanUpMailers();
// $this->logMailError($e->getMessage(), $this->company->clients()->first());
return;
} catch(\Symfony\Component\Mime\Exception\LogicException $e) {
nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
$this->fail();
$this->cleanUpMailers();
// $this->logMailError($e->getMessage(), $this->company->clients()->first());
return;
} catch (\Exception | \Google\Service\Exception $e) {
nlog("Mailer failed with {$e->getMessage()}");
$message = $e->getMessage();
/**
* Post mark buries the proper message in a a guzzle response
* this merges a text string with a json object
* need to harvest the ->Message property using the following
*/
if (stripos($e->getMessage(), 'code 406') || stripos($e->getMessage(), 'code 300') || stripos($e->getMessage(), 'code 413')) {
$message = "Either Attachment too large, or recipient has been suppressed.";
$this->fail();
// $this->logMailError($e->getMessage(), $this->company->clients()->first());
$this->cleanUpMailers();
return;
}
//only report once, not on all tries
if ($this->attempts() == $this->tries) {
/* If the is an entity attached to the message send a failure mailer */
if ($this->mail_object->entity_id) {
// $this->entityEmailFailed($message);
/* Don't send postmark failures to Sentry */
if (Ninja::isHosted() && (!$e instanceof ClientException)) {
app('sentry')->captureException($e);
}
}
}
/* Releasing immediately does not add in the backoff */
$this->release($this->backoff()[$this->attempts()-1]);
}
}
/**
* On the hosted platform we scan all outbound email for
* spam. This sequence processes the filters we use on all
* emails.
*/
public function preFlightChecksFail(): bool
{
/* Handle bad state */
if (!$this->company) {
return true;
}
/* Handle deactivated company */
if ($this->company->is_disabled && !$this->override) {
return true;
}
/* To handle spam users we drop all emails from flagged accounts */
if (Ninja::isHosted() && $this->company->account && $this->company->account->is_flagged) {
return true;
}
/* On the hosted platform we set default contacts a @example.com email address - we shouldn't send emails to these types of addresses */
if ($this->hasInValidEmails()) {
return true;
}
/* GMail users are uncapped */
if (in_array($this->mail_object->settings->email_sending_method, ['gmail', 'office365', 'client_postmark', 'client_mailgun'])) {
return false;
}
/* On the hosted platform, if the user is over the email quotas, we do not send the email. */
if (Ninja::isHosted() && $this->company->account && $this->company->account->emailQuotaExceeded()) {
return true;
}
/* If the account is verified, we allow emails to flow */
if (Ninja::isHosted() && $this->company->account && $this->company->account->is_verified_account) {
//11-01-2022
/* Continue to analyse verified accounts in case they later start sending poor quality emails*/
// if(class_exists(\Modules\Admin\Jobs\Account\EmailQuality::class))
// (new \Modules\Admin\Jobs\Account\EmailQuality($this->mail_object, $this->company))->run();
return false;
}
/* On the hosted platform if the user has not verified their account we fail here - but still check what they are trying to send! */
if ($this->company->account && !$this->company->account->account_sms_verified) {
if (class_exists(\Modules\Admin\Jobs\Account\EmailFilter::class)) {
(new \Modules\Admin\Jobs\Account\EmailFilter($this->mail_object, $this->company))->run();
}
return true;
}
/* On the hosted platform we actively scan all outbound emails to ensure outbound email quality remains high */
if (class_exists(\Modules\Admin\Jobs\Account\EmailFilter::class)) {
(new \Modules\Admin\Jobs\Account\EmailFilter($this->mail_object, $this->company))->run();
}
return false;
}
/**
* Checks if emails are have some illegal / required characters.
*
* @return bool
*/
private function hasInValidEmails(): bool
{
if (Ninja::isSelfHost()) {
return false;
}
foreach ($this->mail_object->to as $address_object) {
if (strpos($address_object->address, '@example.com') !== false) {
return true;
}
if (!str_contains($address_object->address, "@")) {
return true;
}
if ($address_object->address == " ") {
return true;
}
}
return false;
}
/** /**
* Check to ensure no cross account * Check to ensure no cross account
@ -370,7 +489,8 @@ class MailEntity implements ShouldQueue
{ {
/* Always ensure the user is set on the correct account */ /* Always ensure the user is set on the correct account */
if ($user->account_id != $this->company->account_id) { if ($user->account_id != $this->company->account_id) {
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
} }
@ -384,7 +504,7 @@ class MailEntity implements ShouldQueue
*/ */
private function resolveSendingUser(): ?User private function resolveSendingUser(): ?User
{ {
$sending_user = $this->mail_object->settings->gmail_sending_user_id; $sending_user = $this->email_object->settings->gmail_sending_user_id;
if ($sending_user == "0") { if ($sending_user == "0") {
$user = $this->company->owner(); $user = $this->company->owner();
@ -394,25 +514,24 @@ class MailEntity implements ShouldQueue
return $user; return $user;
} }
/** /**
* Configures Mailgun using client supplied secret * Configures Mailgun using client supplied secret
* as the Mailer * as the Mailer
*/ */
private function setMailgunMailer() private function setMailgunMailer()
{ {
if (strlen($this->mail_object->settings->mailgun_secret) > 2 && strlen($this->mail_object->settings->mailgun_domain) > 2) { if (strlen($this->email_object->settings->mailgun_secret) > 2 && strlen($this->email_object->settings->mailgun_domain) > 2) {
$this->client_mailgun_secret = $this->mail_object->settings->mailgun_secret; $this->client_mailgun_secret = $this->email_object->settings->mailgun_secret;
$this->client_mailgun_domain = $this->mail_object->settings->mailgun_domain; $this->client_mailgun_domain = $this->email_object->settings->mailgun_domain;
} else { } else {
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
$user = $this->resolveSendingUser(); $user = $this->resolveSendingUser();
$sending_email = (isset($this->mail_object->settings->custom_sending_email) && stripos($this->mail_object->settings->custom_sending_email, "@")) ? $this->mail_object->settings->custom_sending_email : $user->email; $sending_email = (isset($this->email_object->settings->custom_sending_email) && stripos($this->email_object->settings->custom_sending_email, "@")) ? $this->email_object->settings->custom_sending_email : $user->email;
$sending_user = (isset($this->mail_object->settings->email_from_name) && strlen($this->mail_object->settings->email_from_name) > 2) ? $this->mail_object->settings->email_from_name : $user->name(); $sending_user = (isset($this->email_object->settings->email_from_name) && strlen($this->email_object->settings->email_from_name) > 2) ? $this->email_object->settings->email_from_name : $user->name();
$this->mailable $this->mailable
->from($sending_email, $sending_user); ->from($sending_email, $sending_user);
@ -424,18 +543,18 @@ class MailEntity implements ShouldQueue
*/ */
private function setPostmarkMailer() private function setPostmarkMailer()
{ {
if (strlen($this->mail_object->settings->postmark_secret) > 2) { if (strlen($this->email_object->settings->postmark_secret) > 2) {
$this->client_postmark_secret = $this->mail_object->settings->postmark_secret; $this->client_postmark_secret = $this->email_object->settings->postmark_secret;
} else { } else {
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
$user = $this->resolveSendingUser(); $user = $this->resolveSendingUser();
$sending_email = (isset($this->mail_object->settings->custom_sending_email) && stripos($this->mail_object->settings->custom_sending_email, "@")) ? $this->mail_object->settings->custom_sending_email : $user->email; $sending_email = (isset($this->email_object->settings->custom_sending_email) && stripos($this->email_object->settings->custom_sending_email, "@")) ? $this->email_object->settings->custom_sending_email : $user->email;
$sending_user = (isset($this->mail_object->settings->email_from_name) && strlen($this->mail_object->settings->email_from_name) > 2) ? $this->mail_object->settings->email_from_name : $user->name(); $sending_user = (isset($this->email_object->settings->email_from_name) && strlen($this->email_object->settings->email_from_name) > 2) ? $this->email_object->settings->email_from_name : $user->name();
$this->mailable $this->mailable
->from($sending_email, $sending_user); ->from($sending_email, $sending_user);
} }
@ -447,7 +566,7 @@ class MailEntity implements ShouldQueue
private function setOfficeMailer() private function setOfficeMailer()
{ {
$user = $this->resolveSendingUser(); $user = $this->resolveSendingUser();
$this->checkValidSendingUser($user); $this->checkValidSendingUser($user);
nlog("Sending via {$user->name()}"); nlog("Sending via {$user->name()}");
@ -458,7 +577,7 @@ class MailEntity implements ShouldQueue
$user->oauth_user_token = $token; $user->oauth_user_token = $token;
$user->save(); $user->save();
} else { } else {
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
@ -478,7 +597,7 @@ class MailEntity implements ShouldQueue
$user = $this->resolveSendingUser(); $user = $this->resolveSendingUser();
$this->checkValidSendingUser($user); $this->checkValidSendingUser($user);
nlog("Sending via {$user->name()}"); nlog("Sending via {$user->name()}");
$google = (new Google())->init(); $google = (new Google())->init();
@ -491,8 +610,8 @@ class MailEntity implements ShouldQueue
$google->getClient()->setAccessToken(json_encode($user->oauth_user_token)); $google->getClient()->setAccessToken(json_encode($user->oauth_user_token));
} catch(\Exception $e) { } catch(\Exception $e) {
// $this->logMailError('Gmail Token Invalid', $this->company->clients()->first()); $this->logMailError('Gmail Token Invalid', $this->company->clients()->first());
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
@ -502,7 +621,7 @@ class MailEntity implements ShouldQueue
if (!$user->oauth_user_token) { if (!$user->oauth_user_token) {
$this->company->account->gmailCredentialNotification(); $this->company->account->gmailCredentialNotification();
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
@ -516,7 +635,7 @@ class MailEntity implements ShouldQueue
if (!$token) { if (!$token) {
$this->company->account->gmailCredentialNotification(); $this->company->account->gmailCredentialNotification();
$this->mail_object->settings->email_sending_method = 'default'; $this->email_object->settings->email_sending_method = 'default';
return $this->setMailDriver(); return $this->setMailDriver();
} }
@ -527,13 +646,41 @@ class MailEntity implements ShouldQueue
}); });
} }
/** /**
* Logs any errors to the SystemLog
*
* @param string $errors
* @param null | \App\Models\Client $recipient_object
* @return void
*/
private function logMailError($errors, $recipient_object) :void
{
(new SystemLogger(
$errors,
SystemLog::CATEGORY_MAIL,
SystemLog::EVENT_MAIL_SEND,
SystemLog::TYPE_FAILURE,
$recipient_object,
$this->company
))->handle();
$job_failure = new EmailFailure($this->company->company_key);
$job_failure->string_metric5 = 'failed_email';
$job_failure->string_metric6 = substr($errors, 0, 150);
LightLogs::create($job_failure)
->send();
$job_failure = null;
}
/**
* Attempts to refresh the Microsoft refreshToken * Attempts to refresh the Microsoft refreshToken
* *
* @param App\Models\User * @param \App\Models\User $user
* @return string | boool * @return mixed
*/ */
private function refreshOfficeToken($user) private function refreshOfficeToken(User $user): mixed
{ {
$expiry = $user->oauth_user_token_expiry ?: now()->subDay(); $expiry = $user->oauth_user_token_expiry ?: now()->subDay();
@ -567,23 +714,42 @@ class MailEntity implements ShouldQueue
} }
/** /**
* Backoff time * Entity notification when an email fails to send
* *
* @param string $message
* @return void * @return void
*/ */
public function backoff() private function entityEmailFailed($message): void
{ {
return [5, 10, 30, 240]; $class = get_class($this->email_object->entity);
switch ($class) {
case Invoice::class:
event(new InvoiceWasEmailedAndFailed($this->email_object->invitation, $this->company, $message, $this->email_object->html_template, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
break;
case Payment::class:
event(new PaymentWasEmailedAndFailed($this->email_object->entity, $this->company, $message, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
break;
default:
# code...
break;
}
if ($this->email_object->client) {
$this->logMailError($message, $this->email_object->client);
}
} }
/**
* Failed handler
*
* @param mixed $exception
* @return void
*/
public function failed($exception = null) public function failed($exception = null)
{ {
if($exception)
nlog($exception->getMessage());
config(['queue.failed.driver' => null]); config(['queue.failed.driver' => null]);
} }
}
}

View File

@ -11,18 +11,29 @@
namespace App\Services\Email; namespace App\Services\Email;
use App\DataMapper\EmailTemplateDefaults; use App\Models\Task;
use App\Models\Account;
use App\Utils\Ninja; use App\Utils\Ninja;
use Illuminate\Mail\Mailables\Address; use App\Models\Quote;
use App\Models\Credit;
use App\Models\Account;
use App\Models\Expense;
use App\Models\Invoice;
use App\Models\PurchaseOrder;
use App\Jobs\Invoice\CreateUbl;
use App\Utils\Traits\MakesHash;
use App\Jobs\Entity\CreateRawPdf;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Mail\Mailables\Address;
use App\DataMapper\EmailTemplateDefaults;
use League\CommonMark\CommonMarkConverter; use League\CommonMark\CommonMarkConverter;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
class EmailDefaults class EmailDefaults
{ {
use MakesHash;
/** /**
* The settings object for this email * The settings object for this email
* @var CompanySettings $settings * @var \App\DataMapper\CompanySettings $settings
*/ */
protected $settings; protected $settings;
@ -39,10 +50,9 @@ class EmailDefaults
private string $locale; private string $locale;
/** /**
* @param EmailService $email_service The email service class * @param Email $email job class
* @param EmailObject $email_object the email object class
*/ */
public function __construct(protected EmailService $email_service, public EmailObject $email_object) public function __construct(protected Email $email)
{ {
} }
@ -54,36 +64,20 @@ class EmailDefaults
*/ */
public function run() public function run()
{ {
$this->settings = $this->email_object->settings; $this->settings = $this->email->email_object->settings;
$this->setLocale() $this->setLocale()
->setFrom() ->setFrom()
->setTo()
->setTemplate() ->setTemplate()
->setBody() ->setBody()
->setSubject() ->setSubject()
->setReplyTo() ->setReplyTo()
->setBcc() ->setBcc()
->setAttachments() ->setAttachments()
->setMetaData()
->setVariables(); ->setVariables();
return $this->email_object; return $this->email->email_object;
}
/**
* Sets the meta data for the Email object
*/
private function setMetaData(): self
{
$this->email_object->company_key = $this->email_service->company->company_key;
$this->email_object->logo = $this->email_service->company->present()->logo();
$this->email_object->signature = $this->email_object->signature ?: $this->settings->email_signature;
$this->email_object->whitelabel = $this->email_object->company->account->isPaid() ? true : false;
return $this;
} }
/** /**
@ -91,12 +85,12 @@ class EmailDefaults
*/ */
private function setLocale(): self private function setLocale(): self
{ {
if ($this->email_object->client) { if ($this->email->email_object->client) {
$this->locale = $this->email_object->client->locale(); $this->locale = $this->email->email_object->client->locale();
} elseif ($this->email_object->vendor) { } elseif ($this->email->email_object->vendor) {
$this->locale = $this->email_object->vendor->locale(); $this->locale = $this->email->email_object->vendor->locale();
} else { } else {
$this->locale = $this->email_service->company->locale(); $this->locale = $this->email->company->locale();
} }
App::setLocale($this->locale); App::setLocale($this->locale);
@ -112,16 +106,16 @@ class EmailDefaults
*/ */
private function setTemplate(): self private function setTemplate(): self
{ {
$this->template = $this->email_object->settings->email_style; $this->template = $this->email->email_object->settings->email_style;
match ($this->email_object->settings->email_style) { match ($this->email->email_object->settings->email_style) {
'light' => $this->template = 'email.template.client', 'light' => $this->template = 'email.template.client',
'dark' => $this->template = 'email.template.client', 'dark' => $this->template = 'email.template.client',
'custom' => $this->template = 'email.template.custom', 'custom' => $this->template = 'email.template.custom',
default => $this->template = 'email.template.client', default => $this->template = 'email.template.client',
}; };
$this->email_object->html_template = $this->template; $this->email->email_object->html_template = $this->template;
return $this; return $this;
} }
@ -131,16 +125,30 @@ class EmailDefaults
*/ */
private function setFrom(): self private function setFrom(): self
{ {
if (Ninja::isHosted() && $this->email_object->settings->email_sending_method == 'default') { if (Ninja::isHosted() && $this->email->email_object->settings->email_sending_method == 'default') {
$this->email_object->from = new Address(config('mail.from.address'), $this->email_service->company->owner()->name()); $this->email->email_object->from = new Address(config('mail.from.address'), $this->email->company->owner()->name());
return $this; return $this;
} }
if ($this->email_object->from) { if ($this->email->email_object->from) {
return $this; return $this;
} }
$this->email_object->from = new Address($this->email_service->company->owner()->email, $this->email_service->company->owner()->name()); $this->email->email_object->from = new Address($this->email->company->owner()->email, $this->email->company->owner()->name());
return $this;
}
/**
* Sets the To address
*/
private function setTo(): self
{
if ($this->email->email_object->to) {
return $this;
}
$this->email->email_object->to = [new Address($this->email->email_object->contact->email, $this->email->email_object->contact->present()->name())];
return $this; return $this;
} }
@ -150,16 +158,19 @@ class EmailDefaults
*/ */
private function setBody(): self private function setBody(): self
{ {
if ($this->email_object->body) { if ($this->email->email_object->body) {
$this->email_object->body = $this->email_object->body; // A Custom Message has been set in the email screen.
} elseif (strlen($this->email_object->settings->{$this->email_object->email_template_body}) > 3) { return $this;
$this->email_object->body = $this->email_object->settings->{$this->email_object->email_template_body}; } elseif (strlen($this->email->email_object->settings?->{$this->email->email_object->email_template_body}) > 3) {
// A body has been saved in the settings.
$this->email->email_object->body = $this->email->email_object->settings?->{$this->email->email_object->email_template_body};
} else { } else {
$this->email_object->body = EmailTemplateDefaults::getDefaultTemplate($this->email_object->email_template_body, $this->locale); // Default template to be used
$this->email->email_object->body = EmailTemplateDefaults::getDefaultTemplate($this->email->email_object->email_template_body, $this->locale);
} }
if ($this->template == 'email.template.custom') { if ($this->template == 'email.template.custom') {
$this->email_object->body = (str_replace('$body', $this->email_object->body, $this->email_object->settings->email_style_custom)); $this->email->email_object->body = (str_replace('$body', $this->email->email_object->body, $this->email->email_object->settings->email_style_custom));
} }
return $this; return $this;
@ -170,12 +181,12 @@ class EmailDefaults
*/ */
private function setSubject(): self private function setSubject(): self
{ {
if ($this->email_object->subject) { //where the user updates the subject from the UI if ($this->email->email_object->subject) { //where the user updates the subject from the UI
return $this; return $this;
} elseif (strlen($this->email_object->settings->{$this->email_object->email_template_subject}) > 3) { } elseif (strlen($this->email->email_object->settings?->{$this->email->email_object->email_template_subject}) > 3) {
$this->email_object->subject = $this->email_object->settings->{$this->email_object->email_template_subject}; $this->email->email_object->subject = $this->email->email_object->settings?->{$this->email->email_object->email_template_subject};
} else { } else {
$this->email_object->subject = EmailTemplateDefaults::getDefaultTemplate($this->email_object->email_template_subject, $this->locale); $this->email->email_object->subject = EmailTemplateDefaults::getDefaultTemplate($this->email->email_object->email_template_subject, $this->locale);
} }
return $this; return $this;
@ -186,11 +197,11 @@ class EmailDefaults
*/ */
private function setReplyTo(): self private function setReplyTo(): self
{ {
$reply_to_email = str_contains($this->email_object->settings->reply_to_email, "@") ? $this->email_object->settings->reply_to_email : $this->email_service->company->owner()->email; $reply_to_email = str_contains($this->email->email_object->settings->reply_to_email, "@") ? $this->email->email_object->settings->reply_to_email : $this->email->company->owner()->email;
$reply_to_name = strlen($this->email_object->settings->reply_to_name) > 3 ? $this->email_object->settings->reply_to_name : $this->email_service->company->owner()->present()->name(); $reply_to_name = strlen($this->email->email_object->settings->reply_to_name) > 3 ? $this->email->email_object->settings->reply_to_name : $this->email->company->owner()->present()->name();
$this->email_object->reply_to = array_merge($this->email_object->reply_to, [new Address($reply_to_email, $reply_to_name)]); $this->email->email_object->reply_to = array_merge($this->email->email_object->reply_to, [new Address($reply_to_email, $reply_to_name)]);
return $this; return $this;
} }
@ -201,12 +212,12 @@ class EmailDefaults
*/ */
public function setVariables(): self public function setVariables(): self
{ {
$this->email_object->body = strtr($this->email_object->body, $this->email_object->variables); $this->email->email_object->body = strtr($this->email->email_object->body, $this->email->email_object->variables);
$this->email_object->subject = strtr($this->email_object->subject, $this->email_object->variables); $this->email->email_object->subject = strtr($this->email->email_object->subject, $this->email->email_object->variables);
if ($this->template != 'custom') { if ($this->template != 'custom') {
$this->email_object->body = $this->parseMarkdownToHtml($this->email_object->body); $this->email->email_object->body = $this->parseMarkdownToHtml($this->email->email_object->body);
} }
return $this; return $this;
@ -220,11 +231,11 @@ class EmailDefaults
$bccs = []; $bccs = [];
$bcc_array = []; $bcc_array = [];
if (strlen($this->email_object->settings->bcc_email) > 1) { if (strlen($this->email->email_object->settings->bcc_email) > 1) {
if (Ninja::isHosted() && $this->email_service->company->account->isPaid()) { if (Ninja::isHosted() && $this->email->company->account->isPaid()) {
$bccs = array_slice(explode(',', str_replace(' ', '', $this->email_object->settings->bcc_email)), 0, 2); $bccs = array_slice(explode(',', str_replace(' ', '', $this->email->email_object->settings->bcc_email)), 0, 2);
} elseif (Ninja::isSelfHost()) { } elseif (Ninja::isSelfHost()) {
$bccs = (explode(',', str_replace(' ', '', $this->email_object->settings->bcc_email))); $bccs = (explode(',', str_replace(' ', '', $this->email->email_object->settings->bcc_email)));
} }
} }
@ -232,7 +243,7 @@ class EmailDefaults
$bcc_array[] = new Address($bcc); $bcc_array[] = new Address($bcc);
} }
$this->email_object->bcc = array_merge($this->email_object->bcc, $bcc_array); $this->email->email_object->bcc = array_merge($this->email->email_object->bcc, $bcc_array);
return $this; return $this;
} }
@ -258,15 +269,81 @@ class EmailDefaults
*/ */
private function setAttachments(): self private function setAttachments(): self
{ {
$attachments = []; $documents = [];
if ($this->email_object->settings->document_email_attachment && $this->email_service->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) { /* Return early if the user cannot attach documents */
foreach ($this->email_service->company->documents as $document) { if (!$this->email->email_object->settings->document_email_attachment || !$this->email->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) {
$attachments[] = ['file' => base64_encode($document->getFile()), 'name' => $document->name]; return $this;
}
/** Purchase Order / Invoice / Credit / Quote PDF */
if ($this->email->email_object->entity instanceof PurchaseOrder) {
$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, $this->email->company->db))->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']]);
}
/* Company Documents */
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $this->email->company->documents->pluck('id')->toArray());
/** Entity Documents */
if ($this->email->email_object->entity?->documents) {
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $this->email->email_object->entity->documents->pluck('id')->toArray());
}
/** Recurring Invoice Documents */
if ($this->email->email_object->entity instanceof Invoice && $this->email->email_object->entity->recurring_id != null) {
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $this->email->email_object->entity->recurring_invoice->documents->pluck('id')->toArray());
}
/** Task / Expense Documents */
if ($this->email->email_object->entity instanceof Invoice) {
$expense_ids = [];
$task_ids = [];
foreach ($this->email->email_object->entity->line_items as $item) {
if (property_exists($item, 'expense_id')) {
$expense_ids[] = $item->expense_id;
}
if (property_exists($item, 'task_id')) {
$task_ids[] = $item->task_id;
}
}
if (count($expense_ids) > 0) {
Expense::whereIn('id', $this->transformKeys($expense_ids))
->where('invoice_documents', 1)
->cursor()
->each(function ($expense) {
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $expense->documents->pluck('id')->toArray());
});
}
if (count($task_ids) > 0 && $this->email->company->invoice_task_documents) {
Task::whereIn('id', $this->transformKeys($task_ids))
->cursor()
->each(function ($task) {
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $task->documents->pluck('id')->toArray());
});
} }
} }
$this->email_object->attachments = array_merge($this->email_object->attachments, $attachments); /** UBL xml file */
if ($this->email->email_object->entity instanceof Invoice && $this->email->email_object->settings->ubl_email_attachment) {
$ubl_string = (new CreateUbl($this->email->email_object->entity))->handle();
if ($ubl_string) {
$this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($ubl_string), 'name' => $this->email->email_object->entity->getFileName('xml')]]);
}
}
return $this; return $this;
} }
@ -276,8 +353,8 @@ class EmailDefaults
*/ */
private function setHeaders(): self private function setHeaders(): self
{ {
if ($this->email_object->invitation_key) { if ($this->email->email_object->invitation_key) {
$this->email_object->headers = array_merge($this->email_object->headers, ['x-invitation-key' => $this->email_object->invitation_key]); $this->email->email_object->headers = array_merge($this->email->email_object->headers, ['x-invitation-key' => $this->email->email_object->invitation_key]);
} }
return $this; return $this;

View File

@ -11,14 +11,19 @@
namespace App\Services\Email; namespace App\Services\Email;
use Illuminate\Mail\Attachment; use App\Models\Document;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Mail\Attachment;
use Illuminate\Support\Facades\URL;
use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Mail\Mailables\Headers; use Illuminate\Mail\Mailables\Headers;
use Illuminate\Mail\Mailables\Envelope;
class EmailMailable extends Mailable class EmailMailable extends Mailable
{ {
public int $max_attachment_size = 3000000;
/** /**
* Create a new message instance. * Create a new message instance.
* *
@ -52,6 +57,16 @@ class EmailMailable extends Mailable
*/ */
public function content() public function content()
{ {
$links = Document::whereIn('id',$this->email_object->documents)
->where('size', '>', $this->max_attachment_size)
->cursor()
->map(function ($document){
return "<a class='doc_links' href='" . URL::signedRoute('documents.public_download', ['document_hash' => $document->hash]) ."'>". $document->name ."</a>";
});
return new Content( return new Content(
view: $this->email_object->html_template, view: $this->email_object->html_template,
text: $this->email_object->text_template, text: $this->email_object->text_template,
@ -63,7 +78,8 @@ class EmailMailable extends Mailable
'logo' => $this->email_object->logo, 'logo' => $this->email_object->logo,
'signature' => $this->email_object->signature, 'signature' => $this->email_object->signature,
'company' => $this->email_object->company, 'company' => $this->email_object->company,
'greeting' => '' 'greeting' => '',
'links' => array_merge($this->email_object->links, $links->toArray()),
] ]
); );
} }
@ -77,11 +93,20 @@ class EmailMailable extends Mailable
{ {
$attachments = []; $attachments = [];
foreach ($this->email_object->attachments as $file) { $attachments = collect($this->email_object->attachments)->map(function ($file){
$attachments[] = Attachment::fromData(fn () => base64_decode($file['file']), $file['name']); return Attachment::fromData(fn () => base64_decode($file['file']), $file['name']);
} });
return $attachments; $documents = Document::whereIn('id',$this->email_object->documents)
->where('size', '<', $this->max_attachment_size)
->cursor()
->map(function ($document){
return Attachment::fromData(fn () => $document->getFile(), $document->name);
});
return $attachments->merge($documents)->toArray();
} }
/** /**

View File

@ -37,6 +37,7 @@ use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use Turbo124\Beacon\Facades\LightLogs; use Turbo124\Beacon\Facades\LightLogs;
//@deprecated v5.5.83
class EmailMailer implements ShouldQueue class EmailMailer implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash;

View File

@ -11,13 +11,22 @@
namespace App\Services\Email; namespace App\Services\Email;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Company;
use App\Models\User; use App\Models\User;
use App\Models\Quote;
use App\Models\Client;
use App\Models\Credit;
use App\Models\Vendor; use App\Models\Vendor;
use App\Models\Company;
use App\Models\Invoice;
use App\Models\Payment;
use App\Models\ClientContact;
use App\Models\PurchaseOrder;
use App\Models\VendorContact; use App\Models\VendorContact;
use App\Models\QuoteInvitation;
use App\Models\CreditInvitation;
use App\Models\InvoiceInvitation;
use Illuminate\Mail\Mailables\Address; use Illuminate\Mail\Mailables\Address;
use App\Models\PurchaseOrderInvitation;
/** /**
* EmailObject. * EmailObject.
@ -42,6 +51,8 @@ class EmailObject
public string $company_key; public string $company_key;
public Company $company;
public ?object $settings = null; public ?object $settings = null;
public bool $whitelabel = false; public bool $whitelabel = false;
@ -52,15 +63,31 @@ class EmailObject
public ?string $greeting = null; public ?string $greeting = null;
public ?Client $client = null; public ?int $invitation_id = null;
public ?Vendor $vendor = null; public InvoiceInvitation | QuoteInvitation | CreditInvitation | PurchaseOrderInvitation | null $invitation;
public ?int $entity_id = null;
public ?User $user = null; public Invoice | Quote | Credit | PurchaseOrder | Payment | null $entity;
public ?int $client_id = null;
public ?ClientContact $client_contact = null; public ?Client $client;
public ?int $vendor_id = null;
public ?VendorContact $vendor_contact = null; public ?Vendor $vendor;
public ?int $user_id = null;
public ?User $user;
public ?int $client_contact_id = null;
public ClientContact | VendorContact | null $contact;
public ?int $vendor_contact_id = null;
public ?string $email_template_body = null; public ?string $email_template_body = null;
@ -72,13 +99,18 @@ class EmailObject
public array $headers = []; public array $headers = [];
public ?string $invitation_key = null;
public ?int $entity_id = null;
public ?string $entity_class = null; public ?string $entity_class = null;
public array $variables = []; public array $variables = [];
public ?Company $company = null; public bool $override = false;
public ?string $invitation_key = null;
// @phpstan-ignore-next-line
public array $documents = [];
public ?string $template = null; //invoice //quote //reminder1
public array $links = [];
} }

View File

@ -1,570 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Services\Email;
use App\DataMapper\EmailTemplateDefaults;
use App\Jobs\Entity\CreateRawPdf;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Models\Account;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Credit;
use App\Models\Expense;
use App\Models\Invoice;
use App\Models\PurchaseOrder;
use App\Models\Quote;
use App\Models\Task;
use App\Models\Vendor;
use App\Models\VendorContact;
use App\Utils\HtmlEngine;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash;
use App\Utils\VendorHtmlEngine;
use Illuminate\Contracts\Mail\Mailable;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\URL;
use League\CommonMark\CommonMarkConverter;
class MailBuild
{
use MakesHash;
/** @var mixed $settings */
protected $settings;
/** @var string $template */
private string $template;
/** @var string $locale */
private string $locale;
/** @var ?Client $client */
private ?Client $client;
/** @var ?Vendor $vendor */
private ?Vendor $vendor;
/** @var mixed $html_engine */
private mixed $html_engine;
/** @var array $variables */
private array $variables = [];
/** @var int $max_attachment_size */
public int $max_attachment_size = 3000000;
/**
* __construct
*
* @param MailEntity $mail_entity
* @return void
*/
public function __construct(public MailEntity $mail_entity)
{
}
/**
* Builds the mailable
*
* @return self
*/
public function run(): self
{
//resolve settings, if client existing - use merged - else default to company
$this->resolveEntities()
->setLocale()
->setMetaData()
->setFrom()
->setTo()
->setTemplate()
->setSubject()
->setBody()
->setReplyTo()
->setBcc()
->setAttachments()
->setVariables();
return $this;
}
/**
* Returns the mailable to the mailer
*
* @return Mailable
*/
public function getMailable(): Mailable
{
return new MailMailable($this->mail_entity->mail_object);
}
/**
* Resolve any class entities
*
* @return self
*/
private function resolveEntities(): self
{
$client_contact = $this->mail_entity?->invitation?->client_contact_id ? ClientContact::withTrashed()->find($this->mail_entity->invitation->client_contact_id) : null;
$this->client = $client_contact?->client;
$vendor_contact = $this->mail_entity?->invitation?->vendor_contact_id ? VendorContact::withTrashed()->find($this->mail_entity->invitation->vendor_contact_id) : null;
$this->vendor = $vendor_contact?->vendor;
if ($this->mail_entity?->invitation) {
if ($this->mail_entity->invitation?->invoice) {
$this->mail_entity->mail_object->entity_string = 'invoice';
$this->mail_entity->mail_object->entity_class = Invoice::class;
}
if ($this->mail_entity->invitation?->quote) {
$this->mail_entity->mail_object->entity_string = 'quote';
$this->mail_entity->mail_object->entity_class = Quote::class;
}
if ($this->mail_entity->invitation?->credit) {
$this->mail_entity->mail_object->entity_string = 'credit';
$this->mail_entity->mail_object->entity_class = Credit::class;
}
if ($this->mail_entity->invitation?->puchase_order) {
$this->mail_entity->mail_object->entity_string = 'purchase_order';
$this->mail_entity->mail_object->entity_class = PurchaseOrder::class;
}
}
return $this;
}
/**
* Sets the locale
* Sets the settings object depending on context
* Sets the HTML variables depending on context
*
* @return self
*/
private function setLocale(): self
{
if ($this->client) {
$this->locale = $this->client->locale();
$this->settings = $this->client->getMergedSettings();
if ($this->mail_entity->invitation) {
$this->variables = (new HtmlEngine($this->mail_entity->invitation))->makeValues();
}
} elseif ($this->vendor) {
$this->locale = $this->vendor->locale();
$this->settings = $this->mail_entity->company->settings;
if ($this->mail_entity->invitation) {
$this->variables = (new VendorHtmlEngine($this->mail_entity->invitation))->makeValues();
}
} else {
$this->locale = $this->mail_entity->company->locale();
$this->settings = $this->mail_entity->company->settings;
}
$this->mail_entity->mail_object->settings = $this->settings;
App::setLocale($this->locale);
App::forgetInstance('translator');
$t = app('translator');
$t->replace(Ninja::transformTranslations($this->settings));
return $this;
}
/**
* Sets the meta data for the Email object
*
* @return self
*/
private function setMetaData(): self
{
$this->mail_entity->mail_object->company_key = $this->mail_entity->company->company_key;
$this->mail_entity->mail_object->logo = $this->mail_entity->company->present()->logo();
$this->mail_entity->mail_object->signature = $this->mail_entity->mail_object->signature ?: $this->settings->email_signature;
$this->mail_entity->mail_object->whitelabel = $this->mail_entity->company->account->isPaid() ? true : false;
$this->mail_entity->mail_object->company = $this->mail_entity->company;
return $this;
}
/**
* Sets the template
*
* @return self
*/
private function setTemplate(): self
{
$this->template = $this->settings->email_style;
match ($this->settings->email_style) {
'light' => $this->template = 'email.template.client',
'dark' => $this->template = 'email.template.client',
'custom' => $this->template = 'email.template.custom',
default => $this->template = 'email.template.client',
};
$this->mail_entity->mail_object->html_template = $this->template;
return $this;
}
/**
* setTo
*
* @return self
*/
private function setTo(): self
{
$this->mail_entity->mail_object->to = array_merge(
$this->mail_entity->mail_object->to,
[new Address($this->mail_entity->invitation->contact->email, $this->mail_entity->invitation->contact->present()->name())]
);
return $this;
}
/**
* Sets the FROM address
*
* @return self
*/
private function setFrom(): self
{
if (Ninja::isHosted() && $this->settings->email_sending_method == 'default') {
$this->mail_entity->mail_object->from = new Address(config('mail.from.address'), $this->mail_entity->company->owner()->name());
return $this;
}
if ($this->mail_entity->mail_object->from) {
return $this;
}
$this->mail_entity->mail_object->from = new Address($this->mail_entity->company->owner()->email, $this->mail_entity->company->owner()->name());
return $this;
}
/**
* Sets the subject of the email
*
* @return self
*/
private function setSubject(): self
{
if ($this->mail_entity->mail_object->subject) { //where the user updates the subject from the UI
return $this;
} elseif (is_string($this->mail_entity->mail_object->email_template) && strlen($this->settings->{$this->resolveBaseEntityTemplate()}) > 3) {
$this->mail_entity->mail_object->subject = $this->settings->{$this->resolveBaseEntityTemplate()};
} else {
$this->mail_entity->mail_object->subject = EmailTemplateDefaults::getDefaultTemplate($this->resolveBaseEntityTemplate(), $this->locale);
}
return $this;
}
/**
* Sets the body of the email
*
* @return self
*/
private function setBody(): self
{
if ($this->mail_entity->mail_object->body) {
$this->mail_entity->mail_object->body = $this->mail_entity->mail_object->body;
} elseif (is_string($this->mail_entity->mail_object->email_template) && strlen($this->settings->{$this->resolveBaseEntityTemplate('body')}) > 3) {
$this->mail_entity->mail_object->body = $this->settings->{$this->resolveBaseEntityTemplate('body')};
} else {
$this->mail_entity->mail_object->body = EmailTemplateDefaults::getDefaultTemplate($this->resolveBaseEntityTemplate('body'), $this->locale);
}
if ($this->template == 'email.template.custom') {
$this->mail_entity->mail_object->body = (str_replace('$body', $this->mail_entity->mail_object->body, $this->settings->email_style_custom));
}
return $this;
}
/**
* Where no template is explicitly passed, we need to infer by the entity type -
* which is hopefully resolvable.
*
* @param string $type
* @return string
*/
private function resolveBaseEntityTemplate(string $type = 'subject'): string
{
if ($this->mail_entity->mail_object->email_template) {
match ($type) {
'subject' => $template = "email_subject_{$this->mail_entity->mail_object->email_template}",
'body' => $template = "email_template_{$this->mail_entity->mail_object->email_template}",
default => $template = "email_template_invoice",
};
return $template;
}
//handle statements being emailed
//handle custom templates these types won't have a resolvable entity_string
if (!$this->mail_entity->mail_object->entity_string) {
return 'email_template_invoice';
}
match ($type) {
'subject' => $template = "email_subject_{$this->mail_entity->mail_object->entity_string}",
'body' => $template = "email_template_{$this->mail_entity->mail_object->entity_string}",
default => $template = "email_template_invoice",
};
return $template;
}
/**
* Sets the attachments for the email
*
* Note that we base64 encode these, as they
* sometimes may not survive serialization.
*
* We decode these in the Mailable later
*
* @return self
*/
private function setAttachments(): self
{
$this->setContextAttachments();
if ($this->settings->document_email_attachment && $this->mail_entity->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) {
$this->attachDocuments($this->mail_entity->company->documents);
}
return $this;
}
private function attachDocuments($documents): self
{
foreach ($documents as $document) {
if ($document->size > $this->max_attachment_size) {
$this->mail_entity->mail_object->attachment_links = array_merge($this->mail_entity->mail_object->attachment_links, [["<a class='doc_links' href='" . URL::signedRoute('documents.public_download', ['document_hash' => $document->hash]) ."'>". $document->name ."</a>"]]);
} else {
$this->mail_entity->mail_object->attachments = array_merge($this->mail_entity->mail_object->attachments, [['file' => base64_encode($document->getFile()), 'name' => $document->name]]);
}
}
return $this;
}
/**
* Depending on context we may need to resolve the
* attachment dependencies.
*
* ie. Resolve the entity.
* ie. Resolve if we should attach the Entity PDF
* ie. Create the Entity PDF
* ie. Inject the PDF
*
* @return self
*/
private function setContextAttachments(): self
{
if (!$this->settings->pdf_email_attachment || !$this->mail_entity->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
return $this;
}
if ($this->mail_entity->invitation?->purchase_order) {
$pdf = (new CreatePurchaseOrderPdf($this->mail_entity->invitation))->rawPdf();
$this->mail_entity->mail_object->attachments = array_merge($this->mail_entity->mail_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->mail_entity->invitation->purchase_order->numberFormatter().'.pdf']]);
if ($this->vendor->getSetting('document_email_attachment') !== false && $this->mail_entity->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) {
$this->attachDocuments($this->mail_entity->invitation->purchase_order->documents);
}
return $this;
}
if (!$this->mail_entity->mail_object->entity_string) {
return $this;
}
$pdf = ((new CreateRawPdf($this->mail_entity->invitation, $this->mail_entity->invitation->company->db))->handle());
$this->mail_entity->mail_object->attachments = array_merge($this->mail_entity->mail_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->mail_entity->invitation->{$this->mail_entity->mail_object->entity_string}->numberFormatter().'.pdf']]);
if ($this->client->getSetting('document_email_attachment') !== false && $this->mail_entity->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) {
$this->attachDocuments($this->mail_entity->invitation->{$this->mail_entity->mail_object->entity_string}->documents);
}
return $this;
if ($this->settings->ubl_email_attachment && $this->mail_entity->mail_object->entity_string == 'invoice') {
}
if ($this->mail_entity->mail_object->entity_string == 'invoice') {
$line_items = $this->mail_entity->invitation->invoice->line_items;
foreach ($line_items as $item) {
$expense_ids = [];
if (property_exists($item, 'expense_id')) {
$expense_ids[] = $item->expense_id;
}
if (count($expense_ids) > 0) {
$expenses = Expense::whereIn('id', $this->transformKeys($expense_ids))
->where('invoice_documents', 1)
->cursor()
->each(function ($expense) {
$this->attachDocuments($expense->documents);
});
}
$task_ids = [];
if (property_exists($item, 'task_id')) {
$task_ids[] = $item->task_id;
}
if (count($task_ids) > 0 && $this->mail_entity->company->invoice_task_documents) {
$tasks = Task::whereIn('id', $this->transformKeys($task_ids))
->cursor()
->each(function ($task) {
$this->attachDocuments($task->documents);
});
}
}
}
return $this;
}
/**
* Sets the reply to of the email
*
* @return self
*/
private function setReplyTo(): self
{
$reply_to_email = str_contains($this->settings->reply_to_email, "@") ? $this->settings->reply_to_email : $this->mail_entity->company->owner()->email;
$reply_to_name = strlen($this->settings->reply_to_name) > 3 ? $this->settings->reply_to_name : $this->mail_entity->company->owner()->present()->name();
$this->mail_entity->mail_object->reply_to = array_merge($this->mail_entity->mail_object->reply_to, [new Address($reply_to_email, $reply_to_name)]);
return $this;
}
/**
* Replaces the template placeholders
* with variable values.
*
* @return self
*/
public function setVariables(): self
{
if ($this->mail_entity->mail_object->variables) {
$this->mail_entity->mail_object->subject = strtr($this->mail_entity->mail_object->subject, $this->mail_entity->mail_object->variables);
$this->mail_entity->mail_object->body = strtr($this->mail_entity->mail_object->body, $this->mail_entity->mail_object->variables);
}
$this->mail_entity->mail_object->subject = strtr($this->mail_entity->mail_object->subject, $this->variables);
$this->mail_entity->mail_object->body = strtr($this->mail_entity->mail_object->body, $this->variables);
if ($this->template != 'custom') {
$this->mail_entity->mail_object->body = $this->parseMarkdownToHtml($this->mail_entity->mail_object->body);
}
return $this;
}
/**
* Sets the BCC of the email
*
* @return self
*/
private function setBcc(): self
{
$bccs = [];
$bcc_array = [];
if (strlen($this->settings->bcc_email) > 1) {
if (Ninja::isHosted() && $this->mail_entity->company->account->isPaid()) {
$bccs = array_slice(explode(',', str_replace(' ', '', $this->settings->bcc_email)), 0, 2);
} elseif (Ninja::isSelfHost()) {
$bccs = (explode(',', str_replace(' ', '', $this->settings->bcc_email)));
}
}
foreach ($bccs as $bcc) {
$bcc_array[] = new Address($bcc);
}
$this->mail_entity->mail_object->bcc = array_merge($this->mail_entity->mail_object->bcc, $bcc_array);
return $this;
}
/**
* Sets the CC of the email
* @todo at some point....
*/
private function buildCc()
{
return [
];
}
/**
* Sets the headers for the email
*
* @return self
*/
private function setHeaders(): self
{
if ($this->mail_entity->mail_object->invitation_key) {
$this->mail_entity->mail_object->headers = array_merge($this->mail_entity->mail_object->headers, ['x-invitation-key' => $this->mail_entity->mail_object->invitation_key]);
} elseif ($this->mail_entity->invitation) {
$this->mail_entity->mail_object->headers = array_merge($this->mail_entity->mail_object->headers, ['x-invitation-key' => $this->mail_entity->invitation->key]);
}
return $this;
}
/**
* Converts any markdown to HTML in the email
*
* @param string $markdown The body to convert
* @return string The parsed markdown response
*/
private function parseMarkdownToHtml(string $markdown): ?string
{
$converter = new CommonMarkConverter([
'allow_unsafe_links' => false,
]);
return $converter->convert($markdown);
}
}

View File

@ -1,100 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Services\Email;
use Illuminate\Mail\Attachment;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Mail\Mailables\Headers;
class MailMailable extends Mailable
{
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(public MailObject $mail_object)
{
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope()
{
return new Envelope(
subject: $this->mail_object->subject,
tags: [$this->mail_object->company_key],
replyTo: $this->mail_object->reply_to,
from: $this->mail_object->from,
to: $this->mail_object->to,
bcc: $this->mail_object->bcc
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content()
{
return new Content(
view: $this->mail_object->html_template,
text: $this->mail_object->text_template,
with: [
'text_body' => str_replace("<br>", "\n", strip_tags($this->mail_object->body, "<br>")), //@todo this is a bit hacky here.
'body' => $this->mail_object->body,
'settings' => $this->mail_object->settings,
'whitelabel' => $this->mail_object->whitelabel,
'logo' => $this->mail_object->logo,
'signature' => $this->mail_object->signature,
'company' => $this->mail_object->company,
'greeting' => ''
]
);
}
/**
* Get the attachments for the message.
*
* @return array
*/
public function attachments()
{
$attachments = [];
foreach ($this->mail_object->attachments as $file) {
$attachments[] = Attachment::fromData(fn () => base64_decode($file['file']), $file['name']);
}
return $attachments;
}
/**
* Get the message headers.
*
* @return \Illuminate\Mail\Mailables\Headers
*/
public function headers()
{
return new Headers(
messageId: null,
references: [],
text: $this->mail_object->headers,
);
}
}

View File

@ -1,89 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Services\Email;
use App\Models\Company;
use Illuminate\Mail\Mailables\Address;
/**
* MailObject.
*/
class MailObject
{
public ?string $db = null;
public array $to = [];
public ?Address $from = null;
public array $reply_to = [];
public array $cc = [];
public array $bcc = [];
public ?string $subject = null;
public ?string $body = null;
public array $attachments = [];
public array $attachment_links = [];
public string $company_key;
public ?object $settings = null;
public bool $whitelabel = false;
public ?string $logo = null;
public ?string $signature = null;
public ?string $greeting = null;
public ?int $client_id = null;
public ?int $vendor_id = null;
public ?int $user_id = null;
public ?int $client_contact_id = null;
public ?int $vendor_contact_id = null;
public ?string $email_template = null; //this defines the template in short notation WITH the email_template prefix
public ?string $html_template = null;
public ?string $text_template = 'email.template.text';
public array $headers = [];
public ?string $invitation_key = null;
public ?int $entity_id = null;
public ?string $entity_class = null;
public ?string $entity_string = null;
public array $variables = [];
public ?string $template = null;
public ?string $template_data = null;
public bool $override = false;
public ?Company $company = null;
}

View File

@ -38,7 +38,8 @@ class SchedulerService
*/ */
public function runTask(): void public function runTask(): void
{ {
$this->{$this->scheduler->template}(); if(method_exists($this, $this->scheduler->template))
$this->{$this->scheduler->template}();
} }
private function email_statement() private function email_statement()

View File

@ -355,7 +355,7 @@ class SubscriptionService
* @param Invoice $invoice * @param Invoice $invoice
* @return float * @return float
*/ */
private function calculateProRataRefund($invoice) :float private function calculateProRataRefund($invoice, $subscription = null) :float
{ {
if (!$invoice || !$invoice->date) { if (!$invoice || !$invoice->date) {
return 0; return 0;
@ -367,7 +367,10 @@ class SubscriptionService
$days_of_subscription_used = $start_date->diffInDays($current_date); $days_of_subscription_used = $start_date->diffInDays($current_date);
$days_in_frequency = $this->getDaysInFrequency(); if($subscription)
$days_in_frequency = $subscription->service()->getDaysInFrequency();
else
$days_in_frequency = $this->getDaysInFrequency();
if ($days_of_subscription_used >= $days_in_frequency) { if ($days_of_subscription_used >= $days_in_frequency) {
return 0; return 0;

View File

@ -11,7 +11,6 @@
namespace App\Transformers; namespace App\Transformers;
use App\Models\Account;
use App\Models\BankTransaction; use App\Models\BankTransaction;
use App\Models\Company; use App\Models\Company;
use App\Models\Expense; use App\Models\Expense;
@ -35,7 +34,6 @@ class BankTransactionTransformer extends EntityTransformer
*/ */
protected $availableIncludes = [ protected $availableIncludes = [
'company', 'company',
'account',
'expense', 'expense',
'payment', 'payment',
'vendor', 'vendor',
@ -76,13 +74,6 @@ class BankTransactionTransformer extends EntityTransformer
]; ];
} }
public function includeAccount(BankTransaction $bank_transaction)
{
$transformer = new AccountTransformer($this->serializer);
return $this->includeItem($bank_transaction->account, $transformer, Account::class);
}
public function includeCompany(BankTransaction $bank_transaction) public function includeCompany(BankTransaction $bank_transaction)
{ {
$transformer = new CompanyTransformer($this->serializer); $transformer = new CompanyTransformer($this->serializer);

Some files were not shown because too many files have changed in this diff Show More