예제 #1
0
 def produto_onchange(self, record):
     result = record.copy()
     product = Produto().get(key=record['produto'])
     if len(product) != 0:
         product = product[0]
         for key in [
                 'quant_in', 'quant_out', 'quant_vend', 'valor_unitario',
                 'valor_total'
         ]:
             result[key] = to_decimal(result[key])
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         quantidade = (to_decimal(result['quant_out']) -
                       to_decimal(result['quant_in']))
         result['quant_vend'] = quantidade
         result['valor_unitario'] = to_decimal(Produto().get_sale_price(
             produto=product['id'],
             quantidade=quantidade,
             unidade=unidade,
             terminal=get_terminal('Distribuicao')))
         result['valor_total'] = quantidade * to_decimal(
             result['valor_unitario'])
         result['iva'] = to_decimal(product['iva'])
         result['ean'] = product['referencia']
         result['unidade'] = unidade
     else:
         result = {}
     return result
예제 #2
0
 def ean_onchange(self, record):
     result = record.copy()
     product = Produto(where='referencia = {ean}'.format(
         ean=record['ean'])).get()
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key] = to_decimal(result[key])
             if result[key] <= 0.0:
                 result[key] = 1.0
         if result['desconto'] > 0.0:
             desconto = (100 - to_decimal(result['desconto'])) / 100
         else:
             desconto = 1.0
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         result['valor_unitario'] = to_decimal(Produto().get_sale_price(
             produto=product['id'],
             quantidade=result['quantidade'],
             unidade=unidade,
             terminal=get_terminal(bottle.request.session['terminal'])))
         result['valor_total'] = result['quantidade'] * result[
             'valor_unitario'] * desconto
         result['iva'] = to_decimal(product['iva'])
         result['unidade'] = unidade
         result['produto'] = product['id']
     else:
         result = {}
     return result
예제 #3
0
 def produto_onchange(self, record):
     result = record.copy()
     #print ('estou em product_onchange', result)
     product = Produto().get(key=record['produto'])
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key] = to_decimal(result[key])
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         if to_decimal(result['desconto']) > to_decimal(0):
             desconto = to_decimal(
                 (100 - to_decimal(result['desconto'])) / 100)
         else:
             desconto = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         result['valor_unitario'] = to_decimal(Produto().get_sale_price(
             produto=product['id'],
             quantidade=result['quantidade'],
             unidade=unidade,
             terminal=get_terminal(bottle.request.session['terminal'])))
         result['valor_total'] = result['quantidade'] * result[
             'valor_unitario'] * desconto
         result['iva'] = to_decimal(product['iva'])
         result['ean'] = product['referencia']
         result['unidade'] = unidade
     else:
         result = {}
     #print ('fim do produto_onchange')
     return result
예제 #4
0
 def produto_onchange(self, record):
     result = record.copy()
     product = Produto().get(key=record['produto'])
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             record[key] = to_decimal(record[key])
             if record[key] <= to_decimal(0):
                 record[key] = to_decimal(1)
         if to_decimal(record['desconto']) > to_decimal(0):
             desconto = (100 - to_decimal(record['desconto'])) / 100
         else:
             desconto = to_decimal(1)
         desconto = to_decimal(desconto)
         quantidade = to_decimal(record['quantidade'])
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         terminal = terminal_id
         result['valor_unitario'] = Produto().get_sale_price(
             product['id'], terminal, quantidade, unidade)
         result['valor_total'] = quantidade * result[
             'valor_unitario'] * desconto
         result['iva'] = product['iva']
         result['unidade'] = unidade
     else:
         result = {}
     return result
예제 #5
0
 def ean_onchange(self, record):
     result = record.copy()
     product = Produto(where="referencia = '{ean}'".format(
         ean=record['ean'])).get()
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key] = to_decimal(result[key])
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         if to_decimal(result['desconto']) > to_decimal(0):
             desconto = to_decimal(
                 (100 - to_decimal(result['desconto'])) / 100)
         else:
             desconto = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         result['valor_unitario'] = to_decimal(Produto().get_sale_price(
             produto=product['id'],
             quantidade=result['quantidade'],
             unidade=unidade,
             terminal=get_terminal('MiniMercado')))
         result['valor_total'] = to_decimal(
             result['quantidade']) * result['valor_unitario'] * desconto
         result['iva'] = to_decimal(product['iva'])
         result['unidade'] = unidade
         result['produto'] = product['id']
     else:
         result = {}
     return result
