Compare commits
4 commits
98edbe2d45
...
1ba8d2189a
Author | SHA1 | Date | |
---|---|---|---|
1ba8d2189a | |||
73bcf9fc15 | |||
7a4e8d278f | |||
b6eb402a39 |
11 changed files with 138 additions and 12 deletions
|
@ -51,6 +51,24 @@
|
|||
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="order.taxAmount > 0">
|
||||
<td class="newOrdertbdetail" style="text-align: right;">Sales Tax</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;">Value-Added Tax</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;">Tip</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">
|
||||
<th width="55%"
|
||||
class="detailLineRight">
|
||||
|
|
|
@ -49,6 +49,9 @@ export class InvoiceComponent implements OnInit {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
|
|
@ -154,6 +154,24 @@
|
|||
width="30%">{{item.qty * item.cost | number:'1.02' | currency: order.currency.toUpperCase() }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="tbdetail" *ngIf="order.taxAmount > 0">
|
||||
<td class="newOrdertbdetail" style="text-align: right;">Sales Tax</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;">Value-Added Tax</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;">Tip</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>
|
||||
</table>
|
||||
<div style="display: flex;
|
||||
|
|
|
@ -75,6 +75,18 @@
|
|||
</a>
|
||||
</td>
|
||||
</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;">{{ total * tax / 100 | 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;">{{ total * vat / 100 | currency: getCurrency() }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -48,6 +48,9 @@ export class OrderComponent implements OnInit{
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
@ -58,9 +61,13 @@ export class OrderComponent implements OnInit{
|
|||
};
|
||||
public price: number = 1;
|
||||
public total: number = 0;
|
||||
public tax: number = 0;
|
||||
public vat: number = 0;
|
||||
public orderUpdate: Observable<Order>;
|
||||
public priceUpdate: Observable<number>;
|
||||
public totalUpdate: Observable<number>;
|
||||
public taxUpdate: Observable<number>;
|
||||
public vatUpdate: Observable<number>;
|
||||
|
||||
// ------------------------------------
|
||||
//
|
||||
|
@ -106,9 +113,6 @@ export class OrderComponent implements OnInit{
|
|||
this.orderUpdate = orderService.orderUpdate;
|
||||
this.orderUpdate.subscribe((order) => {
|
||||
this.order = order;
|
||||
|
||||
//console.log('this.order > ' + JSON.stringify(this.order));
|
||||
// ------------------------------------------------
|
||||
this.oLines = [];
|
||||
this.myLines = this.order.lines;
|
||||
var nl = {} as newLineItem;
|
||||
|
@ -134,6 +138,14 @@ export class OrderComponent implements OnInit{
|
|||
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;
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { LineItem } from '../items/lineitem.model';
|
||||
|
||||
export interface Order {
|
||||
_id?: string,
|
||||
_id?: string|null,
|
||||
address: string,
|
||||
session: string,
|
||||
timestamp?: string,
|
||||
|
@ -14,5 +14,8 @@ export interface Order {
|
|||
paid: boolean,
|
||||
externalInvoice: string,
|
||||
shortCode: string,
|
||||
token: string
|
||||
token: string,
|
||||
taxAmount: number,
|
||||
vatAmount: number,
|
||||
tipAmount: number
|
||||
}
|
||||
|
|
|
@ -57,6 +57,9 @@ export class OrderService {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
@ -72,6 +75,10 @@ export class OrderService {
|
|||
public readonly totalUpdate: Observable<number> = this._totalUpdated.asObservable();
|
||||
private _allOrdersUpdated: BehaviorSubject<Order[]> = new BehaviorSubject(this.dataStore.allOrders);
|
||||
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();
|
||||
public userUpdate: Observable<User>;
|
||||
public ownerUpdate: Observable<Owner>;
|
||||
private reqHeaders: HttpHeaders;
|
||||
|
@ -95,6 +102,16 @@ export class OrderService {
|
|||
});
|
||||
this.ownerUpdate.subscribe((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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -105,10 +122,10 @@ export class OrderService {
|
|||
if (OrderDataResponse.status == 200) {
|
||||
this.dataStore.order = OrderDataResponse.body!.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.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);
|
||||
} else {
|
||||
console.log('No order found');
|
||||
|
@ -148,6 +165,14 @@ export class OrderService {
|
|||
}
|
||||
|
||||
createOrder(lineItem: LineItem) {
|
||||
let localTax = 0;
|
||||
let localVat = 0;
|
||||
if (this.dataStore.owner.tax) {
|
||||
localTax = lineItem.cost * lineItem.qty * this.dataStore.owner.taxValue / 100;
|
||||
}
|
||||
if (this.dataStore.owner.vat) {
|
||||
localVat = lineItem.cost * lineItem.qty * this.dataStore.owner.vatValue / 100;
|
||||
}
|
||||
var order:Order = {
|
||||
_id: '',
|
||||
address: this.dataStore.user.address,
|
||||
|
@ -162,11 +187,13 @@ export class OrderService {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: localTax,
|
||||
vatAmount: localVat,
|
||||
tipAmount: 0,
|
||||
lines: [lineItem]
|
||||
};
|
||||
let obs = this.http.post<{message: string, order: Order}>(this.beUrl+'api/order', {payload: order}, { headers: this.reqHeaders, params: this.reqParams });
|
||||
obs.subscribe((orderData) => {
|
||||
console.log('Created order');
|
||||
this.getOrder()
|
||||
});
|
||||
|
||||
|
@ -192,6 +219,9 @@ export class OrderService {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
@ -214,7 +244,7 @@ export class OrderService {
|
|||
this.dataStore.order.paid = paid;
|
||||
let obs = this.http.post(this.beUrl+'api/order', {payload: this.dataStore.order}, { headers: this.reqHeaders, params: this.reqParams });
|
||||
obs.subscribe((orderData) => {
|
||||
console.log('Closed order', orderData);
|
||||
//console.log('Closed order', orderData);
|
||||
this.dataStore.order = {
|
||||
address: '',
|
||||
session: '',
|
||||
|
@ -228,6 +258,9 @@ export class OrderService {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
|
|
@ -68,6 +68,9 @@ export class PmtserviceComponent implements OnInit {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
|
|
@ -47,6 +47,9 @@ export class ReceiptService {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
|
|
@ -51,6 +51,24 @@
|
|||
{{( item.qty * item.cost ) | number : '1.02' | currency: order.currency.toUpperCase()}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="order.taxAmount > 0">
|
||||
<td class="newOrdertbdetail" style="text-align: right;">Sales Tax</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;">Value-Added Tax</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;">Tip</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">
|
||||
<th width="55%"
|
||||
class="detailLineRight">
|
||||
|
@ -92,4 +110,4 @@
|
|||
</mat-card-actions>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -32,6 +32,9 @@ export class ReceiptComponent implements OnInit {
|
|||
externalInvoice: '',
|
||||
shortCode: '',
|
||||
token: '',
|
||||
taxAmount: 0,
|
||||
vatAmount: 0,
|
||||
tipAmount: 0,
|
||||
lines: [
|
||||
{
|
||||
qty: 1,
|
||||
|
|
Loading…
Reference in a new issue