#!/usr/bin/env python

import os
import codecs
import csv
import datetime
import logging
import shutil

__author__ = 'holger'

def convert_inventory_report(in_file, out_file):
    with open(in_file, encoding='utf-8') as f, codecs.open(out_file, "w", encoding='utf-8') as of:
        writer = csv.writer(of, delimiter=';')
        writer.writerow(['ean', 'stock', 'storehouse_id', 'storing_position', 'future-date'])
        for row in f:
            if any(row) and len(row) > 50:
                if row[0:6] == 'INVRPT':
                    # new_row = [row[21:34], row[51:53].strip(), '11', '1']
                    try:
                        stock = int(row[51:53].strip())
                    except ValueError:
                        stock = 0
                    if stock == 0:
                        continue
                    new_row = [row[21:34], stock, '11', '1', row[35:45]]
                    writer.writerow(new_row)


def process_files(data_root):
    path_in = os.path.join(data_root, "in")
    path_out = os.path.join(data_root, "out")
    path_prc = os.path.join(data_root, "processed")
    path_err = os.path.join(data_root, "error")
    path_log = os.path.join(data_root, "log")

    files = os.listdir(path_in)
    num_files = len(files)

    print("Found {0} files...".format(num_files))

    if num_files == 0:
        return


    for f in files:
        in_file = os.path.join(path_in, f)
        out_file = os.path.join(path_out, 'uhlsport.csv')
        prc_file = os.path.join(path_prc, os.path.splitext(f)[0] + '_' \
            + datetime.datetime.now().strftime("%Y%m%d%H%M%S")) + '.txt'
        err_file = os.path.join(path_err, f)
        log_file = os.path.join(path_log, 'uhlsport.log')

        if os.path.isfile(in_file):
            logging.basicConfig(filename=log_file, level=logging.DEBUG)

            logging.debug("Converting Uhlsport Inventory Report %s...", in_file)
            try:
                convert_inventory_report(in_file, out_file)
                shutil.move(in_file, prc_file)
            except Exception as e:
                logging.error(e)
                shutil.move(in_file, err_file)

def main():
    data_root = r"/ftproot/"
    #data_root = r"/data/projects/pycharm/thelen/conversion/data/"
    #ftp_folder = r"/data/projects/pycharm/thelen/conversion/data/Matching_Uhlsport/in"
    #data_root = r"c:/temp/thelen/"

    project_data_root = os.path.join(data_root, "Matching_Uhlsport")
    process_files(project_data_root)

if __name__ == "__main__":
    main()