예제 #6
0
 def Confirmar(self, key, window_id):
     #ainda não esta 100% ver com calma outro dia
     # Gera movimento contabilistico (conta de materias primas contra conta de gastos e entrada de produto acabado em armazem)
     # Gera movimento de Stock (sai materia prima do armazem por contrapartida de produto acabado)
     if key in ['None', None]:
         key = get_actions(action='save', key=None, model_name=model.__model_name__, internal=True)
     record_id = key
     record = model.get(key=record_id)[0]
     record['user'] = session['user']
     record['estado'] = 'Confirmado'
     record['numero'] = base_models.Sequence().get_sequence('prato')
     from diario import Diario
     diario = Diario(where="tipo='stock'").get()[0]['id']
     periodo = None
     from periodo import Periodo
     periodos = Periodo().get()
     for p in periodos:
         lista_datas = generate_dates(start_date=p['data_inicial'], end_date=p['data_final'])
         if str(format_date(record['data'])) in lista_datas:
             periodo = p['id']
     if not periodo:
         return error_message('não existe periodo definido para a data em questão! \n')
     from armazem import Armazem
     armazem_cliente = Armazem(where="tipo='cliente'").get()[0]['id']
     from movimento import Movimento
     movimento = Movimento(data=record['data'], numero=base_models.Sequence().get_sequence('movimento'), num_doc=record['numero'], descricao='Nossa Guia de Produção', diario=diario, documento='prato', periodo=periodo, estado='Confirmado', user=session['user'], active=False).put()
     from stock import Stock
     stock = Stock(data=record['data'], numero=base_models.Sequence().get_sequence('stock'), num_doc=record['numero'], descricao='Nossa Guia de Produção', documento='prato', periodo=periodo, estado='Confirmado', user=session['user']).put()
     Prato(**record).put()
     from linha_prato import LinhaPrato
     record_lines = LinhaPrato(where="prato = '{prato}'".format(prato=record['id'])).get()
     if record_lines:
         from linha_movimento import LinhaMovimento
         from linha_stock import LinhaStock
         from produto import Produto
         from familia_produto import FamiliaProduto
         for line in record_lines:
             # tambem depois considerar a verificação se o total está bem calculado e logs se o preço unitário for modificado
             quantidade = to_decimal(line['quantidade'])
             product = Produto().get(key=line['produto'])[0]
             conta_mercadorias = product['conta_mercadorias']
             conta_gastos = product['conta_gastos']
             taxa_iva = product['iva']
             armazem_vendas = None
             familia = FamiliaProduto().get(key=product['familia'])
             if familia:
                 familia = familia[0]
                 if familia['armazem_vendas']:
                     armazem_vendas = familia['armazem_vendas']
             descricao = product['nome']
             #total_sem_iva = line['valor_total']/(1+taxa_iva)
             #Aqui ver a contabilização
             LinhaMovimento(movimento=movimento, descricao=descricao, conta=conta_gastos, quant_debito=quantidade, debito=line['valor_total'], quant_credito=to_decimal(0), credito=to_decimal(0), user=session['user']).put()
             LinhaMovimento(movimento=movimento, descricao=descricao, conta=conta_mercadorias, quant_debito=to_decimal(0), debito=to_decimal(0), quant_credito=quantidade, credito=line['valor_total'], user=session['user']).put()
             # o movimento é no armazem cozinha e sai materia-prima entra produto acabado
             LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=armazem_materia_prima, quant_saida=quantidade, quant_entrada=0.0, user=session['user']).put()
             LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=armazem_produto, quant_saida=0.0, quant_entrada=quantidade, user=session['user']).put()
         return form_edit(key = key, window_id = window_id)
     else:
         return error_message('Não pode confirmar talões sem linhas de Talão! \n')
예제 #7
0
 def Facturar(self, key, window_id):
     #Gera Factura em rascunho!!!
     #Aqui se o a entrega estiver paga a factura deve de alguma forma reflectir isso ou seja deve estar logo como paga
     self.kargs = get_model_record(model = self, key = key)
     self.kargs['estado'] = 'Facturado'
     try:
         from my_factura_cli import FacturaCliente
     except:
         from factura_cli import FacturaCliente
     factura = FacturaCliente(data = self.kargs['data'], notas = self.kargs['notas'], entrega = self.kargs['id'], cliente = self.kargs['cliente'], residual = str(to_decimal('0')), estado = 'Rascunho', vendedor = self.kargs['user'], user = self.kargs['user']).put()
     self.kargs['factura'] = factura
     #Muda o movimento de não active para active
     try:
         from my_movimento import Movimento
     except:
         from movimento import Movimento
     movimentos = Movimento(where = "documento = 'entrega' and num_doc = {num_doc} ".format(num_doc = self.kargs['id'])).get()
     if movimentos:
         for movimento in movimentos:
             movimento['active'] = 'True'
             movimento['user'] = self.kargs['user']
             Movimento(**movimento).put()
     #Valida se o cliente é sujeito a iva
     try:
         from my_terceiro import Terceiro
     except:
         from terceiro import Terceiro
     sujeito_iva = Terceiro(where="id=" + str(self.kargs['cliente'])).get()[0]['sujeito_iva']
     try:
         from my_linha_entrega import LinhaEntrega
     except:
         from linha_entrega import LinhaEntrega
     record_lines = LinhaEntrega(where = "entrega = '{entrega}'".format(entrega = self.kargs['id'])).get()
     if record_lines:
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         try:
             from my_linha_factura_cli import LinhaFacturaCliente
         except:
             from linha_factura_cli import LinhaFacturaCliente
         for line in record_lines:
             quantidade = to_decimal(line['quantidade'])
             product = Produto().get(key = line['produto'])[0]
             if sujeito_iva:
                 taxa_iva = product['iva']
             else:
                 taxa_iva = to_decimal(0)
             total_sem_iva = line['valor_total']/(1+taxa_iva)
             iva = taxa_iva
             LinhaFacturaCliente(factura_cli = factura, unidade = line['unidade'], valor_unitario = line['valor_unitario'], produto = line['produto'], quantidade = quantidade, valor_total = line['valor_total'], desconto = line['desconto'], iva = iva, user = self.kargs['user']).put()
     self.put()
     ctx_dict = get_context(window_id)
     ctx_dict['main_key'] = self.kargs['id']
     set_context(window_id, ctx_dict)
     return form_edit(window_id = window_id).show()
예제 #8
0
 def produto_onchange(self, record):
     result = record.copy()
     product = Produto().get(key=record['produto'])
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key]= to_decimal(result[key]) 
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         terminal = get_terminal(bottle.request.session['terminal'])
         result['valor_unitario'] = to_decimal(Produto().get_sale_price(product['id'], terminal, result['quantidade'], unidade))
         result['valor_total'] = result['quantidade'] * result['valor_unitario']
         result['iva'] = to_decimal(product['iva'])
         result['ean'] = product['referencia']
         result['unidade'] = unidade
     else:
         result={}
     return result
