private VsnrFile(VOSZ vorlaufDsrv, VOSZ vorlaufSender, IReadOnlyList <DSVV01> dsvv, NCSZ nachlaufSender, NCSZ nachlaufDsrv)
 {
     VorlaufDsrv    = vorlaufDsrv;
     VorlaufSender  = vorlaufSender;
     DSVV           = dsvv;
     NachlaufSender = nachlaufSender;
     NachlaufDsrv   = nachlaufDsrv;
     Datensaetze    =
         new IDatensatz[] { vorlaufDsrv, vorlaufSender }
     .Concat(dsvv)
     .Concat(new IDatensatz[] { nachlaufSender, nachlaufDsrv })
     .ToList();
 }
Example #2
0
        private string BuildRequestFile(StreamFactory streamFactory, int fileNumber, DateTime creationTimestamp, IEnumerable <Person> personen)
        {
            var registration = Dataline.Common.Constants.SocialInsurance.Registrations.Dataline;
            var output       = new StringWriter();

            using (var writer = streamFactory.CreateWriter("dsvv-deuev-v01", output))
            {
                var vosz = new VOSZ()
                {
                    VFMM = "AGTRV",
                    ABSN = _sender.Betriebsnummer,
                    EPNR = DsrvConstants.Betriebsnummer,
                    ED   = LocalDateTime.FromDateTime(creationTimestamp).Date,
                    DTNR = fileNumber,
                    NAAB = _sender.Name1,
                };
                writer.Write(vosz);

                var dsko = new DSKO04()
                {
                    VF      = "DEUEV",
                    ABSN    = _sender.Betriebsnummer,
                    EPNR    = DsrvConstants.Betriebsnummer,
                    ED      = creationTimestamp,
                    ABSNER  = _company.Betriebsnummer,
                    PRODID  = registration.ProductId,
                    MODID   = registration.ModificationId,
                    NAME1   = _company.Name1,
                    PLZ     = _company.PLZ,
                    ORT     = _company.Ort,
                    STR     = _company.Strasse,
                    ANRAP   = _sender.IstFrau ? "W" : "M",
                    NAMEAP  = _sender.Ansprechpartner,
                    TELAP   = _sender.Telefon,
                    FAXAP   = _sender.Fax,
                    EMAILAP = _sender.Email,
                };
                writer.Write(dsko);

                var personCount = 0;
                foreach (var person in personen)
                {
                    personCount += 1;

                    var dsvv = new DSVV01()
                    {
                        ABSN    = _sender.Betriebsnummer,
                        EPNR    = DsrvConstants.Betriebsnummer,
                        ED      = creationTimestamp,
                        KENNZRM = DSVV01Status.Grundstellung,
                        BBNRVU  = _company.Betriebsnummer,
                        DSID    = XmlConvert.ToString(person.Id),
                        AZVU    = person.Personalnummer,
                        MMUEB   = 1,
                        DBNA    = new DBNA()
                        {
                            FMNA = person.Nachname,
                            VONA = person.Vorname,
                        },
                        DBGB = new DBGB()
                        {
                            GBDT = LocalDate.FromDateTime(person.Gebdat),
                            GBNA = person.GeburtsName,
                            GBOT = person.GeburtsOrt,
                            GE   = person.IstMann ? "M" : "W",
                        },
                        DBAN = new DBAN()
                        {
                            LDKZ = person.LandKennzeichen,
                            PLZ  = person.PLZ,
                            ORT  = person.Ort,
                            STR  = person.Strasse
                        },
                    };
                    writer.Write(dsvv);
                }

                var ncsz = new NCSZ()
                {
                    VFMM = "AGTRV",
                    ABSN = _sender.Betriebsnummer,
                    EPNR = DsrvConstants.Betriebsnummer,
                    ED   = LocalDateTime.FromDateTime(creationTimestamp).Date,
                    DTNR = fileNumber,
                    ZLSZ = personCount + 1,
                };
                writer.Write(ncsz);

                writer.Close();
            }

            var records = output.ToString().Split('\n').Select(x => x.TrimEnd('\r')).Where(x => !string.IsNullOrEmpty(x)).ToArray();

            Validate(records);

            return(string.Join("\r\n", records));
        }