Chương Trình Quản Lý Kho Vật Tư (phụ Tùng)

Liên hệ QC
nhưng công thức bị sai vì không có điều kiện về ngày tháng (từ ngày....đến....?)
Có điều kiện về ngày mà, làm theo cách của Bác Tuân, số tồn đầu năm đưa vào trong sh Data, với ngày là 31/12/2006 và số CT là PN0000
Với lại phần số tồn đầu năm nên đưa vào 1 sh TonKhoDauKy thì hay hơn. Tính tồn theo hàng tháng.
Ngày....SoPhieu....MaPT...SL...GT
For i = 2 To HC + 1
If .Range("B" & i).Value >= NgayDau And .Range("B" & i).Value <= NgayCuoi Then
If Left(.Range("A" & i).Value, 2) = "PN" Then
.Range("D" & i) = S104.Range("K" & i)
.Range("F" & i) = S104.Range("M" & i)
Else
.Range("E" & i) = S104.Range("K" & i)
.Range("G" & i) = S104.Range("M" & i)
End If
ElseIf .Range("B" & i).Value < NgayDau Then
If Left(.Range("A" & i).Value, 2) = "PN" Then
.Range("H" & i) = S104.Range("K" & i)
.Range("I" & i) = S104.Range("M" & i)
Else
.Range("H" & i) = -S104.Range("K" & i)
.Range("I" & i) = -S104.Range("M" & i)
End If
End If
Next i
 

File đính kèm

  • Quan ly kho phu tung (Ver02)24-10-07_Tuan_Edit.rar
    288.9 KB · Đọc: 1,848
Lần chỉnh sửa cuối:
Hoá ra có đoạn tính tồn đầu ở vòng lặp For..Next mà mình không nhìn thấy.

Tuỳ vào mục đích cụ thể, có những báo cáo thì tồn đầu năm hay đầu tháng là bất dịch, nhưng nhiều báo cáo cũng như cách làm chung thì người ta hay làm thế này:

Tồn đầu kỳ < D1
D1 <= Phát sinh <= D2

D1, D2 là hai giá trị ngày xác định khoảng thời gian, như thế thì chỉ têu "Tồn đầu kỳ" cũng như "Phát sinh" không phải giữ nguyên/cố định là một tháng hay một năm nữa mà nó sẽ "động đậy". Chính vì lý do đó mà đoạn công thức của ThuNghi dưới đây chưa đảm bảo được sự "động đậy" đó?
Mã:
        .Range("G9:G" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,SLTonDau)"
        .Range("H9:H" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,GTTonDau)"
        .Range("I9:I" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,SLNhap)"
        .Range("J9:J" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,GTNhap)"
        .Range("K9:K" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,SLXuat)"
        .Range("L9:L" & i).FormulaR1C1 = "=SUMIF(MaHang,RC2,GTXuat)"
 
Tồn đầu kỳ < D1
D1 <= Phát sinh <= D2

D1, D2 là hai giá trị ngày xác định khoảng thời gian, như thế thì chỉ têu "Tồn đầu kỳ" cũng như "Phát sinh" không phải giữ nguyên/cố định là một tháng hay một năm nữa mà nó sẽ "động đậy". Chính vì lý do đó mà đoạn công thức của ThuNghi dưới đây chưa đảm bảo được sự "động đậy" đó?
Có thể cụ thể hơn?
SLTonDau, GTTonDau... sẽ được tạo lại khi D1 và D2 thay đổi mà.
Đúng ra nếu có sh TonKhoDauKy thì khi ta tính NXT sẽ lấy SL và GT tồn kho của tháng = Month(D1)-1, và chỉ lấy dữ dữ liệu từ ngày 1 của Month(D1) cho đến D2. Như vậy số DL xửa lý sẽ ít hơn. Nhưng hiện tại chưa hình dung ra.
 
