Enova365, Matryca, Problem z inicjalizacją obiektu VATMarzaEwidencja w Enova

0

Pracuję z programem Enova i napotkałem problem podczas próby inicjalizacji obiektu VATMarzaEwidencja w metodzie ModyfikujEwidencje(Matrycy dokumentu). Próbuje stworzyć nową instancję tego obiektu bez podawania argumentów, co prowadzi do błędu:

Otrzymuję błąd:

"Nie podano argumentu odpowiadającego wymaganemu parametrowi formalnemu „creator” elementu „VATMarzaEwidencja.VATMarzaEwidencja(RowCreator)”

Zrozumiałem, że konstruktor VATMarzaEwidencja wymaga obiektu RowCreator jako argumentu, ale nie jestem pewien, jak uzyskać dostęp do RowCreator w kontekście sesji Enova, ani jak go poprawnie zainicjować.

Oto fragment mojego kodu, gdzie występuje problem:

public override void ModyfikujEwidencje(HandlowyEwidencja ewidencja, MatrycaHandlowaParams param)
{
  CoreModule core = CoreModule.GetInstance(ewidencja.Session);
  EwidencjaVatModule vat = EwidencjaVatModule.GetInstance(ewidencja.Session);
  
  VATMarzaEwidencja marza = new VATMarzaEwidencja(); // Tutaj pojawia się problem
  core.DokEwidencja.AddRow(marza);
  
  marza.DataWplywu = Date.Today;
  marza.DataDokumentu = Date.Today;
  marza.DataOperacji = Date.Today;
  
  marza.NumerDokumentu = "FV/2007/123456";
  marza.Podmiot = ewidencja.Podmiot;
  marza.Opis = "Faktura sprzedaży";
  
  ElemEwidencjiVATSprzedaz elemVAT = new ElemEwidencjiVATSprzedaz(marza);
  vat.EleEwidencjiVATT.AddRow(elemVAT);
  elemVAT.DefinicjaStawki = core.DefStawekVat[StatusStawkiVat.Opodatkowana, new Percent(0.23m), false];
  elemVAT.Netto = 1000m;
}

Czy ktoś z doświadczeniem w Enova mógłby mi podpowiedzieć, jak uzyskać RowCreator, poprawnie inicializować VATMarzaEwidencja lub jak inaczej mogę rozwiązać ten problem?

Z góry dziękuję za wszelkie sugestie i pomoc.

1

Dokumentacja?

0
bagietMajster napisał(a):

Dokumentacja?

Tu jest problem, tylko partnerzy "Sonety" mają dostęp do dokumentacji. Bez tego też coś można samemu pogrzebać ale jest ciężko, stąd mój problem. A nóż się znajdzie tu ktoś kto ma jakieś doświadczenie z tym.

1

no ale VS Ci nie podpowiada co powinieneś przekazać do konstruktora jako parametr?

0
abrakadaber napisał(a):

no ale VS Ci nie podpowiada co powinieneś przekazać do konstruktora jako parametr?

Nie edytuję kodu w VS, edytuje go w wyznaczonym miejscu w Enova. Jest tu dostęp tylko do edycji fragmentu kodu.


using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.ComponentModel;
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Soneta.Types;
using Soneta.Tools;
using Soneta.Business;
using Soneta.Business.Licence;
using Soneta.Business.App;
using Soneta.BI;
using Soneta.Business.Db;
using Soneta.Core;
using Soneta.CRM;
using Soneta.CzasPracy.Rozszerzona;
using Soneta.CzlonkowieSzkolenia;
using Soneta.Deklaracje;
using Soneta.Delegacje;
using Soneta.Workflow.Dms;
using Soneta.EdycjaKalendarzaPP;
using Soneta.EwidencjaVat;
using Soneta.Handel;
using Soneta.HR;
using Soneta.HR2;
using Soneta.Import;
using Soneta.Kadry;
using Soneta.Kalend;
using Soneta.Kasa;
using Soneta.Ksiega;
using Soneta.Magazyny;
using Soneta.NormaPracy;
using Soneta.Oceny;
using Soneta.Place;
using Soneta.PracaZdalna;
using Soneta.Produkcja;
using Soneta.ProdukcjaPro;
using Soneta.Przeszeregowania;
using Soneta.RealEstate;
using Soneta.RMK;
using Soneta.Samochodowka;
using Soneta.Business.Snapshots;
using Soneta.SrodkiTrwale;
using Soneta.Support;
using Soneta.Towary;
using Soneta.Vehicles;
using Soneta.Waluty;
using Soneta.Web.Business.Db;
using Soneta.Windykacja;
using Soneta.Workflow;
using Soneta.Zadania;


