public static ordtype_k FromBinaryReaderBlock(BinaryReader br) { byte[] buff = br.ReadBytes(Marshal.SizeOf(typeof(ordtype_k))); //Read byte array GCHandle handle = GCHandle.Alloc(buff, GCHandleType.Pinned); //Make sure that the Garbage Collector doesn't move our buffer ordtype_k s = (ordtype_k)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(ordtype_k)); //Marshal the bytes handle.Free(); //Give control of the buffer back to the GC return(s); }
public static void ToBinaryWriterBlock(BinaryWriter bw, ordtype_k s) { byte[] buff = new byte[Marshal.SizeOf(typeof(ordtype_k))]; //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 int KøbsOrder2Summa(IList <Tblwfak> wFak) { var rec_regnskab = Program.qryAktivRegnskab(); if (rec_regnskab.Afsluttet == true) { return(0); } KarFakturastr_k m_karFakturastr_k = null; KarFakturavarer_k m_karFakturavarer_k = 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 where sf.Sk == "K" select sf; int AntalOrdre = qry_ord.Count(); if (AntalOrdre > 0) { DateTime ToDay = DateTime.Today; int SidsteKFakID; int SidsteRec_no; try { SidsteKFakID = (from f in Program.karFakturaer_k select f.fakid).Max(); } catch (System.InvalidOperationException) { SidsteKFakID = 0; } try { SidsteRec_no = (from f in Program.karFakturaer_k select f.rec_no).Max(); } catch (System.InvalidOperationException) { SidsteRec_no = 0; } m_karFakturastr_k = new KarFakturastr_k(); m_karFakturavarer_k = new KarFakturavarer_k(true); foreach (var o in qry_ord) { var qry_ordlin = from sfl in o.Tblwfaklin select sfl; if (qry_ordlin.Count() == 0) //der findes ingen ordrelinier { continue; } SidsteKFakID++; SidsteRec_no++; 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; } if (o.Kreditorbilagsnr == null) { o.Kreditorbilagsnr = 0; } ordtype_k ord = new ordtype_k ( SidsteKFakID, //fakid (DateTime)o.Dato, //dato ((DateTime)o.Dato).AddDays(14), //forfaldsdato orebelob, //fakbeløb i øre (int)(o.Konto), //kreditornr momsbelob, //momsbeløb i øre (int)(o.Kreditorbilagsnr) //kreditorbilagsnr ); recFakturaer_k rec = new recFakturaer_k { rec_no = SidsteRec_no, rec_data = ord }; Program.karFakturaer_k.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_k rec_Fakturastr_k = new recFakturastr_k { Fakid = SidsteKFakID, FakNavnAdresse = wFakNavnAdresse, Cvrnr = m_rec.Cvrnr, }; m_karFakturastr_k.Add(rec_Fakturastr_k); foreach (var ol in qry_ordlin) { recFakturavarer_k rec_Fakturavarer_k = new recFakturavarer_k { Fakid = SidsteKFakID, 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_k.Add(rec_Fakturavarer_k); } } try { recStatus rec_Status = (from s in Program.karStatus where s.key == "SidsteKFakID" select s).First(); rec_Status.value = SidsteKFakID.ToString(); } catch (System.InvalidOperationException) { recStatus rec_Status = new recStatus { key = "SidsteKFakID", value = SidsteKFakID.ToString() }; Program.karStatus.Add(rec_Status); } Program.karStatus.save(); Program.karFakturaer_k.save(); m_karFakturastr_k.save(); m_karFakturavarer_k.save(); Program.dbDataTransSumma.SubmitChanges(); } return(AntalOrdre); }