ThuNghi đã viết:
Có thể cụ thể hơn?
SLTonDau, GTTonDau... sẽ được tạo lại khi D1 và D2 thay đổi mà.
Đúng ra nếu có sh TonKhoDauKy thì khi ta tính NXT sẽ lấy SL và GT tồn kho của tháng = Month(D1)-1, và chỉ lấy dữ dữ liệu từ ngày 1 của Month(D1) cho đến D2. Như vậy số DL xửa lý sẽ ít hơn. Nhưng hiện tại chưa hình dung ra.

Là như thế này bác ạ.
Từ bảng TH NXT , người ta muốn xem trong khoảng thời gian từ ngày 05/10/07 (D1) đến 22/10/07 (D2). Như yêu cầu trên thì các dữ kiện nhập và xuất trước ngày 05 sẽ tính là dư đầu kỳ ...

Dùn hàm SUMIF thì tốc độ nhanh nhưng bị giới hạn về số lượng điều kiện, vẫn có cách làm được khi dữ liệu gốc ta tạo thêm cột phụ, như thế sẽ hơi phức tạp.
 
Về hàm Sumif và hàm Sumproduct thì đã có rất nhiều bài để so sánh 2 hàm này. Cái yếu của hàm này chính là thế mạnh của hàm kia

Quả thực về tốc độ thì sumproduct không thể bì được với SUMIF về tốc độ, tuy nhiên về việc không dùng cột phụ và đặc biệt là việc linh hoạt về tổng hợp các chỉ tiêu theo nhiều điều kiện khác nhau thì SUMIF không thể bì được.

Vì vậy việc cân nhắc giữa hai hàm này nên tùy vào các TH cụ thể.
Trong TH này thì em vẫn thích dùng SUMPRODUCT hơn vì :
  1. Không làm rối CSDL
  2. Có thể tăng thêm các ĐK xử lý mà không ảnh hưởng gì
  3. Nếu có tăng thêm các nhu cầu quản lý (ở BÁO CÁO -->>DATA) thì khi đó ta lại phải vất vả với SUMIF (Có khoảng 10 báo cáo kiểu đó thì khi đó dùng sumif cũng . . . hơi mệt)
Cái quan trọng là ta phải nghĩ cách tính toán làm sao để nhanh hơn thôi (VD như Bác Tuân đã đưa ra một ý tưởng hay).

Còn việc về sô dư đầu kỳ, em thích cách của em (và bác Tuân) hơn, cho cả vào Data. Vì số dư đầu kỳ , số lũy kế kỳ trước, số phát sinh, số lũy kế đến kỳ luôn động nên giải pháp dúng Sh temp để chứa số liệu như bác ThuNghi rất khó khăn.
Việc ngày tháng thì bất kể, có thể 13/12/2006 -->> 14/05/2007
Nhu vậy thì tốt nhất là cho vào trong DATA, chứ nếu cho vào Sh riêng thì . . khó cho nhau quá.


Tất nhiên mỗi người một quan điểm và thói quen.
Đây chỉ là cách nghĩ của em, còn các bác có thể khác, vậy thì . . . mọi người cứ đi trên con đường được cho là đúng.

Mấy lời thiển cận!
Thân!
 
Thông thường thì mình vẫn dùng chứng từ có kiểu (transaction type) là OB (Opening Balance) làm chứng từ số dư đầu kỳ. Số dư đầu kỳ chia làm 2 loại, 1 loại là manual - tự nhập - thường nhập lần đầu khi áp dụng chương trình và một loại là các số dư do thực hiện các giao dịch chuyển kỳ (số dư đầu kỳ này = số dư cuối kỳ trước). Việc tách số dư đầu kỳ ra nhằm 2 lý do sau đây:

- Thứ nhất: Kỳ (accounting period) có thể được định nghĩa theo đặc thù của DN. Kỳ kế toán sẽ được assigned vào chứng từ loại OpeningBalance. Thông thường kỳ kế toán ở VN là tháng (Quý thì là gộp 3 tháng thôi). Ở các phần mềm nước ngoài có tính mở như SAP thì có thể lên tới 15 kỳ trong 1 năm tài chính. Và một năm tài chính thì có thể bắt đầu từ giữa năm hoặc đầu năm (Dependance Year hoặc Independance Year). 99% các phần mềm kế toán trong nước và 1 số phần mềm kế toán của nước ngoài đều ko thể "vượt biên ra biển khơi" cũng là do cái chuyện có thể định nghĩa kỳ kế toán kiểu này được. Đọc cái SAP Show training về cái SAP mà anh Duyệt đang dùng thì thấy riêng vụ Fiscal Year và Accounting Period nó mất ~20 trang rồi.
- Thứ 2: Trong cái rừng "Data" (GL hay sổ JournalList gì đó của các bác) thì để lấy cái số dư đầu kỳ ắt hẳn phải chậm hơn lấy từ bảng OpeningBalance kia. Việc tính số dư của các kỳ kế tiếp cho ta giải pháp về tốc độ. Thế nên, trong CSDL, có một phương pháp gọi là phi chuẩn hóa CSDL chủ yếu để tạo tốc độ mà thôi.

Sau khi có số dư của từng kỳ, việc làm báo cáo từ ngày, đến ngày kiểu "13/12/2006" (D1) --> "14/05/2007" (D2) là cực đơn giản. Chẳng thấy gặp khó khăn gì cả.
...
{
Balance1 = getBalance(D1)
Dr(D1, D2) = getDR(D1, D2) '// Phat sinh tang trong ky: D1 -> D2
Cr(D1, D2) = getCR(D1, D2) '// Phat sinh giam trong ky: D1 -> D2
Balance2 = Balance1 + Dr(D1, D2) - Cr(D1, D2)
}
...

getBalance(D1)
'// Get balance at D1
{
OB = getOB(D1)
D0 = FirstDayofPeriod(D1)
Dr(D0, D1) = getDR(D0, D1) '// Phat sinh tang trong ky: D0 -> D1
Cr(D0, D1) = getCR(D0, D1) '// Phat sinh giam trong ky: D0 -> D1
getBalance = OB + Dr(D0, D1) - Cr(D0, D1)
}

Đại khái thế, còn đối tượng để getBalance, getDR, getCR thì có thể là Account, InventoryItem, BusinessObject (Customer, Supplier, Employee,...), có thể theo một số điều kiện liên quan như (ByWarehouseID, By....)

Tùy từng tính chất đối tượng mà ta có thể sử dụng (+) hay (-) trong công thức getBalance ở trên. (thêm parameters cho các methods nói trên)
 
Lần chỉnh sửa cuối:
Hôm nay mới thấy có bác Duyệt đọc món này và ủng hộ em :D. Chắc là do em lúc nào cũng nhắc tới món SAP của bác. Vả lại, do em viết tắt nhiều quá nên ko được phù hợp với các độc giả của diễn đàn cho lắm (mặc dù em đã phải edit lại tới 5 lần).

Bác Duyệt thử làm món này trong phần mềm quản lý kho của bác đi. Theo em đó là 1 cách khá nhanh đấy. Đặc biệt nếu các tables mà bác đều link với nhau qua ID có kiểu Long thì phải nói là cực nhanh. KH của em 1 ngày bán 1200 chứng từ bán lẻ mà vẫn tính số dư theo thời điểm tức thì ngay trên chứng từ đấy (quẹt cái ra ngay).
 
Lần chỉnh sửa cuối:
smbsolutions đã viết:
Hôm nay mới thấy có bác Duyệt đọc món này và ủng hộ em :D. Chắc là do em lúc nào cũng nhắc tới món SAP của bác. Vả lại, do em viết tắt nhiều quá nên ko được phù hợp với các độc giả của diễn đàn cho lắm (mặc dù em đã phải edit lại tới 5 lần).