예제 #9
0
 def Confirmar(self, key, window_id):
     # Gera movimento de Stock (entra no armazem de entrada por contrapartida do de saida)
     #print('estou em confirmar na transferência')
     if key in ['None', None]:
         key = get_actions(action='save', key=None, model_name=model.__model_name__, internal=True)
     self.kargs = get_model_record(model=self, key=key)
     self.kargs['estado'] = 'Confirmado'
     if not self.kargs['numero']:
         self.kargs['numero'] = base_models.Sequence().get_sequence('transferencia')
     try:
         from my_periodo import Periodo
     except:
         from periodo import Periodo
     periodo = Periodo().get_periodo(data=self.kargs['data'])
     try:
         from my_stock import Stock
     except:
         from stock import Stock
     stock = Stock(data=self.kargs['data'], numero=base_models.Sequence().get_sequence('stock'), num_doc=self.kargs['numero'], descricao='Nossa Nota de Transferencia', documento='transferencia', periodo=periodo, estado='Confirmado', user=self.kargs['user']).put()
     try:
         from my_linha_transferencia import LinhaTransferencia
     except:
         from linha_transferencia import LinhaTransferencia
     record_lines = LinhaTransferencia(where="transferencia = '{transferencia}'".format(transferencia=self.kargs['id'])).get()
     if record_lines:
         try:
             from my_linha_stock import LinhaStock
         except:
             from linha_stock import LinhaStock
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         for line in record_lines:
             quantidade = to_decimal(line['quantidade'])
             product = Produto().get(key=line['produto'])[0]
             descricao = product['nome']
             LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=self.kargs['armazem_in'], quant_saida=to_decimal(0), quant_entrada=quantidade, user=self.kargs['user']).put()
             LinhaStock(stock=stock, descricao=descricao, produto=line['produto'], armazem=self.kargs['armazem_out'], quant_saida=quantidade, quant_entrada=to_decimal(0), user=self.kargs['user']).put()
         self.put()
         ctx_dict = get_context(window_id)
         ctx_dict['main_key'] = self.kargs['id']
         set_context(window_id, ctx_dict)
         #print('fim do confirmar de transferencia')
         return form_edit(window_id = window_id).show()
     else:
         return error_message('Não pode confirmar Transferencias sem linhas de Transferencia! \n')
예제 #10
0
 def produto_onchange(self, record):
     result = record.copy()
     product = Produto().get(key=record['produto'])
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key]= to_decimal(result[key]) 
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_venda']
         result['valor_unitario'] = to_decimal(product['preco_compra'])
         result['valor_total'] = result['quantidade'] * result['valor_unitario']
         result['iva'] = to_decimal(product['iva'])
         result['ean'] = product['referencia']
         result['unidade'] = unidade
     else:
         result={}
     return result
예제 #11
0
 def ean_onchange(self, record):
     result = record.copy()
     product = Produto(where='referencia = {ean}'.format(
         ean=record['ean'])).get()
     if len(product) != 0:
         product = product[0]
         for key in ['quantidade', 'valor_unitario', 'valor_total']:
             result[key] = to_decimal(result[key])
             if result[key] <= to_decimal(0):
                 result[key] = to_decimal(1)
         unidade = record['unidade']
         if not record['unidade']:
             unidade = product['unidade_medida_compra']
         result['valor_unitario'] = to_decimal(product['preco_compra'])
         result['valor_total'] = to_decimal(
             result['quantidade']) * to_decimal(result['valor_unitario'])
         result['iva'] = to_decimal(product['iva'])
         result['unidade'] = unidade
         result['produto'] = product['id']
     else:
         result = {}
     return result
예제 #12
0
 def valores_onchange(self, record):
     #O resultado é um dicionário com nomes de campos e valores que mudam consoante o valor do campo
     #Não confundir com atributos dinamicos que mudam atributos html
     result = record.copy()
     for key in ['quantidade', 'valor_unitario', 'valor_total']:
         if record[key] not in ['None', None, '']:
             record[key] = to_decimal(record[key])
         else:
             record[key] = to_decimal(0)
         if record[key] <= to_decimal(0):
             record[key] = to_decimal(1)
     if to_decimal(record['desconto']) > to_decimal(0):
         desconto = to_decimal((100 - to_decimal(record['desconto'])) / 100)
     else:
         desconto = to_decimal(1)
     result['valor_unitario'] = to_decimal(Produto().get_sale_price(
         produto=result['produto'],
         quantidade=result['quantidade'],
         unidade=result['unidade'],
         terminal=get_terminal(bottle.request.session['terminal'])))
     result['valor_total'] = record['quantidade'] * result[
         'valor_unitario'] * desconto
     return result
예제 #13
0
 def Confirmar(self, key, window_id):
     # Gera movimento de Stock (movimenta o armazem escolhido por contrapartida de regularizacoes)
     self.kargs = get_model_record(model=self, key=key)
     self.kargs['estado'] = 'Confirmado'
     if not self.kargs['numero']:
         self.kargs['numero'] = base_models.Sequence().get_sequence(
             'regularizacao')
     periodo = None
     try:
         from my_periodo import Periodo
     except:
         from periodo import Periodo
     periodo = Periodo().get_periodo(data=self.kargs['data'])
     try:
         from my_stock import Stock
     except:
         from stock import Stock
     stock = Stock(data=self.kargs['data'],
                   numero=base_models.Sequence().get_sequence('stock'),
                   num_doc=self.kargs['numero'],
                   descricao='Nossa Nota de Regularização',
                   documento='regularizacao',
                   periodo=periodo,
                   estado='Confirmado',
                   user=self.kargs['user']).put()
     try:
         from my_linha_regularizacao import LinhaRegularizacao
     except:
         from linha_regularizacao import LinhaRegularizacao
     record_lines = LinhaRegularizacao(
         where="regularizacao = '{regularizacao}'".format(
             regularizacao=self.kargs['id'])).get()
     if record_lines:
         try:
             from my_armazem import Armazem
         except:
             from armazem import Armazem
         armazem_regularizacao = Armazem(
             where="tipo='regularizacoes'").get()[0]['id']
         try:
             from my_linha_stock import LinhaStock
         except:
             from linha_stock import LinhaStock
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         for line in record_lines:
             product = Produto().get(key=line['produto'])[0]
             descricao = product['nome']
             quantidade = to_decimal(line['diferenca'])
             if quantidade < 0:
                 armazem_in = armazem_regularizacao
                 armazem_out = self.kargs['armazem']
                 quantidade = -quantidade
             else:
                 armazem_in = self.kargs['armazem']
                 armazem_out = armazem_regularizacao
             LinhaStock(stock=stock,
                        descricao=descricao,
                        produto=line['produto'],
                        armazem=armazem_in,
                        quant_saida=0.0,
                        quant_entrada=quantidade,
                        user=self.kargs['user']).put()
             LinhaStock(stock=stock,
                        descricao=descricao,
                        produto=line['produto'],
                        armazem=armazem_out,
                        quant_saida=quantidade,
                        quant_entrada=0.0,
                        user=self.kargs['user']).put()
         self.put()
         ctx_dict = get_context(window_id)
         ctx_dict['main_key'] = self.kargs['id']
         set_context(window_id, ctx_dict)
         return form_edit(window_id=window_id).show()
     else:
         return error_message(
             'Não pode confirmar Regularizações sem linhas de Regularização! \n'
         )
