00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _SECTION_H_
00031 #define _SECTION_H_
00032
00033
00034
00035
00036 #include <string>
00037 #include <utility>
00038
00039
00040 #include "osbid.h"
00041
00042 #include "contract.h"
00043 #include "persproduct.h"
00044 #include "product.h"
00045 #include "chargetraits.h"
00046
00047
00048
00049 namespace OSB_LIB {
00050 class OsbXml;
00051 }
00052
00053
00054
00055 namespace OSB_LIB {
00056
00057
00058
00059 enum SectionType {
00060 notSet = 0,
00061 subsCharges = 100,
00062 oneTimeCharges = 200,
00063 international = 1000,
00064 totalInternational = 1100,
00065 national = 2000,
00066 totalNational = 2100,
00067 localcall = 3000,
00068 totalLocal = 3100,
00069 productTotal = 1200
00070 };
00071
00072
00073
00074 class Section {
00075 friend class BillingXml;
00076 friend class SumCdr01BillingXml;
00077 public:
00078 Section(PersProduct::UserId productUserId,
00079 PersProduct::Oid persProductId,
00080 ProductNode::Oid productNodeId,
00081 SectionType sectionPart)
00082 : productUserId_(productUserId),
00083 persProductId_(persProductId),
00084 productNodeId_(productNodeId),
00085 sectionPart_(sectionPart) {}
00086
00087 std::string str() const;
00088 bool operator==(const Section&) const;
00089 bool operator!=(const Section&) const;
00090 bool operator< (const Section&) const;
00091 bool operator> (const Section&) const;
00092 bool operator<=(const Section&) const;
00093 bool operator>=(const Section&) const;
00094
00095
00096
00097
00098 int compare(const Section& rhs) const;
00099
00100
00101
00102
00103
00104 std::string getName(const SectionType&) const;
00105
00106
00107
00108
00109 static const Section& globalSection();
00110
00111
00112 static const PersProduct::UserId NO_PROD_USER;
00113 static const PersProduct::Oid NO_PERS_PROD;
00114 static const ProductNode::Oid NO_PROD_NODE;
00115 static const SectionType NO_SECTION_PART;
00116
00117 private:
00118 PersProduct::UserId productUserId_;
00119 PersProduct::Oid persProductId_;
00120 ProductNode::Oid productNodeId_;
00121 SectionType sectionPart_;
00122 };
00123 }
00124 #endif // #ifndef _SECTION_H_