Código fonte para l10n_br_pos.wizard.sat_xml_periodic_export
# -*- encoding: utf-8 -*-
# Copyright (C) 2016 Luiz Felipe do Divino - KMEE - www.kmee.com.br #
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from openerp import models, fields, api, _
import os
import base64
import time
[documentos]class NfeXmlPeriodicExport(models.TransientModel):
_inherit = 'nfe.xml.periodic.export'
zip_sat_file = fields.Binary('Zip SAT', readonly=True)
@api.multi
[documentos] def export(self):
if not self.create_uid.company_id.parent_id.id:
pos_order_model = self.env['pos.order']
pos_orders = pos_order_model.search([
('date_order', '>=', self.start_period_id.date_start),
('date_order', '<=', self.stop_period_id.date_stop),
('cfe_return', '!=', False),
])
else:
pos_order_model = self.env['pos.order']
pos_orders = pos_order_model.search([
('date_order', '>=', self.start_period_id.date_start),
('date_order', '<=', self.stop_period_id.date_stop),
('company_id', '=', self.create_uid.company_id.id),
('cfe_return', '!=', False),
])
if pos_orders:
caminhos_xmls = ''
for pos_order in pos_orders:
fp_new = open(
self.create_uid.company_id.nfe_root_folder
+ pos_order.chave_cfe + '.xml', 'w'
)
fp_new.write(base64.b64decode(pos_order.cfe_return))
fp_new.close()
caminhos_xmls += self.create_uid.company_id.nfe_root_folder + pos_order.chave_cfe + '.xml '
if pos_order.cfe_cancelamento_return:
fp_new = open(
self.create_uid.company_id.nfe_root_folder
+ pos_order.chave_cfe_cancelamento + '.xml', 'w'
)
fp_new.write(base64.b64decode(
pos_order.cfe_cancelamento_return
))
fp_new.close()
caminhos_xmls += self.create_uid.company_id.nfe_root_folder + pos_order.chave_cfe_cancelamento + '.xml '
if not self.create_uid.company_id.parent_id.id:
os.system(
"zip -r " + os.path.join(
self.create_uid.company_id.nfe_root_folder,
'cfes_xmls_' + time.strftime("%Y-%m-%d"))
+ ' ' + caminhos_xmls
)
else:
os.system(
"zip -r " + os.path.join(
self.create_uid.company_id.nfe_root_folder,
'cfes_xmls_' + self.create_uid.company_id.name.replace(
" ", "") + "_" + time.strftime("%Y-%m-%d"))
+ ' ' + caminhos_xmls
)
for pos_order in pos_orders:
os.remove(
self.create_uid.company_id.nfe_root_folder
+ pos_order.chave_cfe + '.xml'
)
if not self.create_uid.company_id.parent_id.id:
orderFile = open(
os.path.join(
self.create_uid.company_id.nfe_root_folder,
'cfes_xmls_' + time.strftime("%Y-%m-%d") + '.zip'
), 'r'
)
else:
orderFile = open(
os.path.join(
self.create_uid.company_id.nfe_root_folder,
'cfes_xmls_' + self.create_uid.company_id.name.replace(
" ", "") + "_" + time.strftime("%Y-%m-%d") + '.zip'
), 'r'
)
itemFile = orderFile.read()
if not self.create_uid.company_id.parent_id.id:
self.write({
'state': 'done',
'zip_sat_file': base64.b64encode(itemFile),
'name': 'cfes_xmls_' + time.strftime("%Y-%m-%d") + '.zip',
})
else:
self.write({
'state': 'done',
'zip_sat_file': base64.b64encode(itemFile),
'name': 'cfes_xmls_' + self.create_uid.company_id.name.replace(
" ", "") + "_" + time.strftime("%Y-%m-%d") + '.zip',
})
return super(NfeXmlPeriodicExport, self).export()