예제 #14
0
 def Confirmar(self, key, window_id):
     # Gera movimento contabilistico (conta de mercadorias contra conta de gastos)
     # Gera movimento de Stock (sai de armazem por contrapartida de cliente)
     if key in ['None', None]:
         key = get_actions(action='save',
                           key=None,
                           model_name=model.__model_name__,
                           internal=True)
     record_id = key
     record = model.get(key=record_id)[0]
     record['user'] = session['user']
     record['estado'] = 'Confirmado'
     record['numero'] = base_models.Sequence().get_sequence('talao_bar')
     record['residual'] = model.get_total(key=record_id)
     try:
         from my_diario import Diario
     except:
         from diario import Diario
     diario = Diario(where="tipo='stock'").get()[0]['id']
     periodo = None
     try:
         from my_periodo import Periodo
     except:
         from periodo import Periodo
     periodos = Periodo().get()[1]
     for p in periodos:
         lista_datas = generate_dates(start_date=p['data_inicial'],
                                      end_date=p['data_final'])
         if str(format_date(record['data'])) in lista_datas:
             periodo = p['id']
     if not periodo:
         return error_message(
             'não existe periodo definido para a data em questão! \n')
     try:
         from my_armazem import Armazem
     except:
         from armazem import Armazem
     armazem_cliente = Armazem(where="tipo='cliente'").get()[0]['id']
     #Valida se o cliente é sujeito a iva
     try:
         from my_terceiro import Terceiro
     except:
         from terceiro import Terceiro
     sujeito_iva = Terceiro(where="id='{cliente}'".format(
         cliente=str(record['cliente']))).get()[0]['sujeito_iva']
     try:
         from my_movimento import Movimento
     except:
         from movimento import Movimento
     movimento = Movimento(
         data=record['data'],
         numero=base_models.Sequence().get_sequence('movimento'),
         num_doc=record['numero'],
         descricao='Nosso Talão de Venda',
         diario=diario,
         documento='talao_bar',
         periodo=periodo,
         estado='Confirmado',
         user=session['user'],
         active=False).put()
     try:
         from my_stock import Stock
     except:
         from stock import Stock
     stock = Stock(data=record['data'],
                   numero=base_models.Sequence().get_sequence('stock'),
                   num_doc=record['numero'],
                   descricao='Nosso Talão de Venda',
                   documento='talao_bar',
                   periodo=periodo,
                   estado='Confirmado',
                   user=session['user']).put()
     TalaoBar(**record).put()
     try:
         from my_linha_talao_bar import LinhaTalaoBar
     except:
         from linha_talao_bar import LinhaTalaoBar
     record_lines = LinhaTalaoBar(where="talao_bar = '{talao_bar}'".format(
         talao_bar=record['id'])).get()
     if record_lines:
         try:
             from my_linha_movimento import LinhaMovimento
         except:
             from linha_movimento import LinhaMovimento
         try:
             from my_linha_stock import LinhaStock
         except:
             from linha_stock import LinhaStock
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         try:
             from my_familia_produto import FamiliaProduto
         except:
             from familia_produto import FamiliaProduto
         for line in record_lines:
             # aqui depois considerar a contabilização do desconto
             # tambem depois considerar a verificação se o total está bem calculado e logs se o preço unitário for modificado
             quantidade = to_decimal(str(line['quantidade']))
             product = Produto().get(key=line['produto'])[0]
             contas = Produto().get_accounts(line['produto'])
             conta_mercadorias = contas['conta_mercadorias']
             conta_gastos = contas['conta_gastos']
             if sujeito_iva:
                 taxa_iva = product['iva']
             else:
                 taxa_iva = to_decimal('0')
             armazem_vendas = None
             familia = FamiliaProduto().get(key=product['familia'])
             if familia:
                 familia = familia[0]
                 if familia['armazem_vendas']:
                     armazem_vendas = familia['armazem_vendas']
             descricao = product['nome']
             total_sem_iva = line['valor_total'] / (1 + taxa_iva)
             LinhaMovimento(movimento=movimento,
                            descricao=descricao,
                            conta=conta_gastos,
                            quant_debito=quantidade,
                            debito=line['valor_total'],
                            quant_credito=to_decimal('0'),
                            credito=to_decimal('0'),
                            user=session['user']).put()
             LinhaMovimento(movimento=movimento,
                            descricao=descricao,
                            conta=conta_mercadorias,
                            quant_debito=to_decimal('0'),
                            debito=to_decimal('0'),
                            quant_credito=quantidade,
                            credito=line['valor_total'],
                            user=session['user']).put()
             LinhaStock(stock=stock,
                        descricao=descricao,
                        produto=line['produto'],
                        armazem=armazem_vendas,
                        quant_saida=quantidade,
                        quant_entrada=to_decimal('0'),
                        user=session['user']).put()
             LinhaStock(stock=stock,
                        descricao=descricao,
                        produto=line['produto'],
                        armazem=armazem_cliente,
                        quant_saida=to_decimal('0'),
                        quant_entrada=quantidade,
                        user=session['user']).put()
         return form_edit(key=key, window_id=window_id)
     else:
         return error_message(
             'Não pode confirmar talões sem linhas de Talão! \n')
