EGYADMIN's picture
Upload 70 files
d9e7bdd verified
"""
استراتيجية التسعير المتوازن
"""
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