|
|
|
""" |
|
استراتيجية التسعير المتوازن |
|
""" |
|
import streamlit as st |
|
import pandas as pd |
|
|
|
def render_balanced_strategy(): |
|
st.markdown("### التسعير المتوازن") |
|
|
|
strategies = [ |
|
"التسعير القياسي", |
|
"التسعير المتزن", |
|
"التسعير غير المتزن", |
|
"التسعير الموجه للربحية", |
|
"التسعير بالتجميع", |
|
"التسعير بالمحتوى المحلي" |
|
] |
|
|
|
selected_strategy = st.selectbox( |
|
"اختر استراتيجية التسعير", |
|
strategies |
|
) |
|
|
|
|
|
if 'current_project' not in st.session_state: |
|
st.warning("يرجى اختيار مشروع أولاً") |
|
return |
|
|
|
project = st.session_state.current_project |
|
if not project: |
|
st.info("لم يتم اختيار مشروع بعد. يرجى إدخال بيانات المشروع أولاً.") |
|
return |
|
|
|
boq_items = project.get('boq_items', []) |
|
|
|
if not boq_items: |
|
st.info("لا توجد بنود مضافة للمشروع بعد. يرجى إضافة البنود أولاً.") |
|
return |
|
|
|
|
|
st.markdown("#### تحليل بنود المشروع") |
|
|
|
for i, item in enumerate(boq_items): |
|
with st.expander(f"البند {i+1}: {item['description']}"): |
|
col1, col2 = st.columns(2) |
|
|
|
with col1: |
|
st.write("معلومات البند:") |
|
st.write(f"- الكود: {item['code']}") |
|
st.write(f"- الوحدة: {item['unit']}") |
|
st.write(f"- الكمية: {item['quantity']}") |
|
st.write(f"- سعر الوحدة: {item['unit_price']} ريال") |
|
|
|
with col2: |
|
st.write("تحليل التكاليف:") |
|
|
|
|
|
new_unit_price = st.number_input( |
|
"سعر الوحدة الجديد", |
|
min_value=0.0, |
|
value=float(item['unit_price']), |
|
key=f"unit_price_{selected_strategy}_{i}" |
|
) |
|
|
|
|
|
new_quantity = st.number_input( |
|
"الكمية الجديدة", |
|
min_value=0.0, |
|
value=float(item['quantity']), |
|
key=f"quantity_{selected_strategy}_{i}" |
|
) |
|
|
|
|
|
if st.button("تحديث البند", key=f"update_{selected_strategy}_{i}"): |
|
item['unit_price'] = new_unit_price |
|
item['quantity'] = new_quantity |
|
item['total_price'] = new_unit_price * new_quantity |
|
st.success("تم تحديث البند بنجاح") |
|
st.rerun() |
|
|
|
|
|
if st.button("حذف البند", key=f"delete_{selected_strategy}_{i}"): |
|
st.session_state.current_project['boq_items'].pop(i) |
|
st.success("تم حذف البند بنجاح") |
|
st.rerun() |
|
|
|
def calculate_balanced_price(base_cost, overhead_ratio=0.15, profit_ratio=0.10): |
|
"""حساب السعر المتوازن""" |
|
overhead = base_cost * overhead_ratio |
|
profit = base_cost * profit_ratio |
|
return base_cost + overhead + profit |
|
|