예제 #15
0
    def Confirmar(self, key, window_id, internal = False):
        """Gera movimento contabilistico (conta de receitas contra conta de terceiros)"""
        #print ('Inicio do confirmar factura_cli')
        self.kargs = get_model_record(model = self, key = key, force_db = self.__force_db__)

        if self.kargs['estado'] == 'Rascunho':            
            self.kargs['estado'] = 'Confirmado'
            self.kargs['residual'] = self.get_total(key = key)
            if not self.kargs['numero']:
                self.kargs['numero'] = base_models.Sequence().get_sequence('factura_cli')
            try:
                from my_diario import Diario
            except:
                from diario import Diario
            diario = Diario().get_diario(diario = 'vendas')
            try:
                from my_periodo import Periodo
            except:
                from periodo import Periodo
            periodo = Periodo().get_periodo(data = self.kargs['data'])
            #Valida se o cliente é sujeito a iva
            try:
                from my_terceiro import Terceiro
            except:
                from terceiro import Terceiro
            terceiro = Terceiro().get(key = self.kargs['cliente'])[0]
            sujeito_iva = terceiro['sujeito_iva']
            conta_terceiro = terceiro['a_receber']
            try:
                from my_movimento import Movimento
            except:
                from movimento import Movimento
            movimento = Movimento(data = self.kargs['data'], numero = base_models.Sequence().get_sequence('movimento'), num_doc = self.kargs['numero'], descricao = 'Nossa Factura', diario = diario, documento = 'factura_cli', periodo = periodo, estado = 'Confirmado', user = self.kargs['user']).put()
            #self.kargs['movimento'] = movimento
            try:
                from my_linha_factura_cli import LinhaFacturaCliente
            except:
                from linha_factura_cli import LinhaFacturaCliente
            record_lines = LinhaFacturaCliente(where = "factura_cli = '{factura}'".format(factura = self.kargs['id'])).get()
            if record_lines:
                try:
                    from my_linha_movimento import LinhaMovimento
                except:
                    from linha_movimento import LinhaMovimento
                try:
                    from my_produto import Produto
                except:
                    from produto import Produto
                try:
                    from my_familia_produto import FamiliaProduto
                except:
                    from familia_produto import FamiliaProduto
                for line in record_lines:
                    # aqui depois considerar a contabilização do desconto
                    quantidade = to_decimal(line['quantidade'])
                    product = Produto().get(key = line['produto'])[0]
                    contas = Produto().get_accounts(line['produto'])
                    #print (contas)
                    conta_receitas = contas['conta_receitas']
                    if sujeito_iva:
                        taxa_iva = product['iva']
                    else:
                        taxa_iva = to_decimal(0)
                    #familia = FamiliaProduto().get(key=product['familia'])[0]
                    descricao = product['nome']
                    total_sem_iva = line['valor_total']#/(1+taxa_iva)
                    #fazer o lancamento das receitas mas tambem do iva
                    LinhaMovimento(movimento = movimento, descricao = descricao, conta = conta_terceiro, quant_debito = quantidade, debito = total_sem_iva, quant_credito = to_decimal(0), credito = to_decimal(0), user = self.kargs['user']).put()
                    LinhaMovimento(movimento = movimento, descricao = descricao, conta = conta_receitas, quant_debito = to_decimal(0), debito = to_decimal(0), quant_credito = quantidade, credito = total_sem_iva, user = self.kargs['user']).put()
                self.put()
                ctx_dict = get_context(window_id)
                ctx_dict['main_key'] = self.kargs['id']
                set_context(window_id, ctx_dict)                
                result = form_edit(window_id = window_id).show()
            else:
                result = error_message('Não pode confirmar facturas sem linhas de factura! \n')
        if not internal:
            #não foi chamado pela side_bar e por isso deverá devolver o form, se vem do side_bar não tem necessidade            
            return result
예제 #16
0
 def Gerar_Factura(self, key, window_id):
     #Gera Factura em rascunho!!!
     self.kargs = get_model_record(model=self, key=key)
     self.kargs['estado'] = 'Com Factura'
     try:
         from my_factura_cli import FacturaCliente
     except:
         from factura_cli import FacturaCliente
     factura = FacturaCliente(data=self.kargs['data'],
                              notas=self.kargs['notas'],
                              entrega=self.kargs['id'],
                              cliente=self.kargs['cliente'],
                              residual=str(to_decimal('0')),
                              estado='Rascunho',
                              user=self.kargs['user']).put()
     self.kargs['factura'] = factura
     #Valida se o cliente é sujeito a iva
     try:
         from my_terceiro import Terceiro
     except:
         from terceiro import Terceiro
     sujeito_iva = Terceiro(where="id='{cliente}'".format(
         cliente=str(self.kargs['cliente']))).get()[0]['sujeito_iva']
     try:
         from my_linha_proforma import LinhaProforma
     except:
         from linha_proforma import LinhaProforma
     record_lines = LinhaProforma(where="proforma = '{proforma}'".format(
         proforma=self.kargs['id'])).get()
     if record_lines:
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         try:
             from my_linha_factura_cli import LinhaFacturaCliente
         except:
             from linha_factura_cli import LinhaFacturaCliente
         for line in record_lines:
             quantidade = to_decimal(line['quantidade'])
             product = Produto().get(key=line['produto'])[0]
             if sujeito_iva:
                 taxa_iva = product['iva']
             else:
                 taxa_iva = to_decimal(0)
             total_sem_iva = line['valor_total'] / (1 + taxa_iva)
             iva = taxa_iva
             LinhaFacturaCliente(factura_cli=factura,
                                 unidade=line['unidade'],
                                 valor_unitario=line['valor_unitario'],
                                 produto=line['produto'],
                                 quantidade=quantidade,
                                 valor_total=line['valor_total'],
                                 desconto=line['desconto'],
                                 iva=iva,
                                 user=self.kargs['user']).put()
     self.put()
     ctx_dict = get_context(window_id)
     ctx_dict['main_key'] = self.kargs['id']
     set_context(window_id, ctx_dict)
     return form_edit(window_id=window_id).show()
