Esempio n. 1
0
        private static void CopyItemFromMYOB(AMSDbContext connect, MYOBTaxCode jtItem, TaxCode item)
        {
            jtItem.Uid         = item.UID;
            jtItem.URI         = item.URI.ToString();
            jtItem.Code        = item.Code;
            jtItem.Description = item.Description;
            jtItem.Rate        = item.Rate;
            jtItem.TypeCode    = item.Type.ToString();

            if (item.TaxCollectedAccount == null)
            {
                jtItem.TaxCollectedAccount = null;
            }
            else
            {
                jtItem.TaxCollectedAccount = connect.MYOBAccounts.SingleOrDefault(x => x.Uid == item.TaxCollectedAccount.UID);
            }

            if (item.TaxPaidAccount == null)
            {
                jtItem.TaxPaidAccount = null;
            }
            else
            {
                jtItem.TaxPaidAccount = connect.MYOBAccounts.SingleOrDefault(x => x.Uid == item.TaxPaidAccount.UID);
            }

            jtItem.RowVersion = item.RowVersion;
        }
Esempio n. 2
0
        //private void RebuildMirrorLinks(AMSDbContext connect, TaxCode[] ar)
        //{
        //	// disconnect mismatches
        //	foreach (var taxrate in connect.TaxRates.Where(x => x.MYOBTaxCode != null && x.Code != x.MYOBTaxCode.Code))
        //	{
        //		taxrate.MYOBTaxCode = null;
        //	}
        //	connect.SaveChanges();

        //	// add missing TaxRates
        //	foreach (var item in ar)
        //	{
        //		HandyFunctions.Log("checking {0}", item.Code);
        //		var taxRate = connect.TaxRates.SingleOrDefault(x => x.Code == item.Code);

        //		if (taxRate == null)
        //		{
        //			var jtItem = GetMatchingJTItemByUid(connect, item);

        //			taxRate = new TaxRate { Code = jtItem.Code, Percentage = jtItem.Rate, MYOBTaxCode = jtItem };
        //			connect.TaxRates.Add(taxRate);
        //			taxRate.MYOBTaxCode = jtItem;
        //		}
        //		else
        //		{
        //			if (taxRate.MYOBTaxCode == null)
        //			{
        //				var jtItem = GetMatchingJTItemByUid(connect, item);
        //				taxRate.MYOBTaxCode = jtItem;
        //			}
        //		}
        //	}
        //	connect.SaveChanges();
        //}

        private void RebuildMirrorTable(TaxCode[] ar, AMSDbContext connect, IProgress <int> progressCallback)
        {
            var info     = "";
            var stepNum  = 1;
            var numSteps = ar.Count();

            try
            {
                foreach (var item in ar)
                {
                    if (item.Code == info)
                    {
                        throw new ExceptionDuplicateKey($"Taxcode {info}");
                    }
                    info = item.Code;
                    HandyFunctions.Log(info);
                    var jtItem = GetMatchingJTItemByUid(connect, item);

                    if (jtItem == null)
                    {
                        jtItem = new MYOBTaxCode();
                        connect.MYOBTaxCodes.Add(jtItem);
                    }

                    CopyItemFromMYOB(connect, jtItem, item);
                    progressCallback.Report((100 * stepNum) / numSteps);

                    stepNum++;
                }
                connect.SaveChanges();

                // delete missing
                foreach (var taxcode in connect.MYOBTaxCodes)
                {
                    var item = ar.SingleOrDefault(x => x.UID == taxcode.Uid);
                    if (item == null)
                    {
                        //var codeString = item.Code;
                        //foreach (var rate in connect.TaxRates.Where(x => x.MYOBTaxCode != null && x.MYOBTaxCode.Code == codeString))
                        //{
                        //	rate.MYOBTaxCode = null;
                        //}
                        connect.MYOBTaxCodes.Remove(taxcode);
                    }
                }
                connect.SaveChanges();
            }
            catch (Exception ex)
            {
                ex.Data.Add("TaxCode", info);
                throw;
            }
        }