public static void Перенумеровать(IObjectSpace os, КнигаПрод book) { Int32 cur_num = 1; foreach (var line in book.КнПродСтр.OrderBy(x => x.ДатаСчФПрод)) { line.НомерПор = cur_num++; } }
public void Перенумеровать() { IObjectSpace os_cur = CommonMethods.FindObjectSpaceByObject(this); using (IObjectSpace os = os_cur.CreateNestedObjectSpace()) { КнигаПрод book = os.GetObject <КнигаПрод>(this); Перенумеровать(os, book); os.CommitChanges(); } }
public static void Обновить(IObjectSpace os, КнигаПрод book) { os.Delete(book.КнПродСтр); Int32 cur_num = 1; book.Книга.СтрокиКниги.Sorting.Add(new SortProperty("Основание.Дата", DevExpress.Xpo.DB.SortingDirection.Ascending)); foreach (var line in book.Книга.СтрокиКниги) { КнПродСтр doc_line = os.CreateObject <КнПродСтр>(); book.КнПродСтр.Add(doc_line); doc_line.КнигаСтрока = line; doc_line.НомерПор = cur_num++; foreach (Операция oper in line.Операции) { if (oper.Основание.Тип == Основание.ТипОснования.СФА) { ДокПдтвОпл pay_doc = null; foreach (ДокПдтвОпл doc in doc_line.ДокПдтвОпл) { if (doc.НомДокПдтвОпл == oper.ПДНомер && doc.ДатаДокПдтвОпл == oper.ПДДата) { pay_doc = doc; break; } } if (pay_doc == null) { pay_doc = os.CreateObject <ДокПдтвОпл>(); doc_line.ДокПдтвОпл.Add(pay_doc); pay_doc.НомДокПдтвОпл = oper.ПДНомер; pay_doc.ДатаДокПдтвОпл = oper.ПДДата; } } if (oper.СуммаСтоимость != 0) { doc_line.КодВидОпер = oper.ОфицВидОперации; } if (oper.Ставка == СтавкаНДС.НЕОБЛ) { } if (oper.Ставка == СтавкаНДС.ОБЛ_0) { doc_line.СтоимПродСФ0 += oper.СуммаСтоимость; } if (oper.Ставка == СтавкаНДС.ОБЛ_10) { if (oper.Основание != null && oper.Основание.Тип != Основание.ТипОснования.СФА) { doc_line.СтоимПродСФ10 += oper.СуммаСтоимость; } doc_line.СумНДССФ10 += oper.СуммаНДСБаза; } if (oper.Ставка == СтавкаНДС.ОБЛ_18) { if (oper.Основание != null && oper.Основание.Тип != Основание.ТипОснования.СФА) { doc_line.СтоимПродСФ18 += oper.СуммаСтоимость; } doc_line.СумНДССФ18 += oper.СуммаНДСБаза; } } if (doc_line.СумНДССФ18 == 0 && doc_line.СтоимПродСФ18 == 0 && doc_line.СтоимПродСФ10 == 0 && doc_line.СумНДССФ10 == 0 && doc_line.СтоимПродСФ0 == 0) { os.Delete(doc_line); cur_num--; } } }