(作成中)
Ver 1.5以降の、販売管理のデータベースを利用します。
売上の記録
表示用語
明細を反映ボタン
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Ganges.Utilities.EntitiesOperationUtils.SaveOnCombinationMain(p.CombinationMain); //リスト上の子を編集している可能性があるので、保存する。 //集計するフィールド(InfoFのTermName)と、転記先のフィールド(InfoDのTermName)、条件を指定 List<(string,string,string,object)> values = new (){ ("Num4", "Num17", "Check2", true), ("Num4", "Num15", "Check2", false), ("Num6", "Num5", null, null) }; Ganges.Utilities.AggregateUtils.SumUpChildInfoNumber(p.InfoD, "F", values); //集計して転記する var info = p.InfoD; info.Num1 = info.Num19 + info.Num20; //税込金額 = 税抜金額 計 + 消費税 計 info.Num2 = info.Num20; //消費税 Ganges.Utilities.EntitiesOperationUtils.SaveOnCombinationMain(p.CombinationMain);//転記後、保存する。 Ganges.Utilities.EntitiesOperationUtils.ReloadOnCombinationMain(p.CombinationMain); |
明細を集計して、売上のフィールドに転記します。
1 | SumUpChildInfoNumber(p.InfoD, "F", values) |
p.InfoD 転記される側のInfo。ここでは、売上テーブルのInfo
"F" 転記するデータがある側のInfoType。ここでは、明細テーブルのInfoType
values 転記の値・条件など
1 | ("Num4", "Num17", "Check2", true) |
- Num4 税抜金額
- Num17 税抜金額(軽減)
- Check2 軽減税率のチェックがTrueが条件
- InfoType.Fの記録のCheck2がTrueの時に、InfoType.Fの記録のNum4を合計して、InfoDのNum17に転記する。
1 | ("Num4", "Num15", "Check2", false) |
- Num4 税抜金額
- Num15 税抜金額(標準)
- Check2 軽減税率のチェックがFalseが条件
1 | ("Num6", "Num5", null, null) |
- Num6 原価計
- Num5 原価
- 条件の指定はないので、売上に紐付く明細の記録全てが集計対象になる。
- InfoType.Fの記録(子の記録すべて)の、Num6を合計して、InfoDのNum5に転記する。
税込金額・消費税に転記(Ver 1.6以降)
1 2 3 | var info = p.InfoD; info.Num1 = info.Num19 + info.Num20; //税込金額 = 税抜金額 計 + 消費税 計 info.Num2 = info.Num20; //消費税 |
明細を一行に連結
1 2 3 4 5 6 7 8 9 10 11 12 13 | //明細を連結し、一行の文字列化 List<InfoInterface> result = Ganges.Utilities.InfoUtils.GetManyRelatedInfoWithOrder(p.InfoD, "F", "x => x.Int20"); var sb = new StringBuilder(); foreach (var item in result) { string remark = string.IsNullOrEmpty(item.Text4) && item.Int1 is null ? "" : item.Int1 is null ? $"({item.Text4})" : string.IsNullOrEmpty(item.Text4) ? $"({item.Int1})" : $"({item.Text4}-{item.Int1})"; sb.Append(item.Text2 + remark + "、"); } var s = sb.Length == 0 ? "明細なし" : sb.ToString().Substring(0, sb.Length - 1); //最後の、「、」を外す。 info.Text4 = s; |
- 明細のリストを、名称(備考・数量)の文字列にして、一行にし、売上のフィールドに配置します。
- x => x.Int20 明細を、Int20でソートして取得します。
- item.Text2 明細の名称
- item.Text4 明細の備考
- item.Int1 明細の数量
- info.Text4 売上のその他1
- 売上の記録に明細がない時は、「明細なし」と表記
- 備考・数量が無い時は、「()」。備考のみある時は「(備考)」。数量のみある時は「(数量)」。両方ある時は、「(備考-数量)」を付記します。
税込金額 Setスクリプト
1 2 | p.InfoD.Num2 = p.Value is not null ? Math.Floor( (decimal)p.Value / (decimal)11) : null; return p.Value; |
粗利益 Getスクリプト
1 2 3 4 5 | var value = p.InfoD.Num19 is not null && p.InfoD.Num5 is not null ? p.InfoD.Num19 - p.InfoD.Num5 : null; return value; |
粗利益率 Getスクリプト
1 2 3 4 5 | var value = p.InfoD.Num6 is not null && p.InfoD.Num19 is not null ? p.InfoD.Num6 / p.InfoD.Num19 // 粗利益÷税抜金額 : null; return value; |