Lập NKC từ sổ excel xuất từ ERP (Nan giải) (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

andrykyo

Thành viên mới
Tham gia
19/9/17
Bài viết
5
Được thích
0
Giới tính
Nam
Công ty mình xuất sổ thường có nhiều định khoản kiểu 2 Nợ 3 Có, 3 Nợ 4 Có... Ví dụ 1 định khoản thế này:

Dedit CIP 100
Dedit VAT 10
Crebit payable: 80
Crebit advance to suppliers 20
Crebit Deposit 10

Với giả thiết là khi xây dựng xong 1 hạng mục. Nhà thầu xuất hóa đơn trị giá 110 ( bao gồm giá trị công trình 100 và VAT 10). Cùng với đó do ban đầu bên mình advance trước cho nhà thầu 20, nên lần này mình sẽ giảm cái advance đó lại (20). Và bên mình dc giữ lại 10% giá trị hạng mục để nghiệm thu khi hoàn thành công trình (10). Kết quả dẫn đến mình ghi Có như trên.

Câu hỏi là những nghiệp vụ này, có cách nào để ghi vào nhật ký chung dạng tài khoản đối ứng không. Vì trường hợp 1 đối ứng 2, 1 đối ứng 3... thì mình có thể viết được. Riêng những case 2 đối ứng 3, 2 đối ứng 4...này mình pó tay, hic.

Từ case trên, viết theo dạng đối ứng sẽ là:
Dedit CIP 70 Credit Payable 70
Debit VAT 10 Credit Payable 10
Debit CIP 20 Credit Advance to suppliers 20
Debit CIP 10 Credit Deposit 10

Mong các bạn giúp đở ( Sr mình vừa up thêm file excel)
 

File đính kèm

Lần chỉnh sửa cuối:
Công ty mình xuất sổ thường có nhiều định khoản kiểu 2 Nợ 3 Có, 3 Nợ 4 Có... Ví dụ 1 định khoản thế này:

Dedit CIP 100
Dedit VAT 10
Crebit payable: 80
Crebit advance to suppliers 20
Crebit Deposit 10

Với giả thiết là khi xây dựng xong 1 hạng mục. Nhà thầu xuất hóa đơn trị giá 110 ( bao gồm giá trị công trình 100 và VAT 10). Cùng với đó do ban đầu bên mình advance trước cho nhà thầu 20, nên lần này mình sẽ giảm cái advance đó lại (20). Và bên mình dc giữ lại 10% giá trị hạng mục để nghiệm thu khi hoàn thành công trình (10). Kết quả dẫn đến mình ghi Có như trên.

Câu hỏi là những nghiệp vụ này, có cách nào để ghi vào nhật ký chung dạng tài khoản đối ứng không. Vì trường hợp 1 đối ứng 2, 1 đối ứng 3... thì mình có thể viết được. Riêng những case 2 đối ứng 3, 2 đối ứng 4...này mình pó tay, hic.

Từ case trên, viết theo dạng đối ứng sẽ là:
Dedit CIP 70 Credit Payable 70
Debit VAT 10 Credit Payable 10
Debit CIP 20 Credit Advance to suppliers 20
Debit CIP 10 Credit Deposit 10

Mong các bạn giúp đở
Gởi file với các tiêu đề cột thực và dữ liệu giả định theo tất cả các dạng
 
F4 =IF(C4<>"CIP",B4,"")
G4 =IF(C4="VAT","VAT",IF(C4<>"CIP","CIP",""))
H4 =IF(C4="VAT","Payable",IF(C4<>"CIP",C4,""))
I4 =IF(C4<>"CIP",IF(C4="Payable",E4-SUMIFS($D$4:$D$12,$C$4:$C$12,"VAT",$B$4:$B$12,$B4),D4+E4),0)

Xong Filter cột F bỏ Blank

Cảm ơn bạn. Hàm của bạn rất hay, nhưng thực ra file mình ví dụ chỉ là 2 bút toán kép trong đó những tài khoản như trên được lặp lại. Còn thực chất, ngoài những tài khoản trên, còn rất nhiều tài khoản khác phát sinh với nghiệp vụ đối ứng kép tương tự. Cái mình mong muốn là có thể giải quyết dc triệt để khi những tài khoản thay đổi ý.
 
Công ty mình xuất sổ thường có nhiều định khoản kiểu 2 Nợ 3 Có, 3 Nợ 4 Có... Ví dụ 1 định khoản thế này:

Dedit CIP 100
Dedit VAT 10
Crebit payable: 80
Crebit advance to suppliers 20
Crebit Deposit 10

Với giả thiết là khi xây dựng xong 1 hạng mục. Nhà thầu xuất hóa đơn trị giá 110 ( bao gồm giá trị công trình 100 và VAT 10). Cùng với đó do ban đầu bên mình advance trước cho nhà thầu 20, nên lần này mình sẽ giảm cái advance đó lại (20). Và bên mình dc giữ lại 10% giá trị hạng mục để nghiệm thu khi hoàn thành công trình (10). Kết quả dẫn đến mình ghi Có như trên.

Câu hỏi là những nghiệp vụ này, có cách nào để ghi vào nhật ký chung dạng tài khoản đối ứng không. Vì trường hợp 1 đối ứng 2, 1 đối ứng 3... thì mình có thể viết được. Riêng những case 2 đối ứng 3, 2 đối ứng 4...này mình pó tay, hic.

Từ case trên, viết theo dạng đối ứng sẽ là:
Dedit CIP 70 Credit Payable 70
Debit VAT 10 Credit Payable 10
Debit CIP 20 Credit Advance to suppliers 20
Debit CIP 10 Credit Deposit 10

Mong các bạn giúp đở ( Sr mình vừa up thêm file excel)
Bài nầy dùng hàm Excel rất lằng nhằng, dùng code VBA cũng rối
Vị trí cột và dòng phải đúng với file thực mới viết code chuẩn, thứ tự cột có đúng thực tế ?
 
Nói chung dạng bài này chắc phải làm manual thôi. Mình cũng có theo dõi vài trường hợp như mình trước đây trên diễn đàn nhưng cũng k có đáp án. Thuộc về logic thì excel có thể, nhưng tư duy định khoản thì excel không thể làm được. Chắc vậy rồi.

Thank all
 
Nói chung dạng bài này chắc phải làm manual thôi. Mình cũng có theo dõi vài trường hợp như mình trước đây trên diễn đàn nhưng cũng k có đáp án. Thuộc về logic thì excel có thể, nhưng tư duy định khoản thì excel không thể làm được. Chắc vậy rồi.

Thank all
Khà Khà, không gì là không thể
 
Nói chung là thấy nan giải rồi! Tiêu đề ....(Nan giải) mà :vava:
 
Thật là nan giải !
 
Nói chung là thấy nan giải rồi! Tiêu đề ....(Nan giải) mà :vava:
Bài nầy không khó lắm, chỉ dựa vào các con số cũng đúng ít nhất 95% nội dung định khoản, nếu có dữ liệu nhiều kỳ, viết code theo cách "code bắt chước định khoản" khả năng đúng 100% rất cao
 
Bài nầy không khó lắm, chỉ dựa vào các con số cũng đúng ít nhất 95% nội dung định khoản, nếu có dữ liệu nhiều kỳ, viết code theo cách "code bắt chước định khoản" khả năng đúng 100% rất cao
Anh có thể cho em tham khảo đoạn code dạng này được không ạ
 
Định khoản cũng có quy luật. Cho nên không khó, cái khó ở đây là nằm ở con người...:D:D:D
Em "ERP" nầy đã không tuân thủ quy luật cơ bản của định khoản rồi, làm cho quan hệ của các table là nhiều - nhiều, các quy luật khác cũng có thể khác thường khó đoán
Bài đã được tự động gộp:

Anh có thể cho em tham khảo đoạn code dạng này được không ạ
Code dựa vào các con số
Anh có thể cho em tham khảo đoạn code dạng này được không ạ
Gởi trong hộp thư
 
Định khoản kế toán đại loại chỉ có 3 dạng cơ bản sau:
1. Một Nợ, nhiều Có
2. Một Có, nhiều Nợ
3. Nhiều Nợ, Nhiều Có

Cái đáng quan tâm ở đây là mục 3. Nhiêu Nợ, Nhiều Có -> Các phần mềm kế toán khi lập trình và lưu dữ liệu bắt buộc phải bắt người dùng định nghĩa 1 trường (tạm gọi là K). Trường này dùng để nhận biết Nợ nào đối ứng với có nào... có như thế khi lên báo cáo đối ứng (chi tiết khoản mục) mới biết được đối ứng.
Bài đã được tự động gộp:


Post luôn lên đây đi anh. Coi như chủ thớt không quan tâm thì anh em mình sô lô để hiểu thêm...
Theo chuẩn mực, 1 định khoản nhiều nợ nhiều có sẽ tách thành 2 định khoản 1 nợ nhiều có hoặc nhiều nợ 1 có, và các phần mềm không nên cho phép nhập nhiều nợ nhiều có, vấn đề sẽ không nhập nhằng dể gây nhầm lẫn
 
Định khoản kế toán đại loại chỉ có 3 dạng cơ bản sau:
1. Một Nợ, nhiều Có
2. Một Có, nhiều Nợ
3. Nhiều Nợ, Nhiều Có

Cái đáng quan tâm ở đây là mục 3. Nhiêu Nợ, Nhiều Có -> Các phần mềm kế toán khi lập trình và lưu dữ liệu bắt buộc phải bắt người dùng định nghĩa 1 trường (tạm gọi là K). Trường này dùng để nhận biết Nợ nào đối ứng với có nào... có như thế khi lên báo cáo đối ứng (chi tiết khoản mục) mới biết được đối ứng.
Bài đã được tự động gộp:


Post luôn lên đây đi anh. Coi như chủ thớt không quan tâm thì anh em mình sô lô để hiểu thêm...
Có thể chưa đúng hoàn toàn nội dung đốu ứng tài khoản
Mã:
Sub NKC()
  Dim sArr(), noArr(), coArr(), Res()
  Dim i As Long, k As Long, noK As Long, coK As Long, n As Long, c As Long
  Dim st As Double
  Dim iCode
  Const shName = "Sheet1"
 
  With Sheets(shName)
    sArr = .Range("B4:E" & .Range("B" & Rows.Count).End(xlUp).Row + 1).Value
  End With

  ReDim Res(1 To UBound(sArr), 1 To 4)
  ReDim noArr(1 To 20, 1 To 3)
  ReDim coArr(1 To 20, 1 To 3)
  For i = 1 To UBound(sArr) - 1
    If sArr(i, 3) > 0 Then
      noK = noK + 1
      noArr(noK, 1) = noK
      noArr(noK, 2) = sArr(i, 2)
      noArr(noK, 3) = sArr(i, 3)
    Else
      coK = coK + 1
      coArr(coK, 1) = coK
      coArr(coK, 2) = sArr(i, 2)
      coArr(coK, 3) = sArr(i, 4)
    End If
    If sArr(i, 1) <> sArr(i + 1, 1) Then
      noArr = SortArr(noArr, noK)
      coArr = SortArr(coArr, coK)
      iCode = sArr(i, 1)
      
      For n = 1 To noK
        st = noArr(n, 3)
        For c = coK To 1 Step -1
          If coArr(c, 3) > 0 Then
            k = k + 1
            Res(k, 1) = iCode
            Res(k, 2) = noArr(n, 2)
            Res(k, 3) = coArr(c, 2)
            If st >= coArr(c, 3) Then
              Res(k, 4) = coArr(c, 3)
              coArr(c, 3) = 0
              st = st - Res(k, 4)
            Else
              Res(k, 4) = st
              coArr(c, 3) = coArr(c, 3) - st
              st = 0
            End If
          End If
          If st = 0 Then Exit For
        Next c
      Next n
      noK = 0: coK = 0
    End If
  Next i
  Sheets(shName).Range("H4:K4").Resize(k) = Res
End Sub

Private Function SortArr(ByVal Arr As Variant, ByVal sR As Long) As Variant
  Dim Res(), tmp()
  Dim i As Long, n As Long, m As Long, j As Byte
  Dim st As Double
  ReDim tmp(1 To UBound(Arr, 2))
 
  For i = 2 To sR
    st = Arr(i, 3)
    For n = 1 To i - 1
      If st > Arr(n, 3) Then
        For j = 1 To UBound(Arr, 2)
          tmp(j) = Arr(i, j)
        Next j
        For m = n + 1 To i
          For j = 1 To UBound(Arr, 2)
            Arr(m, j) = Arr(m - 1, j)
          Next j
        Next m
        For j = 1 To UBound(Arr, 2)
          Arr(n, j) = tmp(j)
        Next j
      End If
    Next n
  Next i
  SortArr = Arr
End Function
Dự định xét bên có số định khoản ít, chứ không phải cố định bên nợ, thấy dài quá nên bỏ qua
 
Đồng ý là phải tách thành nhiều định khoản. Nhưng người dùng lại thích làm vào 1 màn hình (1 số chứng từ , hay 1 bút toán). Nên mới sinh ra cái trường để phân biệt Nợ nào <-> đối ứng với Có nào.

Ví dụ trên một màn hình định khoản, người dùng muốn định khoản thì phải tách như vậy...
Tổ chức chứng từ chuẩn thì không có trường hợp 1 chứng từ định khoản được nhiều - nhiều
 
Web KT

Bài viết mới nhất

Back
Top Bottom