コード例 #1
0
        /// <summary>
        /// Pull all the invoiced records from DB.
        /// </summary>
        /// <param name="invoicedto"></param>
        /// <returns></returns>
        internal Invoicedto LoadInvoiced(Invoicedto invoicedto)
        {
            List <InvoiceCreated> invoiceCreatedList = new List <InvoiceCreated>();

            using (SqlConnection sqlConnection = new SqlConnection(invoicedto.ConnectionString))
            {
                string     oString = string.Format("select * from TimeActivity where RealmId='{0}' and Invoice_QboId is not null", invoicedto.CompanyId);
                SqlCommand oCmd    = new SqlCommand(oString, sqlConnection);
                sqlConnection.Open();
                using (SqlDataReader oReader = oCmd.ExecuteReader())
                {
                    while (oReader.Read())
                    {
                        InvoiceCreated nvoiceCreated = new InvoiceCreated();
                        nvoiceCreated.Employee = oReader["Employee"].ToString();
                        nvoiceCreated.Customer = oReader["Customer"].ToString();
                        nvoiceCreated.Item     = oReader["Item"].ToString();
                        nvoiceCreated.Date     = Convert.ToDateTime(oReader["Date"].ToString()).ToShortDateString();
                        nvoiceCreated.Hours    = oReader["Hours"].ToString();
                        nvoiceCreated.QboId    = oReader["Invoice_QboId"].ToString();
                        invoiceCreatedList.Add(nvoiceCreated);
                    }
                    sqlConnection.Close();
                }
            }
            if (invoicedto.InvoiceCreated == null)
            {
                invoicedto.InvoiceCreated = new List <InvoiceCreated>();
            }
            invoicedto.InvoiceStatus     = "Invoiced";
            invoicedto.InvoiceListLength = invoiceCreatedList.Count;
            invoicedto.InvoiceCreated    = invoiceCreatedList;
            return(invoicedto);
        }
コード例 #2
0
        /// <summary>
        /// Populate the invoice left for pending.
        /// </summary>
        /// <param name="invoicedto"></param>
        /// <returns></returns>
        internal Invoicedto LoadPending(Invoicedto invoicedto)
        {
            List <TimeActivityFill> timeActivityFillList = new List <TimeActivityFill>();

            using (SqlConnection sqlConnection = new SqlConnection(invoicedto.ConnectionString))
            {
                string     oString = string.Format("select * from TimeActivity where RealmId='{0}' and Invoice_QboId is null", invoicedto.CompanyId);
                SqlCommand oCmd    = new SqlCommand(oString, sqlConnection);
                sqlConnection.Open();
                using (SqlDataReader oReader = oCmd.ExecuteReader())
                {
                    while (oReader.Read())
                    {
                        TimeActivityFill timeActivityFill = new TimeActivityFill();
                        timeActivityFill.Employee = oReader["Employee"].ToString();
                        timeActivityFill.Customer = oReader["Customer"].ToString();
                        timeActivityFill.Item     = oReader["Item"].ToString();
                        timeActivityFill.Date     = Convert.ToDateTime(oReader["Date"].ToString()).ToShortDateString();
                        timeActivityFill.Hours    = oReader["Hours"].ToString();
                        timeActivityFill.QboId    = oReader["QboId"].ToString();
                        timeActivityFillList.Add(timeActivityFill);
                    }
                    sqlConnection.Close();
                }
            }
            if (invoicedto.InvoiceCreated == null)
            {
                invoicedto.InvoiceCreated = new List <InvoiceCreated>();
            }
            invoicedto.InvoicePending       = "Pending";
            invoicedto.InvoicePendingLength = timeActivityFillList.Count;
            invoicedto.InvoicePendingList   = timeActivityFillList;
            return(invoicedto);
        }
コード例 #3
0
        /// <summary>
        /// Return the customer id from timeactivity.
        /// </summary>
        /// <param name="invoicedto"></param>
        /// <returns></returns>
        private TimeActivity GetCustomerId(Invoicedto invoicedto)
        {
            string EXISTING_TimeActive_QUERY         = string.Format("select * from timeactivity where Id = '{0}'", invoicedto.timeQboId);
            QueryService <TimeActivity> queryService = new QueryService <TimeActivity>(dataserviceFactory.getServiceContext);
            TimeActivity resultFound = queryService.ExecuteIdsQuery(EXISTING_TimeActive_QUERY).FirstOrDefault <TimeActivity>();

            return(resultFound);
        }
