# -*- coding: utf-8 -*-

# Copyright 2011-2014, extragroup GmbH, Pottkamp 19, 48149 Münster, Germany
# All rights reserved
#
# All information contained herein is, and remains the property of
# extragroup GmbH and its suppliers, if any. The intellectual and
# and its suppliers and are protected by trade secret or copyright law.
# Dissemination of this information or reproduction of this material is
# strictly forbidden unless prior written permission is obtained from
# extragroup GmbH

from interiorcad.cuttinglistexport.csvbase import CuttinglistExportCSVBase
import sys

class heos_SL_Export(CuttinglistExportCSVBase):
    def __init__(self, **keywords):
        super().__init__(**keywords)
        self.csvdelimiter = ';'

    def getOutputFileName(self, **keywords):
        return ("heos_SL.csv")

    def getHeaderLine(self, **keywords):
        return ('Auftrag', 'Position', 'Pos.Bezeichnung', 
                'Baugruppe', 'Bezeichnung', 'Trägermaterial',
                'Anzahl', 'Laenge', 'Breite', 'Dicke', 
                'Kante_1', 'Dicke_1' , 'Kante_2' ,'Dicke_2', 'Kante_3', 'Dicke_3', 'Kante_4', 'Dicke_4',
                'Belag_I', 'Belag_A', 'Bemerkung', 
                'Typ_V', 'Typ_H', 'Typ_L', 'Typ_R', 'Ecke_OR', 'Ecke_RU', 'Ecke_UL', 'Ecke_LO', 'Dicke_BA', 'Dicke_BI', 'Oberfl_A', 'Oberfl_I', 'Barcode_A', 'Barcode_I')
    
    def getElements(self, **keywords):
        entry = keywords['entry']
        projectInfo = keywords['projectInfo']
        positionInfo = keywords['positionInfo']
        workpiece = keywords['workpiece']
        
        Baugruppe = self.asString(data=positionInfo["PositionNumber"] , **keywords) + self.asString(data=positionInfo["PositionDescription"] , **keywords)
        if Baugruppe == None or Baugruppe == '':
            Baugruppe = self.asString(key='unit_unitname', uuid=workpiece.parentUUID, **keywords)
        if Baugruppe == None or Baugruppe == '':
            Baugruppe = self.asString(key='unit_unitid', **keywords)
            
        #if Baugruppe =='':
        #    Baugruppe == self.asString(key='unit_unitid', **keywords)
        #Baugruppe = self.asString(key='unit_unitname', **keywords)    
        
        BI, BA ='',''
        Dicke_BA, Dicke_BI ='',''
        
        #str.endswith(suffix[, start[, end]])
        #DI=BI[-2:] #Variante letzte zwei Charakter extrahieren von Artikel(letzte zwei Str sind Belagsdicke)
        #DA=BI[-2:]
        
        WP_Diff = (entry.workpiece.thickness - entry.boardThickness)
        #(entry.workpiece.thickness - entry.workpiece.boardThickness)/2
        BI = self.asString(key='part_covering1', **keywords)
        BA = self.asString(key='part_covering2', **keywords)
    
        if BI!='' and BA!='':
            Dicke_BA=WP_Diff/2
            Dicke_BI=WP_Diff/2           
        if BI=='' and BA!='':
            BA=WP_Diff
        if BI!='' and BA=='':
            BI=WP_Diff
        
        return (
            self.asString(data=projectInfo["ProjectID"], **keywords),
            self.asString(data=positionInfo["PositionNumber"], **keywords), 		#wird in Spalte Baugruppe(Erfassungsgruppe) geschrieben
            self.asString(data=positionInfo["PositionDescription"], **keywords), 	#wird in Spalte Baugruppe(Erfassungsgruppe) geschrieben
            #self.asString(key='unit_unitname', uuid=workpiece.parentUUID, **keywords) + 'unitname', 			#Möbelname wird in Baugruppe geschrieben, falls keine Pos. zugewiesen ist
            #self.asString(key='unit_unitid', **keywords) + 'unitid' , 				#Bauteilname, wird in Baugruppe geschrieben, falls keine Pos und kein Möbelname vorhanden ist              
            Baugruppe, 													
            self.asString(key='part_description', **keywords), 			#Bauteilbezeichnung
            self.asString(key='part_itemid', **keywords), 				#Artikelnummer (Material)
            self.asInt(key='part_boardcount', **keywords), 				#Anzahl (immer 1)
            self.asCoordinate(data=entry.boardLength, **keywords), 		#Format gemäss Exporteinstellung, Länge
            self.asCoordinate(data=entry.boardWidth, **keywords), 		#Format gemäss Exporteinstellung Breite
            self.asCoordinate(data=entry.boardThickness, **keywords), 	#        
            self.asString(key='part_edge1', **keywords), #Kante 1 immer Längsseite,
            self.asCoordinate(key='part_edge1thickness', **keywords),
            self.asString(key='part_edge2', **keywords), #Kante 2 immer gegenüber Kante 1
            self.asCoordinate(key='part_edge2thickness', **keywords),
            self.asString(key='part_edge3', **keywords), #Kante 3
            self.asCoordinate(key='part_edge3thickness', **keywords),
            self.asString(key='part_edge4', **keywords), #Kante 4
            self.asCoordinate(key='part_edge4thickness', **keywords),
            BI, #self.asString(key='part_covering1', **keywords), #Belagsdicke approximativ
            BA, #self.asString(key='part_covering2', **keywords), #Belagsdicke approximativ
            self.asString(key='part_comment', **keywords),
            '2',#'Typ_V', 
            '2',#'Typ_H', 
            '2',#'Typ_L', 
            '2',#Typ_R', 
            '2',#'Ecke_OR', 
            '2',#'Ecke_RU', 
            '2',#'Ecke_UL', 
            '2',#'Ecke_LO', 
            Dicke_BA, #Belagsdicke approximativ  
            Dicke_BI, #Belagsdicke approximativ
            self.asString(key='part_laminate2', **keywords),#Beschichtung
            self.asString(key='part_laminate1', **keywords),#Beschichtung
            self.asString(data=entry.ncProgramNameOpposite, **keywords),#Dateipfad CNC Nebenseite
            self.asString(data=entry.ncPropramNameMain, **keywords),#Dateipfad CNC Hauptseite
        )

    
    def getSortingOrder(self, **keywords):
        return (1, 4, 2, 7)

 
