admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
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
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  Description: '下载财务报表数据'
  TextBody:
  [*
    
    table := selectobject( macroPlan, CCEngineLogisticsCostReport, 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 );
          //Attribute
          //外租库入库费用
          rententercostcellElement := xmlDOM.CreateElement( "cell" );
          rententercostcellElement.SetAttribute( "value", '外租库入库费用' );//RentEnterCost
          attricolumnelement.AppendChild( rententercostcellElement );
          //外租库出库费用
          rentoutcostcellElement := xmlDOM.CreateElement( "cell" );
          rentoutcostcellElement.SetAttribute( "value", '外租库出库费用' );//RentOutCost
          attricolumnelement.AppendChild( rentoutcostcellElement );
          //厂内到外租库运输费用
          factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
          factorytorenttranscostcellElement.SetAttribute( "value", '厂内到外租库运输费用' );//FactoryToRentTransCost
          attricolumnelement.AppendChild( factorytorenttranscostcellElement );
          //外租库仓储费用
          rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
          rentstoragecostcellElement.SetAttribute( "value", '外租库仓储费用' );//RentStorageCost
          attricolumnelement.AppendChild( rentstoragecostcellElement );
          //预计总费用
          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 );
        }
        //外租库入库费用
        rententercostcellElement := xmlDOM.CreateElement( "cell" );
        rententercostcellElement.SetAttribute( "value", c.RentInCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( rententercostcellElement );
        //外租库出库费用
        rentoutcostcellElement := xmlDOM.CreateElement( "cell" );
        rentoutcostcellElement.SetAttribute( "value", c.RentOutOfCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( rentoutcostcellElement );
        //厂内到外租库运输费用
        factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
        factorytorenttranscostcellElement.SetAttribute( "value", c.WerkToRentTransCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( factorytorenttranscostcellElement );
        //外租库仓储费用
        rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
        rentstoragecostcellElement.SetAttribute( "value", c.RentStorCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( rentstoragecostcellElement );
        //预计总费用
        estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
        estimatedtotalcostcellElement.SetAttribute( "value", c.EstimateTotalCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( estimatedtotalcostcellElement );
        //系数
        coefficientcellElement := xmlDOM.CreateElement( "cell" );
        coefficientcellElement.SetAttribute( "value", c.CoefficientValue() );
        columnelement.AppendChild( coefficientcellElement );
        //总费用
        totalcostcellElement := xmlDOM.CreateElement( "cell" );
        totalcostcellElement.SetAttribute( "value", c.AllCost().Format( 'N(Dec)' ) );
        columnelement.AppendChild( totalcostcellElement );
      }
      tableElement.AppendChild( columnelement );  
    }
    
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
    
    //info( xmlString );
    
    tableGroupHandle := TableGroupHandle::Create( CCEngineLogisticsCostReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    
    return binaryData.AsBinaryValue();
  *]
}