コード例 #4
0
        /// <summary>
        /// Save the object to dictionary
        /// </summary>
        /// <param name="controller"></param>
        /// <param name="invoicedto"></param>
        /// <returns></returns>
        internal Invoicedto Save(object controller, Invoicedto invoicedto)
        {
            invoiceController = controller as Controller;
            Random random = new Random();

            invoicedto.Id = random.Next(1, 100);
            invoiceRepository.Add(invoicedto.Id, invoicedto);
            invoiceController.TempData["Invoice"] = invoiceRepository;
            invoiceController.TempData.Keep();
            return(invoicedto);
        }
コード例 #5
0
        /// <summary>
        /// This function is responsible for populating the
        /// parameters required for generating a invoice.
        /// </summary>
        /// <param name="invoicedto"></param>
        /// <param name="timeActivity"></param>
        /// <returns></returns>
        private Invoice PopulateInvoiceParam(Invoicedto invoicedto, TimeActivity timeActivity)
        {
            Invoice invoice = new Invoice();

            invoice.TxnDate = timeActivity.TxnDate;
            invoice.Line    = new Line[]
            {
                new Line {
                    AmountSpecified = true, Description = timeActivity.Description, Amount = 25, DetailType = LineDetailTypeEnum.SalesItemLineDetail, DetailTypeSpecified = true, AnyIntuitObject = new SalesItemLineDetail {
                        Qty = Convert.ToDecimal(3.5), TaxCodeRef = new ReferenceType {
                            Value = "NON"
                        }, ItemRef = new ReferenceType {
                            Value = timeActivity.ItemRef.Value
                        }
                    }
                },
                new Line {
                    Amount = 25, AmountSpecified = true, DetailType = LineDetailTypeEnum.SubTotalLineDetail, DetailTypeSpecified = true, AnyIntuitObject = new SubTotalLineDetail {
                    }
                }
            };
            invoice.TxnTaxDetail = new TxnTaxDetail {
                TotalTax = 0
            };
            invoice.CustomerRef = new ReferenceType {
                Value = timeActivity.CustomerRef.Value
            };
            invoice.DueDate  = DateTime.Now;
            invoice.TotalAmt = 25;
            invoice.ApplyTaxAfterDiscount = false;
            invoice.PrintStatus           = PrintStatusEnum.NeedToPrint;
            invoice.PrintStatusSpecified  = true;
            invoice.EmailStatus           = EmailStatusEnum.NotSet;
            invoice.EmailStatusSpecified  = true;
            invoice.Balance                               = 25;
            invoice.BalanceSpecified                      = true;
            invoice.Deposit                               = 0;
            invoice.DepositSpecified                      = true;
            invoice.AllowIPNPayment                       = false;
            invoice.AllowIPNPaymentSpecified              = true;
            invoice.AllowOnlinePayment                    = false;
            invoice.AllowOnlinePaymentSpecified           = true;
            invoice.AllowOnlineCreditCardPayment          = false;
            invoice.AllowOnlineCreditCardPaymentSpecified = true;
            invoice.AllowOnlineACHPayment                 = false;
            invoice.AllowOnlineACHPaymentSpecified        = true;
            return(invoice);
        }
コード例 #6
0
        /// <summary>
        /// View is resposible for rendering the final view
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult View(Int64 id)
        {
            Invoicedto invoicedto = id > 0 ? new InvoiceRepository().Get(this, id) : new Invoicedto();

            invoiceService = new InvoiceService(invoicedto);
            invoicedto     = invoiceService.LoadPending(invoicedto);
            invoicedto     = invoiceService.LoadInvoiced(invoicedto);
            multiplemodels = new Multiplemodels();
            multiplemodels.TimeActivityModel = invoicedto.TimeActivityDto;
            multiplemodels.InvoiceModel      = invoicedto;
            multiplemodels.SyncObjectsModel  = invoicedto.TimeActivityDto.Syncdto;
            multiplemodels.IsReadySync       = multiplemodels.SyncObjectsModel.IsEmployeeSync | multiplemodels.SyncObjectsModel.IsCustomerSync | multiplemodels.SyncObjectsModel.IsServiceItemSync;
            multiplemodels.IsReadyTimeentry  = true;
            multiplemodels.IsReadytoInvoice  = false;
            return(View("Invoices", multiplemodels));
        }
