Akcja obliczająca ilość materiału do zamówienia

Jesteś tu:
← Wszystkie tematy

Poniżej przedstawiony jest kod akcji wykonującej obliczenie ilości do zamówienia danego składnika z poziomu zakładki Zapotrzebowanie – materiały. Obiekt biznesowy, który jest prezentowany na tej zakładce to Component.

using System.Linq;
using System.Windows;
using Worm;
using Worm.Ui.Wpf;
using Worm.Ui.Wpf.Views;
using System;
using Hydra.Forte;
using Unicore.Manufacture.Business;

namespace ComponentEx {
	public class ComponentExt {
		public void SetOrderQty() {
			foreach(var obj in UiView.CurrentView.VisibleRows)
			{
				var component = obj as Component;
				component.OrderQty = component.RequiredQty - (Convert.ToDecimal(component.DefaultStockQty) + Convert.ToDecimal(component.PurchaseOrderQty)) > 0
                                    ? component.RequiredQty - (Convert.ToDecimal(component.DefaultStockQty) + Convert.ToDecimal(component.PurchaseOrderQty))
                                    : 0;
            	if (component.OrderQty < component.MinOrder && component.MinOrder > 0) component.OrderQty = component.MinOrder;
			}
			UiView.CurrentView.DataGridControl.Refresh();
		}
	}
};

Akcja wykonywana jest dla wszystkich widocznych w tabeli obiektów. Użyte pola obiektów:

  • RequiredQty – ilość wymagana składnika wynikająca z zapotrzebowania materiałowego według planu produkcji/zleceń
  • DefaultStockQty – ilość dostępna na magazynach ustawionych jako domyślne magazyny dla materiałów
  • PurchaseOrderQty – ilość danego materiału w drodze (na niezrealizowanych zamówieniach u dostawców)
  • MinOrder – minimalna wielkość zamówienia – wpisywana w oknie Indeksu Produkcyjnego
  • OrderQty – ilość jaką będziemy zamawiać (pole edycyjne).

Algorytm oblicza ilość do zamówienia (OrderQty) odejmując od ilości wymaganej do produkcji (RequiredQty) ilość dostępną oraz ilość na zamówieniach. Jeżeli wynik jest mniejszy od minimalnej zamawianej ilości (MinOrder), ilość jest dopełniana do tej minimalnej.