import {Component, ViewChild} from "@angular/core"; import {WpJsonApi} from "../sharedmodules/wp-elements/Services/WpJsonApi"; import {UserDialog} from "./dialogs/UserDialog"; import {ToastService} from "../sharedmodules/wp-elements/Services/ToastService"; import {FormHandlerBase} from "./FormHandlerBase"; import {InvoiceDetails} from "./InvoiceDetails"; import {Payments} from "./Payments/Payments"; @Component({ selector:'app-root', template:`

Create Invoice

Edit Invoice

New order information

Order {{InvoiceId}} information

`, styles:[` .rnTitle{ margin: 0; font-size: 21px; line-height: 1.2; text-shadow: 1px 1px 1px #fff; padding: 0; font-family: HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif; font-weight: 400; } `] }) export class InvoiceBuilderComponent extends FormHandlerBase{ public InvoiceId=rnparams.invoice_id; public Users; public Settings:Settings; public Invoice:Invoice; public IsSaving=false; @ViewChild(InvoiceDetails) invoiceDetailComponent:InvoiceDetails; @ViewChild(Payments) paymentsComponent:Payments; @ViewChild('UserDialog') public dialog:UserDialog; constructor(private ajax:WpJsonApi,private toast:ToastService){ super(); let currentDate=new Date(rnparams.current_time*1000); let dueDate=new Date(rnparams.current_time*1000); dueDate.setMonth(dueDate.getMonth()+1); this.Users=rnparams.users; if(rnparams.invoice_data!=null) this.Invoice=rnparams.invoice_data; else this.Invoice={ Ref:'', InvoiceId:0, FormattedInvoiceNumber:'', InvoiceNumber:0, ClientDisplayName:'', ClientId:null, CreationDate:currentDate.getTime(), Description:'', Discount:0, DueDate:dueDate.getTime(), Paid:0, Status:0, SubTotal:0, Tax:0, TermsAndConditions:rnparams.settings.InvoiceOptions.TermsAndConditions, TotalDue:0, Detail:[], Payments:[] } } public UserCreated(user:{Label:string,Id:number}){ this.Users.push(user); this.Invoice.ClientId=user.Id; this.Invoice.ClientDisplayName=user.Label; } public CreateUser(){ this.dialog.Open(); } async Save() { this.invoiceDetailComponent.MarkAllAsDirty(); this.paymentsComponent.MarkAllAsDirty(); this.MarkAllFieldsAsDirty(); if(!this.IsValid||!this.invoiceDetailComponent.IsValid||!this.paymentsComponent.IsValid) return; this.IsSaving=true; let tempItems=this.Invoice.Detail.slice(); let tempPayments=this.Invoice.Payments.slice(); let result= await this.ajax.Post('/invoices/save',{InvoiceData:this.Invoice}); if(result==null) return; try{ this.Invoice.InvoiceId=result.InvoiceId; for(let i=0;i