diff --git a/app/Http/Controllers/Bank/YodleeController.php b/app/Http/Controllers/Bank/YodleeController.php index 1783d097c904..de2f3cc89b5e 100644 --- a/app/Http/Controllers/Bank/YodleeController.php +++ b/app/Http/Controllers/Bank/YodleeController.php @@ -276,8 +276,6 @@ class YodleeController extends BaseController { //this is the main hook we use for notifications - nlog("data refresh"); - nlog($request->all()); return response()->json(['message' => 'Success'], 200); diff --git a/app/Http/Controllers/ClientPortal/PrePaymentController.php b/app/Http/Controllers/ClientPortal/PrePaymentController.php index 9f62ab3ec962..a0fc28317970 100644 --- a/app/Http/Controllers/ClientPortal/PrePaymentController.php +++ b/app/Http/Controllers/ClientPortal/PrePaymentController.php @@ -12,11 +12,16 @@ namespace App\Http\Controllers\ClientPortal; +use App\Utils\Number; use Illuminate\View\View; +use App\DataMapper\InvoiceItem; +use App\Factory\InvoiceFactory; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesDates; use App\Http\Controllers\Controller; use Illuminate\Contracts\View\Factory; +use App\Repositories\InvoiceRepository; +use App\Http\Requests\ClientPortal\PrePayments\StorePrePaymentRequest; /** * Class PrePaymentController. @@ -35,7 +40,67 @@ class PrePaymentController extends Controller { $data['minimum_amount'] = auth()->guard('contact')->user()->client->getSetting('client_initiated_payments_minimum'); $data['title'] = ctrans('texts.amount'). " " .auth()->guard('contact')->user()->client->currency()->code." (".auth()->guard('contact')->user()->client->currency()->symbol . ")"; + return $this->render('pre_payments.index', $data); } + public function process(StorePrePaymentRequest $request) + { + + $invoices = collect(); + + $invoice = InvoiceFactory::create(auth()->guard('contact')->user()->company_id, auth()->guard('contact')->user()->user_id); + $invoice->due_date = now()->format('Y-m-d'); + $invoice->is_proforma = true; + $invoice->client_id = auth()->guard('contact')->user()->client_id; + + $line_item = new InvoiceItem(); + $line_item->cost = $request->amount; + $line_item->quantity = 1; + $line_item->product_key = ctrans('texts.pre_payment'); + $line_item->notes = $request->notes; + $line_item->type_id = 1; + + $items = []; + $items[] = $line_item; + $invoice->line_items = $items; + $invoice->number = ctrans('texts.pre_payment') . " " . now()->format('Y-m-d : H:i:s'); + + $invoice_repo = new InvoiceRepository(); + + $data = [ + 'client_id' => $invoice->client_id, + 'quantity' => 1, + 'date' => now()->format('Y-m-d'), + ]; + + $invoice = $invoice_repo->save($data, $invoice) + ->service() + ->markSent() + ->fillDefaults() + ->save(); + + //format totals + $formatted_total = Number::formatMoney($request->amount, auth()->guard('contact')->user()->client); + + $payment_methods = auth()->guard('contact')->user()->client->service()->getPaymentMethods($request->amount); + + //if there is only one payment method -> lets return straight to the payment page + + $invoices->push($invoice); + + $data = [ + 'settings' => auth()->guard('contact')->user()->client->getMergedSettings(), + 'invoices' => $invoices, + 'formatted_total' => $formatted_total, + 'payment_methods' => $payment_methods, + 'hashed_ids' => $invoices->pluck('hashed_id'), + 'total' => $request->amount, + 'pre_payment' => true, + ]; +nlog($data); + return $this->render('invoices.payment', $data); + + } + } \ No newline at end of file diff --git a/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php b/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php new file mode 100644 index 000000000000..a591632db413 --- /dev/null +++ b/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php @@ -0,0 +1,34 @@ +guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES; + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'notes' => 'required|bail|', + 'amount' => 'required|bail|', + ]; + } + +} diff --git a/app/Http/ViewComposers/PortalComposer.php b/app/Http/ViewComposers/PortalComposer.php index d1e4134d511e..9f4b6a3c609f 100644 --- a/app/Http/ViewComposers/PortalComposer.php +++ b/app/Http/ViewComposers/PortalComposer.php @@ -138,11 +138,11 @@ class PortalComposer $data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar']; } - /* - if($this->settings->client_initiated_payments) { + + if(property_exists($this->settings, 'client_initiated_payments') && $this->settings->client_initiated_payments) { $data[] = ['title' => ctrans('texts.pre_payment'), 'url' => 'client.pre_payments.index', 'icon' => 'dollar-sign']; } - */ + return $data; } diff --git a/app/Listeners/Subscription/PlayStoreRenewSubscription.php b/app/Listeners/Subscription/PlayStoreRenewSubscription.php index d03b7111ec9c..1a3bb1684fa8 100644 --- a/app/Listeners/Subscription/PlayStoreRenewSubscription.php +++ b/app/Listeners/Subscription/PlayStoreRenewSubscription.php @@ -28,11 +28,13 @@ class PlayStoreRenewSubscription implements ShouldQueue nlog($notification); $in_app_identifier = $event->getSubscriptionIdentifier(); - MultiDB::findAndSetDbByInappTransactionId($in_app_identifier); + $parts = explode("..", $in_app_identifier); + + MultiDB::findAndSetDbByInappTransactionId($parts[0]); $expirationTime = $event->getSubscription()->getExpiryTime(); - $account = Account::where('inapp_transaction_id', 'like', $in_app_identifier."%")->first(); + $account = Account::where('inapp_transaction_id', 'like', $parts[0]."%")->first(); if ($account) { $account->update(['plan_expires' => Carbon::parse($expirationTime)]); diff --git a/app/Models/Account.php b/app/Models/Account.php index 7eb9bd228c5a..5dc6584aef9e 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -130,6 +130,10 @@ use Laracasts\Presenter\PresentableTrait; * @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) + * @property-read \Illuminate\Database\Eloquent\Collection $bank_integrations + * @property-read \Illuminate\Database\Eloquent\Collection $companies + * @property-read \Illuminate\Database\Eloquent\Collection $company_users + * @property-read \Illuminate\Database\Eloquent\Collection $users * @mixin \Eloquent */ class Account extends BaseModel diff --git a/app/Models/BankAccount.php b/app/Models/BankAccount.php index 7c0ebebdff5a..fd5ea891db41 100644 --- a/app/Models/BankAccount.php +++ b/app/Models/BankAccount.php @@ -32,6 +32,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() * @method static \Illuminate\Database\Eloquent\Builder|BankAccount withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|BankAccount withoutTrashed() + * @property-read \Illuminate\Database\Eloquent\Collection $bank_subaccounts * @mixin \Eloquent */ class BankAccount extends BaseModel diff --git a/app/Models/BankIntegration.php b/app/Models/BankIntegration.php index 4c54136ebd1a..b5e414705612 100644 --- a/app/Models/BankIntegration.php +++ b/app/Models/BankIntegration.php @@ -75,6 +75,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $transactions * @mixin \Eloquent */ class BankIntegration extends BaseModel diff --git a/app/Models/Client.php b/app/Models/Client.php index a7d00e361954..a58d7fb450c0 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -166,6 +166,25 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property string $payment_balance + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger + * @property-read \Illuminate\Database\Eloquent\Collection $contacts + * @property-read \Illuminate\Database\Eloquent\Collection $credits + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $expenses + * @property-read \Illuminate\Database\Eloquent\Collection $gateway_tokens + * @property-read \Illuminate\Database\Eloquent\Collection $invoices + * @property-read \Illuminate\Database\Eloquent\Collection $ledger + * @property-read \Illuminate\Database\Eloquent\Collection $payments + * @property-read \Illuminate\Database\Eloquent\Collection $primary_contact + * @property-read \Illuminate\Database\Eloquent\Collection $projects + * @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 $system_logs + * @property-read \Illuminate\Database\Eloquent\Collection $tasks + * @method static \Illuminate\Database\Eloquent\Builder|Client wherePaymentBalance($value) * @mixin \Eloquent */ class Client extends BaseModel implements HasLocalePreference diff --git a/app/Models/ClientContact.php b/app/Models/ClientContact.php index c473116f80f3..21bb1c3ba8ac 100644 --- a/app/Models/ClientContact.php +++ b/app/Models/ClientContact.php @@ -123,6 +123,11 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $credit_invitations + * @property-read \Illuminate\Database\Eloquent\Collection $invoice_invitations + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications + * @property-read \Illuminate\Database\Eloquent\Collection $quote_invitations + * @property-read \Illuminate\Database\Eloquent\Collection $recurring_invoice_invitations * @mixin \Eloquent */ class ClientContact extends Authenticatable implements HasLocalePreference diff --git a/app/Models/Company.php b/app/Models/Company.php index 49531af286ce..bdc442937101 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -282,6 +282,50 @@ use Laracasts\Presenter\PresentableTrait; * @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 * @mixin \Eloquent */ class Company extends BaseModel diff --git a/app/Models/CompanyGateway.php b/app/Models/CompanyGateway.php index edaaa02e0968..4013bf1f006d 100644 --- a/app/Models/CompanyGateway.php +++ b/app/Models/CompanyGateway.php @@ -92,6 +92,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $client_gateway_tokens * @mixin \Eloquent */ class CompanyGateway extends BaseModel diff --git a/app/Models/CompanyUser.php b/app/Models/CompanyUser.php index 0a18f541245d..ed785efffefe 100644 --- a/app/Models/CompanyUser.php +++ b/app/Models/CompanyUser.php @@ -67,6 +67,9 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $token + * @property-read \Illuminate\Database\Eloquent\Collection $tokens + * @property-read \Illuminate\Database\Eloquent\Collection $users * @mixin \Eloquent */ class CompanyUser extends Pivot diff --git a/app/Models/Credit.php b/app/Models/Credit.php index c8c9fc5f0252..752618b450c1 100644 --- a/app/Models/Credit.php +++ b/app/Models/Credit.php @@ -185,6 +185,13 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations + * @property-read \Illuminate\Database\Eloquent\Collection $invoices + * @property-read \Illuminate\Database\Eloquent\Collection $payments * @mixin \Eloquent */ class Credit extends BaseModel diff --git a/app/Models/Expense.php b/app/Models/Expense.php index 3ec8f0b5780c..2ff2a9483126 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -130,6 +130,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Expense extends BaseModel diff --git a/app/Models/GatewayType.php b/app/Models/GatewayType.php index c359fdbee48c..fa5e08a7a477 100644 --- a/app/Models/GatewayType.php +++ b/app/Models/GatewayType.php @@ -28,6 +28,7 @@ namespace App\Models; * @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) + * @property-read \Illuminate\Database\Eloquent\Collection $payment_methods * @mixin \Eloquent */ class GatewayType extends StaticModel diff --git a/app/Models/GroupSetting.php b/app/Models/GroupSetting.php index fb8de1203187..afa61135a2eb 100644 --- a/app/Models/GroupSetting.php +++ b/app/Models/GroupSetting.php @@ -54,6 +54,8 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $clients + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class GroupSetting extends StaticModel diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 84cb253604fa..4b897ff62181 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -203,6 +203,15 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger + * @property-read \Illuminate\Database\Eloquent\Collection $credits + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $expenses + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations + * @property-read \Illuminate\Database\Eloquent\Collection $payments + * @property-read \Illuminate\Database\Eloquent\Collection $tasks * @mixin \Eloquent */ class Invoice extends BaseModel diff --git a/app/Models/License.php b/app/Models/License.php index bc4f20b70d8d..d2af140651e3 100644 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -13,6 +13,43 @@ namespace App\Models; use Illuminate\Database\Eloquent\SoftDeletes; +/** + * App\Models\License + * + * @property int $id + * @property int|null $created_at + * @property int|null $updated_at + * @property int|null $deleted_at + * @property string|null $first_name + * @property string|null $last_name + * @property string|null $email + * @property string|null $license_key + * @property int|null $is_claimed + * @property string|null $transaction_reference + * @property int|null $product_id + * @property int|null $recurring_invoice_id + * @method static \Illuminate\Database\Eloquent\Builder|StaticModel company() + * @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns) + * @method static \Illuminate\Database\Eloquent\Builder|License newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|License newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|License onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|License query() + * @method static \Illuminate\Database\Eloquent\Builder|License whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereIsClaimed($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereLicenseKey($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereProductId($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereRecurringInvoiceId($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereTransactionReference($value) + * @method static \Illuminate\Database\Eloquent\Builder|License whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|License withTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|License withoutTrashed() + * @mixin \Eloquent + */ class License extends StaticModel { use SoftDeletes; diff --git a/app/Models/Payment.php b/app/Models/Payment.php index b6f8296a4c3d..70da83de1bdd 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -132,6 +132,11 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger + * @property-read \Illuminate\Database\Eloquent\Collection $credits + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $invoices + * @property-read \Illuminate\Database\Eloquent\Collection $paymentables * @mixin \Eloquent */ class Payment extends BaseModel diff --git a/app/Models/Product.php b/app/Models/Product.php index 80e64f57d0d5..ac34c8f43cb2 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -96,6 +96,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Product extends BaseModel diff --git a/app/Models/Project.php b/app/Models/Project.php index 30b3e82f5677..42a53c0c756f 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -72,6 +72,8 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $tasks * @mixin \Eloquent */ class Project extends BaseModel diff --git a/app/Models/Proposal.php b/app/Models/Proposal.php index 041d907d56db..f2d75f539937 100644 --- a/app/Models/Proposal.php +++ b/app/Models/Proposal.php @@ -28,6 +28,7 @@ use App\Utils\Traits\MakesHash; * @method static \Illuminate\Database\Eloquent\Builder|Proposal newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Proposal query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Proposal extends BaseModel diff --git a/app/Models/PurchaseOrder.php b/app/Models/PurchaseOrder.php index 8d9551541055..dc35fcb5f2e6 100644 --- a/app/Models/PurchaseOrder.php +++ b/app/Models/PurchaseOrder.php @@ -180,6 +180,12 @@ use Illuminate\Support\Facades\Storage; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations + * @property-read \Illuminate\Database\Eloquent\Collection $invoices + * @property-read \Illuminate\Database\Eloquent\Collection $payments * @mixin \Eloquent */ class PurchaseOrder extends BaseModel diff --git a/app/Models/Quote.php b/app/Models/Quote.php index c27d0d6b64be..f62d1d5f59bc 100644 --- a/app/Models/Quote.php +++ b/app/Models/Quote.php @@ -181,6 +181,10 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations * @mixin \Eloquent */ class Quote extends BaseModel diff --git a/app/Models/RecurringExpense.php b/app/Models/RecurringExpense.php index 841be99b7afe..d3668a34d1e6 100644 --- a/app/Models/RecurringExpense.php +++ b/app/Models/RecurringExpense.php @@ -139,6 +139,7 @@ use Illuminate\Support\Carbon; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class RecurringExpense extends BaseModel diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index 4a5de7fc39aa..34cc53715fea 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -177,6 +177,11 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations + * @property-read \Illuminate\Database\Eloquent\Collection $invoices * @mixin \Eloquent */ class RecurringInvoice extends BaseModel diff --git a/app/Models/RecurringQuote.php b/app/Models/RecurringQuote.php index ce68c134dd50..569f57d7445f 100644 --- a/app/Models/RecurringQuote.php +++ b/app/Models/RecurringQuote.php @@ -171,6 +171,11 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $history + * @property-read \Illuminate\Database\Eloquent\Collection $invitations + * @property-read \Illuminate\Database\Eloquent\Collection $quotes * @mixin \Eloquent */ class RecurringQuote extends BaseModel diff --git a/app/Models/Task.php b/app/Models/Task.php index 6f52ff2a8745..4a1829c98eae 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -91,6 +91,7 @@ use Illuminate\Support\Carbon; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Task extends BaseModel diff --git a/app/Models/User.php b/app/Models/User.php index fc57697d5e10..eabc9eb07bc8 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -139,6 +139,13 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $clients + * @property-read \Illuminate\Database\Eloquent\Collection $companies + * @property-read \Illuminate\Database\Eloquent\Collection $company_users + * @property-read \Illuminate\Database\Eloquent\Collection $contacts + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications + * @property-read \Illuminate\Database\Eloquent\Collection $tokens * @mixin \Eloquent */ class User extends Authenticatable implements MustVerifyEmail diff --git a/app/Models/Vendor.php b/app/Models/Vendor.php index 51f998ab5826..1508a5944a19 100644 --- a/app/Models/Vendor.php +++ b/app/Models/Vendor.php @@ -104,6 +104,10 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Database\Eloquent\Collection $activities + * @property-read \Illuminate\Database\Eloquent\Collection $contacts + * @property-read \Illuminate\Database\Eloquent\Collection $documents + * @property-read \Illuminate\Database\Eloquent\Collection $primary_contact * @mixin \Eloquent */ class Vendor extends BaseModel diff --git a/app/Models/VendorContact.php b/app/Models/VendorContact.php index 5026bbdc9625..fe9b61caff53 100644 --- a/app/Models/VendorContact.php +++ b/app/Models/VendorContact.php @@ -110,6 +110,8 @@ use Laracasts\Presenter\PresentableTrait; * @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() + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications + * @property-read \Illuminate\Database\Eloquent\Collection $purchase_order_invitations * @mixin \Eloquent */ class VendorContact extends Authenticatable implements HasLocalePreference diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php index e8d57fcae576..c76575e0a7a4 100644 --- a/app/Services/Email/EmailDefaults.php +++ b/app/Services/Email/EmailDefaults.php @@ -171,6 +171,7 @@ class EmailDefaults if ($this->template == 'email.template.custom') { $this->email->email_object->body = (str_replace('$body', $this->email->email_object->body, $this->email->email_object->settings->email_style_custom)); + return $this; } if ($this->email->email_object->body) { diff --git a/resources/views/portal/ninja2020/invoices/payment.blade.php b/resources/views/portal/ninja2020/invoices/payment.blade.php index b45fd4435575..b88390f3f294 100644 --- a/resources/views/portal/ninja2020/invoices/payment.blade.php +++ b/resources/views/portal/ninja2020/invoices/payment.blade.php @@ -110,7 +110,6 @@ type="text" class="input mt-0 mr-4 relative" name="payable_invoices[{{$key}}][amount]" - dusk="underpayment-input" value="{{ $invoice->partial > 0 ? $invoice->partial : $invoice->balance }}"/> diff --git a/resources/views/portal/ninja2020/pre_payments/index.blade.php b/resources/views/portal/ninja2020/pre_payments/index.blade.php new file mode 100644 index 000000000000..8a3ff42c3daa --- /dev/null +++ b/resources/views/portal/ninja2020/pre_payments/index.blade.php @@ -0,0 +1,60 @@ +@extends('portal.ninja2020.layout.app') +@section('meta_title', ctrans('texts.pre_payment')) + +@section('body') +
+ @csrf + + + + +
+
+
+
+ +
+ + +
+
+

+ {{ ctrans('texts.payment') }} +

+
+ + @component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.payment_details')]) + + + @if($errors->has('notes')) +

{{ $errors->first('notes') }}

+ @endif + @endcomponent + + + @component('portal.ninja2020.components.general.card-element', ['title' => $title]) + + + @if($errors->has('amount')) +

{{ $errors->first('amount') }}

+ @endif + + @endcomponent + + + +
+ +
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/routes/client.php b/routes/client.php index e7439906f6e5..d1c6d1cb4c88 100644 --- a/routes/client.php +++ b/routes/client.php @@ -65,7 +65,7 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'domain_db','check_clie Route::post('payments/credit_response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'credit_response'])->name('payments.credit_response'); Route::get('payments', [App\Http\Controllers\ClientPortal\PaymentController::class, 'index'])->name('payments.index')->middleware('portal_enabled'); - Route::get('payments/{payment}', [App\Http\Controllers\ClientPortal\PaymentController::class, 'show'])->name('payments.show'); + Route::post('payments/{payment}', [App\Http\Controllers\ClientPortal\PaymentController::class, 'show'])->name('payments.show'); Route::get('pre_payments', [PrePaymentController::class, 'index'])->name('pre_payments.index')->middleware('portal_enabled'); Route::get('pre_payments/process', [PrePaymentController::class, 'process'])->name('pre_payments.process')->middleware('portal_enabled');