コード例 #1
0
        /// <summary>
        /// Delivery docket item action
        /// </summary>
        /// <param name="adapterPosition">Adapter position.</param>
        /// <param name="action">Action.</param>
        void OnDeliveryDocketItemAction(int adapterPosition, DeliveryItemViewHolderAction action)
        {
            _adapterPosition = adapterPosition;

            _docketItem   = _docketItems[adapterPosition];
            _docketItemId = _docketItem.Id;

            EditDeliveryDocketItem(_docketItem);
        }
コード例 #2
0
 /// <summary>
 /// Updates the docket item.
 /// </summary>
 /// <param name="repository">Repository.</param>
 /// <param name="item">Item.</param>
 /// <param name="product">Product.</param>
 public static void UpdateDocketItem(Repository repository, DeliveryDocketItem item, Product product)
 {
     item.FullsDelivered   = product.Fulls.GetValueOrDefault();
     item.EmptiesDelivered = product.EmptiesDelivered.GetValueOrDefault();
     item.FullsCollected   = product.FullsCollected.GetValueOrDefault();
     item.EmptiesCollected = product.Empties.GetValueOrDefault();
     item.FaultyFulls      = product.FaultyFulls.GetValueOrDefault();
     item.FaultyEmpties    = product.FaultyEmpties.GetValueOrDefault();
     item.OrderQuantity    = product.OrderQuantity.GetValueOrDefault();
     repository.SaveChanges();
 }
コード例 #3
0
        /// <summary>
        /// Edit delivery docket item
        /// </summary>
        void EditDeliveryDocketItem(DeliveryDocketItem docketItem)
        {
            PersistOrderReference();

            var product = _repository.Products.First(x => x.ProductCode == docketItem.ProductCode);

            _stockItemDialog = StockItemDialog
                               .NewDeliveryItemInstance(product.ProductCode, docketItem.Id, OnUpdateDocketItem);

            _stockItemDialog.Show(FragmentManager, TAG);
        }
