mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 13:12:50 +01:00
Merge pull request #7197 from turbo124/v5-develop
Add shareable links to client portal
This commit is contained in:
commit
0f0b1d96f2
@ -30,9 +30,12 @@ class CreditController extends Controller
|
||||
{
|
||||
set_time_limit(0);
|
||||
|
||||
$data = ['credit' => $credit];
|
||||
$invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first();
|
||||
|
||||
$invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first();
|
||||
$data = [
|
||||
'credit' => $credit,
|
||||
'key' => $invitation->key
|
||||
];
|
||||
|
||||
if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) {
|
||||
|
||||
|
@ -74,12 +74,12 @@ class InvoiceController extends Controller
|
||||
|
||||
$data = [
|
||||
'invoice' => $invoice,
|
||||
'key' => $invitation->key
|
||||
];
|
||||
|
||||
if ($request->query('mode') === 'fullscreen') {
|
||||
return render('invoices.show-fullscreen', $data);
|
||||
}
|
||||
// $request->fullUrlWithQuery(['q' => null]);
|
||||
return $this->render('invoices.show', $data);
|
||||
}
|
||||
|
||||
|
@ -58,12 +58,14 @@ class QuoteController extends Controller
|
||||
{
|
||||
/* If the quote is expired, convert the status here */
|
||||
|
||||
$data = [
|
||||
'quote' => $quote,
|
||||
];
|
||||
|
||||
$invitation = $quote->invitations()->where('client_contact_id', auth()->user()->id)->first();
|
||||
|
||||
$data = [
|
||||
'quote' => $quote,
|
||||
'key' => $invitation->key,
|
||||
];
|
||||
|
||||
if ($invitation && auth()->guard('contact') && ! request()->has('silent') && ! $invitation->viewed_date) {
|
||||
|
||||
$invitation->markViewed();
|
||||
|
@ -29,7 +29,7 @@ class PayNowDropdown extends Component
|
||||
|
||||
$this->total = $total;
|
||||
|
||||
$this->methods = auth()->user()->client->service()->getPaymentMethods($total);
|
||||
$this->methods = auth()->guard('contact')->user()->client->service()->getPaymentMethods($total);
|
||||
}
|
||||
|
||||
public function render()
|
||||
|
@ -17,6 +17,9 @@ use App\Factory\QuoteFactory;
|
||||
use App\Http\Requests\Invoice\StoreInvoiceRequest;
|
||||
use App\Http\Requests\Quote\StoreQuoteRequest;
|
||||
use App\Import\ImportException;
|
||||
use App\Jobs\Mail\NinjaMailerJob;
|
||||
use App\Jobs\Mail\NinjaMailerObject;
|
||||
use App\Mail\Import\ImportCompleted;
|
||||
use App\Models\Company;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Quote;
|
||||
@ -493,4 +496,20 @@ class BaseImport
|
||||
return $this->company->owner()->id;
|
||||
}
|
||||
}
|
||||
|
||||
protected function finalizeImport()
|
||||
{
|
||||
$data = [
|
||||
'errors' => $this->error_array,
|
||||
'company' => $this->company,
|
||||
];
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new ImportCompleted($this->company, $data);
|
||||
$nmo->company = $this->company;
|
||||
$nmo->settings = $this->company->settings;
|
||||
$nmo->to_user = $this->company->owner();
|
||||
|
||||
NinjaMailerJob::dispatch($nmo);
|
||||
}
|
||||
}
|
||||
|
@ -61,9 +61,11 @@ class Csv extends BaseImport implements ImportInterface
|
||||
}
|
||||
|
||||
//collate any errors
|
||||
|
||||
$this->finalizeImport();
|
||||
}
|
||||
|
||||
private function client()
|
||||
public function client()
|
||||
{
|
||||
$entity_type = 'client';
|
||||
|
||||
@ -90,7 +92,7 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['clients'] = $client_count;
|
||||
}
|
||||
|
||||
private function product()
|
||||
public function product()
|
||||
{
|
||||
$entity_type = 'product';
|
||||
|
||||
@ -117,7 +119,7 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['products'] = $product_count;
|
||||
}
|
||||
|
||||
private function invoice()
|
||||
public function invoice()
|
||||
{
|
||||
$entity_type = 'invoice';
|
||||
|
||||
@ -144,7 +146,7 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['invoices'] = $invoice_count;
|
||||
}
|
||||
|
||||
private function payment()
|
||||
public function payment()
|
||||
{
|
||||
$entity_type = 'payment';
|
||||
|
||||
@ -171,7 +173,7 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['payments'] = $payment_count;
|
||||
}
|
||||
|
||||
private function vendor()
|
||||
public function vendor()
|
||||
{
|
||||
$entity_type = 'vendor';
|
||||
|
||||
@ -198,7 +200,7 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['vendors'] = $vendor_count;
|
||||
}
|
||||
|
||||
private function expense()
|
||||
public function expense()
|
||||
{
|
||||
$entity_type = 'expense';
|
||||
|
||||
@ -225,12 +227,12 @@ class Csv extends BaseImport implements ImportInterface
|
||||
$this->entity_count['expenses'] = $expense_count;
|
||||
}
|
||||
|
||||
private function quote()
|
||||
public function quote()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private function task()
|
||||
public function task()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -18,4 +18,17 @@ interface ImportInterface
|
||||
public function preTransform(array $data, string $entity_type);
|
||||
|
||||
public function transform(array $data);
|
||||
|
||||
public function client();
|
||||
|
||||
public function product();
|
||||
|
||||
public function invoice();
|
||||
|
||||
public function payment();
|
||||
|
||||
public function vendor();
|
||||
|
||||
public function expense();
|
||||
|
||||
}
|
@ -96,7 +96,7 @@ class GatewayType extends StaticModel
|
||||
case self::FPX:
|
||||
return ctrans('texts.fpx');
|
||||
default:
|
||||
return 'Undefined.';
|
||||
return ' ';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -119,4 +119,30 @@ class AuthorizeCreateCustomer
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// This is how we can harvest client profiles and attach them within Invoice Ninja
|
||||
// $request = new net\authorize\api\contract\v1\GetCustomerProfileRequest();
|
||||
// $request->setMerchantAuthentication($driver->merchant_authentication);
|
||||
// $request->setCustomerProfileId($gateway_customer_reference);
|
||||
// $controller = new net\authorize\api\controller\GetCustomerProfileController($request);
|
||||
// $response = $controller->executeWithApiResponse($driver->mode());
|
||||
|
||||
// if (($response != null) && ($response->getMessages()->getResultCode() == "Ok") )
|
||||
// {
|
||||
// echo "GetCustomerProfile SUCCESS : " . "\n";
|
||||
// $profileSelected = $response->getProfile();
|
||||
// $paymentProfilesSelected = $profileSelected->getPaymentProfiles();
|
||||
// echo "Profile Has " . count($paymentProfilesSelected). " Payment Profiles" . "\n";
|
||||
|
||||
// foreach ($profileSelected->getPaymentProfiles() as $paymentProfile) {
|
||||
// echo "\nCustomer Profile ID: " . $paymentProfile->getCustomerProfileId() . "\n";
|
||||
// echo "Payment profile ID: " . $paymentProfile->getCustomerPaymentProfileId() . "\n";
|
||||
// echo "Credit Card Number: " . $paymentProfile->getPayment()->getCreditCard()->getCardNumber() . "\n";
|
||||
// if ($paymentProfile->getBillTo() != null) {
|
||||
// echo "First Name in Billing Address: " . $paymentProfile->getBillTo()->getFirstName() . "\n";
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -170,6 +170,7 @@ class CreditCard implements MethodInterface
|
||||
|
||||
private function completePayment($method, PaymentResponseRequest $request)
|
||||
{
|
||||
|
||||
$payment = new Payment($method, $this->checkout->payment_hash->data->currency);
|
||||
$payment->amount = $this->checkout->payment_hash->data->value;
|
||||
$payment->reference = $this->checkout->getDescription();
|
||||
@ -178,6 +179,10 @@ class CreditCard implements MethodInterface
|
||||
'email' => $this->checkout->client->present()->email(),
|
||||
];
|
||||
|
||||
$payment->metadata = [
|
||||
'udf1' => "Invoice Ninja",
|
||||
];
|
||||
|
||||
$this->checkout->payment_hash->data = array_merge((array)$this->checkout->payment_hash->data, ['checkout_payment_ref' => $payment]);
|
||||
$this->checkout->payment_hash->save();
|
||||
|
||||
|
@ -14,11 +14,13 @@ namespace App\Utils;
|
||||
|
||||
use App\Models\Country;
|
||||
use App\Models\CreditInvitation;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\InvoiceInvitation;
|
||||
use App\Models\QuoteInvitation;
|
||||
use App\Models\RecurringInvoiceInvitation;
|
||||
use App\Services\PdfMaker\Designs\Utilities\DesignHelpers;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\Number;
|
||||
use App\Utils\Traits\MakesDates;
|
||||
use App\Utils\transformTranslations;
|
||||
use Exception;
|
||||
@ -512,6 +514,20 @@ class HtmlEngine
|
||||
|
||||
$data['$entity_images'] = ['value' => $this->generateEntityImagesMarkup(), 'label' => ''];
|
||||
|
||||
$data['$payments'] = ['value' => '', 'label' => ctrans('texts.payments')];
|
||||
|
||||
if ($this->entity_string == 'invoice' && $this->entity->payments()->exists()) {
|
||||
|
||||
$payment_list = '<br><br>';
|
||||
|
||||
foreach ($this->entity->payments as $payment) {
|
||||
$payment_list .= ctrans('texts.payment_subject') . ": " . $this->formatDate($payment->date, $this->client->date_format()) . " :: " . Number::formatMoney($payment->amount, $this->client) ." :: ". GatewayType::getAlias($payment->gateway_type_id) . "<br>";
|
||||
}
|
||||
|
||||
$data['$payments'] = ['value' => $payment_list, 'label' => ctrans('texts.payments')];
|
||||
}
|
||||
|
||||
|
||||
$arrKeysLength = array_map('strlen', array_keys($data));
|
||||
array_multisort($arrKeysLength, SORT_DESC, $data);
|
||||
|
||||
|
@ -54,8 +54,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
//'asset_url' => null,
|
||||
'asset_url' => env('ASSET_URL', null),
|
||||
'asset_url' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
67
package-lock.json
generated
67
package-lock.json
generated
@ -10,6 +10,7 @@
|
||||
"axios": "^0.24.0",
|
||||
"card-js": "^1.0.13",
|
||||
"card-validator": "^8.1.1",
|
||||
"clipboard": "^2.0.10",
|
||||
"cross-env": "^7.0.3",
|
||||
"jsignature": "^2.1.3",
|
||||
"json-formatter-js": "^2.3.4",
|
||||
@ -3240,6 +3241,16 @@
|
||||
"colors": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/clipboard": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz",
|
||||
"integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==",
|
||||
"dependencies": {
|
||||
"good-listener": "^1.2.2",
|
||||
"select": "^1.1.2",
|
||||
"tiny-emitter": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||
@ -4040,6 +4051,11 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/delegate": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
|
||||
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
@ -4908,6 +4924,14 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/good-listener": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
|
||||
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
|
||||
"dependencies": {
|
||||
"delegate": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
|
||||
@ -8591,6 +8615,11 @@
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/select": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
|
||||
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
|
||||
},
|
||||
"node_modules/select-hose": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
||||
@ -9488,6 +9517,11 @@
|
||||
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
|
||||
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
|
||||
},
|
||||
"node_modules/tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
|
||||
},
|
||||
"node_modules/tmp": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
@ -12779,6 +12813,16 @@
|
||||
"string-width": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"clipboard": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz",
|
||||
"integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==",
|
||||
"requires": {
|
||||
"good-listener": "^1.2.2",
|
||||
"select": "^1.1.2",
|
||||
"tiny-emitter": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"cliui": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
|
||||
@ -13399,6 +13443,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"delegate": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
|
||||
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
@ -14062,6 +14111,14 @@
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"good-listener": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
|
||||
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
|
||||
"requires": {
|
||||
"delegate": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
|
||||
@ -16685,6 +16742,11 @@
|
||||
"ajv-keywords": "^3.5.2"
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
|
||||
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
|
||||
},
|
||||
"select-hose": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
||||
@ -17381,6 +17443,11 @@
|
||||
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
|
||||
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
|
||||
},
|
||||
"tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
|
@ -20,6 +20,7 @@
|
||||
"axios": "^0.24.0",
|
||||
"card-js": "^1.0.13",
|
||||
"card-validator": "^8.1.1",
|
||||
"clipboard": "^2.0.10",
|
||||
"cross-env": "^7.0.3",
|
||||
"jsignature": "^2.1.3",
|
||||
"json-formatter-js": "^2.3.4",
|
||||
|
3
public/assets/clippy.svg
Normal file
3
public/assets/clippy.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
|
||||
</svg>
|
After Width: | Height: | Size: 519 B |
2
public/js/clients/linkify-urls.js
vendored
2
public/js/clients/linkify-urls.js
vendored
@ -1 +1 @@
|
||||
(()=>{var e,t={2623:(e,t,r)=>{"use strict";e.exports=r(4666)},1886:(e,t)=>{"use strict";const r=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),n=e=>e.replace(/>/g,">").replace(/</g,"<").replace(/�?39;/g,"'").replace(/"/g,'"').replace(/&/g,"&");t.T=(e,...t)=>{if("string"==typeof e)return r(e);let n=e[0];for(const[o,a]of t.entries())n=n+r(String(a))+e[o+1];return n}},7636:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(1886);var o=r(2623);const a=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">");const i=new Set(o);function c({name:e="div",attributes:t={},html:r="",text:o}={}){if(r&&o)throw new Error("The `html` and `text` options are mutually exclusive");const c=o?function(e,...t){if("string"==typeof e)return a(e);let r=e[0];for(const[n,o]of t.entries())r=r+a(String(o))+e[n+1];return r}(o):r;let l=`<${e}${function(e){const t=[];for(let[r,o]of Object.entries(e)){if(!1===o)continue;Array.isArray(o)&&(o=o.join(" "));let e=(0,n.T)(r);!0!==o&&(e+=`="${(0,n.T)(String(o))}"`),t.push(e)}return t.length>0?" "+t.join(" "):""}(t)}>`;return i.has(e)||(l+=`${c}</${e}>`),l}const l=(e,t)=>c({name:"a",attributes:{href:"",...t.attributes,href:e},text:void 0===t.value?e:void 0,html:void 0===t.value?void 0:"function"==typeof t.value?t.value(e):t.value});function s(e,t){if("string"===(t={attributes:{},type:"string",...t}).type)return((e,t)=>e.replace(/((?<!\+)https?:\/\/(?:www\.)?(?:[-\w.]+?[.@][a-zA-Z\d]{2,}|localhost)(?:[-\w.:%+~#*$!?&/=@]*?(?:,(?!\s))*?)*)/g,(e=>l(e,t))))(e,t);if("dom"===t.type)return((e,t)=>{const r=document.createDocumentFragment();for(const[o,a]of Object.entries(e.split(/((?<!\+)https?:\/\/(?:www\.)?(?:[-\w.]+?[.@][a-zA-Z\d]{2,}|localhost)(?:[-\w.:%+~#*$!?&/=@]*?(?:,(?!\s))*?)*)/g)))o%2?r.append((n=l(a,t),document.createRange().createContextualFragment(n))):a.length>0&&r.append(a);var n;return r})(e,t);throw new TypeError("The type option must be either `dom` or `string`")}},4666:e=>{"use strict";e.exports=JSON.parse('["area","base","br","col","embed","hr","img","input","link","menuitem","meta","param","source","track","wbr"]')}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e=n(7636),document.querySelectorAll("[data-ref=entity-terms]").forEach((function(t){t.innerHTML=e(t.innerText,{attributes:{target:"_blank",class:"text-primary"}})}))})();
|
||||
(()=>{var e,t={2623:(e,t,r)=>{"use strict";e.exports=r(4666)},1886:(e,t)=>{"use strict";const r=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),n=e=>e.replace(/>/g,">").replace(/</g,"<").replace(/�?39;/g,"'").replace(/"/g,'"').replace(/&/g,"&");t.T=(e,...t)=>{if("string"==typeof e)return r(e);let n=e[0];for(const[o,a]of t.entries())n=n+r(String(a))+e[o+1];return n}},7636:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(1886);var o=r(2623);const a=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">");const i=new Set(o);function c({name:e="div",attributes:t={},html:r="",text:o}={}){if(r&&o)throw new Error("The `html` and `text` options are mutually exclusive");const c=o?function(e,...t){if("string"==typeof e)return a(e);let r=e[0];for(const[n,o]of t.entries())r=r+a(String(o))+e[n+1];return r}(o):r;let l=`<${e}${function(e){const t=[];for(let[r,o]of Object.entries(e)){if(!1===o)continue;Array.isArray(o)&&(o=o.join(" "));let e=(0,n.T)(r);!0!==o&&(e+=`="${(0,n.T)(String(o))}"`),t.push(e)}return t.length>0?" "+t.join(" "):""}(t)}>`;return i.has(e)||(l+=`${c}</${e}>`),l}const l=(e,t)=>c({name:"a",attributes:{href:"",...t.attributes,href:e},text:void 0===t.value?e:void 0,html:void 0===t.value?void 0:"function"==typeof t.value?t.value(e):t.value});function s(e,t){if("string"===(t={attributes:{},type:"string",...t}).type)return((e,t)=>e.replace(/((?<!\+)https?:\/\/(?:www\.)?(?:[-\w.]+?[.@][a-zA-Z\d]{2,}|localhost)(?:[-\w.:%+~#*$!?&/=@]*?(?:,(?!\s))*?)*)/g,(e=>l(e,t))))(e,t);if("dom"===t.type)return((e,t)=>{const r=document.createDocumentFragment();for(const[o,a]of Object.entries(e.split(/((?<!\+)https?:\/\/(?:www\.)?(?:[-\w.]+?[.@][a-zA-Z\d]{2,}|localhost)(?:[-\w.:%+~#*$!?&/=@]*?(?:,(?!\s))*?)*)/g)))o%2?r.append((n=l(a,t),document.createRange().createContextualFragment(n))):a.length>0&&r.append(a);var n;return r})(e,t);throw new TypeError("The type option must be either `dom` or `string`")}},4666:e=>{"use strict";e.exports=JSON.parse('["area","base","br","col","embed","hr","img","input","link","menuitem","meta","param","source","track","wbr"]')}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e=n(7636),document.querySelectorAll("[data-ref=entity-terms]").forEach((function(t){"function"===e&&(t.innerHTML=e(t.innerText,{attributes:{target:"_blank",class:"text-primary"}}))}))})();
|
@ -15,7 +15,7 @@
|
||||
"/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=8ce33c3deae058ad314f",
|
||||
"/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=73a0d914ad3577f257f4",
|
||||
"/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=c2caa29f753ad1f3a12c",
|
||||
"/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=44c51b4838d1f135bbe3",
|
||||
"/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=dd6a49267dfe156c3bc9",
|
||||
"/js/clients/payments/braintree-credit-card.js": "/js/clients/payments/braintree-credit-card.js?id=a334dd9257dd510a1feb",
|
||||
"/js/clients/payments/braintree-paypal.js": "/js/clients/payments/braintree-paypal.js?id=37950e8a39281d2f596a",
|
||||
"/js/clients/payments/wepay-credit-card.js": "/js/clients/payments/wepay-credit-card.js?id=ba4d5b7175117ababdb2",
|
||||
@ -39,5 +39,6 @@
|
||||
"/js/clients/payments/stripe-browserpay.js": "/js/clients/payments/stripe-browserpay.js?id=71e49866d66a6d85b88a",
|
||||
"/js/clients/payments/stripe-fpx.js": "/js/clients/payments/stripe-fpx.js?id=3a1cac8fb671c2e4337f",
|
||||
"/css/app.css": "/css/app.css?id=cab8a6526b0f9f71842d",
|
||||
"/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad"
|
||||
"/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad",
|
||||
"/vendor/clipboard.min.js": "/vendor/clipboard.min.js?id=ad98572d415d2f245284"
|
||||
}
|
||||
|
1
public/vendor/clipboard.min.js
vendored
Normal file
1
public/vendor/clipboard.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/vendor/livewire/livewire.js
vendored
2
public/vendor/livewire/livewire.js
vendored
File diff suppressed because one or more lines are too long
2
public/vendor/livewire/livewire.js.map
vendored
2
public/vendor/livewire/livewire.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/vendor/livewire/manifest.json
vendored
2
public/vendor/livewire/manifest.json
vendored
@ -1 +1 @@
|
||||
{"/livewire.js":"/livewire.js?id=f092ba91a90e56843ffc"}
|
||||
{"/livewire.js":"/livewire.js?id=ece4c4ab4b746f6f1739"}
|
12
resources/js/clients/linkify-urls.js
vendored
12
resources/js/clients/linkify-urls.js
vendored
@ -13,7 +13,13 @@ const linkifyUrls = require('linkify-urls');
|
||||
document
|
||||
.querySelectorAll('[data-ref=entity-terms]')
|
||||
.forEach((text) => {
|
||||
text.innerHTML = linkifyUrls(text.innerText, {
|
||||
attributes: {target: '_blank', class: 'text-primary'}
|
||||
});
|
||||
|
||||
if (linkifyUrls === 'function') {
|
||||
|
||||
text.innerHTML = linkifyUrls(text.innerText, {
|
||||
attributes: {target: '_blank', class: 'text-primary'}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -4545,7 +4545,6 @@ $LANG = array(
|
||||
'activity_124' => ':user restored recurring expense :recurring_expense',
|
||||
'fpx' => "FPX",
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set password.',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -1,5 +1,5 @@
|
||||
@extends('portal.ninja2020.layout.app')
|
||||
@section('meta_title', ctrans('texts.entity_number_placeholder', ['entity' => ctrans('texts.credit'), 'entity_number' => $credit->number]))
|
||||
@section('meta_title', ctrans('texts.view_credit'))
|
||||
|
||||
@push('head')
|
||||
<meta name="pdf-url" content="{{ $credit->pdf_file_path(null, 'url', true) }}">
|
||||
@ -9,15 +9,52 @@
|
||||
@endpush
|
||||
|
||||
@section('body')
|
||||
<div class="bg-white shadow sm:rounded-lg mb-4" translate>
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.entity_number_placeholder', ['entity' => ctrans('texts.credit'), 'entity_number' => $credit->number]) }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/credit/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/credit/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('portal.ninja2020.components.entity-documents', ['entity' => $credit])
|
||||
|
||||
@include('portal.ninja2020.components.pdf-viewer', ['entity' => $credit])
|
||||
|
||||
<div class="flex justify-center">
|
||||
<canvas id="pdf-placeholder" class="shadow rounded-lg bg-white lg:hidden mt-4 p-4"></canvas>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
<script src="{{ asset('js/clients/shared/pdf.js') }}"></script>
|
||||
<script src="{{ asset('vendor/clipboard.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var clipboard = new ClipboardJS('.btn');
|
||||
|
||||
// clipboard.on('success', function(e) {
|
||||
// console.info('Action:', e.action);
|
||||
// console.info('Text:', e.text);
|
||||
// console.info('Trigger:', e.trigger);
|
||||
|
||||
// e.clearSelection();
|
||||
// });
|
||||
|
||||
// clipboard.on('error', function(e) {
|
||||
// console.error('Action:', e.action);
|
||||
// console.error('Trigger:', e.trigger);
|
||||
// });
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
@ -7,6 +7,7 @@
|
||||
@include('portal.ninja2020.components.no-cache')
|
||||
|
||||
<script src="{{ asset('vendor/signature_pad@2.3.2/signature_pad.min.js') }}"></script>
|
||||
|
||||
@endpush
|
||||
|
||||
@section('body')
|
||||
@ -38,6 +39,14 @@
|
||||
{{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}}
|
||||
- {{ ctrans('texts.unpaid') }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/invoice/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/invoice/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="mt-5 sm:mt-0 sm:ml-6 flex justify-end">
|
||||
<div class="inline-flex rounded-md shadow-sm">
|
||||
@ -64,6 +73,13 @@
|
||||
{{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}}
|
||||
- {{ \App\Models\Invoice::stringStatus($invoice->status_id) }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/invoice/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="pr-10">{{url("client/invoice/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -78,4 +94,24 @@
|
||||
|
||||
@section('footer')
|
||||
<script src="{{ asset('js/clients/invoices/payment.js') }}"></script>
|
||||
<script src="{{ asset('vendor/clipboard.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var clipboard = new ClipboardJS('.btn');
|
||||
|
||||
// clipboard.on('success', function(e) {
|
||||
// console.info('Action:', e.action);
|
||||
// console.info('Text:', e.text);
|
||||
// console.info('Trigger:', e.trigger);
|
||||
|
||||
// e.clearSelection();
|
||||
// });
|
||||
|
||||
// clipboard.on('error', function(e) {
|
||||
// console.error('Action:', e.action);
|
||||
// console.error('Trigger:', e.trigger);
|
||||
// });
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
@ -9,9 +9,20 @@
|
||||
<div class="bg-white shadow sm:rounded-lg">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.approve') }}
|
||||
</h3>
|
||||
<div>
|
||||
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.approve') }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/quote/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/quote/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center">
|
||||
@yield('quote-not-approved-right-side')
|
||||
|
@ -25,8 +25,67 @@
|
||||
<div class="mb-4">
|
||||
@include('portal.ninja2020.quotes.includes.actions', ['quote' => $quote])
|
||||
</div>
|
||||
@elseif($quote->status_id === \App\Models\Quote::STATUS_CONVERTED)
|
||||
|
||||
<div class="bg-white shadow sm:rounded-lg mb-4">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.approved') }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/quote/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/quote/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@elseif($quote->status_id === \App\Models\Quote::STATUS_APPROVED)
|
||||
<p class="text-right text-gray-900 text-sm mb-4">{{ ctrans('texts.approved') }}</p>
|
||||
|
||||
<div class="bg-white shadow sm:rounded-lg mb-4">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.approved') }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/quote/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/quote/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
|
||||
<div class="bg-white shadow sm:rounded-lg mb-4">
|
||||
<div class="px-4 py-5 sm:p-6">
|
||||
<div class="sm:flex sm:items-start sm:justify-between">
|
||||
<div>
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{{ ctrans('texts.expired') }}
|
||||
</h3>
|
||||
|
||||
<div class="btn" data-clipboard-text="{{url("client/quote/{$key}")}}" aria-label="Copied!">
|
||||
<div class="flex text-sm leading-6 font-medium text-gray-500">
|
||||
<p class="mr-2">{{url("client/quote/{$key}")}}</p>
|
||||
<p><img class="h-5 w-5" src="{{ asset('assets/clippy.svg') }}" alt="Copy to clipboard"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@include('portal.ninja2020.components.entity-documents', ['entity' => $quote])
|
||||
@ -37,4 +96,24 @@
|
||||
|
||||
@section('footer')
|
||||
<script src="{{ asset('js/clients/quotes/approve.js') }}"></script>
|
||||
<script src="{{ asset('vendor/clipboard.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var clipboard = new ClipboardJS('.btn');
|
||||
|
||||
// clipboard.on('success', function(e) {
|
||||
// console.info('Action:', e.action);
|
||||
// console.info('Text:', e.text);
|
||||
// console.info('Trigger:', e.trigger);
|
||||
|
||||
// e.clearSelection();
|
||||
// });
|
||||
|
||||
// clipboard.on('error', function(e) {
|
||||
// console.error('Action:', e.action);
|
||||
// console.error('Trigger:', e.trigger);
|
||||
// });
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
@ -0,0 +1,25 @@
|
||||
@extends('portal.ninja2020.layout.clean')
|
||||
|
||||
@section('body')
|
||||
<div class="flex h-screen">
|
||||
<div class="m-auto md:w-1/3 lg:w-1/5">
|
||||
<div class="flex flex-col">
|
||||
<h1 class="text-center text-3xl">{{ ctrans('texts.password') }}</h1>
|
||||
<p class="text-sm text-center text-gray-700">{{ ctrans('texts.to_view_entity_set_password', ['entity' => $entity_type]) }}</p>
|
||||
<form action="{{ route('client.set_password') }}" method="post" >
|
||||
<input type="hidden" name="entity_type" value="{{ $entity_type }}">
|
||||
<input type="hidden" name="invitation_key" value="{{ $invitation_key }}">
|
||||
@csrf
|
||||
<div class="flex flex-col">
|
||||
<div class="flex justify-between items-center">
|
||||
</div>
|
||||
<input type="password" name="password" id="password" class="input" minlength="7" autofocus>
|
||||
</div>
|
||||
<div class="mt-5">
|
||||
<button class="button button-primary button-block bg-blue-600">{{ ctrans('texts.continue') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
@ -8,28 +8,16 @@
|
||||
<span class="page-link">@lang('pagination.previous')</span>
|
||||
</li>
|
||||
@else
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<li class="page-item">
|
||||
<button dusk="previousPage{{ $paginator->getCursorName() == 'page' ? '' : '.' . $paginator->getPageName() }}" type="button" class="page-link" wire:click="setPage('{{$paginator->previousCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="previousPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
</li>
|
||||
@endif
|
||||
<li class="page-item">
|
||||
<button type="button" class="page-link" wire:click="previousPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="prev">@lang('pagination.previous')</button>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
{{-- Next Page Link --}}
|
||||
@if ($paginator->hasMorePages())
|
||||
@if(method_exists($paginator,'getCursorName'))
|
||||
<li class="page-item">
|
||||
<button dusk="nextPage{{ $paginator->getCursorName() == 'page' ? '' : '.' . $paginator->getPageName() }}" type="button" class="page-link" wire:click="setPage('{{$paginator->nextCursor()->encode()}}','{{ $paginator->getCursorName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item">
|
||||
<button type="button" dusk="nextPage{{ $paginator->getPageName() == 'page' ? '' : '.' . $paginator->getPageName() }}" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
</li>
|
||||
@endif
|
||||
<li class="page-item">
|
||||
<button type="button" class="page-link" wire:click="nextPage('{{ $paginator->getPageName() }}')" wire:loading.attr="disabled" rel="next">@lang('pagination.next')</button>
|
||||
</li>
|
||||
@else
|
||||
<li class="page-item disabled" aria-disabled="true">
|
||||
<span class="page-link">@lang('pagination.next')</span>
|
||||
|
3
tests/Feature/Import/freshbooks_clients.csv
Normal file
3
tests/Feature/Import/freshbooks_clients.csv
Normal file
@ -0,0 +1,3 @@
|
||||
Organization,First Name,Last Name,Email,Phone,Street,City,Province/State,Country,Postal Code,Notes
|
||||
Marge Simpson,Marge,Simpson,marge@simpsons.com,867-5309,2587 Sesame Street,Springfield,Illinois,United States,,
|
||||
X-Men,Scott,Summer,ssummers@xavierscool.edu,987654321,,,,United States,,
|
|
4
tests/Feature/Import/freshbooks_invoices.csv
Normal file
4
tests/Feature/Import/freshbooks_invoices.csv
Normal file
@ -0,0 +1,4 @@
|
||||
Client Name,Invoice #,Date Issued,Invoice Status,Date Paid,Item Name,Item Description,Rate,Quantity,Discount Percentage,Line Subtotal,Tax 1 Type,Tax 1 Amount,Tax 2 Type,Tax 2 Amount,Line Total,Currency
|
||||
X-Men,0000001,2021-01-28,sent,,General Car Repair,Bumper paint touch up,65.00,10.00000000,0.0000,650.00,,0.00,,0.00,650.00,USD
|
||||
X-Men,0000001,2021-01-28,sent,,Painting Service,25 hours painting,98.00,5.00000000,0.0000,490.00,,0.00,,0.00,490.00,USD
|
||||
X-Men,0000001,2021-01-28,sent,,Product Delivery,Trucking Logistics,150.00,45.00000000,0.0000,6750.00,,0.00,,0.00,6750.00,USD
|
|
3
tests/Feature/Import/i2g_clients.csv
Normal file
3
tests/Feature/Import/i2g_clients.csv
Normal file
@ -0,0 +1,3 @@
|
||||
"Client Name","Email","Phone","Country"
|
||||
"Alexander Hamilton","alexander@iamhamllton.com","5558675309","US"
|
||||
"Bruce Wayne","batman@gotham.gov","","US"
|
|
5
tests/Feature/Import/i2g_invoices.csv
Normal file
5
tests/Feature/Import/i2g_invoices.csv
Normal file
@ -0,0 +1,5 @@
|
||||
Id,AccountId,State,LastUpdated,CreatedDate,DocumentDate,DocumentNumber,Comment,Name,EmailRecipient,DocumentStatus,OutputStatus,PartPayment,DocumentRecipientAddress,ShipDate,ShipAddress,ShipAmount,ShipTrackingNumber,ShipVia,ShipFob,StyleName,DatePaid,CustomField,DiscountType,Discount,DiscountValue,Taxes,WithholdingTaxName,WithholdingTaxRate,TermsOld,Payments,Items,CurrencyCode,TotalAmount,BalanceDueAmount,AmountPaidAmount,DiscountAmount,SubtotalAmount,TotalTaxAmount,WithholdingTaxAmount
|
||||
a693ce35-78ed-49d8-a1be-968b4b18d689,24379237,synced,2021-01-28T11:04:09+00:00,2021-01-28T07:57:37+00:00,2021-01-28,1,,Barry Gordon,barry@capitalcity.gov,unsent,unsent,false,,,,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;Ma'am,true,false,d4037c01-b719-4e89-a1f4-91c0daf3ee34,""is_default,value;true,17"",",Withholding Tax,0,0,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Bumper paint touch up,4,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",35,0,no_discount,0;,Wood Hammer Mallets,10,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",2.5,0,no_discount,0;,Monthly Lawn Service 2 Hours Weekly,4,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",65,0,no_discount,0;,Internal Hardware Repair,6,parts,false,""rate,tax_id;17,d4037c01-b719-4e89-a1f4-91c0daf3ee34"",65,0,no_discount,0",ILS,953.55,953.55,0,0,815,"sub_total,total,rate,tax_id;815,138.55,17,d4037c01-b719-4e89-a1f4-91c0daf3ee34",0
|
||||
a8acb5bc-c855-42b7-b56e-6fab01d14899,24379237,synced,2021-01-28T11:07:43+00:00,2021-01-28T11:07:05+00:00,2021-01-28,2,,James Gordon,commissionon@gotham.gov,unsent,unsent,false,,,,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,0,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Internal Hardware Repair,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",65,0,no_discount,0",USD,70.2,70.2,0,0,65,"sub_total,total,rate,tax_id;65,5.2,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0
|
||||
55152bdc-76b3-46eb-9420-cca8c9e7a081,24379237,synced,2021-01-28T11:08:08+00:00,2021-01-28T11:07:52+00:00,2021-01-28,4,,Deadpool Inc,wade@projectx.net,unsent,unsent,false,2584 Sesame Street,,2584 Sesame Street,0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,30,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Internal Hardware Repair,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",65,0,no_discount,0;,Monthly Lawn Service 2 Hours Weekly,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",0,0,no_discount,0;,Wood Hammer Mallets,1,parts,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",2.5,0,no_discount,0",USD,72.9,72.9,0,0,67.5,"sub_total,total,rate,tax_id;67.5,5.4,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0
|
||||
73c9c7be-abea-4154-92eb-ebf674b13748,24379237,synced,2021-01-28T11:08:51+00:00,2021-01-28T11:07:21+00:00,2021-01-28,3,,Daily Planet,louislane@dailyplanet.com,unsent,unsent,false,"2587 Super Plaza, Floor 25, Metropolis",,"2587 Super Plaza, Floor 25, Metropolis",0,,,,invoice,,,no_discount,0,0,"name,auto_apply,inclusive,id,rates,accumulative_of;TAX,true,false,115e965e-eed8-4ea1-b1ca-cd1b36b8798a,""is_default,value;true,8"",",Withholding Tax,0,14,,"code,description,qty,unit_type,withholding_tax_applies,applied_taxes,unit_price,discount_percentage,discount_type,discount_amount;,Monthly Lawn Service 2 Hours Weekly,4,labor_hours,false,""rate,tax_id;8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a"",85,0,no_discount,0",USD,367.2,367.2,0,0,340,"sub_total,total,rate,tax_id;340,27.2,8,115e965e-eed8-4ea1-b1ca-cd1b36b8798a",0
|
|
3
tests/Feature/Import/invoicely_clients.csv
Normal file
3
tests/Feature/Import/invoicely_clients.csv
Normal file
@ -0,0 +1,3 @@
|
||||
"Client Name","Email","Phone","Country"
|
||||
"Alexander Hamilton","alexander@iamhamllton.com","5558675309","US"
|
||||
"Bruce Wayne","batman@gotham.gov","","US"
|
|
2
tests/Feature/Import/invoicely_invoices.csv
Normal file
2
tests/Feature/Import/invoicely_invoices.csv
Normal file
@ -0,0 +1,2 @@
|
||||
"Date","Due","Details","Client","Status","Total"
|
||||
"Jan 28 2021","Jan 28 2021","INV-1","Bruce Wayne","Due","1,020.00"
|
|
5
tests/Feature/Import/wave_clients.csv
Normal file
5
tests/Feature/Import/wave_clients.csv
Normal file
@ -0,0 +1,5 @@
|
||||
customer_name,email,contact_first_name,contact_last_name,customer_currency,account_number,phone,fax,mobile,toll_free,website,country,province/state,address_line_1,address_line_2,city,postal_code/zip_code,shipping_address,ship-to_contact,ship-to_country,ship-to_province/state,ship-to_address_line_1,ship-to_address_line_2,ship-to_city,ship-to_postal_code/zip_code,ship-to_phone,delivery_instructions
|
||||
Homer Simpson,homer@simpsons.com,Homer,Connery,USD,,555-875-5245,,,,http://simpsons.com/,,,1234 Tullis Street,,"Glasgow, Scotland",G1 2FF,False,,,,,,,,,
|
||||
Jessica Jones,jessica@jones.com,Jessica Jones,,AUD,,555-867-5309,,,,,Australia,Queensland,6548 Sesame Street,Apt 4,NYC,11213,False,,,,,,,,,
|
||||
Lucas Cage,luke@powerman.com,Luke Cage,Martha Stewart,BSD,,555-867-5309 x89,,,,,Bahamas,High Rock,965 Main Street,,Monroe,654123,False,,,,,,,,,
|
||||
Mark Walberg,markymark@walburger.com,Marcus,Connery,USD,,321654987,,,,,,,1234 Tullis Street,,"Glasgow, Scotland",G1 2FF,False,,,,,,,,,
|
|
16
tests/Feature/Import/wave_invoices.csv
Normal file
16
tests/Feature/Import/wave_invoices.csv
Normal file
@ -0,0 +1,16 @@
|
||||
Transaction ID,Transaction Date,Account Name,Transaction Description,Transaction Line Description,Amount (One column), ,Debit Amount (Two Column Approach),Credit Amount (Two Column Approach),Other Accounts for this Transaction,Customer,Vendor,Invoice Number,Bill Number,Notes / Memo,Amount Before Sales Tax,Sales Tax Amount,Sales Tax Name,Transaction Date Added,Transaction Date Last Modified,Account Group,Account Type,Account ID
|
||||
1131801267438479900,2021-01-28,Sales,Mark Walberg - 2,Mark Walberg - 2 - General Car Repair,294.00,,,294.00,"Accounts Receivable, Services",Mark Walberg,,2,,,294.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801267438479900,2021-01-28,Sales,Mark Walberg - 2,Mark Walberg - 2 - Hardware Supply,20.00,,,20.00,"Accounts Receivable, Services",Mark Walberg,,2,,,20.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801267438479900,2021-01-28,Services,Mark Walberg - 2,Mark Walberg - 2 - Lawn Service,160.00,,,160.00,"Accounts Receivable, Sales",Mark Walberg,,2,,,160.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801267438479900,2021-01-28,Services,Mark Walberg - 2,Mark Walberg - 2 - Product Delivery,4500.00,,,4500.00,"Accounts Receivable, Sales",Mark Walberg,,2,,,4500.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801267438479900,2021-01-28,Accounts Receivable,Mark Walberg - 2,Mark Walberg - 2,4974.00,,4974.00,,"Sales, Services",Mark Walberg,,2,,,4974.00,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice,
|
||||
1131801934970350312,2021-01-28,Sales,Lucas Cage - 3,Lucas Cage - 3 - General Car Repair,98.00,,,98.00,"Accounts Receivable, Services",Lucas Cage,,3,,,98.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801934970350312,2021-01-28,Sales,Lucas Cage - 3,Lucas Cage - 3 - Hardware Supply,2.50,,,2.50,"Accounts Receivable, Services",Lucas Cage,,3,,,2.50,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801934970350312,2021-01-28,Services,Lucas Cage - 3,Lucas Cage - 3 - Lawn Service,40.00,,,40.00,"Accounts Receivable, Sales",Lucas Cage,,3,,,40.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801934970350312,2021-01-28,Services,Lucas Cage - 3,Lucas Cage - 3 - Product Delivery,450.00,,,450.00,"Accounts Receivable, Sales",Lucas Cage,,3,,,450.00,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131801934970350312,2021-01-28,Accounts Receivable,Lucas Cage - 3,Lucas Cage - 3,590.50,,590.50,,"Sales, Services",Lucas Cage,,3,,,590.50,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice,
|
||||
1131802355113782011,2021-01-28,Accounts Receivable,Invoice Payment,Invoice Payment,-590.50,,,590.50,Cash on Hand,Lucas Cage,,3,,,-590.50,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice,
|
||||
1131802355113782011,2021-01-28,Cash on Hand,Invoice Payment,Invoice Payment,590.50,,590.50,,Accounts Receivable,,,,,,590.50,,,2021-01-28,2021-01-28,Asset,Cash and Bank,
|
||||
1131802918996011960,2021-01-28,Services,Jessica Jones - 4,Jessica Jones - 4 - Lawn Service,30.84,,,30.84,"Accounts Receivable, Sales",Jessica Jones,,4,,,30.84,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131802918996011960,2021-01-28,Sales,Jessica Jones - 4,Jessica Jones - 4 - Painting Service,3469.57,,,3469.57,"Accounts Receivable, Services",Jessica Jones,,4,,,3469.57,,,2021-01-28,2021-01-28,Income,Income,
|
||||
1131802918996011960,2021-01-28,Accounts Receivable,Jessica Jones - 4,Jessica Jones - 4,3500.41,,3500.41,,"Sales, Services",Jessica Jones,,4,,,3500.41,,,2021-01-28,2021-01-28,Asset,System Receivable Invoice,
|
|
6
tests/Feature/Import/zoho_contacts.csv
Normal file
6
tests/Feature/Import/zoho_contacts.csv
Normal file
@ -0,0 +1,6 @@
|
||||
Created Time,Last Modified Time,Display Name,Company Name,Salutation,First Name,Last Name,Phone,Currency Code,Notes,Website,Status,Credit Limit,Customer Sub Type,Billing Attention,Billing Address,Billing Street2,Billing City,Billing State,Billing Country,Billing Code,Billing Phone,Billing Fax,Shipping Attention,Shipping Address,Shipping Street2,Shipping City,Shipping State,Shipping Country,Shipping Code,Shipping Phone,Shipping Fax,Skype Identity,Facebook,Twitter,Department,Designation,Price List,Payment Terms,Payment Terms Label,Last Sync Time,Owner Name,EmailID,MobilePhone,Customer ID,Customer Name,Contact Type,Customer Address ID,Source,Reference ID,Payment Reminder
|
||||
2021-01-28 05:14:15,2021-01-28 05:16:02,Avengers,Avengers,,Thor,Odensohn,,USD,,thorodensohn.net,Active,0.000,business,,,,,,,,,,,,,,,,,,,,avengershq,avengershq,,,,0,Due on Receipt,,,thor@midgaurd.org,,2520018000000073005,Avengers,customer,2520018000000073005,1,,true
|
||||
2021-01-28 05:21:04,2021-01-28 05:21:04,Jessica Jones,Defenders,,,,888-867-5309,USD,,jesssicajonesdetective.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,jesssicajonesdetective,jesssicajonesdetective,,,,0,Due on Receipt,,,jessica@jones.net,,2520018000000073022,Jessica Jones,customer,2520018000000073022,1,,true
|
||||
2021-01-28 05:22:15,2021-01-28 05:22:15,Highlander,Highlander,Mr.,Sean,Connory,,USD,,highlander.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,highlander,highlander,,,,0,Due on Receipt,,,connory@highlander.com,,2520018000000073035,Highlander,customer,2520018000000073035,1,,true
|
||||
2021-01-28 05:23:44,2021-01-28 05:23:45,Simpsons Baking Co,Simpsons Baking Co,Mrs.,Margery,Simpson,888-567-5309,USD,,simpsonsbaking.com,Active,0.000,business,,,,,,,,,,,,,,,,,,,,simpsonsbaking,simpsonsbaking,,,,30,Net 30,,,marge@simpsonsbaking.com,,2520018000000073048,Simpsons Baking Co,customer,2520018000000073048,1,,true
|
||||
2021-01-28 05:24:53,2021-01-28 05:24:54,Defenders,Defenders,Mr.,Lucas,Cage,888-867-5309,USD,,cagepowerman.net,Active,0.000,individual,,,,,,,,,,,,,,,,,,,,cagepowerman,cagepowerman,,,,15,Net 15,,,lucas@powerman.com,98754321,2520018000000073061,Defenders,customer,2520018000000073061,1,,true
|
|
14
tests/Feature/Import/zoho_invoices.csv
Normal file
14
tests/Feature/Import/zoho_invoices.csv
Normal file
@ -0,0 +1,14 @@
|
||||
Invoice Date,Invoice ID,Invoice Number,Estimate Number,Invoice Status,Customer Name,Company Name,Customer ID,Branch ID,Branch Name,Due Date,Expected Payment Date,PurchaseOrder,Template Name,Currency Code,Exchange Rate,Discount Type,Is Discount Before Tax,Entity Discount Percent,Entity Discount Amount,Item Name,Item Desc,Quantity,Usage unit,Item Price,Discount,Discount Amount,Expense Reference ID,Project ID,Project Name,Item Total,SubTotal,Total,Balance,Shipping Charge,Adjustment,Adjustment Description,Round Off,Sales person,Payment Terms,Payment Terms Label,Last Payment Date,Notes,Terms & Conditions,Subject,LateFee Name,LateFee Type,LateFee Rate,LateFee Amount,LateFee Frequency,WriteOff Date,WriteOff Exchange Rate,WriteOff Amount,Recurrence Name,PayPal,Authorize.Net,Google Checkout,Payflow Pro,Stripe,2Checkout,Braintree,Forte,WorldPay,Payments Pro,Square,WePay,Razorpay,GoCardless,Partial Payments,Billing Address,Billing City,Billing State,Billing Country,Billing Code,Billing Fax,Billing Phone,Shipping Address,Shipping City,Shipping State,Shipping Country,Shipping Code,Shipping Fax,Shipping Phone Number
|
||||
2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,6.00,,4.25,0.00,0.000,,,,25.50,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,1.00,,4.25,0.00,0.000,,,,4.25,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,General Car Repair,Bumper paint touch up,4.00,,45.00,0.00,0.000,,,,180.00,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073144,INV-000001,,Draft,Highlander,Highlander,2520018000000073035,,,2021-01-28,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Analysis,Routine SEO site monitoring,2.00,,140.00,0.00,0.000,,,,280.00,489.75,489.75,489.75,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,5.00,,4.25,0.00,0.000,,,,21.25,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,6.00,,4.25,0.00,0.000,,,,25.50,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Product Delivery,Trucking Logistics,7.00,,25.00,0.00,0.000,,,,175.00,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Hardware Supply,Wood Hammer Mallets,9.00,,4.25,0.00,0.000,,,,38.25,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073164,INV-000002,,Draft,Jessica Jones,Defenders,2520018000000073022,,,2021-01-28,,654,Standard Template,USD,1.00,item_level,true,0.00,0.0,Product Delivery,Trucking Logistics,8.00,,25.00,0.00,0.000,,,,200.00,460.00,460.00,460.00,0.00,0.00,Adjustment,0.00,,0,Due on Receipt,,Thanks for your business.,,Lawn Service,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,General Car Repair,Bumper paint touch up,1.00,,45.00,0.00,0.000,,,,45.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Painting Service,25 hours painting,1.00,,25.00,0.00,0.000,,,,25.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Analysis,Routine SEO site monitoring,1.00,,140.00,0.00,0.000,,,,140.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
||||
2021-01-28,2520018000000073182,INV-000003,,Draft,Simpsons Baking Co,Simpsons Baking Co,2520018000000073048,,,2021-02-27,,,Standard Template,USD,1.00,item_level,true,0.00,0.0,Website Design,New page design,1.00,,180.00,0.00,0.000,,,,180.00,390.00,390.00,390.00,0.00,0.00,Adjustment,0.00,,30,Net 30,,Thanks for your business.,,,,% of Invoice,0.00,0.00,Every Month,,1.00,0.00,,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,,,,,,,,,,,,,,
|
|
1
webpack.mix.js
vendored
1
webpack.mix.js
vendored
@ -154,6 +154,7 @@ mix.js("resources/js/app.js", "public/js")
|
||||
"public/js/clients/payments/stripe-fpx.js")
|
||||
|
||||
mix.copyDirectory('node_modules/card-js/card-js.min.css', 'public/css/card-js.min.css');
|
||||
mix.copyDirectory('node_modules/clipboard/dist/clipboard.min.js', 'public/vendor/clipboard.min.js');
|
||||
|
||||
mix.sass("resources/sass/app.scss", "public/css")
|
||||
.options({
|
||||
|
Loading…
Reference in New Issue
Block a user