예제 #17
0
 def Confirmar(self, key, window_id):
     # Gera movimento contabilistico (conta de mercadorias contra conta de gastos)
     # Gera movimento de Stock (sai de armazem por contrapartida de cliente)
     #       if key in ['None', None]:
     #           m_action = model_action(obj=self)
     #           key = m_action.save(key=None, internal=True)
     self.kargs = get_model_record(model=self, key=key)
     self.kargs['estado'] = 'Confirmado'
     self.kargs['residual'] = self.get_total(key=key)
     if not self.kargs['numero']:
         self.kargs['numero'] = base_models.Sequence().get_sequence('entrega')
     try:
         from my_diario import Diario
     except:
         from diario import Diario
     diario = Diario().get_diario(diario = 'stock')
     try:
         from my_periodo import Periodo
     except:
         from periodo import Periodo
     periodo = Periodo().get_periodo(data = self.kargs['data'])
     try:
         from my_armazem import Armazem
     except:
         from armazem import Armazem
     armazem_cliente = Armazem(where = "tipo = 'cliente'").get()[0]['id']
     #Valida se o cliente é sujeito a iva
     try:
         from my_terceiro import Terceiro
     except:
         from terceiro import Terceiro
     terceiro = Terceiro().get(key = self.kargs['cliente'])[0]
     sujeito_iva = terceiro['sujeito_iva']
     conta_terceiro = terceiro['a_receber']
     try:
         from my_movimento import Movimento
     except:
         from movimento import Movimento
     movimento = Movimento(data = self.kargs['data'], numero = base_models.Sequence().get_sequence('movimento'), num_doc = self.kargs['numero'], descricao = 'Nossa Nota de Entrega', diario = diario, documento = 'entrega', periodo = periodo, estado = 'Rascunho', user = self.kargs['user'], active = False).put()
     try:
         from my_stock import Stock
     except:
         from stock import Stock
     stock = Stock(data = self.kargs['data'], numero = base_models.Sequence().get_sequence('stock'), num_doc = self.kargs['numero'], descricao = 'Nossa Nota de Entrega', documento = 'entrega', periodo = periodo, estado = 'Confirmado', user = self.kargs['user']).put()
     try:
         from my_linha_entrega import LinhaEntrega
     except:
         from linha_entrega import LinhaEntrega
     record_lines = LinhaEntrega(where = "entrega = '{entrega}'".format(entrega = self.kargs['id'])).get()
     if record_lines:
         try:
             from my_linha_movimento import LinhaMovimento
         except:
             from linha_movimento import LinhaMovimento
         try:
             from my_linha_stock import LinhaStock
         except:
             from linha_stock import LinhaStock
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         try:
             from my_familia_produto import FamiliaProduto
         except:
             from familia_produto import FamiliaProduto
         for line in record_lines:
             # aqui depois considerar a contabilização do desconto e do iva
             quantidade = line['quantidade']
             product = Produto().get(key = line['produto'])[0]
             contas = Produto().get_accounts(line['produto'])
             conta_mercadorias = contas['conta_mercadorias']
             conta_gastos = contas['conta_gastos']
             if sujeito_iva:
                 taxa_iva = product['iva']
             else:
                 taxa_iva = to_decimal('0')
             armazem_vendas = None
             familia = FamiliaProduto().get(key = product['familia'])
             if familia:
                 familia = familia[0]
                 if familia['armazem_vendas']:
                     armazem_vendas = familia['armazem_vendas']
             descricao = product['nome']
             total_sem_iva = line['valor_total']/(1+taxa_iva)
             LinhaMovimento(movimento = movimento, descricao = descricao, conta = conta_gastos, quant_debito = quantidade, debito = line['valor_total'], quant_credito = to_decimal('0'), credito = to_decimal('0'), user = self.kargs['user']).put()
             LinhaMovimento(movimento = movimento, descricao = descricao, conta = conta_mercadorias, quant_debito = to_decimal('0'), debito = to_decimal('0'), quant_credito = quantidade, credito = line['valor_total'], user = self.kargs['user']).put()
             LinhaStock(stock = stock, descricao = descricao, produto = line['produto'], armazem = armazem_vendas, quant_saida = quantidade, quant_entrada = to_decimal('0'), user = self.kargs['user']).put()
             LinhaStock(stock = stock, descricao = descricao, produto = line['produto'], armazem = armazem_cliente, quant_saida = to_decimal('0'), quant_entrada = quantidade, user = self.kargs['user']).put()
         self.put()
         ctx_dict = get_context(window_id)
         ctx_dict['main_key'] = self.kargs['id']
         set_context(window_id, ctx_dict)
         return form_edit(window_id = window_id).show()
     else:
         return error_message('Não pode confirmar entregas sem linhas de Entrega! \n')