コード例 #4
0
        void RestoreDocketItem(Bundle savedInstanceState)
        {
            if (savedInstanceState != null)
            {
                var adapterPosition = savedInstanceState.GetInt(BundleArguments.AdapterPosition, -1);

                if (adapterPosition != -1)
                {
                    _adapterPosition = adapterPosition;
                }

                _docketItemId = savedInstanceState.GetString(BundleArguments.DocketItemId);

                if (_docketItemId != null)
                {
                    _docketItem = _repository.Find <DeliveryDocketItem>(_docketItemId);
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Create new docket
        /// </summary>
        /// <param name="realm">Realm.</param>
        /// <param name="runNumber">Run number.</param>
        /// <param name="call">Call.</param>
        /// <param name="subscriber">Subscriber.</param>
        public static void CreateNewDocket(Repository repository, string runNumber, Call call, Subscriber subscriber)
        {
            var device        = repository.MobileDevices.First();
            var profile       = repository.Profiles.First();
            var customer      = repository.Customers.Find(call.CustomerAccountNumber);
            var lendingStatus = customer.LendingStatus.GetValueOrDefault();

            // remove any uncommited dockets or current dockets
            var uncommittedDockets = repository.DeliveryDockets
                                     .Where(x => !x.Committed)
                                     .ToList();

            uncommittedDockets.ForEach((uncommittedDocket) =>
            {
                // remove all docket items
                var uncommittedDocketItems = repository.DeliveryDocketItems
                                             .Where(x => x.DeliveryDocketID == uncommittedDocket.DocketID)
                                             .ToList();

                repository.RemoveRange(uncommittedDocketItems);
                repository.RemoveRange(uncommittedDockets);
            });

            repository.SaveChanges();

            // get the latest docket
            var latestDocket = repository.DeliveryDockets
                               .OrderByDescending(x => x.DateModifiedDate)
                               .FirstOrDefault();

            // get the docket number either from the latest docket or device table
            var latestDeviceDocketNumber = device.DocketNumber + 1;
            var docketNumber             = latestDocket != null ? latestDocket.DocketNumber + 1 : latestDeviceDocketNumber;

            if (latestDeviceDocketNumber > docketNumber)
            {
                docketNumber = latestDeviceDocketNumber;
            }

            var docketId = CreateDocketID(1, device.Id, docketNumber);

            var docketExists = repository.DeliveryDockets.Any(x => x.DocketID == docketId);

            while (docketExists)
            {
                docketNumber = latestDocket.DocketNumber + 1;
                docketId     = CreateDocketID(1, latestDocket.DeviceID, docketNumber);
                docketExists = repository.DeliveryDockets.Any(x => x.DocketID == docketId);
            }

            // we always want the date represented in local danish time for both
            // print and saving agains the docket, as historical dates were not in UTC.
            var localTime = GetLocalTime();

            var docket = new DeliveryDocket
            {
                DateModified          = localTime,
                RunNumber             = runNumber,
                SubscriberID          = subscriber.ParentSubscriberID,
                ChildSubscriberID     = subscriber.ID,
                DriverPrintName       = subscriber.ID,
                ShortName             = call.ShortName,
                DriverID              = profile.DriverID,
                CustomerAccountNumber = call.CustomerAccountNumber,
                CompanyTypeID         = CompanyTypeId,
                DeviceIMEI            = device.DeviceID.Substring(0, 13),
                DeviceID              = device.Id,
                OrderNumber           = call.OrderNumber,
                ShowLendingStatus     = lendingStatus,
                DocketVersion         = 1,
                DocketNumber          = docketNumber,
                DocketID              = docketId,
                Memo      = docketId,
                Committed = false,
                Confirmed = false
            };



            // check that this docket id is unique
            var existing = repository.DeliveryDockets.Find(docket.DocketID);

            // docket exists - throw an exception
            if (existing != null)
            {
                throw new DocketExistsException($"DocketID {docket.DocketID} " +
                                                $"already exists and was created on {docket.FormattedDateModified}");
            }


            docket.SetCall(call);
            docket.SetSubscriber(subscriber);

            // get the products
            var products = repository.Products.ToList();

            // get the history
            var history = repository.History
                          .Where(x => x.CustomerAccountNumber == docket.CustomerAccountNumber).ToList();

            // flag any products previously ordered
            history.ForEach((record) =>
            {
                var product = products.FirstOrDefault(x => x.ProductCode == record.ProductCode);

                if (product != null)
                {
                    product.PreviouslyOrdered = true;
                }
            });

            // order the products by previously ordered & then sequence
            products = products.OrderByDescending(x => x.PreviouslyOrdered).ThenBy(x => x.Sequence).ToList();

            var orderItems = repository.OrderItems.Where(x => x.OrderNumber == call.OrderNumber);

            // add the products
            for (var i = 0; i < products.Count; i++)
            {
                var product  = products[i];
                var sequence = product.Sequence.GetValueOrDefault();

                var docketItem = new DeliveryDocketItem
                {
                    SubscriberID          = subscriber.ParentSubscriberID,
                    Description           = product.ShortDescription,
                    ProductCode           = product.ProductCode,
                    RunNumber             = docket.RunNumber,
                    Sequence              = i,
                    CustomerAccountNumber = docket.CustomerAccountNumber,
                    DeliveryDocketID      = docket.DocketID,
                    Id = Guid.NewGuid().ToString()
                };

                var orderItem = orderItems.FirstOrDefault(x => x.ProductCode == docketItem.ProductCode);

                if (orderItem != null)
                {
                    docketItem.OrderQuantity = orderItem.Quantity;
                    docketItem.OrderNumber   = orderItem.OrderNumber;
                }

                repository.DeliveryDocketItems.Add(docketItem);
            }

            repository.Add(docket);
            profile.CurrentDocketID = docket.DocketID;

            repository.SaveChanges();
        }
コード例 #6
0
        /// <summary>
        /// Config
        /// </summary>
        /// <returns>The config.</returns>
        /// <param name="stock">Stock.</param>
        public void Config(DeliveryDocketItem deliveryItem)
        {
            using (var cylinderImageView = ItemView.FindViewById <ImageView>(Resource.Id.cylinderImageView))
            {
                var icon = ProductIcon.GetIcon(deliveryItem.ProductCode);

                if (icon != null)
                {
                    cylinderImageView.SetImageResource(icon.Value);
                }
                else
                {
                    cylinderImageView.SetImageResource(0);
                }
            }

            using (var descriptionTextView = ItemView.FindViewById <TextView>(Resource.Id.descriptionTextView))
            {
                descriptionTextView.Text = deliveryItem.Description;
            }

            using (var fullsTextView = ItemView.FindViewById <TextView>(Resource.Id.fullsTextView))
            {
                var fullsLabel = ItemView.Context.Resources.GetString(Resource.String.label_fulls);
                fullsTextView.Text = String.Format("{0} {1}", deliveryItem.FullsDelivered, fullsLabel);

                fullsTextView.Visibility = deliveryItem.FullsDelivered > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var emptiesCollectedTextView = ItemView.FindViewById <TextView>(Resource.Id.emptiesCollectedTextView))
            {
                var emptiesCollectedLabel = ItemView.Context.Resources.GetString(Resource.String.label_empties);
                emptiesCollectedTextView.Text = String.Format("{0} {1}", deliveryItem.EmptiesCollected, emptiesCollectedLabel);

                emptiesCollectedTextView.Visibility = deliveryItem.EmptiesCollected > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var faultyFullsTextView = ItemView.FindViewById <TextView>(Resource.Id.faultyFullsTextView))
            {
                var faultyFullsLabel = ItemView.Context.Resources.GetString(Resource.String.label_faulty_fulls);
                faultyFullsTextView.Text = String.Format("{0} {1}", deliveryItem.FaultyFulls, faultyFullsLabel);

                faultyFullsTextView.Visibility = deliveryItem.FaultyFulls > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var faultyEmptiesTextView = ItemView.FindViewById <TextView>(Resource.Id.faultyEmptiesTextView))
            {
                var faultyEmptiesLabel = ItemView.Context.Resources.GetString(Resource.String.label_faulty_empties);
                faultyEmptiesTextView.Text = String.Format("{0} {1}", deliveryItem.FaultyEmpties, faultyEmptiesLabel);

                faultyEmptiesTextView.Visibility = deliveryItem.FaultyEmpties > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var fullsCollectedTextView = ItemView.FindViewById <TextView>(Resource.Id.fullsCollectedTextView))
            {
                var fullsCollectedLabel = ItemView.Context.Resources.GetString(Resource.String.label_fulls_collected);
                fullsCollectedTextView.Text = String.Format("{0} {1}", deliveryItem.FullsCollected, fullsCollectedLabel);

                fullsCollectedTextView.Visibility = deliveryItem.FullsCollected > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var emptiesDeliveredTextView = ItemView.FindViewById <TextView>(Resource.Id.emptiesDeliveredTextView))
            {
                var emptiesDeliveredLabel = ItemView.Context.Resources.GetString(Resource.String.label_empties_delivered);
                emptiesDeliveredTextView.Text = String.Format("{0} {1}", deliveryItem.EmptiesDelivered, emptiesDeliveredLabel);

                emptiesDeliveredTextView.Visibility = deliveryItem.EmptiesDelivered > 0 ? ViewStates.Visible : ViewStates.Gone;
            }

            using (var orderedTextView = ItemView.FindViewById <TextView>(Resource.Id.orderedTextView))
            {
                var orderedLabel = ItemView.Context.Resources.GetString(Resource.String.label_ordered);
                orderedTextView.Text = String.Format("{0} {1}", deliveryItem.OrderQuantity, orderedLabel);

                orderedTextView.Visibility = deliveryItem.OrderQuantity > 0 ? ViewStates.Visible : ViewStates.Gone;
            }
        }