203 lines
5.5 KiB
C#
203 lines
5.5 KiB
C#
using FakturyWeb.Business;
|
|
using FakturyWeb.Data;
|
|
using Microsoft.VisualBasic.CompilerServices;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
|
|
namespace RazorPagesMovie.Models
|
|
{
|
|
public class FAKTURA
|
|
{
|
|
public int ID { get; set; }
|
|
|
|
[Required]
|
|
[DisplayName("Zákazník")]
|
|
[Range(1, Int32.MaxValue, ErrorMessage = "Vyberte zákazníka ze seznamu")]
|
|
public int ZakaznikID { get; set; }
|
|
|
|
public ZAKAZNIK ZAKAZNIK { get; set; }
|
|
|
|
public ICollection<POLOZKA> POLOZKY { get; set; }
|
|
|
|
public ICollection<PLATBA> PLATBY { get; set; }
|
|
|
|
[DisplayName("Číslo")]
|
|
public string CISLO { get; set; }
|
|
|
|
public int CISLO_ABS { get; set; }
|
|
|
|
[DataType(DataType.Date)]
|
|
[DisplayName("Datum vystavení")]
|
|
public DateTime VYSTAVENI { get; set; }
|
|
|
|
[DataType(DataType.Date)]
|
|
[DisplayName("Datum splatnosti")]
|
|
public DateTime SPLATNOST { get; set; }
|
|
|
|
[DisplayName("Dodavatel")]
|
|
public string D_PRAJM { get; set; }
|
|
|
|
[DisplayName("Ulice")]
|
|
public string D_ULICE { get; set; }
|
|
|
|
[DisplayName("Město")]
|
|
public string D_MESTO { get; set; }
|
|
|
|
[DisplayName("PSČ")]
|
|
public string D_PSC { get; set; }
|
|
|
|
[DisplayName("IČ")]
|
|
public string D_IC { get; set; }
|
|
|
|
[DisplayName("DIČ")]
|
|
public string D_DIC { get; set; }
|
|
|
|
[DisplayName("Bankovní účet")]
|
|
public string D_BANKA { get; set; }
|
|
|
|
[DisplayName("Telefon")]
|
|
public string D_TELEFON { get; set; }
|
|
|
|
[DisplayName("E-mail")]
|
|
public string D_EMAIL { get; set; }
|
|
|
|
[DisplayName("Web")]
|
|
public string D_WEB { get; set; }
|
|
|
|
[DisplayName("Odběratel")]
|
|
public string O_PRAJM { get; set; }
|
|
|
|
[DisplayName("Ulice")]
|
|
public string O_ULICE { get; set; }
|
|
|
|
[DisplayName("Město")]
|
|
public string O_MESTO { get; set; }
|
|
|
|
[DisplayName("PSČ")]
|
|
public string O_PSC { get; set; }
|
|
|
|
[DisplayName("IČ")]
|
|
public string O_IC { get; set; }
|
|
|
|
[DisplayName("DIČ")]
|
|
public string O_DIC { get; set; }
|
|
|
|
[DisplayName("Forma úhrady")]
|
|
public byte FORMA_UHRADY { get; set; }
|
|
|
|
[DisplayName("Popis činností")]
|
|
public string CINNOSTI { get; set; }
|
|
|
|
|
|
public FAKTURA()
|
|
{
|
|
VYSTAVENI = DateTime.Today;
|
|
SPLATNOST = VYSTAVENI.Date.AddDays(15);
|
|
FORMA_UHRADY = 1;
|
|
}
|
|
|
|
public void Init(FakturyWebContext context)
|
|
{
|
|
SetCisloFaktury(context);
|
|
}
|
|
|
|
private void SetCisloFaktury(FakturyWebContext context)
|
|
{
|
|
if (!context.UZIVATEL.Any())
|
|
{
|
|
return;
|
|
}
|
|
|
|
// get nastavení:
|
|
UZIVATEL myUzivatel = context.UZIVATEL.First();
|
|
|
|
D_PRAJM = myUzivatel.PRAJM;
|
|
D_ULICE = myUzivatel.ULICE;
|
|
D_PSC = myUzivatel.PSC;
|
|
D_MESTO = myUzivatel.MESTO;
|
|
D_IC = myUzivatel.IC;
|
|
D_DIC = myUzivatel.DIC;
|
|
D_TELEFON = myUzivatel.TELEFON;
|
|
D_EMAIL = myUzivatel.EMAIL;
|
|
D_BANKA = myUzivatel.BANKA;
|
|
D_WEB = myUzivatel.WEB;
|
|
|
|
//číslo faktury:
|
|
int poslCislo = 0;
|
|
if (myUzivatel.FAKTURA_CISLOVANI == 1) // po roce...
|
|
{
|
|
poslCislo = (from f in context.FAKTURA
|
|
where f.VYSTAVENI.Year == VYSTAVENI.Year
|
|
orderby f.CISLO_ABS descending
|
|
select f.CISLO_ABS).FirstOrDefault();
|
|
CISLO_ABS = poslCislo + 1;
|
|
}
|
|
else // po měsíci...
|
|
{
|
|
poslCislo = (from f in context.FAKTURA
|
|
where f.VYSTAVENI.Year == this.VYSTAVENI.Year & f.VYSTAVENI.Month == this.VYSTAVENI.Month
|
|
orderby f.CISLO_ABS descending
|
|
select f.CISLO_ABS).FirstOrDefault();
|
|
CISLO_ABS = poslCislo + 1;
|
|
}
|
|
// formát čísla:
|
|
string myCislo = "";
|
|
try
|
|
{
|
|
var myParser = new ParserFakturaCislo(myUzivatel.FAKTURA_MASKA);
|
|
myParser.Parse();
|
|
foreach (var symb in myParser.logic)
|
|
{
|
|
switch (symb.GetTyp)
|
|
{
|
|
case var @case when Operators.ConditionalCompareObjectEqual(@case, SymbolEnum.CISLO2, false):
|
|
{
|
|
myCislo += CISLO_ABS.ToString("00");
|
|
break;
|
|
}
|
|
case var case1 when Operators.ConditionalCompareObjectEqual(case1, SymbolEnum.CISLO4, false):
|
|
{
|
|
myCislo += CISLO_ABS.ToString("0000");
|
|
break;
|
|
}
|
|
case var case2 when Operators.ConditionalCompareObjectEqual(case2, SymbolEnum.CISLO6, false):
|
|
{
|
|
myCislo += CISLO_ABS.ToString("000000");
|
|
break;
|
|
}
|
|
case var case3 when Operators.ConditionalCompareObjectEqual(case3, SymbolEnum.ROK, false):
|
|
{
|
|
myCislo += VYSTAVENI.ToString("yyyy");
|
|
break;
|
|
}
|
|
case var case4 when Operators.ConditionalCompareObjectEqual(case4, SymbolEnum.MESIC, false):
|
|
{
|
|
myCislo += VYSTAVENI.ToString("MM");
|
|
break;
|
|
}
|
|
case var case5 when Operators.ConditionalCompareObjectEqual(case5, SymbolEnum.TEXT, false):
|
|
{
|
|
myCislo += symb.ToString();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
myCislo = "0";
|
|
}
|
|
|
|
if (myCislo.Length > 20)
|
|
{
|
|
//VystrazneHlaseni("Číslo faktury může mít maximálně 20 znaků. Číslo faktury bude oříznuto.");
|
|
//myCislo = Strings.Left(myCislo, 20);
|
|
}
|
|
CISLO = myCislo;
|
|
}
|
|
|
|
}
|
|
} |