public sObrazacJOPPD CreateJoppdXmlFile(DateTime datum, string joppdBroj, string izvjesceSastavio, int broj_osoba) { List <sPrimateljiP> pArr = new List <sPrimateljiP>(); for (int i = 0; i < _joppdB.Entitet.Count; i++) { JoppdEntitet e = _joppdB.Entitet[i]; pArr.Add(new sPrimateljiP() { P1 = e.Redni_Broj, P2 = e.Opcina_Prebivalista, P3 = e.Opcina_Rada, P4 = e.Oib, P5 = e.Ime_Prezime, P61 = (tOznakaStjecatelja)Enum.Parse(typeof(tOznakaStjecatelja), "Item" + e.Stjecatelj), P62 = (tOznakaPrimici)Enum.Parse(typeof(tOznakaPrimici), "Item" + e.Primitak), P71 = (tOznakaMO)Enum.Parse(typeof(tOznakaMO), e.Beneficirani), P72 = (tOznakaInvaliditet)Enum.Parse(typeof(tOznakaInvaliditet), "Item" + e.Invaliditet), P8 = (tOznakaMjesec)Enum.Parse(typeof(tOznakaMjesec), "Item" + e.Mjesec), P9 = (tOznakaRadnoVrijeme)Enum.Parse(typeof(tOznakaRadnoVrijeme), "Item" + e.Vrijeme), P10 = e.IsPoslodavac() ? int.Parse((Convert.ToDateTime(e.Datum_Do) - Convert.ToDateTime(e.Datum_Od)).Days.ToString()) + 1 : e.Sati, P100 = e.IsPoslodavac() ? 0 : e.Sati_praznika, P101 = Convert.ToDateTime(e.Datum_Od), P102 = Convert.ToDateTime(e.Datum_Do), P11 = e.Bruto, P12 = e.Bruto, P121 = e.Mio_1, P122 = e.Mio_2, P123 = e.Zdravstvo, P124 = e.Zaštita, P125 = e.Zaposljavanje, P126 = e.Povecani_Mio, P127 = e.Povecani_Mio2, P129 = e.Invaliditet_Doprinos, P131 = e.Izdatak, P132 = e.IzdatakUplaceni_Mio, P133 = e.Dohodak, P134 = e.Osobni_Odbitak, P135 = e.Porezna_Osnovica, P141 = e.Porez_Ukupno, P142 = e.Prirez, P151 = (tOznakaNeoporezivogPrimitka)Enum.Parse(typeof(tOznakaNeoporezivogPrimitka), e.Oznaka_Neoporezivog), P152 = e.Iznos_Neoporezivog, P161 = (tOznakaNacinaIsplate)Enum.Parse(typeof(tOznakaNacinaIsplate), e.Nacin_Isplate), P162 = e.Iznos_Isplate, P17 = e.Primitak_Nesamostalni }); } JoppdA jA = new JoppdA(pArr); sStranaA strA = new sStranaA() { DatumIzvjesca = datum, OznakaIzvjesca = joppdBroj, VrstaIzvjesca = tVrstaIzvjesca.Item1, IzvjesceSastavio = new sIzvjesceSastavio() { Ime = izvjesceSastavio.Split(' ')[0], Prezime = izvjesceSastavio.Split(' ')[1] }, PodnositeljIzvjesca = new sPodnositeljIzvjesca() { ItemsElementName = new[] { ItemsChoiceType.Naziv }, Items = new[] { _komitent.OpciPodaci.Naziv }, Adresa = new sAdresa() { Ulica = _komitent.Adresa.Ulica, Broj = _komitent.Adresa.Broj, Mjesto = _komitent.Adresa.Grad.Mjesto }, Email = _komitent.Kontakt.Email, OIB = _komitent.OpciPodaci.Oib, Oznaka = tOznakaPodnositelja.Item2 }, BrojOsoba = broj_osoba.ToString(), BrojRedaka = pArr.Count.ToString(), PredujamPoreza = new sPredujamPoreza() { P1 = jA.UkupnoPorezIPrirez(), P11 = jA.UkupnoPorezIPrirez(), P12 = 0, P2 = 0, P3 = 0, P4 = 0, P5 = 0, P6 = 0 }, Doprinosi = new sDoprinosi() { GeneracijskaSolidarnost = new sGeneracijskaSolidarnost() { P1 = jA.SviDoprinosiGeneracijskaDjelatnici(), P1Specified = true, P2 = 0, P3 = jA.SviDoprinosiGeneracijskaPoduzetnik(), P3Specified = true, P4 = 0, P5 = 0, P6 = 0, P7 = 0 }, KapitaliziranaStednja = new sKapitaliziranaStednja() { P1 = jA.SviDoprinosiKapitaliziranaDjelatnici(), P1Specified = true, P2 = 0, P3 = jA.SviDoprinosiKapitaliziranaPoduzetnik(), P3Specified = true, P4 = 0, P5 = 0, P6 = 0 }, ZdravstvenoOsiguranje = new sZdravstvenoOsiguranje() { P1 = jA.ZdravstveoDjelatnici(), P1Specified = true, P2 = 0, P3 = jA.ZdravstvenoPoduzetnici(), P3Specified = true, P4 = 0, P5 = 0, P6 = 0, P7 = 0, P8 = 0, P9 = 0, P10 = 0, P11 = 0, P12 = 0 }, Zaposljavanje = new sZaposljavanje() { P1 = 0, P2 = 0, P3 = 0, P4 = 0 } }, IsplaceniNeoporeziviPrimici = jA.ZbrojNeoporezivo(), IsplaceniNeoporeziviPrimiciSpecified = true, KamataMO2 = 0, UkupniNeoporeziviPrimici = 0, NaknadaZaposljavanjeInvalida = new sNaknadaZaposljavanjeInvalida() { P1 = "0", P2 = 0 } }; sJOPPDmetapodaci meta = new sJOPPDmetapodaci() { Datum = new sDatumTemeljni() { Value = datum }, Naslov = new sNaslovTemeljni() { Value = "Izvješće o primicima, porezu na dohodak i prirezu te doprinosima za obvezna osiguranja" }, Autor = new sAutorTemeljni() { Value = izvjesceSastavio }, Format = new sFormatTemeljni() { Value = tFormat.textxml }, Jezik = new sJezikTemeljni() { Value = tJezik.hrHR }, Identifikator = new sIdentifikatorTemeljni() { Value = Guid.NewGuid().ToString() }, Uskladjenost = new sUskladjenost() { Value = "ObrazacJOPPD-v1-1" }, Tip = new sTipTemeljni() { Value = tTip.Elektroničkiobrazac }, Adresant = new sAdresantTemeljni() { Value = "Ministarstvo Financija, Porezna uprava, Zagreb" } }; sPrimateljiP[][] prim = { pArr.ToArray() }; _sObrazacJoppd.StranaA = strA; _sObrazacJoppd.StranaB = prim; _sObrazacJoppd.Metapodaci = meta; return(_sObrazacJoppd); }
public async Task <sObrazacJOPPD> CreateJoppdEporezna(DateTime?date, string identifier, string formCreator, PayrollArchiveModel archive, List <JoppdEmployeeModel> joppdEmployee) { _archive = archive; AddRecipients(joppdEmployee); CompanyModel c = await _companyEndpoint.Get(); sStranaA strA = new sStranaA() { DatumIzvjesca = (DateTime)date, OznakaIzvjesca = identifier, VrstaIzvjesca = tVrstaIzvjesca.Item1, IzvjesceSastavio = new sIzvjesceSastavio() { Ime = formCreator.Split(' ')[0], Prezime = formCreator.Split(' ')[1] }, PodnositeljIzvjesca = new sPodnositeljIzvjesca() { ItemsElementName = new[] { ItemsChoiceType.Naziv }, Items = new[] { c.Naziv }, Adresa = new sAdresa() { Ulica = c.Ulica, Broj = c.Broj, Mjesto = c.Mjesto }, Email = c.Email, OIB = c.Oib, Oznaka = tOznakaPodnositelja.Item2 }, BrojOsoba = archive.Payrolls.Select(x => x.Oib).Distinct().Count().ToString(), BrojRedaka = _pArr.Count.ToString(), PredujamPoreza = new sPredujamPoreza() { P1 = archive.Payrolls.Sum(x => x.UkupnoPorezPrirez), P11 = archive.Payrolls.Sum(x => x.UkupnoPorezPrirez), P12 = 0, P2 = 0, P3 = 0, P4 = 0, P5 = 0, P6 = 0 }, Doprinosi = new sDoprinosi() { GeneracijskaSolidarnost = new sGeneracijskaSolidarnost() { P1 = SumMio1Employees(_pArr), P1Specified = true, P2 = 0, P3 = SumMio1Employer(_pArr), P3Specified = true, P4 = 0, P5 = 0, P6 = 0, P7 = 0 }, KapitaliziranaStednja = new sKapitaliziranaStednja() { P1 = SumMio2Employees(_pArr), P1Specified = true, P2 = 0, P3 = SumMio2Employer(_pArr), P3Specified = true, P4 = 0, P5 = 0, P6 = 0 }, ZdravstvenoOsiguranje = new sZdravstvenoOsiguranje() { P1 = SumHealthcareEmployee(_pArr), P1Specified = true, P2 = 0, P3 = SumHealthcareEmployer(_pArr), P3Specified = true, P4 = 0, P5 = 0, P6 = 0, P7 = 0, P8 = 0, P9 = 0, P10 = 0, P11 = 0, P12 = 0 }, Zaposljavanje = new sZaposljavanje() { P1 = 0, P2 = 0, P3 = 0, P4 = 0 } }, IsplaceniNeoporeziviPrimici = _pArr.Sum(x => x.P152), IsplaceniNeoporeziviPrimiciSpecified = true, KamataMO2 = 0, UkupniNeoporeziviPrimici = 0, NaknadaZaposljavanjeInvalida = new sNaknadaZaposljavanjeInvalida() { P1 = "0", P2 = 0 } }; sJOPPDmetapodaci meta = new sJOPPDmetapodaci() { Datum = new sDatumTemeljni() { Value = (DateTime)date }, Naslov = new sNaslovTemeljni() { Value = "Izvješće o primicima, porezu na dohodak i prirezu te doprinosima za obvezna osiguranja" }, Autor = new sAutorTemeljni() { Value = formCreator }, Format = new sFormatTemeljni() { Value = tFormat.textxml }, Jezik = new sJezikTemeljni() { Value = tJezik.hrHR }, Identifikator = new sIdentifikatorTemeljni() { Value = Guid.NewGuid().ToString() }, Uskladjenost = new sUskladjenost() { Value = "ObrazacJOPPD-v1-1" }, Tip = new sTipTemeljni() { Value = tTip.Elektroničkiobrazac }, Adresant = new sAdresantTemeljni() { Value = "Ministarstvo Financija, Porezna uprava, Zagreb" } }; sPrimateljiP[][] prim = { _pArr.ToArray() }; sObrazacJOPPD sJoppd = new sObrazacJOPPD(); sJoppd.StranaA = strA; sJoppd.StranaB = prim; sJoppd.Metapodaci = meta; return(sJoppd); }