Esempio n. 1
0
 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])
Esempio n. 3
0
    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()
Esempio n. 4
0
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])
Esempio n. 6
0
 def existe_documento(cls, documento):
     if documento:
         if Cliente.query(Cliente.documento == documento).fetch():
             return True
         else:
             return False
     else:
         return False
Esempio n. 7
0
 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"]
Esempio n. 8
0
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])
Esempio n. 10
0
    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)
Esempio n. 11
0
 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
Esempio n. 12
0
 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])
Esempio n. 14
0
 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()
Esempio n. 15
0
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