public static void ToBinaryWriterBlock(BinaryWriter bw, ordtype_s s) { byte[] buff = new byte[Marshal.SizeOf(typeof(ordtype_s))]; //Create Buffer GCHandle handle = GCHandle.Alloc(buff, GCHandleType.Pinned); //Hands off GC Marshal.StructureToPtr(s, handle.AddrOfPinnedObject(), false); //Marshal the structure handle.Free(); //Give control of the buffer back to the GC bw.Write(buff); //Write byte array }
public static ordtype_s FromBinaryReaderBlock(BinaryReader br) { byte[] buff = br.ReadBytes(Marshal.SizeOf(typeof(ordtype_s))); //Read byte array GCHandle handle = GCHandle.Alloc(buff, GCHandleType.Pinned); //Make sure that the Garbage Collector doesn't move our buffer ordtype_s s = (ordtype_s)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(ordtype_s)); //Marshal the bytes handle.Free(); //Give control of the buffer back to the GC return(s); }
public int SalgsOrder2Summa(IList <tblwfak> wFak) { var rec_regnskab = Program.qryAktivRegnskab(); if (rec_regnskab.Afsluttet == true) { return(0); } KarFakturastr_s m_karFakturastr_s = null; KarFakturavarer_s m_karFakturavarer_s = null; DateTime?Startdato = rec_regnskab.Start; DateTime?Slutdato = rec_regnskab.S**t; if (rec_regnskab.DatoLaas != null) { if (rec_regnskab.DatoLaas > Startdato) { Startdato = rec_regnskab.DatoLaas; } } var qry_ord = from sf in wFak //Program.dbDataTransSumma.Tblwfak where sf.sk == "S" select sf; int AntalOrdre = qry_ord.Count(); if (AntalOrdre > 0) { DateTime ToDay = DateTime.Today; int SidsteSFakID; int SidsteRec_no; try { SidsteSFakID = (from f in Program.karFakturaer_s select f.fakid).Max(); } catch (System.InvalidOperationException) { SidsteSFakID = 0; } try { SidsteRec_no = (from f in Program.karFakturaer_s select f.rec_no).Max(); } catch (System.InvalidOperationException) { SidsteRec_no = 0; } m_karFakturastr_s = new KarFakturastr_s(); m_karFakturavarer_s = new KarFakturavarer_s(true); foreach (var o in qry_ord) { var qry_ordlin = from sfl in o.tblwfaklins select sfl; if (qry_ordlin.Count() == 0) //der findes ingen ordrelinier { continue; } SidsteSFakID++; SidsteRec_no++; //var qry_ordlin = from sfl in Program.dbDataTransSumma.Tblwfaklin where sfl.Fakpid == o.Pid select sfl; int orebelob = (int)((from s in qry_ordlin select s.bruttobelob).Sum() * 100); int momsbelob = (int)((from s in qry_ordlin select s.moms).Sum() * 100); if (o.dato == null) { o.dato = ToDay; } if (o.konto == null) { o.konto = 0; } ordtype_s ord = new ordtype_s ( SidsteSFakID, //fakid (DateTime)o.dato, //dato ((DateTime)o.dato).AddDays(14), //forfaldsdato orebelob, //fakbeløb i øre (int)(o.konto), //debitornr momsbelob //momsbeløb i øre ); recFakturaer_s rec = new recFakturaer_s { rec_no = SidsteRec_no, rec_data = ord }; Program.karFakturaer_s.Add(rec); var m_rec = (from m in Program.karKartotek where m.Kontonr == o.konto select m).First(); string[] wAdresse = new string[1]; wAdresse[0] = m_rec.Adresse; clsNavnAdresse wFakNavnAdresse = new clsNavnAdresse { Navn = m_rec.Kontonavn, Adresse = wAdresse, Postnr = m_rec.Postnr, Bynavn = m_rec.Bynavn, }; recFakturastr_s rec_Fakturastr_s = new recFakturastr_s { Fakid = SidsteSFakID.ToString(), FakNavnAdresse = wFakNavnAdresse, Email = m_rec.Email, Cvrnr = m_rec.Cvrnr, }; m_karFakturastr_s.Add(rec_Fakturastr_s); foreach (var ol in qry_ordlin) { recFakturavarer_s rec_Fakturavarer_s = new recFakturavarer_s { Fakid = SidsteSFakID, Varenr = Microsoft.VisualBasic.Information.IsNumeric(ol.varenr) ? int.Parse(ol.varenr) : (int?)null, VareTekst = ol.tekst, Bogfkonto = ol.konto, Antal = ol.antal, Enhed = ol.enhed, Pris = ol.pris, Moms = ol.moms, Nettobelob = ol.nettobelob, Bruttobelob = ol.bruttobelob, Momspct = KarMoms.getMomspct(ol.momskode) }; m_karFakturavarer_s.Add(rec_Fakturavarer_s); } } try { recStatus rec_Status = (from s in Program.karStatus where s.key == "SidsteSFakID" select s).First(); rec_Status.value = SidsteSFakID.ToString(); } catch (System.InvalidOperationException) { recStatus rec_Status = new recStatus { key = "SidsteSFakID", value = SidsteSFakID.ToString() }; Program.karStatus.Add(rec_Status); } Program.karStatus.save(); Program.karFakturaer_s.save(); m_karFakturastr_s.save(); m_karFakturavarer_s.save(); Program.dbDataTransSumma.SubmitChanges(); } return(AntalOrdre); }