File size: 3,631 Bytes
d9e7bdd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

"""
استراتيجية التسعير المتوازن
"""
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