class heos_Beschl_Export(CuttinglistExportCSVBase):
    def __init__(self, **keywords):
        super().__init__(**keywords)
        self.csvdelimiter = ';'
      
          
    def getOutputFileName(self, **keywords):
        return ("heos_BL.csv")
      
        
  
    def getHeaderLine(self, **keywords):
        return ('Auftrag', 'Position', 'Pos.Bezeichnung', 
                'Baugruppe', 'Bezeichnung', 'Trägermaterial')
      
  
    def getElements(self, **keywords):
        entry = keywords['entry']
        projectInfo = keywords['projectInfo']
        positionInfo = keywords['positionInfo']
        workpiece = keywords['workpiece']
  
        Baugruppe = self.asString(data=positionInfo["PositionNumber"] , **keywords) + self.asString(data=positionInfo["PositionDescription"] , **keywords)
  
  
        Baugruppe = self.asString(data=positionInfo["PositionNumber"] , **keywords) + self.asString(data=positionInfo["PositionDescription"] , **keywords)
        if Baugruppe == None or Baugruppe == '':
            Baugruppe = self.asString(key='unit_unitname', uuid=workpiece.parentUUID, **keywords)
        if Baugruppe == None or Baugruppe == '':
            Baugruppe = self.asString(key='unit_unitid', **keywords)
             
        istBeschlag=0
        if self.asCoordinate(data=entry.boardLength, **keywords)=='0' and self.asCoordinate(data=entry.boardWidth, **keywords)=='0':        
            istBeschlag=1
 
        Auftrag=self.asString(data=projectInfo["ProjectID"], **keywords)
        Position=self.asString(data=positionInfo["PositionNumber"], **keywords)
        PosBezeichnung=self.asString(data=positionInfo["PositionDescription"], **keywords)
        Baugruppe=Baugruppe
        Bezeichnung=self.asString(key='part_description', **keywords)
        Traeger=self.asString(key='part_itemid', **keywords)
        Anzahl=self.asInt(key='part_boardcount', **keywords)
          
          
        if istBeschlag==1:
            return (
                Auftrag,
                Position,        #wird in Spalte Baugruppe geschrieben
                PosBezeichnung,     #wird in Spalte Baugruppe geschrieben
                'Beschlag'+Baugruppe,                                                     
                Bezeichnung,             #Bauteilbezeichnung
                Traeger,                 #Artikelnummer (Material)
                Anzahl,                 #Anzahl (immer 1)
                )
         
        if istBeschlag==0: 
            return() 
#          
#         def writeEntries(self, **keywords):
#             if keywords['entries']:
#                 for entry in keywords['entries']:
#                     self.csvWriter.writerow(entry)
         
                              
    def doExport(self, **keywords):
        super().doExport(**keywords)
        self.writeListFittings(**keywords)     
 
    def getSortingOrder(self, **keywords):
        return (0)


export = heos_SL_Export()
export.doCuttinglistExport()
export = heos_Beschl_Export()
export.doCuttinglistExport()
export.openExportPath()
