30/09/2018, 19:03

Làm thế nào để chọn công thức ngẫu nhiên lấy từ stored procedure hoặc mẫu công thức để tự tính toán?

Mình đang làm 1 phần mềm tính tiền.
Cũng bấy nhiêu đó trường dữ liệu, nhưng người thì
giá sản phẩm + khuyến mãi*20% + (vat+10k)
người thì
giá sản phẩm + khuyến mãi + vat,
nói chung có 100 người là 100 kiểu khác nhau.

Cũng có trường hợp nhiều trường dữ liệu khác nhau như: lương + thưởng tháng hay lương + hưu + tiền thưởng tháng.

Rất nhiều người như z. Mà chỉnh sửa khác nhau tí.

Mình muốn đơn giản như thế này:

Nghĩa là người dùng chọn 1 stored procedured để tính theo phần đó.
Hoặc tự nhập công thức với các quy định trường sẵn như pr là Giá/1 sản phẩm. Cus là khách hàng.
Thì nhấn áp dụng là sẽ tính theo công thức như ý của họ.

Cảm ơn mọi người rất nhiều.

vũ xuân quân viết 21:04 ngày 30/09/2018

Sao em không tạo ra 1 drop down list, cho chọn cách tính.
Mỗi lần mình chọn cách tính thì lấy những giá trị đó ra tính với những công thức tương ứng.

r0ysy0301 viết 21:11 ngày 30/09/2018

Ý anh là đưa ra dropdown list dạng như:

  • Tính lương nhân viên.
  • Tính lương nhân viên với thưởng.

Nhưng quan trọng làm sao thay thông số vô stored procedure như thế nào em không biết.
Anh có thể share 1 đoạn code ví dụ được không?

Với lại em định cái combobox trên kia chọn những mục phổ biến thôi.

Còn cái nào người dùng họ thấy không có trong đó thì họ nhập công thức tùy họ.
Mấy cái label trên kia là hướng dẫn họ nhập những trường đó tương ứng với tên trường ngoài thực tế.

Phạm Hoàng Tuấn viết 21:10 ngày 30/09/2018

Nhưng quan trọng làm sao thay thông số vô stored procedure như thế nào em không biết.Anh có thể share 1 đoạn code ví dụ được không?

SqlCommand scCommand = new SqlCommand("usp_CheckEmailMobile", sqlCon);
scCommand.CommandType = CommandType.StoredProcedure;
scCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = txtName.Text;
scCommand.Parameters.Add("@Email", SqlDbType.NVarChar, 50).Value = txtEmailAddress.Text;
scCommand.Parameters.Add("@Password ", SqlDbType.NVarChar, 50).Value = txtPassword.Text;
scCommand.Parameters.Add("@CountryCode", SqlDbType.VarChar.50).Value =ddlCountryCode.SelectedText;
scCommand.Parameters.Add("@Mobile", SqlDbType.NVarChar, 50).Value = txtMobileNumber.Text;
scCommand.Parameters.Add("@Result ", SqlDbType.Bit).Direction = ParameterDirection.Output;
try
{
    if (scCommand.Connection.State == ConnectionState.Closed)
    {
        scCommand.Connection.Open();
    }
    scCommand.ExecuteNonQuery();
    result = Convert.ToBoolean(scCommand.Parameters["@Result"].Value);


}
catch (Exception)
{

}
finally
{                
    scCommand.Connection.Close();
    Response.Write(result); 
}
r0ysy0301 viết 21:04 ngày 30/09/2018

Cảm ơn bạn @tuancoi2506, chỗ đó mình hiểu rồi.

Nhưng mà có cách nào để add khung công thức như trên hình không bạn?

Nếu áp dụng như dropdown list thì nó không tùy biến được. Vì mỗi công thức mỗi khác.

Cái dropdown list mình đang nghĩ là nó hiện ra 1 danh sách chọn.
Khi mình chọn thì những label usr: User, … do mình tự định nghĩa sẽ hiện ra.
Ý là người dùng chỉ có thể thêm công thức trong những trường đó.

Họ muốn tùy biến như thế nào thì nhập công thức ±*/ vào trong ô formula là nó sẽ thực thi theo công thức đó.
@masoivn, em hiểu như thế không biết đúng không. Vì lúc anh nói em cũng không rõ lắm.

vũ xuân quân viết 21:19 ngày 30/09/2018

Cho người ta nhập giá trị, nhập filed, nhập công thức để tự xử lý thì mình khó xử lý lắm. Anh chưa làm bao giờ nên không giải quyết được.
Giờ chỉ ngồi liệt kê trường hợp ra. Cái nào giống thì mình gom lại thành 1 nhóm.

Khánh Hưng Nguyễn viết 21:07 ngày 30/09/2018

Bạn phải làm Base cho cách tính giá này chứ không phải ai theo người đó được.

Còn nếu loạn quá thì tạo 1 BOM về tính salary với các thông số là động.

Chẳng hạn có 2 cách :
Cách 1 ) Bảng tĩnh :
I. Table SalaryCalculation

  1. ID - Identity
  2. PriceIndex - Decimal (giá sản phẩm)
  3. QtyIndex - Decimal ( trần về số lượng)
  4. VATIndex - Decimal (VAT %)
  5. VATFixAmount - Decimal (AMT VAT cố định)
  6. DiscountIndex - Decimal (Discount %)
  7. DiscountFixAmount - Decimal ( AMT Discount cố định )
  8. OtherIndex - Decimal
  9. OtherFixAmount - Decimal

Cách 2 ) Bảng động :
I. Table SalaryCalculation

  1. ID - Identity (Primary Key)
  2. Seq (Primary Key)
  3. IDIndex (Foreign Key)
    II. Table Calculation
  4. IDIndex (Primary Key)
  5. Name - nvarchar …
  6. Type - (%, Fix, Qty Base …)

Sau đó tạo 1 Store Produce tương ứng với cái table SalaryCalculation là xong.

Hình ảnh ví dụ của mình khi làm module discount trong vận hành Sales :

r0ysy0301 viết 21:19 ngày 30/09/2018

Còn 1 cái nữa là. Ví dụ cách tính tiền bãi xe quản lý. Nếu từ 5h-6h thì bao nhiêu tiền, qua giờ đó thì giá nó lại khác.
Lúc có điều kiện vô thì phải giải quyết ntn bạn?

Khánh Hưng Nguyễn viết 21:12 ngày 30/09/2018

Cái bạn nói cũng là BOM luôn.

BOM Giá Giữ Xe

  • Thời gian ( < 6h, 6-10h, > 10h …)
  • Điều kiện ( mua hàng, không mua hàng …)
  • Giá ( 5000, 10000, …)

Thiết lập thời điểm vào và thời điểm ra từ server. Sau đó, xác nhận thời gian giữ xe.
Căn cứ vào BOM giá giữ xe để cho ra số tiền cần lấy.

r0ysy0301 viết 21:16 ngày 30/09/2018

BOM

Bạn có cái demo nhỏ nào hoặc 1 phần trong phần mềm của bạn được không?

Bài liên quan
0