Skocz do zawartości

Rewizor Nexo - dekretacja wg schematu z potwierdzeniem [sfera]


Zobacz rozwiązanie Rozwiązane przez Wojciech Urbanowski,

Polecane posty

Rewizor Nexo.

Mam dokument wprowadzony do ewidencji VAT.

W aplikacji, klikam na niego prawym myszki, nastepnie ksiegowosc/dekretuj automatycznie/wg schematu z potwierdzeniem: do wyboru pojawiaja mi sie schematy.

Załączam zdjęcie dla zobrazowania kroku.

 

Proszę o informację, gdzie - w sferze - moge znalezc metody odpowiedzialne za automatyczna dekretacje dokumentu ksiegowego wg schematu z potwierdzeniem.

 

aut_dekr_potw.thumb.jpg.e3346ccde44a13d1b98cc3c981ca33f7.jpg

 

Link to postu
  • Rozwiązanie

Do obsługi zaawansowanych scenariuszy importu należy zerknąć tutaj:

var operacjeImportu = Sfera.PodajObiektTypu<InsERT.Moria.ImportKsiegowy.IOperacjeImportuKsiegowego>();
var operacja = operacjeImportu.UtworzOperacjeImportuDokumentow(...); // uwaga 1
var wynik = operacja.WykonajOperacje(...); // uwaga 2

Ad uwaga 1: przekazujemy tej metodzie implementację interfejsu IObslugaZdarzenSeryjnegoImportu, którą należy zrobić samodzielnie (może być na początek "pusta"). Służy do reagowania na zdarzenia występujące podczas importu. Jedną z właściwości tego interfejsu jest pole InteraktywnyTryb typu InterakcjaWOperacjiImportuKsiegowego (obiekty tej klasy można stworzyć operatorem new). Klasa InterakcjaWOperacjiImportuKsiegowego ma właściwości SprobujNaprawicNiepoprawneDokumentyWynikowe i PotwierdzDokumentyWynikowe które pozwala na przekazanie delegatów, które będą wywołane w przypadku niepoprawnego/poprawnego stworzenia dokumentu wynikowego

 

Ad uwaga 2: przekazujemy listę par schemat-dokument (można przekazać 1) i parametry procesu importu (aby proces był "z potwierdzeniem" należy również tego zażądać w parametrach przekazywanych tutaj).

 

Przykładowa implementacja interfejsu IObslugaZdarzenSeryjnegoImportu i jego wykorzystanie:

        public class ObslugaImportu : IObslugaZdarzenSeryjnegoImportu
        {
            InterakcjaWOperacjiImportuKsiegowego _interaktywny;

            public ObslugaImportu(InterakcjaWOperacjiImportuKsiegowego tryb)
            {
                _interaktywny = tryb;
            }
            public InterakcjaWOperacjiImportuKsiegowego InteraktywnyTryb
            {
                get { return _interaktywny; }
            }
            public void RozpoczeciePojedynczego(ImportSeryjnyEventArgs args)
            {

            }
            public void RozpoczecieFragmentuWImporciePojedynczego(ImportSeryjnyEventArgs args)
            {
            }

            public void ZakonczeniePojedynczego(ImportSeryjnyEventArgs args)
            {

            }

            public void RozpoczecieCalosci(int iloscDokumentow)
            {

            }
            public void ZakonczenieWszystkich()
            {
            }
        }

// ...

        public IObslugaZdarzenSeryjnegoImportu TrybInteraktywny(
            bool kontynuowacImportPoBledzie,
            WynikFragmentuOperacjiImportu reakcjaNaUsuwanie,
            Action<DokumentKsiegowy> actionNaprawianieDokumentow = null)
        {
            WynikFragmentuOperacjiImportu wynikWskazania;
            wynikWskazania = WynikFragmentuOperacjiImportu.KontynuujImportAktualnegoDokumentu;
            if (kontynuowacImportPoBledzie)
            {
                wynikWskazania = WynikFragmentuOperacjiImportu.KontynuujZNastepnymDokumentem;
            }
            else
            {
                wynikWskazania = WynikFragmentuOperacjiImportu.PrzerwijOperacjeSeryjnegoImportu;
            }
            InterakcjaWOperacjiImportuKsiegowego interaktywny = new InterakcjaWOperacjiImportuKsiegowego();
            interaktywny.KontynuowacImportKolejnegoDokumentuPoBledzie = (ddk, x) => kontynuowacImportPoBledzie;

            interaktywny.SprobujNaprawicNiepoprawneDokumentyWynikowe = (ddk, x, x0, y, z, vat, vatOSS) =>
            {
                foreach (var dokument in x)
                {
                    Console.WriteLine("Błędy na dekrecie:" + dokument.Dane.NumerWlasny);
                    Console.WriteLine(TestUtils.ErrorsDescription(TestUtils.GetErrors(dokument)));

                    if (actionNaprawianieDokumentow != null)
                    {
                        actionNaprawianieDokumentow(dokument.Dane);
                    }
                }
                foreach (var dokument in vat)
                {
                    Console.WriteLine("Błędy na vacie: " + dokument.DaneBazowe.NumerDokumentu);
                    Console.WriteLine(TestUtils.ErrorsDescription(TestUtils.GetErrors(dokument)));
                }
                if (actionNaprawianieDokumentow != null)
                {
                    return WynikFragmentuOperacjiImportu.KontynuujImportAktualnegoDokumentu;
                }
                else
                {
                    return wynikWskazania;
                }

            };
            interaktywny.ZapytajOUsuwanieIstniejacych = (ddk) => reakcjaNaUsuwanie;
            return new ObslugaImportu(interaktywny);
        }

// ...

        protected IEnumerable<IWynikOperacjiImportuKsiegowegoDokumentu> ImportujDDK(
            IEnumerable<SchematImportu> schematyImportu,
            IEnumerable<DokumentDoKsiegowania> ddks,
            ObslugaBleduIstnieniaUsuwalnychDokumentow obslugaUsuwalnych = ObslugaBleduIstnieniaUsuwalnychDokumentow.ObsluzZgodnieZTrybemSeryjnegoImportu)
        {
            var tryb = TrybInteraktywny(false, WynikFragmentuOperacjiImportu.PrzerwijOperacjeSeryjnegoImportu);

            var operacja = OperacjeImportuKsiegowego.UtworzOperacjeImportuDokumentow(tryb);

            var wynik = operacja.WykonajOperacje(
                schematyImportu.Zip(ddks, (s, ddk) => new Tuple<DokumentDoKsiegowania, SchematImportu>(ddk, s)),
                new ParametryOperacjiImportuKsiegowegoDokumentow()
                {
                    TrybSeryjnegoImportu = TrybSeryjnegoImportu.PrzerwijGdyBlad,
                    ObslugaUsuwalnychDokumentow = obslugaUsuwalnych,
                    ObslugaNieusuwalnychDokumentow = ObslugaBleduIstnieniaNieusuwalnychDokumentow.ObsluzZgodnieZTrybemSeryjnegoImportu
                }
            );

            return wynik;
        }

 

  • Dziękuję 1
Link to postu
×
×
  • Dodaj nową pozycję...