Migracja z NAS do Gitea
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
using Soneta.Business;
|
||||
using Soneta.Business.App;
|
||||
using Soneta.Core;
|
||||
using Soneta.Kasa;
|
||||
using Soneta.Ksiega;
|
||||
using Soneta.Types;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace FX2_SP_WORKERS.PrzeksiegowanieKoszty
|
||||
{
|
||||
public static class DekretacjaPrzelomMiesiecy
|
||||
{
|
||||
public static Dekret Dekretuj(KsiegaModule km, PKEwidencja pkk, DokEwidencji dok, OkresObrachunkowy okres, Context context)
|
||||
{
|
||||
//Pobieranie elementów opisu analitycznego, które mają inny miesiąc niż dokument ewidencji
|
||||
List<ElementOpisuEwidencji> listaElemOpisu = dok.OpisAnalityczny
|
||||
.ToArray<ElementOpisuEwidencji>()
|
||||
.Where(x => x.Data.Month != dok.DataEwidencji.Month)
|
||||
.OrderBy(x => x.ID)
|
||||
.ToList();
|
||||
|
||||
//Znalezenie najwcześniejszej daty w elementach opisu analitycznego
|
||||
Date minDataElementu = listaElemOpisu.Min(x => x.Data);
|
||||
string nazwaBazy = ((Login)context[typeof(Login)]).Database.Name.Trim().ToUpper();
|
||||
|
||||
//Bazy, dla których jest włączona obsługa segmentu 5
|
||||
string[] listaBaz = { "FLOTA VIKINGA" };
|
||||
|
||||
//Ustawienie okresu obrachunkowego zgodnego z najwcześniejszą datą elementu opisu analitycznego
|
||||
if (okres.Symbol != minDataElementu.Year.ToString())
|
||||
okres = km.OkresyObrach.WgSymbolu[minDataElementu.Year.ToString()];
|
||||
|
||||
string flotaPrefix = nazwaBazy == "FLOTA VIKINGA" ? "001-" : "";
|
||||
|
||||
#region Tworzenie dekretu
|
||||
|
||||
Dekret dekretDodatk = new Dekret(okres, pkk);
|
||||
pkk.Dekrety.BaseTable.AddRow(dekretDodatk);
|
||||
dekretDodatk.Opis = pkk.Opis;
|
||||
dekretDodatk.Data = minDataElementu;
|
||||
|
||||
//Tworzenie zapisów dekretu
|
||||
foreach (ElementOpisuEwidencji elem in listaElemOpisu)
|
||||
{
|
||||
dekretDodatk.Data = elem.Data;
|
||||
KontoBase konto345 = km.Konta.WgOkres[okres].FirstOrDefault(x => x.AccessRight == AccessRights.Granted && x.Symbol == elem.Symbol);
|
||||
Currency kwotaDodatkowa = Currency.Zero;
|
||||
|
||||
Currency razemOA = Currency.Zero;
|
||||
|
||||
if ((elem.Ewidencja.Definicja.Symbol == "ZPIMP" || elem.Ewidencja.Definicja.Symbol == "ZIMP"))
|
||||
{
|
||||
Platnosc platnosc = (Platnosc)elem.Ewidencja.Platnosci.GetFirst();
|
||||
{
|
||||
kwotaDodatkowa = new Currency(elem.Kwota.Value * (decimal)platnosc.Kurs);
|
||||
}
|
||||
}
|
||||
|
||||
Currency kwotaZapisu = dok.Definicja.Symbol is "ZIMP" or "ZPIMP" ? kwotaDodatkowa : elem.Kwota;
|
||||
|
||||
//Sprawdzenie czy dla danej bazy jest włączona obsługa segmentu 5
|
||||
bool isEnabled = listaBaz.Any(x => x.Trim().ToUpper() == ((Login)context[typeof(Login)]).Database.Name.Trim().ToUpper());
|
||||
string segm5 = (elem.Features["KS_segm5"].ToString().Trim() != string.Empty && isEnabled) ?
|
||||
"-" + elem.Features["KS_segm5"].ToString().Trim() :
|
||||
"";
|
||||
|
||||
switch (elem.Wymiar)
|
||||
{
|
||||
case ".":
|
||||
string symbolKonta5 = elem.CentrumKosztow.Features["Piatka"].ToString() + "-" + flotaPrefix + elem.Symbol.Substring(4, elem.Symbol.Length - 4) + segm5;
|
||||
symbolKonta5 = nazwaBazy == "VIKING POINT" ? elem.CentrumKosztow.Features["Piatka"].ToString() + "-" + elem.Symbol.Substring(1) : symbolKonta5;
|
||||
KontoBase kontowWn1 = km.Konta.WgOkres[okres].FirstOrDefault(x => x.AccessRight == AccessRights.Granted && x.Symbol == symbolKonta5);
|
||||
if (kontowWn1 is not null)
|
||||
{
|
||||
Zapis zap1 = new Zapis(dekretDodatk);
|
||||
km.ZapisyKsiegowe.AddRow(zap1);
|
||||
zap1.Konto = kontowWn1;
|
||||
zap1.WinienOperacji = kwotaZapisu;
|
||||
zap1.Opis = elem.Opis + " " + dok.Opis;
|
||||
zap1.Features["KS_Centrum Kosztow"] = Centrum(elem, dok, okres);
|
||||
zap1.Features["KS_Czworka"] = Czworka(elem, okres);
|
||||
}
|
||||
|
||||
KontoBase kontoMa2 = km.Konta.WgOkres[okres].FirstOrDefault(x => x.AccessRight == AccessRights.Granted && x.Symbol == "490");
|
||||
if (kontoMa2 is not null)
|
||||
{
|
||||
Zapis zap2 = new Zapis(dekretDodatk);
|
||||
km.ZapisyKsiegowe.AddRow(zap2);
|
||||
zap2.Konto = kontoMa2;
|
||||
zap2.MaOperacji = kwotaZapisu;
|
||||
zap2.Opis = elem.Opis + " " + dok.Opis;
|
||||
}
|
||||
|
||||
if (konto345 is not null)
|
||||
{
|
||||
Zapis zap3 = new Zapis(dekretDodatk);
|
||||
km.ZapisyKsiegowe.AddRow(zap3);
|
||||
zap3.Konto = konto345;
|
||||
zap3.WinienOperacji = kwotaZapisu;
|
||||
zap3.Opis = elem.Opis + " " + dok.Opis;
|
||||
}
|
||||
break;
|
||||
|
||||
case "Konto Wn":
|
||||
if (konto345 is not null)
|
||||
{
|
||||
Zapis zap4 = new Zapis(dekretDodatk);
|
||||
km.ZapisyKsiegowe.AddRow(zap4);
|
||||
zap4.Konto = konto345;
|
||||
zap4.WinienOperacji = kwotaZapisu;
|
||||
zap4.Opis = elem.Opis + " " + dok.Opis;
|
||||
}
|
||||
break;
|
||||
|
||||
case "Konto Ma":
|
||||
if (konto345 is not null)
|
||||
{
|
||||
Zapis zap5 = new Zapis(dekretDodatk);
|
||||
km.ZapisyKsiegowe.AddRow(zap5);
|
||||
zap5.Konto = konto345;
|
||||
zap5.MaOperacji = kwotaZapisu;
|
||||
zap5.Opis = elem.Opis + " " + dok.Opis;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return dekretDodatk;
|
||||
|
||||
#endregion Tworzenie dekretu
|
||||
}
|
||||
|
||||
private static KontoBase Czworka(ElementOpisuEwidencji Kontekst, OkresObrachunkowy okres)
|
||||
{
|
||||
KsiegaModule km = KsiegaModule.GetInstance(Kontekst.Session);
|
||||
KontoBase kb = km.Konta.WgOkres[okres].FirstOrDefault(x => x.AccessRight == AccessRights.Granted && x.Symbol == Kontekst.Symbol.ToString());
|
||||
|
||||
return kb;
|
||||
}
|
||||
|
||||
private static int i = 0;
|
||||
|
||||
private static CentrumKosztow Centrum(ElementOpisuEwidencji Kontekst, DokEwidencji Ewidencja, OkresObrachunkowy okres)
|
||||
{
|
||||
ElementOpisuEwidencji[] elementy = Ewidencja.OpisAnalityczny.ToArray<ElementOpisuEwidencji>();
|
||||
|
||||
if (Czworka(Kontekst, okres) is not null && elementy.Count() > i)
|
||||
{
|
||||
ElementOpisuEwidencji elemCentrum = elementy[i];
|
||||
|
||||
i++;
|
||||
|
||||
if (elemCentrum is not null)
|
||||
return elemCentrum.CentrumKosztow;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
using Soneta.Business;
|
||||
using Soneta.Business.App;
|
||||
using Soneta.Business.UI;
|
||||
using Soneta.Core;
|
||||
using Soneta.Ksiega;
|
||||
using Soneta.Tools;
|
||||
using Soneta.Types;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace FX2_SP_WORKERS.PrzeksiegowanieKoszty
|
||||
{
|
||||
internal static class PrzeksiegowanieKosztyFun
|
||||
{
|
||||
public static object Start(Context context, PrzeksiegowanieKosztyParams parametry)
|
||||
{
|
||||
if (parametry.DefPK is null)
|
||||
throw new InvalidOperationException("Nie wybrano definicji dokumentu PK.");
|
||||
|
||||
DokEwidencji dok = (DokEwidencji)context[typeof(DokEwidencji)];
|
||||
KsiegaModule km = KsiegaModule.GetInstance(context.Session);
|
||||
CoreModule cm = CoreModule.GetInstance(context.Session);
|
||||
OkresObrachunkowy okres = km.OkresyObrach.WgSymbolu[dok.DataEwidencji.Year.ToString()];
|
||||
|
||||
using (ITransaction tran = context.Session.Logout(true))
|
||||
{
|
||||
#region Tworzenie dokumentu PK ewidencji
|
||||
|
||||
Progress(0.33m, "Tworzenie dokumentu PK");
|
||||
PKEwidencja pkk;
|
||||
|
||||
try
|
||||
{
|
||||
pkk = new PKEwidencja();
|
||||
cm.DokEwidencja.AddRow(pkk);
|
||||
|
||||
pkk.Definicja = parametry.DefPK;
|
||||
pkk.Podmiot = dok.Podmiot;
|
||||
pkk.NumerDokumentu = dok.Numer.Pelny;
|
||||
pkk.Opis = dok.Opis;
|
||||
pkk.Features["PrzeksiegowanyDokumentKoszty"] = dok;
|
||||
if (dok.Typ == TypDokumentu.ZakupEwidencja && dok.OpisAnalityczny.ToArray<ElementOpisuEwidencji>()
|
||||
.Any(x => x.Data.Month != dok.DataEwidencji.Month))
|
||||
pkk.DataEwidencji = pkk.DataDokumentu = pkk.DataOperacji = pkk.DataWplywu = dok.OpisAnalityczny.ToArray<ElementOpisuEwidencji>()
|
||||
.Where(x => x.Data.Month != dok.DataEwidencji.Month)
|
||||
.OrderBy(x => x.ID)
|
||||
.Min(x => x.Data);
|
||||
else
|
||||
pkk.DataEwidencji = pkk.DataDokumentu = pkk.DataOperacji = pkk.DataWplywu = dok.DataEwidencji;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Error("Przeksięgowanie - błąd tworzenia dokumentu PK", ex);
|
||||
}
|
||||
|
||||
#endregion Tworzenie dokumentu PK ewidencji
|
||||
|
||||
#region Dekretacja ze względu na różny miesiąc elementów opisu analitycznego
|
||||
|
||||
if (dok.Typ == TypDokumentu.ZakupEwidencja && dok.OpisAnalityczny.ToArray<ElementOpisuEwidencji>()
|
||||
.Any(x => x.Data.Month != dok.DataEwidencji.Month))
|
||||
{
|
||||
try
|
||||
{
|
||||
Progress(0.66m, "Tworzenie dekretu ze względu na różny miesiąc elementów opisu analitycznego.");
|
||||
Dekret dekr = DekretacjaPrzelomMiesiecy.Dekretuj(km, pkk, dok, okres, context);
|
||||
|
||||
pkk.Stan = StanEwidencji.Bufor;
|
||||
pkk.Wartosc = dekr.KwotaOperacjiGospodarczej;
|
||||
pkk.Stan = StanEwidencji.Predekretowany;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Error("Przeksięgowanie - błąd tworzenia dekretu", ex);
|
||||
}
|
||||
}
|
||||
Progress(1.00m, "Finalizowanie procesu");
|
||||
dok.Features["PrzeksiegowanyDokumentKoszty"] = pkk;
|
||||
tran.CommitUI();
|
||||
}
|
||||
|
||||
#endregion Dekretacja ze względu na różny miesiąc elementów opisu analitycznego
|
||||
|
||||
return new MessageBoxInformation("Przeksięgowanie kosztów")
|
||||
{
|
||||
Type = MessageBoxInformationType.Information,
|
||||
Text = "Proces wykonany pomyślnie",
|
||||
OKHandler = () => null
|
||||
};
|
||||
}
|
||||
|
||||
private static readonly string[] listaBazSQL =
|
||||
{
|
||||
//DEV
|
||||
"DEV WSCHODNI FRONT",
|
||||
|
||||
//PRODUKCJA
|
||||
"WSCHODNI FRONT",
|
||||
"PAN VIKING",
|
||||
"TANOSHII",
|
||||
"FLOTA VIKINGA",
|
||||
"VIKING POINT",
|
||||
"VIKING SOFTWARE",
|
||||
|
||||
//TESTY
|
||||
"TEST WSCHODNI FRONT"
|
||||
};
|
||||
|
||||
public static bool Visible(Context cx)
|
||||
{
|
||||
DokEwidencji dok = (DokEwidencji)cx[typeof(DokEwidencji)];
|
||||
|
||||
return dok.Typ is TypDokumentu.ZakupEwidencja or TypDokumentu.SprzedażEwidencja &&
|
||||
listaBazSQL.Any(x => x.Trim().ToUpper() == ((Login)cx[typeof(Login)]).Database.Name.Trim().ToUpper());
|
||||
}
|
||||
|
||||
public static bool Enabled(Context cx)
|
||||
{
|
||||
DokEwidencji dok = (DokEwidencji)cx[typeof(DokEwidencji)];
|
||||
|
||||
return (dok.Stan == StanEwidencji.Predekretowany && (DokEwidencji)dok.Features["PrzeksiegowanyDokumentKoszty"] is null);
|
||||
}
|
||||
|
||||
private static MessageBoxInformation Error(string title, Exception ex) => new(title)
|
||||
{
|
||||
Type = MessageBoxInformationType.Error,
|
||||
Text = ex.Message,
|
||||
OKHandler = () => null
|
||||
};
|
||||
|
||||
private static void Progress(decimal percent, string message)
|
||||
{
|
||||
TraceInfo.SetProgressBar(new Percent(percent));
|
||||
TraceInfo.WriteProgress($"{(int)percent * 100}% {message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using Soneta.Business;
|
||||
using Soneta.Core;
|
||||
using Soneta.Tools;
|
||||
using Soneta.Types;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace FX2_SP_WORKERS.PrzeksiegowanieKoszty
|
||||
{
|
||||
internal class PrzeksiegowanieKosztyParams : ContextBase
|
||||
{
|
||||
private List<DefinicjaDokumentu> listaDefPK = new List<DefinicjaDokumentu>();
|
||||
|
||||
public PrzeksiegowanieKosztyParams(Context context) : base(context)
|
||||
{
|
||||
//Ustawianie definicji PK
|
||||
listaDefPK = CoreModule.GetInstance(Context).DefDokumentow.WgTypu[TypDokumentu.PKEwidencja].ToList();
|
||||
defPK = CoreModule.GetInstance(Context).DefDokumentow.WgSymbolu["PKP"];
|
||||
|
||||
if (defPK is null)
|
||||
defPK = CoreModule.GetInstance(Context).DefDokumentow.WgSymbolu["PKE"];
|
||||
|
||||
if (defPK is null)
|
||||
defPK = listaDefPK.FirstOrDefault();
|
||||
}
|
||||
|
||||
//Definicja tworzonego dokumentu PK Ewindecji
|
||||
private DefinicjaDokumentu defPK;
|
||||
|
||||
[Caption("Definicja PK"), Priority(1), DefaultWidth(25)]
|
||||
public DefinicjaDokumentu DefPK
|
||||
{
|
||||
get => defPK;
|
||||
set
|
||||
{
|
||||
if (value is not null)
|
||||
{
|
||||
defPK = value;
|
||||
OnChanged(EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public object GetListDefPK()
|
||||
{
|
||||
return listaDefPK;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user