def query_by_ruta(cls, urlkey_ruta, filtro=False): if filtro: ruta_key = ndb.Key(urlsafe=urlkey_ruta) return Cliente.query(ndb.AND(Cliente.ruta == ruta_key, Cliente.credito_activo == False)).order(Cliente.nombres).fetch() else: ruta_key = ndb.Key(urlsafe=urlkey_ruta) return Cliente.query(Cliente.ruta == ruta_key).order(Cliente.nombres).fetch()
def delete_client(self, request): cliente = Cliente.get_by_id(request.id) if not cliente: # If the stock doesn't exist, raise an error raise endpoints.BadRequestException("El ID de ese cliente no existe") cliente.key.delete() # If the stock exists, it removes it from the database time.sleep(1) clientes = Cliente.query().fetch() return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
def setUp(self): self.cliente = Cliente(nome="Henrique", renda=100.00, credito=100.00, status=True) self.cliente.save() self.fornecedor = Fornecedor(nome="Fornecedor Teste") self.fornecedor.save()
def cadastrar_cliente(request): """ Cria formulário cliente.""" if request.method == "POST": form = ClienteForm(request.POST) if form.is_valid(): novo = Cliente(**form.cleaned_data) novo.save() return redirect('funcionario') else: form = ClienteForm() return render(request, "cadastrar_cliente.html", {"form": form})
def update_client(self, request): cliente = Cliente.get_by_id(request.id) if not cliente: # If the stock doesn't exist, raise an error raise endpoints.BadRequestException("El ID de ese cliente no existe") if not (request.documento and request.ruta and request.nombres and request.apellidos): raise endpoints.BadRequestException('Los datos: documento, ruta, nombres y apellidos, son obligatorios.') alert = ClientHelper.actualizar_registro( cliente.key, request.documento, request.ruta, request.nombres, request.apellidos, request.dir_casa, request.tel_casa, request.celular, request.nombre_est, request.dir_est) if alert[0] == "alert-danger": raise endpoints.BadRequestException(alert[1]) time.sleep(1) clientes = Cliente.query().fetch() return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
def existe_documento(cls, documento): if documento: if Cliente.query(Cliente.documento == documento).fetch(): return True else: return False else: return False
def nuevo_registro(cls, documento, ruta, nombres, apellidos, dir_casa, tel_casa, celular, nombre_est, dir_est, imagen_documento, imagen_negocio): existe_ruta = RutaHelper.existe(ruta) existe_documento = cls.existe_documento(documento) if existe_ruta and not existe_documento and documento and nombres and apellidos: con = Consecutivo.get_cliente() nuevo_cliente = Cliente(documento=documento, ruta=existe_ruta.key, nombres=nombres, apellidos=apellidos, dir_casa=dir_casa, tel_casa=tel_casa, celular=celular, nombre_est=nombre_est, dir_est=dir_est, consecutivo=con, credito_activo=False, imagen_documento=imagen_documento, imagen_negocio=imagen_negocio) nuevo_cliente.put() return ["alert-success", "El registro ha sido exitoso"] else: return ["alert-danger", "No se pudo completar el registro"]
def cliente_cadastro(request): form_cliente = FormCliente(request.POST) form_endereco = FormEndereco(request.POST) if form_endereco.is_valid() and form_cliente: form_endereco.save(commit=False) end = form_endereco.save() # Dados pessoais nome = (request.POST.get('nome_completo')) data = (request.POST.get('data_de_nascimento')) cpf_input = (request.POST.get('cpf')) telefone_input = (request.POST.get('telefone')) email_input = (request.POST.get('email')) senha_input = (request.POST.get('senha')) clienteOBJ = Cliente(nome_completo=nome, cpf=cpf_input, tefefone=telefone_input, data_nascimento=data, email=email_input, senha=senha_input, endereco=end) clienteOBJ.save() return render(request, 'core/cadastro_clientes.html', {'form_cliente': form_cliente, 'form_endereco': form_endereco})
def create_client(self, request): if not (request.documento and request.ruta and request.nombres and request.apellidos): raise endpoints.BadRequestException('Los datos: documento, ruta, nombres y apellidos, son obligatorios.') alert = ClientHelper.nuevo_registro( request.documento, request.ruta, request.nombres, request.apellidos, request.dir_casa, request.tel_casa, request.celular, request.nombre_est, request.dir_est) if alert[0] == "alert-danger": raise endpoints.BadRequestException(alert[1]) time.sleep(1) clientes = Cliente.query().fetch() return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
def test_calcula_venda_valor_final(self): cliente = Cliente(nome="Henrique", renda=100.00, credito=100.00, status=True) cliente.save() venda_01 = Venda(cliente=cliente) venda_01.save() item_1 = ItemDeVenda() produto_1 = Produto(descricao="Bolinha", valor_venda=5.00) produto_1.save() item_1.produto = produto_1 item_1.quantidade = 3 item_1.calcula_valor_total() item_1.venda = venda_01 item_1.save() item_2 = ItemDeVenda() produto_2 = Produto(descricao="Osso", valor_venda=2.00) produto_2.save() item_2.produto = produto_2 item_2.quantidade = 2 item_2.calcula_valor_total() item_2.venda = venda_01 item_2.save() item_3 = ItemDeVenda() produto_3 = Produto(descricao="Ração Barata", valor_venda=1.50) produto_3.save() item_3.produto = produto_3 item_3.quantidade = 3.5 item_3.calcula_valor_total() item_3.venda = venda_01 item_3.save() venda_01.calcula_valor_final() self.assertEqual(24.25, venda_01.valor_final)
def has_children(cls, key): key = ndb.Key(urlsafe=key) kind = key.kind() children = 0 if kind == 'Ciudad': children += Ruta.query(Ruta.ciudad == key).count() elif kind == 'Ruta': children += Abono.query(Abono.ruta == key).count() children += Cliente.query(Cliente.ruta == key).count() children += Credito.query(Credito.ruta == key).count() children += Transaccion.query(Transaccion.ruta == key).count() children += User.query(User.ruta == key).count() elif kind == 'Cliente': pass elif kind == 'Credito': pass return True if children > 0 else False
def init_client(self): '''create fake ciente to test''' print('creating fake client ....') client_list = [] for _ in range(100): list_ramo = ['grafica', 'arquitetura', 'tecnologia', 'entretenimento', 'segurança', 'construção', 'restaurante','outros'] _tipo = random.randint(1,2), _cpf_cnpj = self.fake.cnpj() if _tipo == 2 else self.fake.cpf() _mensalista = True if random.randint(1,3000) % 4 == 0 else False _user = random.choice(User.objects.all()) data = { 'razao_social': f'{self.fake.catch_phrase_attribute()} {self.fake.company()} ', 'nome_fantasia': f'{self.fake.catch_phrase_attribute()} {self.fake.company()} ', 'tipo': random.randint(1,2), 'documento': _cpf_cnpj, 'user': _user, 'ramo': random.choice(list_ramo), 'mensalista': _mensalista, } client_list.append(Cliente(**data)) Cliente.objects.bulk_create(client_list)
def get_clients(self, request): clientes = Cliente.query().fetch() return ClientListResponse(clientes=[ClientApiHelper().to_message(cliente) for cliente in clientes if clientes])
def query_all(cls, filtro=False): if filtro: return Cliente.query(Cliente.credito_activo == False).order(Cliente.nombres).fetch() else: return Cliente.query().order(Cliente.nombres).fetch()
class TestMovimentacao(TestCase): cliente = Cliente() fornecedor = Fornecedor() def setUp(self): self.cliente = Cliente(nome="Henrique", renda=100.00, credito=100.00, status=True) self.cliente.save() self.fornecedor = Fornecedor(nome="Fornecedor Teste") self.fornecedor.save() def test_calcula_valor_total_do_item_venda(self): item_de_venda = ItemDeVenda() item_de_venda.produto = self.cria_produto(valor_venda=5.00, valor_compra=0.00) item_de_venda.quantidade = 15 item_de_venda.calcula_valor_total() self.assertEqual(75, item_de_venda.valor_total) def test_calcula_valor_de_venda(self): venda_01 = Venda(cliente=self.cliente) venda_01.save() item_1 = ItemDeVenda() item_1.produto = self.cria_produto(5.00, 0.00) item_1.quantidade = 3 item_1.calcula_valor_total() item_1.venda = venda_01 item_1.save() item_2 = ItemDeVenda() item_2.produto = self.cria_produto(2.00, 0.00) item_2.quantidade = 2 item_2.calcula_valor_total() item_2.venda = venda_01 item_2.save() item_3 = ItemDeVenda() item_3.produto = self.cria_produto(1.50, 0.00) item_3.quantidade = 3.5 item_3.calcula_valor_total() item_3.venda = venda_01 item_3.save() venda_01.calcula_valor() self.assertEqual(24.25, venda_01.valor) def test_cria_fluxo_de_caixa_para_venda(self): fluxo_de_caixa = FluxoDeCaixa(data_hora_abertura=datetime.now()) fluxo_de_caixa.valor_abertura = Decimal(1500.00) fluxo_de_caixa.save() fluxo_de_caixa.movimentacoes.add(self.cria_venda(75.00)) fluxo_de_caixa.atualiza() self.assertEqual(75.00, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.movimentacoes.add(self.cria_venda(37.50)) fluxo_de_caixa.atualiza() self.assertEqual(112.50, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.movimentacoes.add(self.cria_venda(15.00)) fluxo_de_caixa.atualiza() self.assertEqual(127.50, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.movimentacoes.add(self.cria_venda(125.00)) fluxo_de_caixa.atualiza() self.assertEqual(252.50, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.fecha_caixa() self.assertEqual(1752.50, fluxo_de_caixa.valor_final) self.assertEqual(datetime.now().date(), fluxo_de_caixa.data_hora_fechamento.date()) def test_cria_fluxo_de_caixa_para_compra(self): fluxo_de_caixa = FluxoDeCaixa(data_hora_abertura=datetime.now()) fluxo_de_caixa.valor_abertura = Decimal(1500.00) fluxo_de_caixa.save() fluxo_de_caixa.movimentacoes.add(self.cria_compra(100.00)) fluxo_de_caixa.atualiza() self.assertEqual(-100.00, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.movimentacoes.add(self.cria_compra(250.00)) fluxo_de_caixa.atualiza() self.assertEqual(-350.00, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.movimentacoes.add(self.cria_compra(575.25)) fluxo_de_caixa.atualiza() self.assertEqual(-925.25, fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.fecha_caixa() self.assertEqual(574.75, fluxo_de_caixa.valor_final) self.assertEqual(datetime.now().date(), fluxo_de_caixa.data_hora_fechamento.date()) def test_cria_fluxo_de_caixa_para_os_interna(self): fluxo_de_caixa = FluxoDeCaixa(data_hora_abertura=datetime.now()) fluxo_de_caixa.valor_abertura = Decimal(1500.00) fluxo_de_caixa.save() produto_shampo = self.cria_produto(15.00, 0.00) produto_condicionador = self.cria_produto(3.50, 0.00) estoque_shampo = Estoque() estoque_shampo.produto = produto_shampo estoque_shampo.quantidade = 20 estoque_shampo.save() estoque_condicionador = Estoque() estoque_condicionador.produto = produto_condicionador estoque_condicionador.quantidade = 5 estoque_condicionador.save() produtos = [produto_shampo, produto_condicionador] os_interna1 = self.cria_order_servico_interna(Decimal(100.00), produtos) fluxo_de_caixa.movimentacoes.add(os_interna1) fluxo_de_caixa.atualiza() self.assertEqual(Decimal(118.50), fluxo_de_caixa.valor_em_fluxo) os_interna2 = self.cria_order_servico_interna(Decimal(75.00), []) fluxo_de_caixa.movimentacoes.add(os_interna2) fluxo_de_caixa.atualiza() self.assertEqual(Decimal(193.50), fluxo_de_caixa.valor_em_fluxo) os = self.cria_order_servico_externa(Decimal(25.00)) fluxo_de_caixa.movimentacoes.add(os) fluxo_de_caixa.atualiza() self.assertEqual(Decimal(218.50), fluxo_de_caixa.valor_em_fluxo) fluxo_de_caixa.fecha_caixa() estoque_shampo.movimentacoes.add(os_interna1) estoque_shampo.movimentacoes.add(os_interna2) estoque_shampo.atualiza() estoque_condicionador.movimentacoes.add(os_interna1) estoque_condicionador.movimentacoes.add(os_interna2) estoque_condicionador.atualiza() self.assertEqual(19, estoque_shampo.quantidade) self.assertEqual(4, estoque_condicionador.quantidade) self.assertEqual(1718.50, fluxo_de_caixa.valor_final) self.assertEqual(datetime.now().date(), fluxo_de_caixa.data_hora_fechamento.date()) def test_quantidade_em_estoque_para_compra_de_produto(self): produto = self.cria_produto(5.00, 1.50) estoque = Estoque(produto=produto, quantidade=50) estoque.save() compra = Compra(fornecedor=self.fornecedor) compra.save() item = ItemDeCompra(produto=produto, quantidade=50, compra=compra) item.save() compra.save() estoque.movimentacoes.add(compra) estoque.atualiza() self.assertEqual(100, estoque.quantidade) def test_quantidade_em_estoque_para_venda_de_produto(self): produto = self.cria_produto(5.00, 1.50) estoque = Estoque(produto=produto, quantidade=50) estoque.save() venda = Venda(cliente=self.cliente) venda.save() item = ItemDeVenda(produto=produto, quantidade=3, venda=venda) item.save() venda.save() estoque.movimentacoes.add(venda) estoque.atualiza() self.assertEqual(47, estoque.quantidade) def cria_produto(self, valor_venda, valor_compra): produto = Produto(descricao="Produto Teste", valor_venda=valor_venda, valor_compra=valor_compra) produto.save() return produto def cria_venda(self, valor): venda = Venda(cliente=self.cliente) venda.save() item = ItemDeVenda(produto=self.cria_produto(valor, 0.00), quantidade=1, venda=venda) item.save() venda.save() return venda def cria_compra(self, valor): compra = Compra(fornecedor=self.fornecedor) compra.save() item = ItemDeCompra(produto=self.cria_produto(0.00, valor), quantidade=1, compra=compra) item.save() compra.save() return compra def cria_order_servico_interna(self, valor, produtos): agenda = Agenda(cliente=self.cliente) agenda.save() servico = Servico(descricao="Servico Teste", valor_venda=valor) servico.save() especie = Especie(nome="Gato") especie.save() raca = Raca(nome="Siamês", especie=especie) raca.save() animal = Animal(nome="Aimal Teste", dono=self.cliente, raca=raca) animal.save() os = OrdemServicoInterna(agenda=agenda, servico=servico, animal=animal, data_horario_inicial=datetime.now(), data_horario_final=datetime.now() + timedelta(hours=1)) os.save() os.produtos.set(produtos) os.save() return os def cria_order_servico_externa(self, valor): agenda = Agenda(cliente=self.cliente) agenda.save() servico = Servico(descricao="Servico Teste", valor_venda=valor) servico.save() os = OrdemServicoExterna(agenda=agenda, servico=servico, data_horario_inicial=datetime.now(), data_horario_final=datetime.now() + timedelta(hours=1)) os.save() return os