diff --git a/app/DataMapper/Tax/ZipTax/Response.php b/app/DataMapper/Tax/ZipTax/Response.php index f2655c50e8f1..255c5f6ec8b4 100644 --- a/app/DataMapper/Tax/ZipTax/Response.php +++ b/app/DataMapper/Tax/ZipTax/Response.php @@ -102,11 +102,13 @@ class Response public function __construct($data) { - if(!$data) - return $this; - foreach($data as $key => $value){ - $this->{$key} = $value; + if($data) { + + foreach($data as $key => $value) { + $this->{$key} = $value; + } + } } diff --git a/app/Factory/CompanyFactory.php b/app/Factory/CompanyFactory.php index e9487b54c0b7..52324d698a5a 100644 --- a/app/Factory/CompanyFactory.php +++ b/app/Factory/CompanyFactory.php @@ -30,12 +30,10 @@ class CompanyFactory public function create(int $account_id) :Company { $company = new Company; - // $company->name = ''; $company->account_id = $account_id; $company->company_key = $this->createHash(); $company->settings = CompanySettings::defaults(); $company->db = config('database.default'); - //$company->custom_fields = (object) ['invoice1' => '1', 'invoice2' => '2', 'client1'=>'3']; $company->custom_fields = (object) []; $company->client_registration_fields = ClientRegistrationFields::generate(); diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index cedbb7fd4f7f..327aa8b96a04 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -30,13 +30,19 @@ class StoreInvoiceRequest extends Request */ public function authorize() : bool { - return auth()->user()->can('create', Invoice::class); + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->can('create', Invoice::class); } public function rules() { $rules = []; + /** @var \App\Models\User $user */ + $user = auth()->user(); + if ($this->file('documents') && is_array($this->file('documents'))) { $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { @@ -49,12 +55,11 @@ class StoreInvoiceRequest extends Request $rules['file'] = $this->file_validation; } - $rules['client_id'] = 'bail|required|exists:clients,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; - // $rules['client_id'] = ['required', Rule::exists('clients')->where('company_id', auth()->user()->company()->id)]; + $rules['client_id'] = 'bail|required|exists:clients,id,company_id,'.$user->company()->id.',is_deleted,0'; $rules['invitations.*.client_contact_id'] = 'distinct'; - $rules['number'] = ['bail', 'nullable', Rule::unique('invoices')->where('company_id', auth()->user()->company()->id)]; + $rules['number'] = ['bail', 'nullable', Rule::unique('invoices')->where('company_id', $user->company()->id)]; $rules['project_id'] = ['bail', 'sometimes', new ValidProjectForClient($this->all())]; $rules['is_amount_discount'] = ['boolean']; diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index 0668a8e60ff2..0aaca8fd002e 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -31,8 +31,11 @@ class UpdateInvoiceRequest extends Request * @return bool */ public function authorize() : bool - { - return auth()->user()->can('edit', $this->invoice); + { + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->can('edit', $this->invoice); } public function rules() diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php index 2052d65570c6..bd44540fe7d4 100644 --- a/app/Import/Providers/BaseImport.php +++ b/app/Import/Providers/BaseImport.php @@ -64,6 +64,8 @@ class BaseImport public ?bool $skip_header; + public array $entity_count = []; + public function __construct(array $request, Company $company) { $this->company = $company; @@ -80,9 +82,10 @@ class BaseImport auth()->login($this->company->owner(), true); - auth() - ->user() - ->setCompany($this->company); + /** @var \App\Models\User $user */ + $user = auth()->user(); + + $user->setCompany($this->company); } public function getCsvData($entity_type) @@ -579,12 +582,12 @@ class BaseImport $quote_data, $quote_repository ) { - if (! empty($invoice_data['archived'])) { + if (! empty($quote_data['archived'])) { $quote_repository->archive($quote); $quote->fresh(); } - if (! empty($invoice_data['viewed'])) { + if (! empty($quote_data['viewed'])) { $quote = $quote ->service() ->markViewed() diff --git a/app/Import/Providers/Invoicely.php b/app/Import/Providers/Invoicely.php index b92ea01732be..2b5c29b4d0e4 100644 --- a/app/Import/Providers/Invoicely.php +++ b/app/Import/Providers/Invoicely.php @@ -22,6 +22,8 @@ use App\Repositories\InvoiceRepository; class Invoicely extends BaseImport { + public array $entity_count = []; + public function import(string $entity) { if ( diff --git a/app/Jobs/Company/CompanyImport.php b/app/Jobs/Company/CompanyImport.php index fabd3ccd1118..7ec07abc616a 100644 --- a/app/Jobs/Company/CompanyImport.php +++ b/app/Jobs/Company/CompanyImport.php @@ -89,7 +89,7 @@ class CompanyImport implements ShouldQueue private $account; - public $company; + public Company $company; public $user; @@ -215,8 +215,8 @@ class CompanyImport implements ShouldQueue * * @param Company $company * @param User $user - * @param string $hash - the cache hash of the import data. - * @param array $request->all() + * @param string $file_location - the cache hash of the import data. + * @param array $request_array */ public function __construct(Company $company, User $user, string $file_location, array $request_array) { diff --git a/app/Jobs/Invoice/CreateEInvoice.php b/app/Jobs/Invoice/CreateEInvoice.php index 1417b4ce73a1..ff4e87d7e872 100644 --- a/app/Jobs/Invoice/CreateEInvoice.php +++ b/app/Jobs/Invoice/CreateEInvoice.php @@ -70,7 +70,6 @@ class CreateEInvoice implements ShouldQueue return (new FacturaEInvoice($this->invoice, str_replace("Facturae_", "", $e_invoice_type)))->run(); default: return (new ZugferdEInvoice($this->invoice, $this->alterPDF, $this->custom_pdf_path))->run(); - break; } diff --git a/app/Models/Company.php b/app/Models/Company.php index 35b0ca524071..4005937a7a9d 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -32,11 +32,11 @@ use Laracasts\Presenter\PresentableTrait; * @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 bool $convert_products + * @property bool $fill_products + * @property bool $update_products + * @property bool $show_product_details + * @property bool $client_can_register * @property int $custom_surcharge_taxes1 * @property int $custom_surcharge_taxes2 * @property int $custom_surcharge_taxes3 @@ -86,12 +86,12 @@ use Laracasts\Presenter\PresentableTrait; * @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 bool $convert_rate_to_client + * @property bool $markdown_email_enabled + * @property bool $stop_on_unpaid_recurring + * @property bool $use_quote_terms_on_conversion * @property int $enable_applying_payments - * @property int $track_inventory + * @property bool $track_inventory * @property int $inventory_notification_threshold * @property int $stock_notification * @property string|null $matomo_url @@ -198,134 +198,6 @@ use Laracasts\Presenter\PresentableTrait; * @property-read int|null $vendors_count * @property-read \Illuminate\Database\Eloquent\Collection $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) - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $all_activities - * @property-read \Illuminate\Database\Eloquent\Collection $all_documents - * @property-read \Illuminate\Database\Eloquent\Collection $bank_integrations - * @property-read \Illuminate\Database\Eloquent\Collection $bank_transaction_rules - * @property-read \Illuminate\Database\Eloquent\Collection $bank_transactions - * @property-read \Illuminate\Database\Eloquent\Collection $client_contacts - * @property-read \Illuminate\Database\Eloquent\Collection $client_gateway_tokens - * @property-read \Illuminate\Database\Eloquent\Collection $clients - * @property-read \Illuminate\Database\Eloquent\Collection $company_gateways - * @property-read \Illuminate\Database\Eloquent\Collection $company_users - * @property-read \Illuminate\Database\Eloquent\Collection $contacts - * @property-read \Illuminate\Database\Eloquent\Collection $credits - * @property-read \Illuminate\Database\Eloquent\Collection $designs - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $expense_categories - * @property-read \Illuminate\Database\Eloquent\Collection $expenses - * @property-read \Illuminate\Database\Eloquent\Collection $group_settings - * @property-read \Illuminate\Database\Eloquent\Collection $groups - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $ledger - * @property-read \Illuminate\Database\Eloquent\Collection $payment_terms - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $products - * @property-read \Illuminate\Database\Eloquent\Collection $projects - * @property-read \Illuminate\Database\Eloquent\Collection $purchase_orders - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $recurring_expenses - * @property-read \Illuminate\Database\Eloquent\Collection $recurring_invoices - * @property-read \Illuminate\Database\Eloquent\Collection $schedulers - * @property-read \Illuminate\Database\Eloquent\Collection $subscriptions - * @property-read \Illuminate\Database\Eloquent\Collection $system_log_relation - * @property-read \Illuminate\Database\Eloquent\Collection $system_logs - * @property-read \Illuminate\Database\Eloquent\Collection $task_schedulers - * @property-read \Illuminate\Database\Eloquent\Collection $task_statuses - * @property-read \Illuminate\Database\Eloquent\Collection $tasks - * @property-read \Illuminate\Database\Eloquent\Collection $tax_rates - * @property-read \Illuminate\Database\Eloquent\Collection $tokens - * @property-read \Illuminate\Database\Eloquent\Collection $tokens_hashed - * @property-read \Illuminate\Database\Eloquent\Collection $user_designs - * @property-read \Illuminate\Database\Eloquent\Collection $user_payment_terms - * @property-read \Illuminate\Database\Eloquent\Collection $users - * @property-read \Illuminate\Database\Eloquent\Collection $vendors - * @property-read \Illuminate\Database\Eloquent\Collection $webhooks * @property int $calculate_taxes * @property mixed $tax_data * @method \App\Models\User|null owner() diff --git a/app/Models/VendorContact.php b/app/Models/VendorContact.php index e78715903a71..8f388e4959f4 100644 --- a/app/Models/VendorContact.php +++ b/app/Models/VendorContact.php @@ -33,7 +33,7 @@ use Laracasts\Presenter\PresentableTrait; * @property int|null $created_at * @property int|null $updated_at * @property int|null $deleted_at - * @property int $is_primary + * @property bool $is_primary * @property string|null $first_name * @property string|null $last_name * @property string|null $email @@ -42,10 +42,10 @@ use Laracasts\Presenter\PresentableTrait; * @property string|null $custom_value2 * @property string|null $custom_value3 * @property string|null $custom_value4 - * @property int $send_email + * @property bool $send_email * @property string|null $email_verified_at * @property string|null $confirmation_code - * @property int $confirmed + * @property bool $confirmed * @property string|null $last_login * @property int|null $failed_logins * @property string|null $oauth_user_id @@ -57,7 +57,7 @@ use Laracasts\Presenter\PresentableTrait; * @property string|null $avatar_size * @property string $password * @property string|null $token - * @property int $is_locked + * @property bool $is_locked * @property string|null $contact_key * @property string|null $remember_token * @property-read \App\Models\Company $company diff --git a/app/Utils/Traits/CleanLineItems.php b/app/Utils/Traits/CleanLineItems.php index 4e16d287326f..921f66c32e1b 100644 --- a/app/Utils/Traits/CleanLineItems.php +++ b/app/Utils/Traits/CleanLineItems.php @@ -37,7 +37,6 @@ trait CleanLineItems /** * Sets default values for the line_items. * @param $item - * @return $this */ private function cleanLineItem($item) { @@ -63,9 +62,13 @@ trait CleanLineItems $item['type_id'] = '1'; } - // if($item['type_id'] == '2'){ - // str_replace() - // } + if (! array_key_exists('tax_id', $item)) { + $item['tax_id'] = '1'; + } + elseif(array_key_exists('tax_id', $item) && $item['tax_id'] == '') { + $item['tax_id'] = '1'; + } + } if (array_key_exists('id', $item)) {