Skocz do zawartości

Cennik dodatkowy, poprzez Sferę

Polecane posty

Kolejnym z elementów, jaki wprowadzam, jest dodawanie i uzupełnianie cenników dodatkowych, poprzez Sferę. Przygotowałem już wstępny, działający kod, ale chciałbym się upewnić, czy robię to "dobrze". Przy okazji, podpytam, czy może Sferycznie, można jakoś obejść ten temat : https://forum.insert.com.pl/index.php?/topic/752-ceny-w-cenniku-w-euro-i-w-pln/#comment-2745 - próbowałem zmienić walutę, ale macie walidację i nie dopuszcza takiej możliwości :(

 

ICenniki menadzerCennikow = sfera.PodajObiektTypu<ICenniki>();
IPoziomyCen menadzerPoziomowCen = sfera.PodajObiektTypu<IPoziomyCen>();
IWalutyDaneDomyslne walutyDD = sfera.PodajObiektTypu<IWaluty>().DaneDomyslne;
IUzytkownicy uzytkownicy = sfera.PodajObiektTypu<IUzytkownicy>();
IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>();
                  
var cennikGlowny = menadzerCennikow.Dane.Wszystkie().Where(c => c.Tytul == "Odtworzeniowa").First(); // odnalezienie cennika głownego
                  
using (ICennik cennik = menadzerCennikow.UtworzDodatkowy(cennikGlowny)) // utworzenice cennika dodatkowego
{
cennik.Dane.Tytul = results.title; // tytuł cennika
//if(results.currency=="PLN") cennik.Dane.Waluta = walutyDD.PLN; // waluta cennika, które nie działa :(
//if(results.currency=="EUR") cennik.Dane.Waluta = walutyDD.EUR;
//if(results.currency=="USD") cennik.Dane.Waluta = walutyDD.USD;                  	
                  	
Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Symbol == "BLG-22-4541").First(); // pobieram asortyment
var pos = cennik.Pozycje.Dodaj(a); // dodaje asortyment
pos.RozpocznijEdycje(); // edytuje pozycję
pos.CenaBazowa = 1m; // zmiana ceny
pos.ZakonczEdycje(); // kończę edycję
                  	
cennik.Zapisz(); // zapisuje cały cennika
}

 

 

Edytowane przez Radomił Ząbik
Link to postu

Dobra, mam jednak mały problem odnośnie cennika i chyba nie poradzę Sobie sam. Otóż cenniki dodaje z użyciem harmonogramu ważności. Chciałbym osiągnąć efekt jak w UI:

 

ceenennene.PNG

 

... więc dopisałem dla sfery odpowiednie parametry:

cennik.Dane.HarmonogramWaznosci.CzyHarmonogramAktywny(DateTime.Now); // włączam harmonogram
cennik.Dane.HarmonogramWaznosci.RodzajHarmonogramu = 0; // codzienny
cennik.Dane.HarmonogramWaznosci.DataPoczatkowa = DateTime.Now; // ustawiam datę początkową
//cennik.Dane.HarmonogramWaznosci.UstawHarmonogramCodzienny(DateTime.Now,null); // nie działawszy

Niestety, ceny nie wczytują się przy wyborze asortymentu z cennika dodatkowego, ale wystarczy, że w UI wejdę w ten cennik, zaktualizuję datę początkową, nawet jej nie zmieniając, zapiszę i cennik działa - pewnie coś muszę wymusić jeszcze, ale nic więcej w obiekcie nie znalazłem. Możliwe, że chodzi o metodę UstawHarmonogramCodzienny, której nie udało mi się aktywować - chciałbym nie ustawiać daty końcowej, ale nawet ustawiając ją, nie zadziałało mi :(

Link to postu

Witam,

Po pierwsze metoda CzyHarmonogramAktywny nie ustawia ważności harmonogramu, a sprawdza jego aktywność na podaną datę.

Jeśli chodzi o konfigurację harmonogramu to w przypadku gdy wywołuje Pan jedną z metod UstawHarmonogramCodzienny / UstawHarmonogramCotygodniowy / UstawHarmonogramComiesieczny nie ma już dodatkowo konieczności wypełniania pól takich jak RodzajHarmonogramu czy DataPoczatkowa ponieważ te metody właśnie od tego są, żeby te pola odpowiednio poustawiać. Podejrzewam, że w Pana przypadku problem polega na tym, że cennik dodatkowy działa w kontekście dokumentu i jego daty wystawienia, a ta zapisuje się bez części godzinowej (czyli np. 2017-01-27 00:00:00). Pan ustawia dla harmonogramu jako datę początkową DateTime.Now czyli np. 2017-01-27 10:41:35 więc dokument wystawiony dziś nie będzie widział tego harmonogramu jako aktywny. Z poziomu UI jest ok ponieważ tam jest to pilnowane. Polecam skorzystać z DateTime.Today zamiast Now.

Link to postu

No właśnie z chęcią użyłbym funkcji UstawHarmonogramCodzienny ale, nie mogę rozgryźć, jak wstawić w niej właśnie parametry takie jak z UI, czyli zaczynający się od dnia wskazanego, bez określania dnia końca. Na chłopski rozum, próbowałem tak ...

cennik.Dane.HarmonogramWaznosci.UstawHarmonogramCodzienny(DateTime.Today,null);

... i dostaję błędem "Nie można edytować miesięcy dla harmonogramu innego niż comiesięczny, a bez drugiej zmiennej nie przejdzie.

 

Co do DateTime.Today, to rzeczywiście tutaj tkwił problem i po podstawieniu do mojego "przekombinowanego" kodu, działa :) Rzeczywiście nie założyłem tutaj kwestii, że sprawdzacie to w ten sposób, ale teraz wszystko jest jasne i logiczne.

Link to postu

Ok, teraz już rozumiem co nie działa. Faktycznie sprawdziłem i z tą metodą jest jakiś problem. Sprawdzimy i poprawimy. Na tę chwilę można to ręcznie zrobić poprzez kod podobny do Pana poprzedniej wersji:

cennik.Dane.HarmonogramWaznosci.RodzajHarmonogramu = 0; // codzienny
cennik.Dane.HarmonogramWaznosci.DataPoczatkowa = DateTime.Today; // ustawiam datę początkową
cennik.Dane.HarmonogramWaznosci.DataPoczatkowa = null; // data końcowa jest null-owalna

I harmonogram jest ustawiony tak jak Pan chciał.

Link to postu

Ok, dodałem, działa :D Tak tylko dla poprawności, "dla potomnych", wdarł się Panu, mały piątkowy chochlik w ostatnim wierszu:

cennik.Dane.HarmonogramWaznosci.RodzajHarmonogramu = 0; // codzienny
cennik.Dane.HarmonogramWaznosci.DataPoczatkowa = DateTime.Today; // początek
cennik.Dane.HarmonogramWaznosci.DataKoncowa = null; // koniec

 

Link to postu
  • 2 tygodnie później...
×
×
  • Dodaj nową pozycję...