/// <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); }
/// <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(); }
/// <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); }
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); } } }
/// <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(); }
/// <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; } }