コード例 #7
0
 /// <summary>
 /// this function generate invoice by receiving customer id
 /// create instance of invoice object
 /// push to QBO
 /// </summary>
 /// <param name="invoicedto"></param>
 /// <returns></returns>
 internal Invoicedto GenerateInvoice(Invoicedto invoicedto)
 {
     try
     {
         TimeActivity timeActivity = GetCustomerId(invoicedto);
         Invoice      invoice      = PopulateInvoiceParam(invoicedto, timeActivity);
         invoice                 = dataService.Add <Invoice>(invoice);
         invoicedto.Invoice      = invoice;
         invoicedto.InvoiceQboId = Convert.ToInt64(invoice.Id);
         invoicedto.AlertMessage = string.Format("Invoice successfully created and pushed to QBO (QBO ID = {0})", invoice.Id);
         return(invoicedto);
     }
     catch (Intuit.Ipp.Exception.FaultException ex)
     {
         throw ex;
     }
 }
コード例 #8
0
        /// <summary>
        /// Update the invoice to sql
        /// </summary>
        /// <param name="invoicedto"></param>
        /// <returns></returns>
        internal Invoicedto UpdateDatabase(Invoicedto invoicedto)
        {
            var    qboId        = invoicedto.timeQboId;
            var    invoiceQboId = invoicedto.InvoiceQboId;
            string query        = "UPDATE TimeActivity SET Invoice_QboId=@Invoice_QboId WHERE QboId=@QboId";

            using (SqlCommand myCommand = new SqlCommand(query, new SqlConnection(invoicedto.ConnectionString)))
            {
                myCommand.Connection.Open();
                myCommand.Parameters.AddWithValue("@Invoice_QboId", invoiceQboId);
                myCommand.Parameters.AddWithValue("@QboId", qboId);
                myCommand.ExecuteNonQuery();
                myCommand.Connection.Close();
            }
            invoicedto.UpdatePending = true;
            return(invoicedto);
        }
コード例 #9
0
        public JsonResult Save(Int64 id, Int64 qboId)
        {
            Invoicedto invoicedto = id > 0 ? new InvoiceRepository().Get(this, id) : new Invoicedto();

            invoicedto.timeQboId = qboId;
            invoiceService       = new InvoiceService(invoicedto);
            invoicedto           = invoiceService.GenerateInvoice(invoicedto);
            invoicedto           = invoiceService.UpdateDatabase(invoicedto);
            //invoicedto = invoiceService.FillCreatedInvoice(invoicedto);
            invoiceRepository = new InvoiceRepository();
            invoicedto        = invoiceRepository.Save(this, invoicedto);
            object data = new
            {
                Id = invoicedto.Id
            };

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        public ActionResult Load(Int64 id)
        {
            TimeActivitydto timeActivitydto = id > 0 ? new TimeActivityRepository().Get(this, id) : new TimeActivitydto();

            invoicedto.oAuthTokens      = timeActivitydto.oAuthTokens;
            invoicedto.CustomerList     = timeActivitydto.CustomerList;
            invoicedto.CompanyId        = invoicedto.oAuthTokens.Realmid;
            invoicedto.ConnectionString = timeActivitydto.Syncdto.ConnectionString;
            invoicedto.TimeActivityDto  = timeActivitydto;
            invoiceService    = new InvoiceService(invoicedto);
            invoicedto        = invoiceService.LoadPending(invoicedto);
            invoicedto        = invoiceService.LoadInvoiced(invoicedto);
            invoiceRepository = new InvoiceRepository();
            invoicedto        = invoiceRepository.Save(this, invoicedto);
            multiplemodels    = new Multiplemodels();
            multiplemodels.TimeActivityModel = timeActivitydto;
            multiplemodels.InvoiceModel      = invoicedto;
            multiplemodels.SyncObjectsModel  = invoicedto.TimeActivityDto.Syncdto;
            multiplemodels.IsConnected       = timeActivitydto.oAuthTokens.IsConnected;
            multiplemodels.IsReadyTimeentry  = true;
            multiplemodels.IsReadytoInvoice  = true;
            multiplemodels.IsReadySync       = false;
            return(View("Invoices", multiplemodels));
        }
コード例 #11
0
 public InvoiceService(Invoicedto invoicedto)
 {
     dataserviceFactory = new DataserviceFactory(invoicedto.oAuthTokens);
     dataService        = dataserviceFactory.getDataService();
     invoiceRepository  = new InvoiceRepository();
 }