/// <summary>
        /// Parses the HMRC vat returns PDF.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="info">The information.</param>
        /// <returns></returns>
        public Optional <VatReturnsPerBusiness> ParseHmrcVatReturnsPdf(string fileName, InfoAccumulator info)
        {
            PdfReader reader;

            try {
                reader = new FdfReader(fileName);
            } catch (Exception ex) {
                info.AddException(ex);
                return(null);
            }

            VatReturnsPerBusiness vatReturnsPerBusiness = new VatReturnsPerBusiness();

            HmrcBusiness    hmrcBusiness    = new HmrcBusiness();
            VatReturnRecord vatReturnRecord = new VatReturnRecord();

            vatReturnsPerBusiness.VatReturnRecord = vatReturnRecord;
            vatReturnsPerBusiness.Business        = hmrcBusiness;
            vatReturnsPerBusiness.Entries         = ParseVatReturnDetails(reader, info).Value;
            FillPeriodData(reader, vatReturnRecord, info);
            FillBusinessData(reader, vatReturnRecord, hmrcBusiness, info);

            if (!info.HasErrors)
            {
                return(vatReturnsPerBusiness);
            }

            return(null);
        }
Example #2
0
        /// <summary>
        /// Saves the vat returns per business.
        /// </summary>
        /// <param name="vatPerBusiness">The vat per business.</param>
        /// <param name="connection">The connection.</param>
        /// <returns></returns>
        private bool SaveVatReturnsPerBusiness(VatReturnsPerBusiness vatPerBusiness, SqlConnection connection)
        {
            //Business
            int businessId = SaveBusiness(vatPerBusiness.Business, connection);

            if (businessId > 0)
            {
                vatPerBusiness.VatReturnRecord.BusinessId = businessId;
            }

            //VatReturnRecord
            bool res         = true;
            int  vatRecordId = SaveVatReturnRecord(vatPerBusiness.VatReturnRecord, connection);

            //VatReturnEntries
            foreach (var batch in vatPerBusiness.Entries
                     .ForEach(entry => entry.RecordId = vatRecordId)
                     .Batch(800))
            {
                res &= SaveVatReturnEntries(batch, connection);
                if (!res)
                {
                    return(false);
                }
            }

            return(true);
        }