public void TestManualJournalCanBeSerialized() { ManualJournal manualJournal = new ManualJournal { Narration = "Test Manual Journal", Status = "ACTIVE", JournalLines = new ManualJournalLineItems { new ManualJournalLineItem { AccountCode = "200", Description = "Description", LineAmount = 10.0m } } }; string xml = ModelSerializer.Serialize(manualJournal); Assert.AreEqual(@"<ManualJournal> <ManualJournalID>00000000-0000-0000-0000-000000000000</ManualJournalID> <Status>ACTIVE</Status> <LineAmountTypes>NoTax</LineAmountTypes> <Narration>Test Manual Journal</Narration> <JournalLines> <JournalLine> <Description>Description</Description> <LineAmount>10.0</LineAmount> <AccountCode>200</AccountCode> </JournalLine> </JournalLines> </ManualJournal>".Replace("'", "\""), xml); }
public ManualJournal Update(ManualJournal item) { return(ManualJournals.Update(item)); }
public ManualJournal Create(ManualJournal item) { return(ManualJournals.Create(item)); }
public async Task <ManualJournal> UpdateAsync(ManualJournal item) { return(await ManualJournals.UpdateAsync(item)); }
public void UploadExpensestoXero() { string Narration = ""; string FootCheck = ""; decimal ExpenseValueTotal = 0; decimal ExpenseValue = 0; string Nominal = "000"; int ExpenseLineCount = 0; string DefaultExpenseCode = DefaultExpenseNominalCode.Text; string DefaultBSCode = DefaultExpenseNominalCode.Text; string TaxType = "NONE"; decimal VATValue = 0; try { myxeroapi = XeroAuthenticate(this, true, ""); } catch { throw new Exception("Not connected to Xero"); } XeroConnection.Text = myxeroapi.Organisation.Name.ToString(); dynamic stuff = JsonConvert.DeserializeObject(GetPeopleHRData()); try { ExpenseLineCount = Convert.ToInt32(stuff.Result.Count); } catch { Completed.Text = "No Expenses to upload"; throw new Exception("No Expenses to upload"); } try { var Journal = new ManualJournal { }; int counter = 0; foreach (var x in stuff.Result) { if (Narration != string.Concat("Expense Claim", " - ", x["Expense Report Description"], " - ", x["First Name"], " ", x["Last Name"])) { Journal = new ManualJournal { Date = x["Expense Line Date"], Narration = string.Concat("Expense Claim", " - ", x["Expense Report Description"], " - ", x["First Name"], " ", x["Last Name"]), }; Journal.Status = ManualJournalStatus.Draft; Journal.LineAmountTypes = Xero.Api.Core.Model.Types.LineAmountType.Inclusive; Journal.Lines = new List <Line>(); Narration = string.Concat("Expense Claim", " - ", x["Expense Report Description"], " - ", x["First Name"], " ", x["Last Name"]); ExpenseValueTotal = 0; } String St = x["Expense Line Category"]; if (St == null) { Nominal = ""; } else { int pFrom = St.IndexOf("(") + "(".Length; int pTo = St.LastIndexOf(")"); Nominal = St.Substring(pFrom, pTo - pFrom); } // Tax Calculation if (x["Expense Line Taxable Amount"] == null) { TaxType = "NONE"; VATValue = 0; } else { TaxType = "INPUT2"; double LineValue = (double)x["Expense Line Amount"]; VATValue = (decimal)Math.Round(LineValue - (LineValue / 1.2), 2); } // Expense Journal Journal.Lines.Add( new Line { AccountCode = Nominal, TaxType = TaxType, Description = string.Concat(x["Expense Line Title"], " - ", x["Expense Report Description"], " - ", x["First Name"], " ", x["Last Name"]), Amount = x["Expense Line Amount"], TaxAmount = VATValue } ); ExpenseValue = x["Expense Line Amount"]; ExpenseValueTotal = ExpenseValueTotal + ExpenseValue; if (counter == ExpenseLineCount - 1) { FootCheck = ""; } else { FootCheck = string.Concat("Expense Claim", " - ", stuff.Result[counter + 1]["Expense Report Description"], " - ", stuff.Result[counter + 1]["First Name"], " ", stuff.Result[counter + 1]["Last Name"]); } counter++; if (Narration != FootCheck) { // Employee Expense Balance Sheet Account Journal.Lines.Add( new Line { AccountCode = DefaultBSCode, TaxType = "NONE", Description = string.Concat(x["Expense Report Description"], " - ", x["First Name"], " ", x["Last Name"]), Amount = -ExpenseValueTotal, } ); myxeroapi.Create(Journal); Completed.Text = "Journals Written"; } } } catch (Exception e) { Completed.Text = e.ToString(); } }
public Task <ManualJournal> CreateAsync(ManualJournal item) { return(ManualJournals.CreateAsync(item)); }