Compare commits
44 commits
Author | SHA1 | Date | |
---|---|---|---|
1874f26ddb | |||
ca0037728b | |||
a3600d94ce | |||
0893ffe5a0 | |||
af8e4eccbb | |||
09c513b2b8 | |||
7b7ae8484b | |||
169443bc60 | |||
0ad94f9c42 | |||
6a5fc45c5c | |||
518dfd0ecb | |||
0ab816a8cd | |||
d67cddfcfd | |||
f54cc14e92 | |||
0d5fa1a666 | |||
a45cbed63c | |||
f387604a04 | |||
58a5ca5656 | |||
518828be9d | |||
179e90fa73 | |||
1ba8d2189a | |||
73bcf9fc15 | |||
7a4e8d278f | |||
b6eb402a39 | |||
98edbe2d45 | |||
b7d44e354d | |||
a8993c3e00 | |||
91110e2d89 | |||
fdfc679b03 | |||
299cae0c80 | |||
4f498c4c49 | |||
d5a78dd9b6 | |||
e671967ba8 | |||
e33e0a7f36 | |||
84c31bc824 | |||
a05b76ebed | |||
2cd9ded783 | |||
9a501e9665 | |||
cb8df58cfc | |||
9f7a10bcd3 | |||
c9bf50170d | |||
92865a6ee3 | |||
2cd0ee76c0 | |||
b88a8f4a86 |
46 changed files with 6621 additions and 4622 deletions
46
CHANGELOG.md
46
CHANGELOG.md
|
@ -3,9 +3,51 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [2.2.0]
|
## [2.4.1] - 2024-01-31
|
||||||
|
|
||||||
## Added
|
### Changed
|
||||||
|
|
||||||
|
- Updated to Angular 17
|
||||||
|
- Updated to Node 20
|
||||||
|
|
||||||
|
## [2.4.0] - 2023-10-26
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Tip component
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Added settings for tips, tax and VAT rates.
|
||||||
|
- Added fields for tips, tax and VAT to `order.model`
|
||||||
|
- Added a display of taxes to orders
|
||||||
|
- Added a tip display to receipts
|
||||||
|
|
||||||
|
## [2.3.1] - 2023-06-26
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Broken wallet link for invoices
|
||||||
|
|
||||||
|
## [2.3.0] - 2023-06-26
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Modified order to handle new `token` field.
|
||||||
|
- Modified order service to query API using `token`.
|
||||||
|
- Modified receipt component to use the new `token`.
|
||||||
|
- Modified invoice component to use the new `token`.
|
||||||
|
- Modified payment service component to remove order-creation logic.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Receipt prompt textarea is now read-only.
|
||||||
|
- Invoice prompt textarea is now read-only.
|
||||||
|
- Button text color is now correct for Invoice and Receipt.
|
||||||
|
|
||||||
|
## [2.2.0] - 2023-05-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
- New API calls for requesting language data for login page
|
- New API calls for requesting language data for login page
|
||||||
|
|
||||||
|
|
|
@ -71,10 +71,10 @@
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
"browserTarget": "zgo:build:production"
|
"buildTarget": "zgo:build:production"
|
||||||
},
|
},
|
||||||
"development": {
|
"development": {
|
||||||
"browserTarget": "zgo:build:development"
|
"buildTarget": "zgo:build:development"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultConfiguration": "development"
|
"defaultConfiguration": "development"
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
"extract-i18n": {
|
"extract-i18n": {
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||||
"options": {
|
"options": {
|
||||||
"browserTarget": "zgo:build"
|
"buildTarget": "zgo:build"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
|
|
9405
package-lock.json
generated
9405
package-lock.json
generated
File diff suppressed because it is too large
Load diff
59
package.json
59
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "zgo",
|
"name": "zgo",
|
||||||
"version": "2.2.0",
|
"version": "2.4.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
|
@ -10,51 +10,52 @@
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^16.0.0",
|
"@angular/animations": "^17.1.2",
|
||||||
"@angular/cdk": "^16.0.0",
|
"@angular/cdk": "^17.1.2",
|
||||||
"@angular/common": "^16.0.0",
|
"@angular/common": "^17.1.2",
|
||||||
"@angular/compiler": "^16.0.0",
|
"@angular/compiler": "^17.1.2",
|
||||||
"@angular/core": "^16.0.0",
|
"@angular/core": "^17.1.2",
|
||||||
"@angular/forms": "^16.0.0",
|
"@angular/forms": "^17.3.9",
|
||||||
"@angular/material": "^16.0.0",
|
"@angular/material": "^17.3.9",
|
||||||
"@angular/platform-browser": "^16.0.0",
|
"@angular/platform-browser": "^17.1.2",
|
||||||
"@angular/platform-browser-dynamic": "^16.0.0",
|
"@angular/platform-browser-dynamic": "^17.3.9",
|
||||||
"@angular/router": "^16.0.0",
|
"@angular/router": "^17.3.9",
|
||||||
"@fortawesome/angular-fontawesome": "^0.13.0",
|
"@fortawesome/angular-fontawesome": "^0.14.1",
|
||||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
"@fortawesome/fontawesome-free": "^6.5.2",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
"@fortawesome/fontawesome-svg-core": "^6.5.2",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
"@fortawesome/free-brands-svg-icons": "^6.5.2",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
"@fortawesome/free-regular-svg-icons": "^6.5.2",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.4.0",
|
"@fortawesome/free-solid-svg-icons": "^6.5.2",
|
||||||
"@supercharge/request-ip": "^1.2.0",
|
"@supercharge/request-ip": "^1.2.0",
|
||||||
"angular-local-storage": "^0.7.1",
|
"angular-local-storage": "^0.7.1",
|
||||||
"angular-material-datepicker": "^1.0.2",
|
"angular-material-datepicker": "^1.0.2",
|
||||||
"async": "^3.2.4",
|
"async": "^3.2.5",
|
||||||
"coingecko-api": "^1.0.10",
|
"coingecko-api": "^1.0.10",
|
||||||
"easyqrcodejs": "^4.4.13",
|
"easyqrcodejs": "^4.6.1",
|
||||||
|
"hammerjs": "^2.0.8",
|
||||||
"material-design-icons": "^3.0.1",
|
"material-design-icons": "^3.0.1",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"sha.js": "^2.4.11",
|
"sha.js": "^2.4.11",
|
||||||
"tslib": "^2.5.0",
|
"tslib": "^2.5.0",
|
||||||
"urlsafe-base64": "^1.0.0",
|
"urlsafe-base64": "^1.0.0",
|
||||||
"uuid": "^9.0.0",
|
"uuid": "^9.0.1",
|
||||||
"zone.js": "~0.13.0"
|
"zone.js": "^0.14.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^16.0.0",
|
"@angular-devkit/build-angular": "^17.3.7",
|
||||||
"@angular/cli": "^16.0.0",
|
"@angular/cli": "^17.3.7",
|
||||||
"@angular/compiler-cli": "^16.0.0",
|
"@angular/compiler-cli": "^17.3.9",
|
||||||
"@types/jasmine": "~4.3.1",
|
"@types/jasmine": "~4.3.1",
|
||||||
"@types/node": "^18.16.6",
|
"@types/node": "^18.19.33",
|
||||||
"@types/request": "^2.48.8",
|
"@types/request": "^2.48.12",
|
||||||
"@types/urlsafe-base64": "^1.0.28",
|
"@types/urlsafe-base64": "^1.0.31",
|
||||||
"@types/uuid": "^9.0.1",
|
"@types/uuid": "^9.0.8",
|
||||||
"jasmine-core": "~4.5.0",
|
"jasmine-core": "~4.5.0",
|
||||||
"karma": "~6.4.2",
|
"karma": "~6.4.2",
|
||||||
"karma-chrome-launcher": "~3.1.1",
|
"karma-chrome-launcher": "~3.1.1",
|
||||||
"karma-coverage": "~2.2.0",
|
"karma-coverage": "~2.2.0",
|
||||||
"karma-jasmine": "~5.1.0",
|
"karma-jasmine": "~5.1.0",
|
||||||
"karma-jasmine-html-reporter": "~2.0.0",
|
"karma-jasmine-html-reporter": "~2.0.0",
|
||||||
"typescript": "~4.9.5"
|
"typescript": "~5.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,8 @@
|
||||||
<div class="footer" align="center"
|
<div class="footer" align="center"
|
||||||
style="margin-top: 10px;
|
style="margin-top: 10px;
|
||||||
margin-bottom: 20px;">
|
margin-bottom: 20px;">
|
||||||
<div >© 2023 Vergara Technologies LLC</div>
|
<div >© 2024 Vergara Technologies LLC</div>
|
||||||
<div class="tiny">Version 2.2.0</div>
|
<div class="tiny">Version 2.4.1</div>
|
||||||
<div class="tiny">{{ vE.mainPriceData }}</div>
|
<div class="tiny">{{ vE.mainPriceData }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div></div>
|
<div></div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule, } from '@angular/platform-browser';
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { MatInputModule } from '@angular/material/input';
|
import { MatInputModule } from '@angular/material/input';
|
||||||
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
||||||
|
@ -52,6 +52,7 @@ import { PmtserviceComponent } from './pmtservice/pmtservice.component';
|
||||||
import { XeroRegComponent } from './xeroreg/xeroreg.component';
|
import { XeroRegComponent } from './xeroreg/xeroreg.component';
|
||||||
import { DbExportComponent } from './db-export/db-export.component';
|
import { DbExportComponent } from './db-export/db-export.component';
|
||||||
import { SessionpayComponent } from './sessionpay/sessionpay.component';
|
import { SessionpayComponent } from './sessionpay/sessionpay.component';
|
||||||
|
import { TipsComponent } from './tips/tips.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
@ -83,9 +84,10 @@ import { SessionpayComponent } from './sessionpay/sessionpay.component';
|
||||||
XeroRegComponent,
|
XeroRegComponent,
|
||||||
DbExportComponent,
|
DbExportComponent,
|
||||||
SessionpayComponent,
|
SessionpayComponent,
|
||||||
|
TipsComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserAnimationsModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
|
@ -108,13 +110,14 @@ import { SessionpayComponent } from './sessionpay/sessionpay.component';
|
||||||
MatTabsModule,
|
MatTabsModule,
|
||||||
MatDatepickerModule,
|
MatDatepickerModule,
|
||||||
MatNativeDateModule,
|
MatNativeDateModule,
|
||||||
BrowserAnimationsModule,
|
BrowserModule,
|
||||||
FontAwesomeModule
|
FontAwesomeModule
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
MatIconModule
|
MatIconModule
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [
|
||||||
|
],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
})
|
})
|
||||||
export class AppModule { }
|
export class AppModule { }
|
||||||
|
|
|
@ -62,7 +62,8 @@ export class BusinessComponent implements OnInit {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
}
|
}
|
||||||
public countriesUpdate: Observable<Country[]>;
|
public countriesUpdate: Observable<Country[]>;
|
||||||
public ownerUpdate: Observable<Owner>;
|
public ownerUpdate: Observable<Owner>;
|
||||||
|
|
|
@ -39,7 +39,8 @@ export class DbExportComponent implements OnInit {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
|
|
||||||
_ordersOk = false;
|
_ordersOk = false;
|
||||||
|
@ -139,6 +140,9 @@ export class DbExportComponent implements OnInit {
|
||||||
this.orders[i].total + ',' +
|
this.orders[i].total + ',' +
|
||||||
this.orders[i].price! + ',' +
|
this.orders[i].price! + ',' +
|
||||||
this.orders[i].totalZec + ',' +
|
this.orders[i].totalZec + ',' +
|
||||||
|
this.orders[i].taxAmount + ',' +
|
||||||
|
this.orders[i].vatAmount + ',' +
|
||||||
|
this.orders[i].tipAmount + ',' +
|
||||||
paid + ',"' +
|
paid + ',"' +
|
||||||
this.orders[i].externalInvoice + '"' +
|
this.orders[i].externalInvoice + '"' +
|
||||||
'\n';
|
'\n';
|
||||||
|
|
|
@ -40,7 +40,8 @@ export class FullnodeService{
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(private http: HttpClient, public userService: UserService){
|
constructor(private http: HttpClient, public userService: UserService){
|
||||||
|
|
|
@ -34,7 +34,8 @@ export class HeaderComponent implements OnInit, OnDestroy {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
public heightUpdate: Observable<number>;
|
public heightUpdate: Observable<number>;
|
||||||
public ownerUpdate: Observable<Owner>;
|
public ownerUpdate: Observable<Owner>;
|
||||||
|
|
|
@ -51,6 +51,24 @@
|
||||||
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr *ngIf="order.taxAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.invoiceTax }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.taxAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr *ngIf="order.vatAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.invoiceVAT }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.vatAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr *ngIf="order.tipAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.invoiceTip }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.tipAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr class="invoice-title">
|
<tr class="invoice-title">
|
||||||
<th width="55%"
|
<th width="55%"
|
||||||
class="detailLineRight">
|
class="detailLineRight">
|
||||||
|
@ -89,14 +107,14 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div style="height: 15px;"></div>
|
<div style="height: 15px;"></div>
|
||||||
<div width="100%"
|
<div *ngIf="!order.paid" width="100%"
|
||||||
style="font-size: 14px;
|
style="font-size: 14px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
text-align: center;">
|
text-align: center;">
|
||||||
{{ vE.invoiceScanQrcode }}
|
{{ vE.invoiceScanQrcode }}
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center;
|
<div *ngIf="!order.paid" style="text-align: center;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
line-height: 30px;">
|
line-height: 30px;">
|
||||||
<div style="font-family: 'Spartan';
|
<div style="font-family: 'Spartan';
|
||||||
|
@ -172,4 +190,4 @@
|
||||||
</mat-card-actions>
|
</mat-card-actions>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,6 @@ import { faCheck, faHourglass, faArrowUpRightFromSquare } from '@fortawesome/fre
|
||||||
import { NotifierService } from '../notifier.service';
|
import { NotifierService } from '../notifier.service';
|
||||||
|
|
||||||
import { LanguageService } from '../language.service';
|
import { LanguageService } from '../language.service';
|
||||||
import { LanguageData } from '../language.model';
|
|
||||||
|
|
||||||
var QRCode = require('easyqrcodejs');
|
var QRCode = require('easyqrcodejs');
|
||||||
var URLSafeBase64 = require('urlsafe-base64');
|
var URLSafeBase64 = require('urlsafe-base64');
|
||||||
|
@ -26,11 +25,12 @@ export class InvoiceComponent implements OnInit {
|
||||||
faHourglass = faHourglass;
|
faHourglass = faHourglass;
|
||||||
faArrowUpRightFromSquare = faArrowUpRightFromSquare;
|
faArrowUpRightFromSquare = faArrowUpRightFromSquare;
|
||||||
orderId;
|
orderId;
|
||||||
|
orderToken: string = '';
|
||||||
public orderUpdate: Observable<Order>;
|
public orderUpdate: Observable<Order>;
|
||||||
public nameUpdate: Observable<string>;
|
public nameUpdate: Observable<string>;
|
||||||
name: string = '';
|
name: string = '';
|
||||||
error: boolean = false;
|
error: boolean = false;
|
||||||
codeString: string = 'Test';
|
codeString: string = '';
|
||||||
invString: string = '';
|
invString: string = '';
|
||||||
public isWCOrder : boolean = false;
|
public isWCOrder : boolean = false;
|
||||||
zcashUrl: SafeUrl = '';
|
zcashUrl: SafeUrl = '';
|
||||||
|
@ -48,6 +48,10 @@ export class InvoiceComponent implements OnInit {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -86,7 +90,10 @@ export class InvoiceComponent implements OnInit {
|
||||||
invoiceCopyamountError : '',
|
invoiceCopyamountError : '',
|
||||||
invoiceCopymemoError : '',
|
invoiceCopymemoError : '',
|
||||||
invoiceInvalidId : '',
|
invoiceInvalidId : '',
|
||||||
invoiceInfoNotavail : ''
|
invoiceInfoNotavail : '',
|
||||||
|
invoiceTax : '',
|
||||||
|
invoiceVAT : '',
|
||||||
|
invoiceTip : ''
|
||||||
};
|
};
|
||||||
//
|
//
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -98,39 +105,42 @@ export class InvoiceComponent implements OnInit {
|
||||||
private languageService : LanguageService
|
private languageService : LanguageService
|
||||||
) {
|
) {
|
||||||
this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId");
|
this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId");
|
||||||
console.log('constructor - orderId -> ' + this.orderId);
|
this._ActiveRoute.queryParams.subscribe((params) => {
|
||||||
|
this.orderToken = params["token"];
|
||||||
|
receiptService.getOrderById(this.orderId!, this.orderToken!).subscribe(response => {
|
||||||
|
if (response.status == 200){
|
||||||
|
this.error = false;
|
||||||
|
if( response.body!.order.session.substring(0,1) == 'X') {
|
||||||
|
this.invString = response.body!.order.externalInvoice;
|
||||||
|
this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!).concat(" Invoice: ").concat(this.invString)))}`;
|
||||||
|
} else {
|
||||||
|
this.codeString = `zcash:${response.body!.order.address}?amount=${response.body!.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!)))}`;
|
||||||
|
}
|
||||||
|
var qrcode = new QRCode(document.getElementById("payment-qr"), {
|
||||||
|
text: this.codeString,
|
||||||
|
logo: "/assets/zcash.png",
|
||||||
|
width: 180,
|
||||||
|
height: 180,
|
||||||
|
logoWidth: 50,
|
||||||
|
logoHeight: 50,
|
||||||
|
correctLevel: QRCode.CorrectLevel.H
|
||||||
|
});
|
||||||
|
this.error = false;
|
||||||
|
this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString);
|
||||||
|
} else {
|
||||||
|
this.error = true;
|
||||||
|
this.codeString = 'Test';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//console.log('constructor - orderId -> ' + this.orderId);
|
||||||
this.orderUpdate = receiptService.orderUpdate;
|
this.orderUpdate = receiptService.orderUpdate;
|
||||||
this.nameUpdate = receiptService.nameUpdate;
|
this.nameUpdate = receiptService.nameUpdate;
|
||||||
receiptService.getOrderById(this.orderId!).subscribe(response => {
|
|
||||||
if (response.status == 200){
|
|
||||||
this.error = false;
|
|
||||||
if( response.body!.order.session.substring(0,1) == 'X') {
|
|
||||||
this.invString = response.body!.order.externalInvoice;
|
|
||||||
this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!).concat(" Invoice: ").concat(this.invString)))}`;
|
|
||||||
} else {
|
|
||||||
this.codeString = `zcash:${response.body!.order.address}?amount=${response.body!.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!)))}`;
|
|
||||||
}
|
|
||||||
var qrcode = new QRCode(document.getElementById("payment-qr"), {
|
|
||||||
text: this.codeString,
|
|
||||||
logo: "/assets/zcash.png",
|
|
||||||
width: 180,
|
|
||||||
height: 180,
|
|
||||||
logoWidth: 50,
|
|
||||||
logoHeight: 50,
|
|
||||||
correctLevel: QRCode.CorrectLevel.H
|
|
||||||
});
|
|
||||||
this.error = false;
|
|
||||||
} else {
|
|
||||||
this.error = true;
|
|
||||||
this.codeString = 'Test';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.orderUpdate.subscribe(order => {
|
this.orderUpdate.subscribe(order => {
|
||||||
this.order = order;
|
this.order = order;
|
||||||
if ( order.session.substring(0,1) == 'W') {
|
if ( order.session.substring(0,1) == 'W') {
|
||||||
this.isWCOrder = true;
|
this.isWCOrder = true;
|
||||||
}
|
}
|
||||||
this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString);
|
|
||||||
});
|
});
|
||||||
this.nameUpdate.subscribe(name => {
|
this.nameUpdate.subscribe(name => {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -271,6 +281,9 @@ export class InvoiceComponent implements OnInit {
|
||||||
this.vE.invoiceCopymemoError = response.data.invoice_copymemo_error;
|
this.vE.invoiceCopymemoError = response.data.invoice_copymemo_error;
|
||||||
this.vE.invoiceInvalidId = response.data.invoice_invalid_id;
|
this.vE.invoiceInvalidId = response.data.invoice_invalid_id;
|
||||||
this.vE.invoiceInfoNotavail = response.data.invoice_info_notavail;
|
this.vE.invoiceInfoNotavail = response.data.invoice_info_notavail;
|
||||||
|
this.vE.invoiceTax = response.data.invoice_tax;
|
||||||
|
this.vE.invoiceVAT = response.data.invoice_vat;
|
||||||
|
this.vE.invoiceTip = response.data.invoice_tip;
|
||||||
|
|
||||||
},
|
},
|
||||||
error => { console.log('Error >> ',error); }
|
error => { console.log('Error >> ',error); }
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
</div>
|
</div>
|
||||||
<p class="rv_price"
|
<p class="rv_price"
|
||||||
*ngIf="owner.zats">
|
*ngIf="owner.zats">
|
||||||
ⓩ{{(item.cost/zecPrice)*100000000 | number: '1.0-0'}}
|
ⓩ {{ ((item.cost/zecPrice)*100000000).toString().substring( 0, ((item.cost/zecPrice)*100000000 ).toString().indexOf('.')) }} [{{item.cost | number: '1.02' | currency: getCurrency() }}]
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -47,7 +47,8 @@ export class ItemListComponent implements OnInit{
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
|
|
||||||
public ownerUpdate: Observable<Owner>;
|
public ownerUpdate: Observable<Owner>;
|
||||||
|
@ -65,6 +66,7 @@ export class ItemListComponent implements OnInit{
|
||||||
itemlistNotifClose : '',
|
itemlistNotifClose : '',
|
||||||
itemlistNotifSuccess : ''
|
itemlistNotifSuccess : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
constructor(
|
constructor(
|
||||||
|
|
|
@ -12,7 +12,7 @@ var Buffer = require('buffer/').Buffer;
|
||||||
export class LanguageService {
|
export class LanguageService {
|
||||||
//
|
//
|
||||||
// URL for test using REST API to local MariaDB database
|
// URL for test using REST API to local MariaDB database
|
||||||
// private baseURL = 'http://localhost:8080/zgointl';
|
// private baseURL = 'http://192.168.1.18:8080/zgointl';
|
||||||
//
|
//
|
||||||
// URL for test using REST API to local MongoDB database
|
// URL for test using REST API to local MongoDB database
|
||||||
// private baseURL = 'http://localhost:5000/zgointl';
|
// private baseURL = 'http://localhost:5000/zgointl';
|
||||||
|
@ -22,6 +22,8 @@ export class LanguageService {
|
||||||
private loginURL = ConfigData.Be_URL + 'getloginlang';
|
private loginURL = ConfigData.Be_URL + 'getloginlang';
|
||||||
private mainURL = ConfigData.Be_URL + 'getmainlang';
|
private mainURL = ConfigData.Be_URL + 'getmainlang';
|
||||||
private scanURL = ConfigData.Be_URL + 'getscanlang';
|
private scanURL = ConfigData.Be_URL + 'getscanlang';
|
||||||
|
private invoiceURL = ConfigData.Be_URL + 'getinvoicelang';
|
||||||
|
private pmtservURL = ConfigData.Be_URL + 'getpmtservicelang';
|
||||||
|
|
||||||
public zgoLanguage: string = '';
|
public zgoLanguage: string = '';
|
||||||
|
|
||||||
|
@ -52,12 +54,18 @@ export class LanguageService {
|
||||||
// Get component's text data from language database
|
// Get component's text data from language database
|
||||||
//
|
//
|
||||||
const params = new HttpParams().append('session', this.session!);
|
const params = new HttpParams().append('session', this.session!);
|
||||||
|
// console.log("Params -> ");
|
||||||
|
// console.log(params);
|
||||||
if (viewName === 'login') {
|
if (viewName === 'login') {
|
||||||
return this.http.get<LanguageData>(this.loginURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
return this.http.get<LanguageData>(this.loginURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
||||||
} else if (viewName === 'main') {
|
} else if (viewName === 'main') {
|
||||||
return this.http.get<LanguageData>(this.mainURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
return this.http.get<LanguageData>(this.mainURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
||||||
} else if (viewName === 'scan') {
|
} else if (viewName === 'scan') {
|
||||||
return this.http.get<LanguageData>(this.scanURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
return this.http.get<LanguageData>(this.scanURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
||||||
|
} else if (viewName === 'invoice') {
|
||||||
|
return this.http.get<LanguageData>(this.invoiceURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
||||||
|
} else if (viewName === 'pmtservice') {
|
||||||
|
return this.http.get<LanguageData>(this.pmtservURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params});
|
||||||
} else {
|
} else {
|
||||||
return this.http.get<LanguageData>(this.baseURL +
|
return this.http.get<LanguageData>(this.baseURL +
|
||||||
'/?lang=' + this.zgoLanguage +
|
'/?lang=' + this.zgoLanguage +
|
||||||
|
@ -65,7 +73,7 @@ export class LanguageService {
|
||||||
,{ headers : reqHeaders
|
,{ headers : reqHeaders
|
||||||
, params: params
|
, params: params
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,8 +129,8 @@ img.icon{
|
||||||
.minibutton {
|
.minibutton {
|
||||||
font-family: 'Spartan', sans-serif;
|
font-family: 'Spartan', sans-serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
background: #ff5722;
|
/*background: #ff5722;*/
|
||||||
color: white;
|
/*color: white;*/
|
||||||
height: 24px;
|
height: 24px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
|
@ -154,6 +154,24 @@
|
||||||
width="30%">{{item.qty * item.cost | number:'1.02' | currency: order.currency.toUpperCase() }}
|
width="30%">{{item.qty * item.cost | number:'1.02' | currency: order.currency.toUpperCase() }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="tbdetail" *ngIf="order.taxAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.listordersTax }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.taxAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="tbdetail" *ngIf="order.vatAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.listordersVAT }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.vatAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="tbdetail" *ngIf="order.tipAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.listordersTip }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.tipAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div style="display: flex;
|
<div style="display: flex;
|
||||||
|
@ -162,10 +180,10 @@
|
||||||
padding-right: 20%;
|
padding-right: 20%;
|
||||||
margin-top: 10px;">
|
margin-top: 10px;">
|
||||||
<span>
|
<span>
|
||||||
<button mat-stroked-button class="minibutton" color="primary" (click)="invoice(order)">{{ vE.listordersInvoiceBtn }}</button>
|
<button mat-raised-button class="minibutton" color="primary" (click)="invoice(order)">{{ vE.listordersInvoiceBtn }}</button>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<button mat-stroked-button class="minibutton" color="primary" (click)="receipt(order)">{{ vE.listordersReceiptBtn }}</button>
|
<button mat-raised-button class="minibutton" color="primary" (click)="receipt(order)">{{ vE.listordersReceiptBtn }}</button>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</mat-expansion-panel>
|
</mat-expansion-panel>
|
||||||
|
|
|
@ -60,7 +60,8 @@ export class ListOrdersComponent implements OnInit, OnDestroy{
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
zecPrice: number = 1;
|
zecPrice: number = 1;
|
||||||
nodeAddress: string = '';
|
nodeAddress: string = '';
|
||||||
|
@ -86,7 +87,10 @@ export class ListOrdersComponent implements OnInit, OnDestroy{
|
||||||
listordersInvoiceBtn : '',
|
listordersInvoiceBtn : '',
|
||||||
listordersReceiptBtn : '',
|
listordersReceiptBtn : '',
|
||||||
listordersNoOrders : '',
|
listordersNoOrders : '',
|
||||||
listordersEndDate : ''
|
listordersEndDate : '',
|
||||||
|
listordersTax : '',
|
||||||
|
listordersVAT : '',
|
||||||
|
listordersTip : ''
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@ -173,7 +177,8 @@ export class ListOrdersComponent implements OnInit, OnDestroy{
|
||||||
dialogConfig.disableClose = true;
|
dialogConfig.disableClose = true;
|
||||||
dialogConfig.autoFocus = true;
|
dialogConfig.autoFocus = true;
|
||||||
dialogConfig.data = {
|
dialogConfig.data = {
|
||||||
orderId: order._id
|
orderId: order._id,
|
||||||
|
orderToken: order.token
|
||||||
};
|
};
|
||||||
|
|
||||||
const dialogRef = this.dialog.open(PromptInvoiceComponent, dialogConfig);
|
const dialogRef = this.dialog.open(PromptInvoiceComponent, dialogConfig);
|
||||||
|
@ -194,7 +199,8 @@ export class ListOrdersComponent implements OnInit, OnDestroy{
|
||||||
dialogConfig.disableClose = true;
|
dialogConfig.disableClose = true;
|
||||||
dialogConfig.autoFocus = true;
|
dialogConfig.autoFocus = true;
|
||||||
dialogConfig.data = {
|
dialogConfig.data = {
|
||||||
orderId: order._id
|
orderId: order._id,
|
||||||
|
orderToken: order.token
|
||||||
};
|
};
|
||||||
|
|
||||||
const dialogRef = this.dialog.open(PromptReceiptComponent, dialogConfig);
|
const dialogRef = this.dialog.open(PromptReceiptComponent, dialogConfig);
|
||||||
|
@ -241,6 +247,9 @@ export class ListOrdersComponent implements OnInit, OnDestroy{
|
||||||
this.vE.listordersReceiptBtn = response.data.listorders_receipt_btn;
|
this.vE.listordersReceiptBtn = response.data.listorders_receipt_btn;
|
||||||
this.vE.listordersNoOrders = response.data.listorders_no_orders;
|
this.vE.listordersNoOrders = response.data.listorders_no_orders;
|
||||||
this.vE.listordersEndDate = response.data.listorders_end_date;
|
this.vE.listordersEndDate = response.data.listorders_end_date;
|
||||||
|
this.vE.listordersTax = response.data.listorders_tax;
|
||||||
|
this.vE.listordersVAT = response.data.listorders_vat;
|
||||||
|
this.vE.listordersTip = response.data.listorders_tip;
|
||||||
|
|
||||||
},
|
},
|
||||||
error: error => { console.log('Error >> ',error); }
|
error: error => { console.log('Error >> ',error); }
|
||||||
|
|
|
@ -49,7 +49,8 @@ export class LoginComponent implements OnInit, AfterViewInit {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
private FullnodeSub: Subscription = new Subscription();
|
private FullnodeSub: Subscription = new Subscription();
|
||||||
private UserSub: Subscription = new Subscription();
|
private UserSub: Subscription = new Subscription();
|
||||||
|
|
|
@ -75,6 +75,18 @@
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr *ngIf="tax > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">Sales Tax</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ tax / 100 | percent:'1.2-4'}}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.taxAmount | currency: getCurrency() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr *ngIf="vat > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">Value-Added Tax</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vat / 100 | percent:'1.2-4' }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.vatAmount | currency: getCurrency() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { NotifierService } from '../notifier.service';
|
||||||
|
|
||||||
import { LanguageService } from '../language.service';
|
import { LanguageService } from '../language.service';
|
||||||
import { LanguageData } from '../language.model';
|
import { LanguageData } from '../language.model';
|
||||||
|
import {TipsComponent} from '../tips/tips.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-order',
|
selector: 'app-order',
|
||||||
|
@ -47,6 +48,10 @@ export class OrderComponent implements OnInit{
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -57,9 +62,15 @@ export class OrderComponent implements OnInit{
|
||||||
};
|
};
|
||||||
public price: number = 1;
|
public price: number = 1;
|
||||||
public total: number = 0;
|
public total: number = 0;
|
||||||
|
public tax: number = 0;
|
||||||
|
public vat: number = 0;
|
||||||
|
public tip: boolean = false;
|
||||||
public orderUpdate: Observable<Order>;
|
public orderUpdate: Observable<Order>;
|
||||||
public priceUpdate: Observable<number>;
|
public priceUpdate: Observable<number>;
|
||||||
public totalUpdate: Observable<number>;
|
public totalUpdate: Observable<number>;
|
||||||
|
public taxUpdate: Observable<number>;
|
||||||
|
public vatUpdate: Observable<number>;
|
||||||
|
public tipUpdate: Observable<boolean>;
|
||||||
|
|
||||||
// ------------------------------------
|
// ------------------------------------
|
||||||
//
|
//
|
||||||
|
@ -105,9 +116,6 @@ export class OrderComponent implements OnInit{
|
||||||
this.orderUpdate = orderService.orderUpdate;
|
this.orderUpdate = orderService.orderUpdate;
|
||||||
this.orderUpdate.subscribe((order) => {
|
this.orderUpdate.subscribe((order) => {
|
||||||
this.order = order;
|
this.order = order;
|
||||||
|
|
||||||
//console.log('this.order > ' + JSON.stringify(this.order));
|
|
||||||
// ------------------------------------------------
|
|
||||||
this.oLines = [];
|
this.oLines = [];
|
||||||
this.myLines = this.order.lines;
|
this.myLines = this.order.lines;
|
||||||
var nl = {} as newLineItem;
|
var nl = {} as newLineItem;
|
||||||
|
@ -133,6 +141,18 @@ export class OrderComponent implements OnInit{
|
||||||
this.total = total;
|
this.total = total;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.taxUpdate = orderService.taxUpdate;
|
||||||
|
this.taxUpdate.subscribe((tax) => {
|
||||||
|
this.tax = tax;
|
||||||
|
});
|
||||||
|
this.vatUpdate = orderService.vatUpdate;
|
||||||
|
this.vatUpdate.subscribe((vat) => {
|
||||||
|
this.vat = vat;
|
||||||
|
});
|
||||||
|
this.tipUpdate = orderService.tipUpdate;
|
||||||
|
this.tipUpdate.subscribe((tip) => {
|
||||||
|
this.tip = tip;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
@ -169,40 +189,59 @@ export class OrderComponent implements OnInit{
|
||||||
}
|
}
|
||||||
|
|
||||||
checkout() {
|
checkout() {
|
||||||
var zec = this.total/this.price;
|
const dialogConfig3 = new MatDialogConfig();
|
||||||
this.order.totalZec = parseFloat(zec.toFixed(8));
|
|
||||||
const dialogConfig = new MatDialogConfig();
|
|
||||||
|
|
||||||
dialogConfig.disableClose = true;
|
|
||||||
dialogConfig.autoFocus = true;
|
|
||||||
dialogConfig.data = {
|
|
||||||
totalZec: this.order.totalZec,
|
|
||||||
addr: this.order.address,
|
|
||||||
orderId: this.order._id
|
|
||||||
};
|
|
||||||
|
|
||||||
const dialogRef = this.dialog.open(CheckoutComponent, dialogConfig);
|
dialogConfig3.disableClose = true;
|
||||||
dialogRef.afterClosed().subscribe((val) => {
|
dialogConfig3.autoFocus = true;
|
||||||
if (val) {
|
dialogConfig3.data = {
|
||||||
const dialogConfig2 = new MatDialogConfig();
|
amt: this.total,
|
||||||
dialogConfig2.disableClose = true;
|
flag: this.tip
|
||||||
dialogConfig2.autoFocus = true;
|
};
|
||||||
dialogConfig2.data = {
|
|
||||||
order: this.order._id
|
|
||||||
};
|
const dialogRef3 = this.dialog.open(TipsComponent, dialogConfig3);
|
||||||
console.log('Payment confirmed!');
|
dialogRef3.afterClosed().subscribe((tipVal) => {
|
||||||
this.orderService.closeOrder(true);
|
this.orderService.updateTip(tipVal).then((orderData) => {
|
||||||
const dialogRef2 = this.dialog.open(ReceiptQRComponent, dialogConfig2);
|
this.orderService.getOrder().subscribe((oData) => {
|
||||||
dialogRef2.afterClosed().subscribe( val => {
|
var zec = this.total/this.price;
|
||||||
if (val) {
|
this.order.totalZec = parseFloat(zec.toFixed(8));
|
||||||
console.log('Receipt closed.');
|
const dialogConfig = new MatDialogConfig();
|
||||||
this.oLines = [];
|
dialogConfig.disableClose = true;
|
||||||
}
|
dialogConfig.autoFocus = true;
|
||||||
});
|
dialogConfig.data = {
|
||||||
} else {
|
totalZec: this.order.totalZec,
|
||||||
console.log('Returning to order');
|
addr: this.order.address,
|
||||||
}
|
orderId: this.order._id
|
||||||
|
};
|
||||||
|
const dialogRef = this.dialog.open(CheckoutComponent, dialogConfig);
|
||||||
|
dialogRef.afterClosed().subscribe((val) => {
|
||||||
|
if (val) {
|
||||||
|
const dialogConfig2 = new MatDialogConfig();
|
||||||
|
dialogConfig2.disableClose = true;
|
||||||
|
dialogConfig2.autoFocus = true;
|
||||||
|
dialogConfig2.data = {
|
||||||
|
order: this.order._id
|
||||||
|
};
|
||||||
|
console.log('Payment confirmed!');
|
||||||
|
this.orderService.closeOrder(true);
|
||||||
|
const dialogRef2 = this.dialog.open(ReceiptQRComponent, dialogConfig2);
|
||||||
|
dialogRef2.afterClosed().subscribe( val => {
|
||||||
|
if (val) {
|
||||||
|
console.log('Receipt closed.');
|
||||||
|
this.oLines = [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Returning to order');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log('Failed to get promise');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
invoice() {
|
invoice() {
|
||||||
|
@ -213,7 +252,8 @@ export class OrderComponent implements OnInit{
|
||||||
dialogConfig.disableClose = true;
|
dialogConfig.disableClose = true;
|
||||||
dialogConfig.autoFocus = true;
|
dialogConfig.autoFocus = true;
|
||||||
dialogConfig.data = {
|
dialogConfig.data = {
|
||||||
orderId: this.order._id
|
orderId: this.order._id,
|
||||||
|
orderToken: this.order.token
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.log ('order_id : ' + this.order._id);
|
//console.log ('order_id : ' + this.order._id);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { LineItem } from '../items/lineitem.model';
|
import { LineItem } from '../items/lineitem.model';
|
||||||
|
|
||||||
export interface Order {
|
export interface Order {
|
||||||
_id?: string,
|
_id?: string|null,
|
||||||
address: string,
|
address: string,
|
||||||
session: string,
|
session: string,
|
||||||
timestamp?: string,
|
timestamp?: string,
|
||||||
|
@ -13,5 +13,9 @@ export interface Order {
|
||||||
lines: LineItem[],
|
lines: LineItem[],
|
||||||
paid: boolean,
|
paid: boolean,
|
||||||
externalInvoice: string,
|
externalInvoice: string,
|
||||||
shortCode: string
|
shortCode: string,
|
||||||
|
token: string,
|
||||||
|
taxAmount: number,
|
||||||
|
vatAmount: number,
|
||||||
|
tipAmount: number
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { BehaviorSubject, Observable } from 'rxjs';
|
import { BehaviorSubject, Observable, lastValueFrom } from 'rxjs';
|
||||||
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
|
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
|
||||||
import { Order } from './order.model';
|
import { Order } from './order.model';
|
||||||
import { UserService } from '../user.service';
|
import { UserService } from '../user.service';
|
||||||
|
@ -41,7 +41,8 @@ export class OrderService {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
address: '',
|
address: '',
|
||||||
|
@ -55,6 +56,10 @@ export class OrderService {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -70,6 +75,12 @@ export class OrderService {
|
||||||
public readonly totalUpdate: Observable<number> = this._totalUpdated.asObservable();
|
public readonly totalUpdate: Observable<number> = this._totalUpdated.asObservable();
|
||||||
private _allOrdersUpdated: BehaviorSubject<Order[]> = new BehaviorSubject(this.dataStore.allOrders);
|
private _allOrdersUpdated: BehaviorSubject<Order[]> = new BehaviorSubject(this.dataStore.allOrders);
|
||||||
public readonly allOrdersUpdate: Observable<Order[]> = this._allOrdersUpdated.asObservable();
|
public readonly allOrdersUpdate: Observable<Order[]> = this._allOrdersUpdated.asObservable();
|
||||||
|
private _taxUpdated: BehaviorSubject<number> = new BehaviorSubject(this.dataStore.owner.taxValue);
|
||||||
|
public readonly taxUpdate: Observable<number> = this._taxUpdated.asObservable();
|
||||||
|
private _vatUpdated: BehaviorSubject<number> = new BehaviorSubject(this.dataStore.owner.vatValue);
|
||||||
|
public readonly vatUpdate: Observable<number> = this._vatUpdated.asObservable();
|
||||||
|
private _tipUpdated: BehaviorSubject<boolean> = new BehaviorSubject(this.dataStore.owner.tips);
|
||||||
|
public readonly tipUpdate: Observable<boolean> = this._tipUpdated.asObservable();
|
||||||
public userUpdate: Observable<User>;
|
public userUpdate: Observable<User>;
|
||||||
public ownerUpdate: Observable<Owner>;
|
public ownerUpdate: Observable<Owner>;
|
||||||
private reqHeaders: HttpHeaders;
|
private reqHeaders: HttpHeaders;
|
||||||
|
@ -93,6 +104,17 @@ export class OrderService {
|
||||||
});
|
});
|
||||||
this.ownerUpdate.subscribe((owner) => {
|
this.ownerUpdate.subscribe((owner) => {
|
||||||
this.dataStore.owner = owner;
|
this.dataStore.owner = owner;
|
||||||
|
if (this.dataStore.owner.tax) {
|
||||||
|
this._taxUpdated.next(Object.assign({}, this.dataStore).owner.taxValue);
|
||||||
|
} else {
|
||||||
|
this._taxUpdated.next(0);
|
||||||
|
}
|
||||||
|
if (this.dataStore.owner.vat) {
|
||||||
|
this._vatUpdated.next(Object.assign({}, this.dataStore).owner.vatValue);
|
||||||
|
} else {
|
||||||
|
this._vatUpdated.next(0);
|
||||||
|
}
|
||||||
|
this._tipUpdated.next(Object.assign({}, this.dataStore).owner.tips);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,10 +125,6 @@ export class OrderService {
|
||||||
if (OrderDataResponse.status == 200) {
|
if (OrderDataResponse.status == 200) {
|
||||||
this.dataStore.order = OrderDataResponse.body!.order;
|
this.dataStore.order = OrderDataResponse.body!.order;
|
||||||
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
||||||
this.dataStore.order.total = 0;
|
|
||||||
for(var line of this.dataStore.order.lines) {
|
|
||||||
this.dataStore.order.total += line.qty * line.cost;
|
|
||||||
}
|
|
||||||
this._totalUpdated.next(Object.assign({}, this.dataStore).order.total);
|
this._totalUpdated.next(Object.assign({}, this.dataStore).order.total);
|
||||||
} else {
|
} else {
|
||||||
console.log('No order found');
|
console.log('No order found');
|
||||||
|
@ -159,11 +177,14 @@ export class OrderService {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [lineItem]
|
lines: [lineItem]
|
||||||
};
|
};
|
||||||
let obs = this.http.post<{message: string, order: Order}>(this.beUrl+'api/order', {payload: order}, { headers: this.reqHeaders, params: this.reqParams });
|
let obs = this.http.post<{message: string, order: Order}>(this.beUrl+'api/order', {payload: order}, { headers: this.reqHeaders, params: this.reqParams });
|
||||||
obs.subscribe((orderData) => {
|
obs.subscribe((orderData) => {
|
||||||
console.log('Created order');
|
|
||||||
this.getOrder()
|
this.getOrder()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -188,6 +209,10 @@ export class OrderService {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -202,6 +227,13 @@ export class OrderService {
|
||||||
return obs;
|
return obs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateTip(amt: number){
|
||||||
|
this.dataStore.order.tipAmount = amt;
|
||||||
|
let obs = this.http.post(this.beUrl+'api/order', {payload: this.dataStore.order}, {headers: this.reqHeaders, params: this.reqParams, observe: 'response'});
|
||||||
|
const res1 = await lastValueFrom(obs);
|
||||||
|
return res1;
|
||||||
|
}
|
||||||
|
|
||||||
closeOrder(paid: boolean){
|
closeOrder(paid: boolean){
|
||||||
this.fullnodeService.priceUpdate.subscribe((price) => {
|
this.fullnodeService.priceUpdate.subscribe((price) => {
|
||||||
this.dataStore.order.price = price;
|
this.dataStore.order.price = price;
|
||||||
|
@ -210,7 +242,7 @@ export class OrderService {
|
||||||
this.dataStore.order.paid = paid;
|
this.dataStore.order.paid = paid;
|
||||||
let obs = this.http.post(this.beUrl+'api/order', {payload: this.dataStore.order}, { headers: this.reqHeaders, params: this.reqParams });
|
let obs = this.http.post(this.beUrl+'api/order', {payload: this.dataStore.order}, { headers: this.reqHeaders, params: this.reqParams });
|
||||||
obs.subscribe((orderData) => {
|
obs.subscribe((orderData) => {
|
||||||
console.log('Closed order', orderData);
|
//console.log('Closed order', orderData);
|
||||||
this.dataStore.order = {
|
this.dataStore.order = {
|
||||||
address: '',
|
address: '',
|
||||||
session: '',
|
session: '',
|
||||||
|
@ -223,6 +255,10 @@ export class OrderService {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
|
|
@ -14,4 +14,5 @@ export interface Owner {
|
||||||
payconf: boolean;
|
payconf: boolean;
|
||||||
crmToken: string;
|
crmToken: string;
|
||||||
viewkey: string;
|
viewkey: string;
|
||||||
|
tips: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,11 +24,11 @@
|
||||||
<div style="height: 50px;">
|
<div style="height: 50px;">
|
||||||
</div>
|
</div>
|
||||||
<div style="font-weight: 700;
|
<div style="font-weight: 700;
|
||||||
font-size: 25px;
|
fonT-size: 25px;
|
||||||
text-align: center;">
|
text-align: center;">
|
||||||
{{ vE.pmtservicePmtsrvNot }}<br>
|
{{ vE.pmtservicePmtsrvNot }}<br>
|
||||||
{{ vE.pmtserviceEnabledFor }}<br>
|
{{ vE.pmtserviceEnabledFor }}<br>
|
||||||
{{ owner.name}}
|
{{ shop }}
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 40px;">
|
<div style="height: 40px;">
|
||||||
</div>
|
</div>
|
||||||
|
@ -131,7 +131,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="invoiceDetail"
|
<div class="invoiceDetail"
|
||||||
*ngIf="reportType==0"
|
*ngIf="reportType==0"
|
||||||
id="invoice">
|
>
|
||||||
<div class="invoiceHdrTxt1">{{ vE.pmtserviceHdrTxt1 }}</div>
|
<div class="invoiceHdrTxt1">{{ vE.pmtserviceHdrTxt1 }}</div>
|
||||||
<div class="invoiceHdrTxt2">{{ vE.pmtserviceHdrTxt2 }}{{orderId}}</div>
|
<div class="invoiceHdrTxt2">{{ vE.pmtserviceHdrTxt2 }}{{orderId}}</div>
|
||||||
<div class="invoiceHdrTxt3">{{ vE.pmtserviceHdrTxt3 }}{{order.timestamp | date}}
|
<div class="invoiceHdrTxt3">{{ vE.pmtserviceHdrTxt3 }}{{order.timestamp | date}}
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td width="25%">
|
<td width="25%">
|
||||||
<div style="text-align: right;"
|
<div style="text-align: right;"
|
||||||
id="payment-qr"
|
id="invoice-qr"
|
||||||
*ngIf="!order.paid"></div>
|
*ngIf="!order.paid"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -253,4 +253,4 @@
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,8 +4,6 @@ import { HttpClient, HttpParams, HttpHeaders } from "@angular/common/http";
|
||||||
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
||||||
import { PmtData } from "./pmtservice.model";
|
import { PmtData } from "./pmtservice.model";
|
||||||
import { XeroInvoice } from "./xeroinvoice.model";
|
import { XeroInvoice } from "./xeroinvoice.model";
|
||||||
import { Owner } from '../owner.model';
|
|
||||||
// import { Item } from '../items/item.model'
|
|
||||||
import { Order } from '../order/order.model'
|
import { Order } from '../order/order.model'
|
||||||
import { ConfigData } from '../configdata';
|
import { ConfigData } from '../configdata';
|
||||||
import { faCheck, faHourglass } from '@fortawesome/free-solid-svg-icons';
|
import { faCheck, faHourglass } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
@ -19,479 +17,305 @@ var Buffer = require('buffer/').Buffer;
|
||||||
import { LanguageService } from '../language.service';
|
import { LanguageService } from '../language.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-pmtservice',
|
selector: 'app-pmtservice',
|
||||||
templateUrl: './pmtservice.component.html',
|
templateUrl: './pmtservice.component.html',
|
||||||
styleUrls: ['./pmtservice.component.css']
|
styleUrls: ['./pmtservice.component.css']
|
||||||
})
|
})
|
||||||
|
|
||||||
export class PmtserviceComponent implements OnInit {
|
export class PmtserviceComponent implements OnInit {
|
||||||
|
|
||||||
faCheck = faCheck;
|
faCheck = faCheck;
|
||||||
faHourglass = faHourglass;
|
faHourglass = faHourglass;
|
||||||
|
|
||||||
beUrl = ConfigData.Be_URL;
|
beUrl = ConfigData.Be_URL;
|
||||||
private reqHeaders: HttpHeaders = new HttpHeaders();
|
private reqHeaders: HttpHeaders = new HttpHeaders();
|
||||||
|
|
||||||
public pmtData : PmtData = {
|
public shop: string = '';
|
||||||
ownerId :'',
|
public pmtData : PmtData = {
|
||||||
invoice: '',
|
ownerId :'',
|
||||||
amount: 0,
|
invoice: '',
|
||||||
currency: '',
|
amount: 0,
|
||||||
shortcode: ''
|
currency: '',
|
||||||
};
|
shortcode: ''
|
||||||
|
};
|
||||||
|
|
||||||
public invData : XeroInvoice = {
|
public invData : XeroInvoice = {
|
||||||
inv_Type : '',
|
inv_Type : '',
|
||||||
inv_Id : '',
|
inv_Id : '',
|
||||||
inv_No : '',
|
inv_No : '',
|
||||||
inv_Contact : '',
|
inv_Contact : '',
|
||||||
inv_Currency : '',
|
inv_Currency : '',
|
||||||
inv_CurrencyRate : 0,
|
inv_CurrencyRate : 0,
|
||||||
inv_Status : '',
|
inv_Status : '',
|
||||||
inv_Total : 0,
|
inv_Total : 0,
|
||||||
inv_Date : new Date(),
|
inv_Date : new Date(),
|
||||||
inv_shortCode : '',
|
inv_shortCode : '',
|
||||||
inv_ProcDate : new Date()
|
inv_ProcDate : new Date()
|
||||||
};
|
};
|
||||||
|
|
||||||
public owner: Owner = {
|
|
||||||
_id: '',
|
|
||||||
address: '',
|
|
||||||
name: '',
|
|
||||||
currency: 'usd',
|
|
||||||
tax: false,
|
|
||||||
taxValue: 0,
|
|
||||||
vat: false,
|
|
||||||
vatValue: 0,
|
|
||||||
paid: false,
|
|
||||||
zats: false,
|
|
||||||
invoices: false,
|
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
|
||||||
payconf: false,
|
|
||||||
crmToken: '',
|
|
||||||
viewkey: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
public order: Order = {
|
public order: Order = {
|
||||||
_id : '',
|
_id : '',
|
||||||
address: '',
|
address: '',
|
||||||
session: '',
|
session: '',
|
||||||
timestamp: '',
|
timestamp: '',
|
||||||
closed: false,
|
closed: false,
|
||||||
currency: '',
|
currency: '',
|
||||||
price: 0,
|
price: 0,
|
||||||
total: 0,
|
total: 0,
|
||||||
totalZec: 0,
|
totalZec: 0,
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
lines: [
|
token: '',
|
||||||
{
|
taxAmount: 0,
|
||||||
qty: 1,
|
vatAmount: 0,
|
||||||
name: '',
|
tipAmount: 0,
|
||||||
cost:0
|
lines: [
|
||||||
}
|
{
|
||||||
]
|
qty: 1,
|
||||||
};
|
name: '',
|
||||||
|
cost:0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
private invData_raw : string = '';
|
private invData_raw : string = '';
|
||||||
private invData_buff : any = null;
|
private invData_buff : any = null;
|
||||||
|
|
||||||
public reportType = 1000;
|
public reportType = 0;
|
||||||
public Status = 0;
|
public Status = 0;
|
||||||
|
|
||||||
codeString: string = '';
|
codeString: string = 'ZGo - The Zcash Register';
|
||||||
zcashUrl: SafeUrl = '';
|
zcashUrl: SafeUrl = '';
|
||||||
zPrice: number = 1.0;
|
zPrice: number = 1.0;
|
||||||
name: string = '';
|
name: string = '';
|
||||||
error: boolean = false;
|
error: boolean = false;
|
||||||
orderId : string = '';
|
orderId : string = '';
|
||||||
// -------------------------------------
|
// -------------------------------------
|
||||||
// Language Support
|
// Language Support
|
||||||
//
|
//
|
||||||
vE = {
|
vE = {
|
||||||
pmtserviceInvalidOwnerid : '',
|
pmtserviceInvalidOwnerid : '',
|
||||||
pmtserviceNotservClose : '',
|
pmtserviceNotservClose : '',
|
||||||
pmtserviceNotservError : '',
|
pmtserviceNotservError : '',
|
||||||
pmtserviceCopyNotavail : '',
|
pmtserviceCopyNotavail : '',
|
||||||
pmtserviceCopyaddressError : '',
|
pmtserviceCopyaddressError : '',
|
||||||
pmtserviceCopyamountError : '',
|
pmtserviceCopyamountError : '',
|
||||||
pmtserviceCopymemoError : '',
|
pmtserviceCopymemoError : '',
|
||||||
pmtservicePaymentNotprocessed : '',
|
pmtservicePaymentNotprocessed : '',
|
||||||
pmtservicePmtsrvNot : '',
|
pmtservicePmtsrvNot : '',
|
||||||
pmtserviceEnabledFor : '',
|
pmtserviceEnabledFor : '',
|
||||||
pmtserviceConnectoXero : '',
|
pmtserviceConnectoXero : '',
|
||||||
pmtserviceServerFailed : '',
|
pmtserviceServerFailed : '',
|
||||||
pmtserviceInvoiceNum : '',
|
pmtserviceInvoiceNum : '',
|
||||||
pmtserviceInvoiceNotfound : '',
|
pmtserviceInvoiceNotfound : '',
|
||||||
pmtserviceInvoiceInvalid : '',
|
pmtserviceInvoiceInvalid : '',
|
||||||
pmtserviceInvoicePaid : '',
|
pmtserviceInvoicePaid : '',
|
||||||
pmtserviceInvoiceCurrency : '',
|
pmtserviceInvoiceCurrency : '',
|
||||||
pmtserviceCurrencyNotsup : '',
|
pmtserviceCurrencyNotsup : '',
|
||||||
pmtserviceAmountDoesnot : '',
|
pmtserviceAmountDoesnot : '',
|
||||||
pmtserviceMatchValue : '',
|
pmtserviceMatchValue : '',
|
||||||
pmtserviceReportedByxero : '',
|
pmtserviceReportedByxero : '',
|
||||||
pmtserviceHdrTxt1 : '',
|
pmtserviceHdrTxt1 : '',
|
||||||
pmtserviceHdrTxt2 : '',
|
pmtserviceHdrTxt2 : '',
|
||||||
pmtserviceHdrTxt3 : '',
|
pmtserviceHdrTxt3 : '',
|
||||||
pmtserviceZecdataPrice : '',
|
pmtserviceZecdataPrice : '',
|
||||||
pmtserviceZecdataTotal : '',
|
pmtserviceZecdataTotal : '',
|
||||||
pmtserviceInvoiceItem : '',
|
pmtserviceInvoiceItem : '',
|
||||||
pmtserviceInvoiceQty : '',
|
pmtserviceInvoiceQty : '',
|
||||||
pmtserviceInvoicePrice : '',
|
pmtserviceInvoicePrice : '',
|
||||||
pmtserviceInvoiceTotal : '',
|
pmtserviceInvoiceTotal : '',
|
||||||
pmtservicePaymentConfirmed : '',
|
pmtservicePaymentConfirmed : '',
|
||||||
pmtservicePaymentPending : '',
|
pmtservicePaymentPending : '',
|
||||||
pmtserviceScanQrcode : '',
|
pmtserviceScanQrcode : '',
|
||||||
pmtserviceCantScan : '',
|
pmtserviceCantScan : '',
|
||||||
pmtserviceUseThis : '',
|
pmtserviceUseThis : '',
|
||||||
pmtserviceWalletLink : '',
|
pmtserviceWalletLink : '',
|
||||||
pmtserviceCopyAddress : '',
|
pmtserviceCopyAddress : '',
|
||||||
pmtserviceCopyAmount : '',
|
pmtserviceCopyAmount : '',
|
||||||
pmtserviceCopyMemo : ''
|
pmtserviceCopyMemo : ''
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
constructor(private activatedRoute : ActivatedRoute,
|
constructor(private activatedRoute : ActivatedRoute,
|
||||||
private http : HttpClient,
|
private http : HttpClient,
|
||||||
private sanitizer: DomSanitizer,
|
private sanitizer: DomSanitizer,
|
||||||
private notifierService : NotifierService,
|
private notifierService : NotifierService,
|
||||||
private languageService : LanguageService ) {}
|
private languageService : LanguageService ){
|
||||||
|
var auth = 'Basic ' + Buffer.from(ConfigData.UsrPwd).toString('base64');
|
||||||
|
this.reqHeaders = new HttpHeaders().set('Authorization', auth);
|
||||||
|
this.activatedRoute.queryParams.subscribe((params) => {
|
||||||
|
this.pmtData.ownerId = params["owner"];
|
||||||
|
this.pmtData.invoice = params["invoiceNo"];
|
||||||
|
this.pmtData.amount = +params["amount"];
|
||||||
|
this.pmtData.currency = params["currency"];
|
||||||
|
this.pmtData.shortcode = params["shortCode"];
|
||||||
|
this.getInvoiceData( this.pmtData );
|
||||||
|
});
|
||||||
|
this.chgUILanguage();
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
var auth = 'Basic ' + Buffer.from(ConfigData.UsrPwd).toString('base64');
|
}
|
||||||
this.reqHeaders = new HttpHeaders().set('Authorization', auth);
|
|
||||||
this.activatedRoute.queryParams.subscribe((params) => {
|
|
||||||
this.pmtData.ownerId = params["owner"];
|
|
||||||
this.pmtData.invoice = params["invoiceNo"];
|
|
||||||
this.pmtData.amount = params["amount"];
|
|
||||||
this.pmtData.currency = params["currency"];
|
|
||||||
this.pmtData.shortcode = params["shortCode"];
|
|
||||||
this.getInvoiceData( this.pmtData );
|
|
||||||
});
|
|
||||||
this.chgUILanguage();
|
|
||||||
}
|
|
||||||
|
|
||||||
getInvoiceData( reqData : PmtData ) {
|
getInvoiceData( reqData : PmtData ) {
|
||||||
|
//this.getXeroInvoiceData( reqData );
|
||||||
//
|
let obs = this.http.post<{reportType: number, order: Order, shop: string}>
|
||||||
// Verify owner id ( Status = 1 if not exists )
|
(this.beUrl+'invdata',
|
||||||
// ( Status = 2 if service not available for user )
|
{payload: reqData},
|
||||||
//
|
{headers: this.reqHeaders, observe: 'response' }
|
||||||
// console.log('getOwner -> '+ reqData.ownerId);
|
);
|
||||||
// console.log('received amount -> ' + reqData.amount);
|
obs.subscribe((invoiceData) => {
|
||||||
const ownParams = new HttpParams().append('id', reqData.ownerId);
|
if(invoiceData.status == 201) {
|
||||||
let obs = this.http.get<{message:string, owner: any}>
|
this.reportType = invoiceData.body!.reportType;
|
||||||
( this.beUrl+'api/ownerid',
|
this.order = invoiceData.body!.order;
|
||||||
{ headers: this.reqHeaders,
|
this.shop = invoiceData.body!.shop;
|
||||||
params: ownParams,
|
this.orderId = String(this.order._id);
|
||||||
observe: 'response'});
|
|
||||||
obs.subscribe((OwnerDataResponse) => {
|
|
||||||
//console.log('api/getowner', OwnerDataResponse.status);
|
|
||||||
if (OwnerDataResponse.status == 200) {
|
|
||||||
this.owner = OwnerDataResponse.body!.owner;
|
|
||||||
console.log('Owner => ' + this.owner.name );
|
|
||||||
//
|
|
||||||
// ==> remove "== false" for production enviroment
|
|
||||||
//
|
|
||||||
if ( this.owner.invoices ) {
|
|
||||||
// process data
|
|
||||||
console.log("Owner check passed!!!");
|
|
||||||
this.getXeroInvoiceData( reqData );
|
|
||||||
} else {
|
|
||||||
console.log("Owner check failed!!!")
|
|
||||||
this.reportType = 2;
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
if ( OwnerDataResponse.status == 204 ) {
|
|
||||||
console.log('Res.Status = ' + OwnerDataResponse.status)
|
|
||||||
console.log('Owner id not found!!!');
|
|
||||||
this.reportType = 1;
|
|
||||||
}
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
|
|
||||||
getXeroInvoiceData( reqData : PmtData ) {
|
// console.log('Generating QRCode....')
|
||||||
|
|
||||||
/*
|
this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId).concat(' Invoice: ').concat(this.order.externalInvoice)))}`;
|
||||||
// Call test Xero API
|
|
||||||
let url : string = "http://localhost:3000/xero/" + reqData.invoice;
|
|
||||||
this.http
|
|
||||||
.get<any>(url)
|
|
||||||
*/
|
|
||||||
console.log('>> find current zcash price');
|
|
||||||
this.getPrice(this.owner.currency);
|
|
||||||
|
|
||||||
console.log('get Invoice -> ' + reqData.invoice);
|
var qrcode = new QRCode(document.getElementById("invoice-qr"), {
|
||||||
let invParams = new HttpParams();
|
text: this.codeString,
|
||||||
invParams = invParams.append('address', this.owner.address);
|
logo: "/assets/zcash.png",
|
||||||
invParams = invParams.append('inv', reqData.invoice);
|
width: 180,
|
||||||
let inv = this.http.get<{message:string, invData: any}>
|
height: 180,
|
||||||
( this.beUrl+'api/invdata',
|
logoWidth: 50,
|
||||||
{ headers: this.reqHeaders,
|
logoHeight: 50,
|
||||||
params: invParams,
|
correctLevel: QRCode.CorrectLevel.H
|
||||||
observe: 'response'});
|
});
|
||||||
inv.subscribe( invDataResponse => {
|
|
||||||
// console.log('Response from ZGo-Xero');
|
|
||||||
// console.log(invDataResponse.status);
|
|
||||||
this.invData_buff = invDataResponse.body;
|
|
||||||
this.invData.inv_Type = this.invData_buff.invdata.inv_Type;
|
|
||||||
this.invData.inv_Id = this.invData_buff.invdata.inv_Id;
|
|
||||||
this.invData.inv_No = this.invData_buff.invdata.inv_No;
|
|
||||||
this.invData.inv_Contact = this.invData_buff.invdata.inv_Contact;
|
|
||||||
this.invData.inv_Currency = this.invData_buff.invdata.inv_Currency;
|
|
||||||
this.invData.inv_CurrencyRate = this.invData_buff.invdata.inv_CurrencyRate;
|
|
||||||
this.invData.inv_Total = this.invData_buff.invdata.inv_Total;
|
|
||||||
this.invData.inv_Status = this.invData_buff.invdata.inv_Status;
|
|
||||||
this.invData.inv_Date = this.invData_buff.invdata.inv_Date;
|
|
||||||
this.invData.inv_shortCode = reqData.shortcode;
|
|
||||||
/*
|
|
||||||
console.log('>>> inv_Type -> ' + this.invData.inv_Type);
|
|
||||||
console.log('>>> inv_Id -> ' + this.invData.inv_Id);
|
|
||||||
console.log('>>> inv_No -> ' + this.invData.inv_No);
|
|
||||||
console.log('>>> inv_Contact -> ' + this.invData.inv_Contact);
|
|
||||||
console.log('>>> inv_Currency-> ' + this.invData.inv_Currency);
|
|
||||||
console.log('>>> inv_CurrencyRate -> ' + this.invData.inv_CurrencyRate);
|
|
||||||
console.log('>>> inv_Total -> ' + this.invData.inv_Total);
|
|
||||||
console.log('>>> inv_Status-> ' + this.invData.inv_Status);
|
|
||||||
console.log('>>> inv_Date -> ' + this.invData.inv_Date);
|
|
||||||
*/
|
|
||||||
if ( this.invData.inv_Type == 'ACCREC' ) {
|
|
||||||
console.log('Invoice type is correct!!');
|
|
||||||
// Test if invoice is not already paid
|
|
||||||
if ( this.invData.inv_Status == 'AUTHORISED') {
|
|
||||||
console.log('invoice is payable');
|
|
||||||
// Test if Invoice's currency is supported
|
|
||||||
if ( this.invData.inv_Currency == reqData.currency ) {
|
|
||||||
console.log('Invoice currency supported');
|
|
||||||
// Test if requested amount is as reported by Xero
|
|
||||||
if ( this.invData.inv_Total == reqData.amount ) {
|
|
||||||
console.log('Invoice amount Ok - create Order');
|
|
||||||
// =====> Create order here
|
|
||||||
this.createOrder();
|
|
||||||
//
|
|
||||||
} else {
|
|
||||||
console.log('Invoice amount does not match')
|
|
||||||
this.reportType = 8;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log('Invoice currency not supported');
|
|
||||||
this.reportType = 7;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log('Invoice already paid');
|
|
||||||
this.reportType = 6;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log('Invoice type is invalid' );
|
|
||||||
this.reportType = 5;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error => {
|
|
||||||
console.log("Error while getting invData!!!");
|
|
||||||
console.log(error);
|
|
||||||
console.log(error.status);
|
|
||||||
if ( error.status == 500 ) {
|
|
||||||
// Assume that invoice was not found by haskell server
|
|
||||||
this.reportType = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString);
|
||||||
}
|
} else {
|
||||||
|
this.reportType = invoiceData.body!.reportType;
|
||||||
|
console.log('reportType ' + invoiceData.body!.reportType + ' code ' + invoiceData.status);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
createOrder() {
|
getIconStyle(order : Order) {
|
||||||
this.reportType = 0;
|
if( order.paid )
|
||||||
// console.log('Starting order generation');
|
return "font-size: 14px; color: #72cc50; margin-bottom: -2px;";
|
||||||
// console.log('>> find current zcash price');
|
return "color: #FB4F14; margin-bottom: -2px; cursor: pointer;";
|
||||||
|
|
||||||
this.order = {
|
}
|
||||||
_id: '',
|
|
||||||
address: this.owner.address,
|
|
||||||
session: 'Xero-' + this.owner._id,
|
|
||||||
currency: this.owner.currency,
|
|
||||||
timestamp: new Date(Date.now()).toISOString(),
|
|
||||||
closed: true,
|
|
||||||
totalZec: this.invData.inv_Total/this.zPrice,
|
|
||||||
price: this.zPrice,
|
|
||||||
total: this.invData.inv_Total,
|
|
||||||
paid: false,
|
|
||||||
externalInvoice: this.invData.inv_No,
|
|
||||||
shortCode: this.invData.inv_shortCode,
|
|
||||||
lines: [{qty: 1,
|
|
||||||
name: 'Invoice from ' + this.owner.name + '[' + this.invData.inv_No + ']',
|
|
||||||
cost: this.invData.inv_Total}]
|
|
||||||
};
|
|
||||||
|
|
||||||
let obs = this.http.post<{message: string, order: Order}>
|
|
||||||
(this.beUrl+'api/orderx',
|
|
||||||
{payload: this.order},
|
|
||||||
{ headers: this.reqHeaders }
|
|
||||||
);
|
|
||||||
obs.subscribe((orderData) => {
|
|
||||||
// console.log('Order created');
|
|
||||||
|
|
||||||
// console.log(orderData.order);
|
copyAddress() {
|
||||||
this.order = orderData.order
|
if (!navigator.clipboard) {
|
||||||
console.log('>> order -> ' + JSON.stringify(this.order));
|
// alert("Copy functionality not supported");
|
||||||
this.orderId = String(this.order._id);
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopyNotavail,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
navigator.clipboard.writeText(this.order.address);
|
||||||
|
} catch (err) {
|
||||||
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopyaddressError,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
// console.error("Error", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// console.log('Generating QRCode....')
|
copyAmount() {
|
||||||
|
if (!navigator.clipboard) {
|
||||||
|
// alert("Copy functionality not supported");
|
||||||
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopyNotavail,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
navigator.clipboard.writeText(this.order.totalZec.toString());
|
||||||
|
} catch (err) {
|
||||||
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopyamountError,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
// console.error("Error", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId).concat(' Invoice: ').concat(orderData.order.externalInvoice)))}`;
|
copyMemo() {
|
||||||
|
if (!navigator.clipboard) {
|
||||||
|
// alert("Copy functionality not supported");
|
||||||
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopyNotavail,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
navigator.clipboard.writeText("ZGo Order::" + this.orderId + " Invoice: " + this.order.externalInvoice);
|
||||||
|
} catch (err) {
|
||||||
|
this.notifierService
|
||||||
|
.showNotification(this.vE.pmtserviceCopymemoError,
|
||||||
|
this.vE.pmtserviceNotservClose,
|
||||||
|
"error",
|
||||||
|
this.vE.pmtserviceNotservError);
|
||||||
|
// console.error("Error", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var qrcode = new QRCode(document.getElementById("payment-qr"), {
|
chgUILanguage(){
|
||||||
text: this.codeString,
|
console.log('PMTSERVICE.chgUILanguage Called ');
|
||||||
logo: "/assets/zcash.png",
|
this.languageService.getViewElements('pmtservice').subscribe(
|
||||||
width: 180,
|
response => {
|
||||||
height: 180,
|
console.log('Received >> ', response );
|
||||||
logoWidth: 50,
|
console.log('Language Code : ', response.language);
|
||||||
logoHeight: 50,
|
console.log('Component Name : ',response.component);
|
||||||
correctLevel: QRCode.CorrectLevel.H
|
console.log('Language data : ',response.data);
|
||||||
});
|
|
||||||
|
|
||||||
this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString);
|
this.vE.pmtserviceInvalidOwnerid = response.data.pmtservice_invalid_ownerid;
|
||||||
}, error => {
|
this.vE.pmtserviceNotservClose = response.data.pmtservice_notserv_close;
|
||||||
console.log(error.message);
|
this.vE.pmtserviceNotservError = response.data.pmtservice_notserv_error;
|
||||||
|
this.vE.pmtserviceCopyNotavail = response.data.pmtservice_copy_notavail;
|
||||||
});
|
this.vE.pmtserviceCopyaddressError = response.data.pmtservice_copyaddress_error;
|
||||||
}
|
this.vE.pmtserviceCopyamountError = response.data.pmtservice_copyamount_error;
|
||||||
|
this.vE.pmtserviceCopymemoError = response.data.pmtservice_copymemo_error;
|
||||||
|
this.vE.pmtservicePaymentNotprocessed = response.data.pmtservice_payment_notprocessed;
|
||||||
|
this.vE.pmtservicePmtsrvNot = response.data.pmtservice_pmtsrv_not;
|
||||||
|
this.vE.pmtserviceEnabledFor = response.data.pmtservice_enabled_for;
|
||||||
|
this.vE.pmtserviceConnectoXero = response.data.pmtservice_connecto_xero;
|
||||||
|
this.vE.pmtserviceServerFailed = response.data.pmtservice_server_failed;
|
||||||
|
this.vE.pmtserviceInvoiceNum = response.data.pmtservice_invoice_num;
|
||||||
|
this.vE.pmtserviceInvoiceNotfound = response.data.pmtservice_invoice_notfound;
|
||||||
|
this.vE.pmtserviceInvoiceInvalid = response.data.pmtservice_invoice_invalid;
|
||||||
|
this.vE.pmtserviceInvoicePaid = response.data.pmtservice_invoice_paid;
|
||||||
|
this.vE.pmtserviceInvoiceCurrency = response.data.pmtservice_invoice_currency;
|
||||||
|
this.vE.pmtserviceCurrencyNotsup = response.data.pmtservice_currensy_notsup;
|
||||||
|
this.vE.pmtserviceAmountDoesnot = response.data.pmtservice_amount_doesnot;
|
||||||
|
this.vE.pmtserviceMatchValue = response.data.pmtservice_match_value;
|
||||||
|
this.vE.pmtserviceReportedByxero = response.data.pmtservice_reported_byxero;
|
||||||
|
this.vE.pmtserviceHdrTxt1 = response.data.pmtservice_hdr_txt1;
|
||||||
|
this.vE.pmtserviceHdrTxt2 = response.data.pmtservice_hdr_txt2;
|
||||||
|
this.vE.pmtserviceHdrTxt3 = response.data.pmtservice_hdr_txt3;
|
||||||
|
this.vE.pmtserviceZecdataPrice = response.data.pmtservice_zecdata_price;
|
||||||
|
this.vE.pmtserviceZecdataTotal = response.data.pmtservice_zecdata_total;
|
||||||
|
this.vE.pmtserviceInvoiceItem = response.data.pmtservice_invoice_item;
|
||||||
|
this.vE.pmtserviceInvoiceQty = response.data.pmtservice_invoice_qty;
|
||||||
|
this.vE.pmtserviceInvoicePrice = response.data.pmtservice_invoice_price;
|
||||||
|
this.vE.pmtserviceInvoiceTotal = response.data.pmtservice_invoice_total;
|
||||||
|
this.vE.pmtservicePaymentConfirmed = response.data.pmtservice_payment_confirmed;
|
||||||
|
this.vE.pmtservicePaymentPending = response.data.pmtservice_payment_pending;
|
||||||
|
this.vE.pmtserviceScanQrcode = response.data.pmtservice_scan_qrcode;
|
||||||
|
this.vE.pmtserviceCantScan = response.data.pmtservice_cant_scan;
|
||||||
|
this.vE.pmtserviceUseThis = response.data.pmtservice_use_this;
|
||||||
|
this.vE.pmtserviceWalletLink = response.data.pmtservice_wallet_link;
|
||||||
|
this.vE.pmtserviceCopyAddress = response.data.pmtservice_copy_address;
|
||||||
|
this.vE.pmtserviceCopyAmount = response.data.pmtservice_copy_amount;
|
||||||
|
this.vE.pmtserviceCopyMemo = response.data.pmtservice_copy_memo;
|
||||||
|
|
||||||
getIconStyle(order : Order) {
|
},
|
||||||
if( order.paid )
|
error => { console.log('Error >> ',error); }
|
||||||
return "font-size: 14px; color: #72cc50; margin-bottom: -2px;";
|
);
|
||||||
return "color: #FB4F14; margin-bottom: -2px; cursor: pointer;";
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
getPrice(currency: string){
|
|
||||||
//var currency = 'usd';
|
|
||||||
const params = new HttpParams().append('currency', currency);
|
|
||||||
let obs = this.http.get<{message: string, price: any}>(this.beUrl+'api/price', { headers:this.reqHeaders, params: params, observe: 'response'});
|
|
||||||
obs.subscribe((PriceData) => {
|
|
||||||
if (PriceData.status == 200) {
|
|
||||||
this.zPrice = PriceData.body!.price.price;
|
|
||||||
console.log("price", this.zPrice);
|
|
||||||
} else {
|
|
||||||
console.log('No price found for currency', currency);
|
|
||||||
this.zPrice = 1.0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return obs;
|
|
||||||
}
|
|
||||||
|
|
||||||
copyAddress() {
|
|
||||||
if (!navigator.clipboard) {
|
|
||||||
// alert("Copy functionality not supported");
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopyNotavail,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
navigator.clipboard.writeText(this.order.address);
|
|
||||||
} catch (err) {
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopyaddressError,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
// console.error("Error", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
copyAmount() {
|
|
||||||
if (!navigator.clipboard) {
|
|
||||||
// alert("Copy functionality not supported");
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopyNotavail,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
navigator.clipboard.writeText(this.order.totalZec.toString());
|
|
||||||
} catch (err) {
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopyamountError,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
// console.error("Error", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
copyMemo() {
|
|
||||||
if (!navigator.clipboard) {
|
|
||||||
// alert("Copy functionality not supported");
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopyNotavail,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
navigator.clipboard.writeText("ZGo Order::" + this.orderId + " Invoice: " + this.order.externalInvoice);
|
|
||||||
} catch (err) {
|
|
||||||
this.notifierService
|
|
||||||
.showNotification(this.vE.pmtserviceCopymemoError,
|
|
||||||
this.vE.pmtserviceNotservClose,
|
|
||||||
"error",
|
|
||||||
this.vE.pmtserviceNotservError);
|
|
||||||
// console.error("Error", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chgUILanguage(){
|
|
||||||
console.log('PMTSERVICE.chgUILanguage Called ');
|
|
||||||
this.languageService.getViewElements('pmtservice').subscribe(
|
|
||||||
response => {
|
|
||||||
console.log('Received >> ', response );
|
|
||||||
console.log('Language Code : ', response.language);
|
|
||||||
console.log('Component Name : ',response.component);
|
|
||||||
console.log('Language data : ',response.data);
|
|
||||||
|
|
||||||
this.vE.pmtserviceInvalidOwnerid = response.data.pmtservice_invalid_ownerid;
|
|
||||||
this.vE.pmtserviceNotservClose = response.data.pmtservice_notserv_close;
|
|
||||||
this.vE.pmtserviceNotservError = response.data.pmtservice_notserv_error;
|
|
||||||
this.vE.pmtserviceCopyNotavail = response.data.pmtservice_copy_notavail;
|
|
||||||
this.vE.pmtserviceCopyaddressError = response.data.pmtservice_copyaddress_error;
|
|
||||||
this.vE.pmtserviceCopyamountError = response.data.pmtservice_copyamount_error;
|
|
||||||
this.vE.pmtserviceCopymemoError = response.data.pmtservice_copymemo_error;
|
|
||||||
this.vE.pmtservicePaymentNotprocessed = response.data.pmtservice_payment_notprocessed;
|
|
||||||
this.vE.pmtservicePmtsrvNot = response.data.pmtservice_pmtsrv_not;
|
|
||||||
this.vE.pmtserviceEnabledFor = response.data.pmtservice_enabled_for;
|
|
||||||
this.vE.pmtserviceConnectoXero = response.data.pmtservice_connecto_xero;
|
|
||||||
this.vE.pmtserviceServerFailed = response.data.pmtservice_server_failed;
|
|
||||||
this.vE.pmtserviceInvoiceNum = response.data.pmtservice_invoice_num;
|
|
||||||
this.vE.pmtserviceInvoiceNotfound = response.data.pmtservice_invoice_notfound;
|
|
||||||
this.vE.pmtserviceInvoiceInvalid = response.data.pmtservice_invoice_invalid;
|
|
||||||
this.vE.pmtserviceInvoicePaid = response.data.pmtservice_invoice_paid;
|
|
||||||
this.vE.pmtserviceInvoiceCurrency = response.data.pmtservice_invoice_currency;
|
|
||||||
this.vE.pmtserviceCurrencyNotsup = response.data.pmtservice_currensy_notsup;
|
|
||||||
this.vE.pmtserviceAmountDoesnot = response.data.pmtservice_amount_doesnot;
|
|
||||||
this.vE.pmtserviceMatchValue = response.data.pmtservice_match_value;
|
|
||||||
this.vE.pmtserviceReportedByxero = response.data.pmtservice_reported_byxero;
|
|
||||||
this.vE.pmtserviceHdrTxt1 = response.data.pmtservice_hdr_txt1;
|
|
||||||
this.vE.pmtserviceHdrTxt2 = response.data.pmtservice_hdr_txt2;
|
|
||||||
this.vE.pmtserviceHdrTxt3 = response.data.pmtservice_hdr_txt3;
|
|
||||||
this.vE.pmtserviceZecdataPrice = response.data.pmtservice_zecdata_price;
|
|
||||||
this.vE.pmtserviceZecdataTotal = response.data.pmtservice_zecdata_total;
|
|
||||||
this.vE.pmtserviceInvoiceItem = response.data.pmtservice_invoice_item;
|
|
||||||
this.vE.pmtserviceInvoiceQty = response.data.pmtservice_invoice_qty;
|
|
||||||
this.vE.pmtserviceInvoicePrice = response.data.pmtservice_invoice_price;
|
|
||||||
this.vE.pmtserviceInvoiceTotal = response.data.pmtservice_invoice_total;
|
|
||||||
this.vE.pmtservicePaymentConfirmed = response.data.pmtservice_payment_confirmed;
|
|
||||||
this.vE.pmtservicePaymentPending = response.data.pmtservice_payment_pending;
|
|
||||||
this.vE.pmtserviceScanQrcode = response.data.pmtservice_scan_qrcode;
|
|
||||||
this.vE.pmtserviceCantScan = response.data.pmtservice_cant_scan;
|
|
||||||
this.vE.pmtserviceUseThis = response.data.pmtservice_use_this;
|
|
||||||
this.vE.pmtserviceWalletLink = response.data.pmtservice_wallet_link;
|
|
||||||
this.vE.pmtserviceCopyAddress = response.data.pmtservice_copy_address;
|
|
||||||
this.vE.pmtserviceCopyAmount = response.data.pmtservice_copy_amount;
|
|
||||||
this.vE.pmtserviceCopyMemo = response.data.pmtservice_copy_memo;
|
|
||||||
|
|
||||||
},
|
|
||||||
error => { console.log('Error >> ',error); }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,13 +20,13 @@
|
||||||
style="text-align: left;"
|
style="text-align: left;"
|
||||||
width="94%">
|
width="94%">
|
||||||
<div>
|
<div>
|
||||||
<textarea
|
<textarea matInput readonly
|
||||||
style="border: none;
|
style="border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
width: 95%;"
|
width: 95%;"
|
||||||
cdkTextareaAutosize
|
cdkTextareaAutosize
|
||||||
cdkAutosizeMinRows="1"
|
cdkAutosizeMinRows="1"
|
||||||
cdkAutosizeMaxRows="4">{{ invoiceUrl }}
|
cdkAutosizeMaxRows="5">{{ invoiceUrl }}
|
||||||
</textarea>
|
</textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ var Buffer = require('buffer/').Buffer;
|
||||||
|
|
||||||
export class PromptInvoiceComponent implements OnInit {
|
export class PromptInvoiceComponent implements OnInit {
|
||||||
orderId: string;
|
orderId: string;
|
||||||
|
orderToken: string = '';
|
||||||
invoiceUrl: string;
|
invoiceUrl: string;
|
||||||
// ------------------------------------
|
// ------------------------------------
|
||||||
//
|
//
|
||||||
|
@ -41,10 +42,11 @@ export class PromptInvoiceComponent implements OnInit {
|
||||||
constructor(
|
constructor(
|
||||||
private languageService : LanguageService,
|
private languageService : LanguageService,
|
||||||
private dialogRef: MatDialogRef<PromptInvoiceComponent>,
|
private dialogRef: MatDialogRef<PromptInvoiceComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA) public data: {orderId: string},
|
@Inject(MAT_DIALOG_DATA) public data: {orderId: string, orderToken: string},
|
||||||
private notifierService : NotifierService ) {
|
private notifierService : NotifierService ) {
|
||||||
this.orderId = data.orderId;
|
this.orderId = data.orderId;
|
||||||
this.invoiceUrl = 'https://app.zgo.cash/invoice/'+this.orderId;
|
this.orderToken = data.orderToken;
|
||||||
|
this.invoiceUrl = 'https://app.zgo.cash/invoice/'+this.orderId + '?token=' + this.orderToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
|
|
@ -21,13 +21,13 @@
|
||||||
style="text-align: left;"
|
style="text-align: left;"
|
||||||
width="94%">
|
width="94%">
|
||||||
<div>
|
<div>
|
||||||
<textarea
|
<textarea matInput readonly
|
||||||
style="border: none;
|
style="border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
width: 95%;"
|
width: 95%;"
|
||||||
cdkTextareaAutosize
|
cdkTextareaAutosize
|
||||||
cdkAutosizeMinRows="1"
|
cdkAutosizeMinRows="1"
|
||||||
cdkAutosizeMaxRows="4">{{ receiptUrl }}
|
cdkAutosizeMaxRows="5">{{ receiptUrl }}
|
||||||
</textarea>
|
</textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ var Buffer = require('buffer/').Buffer;
|
||||||
|
|
||||||
export class PromptReceiptComponent implements OnInit {
|
export class PromptReceiptComponent implements OnInit {
|
||||||
orderId: string;
|
orderId: string;
|
||||||
|
orderToken: string;
|
||||||
receiptUrl: string;
|
receiptUrl: string;
|
||||||
|
|
||||||
// ------------------------------------
|
// ------------------------------------
|
||||||
|
@ -43,10 +44,11 @@ export class PromptReceiptComponent implements OnInit {
|
||||||
constructor(
|
constructor(
|
||||||
private languageService : LanguageService,
|
private languageService : LanguageService,
|
||||||
private dialogRef: MatDialogRef<PromptReceiptComponent>,
|
private dialogRef: MatDialogRef<PromptReceiptComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA) public data: {orderId: string},
|
@Inject(MAT_DIALOG_DATA) public data: {orderId: string, orderToken: string},
|
||||||
private notifierService : NotifierService ) {
|
private notifierService : NotifierService ) {
|
||||||
this.orderId = data.orderId;
|
this.orderId = data.orderId;
|
||||||
this.receiptUrl = 'https://app.zgo.cash/receipt/'+this.orderId;
|
this.orderToken = data.orderToken;
|
||||||
|
this.receiptUrl = 'https://app.zgo.cash/receipt/' + this.orderId + '?token=' + this.orderToken;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ var Buffer = require('buffer/').Buffer;
|
||||||
})
|
})
|
||||||
export class ReceiptService {
|
export class ReceiptService {
|
||||||
beUrl = ConfigData.Be_URL;
|
beUrl = ConfigData.Be_URL;
|
||||||
private dataStore: {order: Order, owner: Owner } = {
|
private dataStore: {order: Order, owner: Owner, name: string } = {
|
||||||
|
name: '',
|
||||||
owner: {
|
owner: {
|
||||||
_id: '',
|
_id: '',
|
||||||
name: '',
|
name: '',
|
||||||
|
@ -30,7 +31,8 @@ export class ReceiptService {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
address: '',
|
address: '',
|
||||||
|
@ -44,6 +46,10 @@ export class ReceiptService {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -57,34 +63,30 @@ export class ReceiptService {
|
||||||
public readonly orderUpdate: Observable<Order> = this._orderUpdated.asObservable();
|
public readonly orderUpdate: Observable<Order> = this._orderUpdated.asObservable();
|
||||||
public _nameUpdated: BehaviorSubject<string> = new BehaviorSubject(this.dataStore.owner.name);
|
public _nameUpdated: BehaviorSubject<string> = new BehaviorSubject(this.dataStore.owner.name);
|
||||||
public readonly nameUpdate: Observable<string>= this._nameUpdated.asObservable();
|
public readonly nameUpdate: Observable<string>= this._nameUpdated.asObservable();
|
||||||
public readonly ownerUpdate;
|
//public readonly ownerUpdate;
|
||||||
private reqHeaders: HttpHeaders;
|
private reqHeaders: HttpHeaders;
|
||||||
private session: null|string;
|
|
||||||
private params: HttpParams;
|
private params: HttpParams;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private http: HttpClient,
|
private http: HttpClient,
|
||||||
public userService: UserService
|
public userService: UserService
|
||||||
) {
|
) {
|
||||||
this.session = localStorage.getItem('s4z_token');
|
//this.session = localStorage.getItem('s4z_token');
|
||||||
this.params = new HttpParams().append('session', this.session!);
|
this.params = new HttpParams();
|
||||||
var auth = 'Basic ' + Buffer.from(ConfigData.UsrPwd).toString('base64');
|
var auth = 'Basic ' + Buffer.from(ConfigData.UsrPwd).toString('base64');
|
||||||
this.reqHeaders = new HttpHeaders().set('Authorization', auth);
|
this.reqHeaders = new HttpHeaders().set('Authorization', auth);
|
||||||
this.ownerUpdate = userService.ownerUpdate;
|
//this.ownerUpdate = userService.ownerUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderById(id:string) {
|
getOrderById(id:string, token: string) {
|
||||||
let obs = this.http.get<{message: string, order: any}>(this.beUrl+'api/order/'+id, { headers:this.reqHeaders, params: this.params, observe: 'response'});
|
let obs = this.http.get<{message: string, order: any, shop: string}>(this.beUrl+'order/'+id, { headers:this.reqHeaders, params: this.params.append("token", token), observe: 'response'});
|
||||||
|
|
||||||
obs.subscribe((OrderDataResponse) => {
|
obs.subscribe((OrderDataResponse) => {
|
||||||
if (OrderDataResponse.status == 200) {
|
if (OrderDataResponse.status == 200) {
|
||||||
this.dataStore.order = OrderDataResponse.body!.order;
|
this.dataStore.order = OrderDataResponse.body!.order;
|
||||||
|
this.dataStore.name = OrderDataResponse.body!.shop;
|
||||||
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
||||||
this.userService.getOwner();
|
this._nameUpdated.next(Object.assign({}, this.dataStore).name);
|
||||||
this.ownerUpdate.subscribe((owner) => {
|
|
||||||
this.dataStore.owner = owner;
|
|
||||||
this._nameUpdated.next(Object.assign({}, this.dataStore).owner.name);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
this._orderUpdated.next(Object.assign({}, this.dataStore).order);
|
||||||
console.log('No order found');
|
console.log('No order found');
|
||||||
|
|
|
@ -51,6 +51,24 @@
|
||||||
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr *ngIf="order.taxAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.receiptTax }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.taxAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr *ngIf="order.vatAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.receiptVAT }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.vatAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr *ngIf="order.tipAmount > 0">
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ vE.receiptTip }}</td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;"></td>
|
||||||
|
<td class="newOrdertbdetail" style="text-align: right;">{{ order.tipAmount | currency: order.currency.toUpperCase() }}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr class="invoice-title">
|
<tr class="invoice-title">
|
||||||
<th width="55%"
|
<th width="55%"
|
||||||
class="detailLineRight">
|
class="detailLineRight">
|
||||||
|
@ -92,4 +110,4 @@
|
||||||
</mat-card-actions>
|
</mat-card-actions>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,6 +14,7 @@ import { LanguageData } from '../language.model';
|
||||||
})
|
})
|
||||||
export class ReceiptComponent implements OnInit {
|
export class ReceiptComponent implements OnInit {
|
||||||
orderId;
|
orderId;
|
||||||
|
orderToken: string = '';
|
||||||
public orderUpdate: Observable<Order>;
|
public orderUpdate: Observable<Order>;
|
||||||
public nameUpdate: Observable<string>;
|
public nameUpdate: Observable<string>;
|
||||||
name: string = '';
|
name: string = '';
|
||||||
|
@ -30,6 +31,10 @@ export class ReceiptComponent implements OnInit {
|
||||||
paid: false,
|
paid: false,
|
||||||
externalInvoice: '',
|
externalInvoice: '',
|
||||||
shortCode: '',
|
shortCode: '',
|
||||||
|
token: '',
|
||||||
|
taxAmount: 0,
|
||||||
|
vatAmount: 0,
|
||||||
|
tipAmount: 0,
|
||||||
lines: [
|
lines: [
|
||||||
{
|
{
|
||||||
qty: 1,
|
qty: 1,
|
||||||
|
@ -51,7 +56,10 @@ export class ReceiptComponent implements OnInit {
|
||||||
receiptQtyLbl : '',
|
receiptQtyLbl : '',
|
||||||
receiptOrderPrice : '',
|
receiptOrderPrice : '',
|
||||||
receiptInvalidId : '',
|
receiptInvalidId : '',
|
||||||
receiptInfoNotavail : ''
|
receiptInfoNotavail : '',
|
||||||
|
receiptTax : '',
|
||||||
|
receiptVAT : '',
|
||||||
|
receiptTip : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -60,12 +68,15 @@ export class ReceiptComponent implements OnInit {
|
||||||
public receiptService: ReceiptService
|
public receiptService: ReceiptService
|
||||||
) {
|
) {
|
||||||
this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId");
|
this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId");
|
||||||
|
this._ActiveRoute.queryParams.subscribe((params) => {
|
||||||
|
this.orderToken = params["token"];
|
||||||
|
receiptService.getOrderById(this.orderId!, this.orderToken!);
|
||||||
|
});
|
||||||
this.orderUpdate = receiptService.orderUpdate;
|
this.orderUpdate = receiptService.orderUpdate;
|
||||||
this.nameUpdate = receiptService.nameUpdate;
|
|
||||||
receiptService.getOrderById(this.orderId!);
|
|
||||||
this.orderUpdate.subscribe(order => {
|
this.orderUpdate.subscribe(order => {
|
||||||
this.order = order;
|
this.order = order;
|
||||||
});
|
});
|
||||||
|
this.nameUpdate = receiptService.nameUpdate;
|
||||||
|
|
||||||
this.nameUpdate.subscribe(name => {
|
this.nameUpdate.subscribe(name => {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -94,6 +105,9 @@ export class ReceiptComponent implements OnInit {
|
||||||
this.vE.receiptOrderPrice = response.data.receipt_order_price;
|
this.vE.receiptOrderPrice = response.data.receipt_order_price;
|
||||||
this.vE.receiptInvalidId = response.data.receipt_invalid_id;
|
this.vE.receiptInvalidId = response.data.receipt_invalid_id;
|
||||||
this.vE.receiptInfoNotavail = response.data.receipt_info_notavail;
|
this.vE.receiptInfoNotavail = response.data.receipt_info_notavail;
|
||||||
|
this.vE.receiptTax = response.data.receipt_tax;
|
||||||
|
this.vE.receiptVAT = response.data.receipt_vat;
|
||||||
|
this.vE.receiptTip = response.data.receipt_tip;
|
||||||
},
|
},
|
||||||
error => { console.log('Error >> ',error); }
|
error => { console.log('Error >> ',error); }
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Inject, Component, OnInit, ViewEncapsulation} from '@angular/core';
|
import { Inject, Component, OnInit, ViewEncapsulation} from '@angular/core';
|
||||||
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
|
import { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
|
||||||
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
||||||
|
|
||||||
import { NotifierService } from '../notifier.service';
|
import { NotifierService } from '../notifier.service';
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
<div class="container"
|
<div class="container"
|
||||||
style="margin-top: 10px;
|
style="margin-top: 10px;
|
||||||
height: 520px;
|
height: 700px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;">
|
margin-right: 10px;">
|
||||||
<mat-tab-group mat-tab-align-tabs="start">
|
<mat-tab-group mat-tab-align-tabs="start">
|
||||||
<mat-tab label="{{ vE.settingsTabMainlbl }}"
|
<mat-tab label="{{ vE.settingsTabMainlbl }}"
|
||||||
style="height: 400px;">
|
style="height: 620px;">
|
||||||
<div class="container" style="margin-bottom: 20px;">
|
<div class="container" style="margin-bottom: 20px;">
|
||||||
<mat-dialog-content [formGroup]="settingsForm">
|
<mat-dialog-content [formGroup]="settingsForm">
|
||||||
<mat-form-field class="settings-field" [style.width.%]="100">
|
<mat-form-field class="settings-field" [style.width.%]="100">
|
||||||
|
@ -42,25 +42,63 @@
|
||||||
<mat-form-field class="full-width"
|
<mat-form-field class="full-width"
|
||||||
appearance="fill">
|
appearance="fill">
|
||||||
<mat-label>{{ vE.settingsVkeyLbl }}</mat-label>
|
<mat-label>{{ vE.settingsVkeyLbl }}</mat-label>
|
||||||
<textarea matInput placeholder="{{ vE.settingsVkeyPlaceholder }}"
|
<textarea matInput [readonly]="vKaccess" placeholder="{{ vE.settingsVkeyPlaceholder }}"
|
||||||
formControlName="vKey">
|
formControlName="vKey">
|
||||||
</textarea>
|
</textarea>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<!--
|
<table cellspacing="0" style="width: 100%">
|
||||||
<pre></pre>
|
<!--
|
||||||
<mat-slide-toggle formControlName="proVersion"
|
<colgroup>
|
||||||
class="settings-toggle"
|
<col span="1" style="width: 20%;">
|
||||||
(change)="onChangeProVersion($event)">
|
<col span="1" style="width: 40%;">
|
||||||
Enable Integrations
|
<col span="1" style="width: 40%;">
|
||||||
</mat-slide-toggle>
|
</colgroup>
|
||||||
-->
|
-->
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<mat-slide-toggle formControlName="useTips" class="settings-toggle" (change)="onChangeTips($event)">
|
||||||
|
{{ vE.settingsUseTips }}
|
||||||
|
</mat-slide-toggle>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<mat-slide-toggle formControlName="useTax" class="settings-toggle" (change)="onChangeTax($event)">
|
||||||
|
{{ vE.settingsUseTax }}
|
||||||
|
</mat-slide-toggle>
|
||||||
|
<br>
|
||||||
|
<mat-form-field *ngIf="useTax" class="settings-field" [style.width.%]="100">
|
||||||
|
<mat-label> {{ vE.settingsSalesTaxRateLbl }}</mat-label>
|
||||||
|
<input matInput
|
||||||
|
type="number"
|
||||||
|
placeholder="{{ vE.settingsSalesTaxRateTxt }}"
|
||||||
|
formControlName="taxRate">
|
||||||
|
</mat-form-field>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<mat-slide-toggle formControlName="useVat" class="settings-toggle" (change)="onChangeVat($event)">
|
||||||
|
{{ vE.settingsUseVAT }}
|
||||||
|
</mat-slide-toggle>
|
||||||
|
<br>
|
||||||
|
<mat-form-field *ngIf="useVat" class="settings-field" [style.width.%]="100">
|
||||||
|
<mat-label>{{ vE.settingsSalesVATRateLbl }} </mat-label>
|
||||||
|
<input matInput
|
||||||
|
type="number"
|
||||||
|
placeholder="{{ vE.settingsSalesVATRateTxt }}"
|
||||||
|
formControlName="vatRate">
|
||||||
|
</mat-form-field>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</mat-dialog-content>
|
</mat-dialog-content>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container"
|
<div class="container"
|
||||||
style="display: flex;
|
style="display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;">
|
align-items: center;
|
||||||
|
margin-top: -20px;">
|
||||||
<button mat-raised-button
|
<button mat-raised-button
|
||||||
(click)="close()">
|
(click)="close()">
|
||||||
{{ vE.settingsCloseBtn }}
|
{{ vE.settingsCloseBtn }}
|
||||||
|
@ -71,9 +109,11 @@
|
||||||
{{ vE.settingsSaveBtn }}
|
{{ vE.settingsSaveBtn }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<div style="height: 20px;
|
<div style="height: 20px;
|
||||||
margin-top: 10px;">
|
margin-top: 10px;">
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
<mat-tab *ngIf="proVersion"
|
<mat-tab *ngIf="proVersion"
|
||||||
label="{{ vE.settingsTabIntegrations }}"
|
label="{{ vE.settingsTabIntegrations }}"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Inject, Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
|
import { Inject, Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
|
||||||
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
||||||
import { MatSlideToggleChange } from '@angular/material/slide-toggle';
|
import { MatSlideToggleChange } from '@angular/material/slide-toggle';
|
||||||
import { UntypedFormBuilder, Validators, UntypedFormGroup, FormControl } from '@angular/forms';
|
import { UntypedFormBuilder, Validators, UntypedFormGroup, FormControl } from '@angular/forms';
|
||||||
import { Subject, Observable } from 'rxjs';
|
import { Subject, Observable } from 'rxjs';
|
||||||
|
@ -11,7 +11,6 @@ import { NotifierService } from '../notifier.service';
|
||||||
import { faCopy } from '@fortawesome/free-solid-svg-icons';
|
import { faCopy } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
import { LanguageService } from '../language.service';
|
import { LanguageService } from '../language.service';
|
||||||
import { LanguageData } from '../language.model';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-settings',
|
selector: 'app-settings',
|
||||||
|
@ -29,8 +28,10 @@ export class SettingsComponent implements OnInit {
|
||||||
accCodForm: UntypedFormGroup;
|
accCodForm: UntypedFormGroup;
|
||||||
owner: Owner;
|
owner: Owner;
|
||||||
useZats: boolean;
|
useZats: boolean;
|
||||||
|
useTax: boolean;
|
||||||
|
useVat: boolean;
|
||||||
|
useTips: boolean;
|
||||||
proVersion: boolean = false;
|
proVersion: boolean = false;
|
||||||
useVKey: boolean = false;
|
|
||||||
linkMsg: string = '';
|
linkMsg: string = '';
|
||||||
xeroAccCod: string = '';
|
xeroAccCod: string = '';
|
||||||
saveAccOk: boolean = false;
|
saveAccOk: boolean = false;
|
||||||
|
@ -114,10 +115,18 @@ export class SettingsComponent implements OnInit {
|
||||||
settingsXeroClosebtn : '',
|
settingsXeroClosebtn : '',
|
||||||
settingsXeroLbl : '',
|
settingsXeroLbl : '',
|
||||||
settingsXeropmtConfirmdis : '',
|
settingsXeropmtConfirmdis : '',
|
||||||
settingsXeroSavebtn : ''
|
settingsXeroSavebtn : '',
|
||||||
|
settingsUseTips : '',
|
||||||
|
settingsUseTax : '',
|
||||||
|
settingsUseVAT : '',
|
||||||
|
settingsSalesTaxRateLbl : '',
|
||||||
|
settingsSalesTaxRateTxt : '',
|
||||||
|
settingsSalesVATRateLbl : '',
|
||||||
|
settingsSalesVATRateTxt : ''
|
||||||
};
|
};
|
||||||
//
|
//
|
||||||
languageRdy = new Subject<boolean>();
|
languageRdy = new Subject<boolean>();
|
||||||
|
vKaccess = true;
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -129,21 +138,28 @@ export class SettingsComponent implements OnInit {
|
||||||
private dialogRef: MatDialogRef<SettingsComponent>,
|
private dialogRef: MatDialogRef<SettingsComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA) public data: {o: Owner}) {
|
@Inject(MAT_DIALOG_DATA) public data: {o: Owner}) {
|
||||||
this.useZats = data.o.zats;
|
this.useZats = data.o.zats;
|
||||||
this.useVKey = data.o.payconf;
|
this.useTax = data.o.tax;
|
||||||
|
this.useVat = data.o.vat;
|
||||||
|
this.useTips = data.o.tips;
|
||||||
this.settingsForm = fb.group({
|
this.settingsForm = fb.group({
|
||||||
name: [data.o.name, Validators.required],
|
name: [data.o.name, Validators.required],
|
||||||
currency: [data.o.currency, Validators.required],
|
currency: [data.o.currency, Validators.required],
|
||||||
useZats: [data.o.zats, Validators.required],
|
useZats: [data.o.zats, Validators.required],
|
||||||
useVKey: [data.o.payconf, Validators.required],
|
useVKey: [data.o.payconf, Validators.required],
|
||||||
// proVersion: [data.invoices, Validators.required],
|
vKey: [data.o.viewkey],
|
||||||
vKey: [data.o.viewkey]
|
useTips: [data.o.tips, Validators.required],
|
||||||
|
useTax: [data.o.tax, Validators.required],
|
||||||
|
taxRate: [data.o.taxValue],
|
||||||
|
useVat: [data.o.vat, Validators.required],
|
||||||
|
vatRate: [data.o.vatValue]
|
||||||
});
|
});
|
||||||
this.accCodForm = fb.group ({
|
this.accCodForm = fb.group ({
|
||||||
xAcc: [this.xeroAccCod]
|
xAcc: [this.xeroAccCod]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (data.o.payconf) {
|
if (data.o.payconf) {
|
||||||
this.settingsForm.get('vKey')!.enable();
|
this.vKaccess = false;
|
||||||
|
//this.settingsForm.get('vKey')!.enable();
|
||||||
}
|
}
|
||||||
this.owner = data.o;
|
this.owner = data.o;
|
||||||
this.viewkey = data.o.viewkey;
|
this.viewkey = data.o.viewkey;
|
||||||
|
@ -158,7 +174,7 @@ export class SettingsComponent implements OnInit {
|
||||||
this.xeroLink = `https://login.xero.com/identity/connect/authorize?response_type=code&client_id=${this.clientId}&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fxeroauth&scope=accounting.transactions offline_access&state=${this.owner.address.substring(0, 6)}`
|
this.xeroLink = `https://login.xero.com/identity/connect/authorize?response_type=code&client_id=${this.clientId}&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fxeroauth&scope=accounting.transactions offline_access&state=${this.owner.address.substring(0, 6)}`
|
||||||
});
|
});
|
||||||
this.accCodeUpdate = xeroService.accCodeUpdate;
|
this.accCodeUpdate = xeroService.accCodeUpdate;
|
||||||
xeroService.getXeroAccountCode(this.owner.address);
|
xeroService.getXeroAccountCode();
|
||||||
this.accCodeUpdate.subscribe(accData => {
|
this.accCodeUpdate.subscribe(accData => {
|
||||||
this.xeroAccCod = accData;
|
this.xeroAccCod = accData;
|
||||||
//console.log("xeroAccCod -> [" + this.xeroAccCod + "]");
|
//console.log("xeroAccCod -> [" + this.xeroAccCod + "]");
|
||||||
|
@ -182,23 +198,24 @@ export class SettingsComponent implements OnInit {
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
this.settingsForm.get('vKey')!.disable();
|
//this.settingsForm.get('vKey')!.disable();
|
||||||
//
|
//
|
||||||
this.chgUILanguage();
|
this.vKaccess = true;
|
||||||
//console.log('SETTINGS: Return from chgUILanguage()');
|
this.chgUILanguage();
|
||||||
//
|
//console.log('SETTINGS: Return from chgUILanguage()');
|
||||||
this.languageRdy.subscribe (
|
//
|
||||||
data => {
|
this.languageRdy.subscribe (
|
||||||
this.linkMsg = this.vE.settingsLink2Xero;
|
data => {
|
||||||
this.pmtServiceURL + '';
|
this.linkMsg = this.vE.settingsLink2Xero;
|
||||||
if ( this.linked2Xero ) {
|
this.pmtServiceURL + '';
|
||||||
this.linkMsg = this.vE.settingsRelink2Xero; //'Relink to Xero';
|
if ( this.linked2Xero ) {
|
||||||
this.pmtServiceURL =
|
this.linkMsg = this.vE.settingsRelink2Xero; //'Relink to Xero';
|
||||||
'https://zgo.cash/pmtservice?owner=' +
|
this.pmtServiceURL =
|
||||||
this.owner._id +
|
'https://zgo.cash/pmtservice?owner=' +
|
||||||
'&invoiceNo=[INVOICENUMBER]¤cy=[CURRENCY]&amount=[AMOUNTDUE]&shortCode=[SHORTCODE]';
|
this.owner._id +
|
||||||
}
|
'&invoiceNo=[INVOICENUMBER]¤cy=[CURRENCY]&amount=[AMOUNTDUE]&shortCode=[SHORTCODE]';
|
||||||
});
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
safeURL(s: string){
|
safeURL(s: string){
|
||||||
|
@ -207,7 +224,7 @@ export class SettingsComponent implements OnInit {
|
||||||
|
|
||||||
close() {
|
close() {
|
||||||
|
|
||||||
this.dialogRef.close();
|
this.dialogRef.close(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
closeIntegration() {
|
closeIntegration() {
|
||||||
|
@ -224,8 +241,13 @@ export class SettingsComponent implements OnInit {
|
||||||
this.owner.currency = this.settingsForm.value.currency;
|
this.owner.currency = this.settingsForm.value.currency;
|
||||||
this.owner.zats = this.settingsForm.value.useZats;
|
this.owner.zats = this.settingsForm.value.useZats;
|
||||||
this.owner.payconf = this.settingsForm.value.useVKey;
|
this.owner.payconf = this.settingsForm.value.useVKey;
|
||||||
this.viewkey = this.settingsForm.value.vKey;
|
this.owner.viewkey = this.settingsForm.value.vKey;
|
||||||
//this.owner.invoices = this.settingsForm.value.proVersion
|
this.owner.tax = this.settingsForm.value.useTax;
|
||||||
|
this.owner.taxValue = this.settingsForm.value.taxRate;
|
||||||
|
this.owner.vat = this.settingsForm.value.useVat;
|
||||||
|
this.owner.vatValue = this.settingsForm.value.vatRate;
|
||||||
|
this.owner.tips = this.settingsForm.value.useTips;
|
||||||
|
//console.log('Settings component key: ' + this.owner.viewkey);
|
||||||
this.dialogRef.close(this.owner);
|
this.dialogRef.close(this.owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,20 +255,29 @@ export class SettingsComponent implements OnInit {
|
||||||
this.useZats = ob.checked;
|
this.useZats = ob.checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeProVersion(ob: MatSlideToggleChange) {
|
onChangeTax(ob: MatSlideToggleChange) {
|
||||||
this.proVersion = ob.checked;
|
this.useTax = ob.checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
onChangeVat(ob: MatSlideToggleChange) {
|
||||||
|
this.useVat = ob.checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
onChangeTips(ob: MatSlideToggleChange) {
|
||||||
|
this.useTips = ob.checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeVKeyOn(ob: MatSlideToggleChange) {
|
onChangeVKeyOn(ob: MatSlideToggleChange) {
|
||||||
// console.log("Viewing key switch is " +
|
// console.log("Viewing key switch is " +
|
||||||
// ( ob.checked ? "[ON]." : "[OFF]." ) );
|
// ( ob.checked ? "[ON]." : "[OFF]." ) );
|
||||||
|
|
||||||
this.useVKey = ob.checked;
|
|
||||||
|
|
||||||
if ( ob.checked )
|
if ( ob.checked ) {
|
||||||
this.settingsForm.get('vKey')!.enable();
|
//this.settingsForm.get('vKey')!.enable();
|
||||||
else
|
this.vKaccess = false;
|
||||||
this.settingsForm.get('vKey')!.disable();
|
} else {
|
||||||
|
//this.settingsForm.get('vKey')!.disable();
|
||||||
|
this.vKaccess = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,6 +463,13 @@ export class SettingsComponent implements OnInit {
|
||||||
this.vE.settingsAcodeSaved = response.data.settings_acode_saved;
|
this.vE.settingsAcodeSaved = response.data.settings_acode_saved;
|
||||||
this.vE.settingsAcodeNotsaved = response.data.settings_acode_notsaved;
|
this.vE.settingsAcodeNotsaved = response.data.settings_acode_notsaved;
|
||||||
this.vE.settingsAcodeInvalid = response.data.settings_acode_invalid;
|
this.vE.settingsAcodeInvalid = response.data.settings_acode_invalid;
|
||||||
|
this.vE.settingsUseTips = response.data.settings_use_tips;
|
||||||
|
this.vE.settingsUseTax = response.data.settings_use_tax;
|
||||||
|
this.vE.settingsUseVAT = response.data.settings_use_vat;
|
||||||
|
this.vE.settingsSalesTaxRateLbl = response.data.settings_sales_tax_rate_lbl;
|
||||||
|
this.vE.settingsSalesTaxRateTxt = response.data.settings_sales_tax_rate_txt;
|
||||||
|
this.vE.settingsSalesVATRateLbl = response.data.settings_sales_vat_rate_lbl;
|
||||||
|
this.vE.settingsSalesVATRateTxt = response.data.settings_sales_vat_rate_txt;
|
||||||
//
|
//
|
||||||
this.languageRdy.next(true);
|
this.languageRdy.next(true);
|
||||||
},
|
},
|
||||||
|
|
20
src/app/tips/tips.component.css
Normal file
20
src/app/tips/tips.component.css
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
.mat-mdc-card-title {
|
||||||
|
font-family: 'Spartan', sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px;
|
||||||
|
color: white;
|
||||||
|
background: #ff5722;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-contents {
|
||||||
|
font-family: 'Spartan', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-buttons {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
40
src/app/tips/tips.component.html
Normal file
40
src/app/tips/tips.component.html
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<mat-card>
|
||||||
|
<mat-card-title class="scan-header">
|
||||||
|
{{ vE.tipsEnterTip }}
|
||||||
|
</mat-card-title>
|
||||||
|
<mat-card-content>
|
||||||
|
<br>
|
||||||
|
<div align="center" class="card-contents">
|
||||||
|
<table cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<th align="center"> {{ vE.tipsSubtotal }}</th>
|
||||||
|
<th align="center"></th>
|
||||||
|
<th align="center">{{ vE.tipsTip }}</th>
|
||||||
|
<th align="center"></th>
|
||||||
|
<th align="center">{{ vE.tipsTotal }}</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">{{orderTotal | currency}}</td>
|
||||||
|
<td align="center">+</td>
|
||||||
|
<td align="center">{{orderTotal * value | currency}}</td>
|
||||||
|
<td align="center">=</td>
|
||||||
|
<td align="center">{{orderTotal * (1 + value) | currency}}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div align="center" class="card-contents">
|
||||||
|
{{value | percent}}
|
||||||
|
<br>
|
||||||
|
<input type="range" min="0" max="1" step="0.01" [(ngModel)]="value">
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
<mat-card-actions class="card-buttons">
|
||||||
|
<button mat-raised-button (click)="close()">
|
||||||
|
<mat-icon class="icon">close</mat-icon>{{ vE.tipsNoTipBtn }}
|
||||||
|
</button>
|
||||||
|
<button mat-raised-button color="primary" (click)="confirm()">
|
||||||
|
<mat-icon class="icon">done</mat-icon>{{ vE.tipsDoneBtn }}
|
||||||
|
</button>
|
||||||
|
</mat-card-actions>
|
||||||
|
</mat-card>
|
21
src/app/tips/tips.component.spec.ts
Normal file
21
src/app/tips/tips.component.spec.ts
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { TipsComponent } from './tips.component';
|
||||||
|
|
||||||
|
describe('TipsComponent', () => {
|
||||||
|
let component: TipsComponent;
|
||||||
|
let fixture: ComponentFixture<TipsComponent>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [TipsComponent]
|
||||||
|
});
|
||||||
|
fixture = TestBed.createComponent(TipsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
81
src/app/tips/tips.component.ts
Normal file
81
src/app/tips/tips.component.ts
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
import { Inject, Component, OnInit } from '@angular/core';
|
||||||
|
import { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
|
||||||
|
|
||||||
|
import { LanguageService } from '../language.service';
|
||||||
|
import { LanguageData } from '../language.model';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-tips',
|
||||||
|
templateUrl: './tips.component.html',
|
||||||
|
styleUrls: ['./tips.component.css']
|
||||||
|
})
|
||||||
|
|
||||||
|
export class TipsComponent implements OnInit{
|
||||||
|
orderTotal:number = 0;
|
||||||
|
value:number = 0.15;
|
||||||
|
flag:boolean = true;
|
||||||
|
|
||||||
|
// -------------------------------------
|
||||||
|
//
|
||||||
|
// Language Support
|
||||||
|
//
|
||||||
|
vE = {
|
||||||
|
tipsEnterTip : '',
|
||||||
|
tipsSubtotal : '',
|
||||||
|
tipsTip : '',
|
||||||
|
tipsTotal : '',
|
||||||
|
tipsNoTipBtn : '',
|
||||||
|
tipsDoneBtn : ''
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private languageService : LanguageService,
|
||||||
|
private dialogRef: MatDialogRef<TipsComponent>,
|
||||||
|
@Inject(MAT_DIALOG_DATA) public data: {amt: number, flag: boolean}) {
|
||||||
|
this.orderTotal = data.amt;
|
||||||
|
this.flag = data.flag;
|
||||||
|
if(!data.flag){
|
||||||
|
this.dialogRef.close(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
if(!this.flag){
|
||||||
|
this.dialogRef.close(0);
|
||||||
|
}
|
||||||
|
this.chgUILanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
formatPercent(v: number) {
|
||||||
|
return (v * 100) + '%';
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.dialogRef.close(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
this.dialogRef.close(this.orderTotal * this.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
chgUILanguage(){
|
||||||
|
console.log('TIPS.chgUILanguage Called ');
|
||||||
|
this.languageService.getViewElements('tips').subscribe(
|
||||||
|
response => {
|
||||||
|
console.log('Received >> ', response );
|
||||||
|
console.log('Language Code : ', response.language);
|
||||||
|
console.log('Component Name : ',response.component);
|
||||||
|
console.log('Language data : ',response.data);
|
||||||
|
|
||||||
|
this.vE.tipsEnterTip = response.data.tips_enter_tip;
|
||||||
|
this.vE.tipsSubtotal = response.data.tips_subtotal;
|
||||||
|
this.vE.tipsTip = response.data.tips_tip;
|
||||||
|
this.vE.tipsTotal = response.data.tips_total;
|
||||||
|
this.vE.tipsNoTipBtn = response.data.tips_notip_btn;
|
||||||
|
this.vE.tipsDoneBtn = response.data.tips_done_btn;
|
||||||
|
},
|
||||||
|
error => { console.log('Error >> ',error); }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,7 +39,8 @@ export class UserService{
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
},
|
},
|
||||||
countries: []
|
countries: []
|
||||||
};
|
};
|
||||||
|
@ -162,17 +163,54 @@ export class UserService{
|
||||||
}
|
}
|
||||||
|
|
||||||
saveOwnerSettings(o: Owner) {
|
saveOwnerSettings(o: Owner) {
|
||||||
let obs = this.http.post(this.beUrl + 'api/ownersettings', {payload: o}, {headers: this.reqHeaders, params: this.reqParams});
|
//console.log('saveOwnerSettings: ' + o.viewkey);
|
||||||
|
if(o.viewkey.length > 20) {
|
||||||
|
this.saveOwnerViewingKey(o.viewkey).subscribe({
|
||||||
|
next: () => {
|
||||||
|
let obs = this.http.post(this.beUrl + 'api/ownersettings', {payload: o}, {headers: this.reqHeaders, params: this.reqParams});
|
||||||
|
obs.subscribe({
|
||||||
|
next: () => {
|
||||||
|
this.getOwner();
|
||||||
|
},
|
||||||
|
error: (error) => {
|
||||||
|
if ( error.status == 500 ){
|
||||||
|
this.notifierService.showNotification("Saving settings failed", "Close", "error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
let obs = this.http.post(this.beUrl + 'api/ownersettings', {payload: o}, {headers: this.reqHeaders, params: this.reqParams});
|
||||||
|
obs.subscribe({
|
||||||
|
next: () => {
|
||||||
|
this.getOwner();
|
||||||
|
},
|
||||||
|
error: (error) => {
|
||||||
|
if ( error.status == 500 ){
|
||||||
|
this.notifierService.showNotification("Saving settings failed", "Close", "error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveOwnerViewingKey(vk: string){
|
||||||
|
let obs = this.http.post(this.beUrl + 'api/ownervk', {payload: vk}, {headers: this.reqHeaders, params: this.reqParams});
|
||||||
obs.subscribe({
|
obs.subscribe({
|
||||||
next: () => {
|
next: () => {
|
||||||
this.getOwner();
|
this.getOwner();
|
||||||
},
|
},
|
||||||
error: (error) => {
|
error: (error) => {
|
||||||
if ( error.status == 500 ){
|
if (error.status == 400) {
|
||||||
this.notifierService.showNotification("Saving settings failed", "Close", "error")
|
this.notifierService.showNotification('Invalid viewing key, changes not saved', 'Close', 'error');
|
||||||
|
} else if (error.status == 403) {
|
||||||
|
this.notifierService.showNotification('Viewing key does not match shop, changes not saved', 'Close', 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
|
return obs;
|
||||||
}
|
}
|
||||||
|
|
||||||
getOwner() {
|
getOwner() {
|
||||||
|
|
|
@ -42,7 +42,8 @@ export class ViewerComponent implements OnInit {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
public price: number = 1;
|
public price: number = 1;
|
||||||
public addrUpdate: Observable<string>;
|
public addrUpdate: Observable<string>;
|
||||||
|
@ -136,7 +137,7 @@ export class ViewerComponent implements OnInit {
|
||||||
this.user = user;
|
this.user = user;
|
||||||
//console.log('Viewer loginCheck', this.user);
|
//console.log('Viewer loginCheck', this.user);
|
||||||
if (!this.owner.paid || !this.user.validated) {
|
if (!this.owner.paid || !this.user.validated) {
|
||||||
//console.log('Log in expired!');
|
// console.log('Log in expired!');
|
||||||
this.router.navigate(['/login']);
|
this.router.navigate(['/login']);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,7 +24,7 @@ export class XeroService {
|
||||||
savedAcc : boolean = false;
|
savedAcc : boolean = false;
|
||||||
|
|
||||||
public savedAccObs = new Observable((observer) => {
|
public savedAccObs = new Observable((observer) => {
|
||||||
console.log("starting savedAccObs");
|
//console.log("starting savedAccObs");
|
||||||
setTimeout(() => {observer.next(this.savedAcc)},1000);
|
setTimeout(() => {observer.next(this.savedAcc)},1000);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -65,15 +65,14 @@ export class XeroService {
|
||||||
return obs;
|
return obs;
|
||||||
}
|
}
|
||||||
|
|
||||||
getXeroAccessToken(code: string, address: string){
|
getXeroAccessToken(code: string){
|
||||||
const params = this.reqParams.append('code', code).append('address', address);
|
const params = this.reqParams.append('code', code);
|
||||||
let obs = this.http.get(this.beUrl + 'api/xerotoken' , {headers: this.reqHeaders, params: params, observe: 'response'});
|
let obs = this.http.get(this.beUrl + 'api/xerotoken' , {headers: this.reqHeaders, params: params, observe: 'response'});
|
||||||
return obs;
|
return obs;
|
||||||
}
|
}
|
||||||
|
|
||||||
getXeroAccountCode(address: string){
|
getXeroAccountCode(){
|
||||||
const params = this.reqParams.append('address', address);
|
let obs = this.http.get<{message: string, code: string}>(this.beUrl + 'api/xeroaccount', {headers: this.reqHeaders, params: this.reqParams, observe: 'response'});
|
||||||
let obs = this.http.get<{message: string, code: string}>(this.beUrl + 'api/xeroaccount', {headers: this.reqHeaders, params: params, observe: 'response'});
|
|
||||||
obs.subscribe(accountResponse => {
|
obs.subscribe(accountResponse => {
|
||||||
if (accountResponse.status == 200) {
|
if (accountResponse.status == 200) {
|
||||||
this.xeroAcc = accountResponse.body!.code;
|
this.xeroAcc = accountResponse.body!.code;
|
||||||
|
|
|
@ -40,7 +40,8 @@ export class XeroRegComponent implements OnInit {
|
||||||
expiration: new Date(Date.now()).toISOString(),
|
expiration: new Date(Date.now()).toISOString(),
|
||||||
payconf: false,
|
payconf: false,
|
||||||
crmToken: '',
|
crmToken: '',
|
||||||
viewkey: ''
|
viewkey: '',
|
||||||
|
tips: false
|
||||||
};
|
};
|
||||||
public ownerUpdate:Observable<Owner>;
|
public ownerUpdate:Observable<Owner>;
|
||||||
public flag: boolean = false;
|
public flag: boolean = false;
|
||||||
|
@ -77,7 +78,7 @@ export class XeroRegComponent implements OnInit {
|
||||||
this.activatedRoute.queryParams.subscribe((params) => {
|
this.activatedRoute.queryParams.subscribe((params) => {
|
||||||
//console.log(params);
|
//console.log(params);
|
||||||
if (params.state === this.owner.address.substring(0,6)) {
|
if (params.state === this.owner.address.substring(0,6)) {
|
||||||
this.xeroService.getXeroAccessToken(params.code, this.owner.address).subscribe(tokenData => {
|
this.xeroService.getXeroAccessToken(params.code).subscribe(tokenData => {
|
||||||
if (tokenData.status == 200) {
|
if (tokenData.status == 200) {
|
||||||
//console.log(tokenData.body!);
|
//console.log(tokenData.body!);
|
||||||
this.flag = true;
|
this.flag = true;
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
|
<meta http-equiv="Content-Security-Policy"
|
||||||
|
content=
|
||||||
|
"connect-src 'self' https://test.zgo.cash https://zgo.cash https://api.zgo.cash https://dev.zgo.cash https://app.zgo.cash ;
|
||||||
|
default-src 'self' 'unsafe-inline';
|
||||||
|
style-src 'self' https://fonts.googleapis.com 'unsafe-inline' ;
|
||||||
|
img-src 'self' https://fonts.googleapis.com http://www.w3.org data: ;
|
||||||
|
font-src 'self' http://www.w3.org https://fonts.gstatic.com https://fonts.gstatic.com ; ">
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Z-Go!</title>
|
<title>ZGo - The Zcash Register</title>
|
||||||
<base href="/">
|
<base href="/">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||||
|
|
|
@ -1,73 +1,75 @@
|
||||||
[{ "language":"br-US", "component":"business", "data" : { "business_accept_terms":"Eu aceito os ","business_addrs_nobiz":"Não temos um negócio associado a este endereço Zcash, por favor insira suas informações abaixo:","business_biz_addressholder":"Endereço","business_biz_addresslbl":"Endereço:","business_biz_cityholder":"Cidade","business_biz_citylbl":"Cidade:","business_biz_countryholder":"País","business_biz_countrylbl":"País:","business_biz_info":"Insira os dados da empresa","business_biz_mailholder":"exemplo@dominio.com","business_biz_maillbl":"E-mail","business_biz_nameholder":"Nome da empresa","business_biz_namelbl":"Nome da empresa:","business_biz_pcodeholder":"Código Postal","business_biz_pcodelbl":"Código postal:","business_biz_stateholder":"Estado/Provincia","business_biz_statelbl":"Estado/Provincia","business_biz_websiteholder":"Website","business_biz_websitelbl":"Website","business_contact_fnamelbl":"Primeiro nome do contato:","business_contact_fnholder":"Nome","business_contact_lnamelbl":"Último sobrenome do contato:","business_contact_lnholder":"Sobrenome ","business_save_btn":"Salvar","business_select_session":"Selecione a duração da sessão que você necessita:","business_session_label":"Sessão:","business_session_lengthlbl":"Duração da sessão","business_session_paylbl":"Pagar","business_signup_title":"Inscrição de negócio","business_terms_ofuse":"Termos de Uso","business_zgo_confirmlbl":"ZGo confirma o seu pagamento"}},
|
[{ "language":"br-US", "component":"business", "data" : { "business_accept_terms":"Eu aceito os","business_addrs_nobiz":"Não temos um negócio associado a este endereço Zcash, por favor insira suas informações abaixo:","business_biz_addressholder":"Endereço","business_biz_addresslbl":"Endereço:","business_biz_cityholder":"Cidade","business_biz_citylbl":"Cidade:","business_biz_countryholder":"País","business_biz_countrylbl":"País:","business_biz_info":"Insira os dados da empresa","business_biz_mailholder":"exemplo@dominio.com","business_biz_maillbl":"E-mail","business_biz_nameholder":"Nome da empresa","business_biz_namelbl":"Nome da empresa:","business_biz_pcodeholder":"Código Postal","business_biz_pcodelbl":"Código postal:","business_biz_stateholder":"Estado/Provincia","business_biz_statelbl":"Estado/Provincia","business_biz_websiteholder":"Website","business_biz_websitelbl":"Website","business_contact_fnamelbl":"Primeiro nome do contato:","business_contact_fnholder":"Nome","business_contact_lnamelbl":"Último sobrenome do contato:","business_contact_lnholder":"Sobrenome","business_save_btn":"Salvar","business_select_session":"Selecione a duração da sessão que você necessita:","business_session_label":"Sessão:","business_session_lengthlbl":"Duração da sessão","business_session_paylbl":"Pagar","business_signup_title":"Inscrição de negócio","business_terms_ofuse":"Termos de Uso","business_zgo_confirmlbl":"ZGo confirma o seu pagamento"}},
|
||||||
{ "language":"br-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Sim","cancel_dismiss_btn":"Não","cancel_title":"Cancelar?"}},
|
{ "language":"br-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Confirmar","cancel_dismiss_btn":"Descartar","cancel_title":"Cancelar"}},
|
||||||
{ "language":"br-US", "component":"checkout", "data" : { "checkout_accept_btn":"Aceitar","checkout_cant_scan":"Não consegue escanear?","checkout_close_btn":"Fechar","checkout_copyaddress_error":"Erro ao copiar endereço","checkout_copyamount_error":"Erro ao copiar o valor","checkout_copymemo_error":"Erro ao copiar o memorando","checkout_copy_address":"Copiar Endereço","checkout_copy_amount":"Copiar Valor","checkout_copy_memo":"Copiar Memo","checkout_copy_notavail":"Funcionalidade de cópia não suportada!!","checkout_notserv_close":"Fechar","checkout_notserv_error":"Erro","checkout_scan_payment":"Escaneie para fazer o pagamento","checkout_use_this":"Use isso ","checkout_wallet_link":"link de carteira","checkout_wallet_or":", ou "}},
|
{ "language":"br-US", "component":"checkout", "data" : { "checkout_accept_btn":"Aceitar","checkout_cant_scan":"Não consegue escanear?","checkout_close_btn":"Fechar","checkout_copyaddress_error":"Erro ao copiar endereço","checkout_copyamount_error":"Erro ao copiar o valor","checkout_copymemo_error":"Erro ao copiar o memorando","checkout_copy_address":"Copiar Endereço","checkout_copy_amount":"Copiar Valor","checkout_copy_memo":"Copiar Memo","checkout_copy_notavail":"Funcionalidade de cópia não suportada!!","checkout_notserv_close":"Fechar","checkout_notserv_error":"Erro","checkout_scan_payment":"Escaneie para fazer o pagamento","checkout_use_this":"Use este/isso","checkout_wallet_link":"link de carteira","checkout_wallet_or":", ou"}},
|
||||||
{ "language":"br-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancelar","dbexport_closed_no":"Não","dbexport_closed_yes":"Sim","dbexport_date_range":"Intervalo de datas:","dbexport_download_link":"Download","dbexport_end_date":"Data de término","dbexport_export_descrip":"Exportar pedidos em um arquivo de formato .CSV","dbexport_file_header":"\"Data\",\"ID do pedido\",\"Moeda\",\"Fechado?\",\"Valor\",\"Taxa\",\"ZEC\",\"Pago?\",\"Fatura\"","dbexport_invalid_end":"Data final inválida","dbexport_invalid_start":"Data de início inválida","dbexport_noorders_created":"Você não tem pedidos criados.","dbexport_nothing_todo":"Nada para fazer.","dbexport_paid_no":"Não","dbexport_paid_yes":"Sim","dbexport_settings_title":"Exportar pedidos","dbexport_start_date":"Data de início"}},
|
{ "language":"br-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancelar","dbexport_closed_no":"Não","dbexport_closed_yes":"Sim","dbexport_date_range":"Intervalo de datas:","dbexport_download_link":"Download","dbexport_end_date":"Data de término","dbexport_export_descrip":"Exportar pedidos em um arquivo de formato .CSV","dbexport_file_header":"\"Data\",\"ID do pedido\",\"Moeda\",\"Fechado?\",\"Valor\",\"Taxa\",\"ZEC\",\"Imposto\",\"ICM\",\"Ponta\",\"Pago?\",\"Fatura\"","dbexport_invalid_end":"Data final inválida","dbexport_invalid_start":"Data de início inválida","dbexport_noorders_created":"Você não tem pedidos criados.","dbexport_nothing_todo":"Nada para fazer.","dbexport_paid_no":"Não","dbexport_paid_yes":"Sim","dbexport_settings_title":"Exportar pedidos","dbexport_start_date":"Data de início"}},
|
||||||
{ "language":"br-US", "component":"header", "data" : { "header_get_currency":"Moeda:","header_last_block":"Último Bloco:","header_logout_lbl":"Sair?","header_logout_msg1":"Tem certeza de que deseja se desconectar do ZGo?","header_logout_msg2":"Você terá que vincular novamente sua carteira por meio de um memo protegido."}},
|
{ "language":"br-US", "component":"header", "data" : { "header_get_currency":"Moeda:","header_last_block":"Último Bloco:"}},
|
||||||
{ "language":"br-US", "component":"invoice", "data" : { "invoice_cant_scan":"Não consegue escanear?","invoice_copyaddress_error":"Erro ao copiar endereço","invoice_copyamount_error":"Erro ao copiar o valor","invoice_copymemo_error":"Erro ao copiar o memorando","invoice_copy_address":"Copiar Endereço","invoice_copy_amount":"Copiar Valor","invoice_copy_memo":"Copiar Memo","invoice_copy_notavail":"Funcionalidade de cópia não suportada","invoice_dot_or":", ou","invoice_info_notavail":"Não há informação disponível.","invoice_invalid_id":"ID do fatura incorreto.","invoice_invoice_lbl":"Fatura","invoice_invoice_total":"Total da Fatura:","invoice_notserv_close":"Fechar","invoice_notserv_error":"Erro","invoice_order_date":"Data: ","invoice_order_id":"ID do Pedido: ","invoice_order_price":"Preço ","invoice_payment_confirmed":"Pagamento Confirmado!!","invoice_payment_pending":"Pagamento Pendente!!","invoice_qty_lbl":"Qtde.","invoice_return_toshop":"Voltar à Loja","invoice_scan_qrcode":"Escaneie o QR Code com sua carteira para efetuar o pagamento","invoice_use_this":"Use isso ","invoice_wallet_link":"Link da Carteira","invoice_zcash_price":"Preço da Zcash: "}},
|
{ "language":"br-US", "component":"invoice", "data" : { "invoice_cant_scan":"Não consegue escanear?","invoice_copyaddress_error":"Erro ao copiar endereço","invoice_copyamount_error":"Erro ao copiar o valor","invoice_copymemo_error":"Erro ao copiar o memorando","invoice_copy_address":"Copiar Endereço","invoice_copy_amount":"Copiar Valor","invoice_copy_memo":"Copiar Memo","invoice_copy_notavail":"Funcionalidade de cópia não suportada","invoice_dot_or":", ou","invoice_info_notavail":"Não há informação disponível.","invoice_invalid_id":"ID do fatura incorreto.","invoice_invoice_lbl":"Fatura","invoice_invoice_total":"Total da Fatura:","invoice_notserv_close":"Fechar","invoice_notserv_error":"Erro","invoice_order_date":"Data:","invoice_order_id":"ID do Pedido:","invoice_order_price":"Preço","invoice_payment_confirmed":"Pagamento Confirmado!!","invoice_payment_pending":"Pagamento Pendente!!","invoice_qty_lbl":"Qtde.","invoice_return_toshop":"Voltar à Loja","invoice_scan_qrcode":"Escaneie o QR Code com sua carteira para efetuar o pagamento","invoice_tax":"Imposto","invoice_tip":"Ponta","invoice_use_this":"Use isso","invoice_vat":"ICM","invoice_wallet_link":"Link da Carteira","invoice_zcash_price":"Preço da Zcash:"}},
|
||||||
{ "language":"br-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Adicionar ao Pedido","itemadd_cancel_btn":"Cancelar","itemadd_save_btn":"Adicionar"}},
|
{ "language":"br-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Adicionar Item ao Pedido","itemadd_cancel_btn":"Cancelar","itemadd_save_btn":"Adicionar"}},
|
||||||
{ "language":"br-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Adicionar Item","itemcreate_close_btn":"Fechar","itemcreate_item_descr":"Descrição","itemcreate_item_lbl":"Item","itemcreate_item_price":"Preço","itemcreate_save_btn":"Salvar","itemcreate_use_nums":"Use apenas números"}},
|
{ "language":"br-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Adicionar Item","itemcreate_close_btn":"Fechar","itemcreate_item_descr":"Descrição","itemcreate_item_lbl":"Item","itemcreate_item_price":"Preço","itemcreate_save_btn":"Salvar","itemcreate_use_nums":"Use apenas números"}},
|
||||||
{ "language":"br-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Fechar","itemdel_confirm_del":"Tem certeza de que deseja apagar ","itemdel_delete_btn":"Excluir","itemdel_del_item":"Excluir Item"}},
|
{ "language":"br-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Fechar","itemdel_confirm_del":"Tem certeza de que deseja apagar","itemdel_delete_btn":"Excluir","itemdel_del_item":"Excluir Item"}},
|
||||||
{ "language":"br-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Fechar","itemedit_edit_item":"Editar Item","itemedit_item_descr":"Descrição ","itemedit_item_label":"Item","itemedit_item_price":"Preço:","itemedit_save_btn":"Salvar"}},
|
{ "language":"br-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Fechar","itemedit_edit_item":"Editar Item","itemedit_item_descr":"Descrição","itemedit_item_label":"Item","itemedit_item_price":"Preço:","itemedit_save_btn":"Salvar"}},
|
||||||
{ "language":"br-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Items disponíveis:","itemlist_item_added":"Item criado com sucesso!","itemlist_item_deleted":"Item deletado!!","itemlist_item_updated":"Informações do item atualizadas!!","itemlist_list_empty":"Ainda não há itens","itemlist_notif_close":"Fechar","itemlist_notif_success":"Sucesso"}},
|
{ "language":"br-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Items disponíveis:","itemlist_list_empty":"Ainda não há itens"}},
|
||||||
{ "language":"br-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Voltar a Loja","listorders_end_date":"Sessão válida até: ","listorders_export_orders":"Exportar Pedidos","listorders_invoice_btn":"Fatura","listorders_item_lbl":"Item","listorders_no_orders":"Não há Pedidos","listorders_order_id":"ID do Pedido","listorders_order_total":"Total do Pedido:","listorders_overall_total":"Total geral: ","listorders_qty_lbl":"Qtde.","listorders_receipt_btn":"Comprovante","listorders_todays_total":"Total de hoje: ","listorders_total_lbl":"Total"}},
|
{ "language":"br-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Voltar a Loja","listorders_export_orders":"Exportar Pedidos","listorders_invoice_btn":"Fatura","listorders_item_lbl":"Item","listorders_no_orders":"Não há Pedidos","listorders_order_id":"ID do Pedido","listorders_order_total":"Total do Pedido:","listorders_overall_total":"Total geral:","listorders_qty_lbl":"Qtde.","listorders_receipt_btn":"Comprovante","listorders_tax":"Imposto","listorders_tip":"Ponta","listorders_todays_total":"Total de hoje:","listorders_total_lbl":"Total","listorders_vat":"ICM"}},
|
||||||
{ "language":"br-US", "component":"login", "data" : { "login_check_wallet":"Verifique sua carteira!!","login_confirm_login":"ZGo confirma seu login na blockchain da Zcash","login_confirm_pin":"Confirmar Senha","login_connect_to_zgo":"Conecte sua carteira ao ZGo","login_enter_pin":"Insira a senha enviada pela ZGo para confirmar a propriedade da carteira:","login_last_block":"Último bloco visto:","login_link_wallet":"Conecte sua carteira","login_wrong_pin":"Senha incorreta!"}},
|
{ "language":"br-US", "component":"login", "data" : { "login_check_wallet":"Verifique sua carteira!!","login_confirm_login":"ZGo confirma seu login na blockchain da Zcash","login_confirm_pin":"Confirmar Senha","login_connect_to_zgo":"Conecte sua carteira ao ZGo","login_enter_pin":"Insira a senha enviada pela ZGo para confirmar a propriedade da carteira:","login_last_block":"Último bloco visto:","login_link_wallet":"Conecte sua carteira","login_wrong_pin":"Senha incorreta!"}},
|
||||||
{ "language":"br-US", "component":"main", "data" : { "main_price_data":"Preços informados pela CoinGecko API"}},
|
{ "language":"br-US", "component":"main", "data" : { "main_price_data":"Preços informados pela CoinGecko API"}},
|
||||||
{ "language":"br-US", "component":"order", "data" : { "order_cancel_btn":"Cancelar","order_cancel_ok":"Pedido cancelado com sucesso!","order_cancel_order":"Cancelar o pedido?","order_checkout_btn":"Procesar","order_confirm_cancel":"Tem certeza que deseja cancelar o pedido?","order_confirm_remove":"Tem certeza que deseja remover <<","order_confirm_remove1":" deste pedido?","order_invoice_btn":"Fatura","order_item_lbl":"Item","order_notserv_close":"Fechar","order_notserv_success":"succeso","order_no_openorder":"Sem pedido aberto!!","order_qty_lbl":"Qtde.","order_remove_item":"Remover o Item?","order_total_lbl":"Total","order_total_title":"Total do Pedido:"}},
|
{ "language":"br-US", "component":"order", "data" : { "order_cancel_btn":"Cancelar","order_cancel_ok":"Pedido cancelado com sucesso!","order_cancel_order":"Cancelar o pedido?","order_checkout_btn":"Procesar","order_confirm_cancel":"Tem certeza que deseja cancelar o pedido?","order_confirm_remove":"Tem certeza que deseja remover <<","order_confirm_remove1":" deste pedido?","order_invoice_btn":"Fatura","order_item_lbl":"Item","order_notserv_close":"Fechar","order_notserv_success":"succeso","order_no_openorder":"Sem pedido aberto!!","order_qty_lbl":"Qtde.","order_remove_item":"Remover o Item?","order_total_lbl":"Total","order_total_title":"Total do Pedido:"}},
|
||||||
{ "language":"br-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"O Valor não","pmtservice_cant_scan":"Não consegue escanear?","pmtservice_connecto_xero":"Conexão para o Xero","pmtservice_copyaddress_error":"Erro ao copiar endereço","pmtservice_copyamount_error":"Erro ao copiar o valor","pmtservice_copymemo_error":"Erro ao copiar o memorando","pmtservice_copy_address":"Copiar Endereço","pmtservice_copy_amount":"Copiar Valor","pmtservice_copy_memo":"Copiar Memo","pmtservice_copy_notavail":"Funcionalidade de cópia não suportada","pmtservice_currency_notsup":"não suportada!!","pmtservice_enabled_for":"habilitado para","pmtservice_hdr_txt1":"Fatura","pmtservice_hdr_txt2":"ID do Pedido: ","pmtservice_hdr_txt3":"Data: ","pmtservice_invalid_ownerid":"ID do proprietário inválido!!","pmtservice_invoice_currency":"Moeda","pmtservice_invoice_invalid":"tipo inválido!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"não encontrada!!","pmtservice_invoice_num":"Fatura","pmtservice_invoice_paid":"já pago!!","pmtservice_invoice_price":"Preço","pmtservice_invoice_qty":"Qtde.","pmtservice_invoice_total":"Total da Fatura:","pmtservice_match_value":"corresponde ao valor","pmtservice_notserv_close":"Fechar","pmtservice_notserv_error":"Erro","pmtservice_payment_confirmed":"Pagamento Confirmado!!","pmtservice_payment_notprocessed":"Pedido de pagamento não foi processado!!","pmtservice_payment_pending":"Pagamento Pendente!!","pmtservice_pmtsrv_not":"Serviço de pagamento não","pmtservice_reported_byxero":"reportado por Xero!!","pmtservice_scan_qrcode":"Escaneie o QR Code com sua carteira para efetuar o pagamento","pmtservice_server_failed":"servidor falhou!!","pmtservice_use_this":"Use isso","pmtservice_wallet_link":"Link da Carteira","pmtservice_zecdata_price":"Preço da Zcash:","pmtservice_zecdata_total":"Total: "}},
|
{ "language":"br-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"O Valor não","pmtservice_cant_scan":"Não consegue escanear?","pmtservice_connecto_xero":"Conexão para o Xero","pmtservice_copyaddress_error":"Erro ao copiar endereço","pmtservice_copyamount_error":"Erro ao copiar o valor","pmtservice_copymemo_error":"Erro ao copiar o memorando","pmtservice_copy_address":"Copiar Endereço","pmtservice_copy_amount":"Copiar Valor","pmtservice_copy_memo":"Copiar Memo","pmtservice_copy_notavail":"Funcionalidade de cópia não suportada","pmtservice_currency_notsup":"não suportada!!","pmtservice_enabled_for":"habilitado para","pmtservice_hdr_txt1":"Fatura","pmtservice_hdr_txt2":"ID do Pedido:","pmtservice_hdr_txt3":"Data:","pmtservice_invalid_ownerid":"ID do proprietário inválido!!","pmtservice_invoice_currency":"Moeda","pmtservice_invoice_invalid":"tipo inválido!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"não encontrada!!","pmtservice_invoice_num":"Fatura","pmtservice_invoice_paid":"já pago!!","pmtservice_invoice_price":"Preço","pmtservice_invoice_qty":"Qtde.","pmtservice_invoice_total":"Total da Fatura:","pmtservice_match_value":"corresponde ao valor","pmtservice_notserv_close":"Fechar","pmtservice_notserv_error":"Erro","pmtservice_payment_confirmed":"Pagamento Confirmado!!","pmtservice_payment_notprocessed":"Pedido de pagamento não foi processado!!","pmtservice_payment_pending":"Pagamento Pendente!!","pmtservice_pmtsrv_not":"Serviço de pagamento não","pmtservice_reported_byxero":"reportado por Xero!!","pmtservice_scan_qrcode":"Escaneie o QR Code com sua carteira para efetuar o pagamento","pmtservice_server_failed":"servidor falhou!!","pmtservice_use_this":"Use isso","pmtservice_wallet_link":"Link da Carteira","pmtservice_zecdata_price":"Preço da Zcash:","pmtservice_zecdata_total":"Total:"}},
|
||||||
{ "language":"br-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão enviar ao invés disso","promptinvoice_invoice_cancel":"Cancelar","promptinvoice_invoice_clipboard":"URL da fatura copiado para a área de transferência!!","promptinvoice_invoice_sent":"Enviado!","promptinvoice_invoice_url":"URL da Fatura:","promptinvoice_notserv_close":"Fechar","promptinvoice_notserv_error":"Erro","promptinvoice_notserv_success":"Suceso","promptinvoice_send_link":"Envie o link da fatura para o seu cliente:"}},
|
{ "language":"br-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão enviar ao invés disso","promptinvoice_invoice_cancel":"Cancelar","promptinvoice_invoice_clipboard":"URL da fatura copiado para a área de transferência!!","promptinvoice_invoice_sent":"Enviado!","promptinvoice_invoice_url":"URL da Fatura:","promptinvoice_notserv_close":"Fechar","promptinvoice_notserv_error":"Erro","promptinvoice_notserv_success":"Suceso","promptinvoice_send_link":"Envie o link da fatura para o seu cliente:"}},
|
||||||
{ "language":"br-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Fechar","promptreceipt_func_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão Enviar","promptreceipt_notserv_close":"Fechar","promptreceipt_notserv_error":"Erro","promptreceipt_notserv_success":"Sucesso","promptreceipt_receipt_clipboard":"URL do comprovante foi copiado para a área de transferência!!","promptreceipt_receipt_url":"URL do comprovante:","promptreceipt_send_link":"Envie o link do comprovante para o seu cliente:"}},
|
{ "language":"br-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Fechar","promptreceipt_func_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão Enviar","promptreceipt_notserv_close":"Fechar","promptreceipt_notserv_error":"Erro","promptreceipt_notserv_success":"Sucesso","promptreceipt_receipt_clipboard":"URL do comprovante foi copiado para a área de transferência!!","promptreceipt_receipt_url":"URL do comprovante:","promptreceipt_send_link":"Envie o link do comprovante para o seu cliente:"}},
|
||||||
{ "language":"br-US", "component":"receipt", "data" : { "receipt_info_notavail":"Não há informação disponível.","receipt_invalid_id":"ID do comprovante incorreto.","receipt_order_date":"Data:","receipt_order_id":"ID do Pedido:","receipt_order_price":"Preço:","receipt_order_total":"Total:","receipt_qty_lbl":"Qtde.","receipt_receipt_lbl":"Comprovante","receipt_zcash_price":"Preço da Zcash:"}},
|
{ "language":"br-US", "component":"receipt", "data" : { "receipt_info_notavail":"Não há informação disponível.","receipt_invalid_id":"ID do comprovante incorreto.","receipt_order_date":"Data:","receipt_order_id":"ID do Pedido:","receipt_order_price":"Preço:","receipt_order_total":"Total:","receipt_qty_lbl":"Qtde.","receipt_receipt_lbl":"Comprovante","receipt_tax":"Imposto","receipt_tip":"Ponta","receipt_vat":"ICM","receipt_zcash_price":"Preço da Zcash:"}},
|
||||||
{ "language":"br-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Fechar","receiptqr_scan_receipt":"Escaneie para o seu comprovante"}},
|
{ "language":"br-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Fechar","receiptqr_scan_receipt":"Escaneie para o seu comprovante"}},
|
||||||
{ "language":"br-US", "component":"scan", "data" : { "scan_cant_scan":"Não consegue escanear? ","scan_close_btn":"Fechar","scan_copy_address":"Copiar Endereço","scan_copy_amount":"Copiar Valor","scan_copy_error":"Falha ao copiar o valor","scan_copy_memo":"Copiar Memo","scan_fail_payment":"Erro ao verificar o pagamento","scan_func_notavail":"Funcionalidade de cópia não suportada","scan_memo_sent":"Memo enviado!","scan_notserv_close":"Fechar","scan_notserv_error":"Erro","scan_or_button":"o","scan_scanqr_code":"Scanei o QR Code","scan_text_info":"Certifique-se de selecionar \"Incluir Responder-A\" na sua carteira antes de enviar o seu memorando.","scan_use_this":"Use isso ","scan_wallet_link":"Link de carteira"}},
|
{ "language":"br-US", "component":"scan", "data" : { "scan_close_btn":"Fechar","scan_copy_address":"Copiar Endereço","scan_copy_amount":"Copiar Valor","scan_copy_error":"Falha ao copiar o valor","scan_copy_memo":"Copiar Memo","scan_fail_payment":"Erro ao verificar o pagamento","scan_func_notavail":"Funcionalidade de cópia não suportada","scan_memo_sent":"Memorando enviado!","scan_notserv_close":"Fechar","scan_notserv_error":"Erro","scan_scanqr_code":"Scanei o QR Code","scan_text_info":"Certifique-se de selecionar \"Incluir Responder-A\" na sua carteira antes de enviar o seu memorando.","scan_use_this":"Não consegue escanear ? Use isso","scan_wallet_link":"Link de carteira"}},
|
||||||
{ "language":"br-US", "component":"settings", "data" : { "settings_acode_invalid":"Número da Conta inválido (10 caracteres no máximo)","settings_acode_lbl":"Número da conta:","settings_acode_notsaved":"Número da Conta não salvo!!","settings_acode_saved":"Número da conta Salvo!!","settings_close_btn":"Cancelar","settings_confirm_payments":"Confirmar pagamentos?","settings_copy_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão enviar ao invés disso","settings_currency_lbl":"Moeda","settings_link_2xero":"Conectar-se ao Xero","settings_name_lbl":"Nome","settings_name_placeholder":"Seu nome","settings_notserv_close":"Fechar","settings_notserv_error":"Erro","settings_notserv_success":"Sucesso","settings_notserv_warning":"Aviso","settings_ownerid_copied":"ID do proprietário copiado para a prancheta","settings_ownerid_notcopied":"Cópia não disponível em seu navegador","settings_pmtserv_url":"URL de Serviço de Pagamento:","settings_relink_2xero":"Reconectar-se ao Xero ","settings_save_btn":"Salvar","settings_tab_integrations":"Integrações","settings_tab_mainlbl":"Principal","settings_url_copied":"URL ZGo copiado para a prancheta!!","settings_use_satoshi":"Usar zatoshis?","settings_view_title":"Definições","settings_vkey_lbl":"Chave de visualização","settings_vkey_placeholder":"Sua chave de visualização da carteira","settings_wctoken_copied":"Token WooCommerce copiado para a prancheta","settings_wctoken_generated":"Token da WoCommerce gerado","settings_wctoken_genfail":"Geração do token da WooCommerce falhou","settings_wctoken_notcopied":"Cópia não disponível no seu navegador","settings_wc_closebtn":"Fechar","settings_wc_gentoken":"Gerar Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Proprietário:","settings_xeropmt_confirmdis":"Confirmação de pagamentos Xero desativada!! ","settings_xero_closebtn":"Fechar","settings_xero_lbl":"Xero","settings_xero_savebtn":"Salvar código"}},
|
{ "language":"br-US", "component":"settings", "data" : { "settings_acode_invalid":"Número da Conta inválido (10 caracteres no máximo)","settings_acode_lbl":"Número da conta:","settings_acode_notsaved":"Número da Conta não salvo!!","settings_acode_saved":"Número da conta Salvo!!","settings_close_btn":"Cancelar","settings_confirm_payments":"Confirmar pagamentos?","settings_copy_notavail":"Funcionalidade não disponível para o seu navegador. Use o botão enviar ao invés disso","settings_currency_lbl":"Moeda","settings_link_2xero":"Conectar-se ao Xero","settings_name_lbl":"Nome","settings_name_placeholder":"Seu nome","settings_notserv_close":"Fechar","settings_notserv_error":"Erro","settings_notserv_success":"Sucesso","settings_notserv_warning":"Aviso","settings_ownerid_copied":"ID do proprietário copiado para a prancheta","settings_ownerid_notcopied":"Cópia não disponível em seu navegador","settings_pmtserv_url":"URL de Serviço de Pagamento:","settings_relink_2xero":"Reconectar-se ao Xero","settings_sales_tax_rate_lbl":"Taxa imposto sobre vendas (%)","settings_sales_tax_rate_txt":"Taxa imposto sobre vendas (%)","settings_sales_vat_rate_lbl":"Taxa ICM (%)","settings_sales_vat_rate_txt":"Imposto sobre Circulação de Mercadorias (%)","settings_save_btn":"Salvar","settings_tab_integrations":"Integrações","settings_tab_mainlbl":"Principal","settings_url_copied":"URL ZGo copiado para a prancheta!!","settings_use_satoshi":"Usar zatoshis?","settings_use_tax":"Usar Imposto sobre vendas?","settings_use_tips":"Utiliza Pontas?","settings_use_vat":"Usar ICM?","settings_view_title":"Definições","settings_vkey_lbl":"Chave de visualização","settings_vkey_placeholder":"Sua chave de visualização da carteira","settings_wctoken_copied":"Token WooCommerce copiado para a prancheta","settings_wctoken_generated":"Token da WoCommerce gerado","settings_wctoken_genfail":"Geração do token da WooCommerce falhou","settings_wctoken_notcopied":"Cópia não disponível no seu navegador","settings_wc_closebtn":"Fechar","settings_wc_gentoken":"Gerar Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Proprietário:","settings_xeropmt_confirmdis":"Confirmação de pagamentos Xero desativada!!","settings_xero_closebtn":"Fechar","settings_xero_lbl":"Xero","settings_xero_savebtn":"Salvar código"}},
|
||||||
|
{ "language":"br-US", "component":"tips", "data" : { "tips_done_btn":"Concluido","tips_enter_tip":"Digite Ponta:","tips_notip_btn":"Sem ponta","tips_subtotal":"Subtotal","tips_tip":"Ponta","tips_total":"Total"}},
|
||||||
{ "language":"br-US", "component":"viewer", "data" : { "viewer_view_orders":"Ver Pedidos"}},
|
{ "language":"br-US", "component":"viewer", "data" : { "viewer_view_orders":"Ver Pedidos"}},
|
||||||
{ "language":"br-US", "component":"xero", "data" : { "xero_connected_2xero":"Conectado ao Xero!","xero_connecting_2xero":"Conectando ao Xero.."}},
|
{ "language":"br-US", "component":"xero", "data" : { "xero_connected_2xero":"Conectado ao Xero!","xero_connecting_2xero":"Conectando ao Xero.."}},
|
||||||
{ "language":"en-US", "component":"business", "data" : { "business_accept_terms":"I accept the ","business_addrs_nobiz":"We do not have a business associated with this Zcash address, please enter your information below:","business_biz_addressholder":"Address","business_biz_addresslbl":"Address:","business_biz_cityholder":"City","business_biz_citylbl":"City:","business_biz_countryholder":"Country","business_biz_countrylbl":"Country:","business_biz_info":"Provide business info","business_biz_mailholder":"example@domain.com","business_biz_maillbl":"E-mail:","business_biz_nameholder":"Business name","business_biz_namelbl":"Business Name:","business_biz_pcodeholder":"Postal code","business_biz_pcodelbl":"Postal Code:","business_biz_stateholder":"State or Province","business_biz_statelbl":"State/Province:","business_biz_websiteholder":"website","business_biz_websitelbl":"Website:","business_contact_fnamelbl":"Contact First name:","business_contact_fnholder":"First name","business_contact_lnamelbl":"Contact Last Name:","business_contact_lnholder":"Last Name","business_save_btn":"Save","business_select_session ":"Please select the length of session that you need:","business_session_label":"Session:","business_session_lengthlbl":"Session Length","business_session_paylbl":"Pay","business_signup_title":"Business sign-up","business_terms_ofuse":"Terms of Use","business_zgo_confirmlbl":"ZGo confirms your payment"}},
|
{ "language":"en-US", "component":"business", "data" : { "business_accept_terms":"I accept the","business_addrs_nobiz":"We do not have a business associated with this Zcash address, please enter your information below:","business_biz_addressholder":"Address","business_biz_addresslbl":"Address:","business_biz_cityholder":"City","business_biz_citylbl":"City:","business_biz_countryholder":"Country","business_biz_countrylbl":"Country:","business_biz_info":"Provide business info","business_biz_mailholder":"example@domain.com","business_biz_maillbl":"E-mail:","business_biz_nameholder":"Business name","business_biz_namelbl":"Business Name:","business_biz_pcodeholder":"Postal code","business_biz_pcodelbl":"Postal Code:","business_biz_stateholder":"State or Province","business_biz_statelbl":"State/Province:","business_biz_websiteholder":"website","business_biz_websitelbl":"Website:","business_contact_fnamelbl":"Contact First name:","business_contact_fnholder":"First name","business_contact_lnamelbl":"Contact Last Name:","business_contact_lnholder":"Last Name","business_save_btn":"Save","business_select_session":"Please select the length of session that you need:","business_session_label":"Session:","business_session_lengthlbl":"Session Length","business_session_paylbl":"Pay","business_signup_title":"Business sign-up","business_terms_ofuse":"Terms of Use","business_zgo_confirmlbl":"ZGo confirms your payment"}},
|
||||||
{ "language":"en-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Yes","cancel_dismiss_btn":"No","cancel_title":"Cancel?"}},
|
{ "language":"en-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Confirm","cancel_dismiss_btn":"Dismiss","cancel_title":"Cancel"}},
|
||||||
{ "language":"en-US", "component":"checkout", "data" : { "checkout_accept_btn":"Accept","checkout_cant_scan":"Can't scan?","checkout_close_btn":"Close","checkout_copyaddress_error":"Error copying address","checkout_copyamount_error":"Error while copying ammount","checkout_copymemo_error":"Error while copying Memo","checkout_copy_address":"Copy Address","checkout_copy_amount":"Copy Amount","checkout_copy_memo":"Copy Memo","checkout_copy_notavail":"Copy functionality not supported!!","checkout_notserv_close":"Close","checkout_notserv_error":"Error","checkout_scan_payment":"Scan to make payment","checkout_use_this":"Use this ","checkout_wallet_link":"wallet link","checkout_wallet_or":", or "}},
|
{ "language":"en-US", "component":"checkout", "data" : { "checkout_accept_btn":"Accept","checkout_cant_scan":"Can't scan?","checkout_close_btn":"Close","checkout_copyaddress_error":"Error copying address","checkout_copyamount_error":"Error while copying ammount","checkout_copymemo_error":"Error while copying Memo","checkout_copy_address":"Copy Address","checkout_copy_amount":"Copy Amount","checkout_copy_memo":"Copy Memo","checkout_copy_notavail":"Copy functionality not supported!!","checkout_notserv_close":"Close","checkout_notserv_error":"Error","checkout_scan_payment":"Scan to make payment","checkout_use_this":"Use this","checkout_wallet_link":"wallet link","checkout_wallet_or":", or"}},
|
||||||
{ "language":"en-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancel","dbexport_closed_no":"No","dbexport_closed_yes":"Yes","dbexport_date_range":"Date Range:","dbexport_download_link":"Download","dbexport_end_date":"End date","dbexport_export_descrip":"Export orders in a .CSV format file","dbexport_file_header":"\"Date\",\"Order ID\",\"Currency\",\"Closed?\",\"Amount\",\"Rate\",\"ZEC\",\"Paid?\",\"Invoice\"","dbexport_invalid_end":"Invalid end date","dbexport_invalid_start":"Invalid start date","dbexport_noorders_created":"You have no orders created.","dbexport_nothing_todo":"Nothing to do.","dbexport_paid_no":"No","dbexport_paid_yes":"Yes","dbexport_settings_title":"Export Orders","dbexport_start_date":"Start date"}},
|
{ "language":"en-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancel","dbexport_closed_no":"No","dbexport_closed_yes":"Yes","dbexport_date_range":"Date Range:","dbexport_download_link":"Download","dbexport_end_date":"End date","dbexport_export_descrip":"Export orders in a .CSV format file","dbexport_file_header":"\"Date\",\"Order ID\",\"Currency\",\"Closed?\",\"Amount\",\"Rate\",\"ZEC\",\"Tax\",\"VAT\",\"Tip\",\"Paid?\",\"Invoice\"","dbexport_invalid_end":"Invalid end date","dbexport_invalid_start":"Invalid start date","dbexport_noorders_created":"You have no orders created.","dbexport_nothing_todo":"Nothing to do.","dbexport_paid_no":"No","dbexport_paid_yes":"Yes","dbexport_settings_title":"Export Orders","dbexport_start_date":"Start date"}},
|
||||||
{ "language":"en-US", "component":"header", "data" : { "header_get_currency":"Currency:","header_last_block":"Last Block:","header_logout_lbl":"Logout?","header_logout_msg1":"Are you sure you want to disconnect from ZGo?","header_logout_msg2":"You will have to re-link your wallet via shielded memo."}},
|
{ "language":"en-US", "component":"header", "data" : { "header_get_currency":"Currency:","header_last_block":"Last Block:"}},
|
||||||
{ "language":"en-US", "component":"invoice", "data" : { "invoice_cant_scan":"Can't scan?","invoice_copyaddress_error":"Error while copying address","invoice_copyamount_error":"Error while copying amount","invoice_copymemo_error":"Error while copying Memo","invoice_copy_address":"Copy Address","invoice_copy_amount":"Copy Amount","invoice_copy_memo":"Copy Memo","invoice_copy_notavail":"Copy functionality not supported","invoice_dot_or":", or","invoice_info_notavail":"No information available.","invoice_invalid_id":"Incorrect Invoice ID.","invoice_invoice_lbl":"Invoice","invoice_invoice_total":"Invoice Total: ","invoice_notserv_close":"Close","invoice_notserv_error":"Error","invoice_order_date":"Date: ","invoice_order_id":"Order ID: ","invoice_order_price":"Price ","invoice_payment_confirmed":"Payment Confirmed!!","invoice_payment_pending":"Payment Pending!!","invoice_qty_lbl":"Qty.","invoice_return_toshop":"Return to Shop","invoice_scan_qrcode":"Scan the QR code with your wallet to make payment","invoice_use_this":"Use this ","invoice_wallet_link":"wallet link","invoice_zcash_price":"Zcash price: "}},
|
{ "language":"en-US", "component":"invoice", "data" : { "invoice_cant_scan":"Can't scan?","invoice_copyaddress_error":"Error while copying address","invoice_copyamount_error":"Error while copying amount","invoice_copymemo_error":"Error while copying Memo","invoice_copy_address":"Copy Address","invoice_copy_amount":"Copy Amount","invoice_copy_memo":"Copy Memo","invoice_copy_notavail":"Copy functionality not supported","invoice_dot_or":", or","invoice_info_notavail":"No information available.","invoice_invalid_id":"Incorrect Invoice ID.","invoice_invoice_lbl":"Invoice","invoice_invoice_total":"Invoice Total:","invoice_notserv_close":"Close","invoice_notserv_error":"Error","invoice_order_date":"Date:","invoice_order_id":"Order ID:","invoice_order_price":"Price","invoice_payment_confirmed":"Payment Confirmed!!","invoice_payment_pending":"Payment Pending!!","invoice_qty_lbl":"Qty.","invoice_return_toshop":"Return to Shop","invoice_scan_qrcode":"Scan the QR code with your wallet to make payment","invoice_tax":"Sales Tax","invoice_tip":"Tip","invoice_use_this":"Use this","invoice_vat":"VAT","invoice_wallet_link":"wallet link","invoice_zcash_price":"Zcash price:"}},
|
||||||
{ "language":"en-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Add to Order","itemadd_cancel_btn":"Cancel","itemadd_save_btn":"Add"}},
|
{ "language":"en-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Add Item to Order","itemadd_cancel_btn":"Cancel","itemadd_save_btn":"Add"}},
|
||||||
{ "language":"en-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Add Item","itemcreate_close_btn":"Close","itemcreate_item_descr":"Description","itemcreate_item_lbl":"Item","itemcreate_item_price":"Price","itemcreate_save_btn":"Save","itemcreate_use_nums":"Use only numbers"}},
|
{ "language":"en-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Add Item","itemcreate_close_btn":"Close","itemcreate_item_descr":"Description","itemcreate_item_lbl":"Item","itemcreate_item_price":"Price","itemcreate_save_btn":"Save","itemcreate_use_nums":"Use only numbers"}},
|
||||||
{ "language":"en-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Close","itemdel_confirm_del":"Are you sure you want to delete ","itemdel_delete_btn":"Delete","itemdel_del_item":"Delete Item"}},
|
{ "language":"en-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Close","itemdel_confirm_del":"Are you sure you want to delete","itemdel_delete_btn":"Delete","itemdel_del_item":"Delete Item"}},
|
||||||
{ "language":"en-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Close","itemedit_edit_item":"Edit Item","itemedit_item_descr":"Description","itemedit_item_label":"Item","itemedit_item_price":"Price:","itemedit_save_btn":"Save"}},
|
{ "language":"en-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Close","itemedit_edit_item":"Edit Item","itemedit_item_descr":"Description","itemedit_item_label":"Item","itemedit_item_price":"Price:","itemedit_save_btn":"Save"}},
|
||||||
{ "language":"en-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Available Items:","itemlist_item_added":"Item successfully created!","itemlist_item_deleted":"Item deleted!!","itemlist_item_updated":"Item information updated!!","itemlist_list_empty":"No items yet!","itemlist_notif_close":"Close","itemlist_notif_success":"Success"}},
|
{ "language":"en-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Available Items:","itemlist_list_empty":"No items yet!"}},
|
||||||
{ "language":"en-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Back to Shop","listorders_end_date":"Session valid until: ","listorders_export_orders":"Export Orders","listorders_invoice_btn":"Invoice","listorders_item_lbl":"Item","listorders_no_orders":"No orders","listorders_order_id":"Order ID","listorders_order_total":"Order Total: ","listorders_overall_total":"Overall Total: ","listorders_qty_lbl":"Qty.","listorders_receipt_btn":"Receipt","listorders_todays_total":"Today's Total: ","listorders_total_lbl":"Total"}},
|
{ "language":"en-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Back to Shop","listorders_export_orders":"Export Orders","listorders_invoice_btn":"Invoice","listorders_item_lbl":"Item","listorders_no_orders":"No orders","listorders_order_id":"Order ID","listorders_order_total":"Order Total:","listorders_overall_total":"Overall Total:","listorders_qty_lbl":"Qty.","listorders_receipt_btn":"Receipt","listorders_tax":"Tax","listorders_tip":"Tip","listorders_todays_total":"Today's Total:","listorders_total_lbl":"Total","listorders_vat":"VAT"}},
|
||||||
{ "language":"en-US", "component":"login", "data" : { "login_check_wallet":"Check your wallet!!","login_confirm_login":"ZGo confirms your login on the Zcash blockhain","login_confirm_pin":"Confirm PIN","login_connect_to_zgo":"Connect your wallet to ZGo","login_enter_pin":"Enter the PIN sent by ZGo to confirm wallet ownership:","login_last_block":"Last block seen:","login_link_wallet":"Link Wallet","login_wrong_pin":"Wrong PIN!!"}},
|
{ "language":"en-US", "component":"login", "data" : { "login_check_wallet":"Check your wallet!!","login_confirm_login":"ZGo confirms your login on the Zcash blockhain","login_confirm_pin":"Confirm PIN","login_connect_to_zgo":"Connect your wallet to ZGo","login_enter_pin":"Enter the PIN sent by ZGo to confirm wallet ownership:","login_last_block":"Last block seen:","login_link_wallet":"Link Wallet","login_wrong_pin":"Wrong PIN!!"}},
|
||||||
{ "language":"en-US", "component":"main", "data" : { "main_price_data":"Price data provided by CoinGecko API"}},
|
{ "language":"en-US", "component":"main", "data" : { "main_price_data":"Price data provided by CoinGecko API"}},
|
||||||
{ "language":"en-US", "component":"order", "data" : { "order_cancel_btn":"Cancel","order_cancel_ok":"Order successfully cancelled!","order_cancel_order":"Cancel Order?","order_checkout_btn":"Checkout","order_confirm_cancel":"Are you sure you want to cancel the order?","order_confirm_remove":"Are you sure you want to remove ","order_confirm_remove1":" from this order?","order_invoice_btn":"Invoice","order_item_lbl":"Item","order_notserv_close":"Close","order_notserv_success":"success","order_no_openorder":"No open order!!","order_qty_lbl":"Qty.","order_remove_item":"Remove Item?","order_total_lbl":"Total","order_total_title":"Order Total:"}},
|
{ "language":"en-US", "component":"order", "data" : { "order_cancel_btn":"Cancel","order_cancel_ok":"Order successfully cancelled!","order_cancel_order":"Cancel Order?","order_checkout_btn":"Checkout","order_confirm_cancel":"Are you sure you want to cancel the order?","order_confirm_remove":"Are you sure you want to remove","order_confirm_remove1":" from this order?","order_invoice_btn":"Invoice","order_item_lbl":"Item","order_notserv_close":"Close","order_notserv_success":"success","order_no_openorder":"No open order!!","order_qty_lbl":"Qty.","order_remove_item":"Remove Item?","order_total_lbl":"Total","order_total_title":"Order Total:"}},
|
||||||
{ "language":"en-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"Amount does not","pmtservice_cant_scan":"Can't scan?","pmtservice_connecto_xero":"Connection to Xero","pmtservice_copyaddress_error":"Error while copying address","pmtservice_copyamount_error":"Error while copying amount","pmtservice_copymemo_error":"Error while copying Memo","pmtservice_copy_address":"Copy Address","pmtservice_copy_amount":"Copy Amount","pmtservice_copy_memo":"Copy Memo","pmtservice_copy_notavail":"Copy functionality not supported","pmtservice_currency_notsup":"not supported!!","pmtservice_enabled_for":"enabled for","pmtservice_hdr_txt1":"Invoice","pmtservice_hdr_txt2":"Order ID: ","pmtservice_hdr_txt3":"Date: ","pmtservice_invalid_ownerid":"Invalid Owner ID!!","pmtservice_invoice_currency":"Currency","pmtservice_invoice_invalid":"type invalid!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"not found!!","pmtservice_invoice_num":"Invoice","pmtservice_invoice_paid":"already paid!!","pmtservice_invoice_price":"Price","pmtservice_invoice_qty":"Qty.","pmtservice_invoice_total":"Invoice Total: ","pmtservice_match_value":"match value","pmtservice_notserv_close":"Close","pmtservice_notserv_error":"Error","pmtservice_payment_confirmed":"Payment Confirmed!!","pmtservice_payment_notprocessed":"Payment request was not processed!!","pmtservice_payment_pending":"Payment Pending!!","pmtservice_pmtsrv_not":"Payment service not","pmtservice_reported_byxero":"reported by Xero!!","pmtservice_scan_qrcode":"Scan the QR code with your wallet to make payment","pmtservice_server_failed":"server failed!!","pmtservice_use_this":"Use this ","pmtservice_wallet_link":"wallet link","pmtservice_zecdata_price":"Zcash Price: ","pmtservice_zecdata_total":"Total: "}},
|
{ "language":"en-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"Amount does not","pmtservice_cant_scan":"Can't scan?","pmtservice_connecto_xero":"Connection to Xero","pmtservice_copyaddress_error":"Error while copying address","pmtservice_copyamount_error":"Error while copying amount","pmtservice_copymemo_error":"Error while copying Memo","pmtservice_copy_address":"Copy Address","pmtservice_copy_amount":"Copy Amount","pmtservice_copy_memo":"Copy Memo","pmtservice_copy_notavail":"Copy functionality not supported","pmtservice_currency_notsup":"not supported!!","pmtservice_enabled_for":"enabled for","pmtservice_hdr_txt1":"Invoice","pmtservice_hdr_txt2":"Order ID:","pmtservice_hdr_txt3":"Date:","pmtservice_invalid_ownerid":"Invalid Owner ID!!","pmtservice_invoice_currency":"Currency","pmtservice_invoice_invalid":"type invalid!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"not found!!","pmtservice_invoice_num":"Invoice","pmtservice_invoice_paid":"already paid!!","pmtservice_invoice_price":"Price","pmtservice_invoice_qty":"Qty.","pmtservice_invoice_total":"Invoice Total:","pmtservice_match_value":"match value","pmtservice_notserv_close":"Close","pmtservice_notserv_error":"Error","pmtservice_payment_confirmed":"Payment Confirmed!!","pmtservice_payment_notprocessed":"Payment request was not processed!!","pmtservice_payment_pending":"Payment Pending!!","pmtservice_pmtsrv_not":"Payment service not","pmtservice_reported_byxero":"reported by Xero!!","pmtservice_scan_qrcode":"Scan the QR code with your wallet to make payment","pmtservice_server_failed":"server failed!!","pmtservice_use_this":"Use this","pmtservice_wallet_link":"wallet link","pmtservice_zecdata_price":"Zcash Price:","pmtservice_zecdata_total":"Total:"}},
|
||||||
{ "language":"en-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Functionality not available for your browser. Use send button instead.","promptinvoice_invoice_cancel":"Cancel","promptinvoice_invoice_clipboard":"Invoice's URL copied to Clipboard!!","promptinvoice_invoice_sent":"Sent!","promptinvoice_invoice_url":"Invoice URL:","promptinvoice_notserv_close":"Close","promptinvoice_notserv_error":"Error","promptinvoice_notserv_success":"Success","promptinvoice_send_link":"Send the invoice link to your client:"}},
|
{ "language":"en-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Functionality not available for your browser. Use send button instead.","promptinvoice_invoice_cancel":"Cancel","promptinvoice_invoice_clipboard":"Invoice's URL copied to Clipboard!!","promptinvoice_invoice_sent":"Sent!","promptinvoice_invoice_url":"Invoice URL:","promptinvoice_notserv_close":"Close","promptinvoice_notserv_error":"Error","promptinvoice_notserv_success":"Success","promptinvoice_send_link":"Send the invoice link to your client:"}},
|
||||||
{ "language":"en-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Close","promptreceipt_func_notavail":"Functionality not available for your browser. Use send button ","promptreceipt_notserv_close":"Close","promptreceipt_notserv_error":"Error","promptreceipt_notserv_success":"Success","promptreceipt_receipt_clipboard":"Receipt's URL copied to Clipboard!!","promptreceipt_receipt_url":"Receipt URL:","promptreceipt_send_link":"Send the receipt link to your client:"}},
|
{ "language":"en-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Close","promptreceipt_func_notavail":"Functionality not available for your browser. Use send button","promptreceipt_notserv_close":"Close","promptreceipt_notserv_error":"Error","promptreceipt_notserv_success":"Success","promptreceipt_receipt_clipboard":"Receipt's URL copied to Clipboard!!","promptreceipt_receipt_url":"Receipt URL:","promptreceipt_send_link":"Send the receipt link to your client:"}},
|
||||||
{ "language":"en-US", "component":"receipt", "data" : { "receipt_info_notavail":"No information available.","receipt_invalid_id":"Incorrect receipt ID.","receipt_order_date":"Date: ","receipt_order_id":"Order ID: ","receipt_order_price":"Price: ","receipt_order_total":"Total: ","receipt_qty_lbl":"Qty.","receipt_receipt_lbl":"Receipt","receipt_zcash_price":"Zcash Price: "}},
|
{ "language":"en-US", "component":"receipt", "data" : { "receipt_info_notavail":"No information available.","receipt_invalid_id":"Incorrect receipt ID.","receipt_order_date":"Date:","receipt_order_id":"Order ID:","receipt_order_price":"Price:","receipt_order_total":"Total:","receipt_qty_lbl":"Qty.","receipt_receipt_lbl":"Receipt","receipt_tax":"Sales Tax","receipt_tip":"Tip","receipt_vat":"VAT","receipt_zcash_price":"Zcash Price:"}},
|
||||||
{ "language":"en-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Close","receiptqr_scan_receipt":"Scan for your Receipt"}},
|
{ "language":"en-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Close","receiptqr_scan_receipt":"Scan for your Receipt"}},
|
||||||
{ "language":"en-US", "component":"scan", "data" : { "scan_cant_scan":"Can't scan? ","scan_close_btn":"Close","scan_copy_address":"Copy Address","scan_copy_amount":"Copy Amount","scan_copy_error":"Error while copying ammount","scan_copy_memo":"Copy Memo","scan_fail_payment":"Error while verifying payment","scan_func_notavail":"Copy functionality not supported","scan_memo_sent":"Memo Sent!","scan_notserv_close":"Close","scan_notserv_error":"Error","scan_or_button":"or","scan_scanqr_code":"Scan the QR code","scan_text_info":"Ensure to check the \"Include Reply-To\" box in your wallet before sending your memo.","scan_use_this":"Use this ","scan_wallet_link":"wallet link"}},
|
{ "language":"en-US", "component":"scan", "data" : { "scan_close_btn":"Close","scan_copy_address":"Copy Address","scan_copy_amount":"Copy Amount","scan_copy_error":"Error while copying ammount","scan_copy_memo":"Copy Memo","scan_fail_payment":"Error while verifying payment","scan_func_notavail":"Copy functionality not supported","scan_memo_sent":"Memo Sent!","scan_notserv_close":"Close","scan_notserv_error":"Error","scan_scanqr_code":"Scan the QR code","scan_text_info":"Ensure to check the \"Include Reply-To\" box in your wallet before sending your memo.","scan_use_this":"Can't scan? Use this","scan_wallet_link":"wallet link"}},
|
||||||
{ "language":"en-US", "component":"settings", "data" : { "settings_acode_invalid":"Invalid Account code (10 chars max.)","settings_acode_lbl":"Account Code:","settings_acode_notsaved":"Account Code not saved","settings_acode_saved":"Account Code saved!!","settings_close_btn":"Cancel","settings_confirm_payments":"Confirm payments?","settings_copy_notavail":"Functionality not available for your browser. Use send button instead.","settings_currency_lbl":"Currency","settings_link_2xero":"Link to Xero","settings_name_lbl":"Name","settings_name_placeholder":"Your Name","settings_notserv_close":"Close","settings_notserv_error":"Error","settings_notserv_success":"Success","settings_notserv_warning":"Warning","settings_ownerid_copied":"Owner ID copied to clipboard","settings_ownerid_notcopied":"Copying not available in your browser","settings_pmtserv_url":"Payment Service URL:","settings_relink_2xero":"Relink to Xero","settings_save_btn":"Save","settings_tab_integrations":"Integrations","settings_tab_mainlbl":"Main","settings_URL_copied":"ZGo URL copied to Clipboard!!","settings_use_satoshi":"Use zatoshis?","settings_view_title":"Settings","settings_vkey_lbl":"Viewing key","settings_vkey_placeholder":"Your wallet viewing key","settings_wctoken_copied":"WooCommerce Token copied to clipboard","settings_wctoken_generated":"WooCommerce Token generated!","settings_wctoken_genfail":"WooCommerce Token generation failed","settings_wctoken_notcopied":"Copying not available in your browser","settings_wc_closebtn":"Close","settings_wc_gentoken":"Generate Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Owner:","settings_xeropmt_confirmdis":"Xero Payment confirmation disabled!!","settings_xero_closebtn":"Close","settings_xero_lbl":"Xero","settings_xero_savebtn":"Save Code"}},
|
{ "language":"en-US", "component":"settings", "data" : { "settings_acode_invalid":"Invalid Account code (10 chars max.)","settings_acode_lbl":"Account Code:","settings_acode_notsaved":"Account Code not saved","settings_acode_saved":"Account Code saved!!","settings_close_btn":"Cancel","settings_confirm_payments":"Confirm payments?","settings_copy_notavail":"Functionality not available for your browser. Use send button instead.","settings_currency_lbl":"Currency","settings_link_2xero":"Link to Xero","settings_name_lbl":"Name","settings_name_placeholder":"Your Name","settings_notserv_close":"Close","settings_notserv_error":"Error","settings_notserv_success":"Success","settings_notserv_warning":"Warning","settings_ownerid_copied":"Owner ID copied to clipboard","settings_ownerid_notcopied":"Copying not available in your browser","settings_pmtserv_url":"Payment Service URL:","settings_relink_2xero":"Relink to Xero","settings_sales_tax_rate_lbl":"Sales Tax Rate (%)","settings_sales_tax_rate_txt":"Sales Tax Rate (%)","settings_sales_vat_rate_lbl":"VAT Rate (%)","settings_sales_vat_rate_txt":"Value Added Tax Rate (%)","settings_save_btn":"Save","settings_tab_integrations":"Integrations","settings_tab_mainlbl":"Main","settings_URL_copied":"ZGo URL copied to Clipboard!!","settings_use_satoshi":"Use zatoshis?","settings_use_tax":"Use Tax?","settings_use_tips":"Use Tips?","settings_use_vat":"Use VAT?","settings_view_title":"Settings","settings_vkey_lbl":"Viewing key","settings_vkey_placeholder":"Your wallet viewing key","settings_wctoken_copied":"WooCommerce Token copied to clipboard","settings_wctoken_generated":"WooCommerce Token generated!","settings_wctoken_genfail":"WooCommerce Token generation failed","settings_wctoken_notcopied":"Copying not available in your browser","settings_wc_closebtn":"Close","settings_wc_gentoken":"Generate Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Owner:","settings_xeropmt_confirmdis":"Xero Payment confirmation disabled!!","settings_xero_closebtn":"Close","settings_xero_lbl":"Xero","settings_xero_savebtn":"Save Code"}},
|
||||||
|
{ "language":"en-US", "component":"tips", "data" : { "tips_done_btn":"Done","tips_enter_tip":"Enter Tip:","tips_notip_btn":"No Tip","tips_subtotal":"Subtotal","tips_tip":"Tip","tips_total":"Total"}},
|
||||||
{ "language":"en-US", "component":"viewer", "data" : { "viewer_view_orders":"View Orders"}},
|
{ "language":"en-US", "component":"viewer", "data" : { "viewer_view_orders":"View Orders"}},
|
||||||
{ "language":"en-US", "component":"xero", "data" : { "xero_connected_2xero":"Connected to Xero!","xero_connecting_2xero":"Connecting to Xero.."}},
|
{ "language":"en-US", "component":"xero", "data" : { "xero_connected_2xero":"Connected to Xero!","xero_connecting_2xero":"Connecting to Xero.."}},
|
||||||
{ "language":"es-US", "component":"business", "data" : { "business_accept_terms":"Acepto los ","business_addrs_nobiz":"No tenemos un negocio asociado a esta dirección de Zcash, por favor ingrese su información abajo:","business_biz_addressholder":"Dirección","business_biz_addresslbl":"Dirección:","business_biz_cityholder":"Ciudad","business_biz_citylbl":"Ciudad:","business_biz_countryholder":"País","business_biz_countrylbl":"País:","business_biz_info":"Ingrese datos del negocio","business_biz_mailholder":"ejemplo@dominio.com","business_biz_maillbl":"E-mail:","business_biz_nameholder":"Nombre del negocio","business_biz_namelbl":"Nombre del Negocio:","business_biz_pcodeholder":"Código Postal","business_biz_pcodelbl":"Código Postal:","business_biz_stateholder":"Estado o Provincia","business_biz_statelbl":"Estado/Provincia:","business_biz_websiteholder":"Sitio web","business_biz_websitelbl":"Sitio Web:","business_contact_fnamelbl":"Nombre del Contacto:","business_contact_fnholder":"Nombre","business_contact_lnamelbl":"Apellido del Contacto:","business_contact_lnholder":"Apellido","business_save_btn":"Salvar","business_select_session":"Seleccione la duración de la sessión que necesita:","business_session_label":"Sesión:","business_session_lengthlbl":"Duración de la Sesión","business_session_paylbl":"Pagar","business_signup_title":"Registrar Negocio","business_terms_ofuse":"Términos de Uso","business_zgo_confirmlbl":"ZGo confirma su pago"}},
|
{ "language":"es-US", "component":"business", "data" : { "business_accept_terms":"Acepto los","business_addrs_nobiz":"No tenemos un negocio asociado a esta dirección de Zcash, por favor ingrese su información abajo:","business_biz_addressholder":"Dirección","business_biz_addresslbl":"Dirección:","business_biz_cityholder":"Ciudad","business_biz_citylbl":"Ciudad:","business_biz_countryholder":"País","business_biz_countrylbl":"País:","business_biz_info":"Ingrese datos del negocio","business_biz_mailholder":"ejemplo@dominio.com","business_biz_maillbl":"E-mail:","business_biz_nameholder":"Nombre del negocio","business_biz_namelbl":"Nombre del Negocio:","business_biz_pcodeholder":"Código Postal","business_biz_pcodelbl":"Código Postal:","business_biz_stateholder":"Estado o Provincia","business_biz_statelbl":"Estado/Provincia:","business_biz_websiteholder":"Sitio web","business_biz_websitelbl":"Sitio Web:","business_contact_fnamelbl":"Nombre del Contacto:","business_contact_fnholder":"Nombre","business_contact_lnamelbl":"Apellido del Contacto:","business_contact_lnholder":"Apellido","business_save_btn":"Salvar","business_select_session":"Seleccione la duración de la sessión que necesita:","business_session_label":"Sesión:","business_session_lengthlbl":"Duración de la Sesión","business_session_paylbl":"Pagar","business_signup_title":"Registrar Negocio","business_terms_ofuse":"Términos de Uso","business_zgo_confirmlbl":"ZGo confirma su pago"}},
|
||||||
{ "language":"es-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Si","cancel_dismiss_btn":"No","cancel_title":"Cancelar?"}},
|
{ "language":"es-US", "component":"cancel", "data" : { "cancel_confirm_btn":"Confirmar","cancel_dismiss_btn":"Descartar","cancel_title":"Cancelar"}},
|
||||||
{ "language":"es-US", "component":"checkout", "data" : { "checkout_accept_btn":"Aceptar","checkout_cant_scan":"No puede escanear?","checkout_close_btn":"Cerrar","checkout_copyaddress_error":"Error al copiar dirección","checkout_copyamount_error":"Error al copiar el valor","checkout_copymemo_error":"Error al copiar Memo","checkout_copy_address":"Copiar Dirección","checkout_copy_amount":"Copie Valor","checkout_copy_memo":"Copie Valor","checkout_copy_notavail":"Fucionalidad de copia no soportada!!","checkout_notserv_close":"Cerrar","checkout_notserv_error":"Error","checkout_scan_payment":"Escanee para hacer el pago","checkout_use_this":"Use este ","checkout_wallet_link":"link a billetera","checkout_wallet_or":", o "}},
|
{ "language":"es-US", "component":"checkout", "data" : { "checkout_accept_btn":"Aceptar","checkout_cant_scan":"No puede escanear?","checkout_close_btn":"Cerrar","checkout_copyaddress_error":"Error al copiar dirección","checkout_copyamount_error":"Error al copiar el valor","checkout_copymemo_error":"Error al copiar Memo","checkout_copy_address":"Copiar Dirección","checkout_copy_amount":"Copie Valor","checkout_copy_memo":"Copie Valor","checkout_copy_notavail":"Fucionalidad de copia no soportada!!","checkout_notserv_close":"Cerrar","checkout_notserv_error":"Error","checkout_scan_payment":"Escanee para hacer el pago","checkout_use_this":"Use este","checkout_wallet_link":"link a billetera","checkout_wallet_or":", o"}},
|
||||||
{ "language":"es-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancelar","dbexport_closed_no":"No","dbexport_closed_yes":"Si","dbexport_date_range":"Rango de Fechas:","dbexport_download_link":"Descargar","dbexport_end_date":"Fecha final","dbexport_export_descrip":"Exportar órdenes en un archivo de formato .CSV","dbexport_file_header":"\"Fecha\",\"ID Orden\",\"Moneda\",\"Cerrada?\",\"Valor\",\"Tasa\",\"ZEC\",\"Pagada?\",\"Factura\"","dbexport_invalid_end":"Fecha final inválida","dbexport_invalid_start":"Fecha de inicio inválida","dbexport_noorders_created":"Usted no tiene órdenes creadas.","dbexport_nothing_todo":"Nada que hacer.","dbexport_paid_no":"No","dbexport_paid_yes":"Si","dbexport_settings_title":"Exportar Ordenes","dbexport_start_date":"Fecha inicial"}},
|
{ "language":"es-US", "component":"dbexport", "data" : { "dbexport_btn_close":"Cancelar","dbexport_closed_no":"No","dbexport_closed_yes":"Si","dbexport_date_range":"Rango de Fechas:","dbexport_download_link":"Descargar","dbexport_end_date":"Fecha final","dbexport_export_descrip":"Exportar órdenes en un archivo de formato .CSV","dbexport_file_header":"\"Fecha\",\"ID Orden\",\"Moneda\",\"Cerrada?\",\"Valor\",\"Tasa\",\"ZEC\",\"Impuesto\",\"IVA\",\"Propina\",\"Pagada?\",\"Factura\"","dbexport_invalid_end":"Fecha final inválida","dbexport_invalid_start":"Fecha de inicio inválida","dbexport_noorders_created":"Usted no tiene órdenes creadas.","dbexport_nothing_todo":"Nada que hacer.","dbexport_paid_no":"No","dbexport_paid_yes":"Si","dbexport_settings_title":"Exportar Ordenes","dbexport_start_date":"Fecha inicial"}},
|
||||||
{ "language":"es-US", "component":"header", "data" : { "header_get_currency":"Moneda:","header_last_block":"Último Bloque:","header_logout_lbl":"Salir?","header_logout_msg1":"Esta usted seguro de querer desconectarse de ZGo?","header_logout_msg2":"Usted tendrá que registrar nuevamente su billetera por medio de un memo blindado."}},
|
{ "language":"es-US", "component":"header", "data" : { "header_get_currency":"Moneda:","header_last_block":"Último Bloque:"}},
|
||||||
{ "language":"es-US", "component":"invoice", "data" : { "invoice_cant_scan":"No puede escanear?","invoice_copyaddress_error":"Error al copiar dirección","invoice_copyamount_error":"Error al copiar valor","invoice_copymemo_error":"Error al copiar Memo","invoice_copy_address":"Copie Dirección","invoice_copy_amount":"Copiar Valor","invoice_copy_memo":"Copiar Memo","invoice_copy_notavail":"Funcionalidad para copia no soportada","invoice_dot_or":", o","invoice_info_notavail":"No hay información disponible.","invoice_invalid_id":"ID de Factura incorrecto.","invoice_invoice_lbl":"Factura","invoice_invoice_total":"Total Factura: ","invoice_notserv_close":"Cerrar","invoice_notserv_error":"Error","invoice_order_date":"Fecha: ","invoice_order_id":"ID del Pedido: ","invoice_order_price":"Precio ","invoice_payment_confirmed":"Pago Confirmado!!","invoice_payment_pending":"Pago Pendiente!!","invoice_qty_lbl":"Cant.","invoice_return_toshop":"Regresar a Tienda","invoice_scan_qrcode":"Escanee el código QR con su billetera para hacer el pago","invoice_use_this":"Use este ","invoice_wallet_link":"link de billetera","invoice_zcash_price":"Precio de Zcash: "}},
|
{ "language":"es-US", "component":"invoice", "data" : { "invoice_cant_scan":"No puede escanear?","invoice_copyaddress_error":"Error al copiar dirección","invoice_copyamount_error":"Error al copiar valor","invoice_copymemo_error":"Error al copiar Memo","invoice_copy_address":"Copie Dirección","invoice_copy_amount":"Copiar Valor","invoice_copy_memo":"Copiar Memo","invoice_copy_notavail":"Funcionalidad para copia no soportada","invoice_dot_or":", o","invoice_info_notavail":"No hay información disponible.","invoice_invalid_id":"ID de Factura incorrecto.","invoice_invoice_lbl":"Factura","invoice_invoice_total":"Total Factura:","invoice_notserv_close":"Cerrar","invoice_notserv_error":"Error","invoice_order_date":"Fecha:","invoice_order_id":"ID del Pedido:","invoice_order_price":"Precio","invoice_payment_confirmed":"Pago Confirmado!!","invoice_payment_pending":"Pago Pendiente!!","invoice_qty_lbl":"Cant.","invoice_return_toshop":"Regresar a Tienda","invoice_scan_qrcode":"Escanee el código QR con su billetera para hacer el pago","invoice_tax":"Impuesto","invoice_tip":"Propina","invoice_use_this":"Use este","invoice_vat":"IVA","invoice_wallet_link":"link de billetera","invoice_zcash_price":"Precio de Zcash:"}},
|
||||||
{ "language":"es-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Agregar a la orden","itemadd_cancel_btn":"Cancelar","itemadd_save_btn":"Agregar"}},
|
{ "language":"es-US", "component":"itemadd", "data" : { "itemadd_add_2order":"Agregar Item a la orden","itemadd_cancel_btn":"Cancelar","itemadd_save_btn":"Agregar"}},
|
||||||
{ "language":"es-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Agregar Item","itemcreate_close_btn":"Cerrar","itemcreate_item_descr":"Descripcion","itemcreate_item_lbl":"Item","itemcreate_item_price":"Precio","itemcreate_save_btn":"Agregar","itemcreate_use_nums":"Use solo números"}},
|
{ "language":"es-US", "component":"itemcreate", "data" : { "itemcreate_add_item":"Agregar Item","itemcreate_close_btn":"Cerrar","itemcreate_item_descr":"Descripcion","itemcreate_item_lbl":"Item","itemcreate_item_price":"Precio","itemcreate_save_btn":"Grabar","itemcreate_use_nums":"Use solo números"}},
|
||||||
{ "language":"es-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Cerrar","itemdel_confirm_del":"Esta seguro de querer eliminar el item ","itemdel_delete_btn":"Eliminar","itemdel_del_item":"Eliminar Item"}},
|
{ "language":"es-US", "component":"itemdel", "data" : { "itemdel_close_btn":"Cerrar","itemdel_confirm_del":"Esta seguro de querer eliminar el item","itemdel_delete_btn":"Eliminar","itemdel_del_item":"Eliminar Item"}},
|
||||||
{ "language":"es-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Cerrar","itemedit_edit_item":"Editar Item","itemedit_item_descr":"Descripcion","itemedit_item_label":"Item","itemedit_item_price":"Precio:","itemedit_save_btn":"Guardar"}},
|
{ "language":"es-US", "component":"itemedit", "data" : { "itemedit_close_btn":"Cerrar","itemedit_edit_item":"Editar Item","itemedit_item_descr":"Descripcion","itemedit_item_label":"Item","itemedit_item_price":"Precio:","itemedit_save_btn":"Guardar"}},
|
||||||
{ "language":"es-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Items Disponibles:","itemlist_item_added":"Item creado exitosamente!","itemlist_item_deleted":"Item eliminado!!","itemlist_item_updated":"Información del Item actualizada!!","itemlist_list_empty":"No existen items!","itemlist_notif_close":"Cerrar","itemlist_notif_success":"Ok"}},
|
{ "language":"es-US", "component":"itemlist", "data" : { "itemlist_avail_items":"Items Disponibles:","itemlist_list_empty":"No existen items!"}},
|
||||||
{ "language":"es-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Regresar a Tienda","listorders_end_date":"Sesión válida hasta: ","listorders_export_orders":"Exportar Pedidos","listorders_invoice_btn":"Factura","listorders_item_lbl":"Item","listorders_no_orders":"No hay órdenes","listorders_order_id":"ID de Orden","listorders_order_total":"Total de la Orden:","listorders_overall_total":"Total General: ","listorders_qty_lbl":"Cant.","listorders_receipt_btn":"Recibo","listorders_todays_total":"Total del Dia: ","listorders_total_lbl":"Total"}},
|
{ "language":"es-US", "component":"listorders", "data" : { "listorders_backtoshop_btn":"Regresar a Tienda","listorders_export_orders":"Exportar Pedidos","listorders_invoice_btn":"Factura","listorders_item_lbl":"Item","listorders_no_orders":"No hay órdenes","listorders_order_id":"ID de Orden","listorders_order_total":"Total de la Orden:","listorders_overall_total":"Total General:","listorders_qty_lbl":"Cant.","listorders_receipt_btn":"Recibo","listorders_tax":"Impuesto","listorders_tip":"Propina","listorders_todays_total":"Total del Dia:","listorders_total_lbl":"Total","listorders_vat":"IVA"}},
|
||||||
{ "language":"es-US", "component":"login", "data" : { "login_check_wallet":"Verifique su billetera!!","login_confirm_login":"ZGo confirma su ingreso en la cadena de Zcash","login_confirm_pin":"Confirme el PIN","login_connect_to_zgo":"Conectar su billetera a ZGo","login_enter_pin":"Ingrese el PIN enviado por ZGo para confirmar su billetera:","login_last_block":"Ultimo Bloque Verificado: ","login_link_wallet":"Asociar Billetera","login_wrong_pin":"PIN Invalido!!"}},
|
{ "language":"es-US", "component":"login", "data" : { "login_check_wallet":"Verifique su billetera!!","login_confirm_login":"ZGo confirma su ingreso en la cadena de Zcash","login_confirm_pin":"Confirme el PIN","login_connect_to_zgo":"Conectar su billetera a ZGo","login_enter_pin":"Ingrese el PIN enviado por ZGo para confirmar su billetera:","login_last_block":"Ultimo Bloque Verificado:","login_link_wallet":"Asociar Billetera","login_wrong_pin":"PIN Invalido!!"}},
|
||||||
{ "language":"es-US", "component":"main", "data" : { "main_price_data":"Precios provistos por API de CoinGecko"}},
|
{ "language":"es-US", "component":"main", "data" : { "main_price_data":"Precios provistos por API de CoinGecko"}},
|
||||||
{ "language":"es-US", "component":"order", "data" : { "order_cancel_btn":"Cancelar","order_cancel_ok":"Orden cancelada exitosamente!","order_cancel_order":"Cancelar Orden?","order_checkout_btn":"Pagar","order_confirm_cancel":"Esta seguro que quiere cancelar la orden?","order_confirm_remove":"Esta seguro de querer remover ","order_confirm_remove1":" de esta orden?","order_invoice_btn":"Factura","order_item_lbl":"Item","order_notserv_close":"Cerrar","order_notserv_success":"confirmado","order_no_openorder":"Sin órden abierta!!","order_qty_lbl":"Cant.","order_remove_item":"Remover Item?","order_total_lbl":"Total","order_total_title":"Total Pedido:"}},
|
{ "language":"es-US", "component":"order", "data" : { "order_cancel_btn":"Cancelar","order_cancel_ok":"Orden cancelada exitosamente!","order_cancel_order":"Cancelar Orden?","order_checkout_btn":"Procesar","order_confirm_cancel":"Esta seguro que quiere cancelar la orden?","order_confirm_remove":"Esta seguro de querer remover","order_confirm_remove1":" de esta orden?","order_invoice_btn":"Factura","order_item_lbl":"Item","order_notserv_close":"Cerrar","order_notserv_success":"confirmado","order_no_openorder":"Sin órden abierta!!","order_qty_lbl":"Cant.","order_remove_item":"Remover Item?","order_total_lbl":"Total","order_total_title":"Total Pedido:"}},
|
||||||
{ "language":"es-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"Total no","pmtservice_cant_scan":"No puede escanear?","pmtservice_connecto_xero":"Conexion con Xero","pmtservice_copyaddress_error":"Error al copiar dirección","pmtservice_copyamount_error":"Error al copiar valor","pmtservice_copymemo_error":"Error al copiar Memo","pmtservice_copy_address":"Copiar Dirección","pmtservice_copy_amount":"Copiar Valor","pmtservice_copy_memo":"Copiar Memo","pmtservice_copy_notavail":"Funcionalidad para copia no soportada","pmtservice_currency_notsup":"no soportada!!","pmtservice_enabled_for":"habilitado para","pmtservice_hdr_txt1":"Factura","pmtservice_hdr_txt2":"ID de Orden: ","pmtservice_hdr_txt3":"Fecha: ","pmtservice_invalid_ownerid":"ID de propietario inválida!!","pmtservice_invoice_currency":"Moneda","pmtservice_invoice_invalid":"tipo inválido!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"no encontrada!!","pmtservice_invoice_num":"Factura","pmtservice_invoice_paid":"ya pagada!!","pmtservice_invoice_price":"Precio","pmtservice_invoice_qty":"Cant.","pmtservice_invoice_total":"Total Factura:","pmtservice_match_value":"es igual al valor","pmtservice_notserv_close":"Cerrar","pmtservice_notserv_error":"Error","pmtservice_payment_confirmed":"Pago Confirmado!!","pmtservice_payment_notprocessed":"Solicitud de pago no fue procesada!!","pmtservice_payment_pending":"Pago Pendiente!!","pmtservice_pmtsrv_not":"Servicio de pagos no ","pmtservice_reported_byxero":"reportado por Xero!!","pmtservice_scan_qrcode":"Escanee el código QR con su billetera para hacer el pago","pmtservice_server_failed":"servidor falló!!","pmtservice_use_this":"Use este ","pmtservice_wallet_link":"link de billetera","pmtservice_zecdata_price":"Precio Zcash: ","pmtservice_zecdata_total":"Total: "}},
|
{ "language":"es-US", "component":"pmtservice", "data" : { "pmtservice_amount_doesnot":"Total no","pmtservice_cant_scan":"No puede escanear?","pmtservice_connecto_xero":"Conexion con Xero","pmtservice_copyaddress_error":"Error al copiar dirección","pmtservice_copyamount_error":"Error al copiar valor","pmtservice_copymemo_error":"Error al copiar Memo","pmtservice_copy_address":"Copiar Dirección","pmtservice_copy_amount":"Copiar Valor","pmtservice_copy_memo":"Copiar Memo","pmtservice_copy_notavail":"Funcionalidad para copia no soportada","pmtservice_currency_notsup":"no soportada!!","pmtservice_enabled_for":"habilitado para","pmtservice_hdr_txt1":"Factura","pmtservice_hdr_txt2":"ID de Orden:","pmtservice_hdr_txt3":"Fecha:","pmtservice_invalid_ownerid":"ID de propietario inválida!!","pmtservice_invoice_currency":"Moneda","pmtservice_invoice_invalid":"tipo inválido!!","pmtservice_invoice_item":"Item:","pmtservice_invoice_notfound":"no encontrada!!","pmtservice_invoice_num":"Factura","pmtservice_invoice_paid":"ya pagada!!","pmtservice_invoice_price":"Precio","pmtservice_invoice_qty":"Cant.","pmtservice_invoice_total":"Total Factura:","pmtservice_match_value":"es igual al valor","pmtservice_notserv_close":"Cerrar","pmtservice_notserv_error":"Error","pmtservice_payment_confirmed":"Pago Confirmado!!","pmtservice_payment_notprocessed":"Solicitud de pago no fue procesada!!","pmtservice_payment_pending":"Pago Pendiente!!","pmtservice_pmtsrv_not":"Servicio de pagos no","pmtservice_reported_byxero":"reportado por Xero!!","pmtservice_scan_qrcode":"Escanee el código QR con su billetera para hacer el pago","pmtservice_server_failed":"servidor falló!!","pmtservice_use_this":"Use este","pmtservice_wallet_link":"link de billetera","pmtservice_zecdata_price":"Precio Zcash:","pmtservice_zecdata_total":"Total:"}},
|
||||||
{ "language":"es-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Funcionalidad no disponible en su navegador. Use el botón de enviar en lugar de eso.","promptinvoice_invoice_cancel":"Cancelar","promptinvoice_invoice_clipboard":"URL de la factura copiado al Portapapeles!!","promptinvoice_invoice_sent":"Enviado!","promptinvoice_invoice_url":"URL de Factura:","promptinvoice_notserv_close":"Cerrar","promptinvoice_notserv_error":"Error","promptinvoice_notserv_success":"Suceso","promptinvoice_send_link":"Envíe el link de la factura a su cliente:"}},
|
{ "language":"es-US", "component":"promptinvoice", "data" : { "promptinvoice_func_notavail":"Funcionalidad no disponible en su navegador. Use el botón de enviar en lugar de eso.","promptinvoice_invoice_cancel":"Cancelar","promptinvoice_invoice_clipboard":"URL de la factura copiado al Portapapeles!!","promptinvoice_invoice_sent":"Enviado!","promptinvoice_invoice_url":"URL de Factura:","promptinvoice_notserv_close":"Cerrar","promptinvoice_notserv_error":"Error","promptinvoice_notserv_success":"Suceso","promptinvoice_send_link":"Envíe el link de la factura a su cliente:"}},
|
||||||
{ "language":"es-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Cerrar","promptreceipt_func_notavail":"Functionality not available for your browser. Use send button ","promptreceipt_notserv_close":"Cerrar","promptreceipt_notserv_error":"Error","promptreceipt_notserv_success":"Suceso","promptreceipt_receipt_clipboard":"URL del Recibo copiado a portapapeles!!","promptreceipt_receipt_url":"URL del Recibo:","promptreceipt_send_link":"Envíe el enlace del recibo a su cliente :"}},
|
{ "language":"es-US", "component":"promptreceipt", "data" : { "promptreceipt_close_lbl":"Cerrar","promptreceipt_func_notavail":"Functionality not available for your browser. Use send button","promptreceipt_notserv_close":"Cerrar","promptreceipt_notserv_error":"Error","promptreceipt_notserv_success":"Suceso","promptreceipt_receipt_clipboard":"URL del Recibo copiado a portapapeles!!","promptreceipt_receipt_url":"URL del Recibo:","promptreceipt_send_link":"Envíe el enlace del recibo a su cliente :"}},
|
||||||
{ "language":"es-US", "component":"receipt", "data" : { "receipt_info_notavail":"No hay información disponible.","receipt_invalid_id":"ID de Recibo incorrecto.","receipt_order_date":"Fecha: ","receipt_order_id":"ID de Orden:","receipt_order_price":"Precio: ","receipt_order_total":"Total: ","receipt_qty_lbl":"Cant.","receipt_receipt_lbl":"Recibo ","receipt_zcash_price":"Precio de Zcash: "}},
|
{ "language":"es-US", "component":"receipt", "data" : { "receipt_info_notavail":"No hay información disponible.","receipt_invalid_id":"ID de Recibo incorrecto.","receipt_order_date":"Fecha:","receipt_order_id":"ID de Orden:","receipt_order_price":"Precio:","receipt_order_total":"Total:","receipt_qty_lbl":"Cant.","receipt_receipt_lbl":"Recibo","receipt_tax":"Impuesto","receipt_tip":"IVA","receipt_vat":"IVA","receipt_zcash_price":"Precio de Zcash:"}},
|
||||||
{ "language":"es-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Cerrar","receiptqr_scan_receipt":"Escanee para obtener su Recibo"}},
|
{ "language":"es-US", "component":"receiptqr", "data" : { "receiptqr_close_btn":"Cerrar","receiptqr_scan_receipt":"Escanee para obtener su Recibo"}},
|
||||||
{ "language":"es-US", "component":"scan", "data" : { "scan_cant_scan":"No puede escanear? ","scan_close_btn":"Cerrar","scan_copy_address":"Copiar Dirección","scan_copy_amount":"Copiar Valor","scan_copy_error":"Error al copiar valor","scan_copy_memo":"Copiar Memo","scan_fail_payment":"Error al verificar pago","scan_func_notavail":"Funcionalidad de copia no soportada","scan_memo_sent":"Memo enviado!","scan_notserv_close":"Cerrar","scan_notserv_error":"Error","scan_or_button":"ó","scan_scanqr_code":"Escanee el código QR","scan_text_info":"Asegúrese de marcar la caja \"Incluir Responder-A\" en su billetera antes de enviar su memo","scan_use_this":"Use este ","scan_wallet_link":"Link de billetera"}},
|
{ "language":"es-US", "component":"scan", "data" : { "scan_close_btn":"Cerrar","scan_copy_address":"Copiar Dirección","scan_copy_amount":"Copiar Valor","scan_copy_error":"Error al copiar valor","scan_copy_memo":"Copiar Memo","scan_fail_payment":"Error al verificar pago","scan_func_notavail":"Funcionalidad de copia no soportada","scan_memo_sent":"Memorando enviado!","scan_notserv_close":"Cerrar","scan_notserv_error":"Error","scan_scanqr_code":"Escanee el código QR","scan_text_info":"Asegúrese de marcar la caja \"Incluir Responder-A\" en su billetera antes de enviar su memo","scan_use_this":"No puede escanear? Use este","scan_wallet_link":"Link de billetera"}},
|
||||||
{ "language":"es-US", "component":"settings", "data" : { "settings_acode_invalid":"Código de Cuenta inválido (10 caracteres max.)","settings_acode_lbl":"Código de Cuenta:","settings_acode_notsaved":"Código de cuenta no guardado!","settings_acode_saved":"Código de cuenta guardado!!","settings_close_btn":"Cancelar","settings_confirm_payments":"Confirmar pagos?","settings_copy_notavail":"Funcionalidad no disponible para su navegador. Use el botón de enviar.","settings_currency_lbl":"Moneda","settings_link_2xero":"Enlazar a Xero","settings_name_lbl":"Nombre","settings_name_placeholder":"Su nombre","settings_notserv_close":"Cerrar","settings_notserv_error":"Error","settings_notserv_success":"Suceso","settings_notserv_warning":"Advertencia","settings_ownerid_copied":"ID del propietario copiado a la papelera","settings_ownerid_notcopied":"Copiar no disponible en su navegador","settings_pmtserv_url":"URL del Servicio de Pago:","settings_relink_2xero":"Reconectar a Xero","settings_save_btn":"Salvar","settings_tab_integrations":"Integraciones","settings_tab_mainlbl":"Principal","settings_URL_copied":"URL de ZGo copiado a la papelera!!","settings_use_satoshi":"Usar zatoshis?","settings_view_title":"Configuración","settings_vkey_lbl":"Clave de visualización","settings_vkey_placeholder":"Clave de visualización de su billetera","settings_wctoken_copied":"Token de WooCommerce copiado a la papelera","settings_wctoken_generated":"Token de WooCommerce generado!","settings_wctoken_genfail":"Falla generación de Token de WooCommerce","settings_wctoken_notcopied":"Copiar no disponible en su navegador","settings_wc_closebtn":"Cerrar","settings_wc_gentoken":"Generar Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Propietario:","settings_xeropmt_confirmdis":"Confirmación de pagos de Xero desactivada!!","settings_xero_closebtn":"Cerrar","settings_xero_lbl":"Xero","settings_xero_savebtn":"Guardar Código"}},
|
{ "language":"es-US", "component":"settings", "data" : { "settings_acode_invalid":"Código de Cuenta inválido (10 caracteres max.)","settings_acode_lbl":"Código de Cuenta:","settings_acode_notsaved":"Código de cuenta no guardado!","settings_acode_saved":"Código de cuenta guardado!!","settings_close_btn":"Cancelar","settings_confirm_payments":"Confirmar pagos?","settings_copy_notavail":"Funcionalidad no disponible para su navegador. Use el botón de enviar.","settings_currency_lbl":"Moneda","settings_link_2xero":"Enlazar a Xero","settings_name_lbl":"Nombre","settings_name_placeholder":"Su nombre","settings_notserv_close":"Cerrar","settings_notserv_error":"Error","settings_notserv_success":"Suceso","settings_notserv_warning":"Advertencia","settings_ownerid_copied":"ID del propietario copiado a la papelera","settings_ownerid_notcopied":"Copiar no disponible en su navegador","settings_pmtserv_url":"URL del Servicio de Pago:","settings_relink_2xero":"Reconectar a Xero","settings_sales_tax_rate_lbl":"Tasa de Impuesto a la Venta (%)","settings_sales_tax_rate_txt":"Tasa de Impuesto a la Venta (%)","settings_sales_vat_rate_lbl":"Tasa IVA(%)","settings_sales_vat_rate_txt":"Tasa IVA (%)","settings_save_btn":"Salvar","settings_tab_integrations":"Integraciones","settings_tab_mainlbl":"Principal","settings_URL_copied":"URL de ZGo copiado a la papelera!!","settings_use_satoshi":"Usar zatoshis?","settings_use_tax":"Usar Impuesto a la Venta?","settings_use_tips":"Usar Propinas?","settings_use_vat":"Usar IVA?","settings_view_title":"Configuración","settings_vkey_lbl":"Clave de visualización","settings_vkey_placeholder":"Clave de visualización de su billetera","settings_wctoken_copied":"Token de WooCommerce copiado a la papelera","settings_wctoken_generated":"Token de WooCommerce generado!","settings_wctoken_genfail":"Falla generación de Token de WooCommerce","settings_wctoken_notcopied":"Copiar no disponible en su navegador","settings_wc_closebtn":"Cerrar","settings_wc_gentoken":"Generar Token","settings_wc_lbl":"WooCommerce","settings_wc_ownerlbl":"Propietario:","settings_xeropmt_confirmdis":"Confirmación de pagos de Xero desactivada!!","settings_xero_closebtn":"Cerrar","settings_xero_lbl":"Xero","settings_xero_savebtn":"Guardar Código"}},
|
||||||
|
{ "language":"es-US", "component":"tips", "data" : { "tips_done_btn":"Hecho","tips_enter_tip":"Ingrese Propina:","tips_notip_btn":"Sin Propina","tips_subtotal":"Subtotal","tips_tip":"Propina","tips_total":"Total"}},
|
||||||
{ "language":"es-US", "component":"viewer", "data" : { "viewer_view_orders":"Ver Ordenes"}},
|
{ "language":"es-US", "component":"viewer", "data" : { "viewer_view_orders":"Ver Ordenes"}},
|
||||||
{ "language":"es-US", "component":"xero", "data" : { "xero_connected_2xero":"Conectado a Xero!","xero_connecting_2xero":"Conectando a Xero.."}}
|
{ "language":"es-US", "component":"xero", "data" : { "xero_connected_2xero":"Conectado a Xero!","xero_connecting_2xero":"Conectando a Xero.."}}]
|
||||||
]
|
|
||||||
|
|
Loading…
Reference in a new issue