namespace Soneta.Runtime.Database.Ksiega.NsMatryce
{
	public sealed class MatrycaHandlowaExecutor_VATMARZATEST : MatrycaHandlowaExecutor
	{
		public MatrycaHandlowaExecutor_VATMARZATEST (MatrycaHandlowa matryca) : base(matryca)
		{}

/*<soneta.runtimedocument.code---------------------------------------------------------------------------------->*/

public override void ModyfikujEwidencje(HandlowyEwidencja ewidencja, MatrycaHandlowaParams param)
{
  CoreModule core = CoreModule.GetInstance(ewidencja.Session);
  EwidencjaVatModule vat = EwidencjaVatModule.GetInstance(ewidencja.Session);
  
  VATMarzaEwidencja marza = new VATMarzaEwidencja(); // Tutaj pojawia się problem
  core.DokEwidencja.AddRow(marza);
  
  marza.DataWplywu = Date.Today;
  marza.DataDokumentu = Date.Today;
  marza.DataOperacji = Date.Today;
  
  marza.NumerDokumentu = "FV/2007/123456";
  marza.Podmiot = ewidencja.Podmiot;
  marza.Opis = "Faktura sprzedaży";
  
  ElemEwidencjiVATSprzedaz elemVAT = new ElemEwidencjiVATSprzedaz(marza);
  vat.EleEwidencjiVATT.AddRow(elemVAT);
  elemVAT.DefinicjaStawki = core.DefStawekVat[StatusStawkiVat.Opodatkowana, new Percent(0.23m), false];
  elemVAT.Netto = 1000m;
}

/*</soneta.runtimedocument.code---------------------------------------------------------------------------------->*/


	}
}

Dostęp jest jedynie do edycji kodu który znajduję się miedzy komentarzami "/<soneta.runtimedocument.code---------------------------------------------------------------------------------->/"
Użytkownik który sam coś chce zmienić w programie jest bardzo ograniczony.

aczkolwiek ich edytor też coś "podpowiada":

2024-04-18 13_36_35-Window.png

Jednak wiele mi to nie mówi.

1

To spróbuj zrobić linijkę wyżej:

var test = new RowCreator();

i prześlij ten test jako argument do konstruktora tego VATMarzaEwidencja.

0

Robiłem tak, kompilator pokazuje, że wszystko jest poprawnie. Ale przy wykonaniu Matrycy(metody ModyfikujEwidencje) pojawia się błąd:

Komentarz:
Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Źródło:
Soneta.Ksiega

Wywołanie:
   w Soneta.EwidencjaVat.VATMarzaEwidencja.OnAdded()
   w Soneta.Business.Table.AddRow(Row row)
   w Soneta.Runtime.Database.Ksiega.NsMatryce.MatrycaHandlowaExecutor_VATMARZATEST.ModyfikujEwidencje(HandlowyEwidencja ewidencja, MatrycaHandlowaParams param)
   w Soneta.Ksiega.MatrycaHandlowaWypelnijBase.WypelnijWgMatrycyAPI(HandlowyEwidencja[] docs, MatrycaHandlowa matryca)

Dlatego myślę, że problemem jest tu głownie moja niewiedza na temat struktury enovy. Nie samego c#.

2

a core.DokEwidencja albo core nie ma na sobie jakiegoś pola, które trzyma RowCreatora?

0
abrakadaber napisał(a):

a core.DokEwidencja albo core nie ma na sobie jakiegoś pola, które trzyma RowCreatora?

Szukałem, nie znalazłem tam niestety nic. Dlaczego akurat core.DokEwidencja i core?

1

bo tam bym się tego spodziewał

1 użytkowników online, w tym zalogowanych: 0, gości: 1