Skocz do zawartości

Krzysztof Salwa

Użytkownik
  • Liczba zawartości

    6
  • Rejestracja

  • Ostatnia wizyta

Ostatnie wizyty

Blok z ostatnimi odwiedzającymi dany profil jest wyłączony i nie jest wyświetlany użytkownikom.

Krzysztof Salwa's Achievements

0

Reputacja

  1. Próbuję utworzyć PA z ZK. Wszystkie pozycje z ZK przenoszą się poprawnie na PA, ale w momencie gdy chciałbym dopisać dodatkową usługę na paragonie w sposób jaki przedstawiłem poniżej w kodzie to dostaję taki komunikat: "Nie ustawiono przyczyny zwolnienia z VAT. na polach:DokumentDS.PrzyczynaZwolnieniaVAT Suma płatności (352,47 PLN) nie jest równa kwocie do zapłaty (365,13 PLN) na dokumencie. na polach:DokumentDS.PlatnosciDokumentow Wartość w polu musi być większa od 0. na polach:PlatnoscDokumentu.KwotaDokumentu Wartość w polu musi być większa od 0. na polach:PlatnoscDokumentu.KwotaPlatnosci ' " KOD: Z komunikatu rozumiem, że muszę do płatności dopisać dodatkową usługę, ale w jaki sposób zrobić to poprawnie? No i czy można to zrobić automatycznie? Ten sam problem pojawia się gdy chciałbym zmienić ilość towaru na pozycji. Proszę o pomoc ZK w załączniku. Pozdrawiam
  2. Witam, Próbujemy wystawić PI na podstawie ZK w walucie EUR, poniżej zamieszczony jest kod oraz załączniki z aplikacji Subiekt Nexo dla dokumentu ZK i utworzonego dokumentu PI. Wartość kwoty do zapłaty różni się od wartości zamówienia. Na pozycjach oznaczonych na czerwono widać rozjazd między tym co jest na ZK. Dlaczego tak się dzieje i jak możemy to naprawić? using (IDokumentSprzedazy pi = dokumentySprzedazy.Utworz(konfPi)) { ParametryGrupowaniaDS parametryGrupowania = new ParametryGrupowaniaDS(); parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji; parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.Brak; parametryGrupowania.PrzeniesNatychmiastowe = PrzenoszeniePlatnosciNatychmiastowych.Brak; parametryGrupowania.PrzeniesPrzedplaty = PrzenoszeniePrzedplat.Brak; if (zk != null) { parametryGrupowania.MiejsceDostawyTyp = (MiejsceDostawyTyp)zk.MiejsceDostawyTyp; parametryGrupowania.MiejsceDostawy = zk.MiejsceDostawy; parametryGrupowania.NabywcaSprzedawca = zk.NabywcaSprzedawcaWybrany; parametryGrupowania.OdbiorcaDostawca = zk.OdbiorcaWybrany; parametryGrupowania.OperacjePrzeliczaniaDokumentu = zk.OperacjePrzeliczaniaDokumentu; } if (zk != null) { pi.Przelicz(); var wykorzystaneFormyPlatnosci = zk.WykorzystaneFormyPlatnosci().ToList(); var formaPlatnosci = wykorzystaneFormyPlatnosci.FirstOrDefault(); if (pi.Platnosci.CzyMoznaDodacPlatnosc(formaPlatnosci)) { var kwota = zk.PlatnosciDokumentow.FirstOrDefault(x => x.RodzajPlatnosci == (byte)RodzajPlatnosci.Natychmiastowa); pi.Platnosci.DodajPlatnoscNatychmiastowa(zk.FormaPlatnosci, kwota.KwotaPlatnosci); } } var pozycjeDokumentuPi = pi.WypelnijNaPodstawieZK(zk.Pozycje, zk, parametryGrupowania); pi.Zapisz() }
  3. Otrzymujemy błąd w sytuacji gdy chcemy wygenerować korektę i ustawić przedpłatę. Poniżej sposób w jaki próbujemy to wykonać IKorektyDokumentowSprzedazy korektyDokumentowSprzedazy = sfera.PodajObiektTypu<IKorektyDokumentowSprzedazy>(); DokumentDS fs = dokumentySprzedazy.Dane.Wszystkie() .Where(x => x.Id == Id).FirstOrDefault(); Pobieram dane dokumentu który będzie modyfikowany. using (IKorektaDokumentuSprzedazy kfs = korektyDokumentowSprzedazy.Utworz(fs.Konfiguracja)) { kfs.Dane.DokumentKorygowany = fs; Generuj korygowany dokument var kwotaPlatnosci = 0m; foreach (var platnosc in fs.PlatnosciDokumentow) { kwotaPlatnosci += platnosc.KwotaPlatnosci; } var brakujacaKwota = kfs.Dane.Wartosc.BruttoPoRabacie - kwotaPlatnosci; var platnosci = fs.PlatnosciDokumentow.ToList(); var sumaPlatnosci = platnosci.Sum(x => x.KwotaPlatnosci); Przeliczam kwotę do zapłaty. PlatnoscDokumentu nowaPlatnosc; for (int j = 0; j < platnosci.Count; j++) { fs.PlatnosciDokumentow.Remove(platnosci[j]); } Usuwam poprzednie płatności oraz tworzę potrzebną zmienną do dodawanie płatności. W przypadku wybrania przedpłaty: nowaPlatnosc = platnosci.Where(x => x.RodzajPlatnosci == (byte)RodzajPlatnosci.Przedplata).FirstOrDefault(); Sprawdzam czy dana płatność występowała na dokumencie jeżeli nie: if (nowaPlatnosc == null) { var iRozrachunki = sfera.PodajObiektTypu<IRozrachunki>(); var rozrachunek = iRozrachunki.Dane.Wszystkie() .Where(x => x.Id == documentModel.IdRozrachunku && x.KwotaNierozliczona >= Math.Abs(brakujacaKwota + sumaPlatnosci)) .FirstOrDefault(); if (rozrachunek == null) { throw new Exception("Nie znaleziona rozrachunku"); } nowaPlatnosc = sfera.PodajObiektTypu<PlatnoscDokumentu>(); nowaPlatnosc.PozycjaHarmonogramuRozrachunku = sfera.PodajObiektTypu<PozycjaHarmonogramuRozrachunku>(); nowaPlatnosc.PozycjaHarmonogramuRozrachunku.RodzajPlatnosci = (int)RodzajPlatnosci.Przedplata; nowaPlatnosc.PozycjaHarmonogramuRozrachunku.UstawWartoscPola("Rozrachunek", rozrachunek); nowaPlatnosc.PozycjaHarmonogramuRozrachunku.UstawWartoscPola("Rozrachunek_Id", rozrachunek.Id); nowaPlatnosc.PozycjaHarmonogramuRozrachunku.Kwota = rozrachunek.Kwota; nowaPlatnosc.PozycjaHarmonogramuRozrachunku.KwotaPozostala = rozrachunek.KwotaPozostala; nowaPlatnosc.PozycjaHarmonogramuRozrachunku.KwotaNierozliczona = rozrachunek.KwotaNierozliczona; } Sprawdzam czy istnieje rozrachunek z którego mógłbym pobrać płatności. Sprawdzanie następuje po Id oraz kwocie nierozliczonej większej od tej wymaganej. Tworzę nową Płatność Dokumentu oraz Pozycja Harmonogramu Rozrachunku która jest argumentem dla metody Dodaj Przedpłatę. kfs.Przelicz(); kfs.Platnosci.DodajPrzedplate(nowaPlatnosc.PozycjaHarmonogramuRozrachunku, Math.Abs(brakujacaKwota + sumaPlatnosci)); Dodaje przedpłatę na podstawie Pozycja Harmonogramu Rozrachunku oraz brakującej kwoty if (kfs.Zapisz()) { txOdp.Text = kfs.Dane.NumerWewnetrzny.PelnaSygnatura; } Dokument jest zapisywany
  4. Tworzyłem dokumenty sprzedaży na bazie dokumentów ZK. Jednak przez pomyłkę przekazywałem tam błędne pole MiejsceDostawyTyp oraz nie przekazywałem pola MiejsceDostawy. Chciałem dokonać edycji takich dokumentów handlowych i ustawić te wartości na poprawne na podstawie ZK. Fragment kodu: sfera.ZalogujOperatora(nexouser, nexopassword); var zamowieniaDane = sfera.PodajObiektTypu<IZamowieniaOdKlientow>().Dane.Wszystkie(); var dokumentySprzedazy = sfera.PodajObiektTypu<IDokumentySprzedazy>(); int zkId = 11111; int dokumentSprzedazyId = 222222; DokumentZK zk = null; zk = zamowieniaDane.Where(z => z.Id == zkId).FirstOrDefault(); DokumentDS fs = dokumentySprzedazy.Dane.Wszystkie().Where(d => d.Id == dokumentSprzedazyId).First(); using (IDokumentSprzedazy ds = dokumentySprzedazy.Znajdz(fs)) { ds.Dane.MiejsceDostawy = zk.MiejsceDostawy; ds.Dane.MiejsceDostawyTyp = zk.MiejsceDostawyTyp; ds.Zapisz(); } Gdy próbowałem dokonać edycji tylko ds.Dane.MiejsceDostawyTyp = zk.MiejsceDostawyTyp; to kończyło się to sukcesem. Jednak dodanie ds.Dane.MiejsceDostawy = zk.MiejsceDostawy; powoduje błąd: System.InvalidCastException: Unable to cast object of type 'InsERT.Moria.ModelDanych.DokumentZK' to type 'InsERT.Moria.ModelDanych.DokumentHandlowy'. at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.WalidujTypTowaruISprzedazZaliczkowa(PozycjaDokumentu pozycjadokumentu) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.TypTowaruOfPozycjaDokumentuValidating(PozycjaDokumentu pozycjadokumentu) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ScalarPropertyValidatingInternal(Object entity, String propertyName, String methodNameSuffix) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.PozycjaDokumentuValidating(Object entity) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.EntityValidatingCore(Object entity) at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass219_0.<ValidateDataObjectPrivate>b__0() at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.DataExtensions.DisabledPropertiesValidationAspect.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.DataExtensions.ObsoleteExtensionNotificationAspect.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.Aop.Weaver.RuntimeWeave(RuntimeWeavedJoinpoint joinpoint, Action coreOperation) at InsERT.Mox.BusinessObjects.BusinessObject`3.ValidateDataObjectPrivate(Object dataObject) at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass209_0.<AfterRelatedCollectionRefreshPrivate>b__2(Object e) at InsERT.Mox.DataAccess.DataDomain.TraverseDataCore(Object dataObject, Func`2 searchFunc, ISet`1 traversed, RelationshipTraversalInfo cameFrom) at InsERT.Mox.DataAccess.DataDomain.TraverseData(Object node, Func`2 searchFunction, ISet`1 traversedNodes) at InsERT.Mox.BusinessObjects.BusinessObject`3.AfterRelatedCollectionRefreshPrivate(Object entity, RelationshipChangedEventArgs args) at InsERT.Mox.BusinessObjects.BusinessObject`3.InsERT.Mox.DataAccess.IDataEventsSink.OnRelationshipChanged(Object affectedDataObject, RelationshipChangedEventArgs args) at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.CallRelationshipChangedOnSponsorWithCorrectLazyLoadingSetting(IDataEventsSink sponsor, RelationshipChangedEventArgs args) at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.HandleImplicitAssociationChange[T](EntityCollection`1 collection, CollectionChangeEventArgs args, String collectionPropertyName) at InsERT.Moria.ModelDanych.Dokument.HandlePozycjeRelatedEndAssociationChanged(Object sender, CollectionChangeEventArgs e) at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.OnAssociationChanged(CollectionChangeAction collectionChangeAction, Object entity) at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption) at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption) at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.LoadRelatedEnd(RelatedEnd end) at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.WrappedEntityCollection`1.EnsureUnderlyingEntityCollection(Boolean load) at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.WrappedEntityCollection`1.GetEnumerator() at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate) at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.AkcjaZmianyStatusuRealizowanegoZK.CzyZamowienieJestWPelniZrealizowane(DokumentZK zk, Boolean wyliczanieBezWzlgeduNaSkutekDostepne) at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.AkcjaZmianyStatusuRealizowanegoZK.Wykonaj(UnitOfWork unitOfWork, Dokument edytowanyDokument, ZmienStatusDelegate zmienStatus) at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.KoordynatorAutomatyzacjiStatusow.WykonajAkcje(Dokument edytowanyDokument, AkcjaAutomatyzacjiStatusu akcja) at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.KoordynatorAutomatyzacjiStatusow.Dokument_ChangesSaving(Dokument dokument) at InsERT.Moria.Dokumenty.Logistyka.DokumentPart.ChangesSaving(IBusinessObject businessObject, CancelEventArgs args, Dokument dokument) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ChangesSaving(CancelEventArgs args) at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ChangesSavingCore(CancelEventArgs args) at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass188_0.<HandleBeforeSavingChanges>b__0() at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.<>c__DisplayClass2_0.<Execute>b__0() at InsERT.Moria.Narzedzia.Prywatne.NarzedziaMoriowe.WykonajZWlaczonaFlaga(Action akcja, Boolean& flaga) at InsERT.Moria.SladRewizyjny.SladRewizyjny.ToNieJestPierwszorzednaModyfikacja(Action akcja) at InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Moria.Vendero.Aspekty.PowiadamianieOZmianachVendero.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Moria.Dokumenty.Logistyka.Realizacje.AspektRealizacjiPozycji.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.NaglowkiObiektow.FreeformRelationshipCleanupAspect.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.NaglowkiObiektow.WypelnianieNaglowkow.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.DataExtensions.RequiredFieldsGuardAspect.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at lTU=.JjY=.MTY=(Object& instance, Object[] methodArgs, Boolean isNullNullable, MethodBase methodBase, Boolean isVirtualCall) at lTU=.dUY=.eEY=(zDU= ) at lTU=.ljY=.mTY=(zDU= ctx) at lTU=.ljY=.mTY=(zDU= ctx) at VMRuntime.Libraries.CSVMRuntime.SzY=(FDY= vmMethod, zDU= ctx) at VMRuntime.Libraries.CSVMRuntime.SjY=(Assembly asm, String id, Object[] args) at VMRuntime.Libraries.CSVMRuntime.RunMethod(String id, Object[] args) at InsERT.Mox.Security.ReadOnly.ReadOnlySaveChangesBlocker.Execute(IJoinpoint joinpoint) at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() at InsERT.Mox.Aop.Weaver.RuntimeWeave(RuntimeWeavedJoinpoint joinpoint, Action coreOperation) at InsERT.Mox.BusinessObjects.BusinessObject`3.HandleBeforeSavingChanges(Object sender, CancelEventArgs args) at InsERT.Mox.Work.UnitOfWork.PublishBeforeSavingChangesNotification() at InsERT.Mox.Work.UnitOfWork.SaveChanges1(Boolean& saveRequestVetoed, Boolean& changesWereSaved) at InsERT.Mox.Work.UnitOfWork.SaveChanges() at InsERT.Mox.BusinessObjects.BusinessObject`3.Zapisz() Bardzo prosimy o wskazówkę jak poprawić ten błąd.
×
×
  • Dodaj nową pozycję...