public static InvoiceModel ToInvoiceModel(this EFInvoice.Invoice value, KeithLink.Svc.Core.Models.Profile.Customer customer = null)
        {
            InvoiceModel retVal = new InvoiceModel();

            retVal.BranchId        = value.Division.Substring(0, 3);
            retVal.InvoiceNumber   = value.InvoiceNumber.Trim();
            retVal.Type            = DetermineType(value.InvoiceType.Trim());
            retVal.TypeDescription = EnumUtils <InvoiceType> .GetDescription(DetermineType(value.InvoiceType.Trim()));

            retVal.Status            = value.DetermineStatus();
            retVal.StatusDescription = EnumUtils <InvoiceStatus> .GetDescription(value.DetermineStatus());

            retVal.CustomerNumber = value.CustomerNumber;
            retVal.CustomerName   = customer == null ? "N/A" : customer.CustomerName;
            retVal.Amount         = value.AmountDue;
            retVal.DueDate        = value.DueDate;
            retVal.InvoiceDate    = value.InvoiceDate;
            retVal.OrderDate      = value.InvoiceDate;
            retVal.IsPayable      = value.InvoiceStatus.Equals("O", StringComparison.InvariantCultureIgnoreCase) && customer != null && customer.KPayCustomer;

            return(retVal);
        }
        public static PaymentTransactionModel ToPaymentTransactionModel(this PaymentTransaction payment, KeithLink.Svc.Core.Models.Profile.Customer customer, TimeSpan cutOffTime)
        {
            PaymentTransactionModel retVal = new PaymentTransactionModel();

            retVal.CustomerName   = customer.CustomerName;
            retVal.CustomerNumber = customer.CustomerNumber;
            retVal.AccountNumber  = payment.AccountNumber;
            retVal.ConfirmationId = payment.ConfirmationId;
            retVal.InvoiceNumber  = payment.InvoiceNumber;
            retVal.PaymentAmount  = payment.PaymentAmount;
            retVal.PaymentDate    = payment.ScheduledPaymentDate;
            retVal.SubmittedDate  = payment.PaymentDate;
            retVal.BranchId       = string.IsNullOrEmpty(payment.Division) ? string.Empty : payment.Division.Substring(0, 3);
            retVal.UserName       = payment.UserName;

            if (payment.ScheduledPaymentDate.HasValue)
            {
                DateTime paymentCutOffTime = payment.ScheduledPaymentDate.Value.Add(cutOffTime);

                retVal.Editable = DateTime.Now < paymentCutOffTime;
            }
            else
            {
                retVal.Editable = true;
            }

            return(retVal);
        }