Nhờ Anh/Chị dùng M language chuyển sổ kế toán xuất từ ERP thành sổ kế toán có đối ứng tài khoản từng dòng

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

mihhoang

Thành viên mới
Tham gia
8/5/14
Bài viết
3
Được thích
1
Như tiêu đề, em có file mẫu sổ kế toán cần chuyển thành sổ có đối ứng tài khoản từng dòng.
Trong đó, bút toán có đối ứng 1 nhiều thì chuyển được, mình sẽ ghi tài khoản đối ứng vào cột TKDU và ghi chú dòng đó là OK
Ngược lại, bút toán có đối ứng nhiều nhiều thì không chuyển được, mình sẽ ghi tài khoản ZZZ vào cột TKDU và ghi chú dòng đó NO

Hiện tại em đang xử lý bằng excel và pivot nhưng trải qua nhiều bước nên hôm nay nhờ Anh/Chị xử lý bằng M language cho nhanh hơn

Em cảm ơn!
 

File đính kèm

  • test GL.xlsx
    15.4 KB · Đọc: 28
Như tiêu đề, em có file mẫu sổ kế toán cần chuyển thành sổ có đối ứng tài khoản từng dòng.
Trong đó, bút toán có đối ứng 1 nhiều thì chuyển được, mình sẽ ghi tài khoản đối ứng vào cột TKDU và ghi chú dòng đó là OK
Ngược lại, bút toán có đối ứng nhiều nhiều thì không chuyển được, mình sẽ ghi tài khoản ZZZ vào cột TKDU và ghi chú dòng đó NO

Hiện tại em đang xử lý bằng excel và pivot nhưng trải qua nhiều bước nên hôm nay nhờ Anh/Chị xử lý bằng M language cho nhanh hơn

Em cảm ơn!
Bạn kiểm tra xem đúng chưa? Mình làm theo kết quả của bạn mong muốn.
Mã:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content],
  ket_qua = Table.Combine(
    Table.Group(
      Source,
      "Document No",
      {
        {
          "tbl",
          (g) =>
            Table.SelectRows(
              Table.AddColumn(
                Table.FillUp(
                  Table.FillDown(
                    Table.AddColumn(
                      g,
                      "TKDU",
                      each
                        let
                          ld = List.Count(List.Select(g[Debit Amount], each _ > 0)),
                          lc = List.Count(List.Select(g[Credit Amount], each _ > 0))
                        in
                          if ld > 1 and lc > 1 then
                            "ZZZ"
                          else if lc = 1 and [Credit Amount] > 0 then
                            [#"G/L Account No"]
                          else if ld = 1 and [Debit Amount] > 0 and lc > 1 then
                            [#"G/L Account No"]
                          else
                            null
                    ),
                    {"TKDU"}
                  ),
                  {"TKDU"}
                ),
                "KQ",
                each if Text.Contains([TKDU], "Z") then "NO" else "OK"
              ),
              each [#"G/L Account No"] <> [TKDU]
            )
        }
      }
    )[tbl]
  )
in
  ket_qua
1716621106259.png
 
Bạn kiểm tra xem đúng chưa? Mình làm theo kết quả của bạn mong muốn.
Mã:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content],
  ket_qua = Table.Combine(
    Table.Group(
      Source,
      "Document No",
      {
        {
          "tbl",
          (g) =>
            Table.SelectRows(
              Table.AddColumn(
                Table.FillUp(
                  Table.FillDown(
                    Table.AddColumn(
                      g,
                      "TKDU",
                      each
                        let
                          ld = List.Count(List.Select(g[Debit Amount], each _ > 0)),
                          lc = List.Count(List.Select(g[Credit Amount], each _ > 0))
                        in
                          if ld > 1 and lc > 1 then
                            "ZZZ"
                          else if lc = 1 and [Credit Amount] > 0 then
                            [#"G/L Account No"]
                          else if ld = 1 and [Debit Amount] > 0 and lc > 1 then
                            [#"G/L Account No"]
                          else
                            null
                    ),
                    {"TKDU"}
                  ),
                  {"TKDU"}
                ),
                "KQ",
                each if Text.Contains([TKDU], "Z") then "NO" else "OK"
              ),
              each [#"G/L Account No"] <> [TKDU]
            )
        }
      }
    )[tbl]
  )
in
  ket_qua
View attachment 301113

Hay quá. mình xử lý được rồi. Mình chỉ chỉnh 1 xíu chổ điều kiện >0 thành <>0 thôi. Vì sổ kế toán cũng có giá trị âm.
Thanks bạn nhiều nhé!
 
Web KT
Back
Top Bottom