-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathAPI.cs
More file actions
67 lines (56 loc) · 1.68 KB
/
API.cs
File metadata and controls
67 lines (56 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using ProFak.DB;
namespace ProFak;
public class API(string baza) : IDisposable
{
public Baza Baza { get; private set; } = new Baza(baza);
public Transakcja Transakcja() => new Transakcja(Baza);
public Kontrahent MojaFirma() => Baza.Kontrahenci.First(kontrahent => kontrahent.CzyPodmiot);
public Faktura PrzygotujFakture(RodzajFaktury rodzaj, Kontrahent kontrahent, List<(Ref<Towar> towar, decimal ilosc)>? specyfikacja = null)
{
var faktura = new Faktura();
faktura.Rodzaj = rodzaj;
faktura.DataWprowadzenia = faktura.DataWystawienia = faktura.DataSprzedazy = DateTime.Now;
if (faktura.CzySprzedaz)
{
faktura.UstawNabywce(kontrahent);
faktura.UstawSprzedawce(MojaFirma());
}
else
{
faktura.UstawNabywce(MojaFirma());
faktura.UstawSprzedawce(kontrahent);
}
if (kontrahent.SposobPlatnosciRef.IsNull)
{
var sposobPlatnosci = Baza.SposobyPlatnosci.FirstOrDefault(sposobPlatnosci => sposobPlatnosci.CzyDomyslny);
if (sposobPlatnosci != null) faktura.UstawSposobPlatnosci(sposobPlatnosci);
}
else
{
var sposobPlatnosci = Baza.Znajdz(kontrahent.SposobPlatnosciRef);
faktura.UstawSposobPlatnosci(sposobPlatnosci);
}
faktura.NadajNumer(Baza);
Baza.Zapisz(faktura);
if (specyfikacja != null)
{
var lp = 1;
foreach (var (towarRef, ilosc) in specyfikacja)
{
var towar = Baza.Znajdz(towarRef);
var pozycja = new PozycjaFaktury();
pozycja.FakturaRef = faktura;
pozycja.LP = lp;
pozycja.UstawTowar(towar);
pozycja.Ilosc = ilosc;
pozycja.PrzeliczCeny(Baza);
Baza.Zapisz(pozycja);
lp++;
}
}
faktura.PrzeliczRazem(Baza);
Baza.Zapisz(faktura);
return faktura;
}
public void Dispose() => Baza.Dispose();
}