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:
commit
286a1a608f
11
README.md
11
README.md
@ -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/)
|
||||
|
@ -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(),
|
||||
|
@ -4,6 +4,7 @@ namespace App\Models\Traits;
|
||||
|
||||
use Utils;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use App\Models\Document;
|
||||
|
||||
/**
|
||||
* Class HasLogo.
|
||||
|
@ -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);
|
||||
|
BIN
public/images/social/signin/btn_facebook_signin.png
Normal file
BIN
public/images/social/signin/btn_facebook_signin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
BIN
public/images/social/signin/btn_github_signin.png
Normal file
BIN
public/images/social/signin/btn_github_signin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
BIN
public/images/social/signin/btn_linkedin_signin.png
Normal file
BIN
public/images/social/signin/btn_linkedin_signin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -207,13 +207,20 @@ function handleSignedUp() {
|
||||
</div>
|
||||
<br/> <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>
|
||||
{{ $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
|
||||
|
Loading…
Reference in New Issue
Block a user