예제 #18
0
 def Gera_Facturas(self, key, window_id):
     """
     Gera uma factura por cada linha de leitura
     """
     try:
         from my_factura_cli import FacturaCliente
     except:
         from factura_cli import FacturaCliente
     try:
         from my_linha_factura_cli import LinhaFacturaCliente
     except:
         from linha_factura_cli import LinhaFacturaCliente
     try:
         from my_produto import Produto
     except:
         from produto import Produto
     self.kargs = get_model_record(model=self, key=key)
     sql = """
         SELECT terceiro.id AS cliente, contador_contrato.contador AS contador, contrato.tipo 
         AS tipo_contrato FROM terceiro 
         JOIN contrato
         ON contrato.cliente = terceiro.id
         JOIN contador_contrato
         ON contador_contrato.contrato = contrato.id
         WHERE contador_contrato.estado = 'activo'
         """
     lista_clientes = run_sql(sql)
     clientes = {}
     tipos_contrato = {}
     for c in lista_clientes:
         clientes[c['contador']] = c['cliente']
         tipos_contrato[c['contador']] = c['tipo_contrato']
     sql = """
     SELECT * from produto where nome in ('Impresso', 'Taxa de Manutenção', 'Água Canalizada')
     """
     lista_produtos = run_sql(sql)
     produtos = {}
     for p in lista_produtos:
         produtos[p['nome']] = {
             'id': p['id'],
             'unidade': p['unidade_medida_venda'],
             'iva': p['iva'],
             'preco_venda': p['preco_venda']
         }
     linhas_leitura = LinhaLeitura(where="""leitura={leitura}""".format(
         leitura=key)).get()[1]
     for linha in linhas_leitura:
         sql = """
             SELECT max(linha_leitura.leitura_actual) as leitura_actual FROM linha_leitura 
             JOIN leitura
             ON leitura.id = linha_leitura.leitura
             WHERE leitura.data < (SELECT data FROM leitura WHERE id = '{leitura}') 
             AND leitura.zona = (SELECT zona FROM leitura WHERE id = '{leitura}')
             AND linha_leitura.contador = {contador}""".format(
             leitura=linha['leitura'], contador=linha['contador'])
         leitura_anterior = run_sql(sql)
         if leitura_anterior and leitura_anterior[0][
                 'leitura_actual'] != None:
             leitura_anterior = leitura_anterior[0]['leitura_actual']
         else:
             leitura_anterior = 0
         prod1 = produtos['Impresso']
         prod2 = produtos['Taxa de Manutenção']
         #aqui nos termos da politica de escalões devo cobrar o correspondente a cada escalao
         #ou seja:
         #4 M3 a 220, 4 a 250 3 o resto a 350
         prod3 = produtos['Água Canalizada']
         tipo = tipos_contrato[linha['contador']]
         quantidade = linha['leitura_actual'] - leitura_anterior
         precos = Produto().get_sale_prices_escaloes(
             produto=prod3['id'],
             quantidade=quantidade,
             unidade=prod3['unidade'],
             categoria=tipo,
             terminal=get_terminal(bottle.request.session['terminal']))
         #print (precos)
         residual = to_decimal(prod1['preco_venda']) + to_decimal(
             prod2['preco_venda'])
         for preco in precos:
             residual += to_decimal(precos[preco][0]) * to_decimal(
                 precos[preco][1])
         numero_factura = base_models.Sequence().get_sequence('factura_cli')
         factura = FacturaCliente(estado='Rascunho',
                                  residual=residual,
                                  user=self.kargs['user'],
                                  data=self.kargs['data'],
                                  numero=numero_factura,
                                  cliente=clientes[linha['contador']],
                                  zona=self.kargs['zona'],
                                  leitura=self.kargs['id'],
                                  vendedor=self.kargs['user'],
                                  contador=linha['contador'],
                                  leitura_actual=linha['leitura_actual'],
                                  leitura_anterior=leitura_anterior).put()
         # aqui depois modificar o produto para que eu diga que produtos facturar, por enquanto fica hardcoded
         LinhaFacturaCliente(factura_cli=factura,
                             produto=prod1['id'],
                             descricao='',
                             quantidade=1,
                             unidade=prod1['unidade'],
                             valor_unitario=prod1['preco_venda'],
                             desconto=0,
                             iva=prod1['iva'],
                             valor_total=prod1['preco_venda'],
                             user=self.kargs['user']).put()
         LinhaFacturaCliente(factura_cli=factura,
                             produto=prod2['id'],
                             descricao='',
                             quantidade=1,
                             unidade=prod2['unidade'],
                             valor_unitario=prod2['preco_venda'],
                             desconto=0,
                             iva=prod2['iva'],
                             valor_total=prod2['preco_venda'],
                             user=self.kargs['user']).put()
         for preco in precos:
             total = to_decimal(precos[preco][0]) * to_decimal(
                 precos[preco][1])
             LinhaFacturaCliente(factura_cli=factura,
                                 produto=prod3['id'],
                                 descricao=preco,
                                 quantidade=to_decimal(precos[preco][0]),
                                 unidade=prod3['unidade'],
                                 valor_unitario=to_decimal(
                                     precos[preco][1]),
                                 desconto=0,
                                 iva=prod3['iva'],
                                 valor_total=total,
                                 user=self.kargs['user']).put()
         LinhaLeitura(factura=factura,
                      user=self.kargs['user'],
                      id=linha['id']).put()
     self.kargs['estado'] = 'Facturado'
     self.put()
     return form_edit(window_id=window_id).show()
예제 #19
0
 def Cancelar(self, key, window_id):
     """
     Estorna movimento contabilistico
     extorna caso confirmada ou simplesmente cancela se em rascunho
     """
     self.kargs = get_model_record(model=self, key=key)
     self.kargs['estado'] = 'Cancelado'
     #print (self.kargs)
     try:
         from my_diario import Diario
     except:
         from diario import Diario
     diario = Diario().get_diario(diario='compras')
     try:
         from my_periodo import Periodo
     except:
         from periodo import Periodo
     periodo = Periodo().get_periodo(data=str(datetime.date.today()))
     #Valida se o cliente é sujeito a iva
     try:
         from my_terceiro import Terceiro
     except:
         from terceiro import Terceiro
     terceiro = Terceiro().get(key=self.kargs['fornecedor'])[0]
     sujeito_iva = terceiro['sujeito_iva']
     conta_terceiro = terceiro['a_receber']
     #Tanto no movimento como no stock eu poderei ter vários movimentos, por exemplo o movimento em si e a anulação, além disso teremos que ter reconciliação de movimentos.
     try:
         from my_movimento import Movimento
     except:
         from movimento import Movimento
     movimento = Movimento(
         data=datetime.date.today(),
         numero=base_models.Sequence().get_sequence('movimento'),
         num_doc=self.kargs['numero'],
         descricao='Anulação de Vossa Factura',
         documento='factura_forn',
         diario=diario,
         periodo=periodo,
         estado='Confirmado',
         user=self.kargs['user']).put()
     #record['movimento'] = movimento
     try:
         from my_linha_factura_forn import LinhaFacturaFornecedor
     except:
         from linha_factura_forn import LinhaFacturaFornecedor
     record_lines = LinhaFacturaFornecedor(
         where="factura_forn = '{factura}'".format(
             factura=self.kargs['id'])).get()
     if record_lines:
         try:
             from my_linha_movimento import LinhaMovimento
         except:
             from linha_movimento import LinhaMovimento
         try:
             from my_produto import Produto
         except:
             from produto import Produto
         try:
             from my_familia_produto import FamiliaProduto
         except:
             from familia_produto import FamiliaProduto
         for line in record_lines:
             # aqui depois considerar a contabilização do desconto
             quantidade = to_decimal(line['quantidade'])
             product = Produto().get(key=line['produto'])[0]
             contas = Produto().get_accounts(line['produto'])
             conta_gastos = contas['conta_gastos']
             if sujeito_iva:
                 taxa_iva = product['iva']
             else:
                 taxa_iva = to_decimal(0)
             descricao = product['nome']
             total_sem_iva = line['valor_total'] / (1 + taxa_iva)
             LinhaMovimento(movimento=movimento,
                            descricao=descricao,
                            conta=conta_gastos,
                            quant_debito=quantidade,
                            debito=total_sem_iva,
                            quant_credito=to_decimal(0),
                            credito=to_decimal(0),
                            user=self.kargs['user']).put()
             LinhaMovimento(movimento=movimento,
                            descricao=descricao,
                            conta=conta_terceiro,
                            quant_debito=to_decimal(0),
                            debito=to_decimal(0),
                            quant_credito=quantidade,
                            credito=total_sem_iva,
                            user=self.kargs['user']).put()
     self.put()
     ctx_dict = get_context(window_id)
     ctx_dict['main_key'] = self.kargs['id']
     set_context(window_id, ctx_dict)
     return form_edit(window_id=window_id).show()
