mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-09-20 00:11:35 +02:00
bug fixes
This commit is contained in:
parent
2b5f42e5ac
commit
b271a71586
@ -68,7 +68,7 @@ class AccountController extends \BaseController {
|
|||||||
if ($section == ACCOUNT_DETAILS)
|
if ($section == ACCOUNT_DETAILS)
|
||||||
{
|
{
|
||||||
$account = Account::with('users')->findOrFail(Auth::user()->account_id);
|
$account = Account::with('users')->findOrFail(Auth::user()->account_id);
|
||||||
$countries = Country::orderBy('name')->get();
|
$countries = Country::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get();
|
||||||
|
|
||||||
return View::make('accounts.details', array('account'=>$account, 'countries'=>$countries));
|
return View::make('accounts.details', array('account'=>$account, 'countries'=>$countries));
|
||||||
}
|
}
|
||||||
@ -88,11 +88,11 @@ class AccountController extends \BaseController {
|
|||||||
'account' => $account,
|
'account' => $account,
|
||||||
'accountGateway' => $accountGateway,
|
'accountGateway' => $accountGateway,
|
||||||
'config' => json_decode($config),
|
'config' => json_decode($config),
|
||||||
'gateways' => Gateway::all(),
|
'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE)->get(),
|
||||||
'timezones' => Timezone::orderBy('location')->get(),
|
'timezones' => Timezone::remember(DEFAULT_QUERY_CACHE)->orderBy('location')->get(),
|
||||||
'dateFormats' => DateFormat::all(),
|
'dateFormats' => DateFormat::remember(DEFAULT_QUERY_CACHE)->get(),
|
||||||
'datetimeFormats' => DatetimeFormat::all(),
|
'datetimeFormats' => DatetimeFormat::remember(DEFAULT_QUERY_CACHE)->get(),
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($data['gateways'] as $gateway)
|
foreach ($data['gateways'] as $gateway)
|
||||||
|
@ -86,10 +86,10 @@ class ClientController extends \BaseController {
|
|||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
'url' => 'clients',
|
'url' => 'clients',
|
||||||
'title' => '- New Client',
|
'title' => '- New Client',
|
||||||
'clientSizes' => ClientSize::orderBy('id')->get(),
|
'clientSizes' => ClientSize::remember(DEFAULT_QUERY_CACHE)->orderBy('id')->get(),
|
||||||
'clientIndustries' => ClientIndustry::orderBy('name')->get(),
|
'clientIndustries' => ClientIndustry::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'countries' => Country::orderBy('name')->get());
|
'countries' => Country::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get());
|
||||||
|
|
||||||
return View::make('clients.edit', $data);
|
return View::make('clients.edit', $data);
|
||||||
}
|
}
|
||||||
@ -138,10 +138,10 @@ class ClientController extends \BaseController {
|
|||||||
'method' => 'PUT',
|
'method' => 'PUT',
|
||||||
'url' => 'clients/' . $publicId,
|
'url' => 'clients/' . $publicId,
|
||||||
'title' => '- ' . $client->name,
|
'title' => '- ' . $client->name,
|
||||||
'clientSizes' => ClientSize::orderBy('id')->get(),
|
'clientSizes' => ClientSize::remember(DEFAULT_QUERY_CACHE)->orderBy('id')->get(),
|
||||||
'clientIndustries' => ClientIndustry::orderBy('name')->get(),
|
'clientIndustries' => ClientIndustry::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'countries' => Country::orderBy('name')->get());
|
'countries' => Country::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get());
|
||||||
return View::make('clients.edit', $data);
|
return View::make('clients.edit', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ class CreditController extends \BaseController {
|
|||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
'url' => 'credits',
|
'url' => 'credits',
|
||||||
'title' => '- New Credit',
|
'title' => '- New Credit',
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
||||||
|
|
||||||
return View::make('credits.edit', $data);
|
return View::make('credits.edit', $data);
|
||||||
@ -91,7 +91,7 @@ class CreditController extends \BaseController {
|
|||||||
'method' => 'PUT',
|
'method' => 'PUT',
|
||||||
'url' => 'credits/' . $publicId,
|
'url' => 'credits/' . $publicId,
|
||||||
'title' => '- Edit Credit',
|
'title' => '- Edit Credit',
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
||||||
return View::make('credit.edit', $data);
|
return View::make('credit.edit', $data);
|
||||||
}
|
}
|
||||||
|
@ -310,8 +310,6 @@ class InvoiceController extends \BaseController {
|
|||||||
'invoice' => $invoice,
|
'invoice' => $invoice,
|
||||||
'method' => 'PUT',
|
'method' => 'PUT',
|
||||||
'invitationContactIds' => $contactIds,
|
'invitationContactIds' => $contactIds,
|
||||||
'clientSizes' => ClientSize::orderBy('id')->get(),
|
|
||||||
'clientIndustries' => ClientIndustry::orderBy('name')->get(),
|
|
||||||
'url' => 'invoices/' . $publicId,
|
'url' => 'invoices/' . $publicId,
|
||||||
'title' => '- ' . $invoice->invoice_number,
|
'title' => '- ' . $invoice->invoice_number,
|
||||||
'client' => $invoice->client);
|
'client' => $invoice->client);
|
||||||
@ -335,8 +333,6 @@ class InvoiceController extends \BaseController {
|
|||||||
'invoiceNumber' => $invoiceNumber,
|
'invoiceNumber' => $invoiceNumber,
|
||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
'url' => 'invoices',
|
'url' => 'invoices',
|
||||||
'clientSizes' => ClientSize::orderBy('id')->get(),
|
|
||||||
'clientIndustries' => ClientIndustry::orderBy('name')->get(),
|
|
||||||
'title' => '- New Invoice',
|
'title' => '- New Invoice',
|
||||||
'client' => $client,
|
'client' => $client,
|
||||||
'items' => json_decode(Input::old('items')));
|
'items' => json_decode(Input::old('items')));
|
||||||
@ -349,10 +345,12 @@ class InvoiceController extends \BaseController {
|
|||||||
return [
|
return [
|
||||||
'account' => Auth::user()->account,
|
'account' => Auth::user()->account,
|
||||||
'products' => Product::scope()->get(array('product_key','notes','cost','qty')),
|
'products' => Product::scope()->get(array('product_key','notes','cost','qty')),
|
||||||
'countries' => Country::orderBy('name')->get(),
|
'countries' => Country::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'clients' => Client::scope()->with('contacts')->orderBy('name')->get(),
|
'clients' => Client::scope()->with('contacts')->orderBy('name')->get(),
|
||||||
'taxRates' => TaxRate::scope()->orderBy('name')->get(),
|
'taxRates' => TaxRate::scope()->orderBy('name')->get(),
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
|
'clientSizes' => ClientSize::remember(DEFAULT_QUERY_CACHE)->orderBy('id')->get(),
|
||||||
|
'clientIndustries' => ClientIndustry::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'frequencies' => array(
|
'frequencies' => array(
|
||||||
1 => 'Weekly',
|
1 => 'Weekly',
|
||||||
2 => 'Two weeks',
|
2 => 'Two weeks',
|
||||||
|
@ -80,7 +80,7 @@ class PaymentController extends \BaseController
|
|||||||
'method' => 'POST',
|
'method' => 'POST',
|
||||||
'url' => 'payments',
|
'url' => 'payments',
|
||||||
'title' => '- New Payment',
|
'title' => '- New Payment',
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
||||||
|
|
||||||
return View::make('payments.edit', $data);
|
return View::make('payments.edit', $data);
|
||||||
@ -97,7 +97,7 @@ class PaymentController extends \BaseController
|
|||||||
'method' => 'PUT',
|
'method' => 'PUT',
|
||||||
'url' => 'payments/' . $publicId,
|
'url' => 'payments/' . $publicId,
|
||||||
'title' => '- Edit Payment',
|
'title' => '- Edit Payment',
|
||||||
'currencies' => Currency::orderBy('name')->get(),
|
'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(),
|
||||||
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
|
||||||
return View::make('payments.edit', $data);
|
return View::make('payments.edit', $data);
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,18 @@ class Client extends EntityModel
|
|||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDisplayName()
|
||||||
|
{
|
||||||
|
if ($this->name)
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
$contact = $this->contacts()->first();
|
||||||
|
|
||||||
|
return $contact->getFullName();
|
||||||
|
}
|
||||||
|
|
||||||
public function getEntityType()
|
public function getEntityType()
|
||||||
{
|
{
|
||||||
return ENTITY_CLIENT;
|
return ENTITY_CLIENT;
|
||||||
|
@ -180,3 +180,5 @@ define('DEFAULT_CURRENCY', 1); // US Dollar
|
|||||||
define('DEFAULT_DATE_FORMAT', 'M j, Y');
|
define('DEFAULT_DATE_FORMAT', 'M j, Y');
|
||||||
define('DEFAULT_DATE_PICKER_FORMAT', 'yyyy-mm-dd');
|
define('DEFAULT_DATE_PICKER_FORMAT', 'yyyy-mm-dd');
|
||||||
define('DEFAULT_DATETIME_FORMAT', 'F j, Y, g:i a');
|
define('DEFAULT_DATETIME_FORMAT', 'F j, Y, g:i a');
|
||||||
|
|
||||||
|
define('DEFAULT_QUERY_CACHE', 120);
|
@ -151,7 +151,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="footer">
|
<div class="footer" style="padding-top: 32px">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
{{ Former::open('user/setTheme')->addClass('themeForm') }}
|
{{ Former::open('user/setTheme')->addClass('themeForm') }}
|
||||||
<div style="display:none">
|
<div style="display:none">
|
||||||
@ -160,11 +160,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn-group tr-action dropup">
|
<div class="btn-group tr-action dropup">
|
||||||
<button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown">
|
<button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown">
|
||||||
Theme <span class="caret"></span>
|
Site Theme <span class="caret"></span>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu" role="menu">
|
<ul class="dropdown-menu" role="menu">
|
||||||
<li><a href="#" onclick="setTheme(0)">Default</a></li>
|
<li><a href="#" onclick="setTheme(0)">Default</a></li>
|
||||||
@foreach (Theme::all() as $theme)
|
@foreach (Theme::remember(DEFAULT_QUERY_CACHE)->get() as $theme)
|
||||||
<li><a href="#" onclick="setTheme({{ $theme->id }})">{{ ucwords($theme->name) }}</a></li>
|
<li><a href="#" onclick="setTheme({{ $theme->id }})">{{ ucwords($theme->name) }}</a></li>
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
@ -172,7 +172,7 @@
|
|||||||
{{ Former::close() }}
|
{{ Former::close() }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Powered by {{ link_to('https://github.com/hillelcoren/invoice-ninja', 'InvoiceNinja', array('target'=>'_blank')) }}
|
Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice-ninja', 'open source', array('target'=>'_blank')) }}, email us at {{ link_to('mailto:contact@invoiceninja.com', 'contact@invoiceninja.com') }}.
|
||||||
<p class="text-danger">This is a demo site, the data is erased.</p>
|
<p class="text-danger">This is a demo site, the data is erased.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,6 +19,17 @@
|
|||||||
|
|
||||||
<div class="row" style="min-height:195px" onkeypress="formEnterClick(event)">
|
<div class="row" style="min-height:195px" onkeypress="formEnterClick(event)">
|
||||||
<div class="col-md-5" id="col_1">
|
<div class="col-md-5" id="col_1">
|
||||||
|
|
||||||
|
@if ($invoice && $invoice->isSent())
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="client" class="control-label col-lg-4 col-sm-4">Client</label>
|
||||||
|
<div class="col-lg-8 col-sm-8" style="padding-top: 7px">
|
||||||
|
<a href="#" data-bind="click: showClientForm">{{ $client->getDisplayName() }}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display:none">
|
||||||
|
@endif
|
||||||
|
|
||||||
{{ Former::select('client')->addOption('', '')->data_bind("dropdown: client")
|
{{ Former::select('client')->addOption('', '')->data_bind("dropdown: client")
|
||||||
->addGroupClass('client_select closer-row') }}
|
->addGroupClass('client_select closer-row') }}
|
||||||
|
|
||||||
@ -28,12 +39,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@if ($invoice && $invoice->isSent())
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
<div data-bind="with: client">
|
<div data-bind="with: client">
|
||||||
<div class="form-group" data-bind="visible: contacts().length > 1, foreach: contacts">
|
<div class="form-group" data-bind="visible: contacts().length > 1, foreach: contacts">
|
||||||
<div class="col-lg-8 col-lg-offset-4">
|
<div class="col-lg-8 col-lg-offset-4">
|
||||||
<label for="test" class="checkbox" data-bind="attr: {for: $index() + '_check'}">
|
<label for="test" class="checkbox" data-bind="attr: {for: $index() + '_check'}">
|
||||||
<input type="checkbox" value="1" data-bind="checked: send_invoice, attr: {id: $index() + '_check'}">
|
<input type="checkbox" value="1" data-bind="checked: send_invoice, attr: {id: $index() + '_check'}">
|
||||||
<span data-bind="text: fullName"/>
|
<span data-bind="text: displayName"/>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -111,13 +126,13 @@
|
|||||||
<textarea data-bind="value: wrapped_notes, valueUpdate: 'afterkeydown'" rows="1" cols="60" style="resize: none;" class="form-control word-wrap" onchange="refreshPDF()"></textarea>
|
<textarea data-bind="value: wrapped_notes, valueUpdate: 'afterkeydown'" rows="1" cols="60" style="resize: none;" class="form-control word-wrap" onchange="refreshPDF()"></textarea>
|
||||||
</td>
|
</td>
|
||||||
<td style="width:100px">
|
<td style="width:100px">
|
||||||
<input onkeyup="onItemChange()" data-bind="value: cost, valueUpdate: 'afterkeydown'" style="text-align: right" class="form-control" onchange="refreshPDF()"//>
|
<input onkeyup="onItemChange()" data-bind="value: prettyCost, valueUpdate: 'afterkeydown'" style="text-align: right" class="form-control" onchange="refreshPDF()"//>
|
||||||
</td>
|
</td>
|
||||||
<td style="width:80px">
|
<td style="width:80px">
|
||||||
<input onkeyup="onItemChange()" data-bind="value: prettyQty, valueUpdate: 'afterkeydown'" style="text-align: right" class="form-control" onchange="refreshPDF()"//>
|
<input onkeyup="onItemChange()" data-bind="value: prettyQty, valueUpdate: 'afterkeydown'" style="text-align: right" class="form-control" onchange="refreshPDF()"//>
|
||||||
</td>
|
</td>
|
||||||
<td style="width:120px; vertical-align:middle" data-bind="visible: $parent.tax_rates().length > 1">
|
<td style="width:120px; vertical-align:middle" data-bind="visible: $parent.tax_rates().length > 1">
|
||||||
<select class="form-control" style="width:100%" data-bind="value: tax, options: $parent.tax_rates, optionsText: 'displayName'"></select>
|
<select class="form-control" style="width:100%" data-bind="value: tax, options: $parent.tax_rates, optionsText: 'displayName'" onchange="refreshPDF()"></select>
|
||||||
</td>
|
</td>
|
||||||
<td style="width:100px;text-align: right;padding-top:9px !important">
|
<td style="width:100px;text-align: right;padding-top:9px !important">
|
||||||
<span data-bind="text: total"></span>
|
<span data-bind="text: total"></span>
|
||||||
@ -187,7 +202,7 @@
|
|||||||
|
|
||||||
<!-- <textarea rows="20" cols="120" id="pdfText" onkeyup="runCode()"></textarea> -->
|
<!-- <textarea rows="20" cols="120" id="pdfText" onkeyup="runCode()"></textarea> -->
|
||||||
<!-- <iframe frameborder="1" width="100%" height="600" style="display:block;margin: 0 auto"></iframe> -->
|
<!-- <iframe frameborder="1" width="100%" height="600" style="display:block;margin: 0 auto"></iframe> -->
|
||||||
<iframe id="theIFrame" frameborder="1" width="100%" height="500"></iframe>
|
<iframe id="theFrame" style="display:none" frameborder="1" width="100%" height="500"></iframe>
|
||||||
<canvas id="theCanvas" style="display:none;width:100%;border:solid 1px #CCCCCC;"></canvas>
|
<canvas id="theCanvas" style="display:none;width:100%;border:solid 1px #CCCCCC;"></canvas>
|
||||||
|
|
||||||
|
|
||||||
@ -196,7 +211,7 @@
|
|||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title" id="clientModalLabel">New Client</h4>
|
<h4 class="modal-title" id="clientModalLabel">Client</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container" style="width: 100%">
|
<div class="container" style="width: 100%">
|
||||||
@ -321,8 +336,6 @@
|
|||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
//$('form').change(refreshPDF);
|
|
||||||
|
|
||||||
$('#country_id').combobox();
|
$('#country_id').combobox();
|
||||||
$('[rel=tooltip]').tooltip();
|
$('[rel=tooltip]').tooltip();
|
||||||
|
|
||||||
@ -365,7 +378,7 @@
|
|||||||
@if ($client)
|
@if ($client)
|
||||||
$('#invoice_number').focus();
|
$('#invoice_number').focus();
|
||||||
@else
|
@else
|
||||||
//$('[name="client_combobox"]').focus();
|
$('.client_select input.form-control').focus();
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
$('#clientModal').on('shown.bs.modal', function () {
|
$('#clientModal').on('shown.bs.modal', function () {
|
||||||
@ -392,7 +405,6 @@
|
|||||||
$('label.radio').addClass('radio-inline');
|
$('label.radio').addClass('radio-inline');
|
||||||
|
|
||||||
applyComboboxListeners();
|
applyComboboxListeners();
|
||||||
refreshPDF();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function applyComboboxListeners() {
|
function applyComboboxListeners() {
|
||||||
@ -437,28 +449,28 @@
|
|||||||
console.log("refreshPDF");
|
console.log("refreshPDF");
|
||||||
var invoice = createInvoiceModel();
|
var invoice = createInvoiceModel();
|
||||||
var doc = generatePDF(invoice);
|
var doc = generatePDF(invoice);
|
||||||
|
|
||||||
/*
|
|
||||||
var string = doc.output('dataurlstring');
|
|
||||||
var pdfAsArray = convertDataURIToBinary(string);
|
|
||||||
PDFJS.getDocument(pdfAsArray).then(function getPdfHelloWorld(pdf) {
|
|
||||||
|
|
||||||
pdf.getPage(1).then(function getPageHelloWorld(page) {
|
|
||||||
var scale = 1.5;
|
|
||||||
var viewport = page.getViewport(scale);
|
|
||||||
|
|
||||||
var canvas = document.getElementById('theCanvas');
|
|
||||||
var context = canvas.getContext('2d');
|
|
||||||
canvas.height = viewport.height;
|
|
||||||
canvas.width = viewport.width;
|
|
||||||
|
|
||||||
page.render({canvasContext: context, viewport: viewport});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
var string = doc.output('datauristring');
|
var string = doc.output('datauristring');
|
||||||
$('#theIFrame').attr('src', string);
|
|
||||||
|
if (isFirefox || isChrome) {
|
||||||
|
$('#theFrame').attr('src', string).show();
|
||||||
|
} else {
|
||||||
|
var pdfAsArray = convertDataURIToBinary(string);
|
||||||
|
PDFJS.getDocument(pdfAsArray).then(function getPdfHelloWorld(pdf) {
|
||||||
|
|
||||||
|
pdf.getPage(1).then(function getPageHelloWorld(page) {
|
||||||
|
var scale = 1.5;
|
||||||
|
var viewport = page.getViewport(scale);
|
||||||
|
|
||||||
|
var canvas = document.getElementById('theCanvas');
|
||||||
|
var context = canvas.getContext('2d');
|
||||||
|
canvas.height = viewport.height;
|
||||||
|
canvas.width = viewport.width;
|
||||||
|
|
||||||
|
page.render({canvasContext: context, viewport: viewport});
|
||||||
|
$('#theCanvas').show();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDownloadClick() {
|
function onDownloadClick() {
|
||||||
@ -496,11 +508,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function formEnterClick(event) {
|
function formEnterClick(event) {
|
||||||
|
console.log('form enter click');
|
||||||
|
|
||||||
if (event.keyCode === 13){
|
if (event.keyCode === 13){
|
||||||
if (event.target.type == 'textarea') {
|
if (event.target.type == 'textarea') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
$('.main_form').submit();
|
$('.main_form').submit();
|
||||||
return false;
|
return false;
|
||||||
@ -508,6 +521,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function clientModalEnterClick(event) {
|
function clientModalEnterClick(event) {
|
||||||
|
console.log('client form enter click');
|
||||||
if (event.keyCode === 13){
|
if (event.keyCode === 13){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
model.clientFormComplete();
|
model.clientFormComplete();
|
||||||
@ -516,6 +530,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function taxModalEnterClick(event) {
|
function taxModalEnterClick(event) {
|
||||||
|
console.log('tax form enter click');
|
||||||
if (event.keyCode === 13){
|
if (event.keyCode === 13){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
model.taxFormComplete();
|
model.taxFormComplete();
|
||||||
@ -777,8 +792,8 @@
|
|||||||
ko.mapping.fromJS(data, {}, this);
|
ko.mapping.fromJS(data, {}, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.fullName = ko.computed(function() {
|
self.displayName = ko.computed(function() {
|
||||||
return self.first_name() + ' ' + self.last_name();
|
return self.first_name() + ' ' + self.last_name() + ' - ' + self.email();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -828,8 +843,8 @@
|
|||||||
var self = this;
|
var self = this;
|
||||||
this.product_key = ko.observable('');
|
this.product_key = ko.observable('');
|
||||||
this.notes = ko.observable('');
|
this.notes = ko.observable('');
|
||||||
this.cost = ko.observable();
|
this.cost = ko.observable(0);
|
||||||
this.qty = ko.observable();
|
this.qty = ko.observable(0);
|
||||||
this.tax = ko.observable();
|
this.tax = ko.observable();
|
||||||
this.actionsVisible = ko.observable(false);
|
this.actionsVisible = ko.observable(false);
|
||||||
|
|
||||||
@ -843,6 +858,16 @@
|
|||||||
owner: this
|
owner: this
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.prettyCost = ko.computed({
|
||||||
|
read: function () {
|
||||||
|
return this.cost() ? this.cost() : '';
|
||||||
|
},
|
||||||
|
write: function (value) {
|
||||||
|
this.cost(value);
|
||||||
|
},
|
||||||
|
owner: this
|
||||||
|
});
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
ko.mapping.fromJS(data, {}, this);
|
ko.mapping.fromJS(data, {}, this);
|
||||||
if (this.cost()) this.cost(formatMoney(this.cost(), model.currency_id(), true));
|
if (this.cost()) this.cost(formatMoney(this.cost(), model.currency_id(), true));
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div><p> </p>
|
<div class="clearfix"></div><p> </p>
|
||||||
|
|
||||||
<!-- <iframe frameborder="1" width="100%" height="650" style="display:block;margin: 0 auto"></iframe> -->
|
<iframe id="theFrame" frameborder="1" width="100%" height="650" style="display:none;margin: 0 auto"></iframe>
|
||||||
<canvas id="the-canvas" style="width:100%;border:solid 1px #CCCCCC;"></canvas>
|
<canvas id="theCanvas" style="display:none;width:100%;border:solid 1px #CCCCCC;"></canvas>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
@ -31,24 +31,29 @@
|
|||||||
@endif
|
@endif
|
||||||
var doc = generatePDF(invoice);
|
var doc = generatePDF(invoice);
|
||||||
var string = doc.output('datauristring');
|
var string = doc.output('datauristring');
|
||||||
//$('iframe').attr('src', string);
|
alert(isFirefox);
|
||||||
|
alert(isChrome);
|
||||||
|
if (isFirefox || isChrome) {
|
||||||
|
$('#theFrame').attr('src', string).show();
|
||||||
|
} else {
|
||||||
|
alert(1);
|
||||||
|
var pdfAsArray = convertDataURIToBinary(string);
|
||||||
|
PDFJS.getDocument(pdfAsArray).then(function getPdfHelloWorld(pdf) {
|
||||||
|
|
||||||
//console.log(string);
|
pdf.getPage(1).then(function getPageHelloWorld(page) {
|
||||||
var pdfAsArray = convertDataURIToBinary(string);
|
var scale = 1.5;
|
||||||
PDFJS.getDocument(pdfAsArray).then(function getPdfHelloWorld(pdf) {
|
var viewport = page.getViewport(scale);
|
||||||
|
|
||||||
pdf.getPage(1).then(function getPageHelloWorld(page) {
|
var canvas = document.getElementById('theCanvas');
|
||||||
var scale = 1.5;
|
var context = canvas.getContext('2d');
|
||||||
var viewport = page.getViewport(scale);
|
canvas.height = viewport.height;
|
||||||
|
canvas.width = viewport.width;
|
||||||
|
|
||||||
var canvas = document.getElementById('the-canvas');
|
page.render({canvasContext: context, viewport: viewport});
|
||||||
var context = canvas.getContext('2d');
|
$('#theCanvas').show();
|
||||||
canvas.height = viewport.height;
|
});
|
||||||
canvas.width = viewport.width;
|
});
|
||||||
|
}
|
||||||
page.render({canvasContext: context, viewport: viewport});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function onDownloadClick() {
|
function onDownloadClick() {
|
||||||
|
@ -23,6 +23,20 @@
|
|||||||
{{ Former::actions( Button::primary_submit('Generate') ) }}
|
{{ Former::actions( Button::primary_submit('Generate') ) }}
|
||||||
{{ Former::close() }}
|
{{ Former::close() }}
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
<div style="padding-bottom:8px">
|
||||||
|
<div style="float:left; height:22px; width:60px; background-color:rgba(78,205,196,.5); border: 1px solid rgba(78,205,196,1)"></div>
|
||||||
|
<div style="vertical-align: middle"> Invoices</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding-bottom:8px; clear:both">
|
||||||
|
<div style="float:left; height:22px; width:60px; background-color:rgba(255,107,107,.5); border: 1px solid rgba(255,107,107,1)"></div>
|
||||||
|
<div style="vertical-align: middle"> Payments</div>
|
||||||
|
</div>
|
||||||
|
<div style="clear:both">
|
||||||
|
<div style="float:left; height:22px; width:60px; background-color:rgba(199,244,100,.5); border: 1px solid rgba(199,244,100,1)"></div>
|
||||||
|
<div style="vertical-align: middle"> Credits</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-9">
|
<div class="col-lg-9">
|
||||||
<canvas id="monthly-reports" width="850" height="400"></canvas>
|
<canvas id="monthly-reports" width="850" height="400"></canvas>
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
// http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
|
||||||
|
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
||||||
|
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
|
||||||
|
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
|
||||||
|
var isChrome = !!window.chrome && !isOpera; // Chrome 1+
|
||||||
|
var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
|
||||||
|
|
||||||
function generatePDF(invoice) {
|
function generatePDF(invoice) {
|
||||||
var currencyId = invoice.currency_id;
|
var currencyId = invoice.currency_id;
|
||||||
var invoiceNumber = invoice.invoice_number;
|
var invoiceNumber = invoice.invoice_number;
|
||||||
@ -52,8 +59,8 @@ function generatePDF(invoice) {
|
|||||||
doc.setFillColor(230,230,230);
|
doc.setFillColor(230,230,230);
|
||||||
var x1 = headerLeft - 6;
|
var x1 = headerLeft - 6;
|
||||||
var y1 = headerTop + rowHeight + 4;
|
var y1 = headerTop + rowHeight + 4;
|
||||||
var x2 = headerRight - headerLeft + 12;
|
var x2 = headerRight - headerLeft + 11;
|
||||||
var y2 = rowHeight + 2;
|
var y2 = rowHeight + 1;
|
||||||
if (invoice.po_number) {
|
if (invoice.po_number) {
|
||||||
y1 += rowHeight;
|
y1 += rowHeight;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user