Aktualizacja wartości kolumn skryptem

Jesteś tu:
← Wszystkie tematy

Załóżmy, że chcemy aby w oknie “Zapotrzebowanie – materiały” kolumna “Zamów” była wypełniana według wzoru ([zapotrzebowanie]+[stan minimalny]) – ([stan] + [zamówienia]).
W tym celu możemy przygotować prosty skrypt.
Otwieramy Obiekty biznesowe -> Materiał -> Akcje z menu
Nowy ->Uruchom skrypt
Etykieta: “Oblicz ilość”
Tryb odświeżania: “Wszystkie wiersze”
Skrypt – dodaj – nazwa skryptu: Zapotrzebowanie.

W treść skryptu wklejamy:

using System.Linq;
using System.Windows;
using Worm;
using Worm.Ui.Wpf;
using Worm.Ui.Wpf.Views;
using System.Collections;
using System.Collections.Generic;
using Unicore.Manufacture.Business;

namespace MyExtensions {
    public class Extensions : IGridScript {
        public IEnumerable<object> SelectedRows { get; set; } // zaznaczone wiersze w bieżącym widoku
        public IEnumerable<object> ItemsSource { get; set; } // wszystkie wiersze w bieżącym widoku
        public object Row { get; set; } // pierwszy zaznaczony wiersz w bieżącym widoku

        public void MyMethod() { 
            foreach (Component c in ItemsSource) {
                qty = (c.RequiredQty +  (decimal)c.MinStockQty) - (c.StockQty + (decimal)c.PurchaseOrderQty);
                c.OrderQty = (qty > 0) ? qty : 0;
            }
            UiView.CurrentView.DataGridControl.Refresh();
        }
    }
};

Dla wersji wcześniejszhych, niż 2.5.5x:

using System.Linq;
using System.Windows;
using Worm;
using Worm.Ui.Wpf;
using Worm.Ui.Wpf.Views;
using System.Collections;
using System.Collections.Generic;
using Unicore.Manufacture.Business;

namespace MyExtensions {
    public class ZapotrzebowanieExtensions {
        public void Oblicz() {
            var grid = UiView.CurrentView.DataGridControl;
            decimal quantity;
            foreach (Component c in grid.SelectedRows) { // lub grid.ItemsSource jeżeli chcesz dla wszystkich wierszy
                quantity = (c.RequiredQty + (decimal)c.MinStockQty) - (c.StockQty + (decimal)c.PurchaseOrderQty);
                c.OrderQty = (quantity > 0) ? quantity : 0;
            }
            grid.Refresh();
        }
    }
};