예제 #20
0
    def Confirmar(self, key, window_id):
        """Gera movimento contabilistico (conta de receitas contra conta de terceiros)"""
        self.kargs = get_model_record(model=self, key=key)
        self.kargs['estado'] = 'Confirmado'
        if not self.kargs['numero']:
            self.kargs['numero'] = base_models.Sequence().get_sequence(
                'factura_forn')
        try:
            from my_diario import Diario
        except:
            from diario import Diario
        diario = Diario().get_diario(diario='compras')
        try:
            from my_periodo import Periodo
        except:
            from periodo import Periodo
        periodo = Periodo().get_periodo(data=self.kargs['data'])
        #Valida se o cliente é sujeito a iva
        try:
            from my_terceiro import Terceiro
        except:
            from terceiro import Terceiro
        terceiro = Terceiro().get(key=self.kargs['fornecedor'])[0]
        sujeito_iva = terceiro['sujeito_iva']
        conta_terceiro = terceiro['a_receber']
        try:
            from my_movimento import Movimento
        except:
            from movimento import Movimento

        movimento = Movimento(
            data=self.kargs['data'],
            numero=base_models.Sequence().get_sequence('movimento'),
            num_doc=self.kargs['numero'],
            descricao='Vossa Factura',
            diario=diario,
            documento='factura_forn',
            periodo=periodo,
            estado='Confirmado',
            user=self.kargs['user']).put()
        #self.kargs['movimento'] = movimento
        try:
            from my_linha_factura_forn import LinhaFacturaFornecedor
        except:
            from linha_factura_forn import LinhaFacturaFornecedor
        record_lines = LinhaFacturaFornecedor(
            where="factura_forn = '{factura}'".format(
                factura=self.kargs['id'])).get()
        if record_lines:
            try:
                from my_linha_movimento import LinhaMovimento
            except:
                from linha_movimento import LinhaMovimento
            try:
                from my_produto import Produto
            except:
                from produto import Produto
            try:
                from my_familia_produto import FamiliaProduto
            except:
                from familia_produto import FamiliaProduto
            for line in record_lines:
                # aqui depois considerar a contabilização do desconto
                quantidade = float(line['quantidade'])
                product = Produto().get(key=line['produto'])[0]
                contas = Produto().get_accounts(line['produto'])
                #print (contas)
                conta_gastos = contas['conta_gastos']
                if sujeito_iva:
                    taxa_iva = product['iva']
                else:
                    taxa_iva = to_decimal(0)
                descricao = product['nome']
                total_sem_iva = line['valor_total'] / (1 + taxa_iva)
                LinhaMovimento(movimento=movimento,
                               descricao=descricao,
                               conta=conta_terceiro,
                               quant_debito=quantidade,
                               debito=total_sem_iva,
                               quant_credito=to_decimal(0),
                               credito=to_decimal(0),
                               user=self.kargs['user']).put()
                LinhaMovimento(movimento=movimento,
                               descricao=descricao,
                               conta=conta_gastos,
                               quant_debito=to_decimal(0),
                               debito=to_decimal(0),
                               quant_credito=quantidade,
                               credito=total_sem_iva,
                               user=self.kargs['user']).put()
            self.put()
            ctx_dict = get_context(window_id)
            ctx_dict['main_key'] = self.kargs['id']
            set_context(window_id, ctx_dict)
            return form_edit(window_id=window_id).show()
        else:
            return error_message(
                'Não pode confirmar facturas sem linhas de factura! \n')
예제 #21
0
    def get_informacao_fornecedor(self, key):
        self.kargs = get_model_record(model=self, key=key)
        if self.kargs['forn'] == '1':
            facturas = FacturaFornecedor(
                where=
                "retencao='SIM' AND to_char(date_create,'YYYY-MM')='{ano}-{mes}'"
                .format(ano=self.kargs['ano'],
                        mes=self.kargs['periodo'])).get()
            if facturas:
                print("\n\n\n\nRRRRRRRRRRRRRRRRRRRRRR\n\n", facturas,
                      "\nRRRRRRRRRRRRRRRRRRRRR\n\n\n\n")
                content = {
                    'user': self.kargs['user'],
                    'xml_modelo_dpr': str(key),
                    'estado': 'Gerado',
                    'nome': erp_config.enterprise,
                    'nif': erp_config.nif,
                    'ano': self.kargs['ano'],
                    'periodo': self.kargs['periodo'],
                    'cd_af': self.kargs['cd_af'],
                    'dec': self.kargs['dec'],
                    'dt_emissao': self.kargs['dt_emissao']
                }
                id_anexo = XMLAnexoFornecedorDPR(**content).put()

                for factura in facturas:
                    terceiro = Terceiro(where="id='{id}'".format(
                        id=factura['fornecedor'])).get()
                    if terceiro:
                        terceiro = terceiro[0]
                        linhas = LinhaFacturaFornecedor(
                            where="factura_forn='{id}'".format(
                                id=factura['id'])).get()
                        if linhas:
                            produto = Produto(where="id='{id}'".format(
                                id=linhas[0]['produto'])).get()
                            if produto:
                                content = {
                                    'user':
                                    self.kargs['user'],
                                    'xml_anexo_fornecedor_dpr':
                                    str(id_anexo),
                                    'origem':
                                    terceiro['origem'],
                                    'designacao':
                                    terceiro['nome'],
                                    'nif':
                                    terceiro['nif'],
                                    'tp_doc':
                                    'FT',
                                    'serie':
                                    factura['serie'],
                                    'num_doc':
                                    factura['numero'],
                                    'dt_recibo':
                                    factura['data'],
                                    'vl_recibo':
                                    factura['total'],
                                    'tipologia':
                                    self.get_tipologiaCliFornecedor(
                                        rendimento=produto[0]['tipologia'],
                                        entidade=terceiro['tipo_entidade']),
                                    'tx_ret':
                                    int(to_decimal(factura['taxa_retencao'])),
                                    'ir_teu':
                                    factura['valor_retido'],
                                    'tp_oper':
                                    self.kargs['tipo_operacao']
                                }
                                XMLLinhaAnexoFornecedorDPR(**content).put()
예제 #22
0
 def get_produtos(self):
     return Produto().get_options_sellable()