Bác Duyệt thử làm món này trong phần mềm quản lý kho của bác đi. Theo em đó là 1 cách khá nhanh đấy. Đặc biệt nếu các tables mà bác đều link với nhau qua ID có kiểu Long thì phải nói là cực nhanh. KH của em 1 ngày bán 1200 chứng từ bán lẻ mà vẫn tính số dư theo thời điểm tức thì ngay trên chứng từ đấy (quẹt cái ra ngay).

Không phải là không ủng hộ bác. Chẳng qua là đọc thì hiểu, về vấn đề quản lý cũng thừa hiểu, tuy nhiên trình độ của tụi em lại chưa thể làm như thế được.
Vậy nên đành đứng ở xa gạt nước mắt mà nhìn thôi!!

Híc híc!!

Thân!
 
smbsolutions đã viết:
Bác Duyệt thử làm món này trong phần mềm quản lý kho của bác đi. Theo em đó là 1 cách khá nhanh đấy. Đặc biệt nếu các tables mà bác đều link với nhau qua ID có kiểu Long thì phải nói là cực nhanh. KH của em 1 ngày bán 1200 chứng từ bán lẻ mà vẫn tính số dư theo thời điểm tức thì ngay trên chứng từ đấy (quẹt cái ra ngay).
Đọc cái của smbsolutions thì tuyệt rồi, nhưng khổ nổi cũng phải nghiền ngẫm nhiều &&&%$R

Cái vụ này, smbsolutions nói sơ sơ, không có ví dụ thì mình cũng phải bó tay. Vì mình tự học mà.
Không biết chừng nào mình mới được 1/4 của smbsolutions. --=--

Lê Văn Duyệt
 
Mình thấy chương trình rất tuyệt giao diện Ok, còn một số tính năng đang hoàn thiện như chưa Xóa , Sữa mã ....
Hy vọng các bạn hoàn thiện sớm để chúng ta cùng nghiên cứu .
Với lại chương trình post lên để tham khảo các bạn nên đưa dữ liệu ít thôi
bạn đưa dữ liệu vào nhiều quá sẽ làm mọi người sẽ rối và khó khăn trong việc nghiên cứu.
Mình mới tham gia forum nên kinh nghiệm còn ít hy vọng học hỏi thêm từ các bạn. :p
 
Mình thấy khi nhập - xuất không nhập được số lượng 0,5 chẳng hạn... C
 
phần mềm quản lý kho

chào các bạn
cho mình hỏi phần mềm này xóa dữ liệu bằng cách nào?vì công ty mình sử dụng mặt hàng khác, vật tư khác?
cảm ơn các bạn và người đã viết ra phần mềm này, và các bạn bổ sung rất nhiều
 
không biết tác giả còn mặn mà với PM này không?
 
Chủ thớt đâu rồi nhỉ, mình cũng đang cần phần mềm quản lý kho vật tư nhưng không tìm được. Kho của mình có khoảng 1500 loại mặt hàng, không thể theo dõi được.
chủ thớt có thẻ xây dựng giúp mình phần mềm quản lý được không

Cam ơn
 
Lần chỉnh sửa cuối:
Mình làm bên nội thất.Muốn up hình ảnh của sản phẩm , hay nói cách khác là quản lý sản phẩm bằng hình ảnh.Bạn có cách nào ko?
 
Mình làm bên nội thất.Muốn up hình ảnh của sản phẩm , hay nói cách khác là quản lý sản phẩm bằng hình ảnh.Bạn có cách nào ko?

Bạn muốn up hình ảnh lên đâu? Nếu quản lý hình ảnh thì mình
nghĩ chia theo đầu mục của sản phẩm thì sẽ dễ quản lý hơn
 
tài về xem thế nào, ai dè chẳng thấy gi cả, thế may bực
 
xin các ace cho mình hỏi làm sao mà xuất số lượng lớn trong quản lý kho vật tư
vd: tồn 5.000 khi xuất 2.000 mà lại xuất 5.000 luôn
các bạn ơi giúp mình với
 
Lần chỉnh sửa cuối:
Nếu có chương trình quản lý khách hàng thì chia sẻ em với :(
 
Web KT
Back
Top Bottom