public Document GenerateDocument()
        {
            Document doc = new Document();
            doc.Id = TarpaDataProvider.GetLastDocumentId() + 1;
            doc.BillId = BillId;
            doc.Time = BillDate;
            List<Export> exports = new List<Export>();

            Export e = new Export();
            double totalSum = 0.0;

            foreach (BillRow row in Rows)
            {
                Export export = new Export();
                if (Type == 0)
                {
                    export.Credit = row.GetSum();
                    export.Debet = 0.0;
                    totalSum += row.GetSum();
                    export.DocumentId = doc.Id;
                    export.AccountId = row.AccountId;
                }

                exports.Add(export);
            }

            doc.Exports = exports;
            doc.Optimize();

            switch (PaymentType)
            {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                default:
                    break;
            }

            return doc;
        }
        /// <summary>
        /// Updates the given document to the database.
        /// </summary>
        /// <param name="document">The document to be updated.</param>
        public static void UpdateDocument(Document document)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(connectionString))
            {

                try
                {
                    con.Open();

                    MySqlCommand command = new MySqlCommand();
                    command.Connection = con;

                    command.CommandText = "UPDATE documents SET date=@date, billId=@billId WHERE documentId=@documentId";
                    command.Parameters.AddWithValue("@documentId", document.Id);
                    command.Parameters.AddWithValue("@date", document.Time);
                    command.Parameters.AddWithValue("@billId", document.BillId);
                    command.ExecuteNonQuery();

                }
                catch (MySqlException ex)
                {
                    throw ex;
                }
                finally
                {
                    con.Close();
                }

            }
        }
        /// <summary>
        /// Returns the list of documents stored in the database.
        /// </summary>
        /// <returns>List of documents</returns>
        public static List<Document> GetAllDocuments()
        {
            List<Document> documents = new List<Document>();
            string connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;

            using (MySqlConnection con = new MySqlConnection(connectionString))
            {
                MySqlCommand command = new MySqlCommand();

                try
                {
                    con.Open();
                    command.Connection = con;

                    command.CommandText = "SELECT * FROM documents";

                    MySqlDataReader reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        Document document = new Document();
                        document.Id = reader.GetInt16("documentId");
                        document.BillId = reader.GetInt16("billId");
                        document.Time = reader.GetDateTime("date");
                        documents.Add(document);
                    }

                }
                catch (MySqlException ex)
                {
                    throw ex;
                } finally
                {
                    con.Close();
                }

            }
            return documents;
        }
        /// <summary>
        /// Saves the document object to the database.
        /// </summary>
        /// <param name="document">Document to be saved</param>
        public static void SaveDocument(Document document)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(connectionString))
            {

                try
                {
                    con.Open();

                    MySqlCommand command = new MySqlCommand();
                    command.Connection = con;

                    command.CommandText = "INSERT INTO documents (documentId, billId, date) VALUES (@documentId, @billId, @date)";
                    command.Parameters.AddWithValue("@documentId", document.Id);
                    command.Parameters.AddWithValue("@date", document.Time);
                    command.Parameters.AddWithValue("@billId", document.BillId);
                    command.ExecuteNonQuery();

                }
                catch (MySqlException ex)
                {
                    throw ex;
                }
                finally
                {
                    con.Close();

                }

            }
        }
        /// <summary>
        /// Deletes the row representing the given document from the database.
        /// Removes also all the exports attached to the document id.
        /// </summary>
        /// <param name="document"></param>
        /// <returns></returns>
        public static bool DeleteDocument(Document document)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(connectionString))
            {
                try
                {
                    con.Open();

                    MySqlCommand command = new MySqlCommand();
                    command.Connection = con;
                    command.CommandText = "DELETE FROM documents WHERE documentId=@id";
                    command.Parameters.AddWithValue("@id", document.Id);
                    command.ExecuteNonQuery();

                    DeleteAllExportsFromDocument(document);
                }
                catch (MySqlException ex)
                {
                    return false;
                } finally
                {
                    con.Close();
                }

            }

            return true;
        }