Piotr Kalinowski

Piotr Kalinowski Młodszy Programista

Temat: Worker - Handel/Towary

Dzień dobry,
pisze tutaj z poradą, gdyż dopiero rozpoczynam swoją przygodę z Enovą oraz C#. Do zrobienia mam workera, który miałby od danego towaru z modułu handel wyciągnąć stworzony "kod własny" i wstawić go w kolumnie. Worker, miałby wywołać właśnie taką opcje, która wyciągnie ten kod do kolumny, potwierdzając, że on widnieje w systemie. Poniżej załączam kod, co udało mi się zrobić do tej pory. Pozdrawiam serdecznie

// przesteń nazwy dla danego dodatku
namespace enova365.Worker
{
// klasa która się w tej przestrzeni zawiera
public class InfoTowar
{
// Potrzebne dane na których zostanie wykonana akcja
[Context]
public Soneta.Towary.Towar[] _Towary { get; set; }



[Action("Opcje/Kod",
Priority = 999,
Icon = ActionIcon.Wizard,
Target = ActionTarget.Menu | ActionTarget.Toolbar | ActionTarget.ToolbarWithText,
Mode = ActionMode.SingleSession | ActionMode.Progress | ActionMode.OnlyTable
)]

public void Akcja1()
{
// Właściwy kod czynności tutaj nie mam pojecia jak to rozgryźć
if (this._Towary.Length != 1)
throw new Exception("Zaznaczono więcej niż jeden towar");
foreach (Towar towar in this._Towary);
}


/*
public static bool IsEnabledMyAction(Towar towar)
{
// można np. sprawdzać poprawność danych lub rodzaj towaru
return true;
}
*/

public static bool IsVisibleAkcja1(Context cx)
{
// można np. sprawdzać poprawność danych lub rodzaj towaru
return true;
}
}
}
Nick Urban

Nick Urban Specjalista z branży
informatyki

Temat: Worker - Handel/Towary

using Soneta.Business;
using System;
using System.Collections.Generic;
using Soneta.Towary;
using Soneta.Business.UI;

[assembly: Worker(typeof(TowaryTools.Tool), typeof(Towary))]

namespace TowaryTools
{
class Tool
{
[Context]
public Context CX { get; set; }

[Action("Wyświetl kod", Icon = ActionIcon.Wizard, Target = ActionTarget.ToolbarWithText, Mode = ActionMode.SingleSession, Priority = 1005)]
public MessageBoxInformation PokazKod()
{
Soneta.Business.INavigatorContext selected = CX[typeof(Soneta.Business.INavigatorContext)] as Soneta.Business.INavigatorContext;

IEnumerable<Towar> towary = selected.SelectedRows as IEnumerable<Towar>;
List<string> listaKodow = new List<string>();

foreach (Towar towar in towary)
{
listaKodow.Add(towar.Kod);
}

string razem = string.Join(",", towary);

return new MessageBoxInformation
{
Text = razem,
OKHandler = () => null
};

}


public static bool IsVisiblePokazKod(Context cx)
{
// można np. sprawdzać poprawność danych lub rodzaj towaru
return true;
}
}
}
Piotr Kalinowski

Piotr Kalinowski Młodszy Programista

Temat: Worker - Handel/Towary

Dziękuje bardzo Nick Urban , ale chodziło mi bardziej o to, żeby wyświetlał się "kod własny" jakiś stworzony przeze mnie w enovie, by go znajdywało i wrzucało do listy w kolumnie. Widziałem też, że można stworzyć cechę w enovie i zrobić własną kolumnę, lecz nie wiem jaki miałby być algorytm na wywołanie tych kodów własnych do kolumny. Pozdrawiam.Ten post został edytowany przez Autora dnia 17.12.18 o godzinie 13:38
Nick Urban

Nick Urban Specjalista z branży
informatyki

Temat: Worker - Handel/Towary

Nie do końca rozumiem potrzebę ale poniżej dwie metody:

1. Tworzy kod dla zaznaczonych towarów i wrzuca do cechy stringowej o nazwie "WlasnyKod"na towarze.

[Action("Utworz kod dla zaznaczonych", Icon = ActionIcon.Wizard, Target = ActionTarget.ToolbarWithText, Mode = ActionMode.SingleSession, Priority = 1004)]
public void UtworzKod()
{
Soneta.Business.INavigatorContext selected = CX[typeof(Soneta.Business.INavigatorContext)] as Soneta.Business.INavigatorContext;
IEnumerable<Towar> towary = selected.SelectedRows as IEnumerable<Towar>;
string nowyKod = "";
string prefix = "PL_";

foreach (Towar towar in towary)
{
nowyKod = prefix + towar.Kod;
towar.Features["WlasnyKod"] = nowyKod;
}
}

2. Metoda wyświetla wartość cechy "WlasnyKod" dla zaznaczonych towarów:

[Action("Wyświetl kod", Icon = ActionIcon.Wizard, Target = ActionTarget.ToolbarWithText, Mode = ActionMode.SingleSession, Priority = 1005)]
public MessageBoxInformation PokazKod()
{
Soneta.Business.INavigatorContext selected = CX[typeof(Soneta.Business.INavigatorContext)] as Soneta.Business.INavigatorContext;

IEnumerable <Towar> towary = selected.SelectedRows as IEnumerable<Towar>;
List<string> listaKodow = new List<string>();

foreach (Towar towar in towary)
{
listaKodow.Add(towar.Features.GetString("WlasnyKod"));
}

string razem = string.Join(", " + System.Environment.NewLine, towary);

return new MessageBoxInformation
{
Text = razem,
OKHandler = () => null
};

}

Tabele dodatkowe: https://dok.enova365.pl/Developers/33292



Wyślij zaproszenie do