rislai
2024-08-16 bcd7eb876bff759f6aef96f1014b0bca7a3322ff
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载财务报表数据'
  TextBody:
  [*
    
    table := selectobject( macroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
    
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
    
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    //Product
    productcolumnelement := xmlDOM.CreateElement( "column" );
    productnameelement   := xmlDOM.CreateElement( "name" );
    producttypeelement   := xmlDOM.CreateElement( "type" );
    productnameelement.TextContent( 'Product' );
    producttypeelement.TextContent( "String" );
    productcolumnelement.AppendChild( productnameelement );
    productcolumnelement.AppendChild( producttypeelement );
    //Attribute
    attricolumnelement := xmlDOM.CreateElement( "column" );
    attrinameelement   := xmlDOM.CreateElement( "name" );
    attritypeelement   := xmlDOM.CreateElement( "type" );
    attrinameelement.TextContent( 'Attribute' );
    attritypeelement.TextContent( "String" );
    attricolumnelement.AppendChild( attrinameelement );
    attricolumnelement.AppendChild( attritypeelement );
    
    tableElement.AppendChild( productcolumnelement ); 
    tableElement.AppendChild( attricolumnelement );
    traverse ( table, Column, column ) {
      columnelement := xmlDOM.CreateElement( "column" );
      nameelement   := xmlDOM.CreateElement( "name" );
      typeelement   := xmlDOM.CreateElement( "type" );
      nameelement.TextContent( column.Name() );
      typeelement.TextContent( "String" );
      columnelement.AppendChild( nameelement );
      columnelement.AppendChild( typeelement );
      
      cells := selectsortedset( column, Cell, cell, cell.Row().RowNr() );
    
      traverse ( cells, Elements, c ) {
        if( column.Index() = 0 ){
          row := c.Row();
          //Product
          product1cellElement := xmlDOM.CreateElement( "cell" );
          product1cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product1cellElement );
          
          product2cellElement := xmlDOM.CreateElement( "cell" );
          product2cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product2cellElement );
          
          product3cellElement := xmlDOM.CreateElement( "cell" );
          product3cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product3cellElement );
          
          product4cellElement := xmlDOM.CreateElement( "cell" );
          product4cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product4cellElement );
          
          product5cellElement := xmlDOM.CreateElement( "cell" );
          product5cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product5cellElement );
          
          product6cellElement := xmlDOM.CreateElement( "cell" );
          product6cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product6cellElement );
          
          product7cellElement := xmlDOM.CreateElement( "cell" );
          product7cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product7cellElement );
          
          product8cellElement := xmlDOM.CreateElement( "cell" );
          product8cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product8cellElement );
          
          product9cellElement := xmlDOM.CreateElement( "cell" );
          product9cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product9cellElement );
          
          product10cellElement := xmlDOM.CreateElement( "cell" );
          product10cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product10cellElement );
          
          product11cellElement := xmlDOM.CreateElement( "cell" );
          product11cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product11cellElement );
          
          product12cellElement := xmlDOM.CreateElement( "cell" );
          product12cellElement.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( product12cellElement );
          //Attribute
          //长春外租库入库费用
          ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
          ccrententercostcellElement.SetAttribute( "value", 'CCRentEnterCost' );
          attricolumnelement.AppendChild( ccrententercostcellElement );
          //长春外租库出库费用
          ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
          ccrentoutcostcellElement.SetAttribute( "value", 'CCRentOutCost' );
          attricolumnelement.AppendChild( ccrentoutcostcellElement );
          //长春长途运输费用
          cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
          cclongtranscostcellElement.SetAttribute( "value", 'CCLongTransCost' );
          attricolumnelement.AppendChild( cclongtranscostcellElement );
          //长春短途运输费用
          ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
          ccshorttranscostcellElement.SetAttribute( "value", 'CCShortTransCost' );
          attricolumnelement.AppendChild( ccshorttranscostcellElement );
          //长春外租库仓储费用
          ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          ccrentstoragecostcellElement.SetAttribute( "value", 'CCRentStorageCost' );
          attricolumnelement.AppendChild( ccrentstoragecostcellElement );
          //大连外租库入库费用
          dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
          dlrententercostcellElement.SetAttribute( "value", 'DLRentEnterCost' );
          attricolumnelement.AppendChild( dlrententercostcellElement );
          //大连外租库出库费用
          dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
          dlrentoutcostcellElement.SetAttribute( "value", 'DLRentOutCost' );
          attricolumnelement.AppendChild( dlrentoutcostcellElement );
          //厂内到外租库运输费用
          factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
          factorytorenttranscostcellElement.SetAttribute( "value", 'FactoryToRentTransCost' );
          attricolumnelement.AppendChild( factorytorenttranscostcellElement );
          //大连外租库仓储费用
          dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          dlrentstoragecostcellElement.SetAttribute( "value", 'DLRentStorageCost' );
          attricolumnelement.AppendChild( dlrentstoragecostcellElement );
          //预计总费用
          estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
          estimatedtotalcostcellElement.SetAttribute( "value", 'EstimatedTotalCost' );
          attricolumnelement.AppendChild( estimatedtotalcostcellElement );
          //系数
          coefficientcellElement := xmlDOM.CreateElement( "cell" );
          coefficientcellElement.SetAttribute( "value", 'Coefficient' );
          attricolumnelement.AppendChild( coefficientcellElement );
          //总费用
          totalcostcellElement := xmlDOM.CreateElement( "cell" );
          totalcostcellElement.SetAttribute( "value", 'TotalCost' );
          attricolumnelement.AppendChild( totalcostcellElement );
        }
        //长春外租库入库费用
        ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
        ccrententercostcellElement.SetAttribute( "value", [String]c.CCRentEnterCost() );
        columnelement.AppendChild( ccrententercostcellElement );
        //长春外租库出库费用
        ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
        ccrentoutcostcellElement.SetAttribute( "value", [String]c.CCRentOutCost() );
        columnelement.AppendChild( ccrentoutcostcellElement );
        //长春长途运输费用
        cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
        cclongtranscostcellElement.SetAttribute( "value", [String]c.CCLongTransCoat() );
        columnelement.AppendChild( cclongtranscostcellElement );
        //长春短途运输费用
        ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
        ccshorttranscostcellElement.SetAttribute( "value", [String]c.CCShortTransCost() );
        columnelement.AppendChild( ccshorttranscostcellElement );
        //长春外租库仓储费用
        ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        ccrentstoragecostcellElement.SetAttribute( "value", [String]c.CCRentStorageCost() );
        columnelement.AppendChild( ccrentstoragecostcellElement );
        //大连外租库入库费用
        dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
        dlrententercostcellElement.SetAttribute( "value", [String]c.DLRentEnterCost() );
        columnelement.AppendChild( dlrententercostcellElement );
        //大连外租库出库费用
        dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
        dlrentoutcostcellElement.SetAttribute( "value", [String]c.DLRentOutCost() );
        columnelement.AppendChild( dlrentoutcostcellElement );
        //厂内到外租库运输费用
        factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToDLRentTransCost() );
        columnelement.AppendChild( factorytorenttranscostcellElement );
        //大连外租库仓储费用
        dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        dlrentstoragecostcellElement.SetAttribute( "value", [String]c.DLRentStorageCost() );
        columnelement.AppendChild( dlrentstoragecostcellElement );
        //预计总费用
        estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", [String]c.Coefficient() );
        columnelement.AppendChild( coefficientcellElement );
        //总费用
        totalcostcellElement := xmlDOM.CreateElement( "cell" );
        totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
        columnelement.AppendChild( totalcostcellElement );
      }
      tableElement.AppendChild( columnelement );  
    }
    
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
    
    //info( xmlString );
    
    tableGroupHandle := TableGroupHandle::Create( DLEngineLogisticsCostReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    
    return binaryData.AsBinaryValue();
  *]
}