1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-08 12:12:48 +01:00

Merge branch 'master' of github.com:invoiceninja/invoiceninja

This commit is contained in:
Hillel Coren 2020-06-25 18:45:23 +03:00
commit 286a1a608f
11 changed files with 131 additions and 17 deletions

View File

@ -9,7 +9,10 @@
## [Hosted](https://www.invoiceninja.com) | [Self-Hosted](https://www.invoiceninja.org)
### We're on Slack, join us at [slack.invoiceninja.com](http://slack.invoiceninja.com)
### We're on Slack, join us at [slack.invoiceninja.com](http://slack.invoiceninja.com) or if you like [StackOverflow](https://stackoverflow.com/tags/invoice-ninja/)
Just make sure to add the `invoice-ninja` tag to your question.
#### We are currently looking for co-mainteners for the [dockerfiles repository](https://github.com/invoiceninja/dockerfiles), if you're interested please let us know
@ -19,8 +22,9 @@ The self-host zip includes all third party libraries whereas downloading the cod
* [Features](https://www.invoiceninja.com/invoicing-features/)
* [Videos](https://www.youtube.com/channel/UCXAHcBvhW05PDtWYIq7WDFA/videos)
* [User Guide](https://invoice-ninja.readthedocs.io/en/latest/)
* [User Guide](https://docs.invoiceninja.com/)
* [Support Forum](https://www.invoiceninja.com/forums/forum/support/)
* [StackOverflow](https://stackoverflow.com/tags/invoice-ninja/)
## Referral Program
* Earn 50% of Pro & Enterprise Plans up to 4 years - [Learn more](https://www.invoiceninja.com/referral-program/)
@ -32,11 +36,12 @@ The self-host zip includes all third party libraries whereas downloading the cod
## Installation Options
* [Ansible](https://github.com/invoiceninja/ansible-installer)
* [Self-Host Zip](https://invoice-ninja.readthedocs.io/en/latest/install.html)
* [Self-Host Zip](https://docs.invoiceninja.com/install.html)
* [Docker File](https://hub.docker.com/r/invoiceninja/invoiceninja/)
* [Cloudron](https://cloudron.io/store/com.invoiceninja.cloudronapp.html)
* [Softaculous](https://www.softaculous.com/apps/ecommerce/Invoice_Ninja)
* [Lando](https://github.com/invoiceninja/invoiceninja/issues/2880)
* [Yunohost](https://github.com/YunoHost-Apps/invoiceninja_ynh)
## Recommended Providers
* [Stripe](https://stripe.com/)

View File

@ -213,6 +213,7 @@ class StepsController extends BaseController
'company' => $this->getCompany(),
'users' => $this->getUsers(),
'tax_rates' => $this->getTaxRates(),
'payment_terms' => $this->getPaymentTerms(),
'clients' => $this->getClients(),
'products' => $this->getProducts(),
'invoices' => $this->getInvoices(),

View File

@ -4,6 +4,7 @@ namespace App\Models\Traits;
use Utils;
use Illuminate\Support\Facades\Storage;
use App\Models\Document;
/**
* Class HasLogo.

View File

@ -11,6 +11,7 @@ use App\Models\Document;
use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentMethod;
use App\Models\PaymentTerm;
use App\Models\Product;
use App\Models\TaxRate;
use App\Models\User;
@ -220,7 +221,7 @@ trait GenerateMigrationResources
'custom_value2' => $contact->custom_value2,
'email' => $contact->email,
'is_primary' => $contact->is_primary,
'send_invoice' => $contact->send_invoice,
'send_email' => $contact->send_invoice,
'confirmed' => $contact->confirmation_token ? true : false,
'last_login' => $contact->last_login,
'password' => $contact->password,
@ -365,7 +366,7 @@ trait GenerateMigrationResources
'client_id' => $invoice->client_id,
'user_id' => $invoice->user_id,
'company_id' => $invoice->account_id,
'status_id' => $invoice->invoice_status_id,
'status_id' => $this->transformStatusId($invoice->invoice_status_id),
'design_id' => $invoice->invoice_design_id,
'number' => $invoice->invoice_number,
'discount' => $invoice->discount,
@ -402,6 +403,50 @@ trait GenerateMigrationResources
return $invoices;
}
/*
define('INVOICE_STATUS_DRAFT', 1);
define('INVOICE_STATUS_SENT', 2);
define('INVOICE_STATUS_VIEWED', 3);
define('INVOICE_STATUS_APPROVED', 4);
define('INVOICE_STATUS_PARTIAL', 5);
define('INVOICE_STATUS_PAID', 6);
define('INVOICE_STATUS_OVERDUE', -1);
define('INVOICE_STATUS_UNPAID', -2);
const STATUS_DRAFT = 1;
const STATUS_SENT = 2;
const STATUS_PARTIAL = 3;
const STATUS_PAID = 4;
const STATUS_CANCELLED = 5;
const STATUS_REVERSED = 6;
*/
private function transformStatusId($status)
{
switch ($status) {
case 1:
return 1;
break;
case 2:
return 2;
break;
case 3:
return 2;
break;
case 4:
return 2;
break;
case 5:
return 3;
break;
case 6:
return 4;
break;
default:
return 2;
break;
}
}
public function getResourceInvitations($items, $resourceKeyId)
{
$transformed = [];
@ -507,6 +552,31 @@ trait GenerateMigrationResources
return $transformed;
}
/*
const STATUS_DRAFT = 1;
const STATUS_SENT = 2;
const STATUS_APPROVED = 3;
const STATUS_EXPIRED = -1;
*/
private function transformQuoteStatus($status)
{
switch ($status) {
case 1:
return 1;
break;
case 2:
return 2;
break;
case 4:
return 3;
break;
default:
return 2;
break;
}
}
public function getPayments()
{
$transformed = [];
@ -668,6 +738,30 @@ trait GenerateMigrationResources
return $transformed;
}
private function getPaymentTerms()
{
$payment_terms = PaymentTerm::where('account_id', 0)->orWhere('account_id', $this->account->id)->get();
$transformed = [];
foreach($payment_terms as $payment_term)
{
if($payment_term->num_days == -1)
$payment_term->num_days = 0;
$transformed[] = [
'user_id' => 0,
'company_id' => $this->account->id,
'num_days' => $payment_term->num_days,
'deleted_at' => $payment_term->deleted_at,
];
}
return $transformed;
}
private function convertMeta($payment_method)
{
$expiry = explode('-', $payment_method->expiration);

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -59,13 +59,17 @@
<div class="row existing-accounts">
<p>{{ trans('texts.login_or_existing') }}</p>
@foreach (App\Services\AuthService::$providers as $provider)
<div class="col-md-3 col-xs-6">
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-lg" title="{{ $provider }}"
<div class="col-md-12">
<a href="{{ URL::to('auth/' . $provider) }}" title="{{ $provider }}"
id="{{ strtolower($provider) }}LoginButton">
@if($provider == SOCIAL_GITHUB)
<i class="fa fa-github-alt"></i>
@else
<i class="fa fa-{{ strtolower($provider) }}"></i>
<img style="height: 6rem;" src="{{ asset('images/social/signin/btn_github_signin.png') }}">
@elseif($provider == SOCIAL_GOOGLE)
<img style="height: 6rem;" src="{{ asset('images/social/signin/btn_google_signin_dark_normal_web@2x.png') }}">
@elseif($provider == SOCIAL_LINKEDIN)
<img style="height: 6rem;" src="{{ asset('images/social/signin/btn_linkedin_signin.png') }}">
@elseif($provider === SOCIAL_FACEBOOK)
<img style="height: 6rem;" src="{{ asset('images/social/signin/btn_facebook_signin.png') }}">
@endif
</a>
</div>

View File

@ -172,7 +172,7 @@
}
submittedForm = true;
if (id) {
if (id || id===0) {
$('#public_id_{{ $entityType }}').val(id);
}
@ -180,7 +180,9 @@
sweetConfirm(function() {
$('#action_{{ $entityType }}').val(action);
$('form.listForm_{{ $entityType }}').submit();
});
}, null, null, function(){ // CancelCallback
submittedForm = false;
});
} else {
$('#action_{{ $entityType }}').val(action);
$('form.listForm_{{ $entityType }}').submit();

View File

@ -207,13 +207,20 @@ function handleSignedUp() {
</div>
<br/>&nbsp;<br/>
@if (Utils::isOAuthEnabled() && ! Auth::user()->registered)
<div class="col-md-5">
<div class="col-md-6">
@foreach (App\Services\AuthService::$providers as $provider)
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-block"
<a href="{{ URL::to('auth/' . $provider) }}" class=""
style="padding-top:10px;padding-bottom:10px;margin-top:10px;margin-bottom:10px"
id="{{ strtolower($provider) }}LoginButton">
<i class="fa fa-{{ strtolower($provider) }}"></i> &nbsp;
{{ $provider }}
@if($provider == SOCIAL_GITHUB)
<img style="height: 6rem;" src="{{ asset('images/btn_github_signin.png') }}">
@elseif($provider == SOCIAL_GOOGLE)
<img style="height: 6rem;" src="{{ asset('images/btn_google_signin_dark_normal_web@2x.png') }}">
@elseif($provider == SOCIAL_LINKEDIN)
<img style="height: 6rem;" src="{{ asset('images/btn_linkedin_signin.png') }}">
@elseif($provider === SOCIAL_FACEBOOK)
<img style="height: 6rem;" src="{{ asset('images/btn_facebook_signin.png') }}">
@endif
</a>
@endforeach
</div>
@ -222,7 +229,7 @@ function handleSignedUp() {
{{ trans('texts.or') }}
<div style="border-right:thin solid #CCCCCC;height:90px;width:8px;margin-top:10px;"></div>
</div>
<div class="col-md-6">
<div class="col-md-5">
@else
<div class="col-md-12">
@endif