from django.http import HttpResponse,FileResponse
from django.shortcuts import render,redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate,login,logout,update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm

from django.contrib.auth.models import User,Group
from django.contrib import messages
from PIL import Image
import os
from django.conf import settings
from datetime import date
from django.core.paginator import Paginator
import time
from hashlib import sha256

# email
from django.core.mail import send_mail
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Create your views here.
from django.db.models import Q
from .models import *
from usuario.models import Usuario
from usuario.models import Clientes
from .Maputo_Provincia import  *
import json
from .distritos import *
import main.models  as web_h
# from paciente.models import historico_compras as PacienteCompras
#Email
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate,Table
# from weasyprint import HTML
# from xhtml2pdf import pisa
from django.http import FileResponse
from django.conf import settings
import os
from django.http import HttpResponse
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A5
from itertools import zip_longest 
import calendar
from datetime import datetime,timedelta
import tempfile
from django.template.loader import render_to_string
# from weasyprint import HTML, CSS
import xhtml2pdf 

#####
def verificar_acesso_dos_horarios(entrada_str, saida_str):
    # Formato das horas
    formato = "%H:%M"
            
    # Obter a hora atual no formato de string
    hora_atual = datetime.now().strftime(formato)
            
    # Converter strings para objetos datetime
    entrada = datetime.strptime(entrada_str, formato)
    saida = datetime.strptime(saida_str, formato)
    atual = datetime.strptime(hora_atual, formato)
           
    # Verificar se a hora atual está dentro do intervalo de trabalho
    return entrada <= atual <= saida

def verificar_acesso_das_mensalidades(entrada_str, saida_str):
    # Formato das horas
    formato = "%d:%m:%Y"
    
            
    # Obter a hora atual no formato de string
    hora_atual = datetime.now().strftime(formato)
            
    # Converter strings para objetos datetime
    entrada_str = str(entrada_str).replace('/',':')
    saida_str = str(saida_str).replace('/',':')

    entrada = datetime.strptime(entrada_str, formato)
    saida = datetime.strptime(saida_str, formato)
    atual = datetime.strptime(hora_atual, formato)
           
    # Verificar se a hora atual está dentro do intervalo de trabalho
    return entrada <= atual <= saida
def verificar_dia_semana(dia):
    # Obtém a data e o dia da semana atuais
    hoje = datetime.now()
    dia_da_semana = hoje.strftime("%A")  # %A retorna o nome completo do dia da semana em inglês

    # Exibe o dia da semana em português
    dias_da_semana_pt = {
        "Monday": "Segunda-feira",
        "Tuesday": "Terça-feira",
        "Wednesday": "Quarta-feira",
        "Thursday": "Quinta-feira",
        "Friday": "Sexta-feira",
        "Saturday": "Sábado",
        "Sunday": "Domingo"
    }

    #print(f"Hoje é {dias_da_semana_pt[dia_da_semana]}.")
    dia = f"{dias_da_semana_pt[dia_da_semana]}"
    return dia

def ultimo_dia_do_mes():
    # Obtém o mês corrente e o ano corrente
    hoje = datetime.today()
    ano = hoje.year
    mes = hoje.month

    # Encontra o último dia do mês corrente
    ultimo_dia = calendar.monthrange(ano, mes)[1]

    # Retorna a data completa do último dia do mês corrente
    return datetime(ano, mes, ultimo_dia)

def dois_dias_antes_do_ultimo_dia_do_mes():
    # Obtém o mês corrente e o ano corrente
    hoje = datetime.today()
    ano = hoje.year
    mes = hoje.month

    # Encontra o último dia do mês corrente
    ultimo_dia = calendar.monthrange(ano, mes)[1]

    # Data do último dia do mês corrente
    data_ultimo_dia = datetime(ano, mes, ultimo_dia)

    # Calcula a data dois dias antes
    dois_dias_antes = data_ultimo_dia - timedelta(days=2)

    return dois_dias_antes

def um_dias_antes_do_ultimo_dia_do_mes(data):
    # Verifica se o parâmetro é uma string e tenta convertê-lo para um objeto datetime
    if isinstance(data, str):
        try:
            data = datetime.strptime(data, "%d/%m/%Y")
        except ValueError:
            raise ValueError("O formato da data deve ser 'DD/MM/YYYY'.")
    
    # Garante que o parâmetro seja um objeto datetime
    if not isinstance(data, datetime):
        raise ValueError("O parâmetro deve ser uma string no formato 'DD/MM/YYYY' ou um objeto datetime.")

    # Obtém o ano e o mês da data fornecida
    ano = data.year
    mes = data.month

    # Encontra o último dia do mês
    ultimo_dia = calendar.monthrange(ano, mes)[1]

    # Data do último dia do mês
    data_ultimo_dia = datetime(ano, mes, ultimo_dia)

    # Calcula a data dois dias antes
    dois_dias_antes = data_ultimo_dia - timedelta(days=1)

    return dois_dias_antes


# fim automacao

# impressora
def imprimir_algo():
    #########
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = f'attachment; filename="receipt_{venda.id}.pdf"'

    # Crie um objeto Story, que é uma lista de elementos que compõem o documento PDF
    story = []

    # Adicione um estilo ao Story
    styles = getSampleStyleSheet()
    style_normal = styles['Normal']
    style_bold = styles['Heading1']
    # Adicione informações da venda ao Story
    story.append(Paragraph(f'Recibo de Venda : ', style_bold))
    # story.append(Paragraph(f'Número da Venda: {venda.id}', style_normal))
    # Adicione detalhes dos itens vendidos ao Story
    story.append(Paragraph('==== Itens Vendidos ====', style_normal))
    # Adicione o total da venda ao Story
    story.append(Paragraph(f'', style_bold))
    story.append(Paragraph(f'Total da Venda ', style_normal))
    story.append(Paragraph(f'Caixa ', style_normal))
    # story.append(Paragraph(f'Data: {date_} Hora: {hora}', style_normal))
    # Crie um documento PDF com o Story
    doc = SimpleDocTemplate(response, pagesize=A5)
    doc.build(story)
    return response

def generate_receipt_HTML(request,id):
    venda = Facturas.objects.get(id=id)

    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = f'attachment; filename="receipt_{venda.id}.pdf"'

    # Crie um objeto Story, que é uma lista de elementos que compõem o documento PDF
    story = []

    # Adicione um estilo ao Story
    styles = getSampleStyleSheet()
    style_normal = styles['Normal']
    style_bold = styles['Heading1']
    # Adicione informações da venda ao Story
    story.append(Paragraph(f'Recibo de Venda : {venda.id}', style_bold))
    # story.append(Paragraph(f'Número da Venda: {venda.id}', style_normal))
    # Adicione detalhes dos itens vendidos ao Story
    story.append(Paragraph('==== Itens Vendidos ====', style_normal))

    itens = []
    fact = str(venda.factura)
    fact = fact.replace(',','')
    fact = fact.replace(':','')
    fact  = str(fact).split()

    precos = str(venda.preco)
    precos = precos.replace(',','')
    precos = precos.replace(':','')
    precos  = str(precos).split()

    quantidades = str(venda.quantidade)
    quantidades = quantidades.replace(',','')
    quantidades = quantidades.replace(':','')
    quantidades  = str(quantidades).split()

    contador = 0

    for line in fact:

        itens.append(line)
        sp = str(line).replace('_',' ')
        sp_ = quantidades[contador]
        if sp_ == 1 or sp_ == '1':
            unidade = 'unidade'
        else:
            unidade = 'unidades'

        story.append(Paragraph(f'{sp}  {quantidades[contador]} {unidade} : {precos[contador]}mt', style_normal))
        contador = contador + 1

    # for item in venda.factura:
    # story.append(Paragraph(f' unidades x R$ {venda.total}', style_normal))

    # Adicione o total da venda ao Story
    story.append(Paragraph(f'', style_bold))

    story.append(Paragraph(f'Total da Venda : {venda.total}mt', style_normal))

    story.append(Paragraph(f'Caixa : {venda.responsavel}', style_normal))
    date_ = str(venda.data).split()
    date_ = date_[0]
    story.append(Paragraph(f'Data da Venda: {date_}', style_normal))



    # Crie um documento PDF com o Story
    doc = SimpleDocTemplate(response, pagesize=A5)
    doc.build(story)

    return response




def Export_pdf_HTML(request):
    if request.user.is_authenticated :


        # filename = 'tabela.pdf'

        # pdf = SimpleDocTemplate(
        #     filename,
        #     pagesize=letter
        # )

        # tabela = Table(data_li)

        # elems = []
        # elems.append(tabela)

        # pdf.build(elems)


        buf = io.BytesIO()
        c = canvas.Canvas(buf, pagesize=(300.27,400.89), bottomup=0)
        textob = c.beginText()
        textob.setTextOrigin(inch,inch)
        textob.setFont("Helvetica",12)
        venda = Facturas.objects.get(id=1)


        data_lista = []
        #add same lines


        for line in range(0,1):
            textob.textLine('Mult_Scor')
            textob.textLine('Produto 1')



        c.drawText(textob)
        c.showPage()
        c.save()
        buf.seek(0)
        return FileResponse(buf, as_attachment=True, filename='recibo.pdf')
    else:
        return redirect(login)



def Cad_produto_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            data_lista_categoria = []

            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao:
                    data_lista_categoria.append(c)

            if request.method == 'POST':
                abrir_popup = True
                nome_produto_fixo = request.POST.get('produto')
                # ficheiro = request.FILES.get('imagem')
                categoria_produto = request.POST.get('categoria')
                preco_produto_fixo = request.POST.get('preco')
                lucro_produto_fixo = request.POST.get('lucro')
                verificar = Stok_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao,produto=nome_produto_fixo,categoria=categoria_produto)
                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')

                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                if not verificar:
                    Data_up = Stok_fixo.objects.create(id_anfitriao=usuario.id_anfitriao,produto=nome_produto_fixo,preco=preco_produto_fixo,categoria=categoria_produto,lucro=lucro_produto_fixo,data_venda=data_v,hora_venda=hora_v,responsavel=resp)
                    messages.info(request,f'{nome_produto_fixo} criado com sucesso!')
                else:
                    messages.info(request,f'{nome_produto_fixo} ja existe!')

                context = {'usuario':usuario,'categ':data_lista_categoria,'abrir_popup':abrir_popup}
                return render(request,'multcaixa/cad_produto.html',context)
            else:
                context = {'usuario':usuario,'categ':data_lista_categoria}
                return render(request,'multcaixa/cad_produto.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def Categoria_html_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            categorias1 = Categoria_stock.objects.all().order_by('-id')
            data_lista_categoria = []

            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao:
                    data_lista_categoria.append(c)
            for c1 in categorias1:
                if c1.id_anfitriao == usuario.id_anfitriao:
                    data_lista_categoria.append(c1)
            if request.method == 'POST':
                abrir_popup = True
                caixa = request.POST.get('caixa')
                # ficheiro = request.FILES.get('imagem')
                categoria_produto = request.POST.get('categoria')

                verificar1 = Categoria_stock.objects.filter(id_anfitriao=usuario.id_anfitriao,categoria=categoria_produto)
                verificar = Categoria_stock_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao,categoria=categoria_produto)


                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                if not verificar1 and caixa == '1':
                    Data_up = Categoria_stock.objects.create(id_anfitriao=usuario.id_anfitriao,categoria=categoria_produto,caixa=1)
                    messages.info(request,f'{categoria_produto} Criado com sucesso!')
                elif not verificar and caixa == '0':
                    Data_up = Categoria_stock_fixo.objects.create(id_anfitriao=usuario.id_anfitriao,categoria=categoria_produto,caixa=0)
                    messages.info(request,f'{categoria_produto} Criado com sucesso!')
                else:
                    if not caixa:
                        messages.info(request,'campo vazio!')
                    else: messages.info(request,f'{categoria_produto} Ja existe!')

                context = {'usuario':usuario,'categ':data_lista_categoria,'abrir_popup':abrir_popup}
                return render(request,'multcaixa/cad_categoria.html',context)
            else:
                context = {'usuario':usuario,'categ':data_lista_categoria}
                return render(request,'multcaixa/cad_categoria.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def Atualizar_categ_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                abrir_popup = True
                status_act = request.POST.get('activar_P')
                categoria_produto = request.POST.get('categoria')
                ficheiro = request.FILES.get('imagem')
                stock_fixo = Stok_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)

                PRODUTO = Categoria_stock_fixo.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)

                if PRODUTO:
                    if categoria_produto:
                        for item in stock_fixo:
                            if item.id_anfitriao == usuario.id_anfitriao and item.categoria == PRODUTO.categoria:
                                item.categoria = categoria_produto
                                item.save()

                        PRODUTO.categoria = categoria_produto
                        PRODUTO.save()

                    if ficheiro:
                        PRODUTO.imagem = ficheiro
                        PRODUTO.save()

                    if status_act:
                        PRODUTO.status = 1
                        PRODUTO.save()
                        # print('on')
                    if not status_act:
                        PRODUTO.status = 0
                        PRODUTO.save()
                        # print('off')

                    return  redirect(Editar_categ_HTML,id)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Atualizar_categ_stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                status_act = request.POST.get('activar_P')
                categoria_produto = request.POST.get('categoria')
                ficheiro = request.FILES.get('imagem')
                stock = Stok.objects.filter(id_anfitriao=usuario.id_anfitriao)

                PRODUTO = Categoria_stock.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)

                if PRODUTO:
                    if categoria_produto:
                        
                        for item in stock:
                            if item.id_anfitriao == usuario.id_anfitriao and item.categoria == PRODUTO.categoria:
                                item.categoria = categoria_produto
                                item.save()

                        PRODUTO.categoria = categoria_produto
                        PRODUTO.save()

                    if ficheiro:
                        PRODUTO.imagem = ficheiro
                        PRODUTO.save()

                    if status_act:
                        PRODUTO.status = 1
                        PRODUTO.save()
                        # print('on')
                    if not status_act:
                        PRODUTO.status = 0
                        PRODUTO.save()
                        # print('off')

                    return  redirect(Editar_categ_stock_HTML,id)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


def Cad_stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock.objects.all().order_by('-id')
            data_lista_categoria = []

            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao:
                    data_lista_categoria.append(c)

            if request.method == 'POST':
                abrir_popup = True
                Nome_generico = request.POST.get('NomeGenerico')
                Nome_comercial = request.POST.get('NomeComercial')
                Subcateg = request.POST.get('Subcateg')
                Unidademedida = request.POST.get('unidademedida')

                quantidade_produto = request.POST.get('quantidade')
                preco_produto = request.POST.get('preco')
                lucro_produto = request.POST.get('lucro')
                # ficheiro = request.FILES.get('imagem')
                categoria_produto = request.POST.get('categoria')
                Data_validade = request.POST.get('DataValidade')
                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')

                verificar = Stok.objects.filter(id_anfitriao=usuario.id_anfitriao,nome_comercial=Nome_comercial,nome_generico=Nome_generico,categoria=categoria_produto)
                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                if not verificar:
                    Data_up = Stok.objects.create(id_anfitriao=usuario.id_anfitriao,nome_generico=Nome_generico,nome_comercial=Nome_comercial,unidade_medida=Unidademedida,categoria=categoria_produto,subcateg=Subcateg,quantidade=quantidade_produto,preco=preco_produto,data_validade=Data_validade,data_venda=data_v,hora_venda=hora_v,responsavel=resp)
                    messages.info(request,f'{Nome_generico}/{Nome_comercial} Cadastrado com sucesso!')
                else:
                    messages.info(request,f'{Nome_generico} / {Nome_comercial} ja existe!')

                context = {'usuario':usuario,'categ':data_lista_categoria,'abrir_popup':abrir_popup}
                return render(request,'multcaixa/cad_produto_stock.html',context)
            else:
                context = {'usuario':usuario,'categ':data_lista_categoria}
                return render(request,'multcaixa/cad_produto_stock.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def Meu_stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and  usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio' and  usuario.tipo_de_conta == 'supervisor' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok.objects.all().order_by('-id')
            data_factura = Meus_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao,status='aberto')
            cont_vazio = 0
            data_lista = []
            data_lista_factura = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.nome_comercial} {PRODUTO.nome_generico} Q : {PRODUTO.quantidade}',responsavel=resp_v,tipo='Excuindo Stock',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')
            if request.method == 'POST':
                modo = request.POST.get('modo')
                ID_factura = request.POST.get('id_factura')
                ID_stock = request.POST.get('id_stock')
                Quantidade = request.POST.get('quantidade')
                Data_validade = request.POST.get('data_validade')

                Preco_unitario = request.POST.get('preco_unitario')
                Lote = request.POST.get('lote')
                Destino = request.POST.get('destino')
                Total_liquido = int(Quantidade) * int(Preco_unitario)
                up_fact = Meus_Pedidos.objects.get(id=ID_factura,id_anfitriao=usuario.id_anfitriao)
                
                up_stock = Stok.objects.get(id=ID_stock,id_anfitriao=usuario.id_anfitriao)
                cat = Categoria_stock.objects.get(categoria=up_stock.categoria,id_anfitriao=usuario.id_anfitriao)

                verificar = Itens_Pedidos.objects.filter(id_pedido=ID_factura,id_anfitriao=usuario.id_anfitriao,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial)
                up_stock_armazem = Stok_Armazem.objects.filter(id_stock=up_stock.id,id_anfitriao=usuario.id_anfitriao,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial)
                
                if not up_stock_armazem:
                    up = Stok_Armazem.objects.create(
                                id_anfitriao=usuario.id_anfitriao,
                                id_stock=up_stock.id,
                                id_categoria=cat.id,
                                nome_generico=up_stock.nome_generico,
                                nome_comercial=up_stock.nome_comercial,
                                subcateg=up_stock.subcateg,
                                categoria=cat.categoria,
                                quantidade=0,
                                lucro=up_stock.lucro,
                                preco=up_stock.preco
                            )
                if not verificar and Destino == 'partileira':
                    up_criar = Itens_Pedidos.objects.create(id_anfitriao=usuario.id_anfitriao,id_pedido=ID_factura,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial,quantidade=Quantidade,data_validade=Data_validade,preco_unitario=Preco_unitario,lote=Lote,total_liquido=Total_liquido,data=data_v)
                    up_stock.quantidade = up_stock.quantidade + int(Quantidade)
                    up_stock.save()
                    messages.info(request,'Atualizado! Destino Partileira')
                    return redirect(Meu_stock_HTML)

                if not verificar and Destino == 'armazem' and up_stock_armazem:
                    up_stock_armazem = Stok_Armazem.objects.get(id_stock=ID_stock,id_anfitriao=usuario.id_anfitriao)
                    up_criar = Itens_Pedidos.objects.create(id_anfitriao=usuario.id_anfitriao,id_pedido=ID_factura,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial,quantidade=Quantidade,data_validade=Data_validade,preco_unitario=Preco_unitario,lote=Lote,total_liquido=Total_liquido,data=data_v)
                    up_stock_armazem.quantidade = up_stock_armazem.quantidade + int(Quantidade)
                    up_stock_armazem.save()
                    messages.info(request,'Atualizado! Destino Armazem')
                    return redirect(Meu_stock_HTML)
                else:
                    messages.info(request,'Erro ao introduzir ao Armazem')
                    return redirect(Meu_stock_HTML)
                
                messages.info(request,'Item ja existe na factura')
                return redirect(Meu_stock_HTML)
            if search:
                vaz = 0
                search = str(search).strip()
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(id__icontains=search)
                if 'g ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_generico__icontains=search)
                if 'c ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_comercial__icontains=search)
                if search == 'esgotado' or search == '0' or search == 'vazio':
                    search = str(search[3:]).strip()
                    vaz = 1

                    data = data.filter(quantidade__icontains=0)
                else:
                    data = data.filter(Q(nome_generico__icontains=search)|Q(nome_comercial__icontains=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        if c.quantidade == 0:
                            data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        if item.quantidade == 0:
                            cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            for item in data_factura:
                data_lista_factura.append(item)
            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'data_factura':data_lista_factura}
            return render(request,'multcaixa/meu_stock1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
    
def Meu_servico_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/meu_servico1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Meu_stock_Especifico_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and  usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio' and  usuario.tipo_de_conta == 'supervisor' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            cat = Categoria_stock.objects.get(id=id)
            data = Stok.objects.filter(categoria=cat.categoria)
            data_factura = Meus_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao,status='aberto')

            cont_vazio = 0
            data_lista = []
            data_lista_factura = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.nome_comercial} {PRODUTO.nome_generico} Q : {PRODUTO.quantidade}',responsavel=resp_v,tipo='Excuindo Stock',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')
            if request.method == 'POST':
                modo = request.POST.get('modo')
                ID_factura = request.POST.get('id_factura')
                ID_stock = request.POST.get('id_stock')
                Quantidade = request.POST.get('quantidade')
                Data_validade = request.POST.get('data_validade')

                Preco_unitario = request.POST.get('preco_unitario')
                Lote = request.POST.get('lote')
                Destino = request.POST.get('destino')
                Total_liquido = int(Quantidade) * int(Preco_unitario)
                up_fact = Meus_Pedidos.objects.get(id=ID_factura,id_anfitriao=usuario.id_anfitriao)
                up_stock = Stok.objects.get(id=ID_stock,id_anfitriao=usuario.id_anfitriao)

                verificar = Itens_Pedidos.objects.filter(id_pedido=ID_factura,id_anfitriao=usuario.id_anfitriao,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial)
                up_stock_armazem = Stok_Armazem.objects.filter(id_stock=up_stock.id,id_anfitriao=usuario.id_anfitriao,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial)

                
                if not up_stock_armazem:
                    up = Stok_Armazem.objects.create(
                                id_anfitriao=usuario.id_anfitriao,
                                id_stock=up_stock.id,
                                id_categoria=cat.id,
                                nome_generico=up_stock.nome_generico,
                                nome_comercial=up_stock.nome_comercial,
                                subcateg=up_stock.subcateg,
                                categoria=cat.categoria,
                                quantidade=0,
                                lucro=up_stock.lucro,
                                preco=up_stock.preco
                            )
                if not verificar and Destino == 'partileira':
                    up_criar = Itens_Pedidos.objects.create(id_anfitriao=usuario.id_anfitriao,id_pedido=ID_factura,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial,quantidade=Quantidade,data_validade=Data_validade,preco_unitario=Preco_unitario,lote=Lote,total_liquido=Total_liquido,data=data_v)
                    up_stock.quantidade = up_stock.quantidade + int(Quantidade)
                    up_stock.save()
                    messages.info(request,'Atualizado! Destino Partileira')
                    return redirect(Meu_stock_Especifico_HTML,id)


                if not verificar and Destino == 'armazem' and up_stock_armazem:
                    up_stock_armazem = Stok_Armazem.objects.get(id_stock=ID_stock,id_anfitriao=usuario.id_anfitriao)
                    up_criar = Itens_Pedidos.objects.create(id_anfitriao=usuario.id_anfitriao,id_pedido=ID_factura,nome_generico=up_stock.nome_generico,nome_comercial=up_stock.nome_comercial,quantidade=Quantidade,data_validade=Data_validade,preco_unitario=Preco_unitario,lote=Lote,total_liquido=Total_liquido,data=data_v)
                    up_stock_armazem.quantidade = up_stock_armazem.quantidade + int(Quantidade)
                    up_stock_armazem.save()
                    messages.info(request,'Atualizado! Destino Armazem')
                    return redirect(Meu_stock_Especifico_HTML,id)
                else:
                    messages.info(request,'Erro ao introduzir ao Armazem')
                    return redirect(Meu_stock_Especifico_HTML,id)

                messages.info(request,'Item ja existe na factura')
                return redirect(Meu_stock_Especifico_HTML,id)

            if search:
                vaz = 0
                search = str(search).strip()
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(id__icontains=search)
                if 'g ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_generico__icontains=search)
                if 'c ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_comercial__icontains=search)
                if search == 'esgotado' or search == '0' or search == 'vazio':
                    search = str(search[3:]).strip()
                    vaz = 1

                    data = data.filter(quantidade__icontains=0)
                else:
                    data = data.filter(Q(nome_generico__icontains=search)|Q(nome_comercial__icontains=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        if c.quantidade == 0:
                            data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:
                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(item)
                        if item.quantidade == 0:
                            cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            for item in data_factura:
                data_lista_factura.append(item)

            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'cat':cat,'data_factura':data_lista_factura}
            return render(request,'multcaixa/meu_stock_especifico.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
def Meu_stock_Especifico_Armazem_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'gestor':
            cat = Categoria_stock.objects.get(id=id)
            data = Stok.objects.filter(categoria=cat.categoria,id_anfitriao=usuario.id_anfitriao)
            data_armazem = Stok_Armazem.objects.filter(categoria=cat.categoria,id_anfitriao=usuario.id_anfitriao)
            data_factura = Meus_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao,status='aberto')

            cont_vazio = 0
            data_lista = []
            data_lista_factura = []
            search = request.GET.get('search')
            
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            
            if request.method == 'POST':
                modo = request.POST.get('modo')
                ID_stock = request.POST.get('id_stock')
                Quantidade = request.POST.get('quantidade')
                Quantidade = int(Quantidade)
                up_stock_armazem = Stok_Armazem.objects.get(id=ID_stock,id_anfitriao=usuario.id_anfitriao)
                up_stock = Stok.objects.get(id=up_stock_armazem.id_stock,id_anfitriao=usuario.id_anfitriao)

                Quant_ar =  up_stock_armazem.quantidade # quant do Armazem
                if Quantidade != 0 and Quantidade <= Quant_ar:
                    up_stock.quantidade = up_stock.quantidade + int(Quantidade)
                    up_stock_armazem.quantidade = up_stock_armazem.quantidade - int(Quantidade)

                    up_stock.save()
                    up_stock_armazem.save()
                    messages.info(request,'Atualizado com sucesso')
                    return redirect(Meu_stock_Especifico_Armazem_HTML,id)

                messages.info(request,'Erro ao durante o processo!')
                return redirect(Meu_stock_Especifico_Armazem_HTML,id)
                
            if search:
                vaz = 0
                search = str(search).strip()
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data_armazem.filter(id__icontains=search)
                if 'g ' in search:
                    search = str(search[3:]).strip()
                    data = data_armazem.filter(nome_generico__icontains=search)
                if 'c ' in search:
                    search = str(search[3:]).strip()
                    data = data_armazem.filter(nome_comercial__icontains=search)
                if search == 'esgotado' or search == '0' or search == 'vazio':
                    search = str(search[3:]).strip()
                    vaz = 1

                    data = data_armazem.filter(quantidade__icontains=0)
                else:
                    data = data_armazem.filter(Q(nome_generico__icontains=search)|Q(nome_comercial__icontains=search)|Q(id__icontains=search))


                for c in data_armazem:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        if c.quantidade == 0:
                            data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:
                

                # Exemplo com zip_longest
                for item, item_armazem in zip_longest(data, data_armazem, fillvalue=None):
                    if item_armazem is None:  # Caso não haja mais itens em data_armazem
                        # Se não tiver nenhum item em `data_armazem`, você pode criar um novo item
                        up = Stok_Armazem.objects.create(
                            id_anfitriao=usuario.id_anfitriao,
                            id_stock=item.id,
                            id_categoria=cat.id,
                            nome_generico=item.nome_generico,
                            nome_comercial=item.nome_comercial,
                            subcateg=item.subcateg,
                            categoria=cat.categoria,
                            quantidade=0,
                            lucro=item.lucro,
                            preco=item.preco
                        )
                        data_lista.append(item_armazem)  # Adiciona o item à lista
                        
                        if item.quantidade == 0:
                            cont_vazio += 1  # Conta os itens com quantidade igual a 0
                        
                    else:
                        if item.id != item_armazem.id_stock:
                            up = Stok_Armazem.objects.create(
                                id_anfitriao=usuario.id_anfitriao,
                                id_stock=item.id,
                                id_categoria=cat.id,
                                nome_generico=item.nome_generico,
                                nome_comercial=item.nome_comercial,
                                subcateg=item.subcateg,
                                categoria=cat.categoria,
                                quantidade=0,
                                lucro=item.lucro,
                                preco=item.preco
                            )
                        data_lista.append(item_armazem)  # Adiciona o item_armazem à lista
                        
                        if item.quantidade == 0:
                            cont_vazio += 1  # Conta os itens com quantidade igual a 0
                        
                        
                        

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            for item in data_factura:
                data_lista_factura.append(item)

            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'cat':cat,'data_factura':data_lista_factura}
            return render(request,'multcaixa/meu_stock_especifico_armazem.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Pacientes_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'caixa1' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/pacientes.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
def Todas_Consultas_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'caixa1' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/todas_consultas.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Novas_Consultas_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'caixa1' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/novas_consultas.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Chat_Pacientes_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'caixa1' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/chat_pacientes.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


def Fornecedores_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/fornecedores.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Todos_Fornecedores_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            data = Stok_fixo.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            abrir_popup = False
            if apagar_:
                abrir_popup = True
                PRODUTO = Stok_fixo.objects.get(id=apagar_)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.produto}',responsavel=resp_v,tipo='Excuindo Servico',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')

            if search:
                vaz = 0
                search = str(search).strip()
            
                data = data.filter(Q(produto=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and vaz:
                        data_lista.append(c)

                    if c.id_anfitriao == usuario.id_anfitriao and not vaz:
                        data_lista.append(c)
            else:

                for item in data:
                    if item.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(item)
                        cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/todos_fornecedores.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
def Meus_Fornecedores_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if  usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:

            data = Fornecedores.objects.all().order_by('-id')

            cont_vazio = 0
            data_lista = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            
            if request.method == 'POST':
                modo = request.POST.get('modo')
                ID_fornecedor = request.POST.get('id_fornecedor')
                Nome = request.POST.get('nome')
                Categoria = request.POST.get('categoria')
                Contacto = request.POST.get('contacto')
                Email = request.POST.get('email')
                Localizacao = request.POST.get('localizacao')

                if modo == 'criar':
                    verificar = Fornecedores.objects.filter(id_anfitriao=usuario.id_anfitriao,nome=Nome,contacto=Contacto)
                    if not verificar:
                        up = Fornecedores.objects.create(id_anfitriao=usuario.id_anfitriao,nome=Nome,categoria=Categoria,contacto=Contacto,email=Email,localizacao=Localizacao)
                        return redirect(Meus_Fornecedores_HTML)
                if modo == 'atualizar':
                    fornecedor_up = Fornecedores.objects.get(id_anfitriao=usuario.id_anfitriao,id=ID_fornecedor)
                    if Nome:fornecedor_up.nome = Nome
                    if Categoria:fornecedor_up.categoria = Categoria
                    if Contacto:fornecedor_up.contacto = Contacto
                    if Email:fornecedor_up.email = Email
                    if Localizacao:fornecedor_up.localizacao = Localizacao
                    fornecedor_up.save()
                    return redirect(Meus_Fornecedores_HTML)
                if modo == 'apagar':
                    fornecedor_up = Fornecedores.objects.get(id_anfitriao=usuario.id_anfitriao,id=ID_fornecedor)
                    fornecedor_up.delete()
                    return redirect(Meus_Fornecedores_HTML)


            for item in data:
                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)
                    cont_vazio = cont_vazio + 1

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)


            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'data_lista':data_lista}
            return render(request,'multcaixa/meus_fornecedores.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Meus_Pedidos_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:

            data = Fornecedores.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data_pedidos = Meus_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao)
            cont_vazio = 0
            data_lista = []
            data_lista_pedidos = []
            search = request.GET.get('search')
            apagar_ = request.GET.get('apagar')
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            
            if request.method == 'POST':
                modo = request.POST.get('modo')
                ID_fornecedor = request.POST.get('fornecedor')
                Nr_factura = request.POST.get('nr_factura')
                Data_factura = request.POST.get('data')
                Total = request.POST.get('total')
                

                if modo == 'criar':
                    fornecedor_up = Fornecedores.objects.get(id=ID_fornecedor,id_anfitriao=usuario.id_anfitriao)
                    verificar = Meus_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao,id_fornecedor=fornecedor_up.id,nr_factura=Nr_factura,fornecedor=fornecedor_up.nome)
                    if not verificar:
                        up =  Meus_Pedidos.objects.create(id_anfitriao=usuario.id_anfitriao,id_fornecedor=fornecedor_up.id,nr_factura=Nr_factura,fornecedor=fornecedor_up.nome,total=Total,data=Data_factura)
                        return redirect(Meus_Pedidos_HTML)
                if modo == 'finalizar':
                    ID_finalizar = request.POST.get('id_finalizar')
                    up_p = Meus_Pedidos.objects.get(id=ID_finalizar)
                    up_p.status = 'fechado'
                    up_p.save()
                    return redirect(Meus_Pedidos_HTML)
                if modo == 'reabrir':
                    
                    ID_finalizar = request.POST.get('id_finalizar')
                    up_p = Meus_Pedidos.objects.get(id=ID_finalizar)
                    up_p.status = 'aberto'
                    up_p.save()
                    return redirect(Meus_Pedidos_HTML)

            for item in data:
                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)
                    cont_vazio = cont_vazio + 1
            for item_p in data_pedidos:
                    data_lista_pedidos.append(item_p)
                    
                   

            data_paginator = Paginator(data_lista,200)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context ={'usuario':usuario,'page':page,'cont_vazio':cont_vazio,'data_fornecedores':data_lista,'data_pedidos':data_lista_pedidos}
            return render(request,'multcaixa/meus_pedidos.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Ver_Factura_HTML(request, id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:

            # Obtém os dados da factura
            factura = Meus_Pedidos.objects.get(id=id, id_anfitriao=usuario.id_anfitriao)
            data_itens = Itens_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao, id_pedido=id)
            
            # Cria a resposta HTTP com tipo de conteúdo PDF
            response = HttpResponse(content_type='application/pdf')
            response['Content-Disposition'] = f'inline; filename=factura_{factura.nr_factura}.pdf'
            
            # Cria o canvas do PDF
            p = canvas.Canvas(response, pagesize=letter)
            Total = 0
            for c in data_itens:
                Total = Total + c.total_liquido
            # Define o título e outras informações
            p.setFont("Helvetica-Bold", 16)
            p.drawString(200, 750, f"Factura #{factura.nr_factura}")
            
            p.setFont("Helvetica", 12)
            p.drawString(30, 730, f"Fornecedor: {factura.fornecedor}")
            p.drawString(30, 710, f"Data: {factura.data}")
            p.drawString(30, 690, f"Total: {Total}")
            
            # Adiciona a tabela de itens com cabeçalhos
            p.setFont("Helvetica-Bold", 10)
            p.drawString(30, 650, "Descrição")
            p.drawString(150, 650, "Lote")
            p.drawString(200, 650, "Quant")
            p.drawString(260, 650, "Pr. Unitario")
            p.drawString(350, 650, "Total Liquido")
            p.drawString(450, 650, "Pr. Validade")
            
            # Desenha a linha horizontal após os cabeçalhos
            p.line(30, 645, 510, 645)  # Linha de separação entre cabeçalho e dados
            
            # Adiciona as linhas da tabela dinamicamente
            y_position = 630
            p.setFont("Helvetica", 10)
            data_itens = Itens_Pedidos.objects.filter(id_anfitriao=usuario.id_anfitriao, id_pedido=id)
            
            for item in data_itens:
                # Desenha os dados da linha
                p.drawString(30, y_position, f'{item.nome_generico} {item.nome_comercial}')
                p.drawString(150, y_position, str(item.lote))
                p.drawString(200, y_position, str(item.quantidade))
                p.drawString(260, y_position, f"{item.preco_unitario:.2f}")
                p.drawString(350, y_position, f"{item.total_liquido:.2f}")
                p.drawString(450, y_position, f"{item.data_validade}")

                
                # Desenha a linha horizontal após cada item
                p.line(30, y_position - 2, 510, y_position - 2)
                
                # Move para a próxima linha
                y_position -= 20
                
                # Verifica se a página está cheia e, se necessário, cria uma nova página
                if y_position < 100:  # Posição mínima antes de começar uma nova página
                    p.showPage()
                    p.setFont("Helvetica-Bold", 10)
                    p.drawString(30, 750, "Descrição")
                    p.drawString(150, 750, "Lote")
                    p.drawString(200, 750, "Quant")
                    p.drawString(300, 750, "Pr. Unitario")
                    p.drawString(400, 750, "Total Liquido")
                    p.line(30, 745, 510, 745)  # Linha de separação no topo da nova página
                    y_position = 730  # Reinicia a posição Y para a nova página
            
            # Adiciona uma linha na parte inferior da tabela
            p.line(30, y_position - 2, 510, y_position - 2)
            
            # Finaliza o PDF e retorna a resposta
            p.showPage()
            p.save()
            
            return response


def Editar_stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Stok.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
            cat = Categoria_stock.objects.get(categoria=data.categoria)
            categorias = Categoria_stock.objects.all().order_by('-id')
            data_lista = []
            apagar_ = request.GET.get('apagar')
            if apagar_:
                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')
                resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
                
                PRODUTO = Stok.objects.get(id=apagar_)
                if PRODUTO.quantidade == 0:
                    Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.nome_comercial} {PRODUTO.nome_generico} Q : {PRODUTO.quantidade}',responsavel=resp_v,tipo='Excuindo Stock',data=f'{data_v} {hora_v}')
                    
                    PRODUTO.delete()
                    messages.info(request,f'Excluido com Sucesso!')
                    return redirect(Meu_stock_Especifico_HTML,cat.id)
                elif PRODUTO.quantidade != 0:
                    messages.info(request,f'O produto nao está vazio!')
                    return redirect(Editar_stock_HTML,id)
            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(c)

            context = {'usuario':usuario,'data':data,'categ':data_lista,'cat':cat}
            return render(request,'multcaixa/editar_stock.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
def Editar_servico_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Stok_fixo.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
            cat = Categoria_stock_fixo.objects.get(categoria=data.categoria)
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            data_lista = []
            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(c)

            context = {'usuario':usuario,'data':data,'categ':data_lista,'cat':cat}
            return render(request,'multcaixa/editar_servico.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
    
def Editar_categ_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data_v = Categoria_stock_fixo.objects.filter(id=id,id_anfitriao=usuario.id_anfitriao)
            if data_v:

                data = Categoria_stock_fixo.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                context = {'usuario':usuario,'data':data}
                return render(request,'multcaixa/editar_categ.html',context)

        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
def Editar_categ_stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data_v = Categoria_stock.objects.filter(id=id,id_anfitriao=usuario.id_anfitriao)
            if data_v:

                data = Categoria_stock.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                context = {'usuario':usuario,'data':data}
                return render(request,'multcaixa/editar_categ_stock.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
def Atualizar_Stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                Nome_comercial = request.POST.get('NomeGenerico')
                Nome_generico = request.POST.get('NomeComercial')
                Subcateg = request.POST.get('Subcateg')


                Unidademedida = request.POST.get('Unidademedida')
                Lucro = request.POST.get('lucro')

                Quantidade = request.POST.get('quantidade')
                Preco = request.POST.get('preco')
                categoria_produto = request.POST.get('categoria')
                ficheiro = request.FILES.get('imagem')

                PRODUTO = Stok.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                verificar = Stok.objects.filter(id=id,id_anfitriao=usuario.id_anfitriao,nome_comercial=Nome_comercial,nome_generico=Nome_generico)
                Quant_Orginal = PRODUTO.quantidade
                Preco_original = PRODUTO.preco

                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')
                resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'

                if Quantidade:
                    Quantidade = int(Quantidade)
                    if Quantidade != 0 and Quantidade!='' and Quantidade >0:
                        nova_quant =  int(Quantidade)
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'De {PRODUTO.quantidade} + ({nova_quant}) = ({nova_quant}) {PRODUTO.nome_comercial}/{PRODUTO.nome_generico} ',responsavel=resp_v,tipo='Entrada Stock',data=f'{data_v} {hora_v}')
                        PRODUTO.quantidade =  nova_quant

                        PRODUTO.save()
                if Preco:
                    Preco = int(Preco)
                    if Preco !=0 and Preco !='':
                        total =  int(Preco)

                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'De {PRODUTO.preco} para  {total}  {PRODUTO.nome_comercial}/{PRODUTO.nome_generico}',responsavel=resp_v,tipo='Alteracao Preço',data=f'{data_v} {hora_v}')
                        PRODUTO.preco = total
                        PRODUTO.save()
                if Nome_comercial and not verificar:
                        PRODUTO.nome_comercial = Nome_comercial
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'Antes ({PRODUTO.nome_comercial}) Depois ({Nome_comercial})',responsavel=resp_v,tipo='Modificaçao Nome.C',data=f'{data_v} {hora_v}')

                        PRODUTO.save()
                if Nome_generico:
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'Antes ({PRODUTO.nome_generico}) Depois ({Nome_generico})',responsavel=resp_v,tipo='Modificaçao Nome.G',data=f'{data_v} {hora_v}')
                        PRODUTO.nome_generico = Nome_generico

                        PRODUTO.save()

                if Lucro:
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'Antes ({PRODUTO.lucro}) Depois ({Lucro})',responsavel=resp_v,tipo='Modificaçao de Lucro',data=f'{data_v} {hora_v}')
                        PRODUTO.lucro = Lucro
                        PRODUTO.save()
                if Subcateg:
                        PRODUTO.subcateg = Subcateg
                        PRODUTO.save()
                if Unidademedida:
                        PRODUTO.unidade_medida = Unidademedida
                        PRODUTO.save()
                if ficheiro:
                        PRODUTO.imagem = ficheiro
                        PRODUTO.save()
                if categoria_produto:
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_pertence,id_resp=usuario.id,evento=f'Antes ({PRODUTO.categoria}) Depois ({categoria_produto})',responsavel=resp_v,tipo='Modificaçao Categoria',data=f'{data_v} {hora_v}')
                        PRODUTO.categoria = categoria_produto

                        PRODUTO.save()
                
                else:
                    data = Stok.objects.all().order_by('-id')
                    context ={'usuario':usuario,'data':data}
                    return redirect(Editar_stock_HTML,id)
                messages.info(request,'Atualizado com sucesso!')
            data = Stok.objects.all().order_by('-id')
            context ={'usuario':usuario,'data':data}
            return  redirect(Editar_stock_HTML,id)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
def Atualizar_Servico_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                produto = request.POST.get('produto')
                
                Lucro = request.POST.get('lucro')

                
                Preco = request.POST.get('preco')
                categoria_produto = request.POST.get('categoria')
                ficheiro = request.FILES.get('imagem')

                PRODUTO = Stok_fixo.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                verificar = Stok_fixo.objects.filter(id=id,id_anfitriao=usuario.id_anfitriao,produto=produto)
                
                Preco_original = PRODUTO.preco

                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')
                resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'

                
                if Preco:
                    Preco = int(Preco)
                    if Preco !=0 and Preco !='':
                        total =  int(Preco)

                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'De: {PRODUTO.preco} Para:  {total}  {PRODUTO.produto}/{PRODUTO.produto}',responsavel=resp_v,tipo='Alterou o Preço',data=f'{data_v} {hora_v}')
                        PRODUTO.preco = total
                        PRODUTO.save()
                if produto and not verificar:
                        PRODUTO.produto = produto
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'De: ({PRODUTO.produto}) Para: ({produto})',responsavel=resp_v,tipo='Atualizou o Nome/Servico',data=f'{data_v} {hora_v}')

                        PRODUTO.save()
                

                if Lucro:
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'De: ({PRODUTO.lucro}) Para: ({Lucro})',responsavel=resp_v,tipo='Alterou o Lucro',data=f'{data_v} {hora_v}')
                        PRODUTO.lucro = Lucro
                        PRODUTO.save()
                
                if ficheiro:
                        PRODUTO.imagem = ficheiro
                        PRODUTO.save()
                if categoria_produto:
                        Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_pertence,id_resp=usuario.id,evento=f'Antes ({PRODUTO.categoria}) Depois ({categoria_produto})',responsavel=resp_v,tipo='Modificaça Categoria',data=f'{data_v} {hora_v}')
                        PRODUTO.categoria = categoria_produto

                        PRODUTO.save()
                
                else:
                    data = Stok.objects.all().order_by('-id')
                    context ={'usuario':usuario,'data':data}
                    return redirect(Editar_servico_HTML,id)
                messages.info(request,'Atualizado com sucesso!')
            data = Stok.objects.all().order_by('-id')
            context ={'usuario':usuario,'data':data}
            return  redirect(Editar_servico_HTML,id)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Menu_Stock_Categ_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            
            context = {'usuario':usuario}
            return render(request,'multcaixa/menu_stock_categ.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
def Categoria_Stock_demo_Armazem_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'gestor':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            categorias1 = Categoria_stock.objects.all().order_by('-id')
            data_lista = []

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho


            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c)
            for c1 in categorias1:
                if c1.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c1)
            search = request.GET.get('search')

            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho}
            return render(request,'multcaixa/stock_demo_categ_armazem.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
def Categoria_Stock_demo_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
                    
        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem' or usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'gestor':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            categorias1 = Categoria_stock.objects.all().order_by('-id')
            data_lista = []

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho


            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c)
            for c1 in categorias1:
                if c1.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c1)
            search = request.GET.get('search')

            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho}
            return render(request,'multcaixa/stock_demo_categ.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
    
def Categoria_Servico_demo_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
                    
        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.tipo_de_conta == 'armazem' and usuario.status_trabalho == 'habilitado' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            categorias1 = Categoria_stock.objects.all().order_by('-id')
            data_lista = []

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho


            for c in categorias:
                if c.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c)
            for c1 in categorias1:
                if c1.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(c1)
            search = request.GET.get('search')

            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho}
            return render(request,'multcaixa/servico_demo_categ.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Categoria_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)
            categorias1 = Categoria_stock.objects.filter(id_anfitriao=usuario.id_anfitriao)
            

            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho

            search = request.GET.get('search')

            if search:
                categorias1 = categorias1.filter(categoria__icontains=search)
                for c1 in categorias1:
                    if c1.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c1)
            else:
                for c in categorias:
                    if c.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c)
                for c1 in categorias1:
                    if c1.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c1)

            
            if request.method == 'POST':
                # Verificar qual checkbox foi enviada
                if 'typeview' in request.POST:
                    usuario.typeview_caixa = 0  # Checkbox de 'typeview'
                elif 'typeview1' in request.POST:
                    usuario.typeview_caixa = 1  # Checkbox de 'typeview1'
                
                
                usuario.save()
                return redirect(Categoria_HTML)

            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho,'categorias':categorias1}
            return render(request,'multcaixa/categorias.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Categoria_Servicos_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            categorias = Categoria_stock_fixo.objects.all().order_by('-id')
            categorias1 = Categoria_stock.objects.all().order_by('-id')
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho




            search = request.GET.get('search')
            if search:
                categorias1 = categorias1.filter(categoria__icontains=search)
                for c1 in categorias1:
                    if c1.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c1)
            else:
                for c in categorias:
                    if c.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c)
                for c1 in categorias1:
                    if c1.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c1)



            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho}
            return render(request,'multcaixa/categorias_servicos.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Caixa_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Stok_fixo.objects.all().order_by('-id')
            search = request.GET.get('search')
            categoria =  Categoria_stock_fixo.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho
            data_lista = []
            if search:
                data = data.filter(nome_generico__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.categoria == categoria.categoria:
                        data_lista.append(c)
            else:
                data = Stok_fixo.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.categoria == categoria.categoria:
                        c.id_categoria = categoria.id 
                        c.save()
                        data_lista.append(c)

            context ={'usuario':usuario,'data':data_lista,'categoria':categoria,'data_carinho':data_carinho,'data_carinho_quantidade':data_carinho_quantidade}
            return render(request,'multcaixa/caixa1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Vender_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                Quantidade = int(request.POST.get('quantidade'))

                PRODUTO = Stok_fixo.objects.get(id=id)
                Preco_original = PRODUTO.preco
                if  Quantidade != 0 and Quantidade >0:

                    total = Quantidade * Preco_original
                    Lucro = Quantidade * PRODUTO.lucro
                    ficheiro = PRODUTO.imagem
                    d = datetime.now()
                    data_v = d.strftime('%d/%m/%Y')
                    hora_v = d.strftime('%H:%M:%S')

                    resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                    Data_up = Produto_vendido_fixo.objects.create(id_anfitriao=usuario.id_anfitriao,produto=PRODUTO.produto,imagem=ficheiro,quantidade=Quantidade,preco=total,lucro=Lucro,data_venda=data_v,hora_venda=hora_v,responsavel=resp)
                    messages.info(request,f' Concluido -- total: {total}MT')
                    data = Stok_fixo.objects.all().order_by('-id')
                    element = id
                    info = True

                    data_lista = []
                    for c in data:
                        if c.id_anfitriao == usuario.id_anfitriao and c.categoria == PRODUTO.categoria:
                            data_lista.append(c)
                    context = {'usuario':usuario,'data':data_lista,'element':element,'info':info}

                    return render(request,'multcaixa/caixa1.html',context)
                else:
                    element = id
                    info = False
                    messages.error(request,f' Erro ao vender ({Quantidade})')
                    data = Stok_fixo.objects.all().order_by('-id')

                    data_lista = []
                    for c in data:
                        if c.id_anfitriao == usuario.id_anfitriao and c.categoria == PRODUTO.categoria:
                            data_lista.append(c)
                    context ={'usuario':usuario,'data':data_lista,'element':element,'info':info}
                    return render(request,'multcaixa/caixa1.html',context)

            data = Stok_fixo.objects.all().order_by('-id')
            context ={'usuario':usuario,'data':data}
            return render(request,'multcaixa/caixa1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Caixa_Stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Stok.objects.all().order_by('-id')
            search = request.GET.get('search')
            categoria = Categoria_stock.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
            categorias = Categoria_stock.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data_lista = []

            #carinho
            total = 0
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    total = total + item.preco
                    data_carinho_quantidade = data_carinho_quantidade + 1

            if search:
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(id__icontains=search)
                if 'g ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_generico__icontains=search)
                if 'c ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_comercial__icontains=search)
                else:
                    data = data.filter(Q(nome_generico__icontains=search)|Q(nome_comercial__icontains=search)|Q(id__icontains=search))

                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.categoria==categoria.categoria:
                        data_lista.append(c)
            else:
                data = Stok.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.categoria==categoria.categoria:
                        c.id_categoria = categoria.id 
                        c.save()
                        data_lista.append(c)

            context ={'usuario':usuario,'data':data_lista,'categoria':categoria,'data_carinho':data_carinho,'total':total,'categorias':categorias}
            if usuario.typeview_caixa == 0:return render(request,'multcaixa/caixa_stock.html',context)
            if usuario.typeview_caixa == 1:return render(request,'multcaixa/caixa_stock1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


def Vender_Stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            if request.method == 'POST':
                id_voltar = request.POST.get('id_ca')
                
                PRODUTO = Produto_vendido_carinho.objects.all().order_by('-id')
                data_produtos = []
                data_precos = []
                data_quantidades = []
                data_total = 0
                d = datetime.now()
                hora_v = d.strftime('%H:%M:%S')
                data_v = d.strftime('%d/%m/%Y')
                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                confirm = False
                for item in PRODUTO:
                    if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                        Data_up = Produto_vendido.objects.create(id_anfitriao=usuario.id_anfitriao,nome_comercial=item.nome_comercial,nome_generico=item.nome_generico,subcateg=item.subcateg,imagem=item.imagem,categoria=item.categoria,quantidade=item.quantidade,preco=item.preco,lucro=item.lucro,data_venda=item.data_venda,hora_venda=item.hora_venda,responsavel=item.responsavel)
                        data_total = data_total + item.preco
                        sp = str(item.nome_comercial).strip()

                        sp = sp.replace(' ','_')
                        data_produtos.append(f'{sp}')
                        data_quantidades.append(f'{item.quantidade} ')
                        data_precos.append(f'{item.preco}')

                        responsavel = item.responsavel
                        confirm = True

                        data_delete = Produto_vendido_carinho.objects.get(id=item.id)
                        data_delete.delete()

                md_produtos = str(data_produtos)
                if '[' in md_produtos and confirm:
                    md_produtos = md_produtos.replace('[','')
                    md_produtos = md_produtos.replace(']','')
                    md_produtos = md_produtos.replace("'",'')
                    md_produtos = md_produtos.strip()

                md_precos = str(data_precos)
                if '[' in md_precos and confirm:
                    md_precos = md_precos.replace('[','')
                    md_precos = md_precos.replace(']','')
                    md_precos = md_precos.replace("'",'')
                    md_precos = md_precos.strip()

                md_qunatidades = str(data_quantidades)
                if '[' in md_qunatidades and confirm:
                    md_qunatidades = md_qunatidades.replace('[','')
                    md_qunatidades = md_qunatidades.replace(']','')
                    md_qunatidades = md_qunatidades.replace("'",'')
                    md_qunatidades = md_qunatidades.strip()

                if confirm == True:
                    # facturas diarias
                    Factura_up_diario = Facturas_diarias.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,factura=md_produtos,preco=md_precos,quantidade=md_qunatidades,total=data_total,data=f'{data_v} {hora_v}',responsavel=resp)
                    # factura
                    Factura_up = Facturas.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,factura=md_produtos,preco=md_precos,quantidade=md_qunatidades,total=data_total,data=f'{data_v} {hora_v}',responsavel=resp)
                    id_fact = Facturas.objects.get(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,factura=md_produtos,preco=md_precos,quantidade=md_qunatidades,total=data_total,data=f'{data_v} {hora_v}',responsavel=resp)

                    #########
                    venda = Facturas.objects.get(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,factura=md_produtos,preco=md_precos,quantidade=md_qunatidades,total=data_total,data=f'{data_v} {hora_v}',responsavel=resp)

                    response = HttpResponse(content_type='application/pdf')
                    response['Content-Disposition'] = f'attachment; filename="receipt_{venda.id}.pdf"'

                    # Crie um objeto Story, que é uma lista de elementos que compõem o documento PDF
                    story = []

                    # Adicione um estilo ao Story
                    styles = getSampleStyleSheet()
                    style_normal = styles['Normal']
                    style_bold = styles['Heading1']
                    # Adicione informações da venda ao Story
                    story.append(Paragraph(f'Recibo de Venda : {venda.id}', style_bold))
                    # story.append(Paragraph(f'Número da Venda: {venda.id}', style_normal))
                    # Adicione detalhes dos itens vendidos ao Story
                    story.append(Paragraph('==== Itens Vendidos ====', style_normal))

                    itens = []
                    fact = str(venda.factura)
                    fact = fact.replace(',','')
                    fact = fact.replace(':','')
                    fact  = str(fact).split()

                    precos = str(venda.preco)
                    precos = precos.replace(',','')
                    precos = precos.replace(':','')
                    precos  = str(precos).split()

                    quantidades = str(venda.quantidade)
                    quantidades = quantidades.replace(',','')
                    quantidades = quantidades.replace(':','')
                    quantidades  = str(quantidades).split()

                    contador = 0

                    for line in fact:

                        itens.append(line)
                        sp = str(line).replace('_',' ')
                        sp_ = quantidades[contador]
                        if sp_ == 1 or sp_ == '1':
                            unidade = 'unidade'
                        else:
                            unidade = 'unidades'

                        story.append(Paragraph(f'{sp}  {quantidades[contador]} {unidade} : {precos[contador]}mt', style_normal))
                        contador = contador + 1

                    # for item in venda.factura:
                    # story.append(Paragraph(f' unidades x R$ {venda.total}', style_normal))

                    # Adicione o total da venda ao Story
                    story.append(Paragraph(f'', style_bold))

                    story.append(Paragraph(f'Total da Venda : {venda.total}mt', style_normal))

                    story.append(Paragraph(f'Caixa : {venda.responsavel}', style_normal))
                    date_ = str(venda.data).split()
                    hora = date_[1]
                    date_ = date_[0]

                    story.append(Paragraph(f'Data: {date_} Hora: {hora}', style_normal))



                    # Crie um documento PDF com o Story
                    doc = SimpleDocTemplate(response, pagesize=A5)
                    doc.build(story)
                    if usuario.pacote == 'medio-' or usuario.pacote == 'executivo-':
                        confirm = False
                        return response
                    
                    messages.info(request,'Factura efectuada com sucesso!')

                else:
                    
                    if id_voltar and id_voltar != 'todos':
                        id_voltar = int(id_voltar)
                        return redirect(Caixa_Stock_HTML,id_voltar)
                    if id_voltar == 'todos':
                        return redirect(Caixa_todos_HTML)
                    else:
                        return redirect(Caixa_carinho_HTML)

                if id_voltar and id_voltar != 'todos':
                        id_voltar = int(id_voltar)
                        return redirect(Caixa_Stock_HTML,id_voltar)
                if id_voltar == 'todos':
                        return redirect(Caixa_todos_HTML)
            
            return redirect(Caixa_carinho_HTML)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


def Feixo_Diario_Stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Facturas_diarias.objects.all().order_by('-id')
            search = request.GET.get('search')
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1

            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            total = 0
            quantidade_p = 0
            #carinho
            if search:
                data = data.filter(id__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,100)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)
            else:

                data = Facturas_diarias.objects.all().order_by('-id')
                for c in data:
                    d_in = str(c.data).split()
                    d_in = d_in[0]
                    if data_v == d_in and c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                        total = total + c.total
                        quantidade_p = quantidade_p + 1
                data_paginator = Paginator(data_lista,100)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)





            context = {'usuario':usuario,'page':page,'data_carinho':data_carinho,'total':total,'quantidade':quantidade_p}
            return render(request,'multcaixa/vendas_diarias.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Feixo_Mensal_Stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':


            feixo_venda = Produto_vendido.objects.all().order_by('-id')
            feixo_venda_fixo = Produto_vendido_fixo.objects.all().order_by('-id')
            feixo_fact = Facturas_diarias.objects.all().order_by('-id')

            itens = {'id_anfitriao':0,'id_resp':0,'factura':[],'quantidade':0,'data':'','total':0,'responsavel':''}

            # fexio fixo
            for item in feixo_venda_fixo:
                if item.id_anfitriao == usuario.id_anfitriao:
                    itens['quantidade'] = itens['quantidade'] + item.quantidade
                    itens['total'] = itens['total'] + item.preco
                    itens['factura'].append(f'{item.produto} - {item.quantidade} Valor : {item.preco}mt')
                    hist_create_fixo = Feixo_diario_fixo.objects.create(id_anfitriao=usuario.id_anfitriao,produto=item.produto,imagem=item.imagem,quantidade=item.quantidade,preco=item.preco,lucro=item.lucro,data_venda=item.data_venda,hora_venda=item.hora_venda,responsavel=item.responsavel)
                    PRODUTOFX = Produto_vendido_fixo.objects.get(id=item.id)
                    PRODUTOFX.delete()


            lista = []
            data_historico = Feixo_diario.objects.all()
            for item in feixo_venda:
                if item.id_anfitriao == usuario.id_anfitriao:
                    itens['id_anfitriao'] = usuario.id_anfitriao
                    itens['quantidade'] = itens['quantidade'] + item.quantidade
                    itens['total'] = itens['total'] + item.preco
                    itens['responsavel'] = item.responsavel
                    itens['factura'].append(f'{item.nome_comercial} - Qt {item.quantidade} Valor : {item.preco}mt')

                    hist_create = Feixo_diario.objects.create(id_anfitriao=usuario.id_anfitriao,nome_generico=item.nome_generico,nome_comercial=item.nome_comercial,imagem=item.imagem,subcateg=item.subcateg,categoria=item.categoria,quantidade=item.quantidade,preco=item.preco,lucro=item.lucro,data_venda=item.data_venda,hora_venda=item.hora_venda,responsavel=item.responsavel)
                    PRODUTO = Produto_vendido.objects.get(id=item.id)
                    PRODUTO.delete()

            for item in feixo_fact:
                if item.id_anfitriao == usuario.id_anfitriao :

                    date_ = str(item.data).split()
                    hora = date_[1]
                    date_ = date_[0]
                    itens['data'] = f'{date_[3:5]} {date_[6:10]}'
                    itens['id_resp'] = item.id_resp

                    PRODUTO = Facturas_diarias.objects.get(id=item.id)
                    PRODUTO.delete()


            Factura_up_diario = Feixo_data.objects.create(id_anfitriao=itens['id_anfitriao'],factura=itens['factura'],id_resp=itens['id_resp'],quantidade=itens['quantidade'],total=itens['total'],data=itens['data'],responsavel=itens['responsavel'])
            messages.info(request,'Feixo Efectuado com sucesso!')
            return redirect(Admin_venda_diaria_HTML)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def detalhes_funcionario_HTML(request,id):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio'  and usuario.tipo_de_conta == 'supervisor':
            funcionario = Usuario.objects.get(id_pertence=id)
            factura = Facturas.objects.all().order_by('-id')
            lista = []
            md3 = ''
            #
            abrir_popup = False
            search = request.GET.get('search')
            procura = request.GET.get('procura')
            if search:
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    factura = factura.filter(id__icontains=search)

                if 'data ' in search:
                    search = str(search[4:]).strip()
                    factura = factura.filter(data__icontains=search)
                else:
                    factura = factura.filter(Q(id__icontains=search)|Q(data__icontains=search))

            total = 0
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')

            for c in factura:

                if c.id_resp == funcionario.id:

                        lista.append(c)
                        d_in = str(c.data).split()
                        d_in = d_in[0]
                        total = total + c.total

            data_paginator = Paginator(lista,100)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            
            if request.method == 'POST':
                abrir_popup = True
                previlegio = request.POST.get('previlegio')
                status_trabalho = request.POST.get('activar_status')
                supervisor = request.POST.get('activar_supervisor')
                activar_feixo = request.POST.get('activar_feixo')

                st_seg = request.POST.get('seg')
                st_ter = request.POST.get('ter')
                st_qua = request.POST.get('qua')
                st_qui = request.POST.get('qui')
                st_sex = request.POST.get('sex')
                st_sab = request.POST.get('sab')
                st_dom = request.POST.get('dom')

                hora_entrada_seg = request.POST.get('hora_entrada_seg')
                hora_saida_seg = request.POST.get('hora_saida_seg')
                hora_entrada_ter = request.POST.get('hora_entrada_ter')
                hora_saida_ter = request.POST.get('hora_saida_ter')
                hora_entrada_qua = request.POST.get('hora_entrada_qua')
                hora_saida_qua = request.POST.get('hora_saida_qua')
                hora_entrada_qui = request.POST.get('hora_entrada_qui')
                hora_saida_qui = request.POST.get('hora_saida_qui')
                hora_entrada_sex = request.POST.get('hora_entrada_sex')
                hora_saida_sex = request.POST.get('hora_saida_sex')
                hora_entrada_sab = request.POST.get('hora_entrada_sab')
                hora_saida_sab = request.POST.get('hora_saida_sab')
                hora_entrada_dom = request.POST.get('hora_entrada_dom')
                hora_saida_dom = request.POST.get('hora_saida_dom')

                if status_trabalho:

                    funcionario.status_trabalho = 'habilitado'
                    funcionario.save()
                else:

                    funcionario.status_trabalho = 'desabilitado'
                    funcionario.save()

                
                if hora_entrada_seg and hora_saida_seg and st_seg == 'on':
                    funcionario.hora_entrada_seg = hora_entrada_seg
                    funcionario.hora_saida_seg = hora_saida_seg
                else:
                    funcionario.hora_entrada_seg = 'none'
                    funcionario.hora_saida_seg = 'none'

                if hora_entrada_ter and hora_saida_ter and st_ter == 'on':
                    funcionario.hora_entrada_ter = hora_entrada_ter
                    funcionario.hora_saida_ter = hora_saida_ter
                else:
                    funcionario.hora_entrada_ter = 'none'
                    funcionario.hora_saida_ter = 'none'

                if hora_entrada_qua and hora_saida_qua and st_qua == 'on':
                    funcionario.hora_entrada_qua = hora_entrada_qua
                    funcionario.hora_saida_qua = hora_saida_qua
                else:
                    funcionario.hora_entrada_qua = 'none'
                    funcionario.hora_saida_qua = 'none'

                if hora_entrada_qui and hora_saida_qui and st_qui == 'on':
                    funcionario.hora_entrada_qui = hora_entrada_qui
                    funcionario.hora_saida_qui = hora_saida_qui
                else:
                    funcionario.hora_entrada_qui = 'none'
                    funcionario.hora_saida_qui = 'none'

                if hora_entrada_sex and hora_saida_sex and st_sex == 'on':
                    funcionario.hora_entrada_sex = hora_entrada_sex
                    funcionario.hora_saida_sex = hora_saida_sex
                else:
                    funcionario.hora_entrada_sex = 'none'
                    funcionario.hora_saida_sex = 'none'

                if hora_entrada_sab and hora_saida_sab and st_sab == 'on':
                    funcionario.hora_entrada_sab = hora_entrada_sab
                    funcionario.hora_saida_sab = hora_saida_sab
                else:
                    funcionario.hora_entrada_sab = 'none'
                    funcionario.hora_saida_sab = 'none'

                if hora_entrada_dom and hora_saida_dom and st_dom == 'on':
                    funcionario.hora_entrada_dom = hora_entrada_dom
                    funcionario.hora_saida_dom = hora_saida_dom
                else:
                    funcionario.hora_entrada_dom = 'none'
                    funcionario.hora_saida_dom = 'none'

                    
                # saida
                
                  
                funcionario.save()
                



                # if activar_feixo:
                #     funcionario.feixo = 'habilitado'
                #     funcionario.save()
                # else:
                #     funcionario.feixo = 'desabilitado'
                #     funcionario.save()

                # if supervisor:
                #     funcionario.supervisor = 'sim'
                #     funcionario.save()
                # else:
                #     funcionario.status_trabalho = 'nao'
                #     funcionario.save()

                if previlegio:

                    funcionario.tipo_de_conta = previlegio
                    funcionario.save()

                return redirect(detalhes_funcionario_HTML,id)
                    
                

                messages.info(request,'Atualizado com sucesso!')
                context = {
                'funcionario':funcionario,
                'factura':lista,
                'page':page,
                'total':total,
                'usuario':usuario,
                'abrir_popup':abrir_popup,
                }
                return render(request,'multcaixa/detalhes_funcionario.html',context)

            
            context = {
                'funcionario':funcionario,
                'factura':lista,
                'page':page,
                'total':total,
                'usuario':usuario,
                'abrir_popup':abrir_popup,

            }
            return render(request,'multcaixa/detalhes_funcionario.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


# def export_pdf_HTML(request):
#     products = Produto_vendido.objects.all()

#     html_index = render_to_string('multcaixa/export-pdf.html',{'products':products})
#     weasyprint_html = HTML(string=html_index, base_url='http://127.0.0.1:8000/media')
#     pdf = weasyprint_html.write_pdf(stylesheets=[CSS(string='body {font-family: serif} img {margin: 10px; width: 50px;}')])
#     response = HttpResponse(content_type='application/pdf')
#     response['Content-Disposition'] = 'attachment; filename=Products'+str(datetime.now())+'.pdf'
#     response['Content-Transfer-Encoding'] = 'binary'

#     with tempfile.NamedTemporaryFile(delete=True) as output:
#         output.write(pdf)
#         output.flush()
#         output.seek(0)
#         response.write(output.read())

#     return response
# carinho
def Carinho_Stock_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            if request.method == 'POST':
                #carinho
                
                Quantidade = int(request.POST.get('quantidade'))
                
                
                # carinho
                PRODUTO = Stok.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                Quant_Orginal = PRODUTO.quantidade
                Preco_original = PRODUTO.preco
                if Quant_Orginal >= Quantidade and Quantidade != 0 and Quantidade >0:
                    nova_quant =  int(Quant_Orginal) - int(Quantidade)
                    total = Quantidade * Preco_original
                    Lucro = Quantidade * PRODUTO.lucro
                    d = datetime.now()
                    data_v = d.strftime('%d/%m/%Y')
                    hora_v = d.strftime('%H:%M:%S')
                    PRODUTO.quantidade = nova_quant
                    resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                    try:
                        existe_carinh = Produto_vendido_carinho.objects.get(id_P=id)
                        if existe_carinh:
                            quantidade_ant = existe_carinh.quantidade
                            existe_carinh.quantidade = quantidade_ant + Quantidade
                            total_ant = existe_carinh.preco
                            existe_carinh.preco = total_ant + total
                            existe_carinh.save()

                    except:
                        Data_up = Produto_vendido_carinho.objects.create(id_P=id ,id_anfitriao=usuario.id_anfitriao,nome_comercial=PRODUTO.nome_comercial,nome_generico=PRODUTO.nome_generico,subcateg=PRODUTO.subcateg,imagem=PRODUTO.imagem,categoria=PRODUTO.categoria,quantidade=Quantidade,preco=total,lucro=Lucro,data_venda=data_v,hora_venda=hora_v,responsavel=resp)



                    PRODUTO.save()
                    element = id

                    if nova_quant ==0:
                        messages.info(request,f'Adicionado ao Carinho: {total}MT ({PRODUTO.nome_comercial} esgotado!)')
                        info = False
                        data_lista = []
                        for c in data:
                            if c.id_anfitriao == usuario.id_anfitriao and c.categoria == PRODUTO.categoria:
                                data_lista.append(c)
                        
                    else:
                        messages.info(request,f' Adicionado ao Carinho : {total}MT')
                        info = True
                        data = Stok.objects.all().order_by('-id')
                        data_lista = []
                        for c in data:
                            if c.id_anfitriao == usuario.id_anfitriao and c.categoria == PRODUTO.categoria:
                                data_lista.append(c)
                       

                if Quantidade > Quant_Orginal:
                    element = id
                    messages.info(request,f' A quantidade desejada é maior que : {Quant_Orginal}')
                    info = False
                    data = Stok.objects.all().order_by('-id')
                    data_lista = []
                    for c in data:
                        if c.id_anfitriao == usuario.id_anfitriao and c.categoria == PRODUTO.categoria:
                            data_lista.append(c)
                    

                else:
                    
                    element = id
                    if Quantidade > Quant_Orginal:
                        messages.info(request,f'erro ao vender {Quantidade}')
                    info = False
                    
                data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
                data_carinho = []
                total = 0
                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                data_carinho_quantidade = 0
                for item in data_carinho_:
                        if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                            data_carinho.append(item)
                            total = total + item.preco
                            data_carinho_quantidade = data_carinho_quantidade + 1
                
                
                id_c = PRODUTO.id_categoria
                
                return redirect(Caixa_Stock_HTML,id_c)
                

            data = Stok.objects.all().order_by('-id')
            context ={'usuario':usuario,'data':data,'data_carinho':data_carinho}
            return render(request,'multcaixa/caixa_stock.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Carinho_Stock_todos_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            #carinho

            if request.method == 'POST':
                #carinho
                data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
                data_carinho = []
                resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                data_carinho_quantidade = 0
                for item in data_carinho_:
                    if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                        data_carinho.append(item)
                        data_carinho_quantidade = data_carinho_quantidade + 1
                Quantidade = int(request.POST.get('quantidade'))
                # carinho
                PRODUTO = Stok.objects.get(id=id,id_anfitriao=usuario.id_anfitriao)
                Quant_Orginal = PRODUTO.quantidade
                Preco_original = PRODUTO.preco
                if Quant_Orginal >= Quantidade and Quantidade != 0 and Quantidade >0:
                    nova_quant =  int(Quant_Orginal) - int(Quantidade)
                    total = Quantidade * Preco_original
                    Lucro = Quantidade * PRODUTO.lucro
                    d = datetime.now()
                    data_v = d.strftime('%d/%m/%Y')
                    hora_v = d.strftime('%H:%M:%S')
                    PRODUTO.quantidade = nova_quant
                    resp = f'{usuario.primeiro_nome} {usuario.apelido}'
                    try:
                        existe_carinh = Produto_vendido_carinho.objects.get(id_P=id)
                        if existe_carinh:
                            quantidade_ant = existe_carinh.quantidade
                            existe_carinh.quantidade = quantidade_ant + Quantidade
                            total_ant = existe_carinh.preco
                            existe_carinh.preco = total_ant + total
                            existe_carinh.save()

                    except:
                        Data_up = Produto_vendido_carinho.objects.create(id_P=id ,id_anfitriao=usuario.id_anfitriao,nome_comercial=PRODUTO.nome_comercial,nome_generico=PRODUTO.nome_generico,subcateg=PRODUTO.subcateg,imagem=PRODUTO.imagem,categoria=PRODUTO.categoria,quantidade=Quantidade,preco=total,lucro=Lucro,data_venda=data_v,hora_venda=hora_v,responsavel=resp)



                    PRODUTO.save()
                    element = id

                    if nova_quant ==0:
                        messages.info(request,f'Adicionado ao Carinho: {total}MT ({PRODUTO.nome_comercial} esgotado!)')
                        info = False
                        data_lista = []
                        
                        # for c in data:
                        #     if c.id_anfitriao == usuario.id_anfitriao:
                        #         data_lista.append(c)
                        # context ={'usuario':usuario,'data':data_lista,'element':element,'info':info,'data_carinho':data_carinho}
                        # # return render(request,'multcaixa/caixa_todos.html',context)
                        return redirect(Caixa_todos_HTML)

                    else:
                        messages.info(request,f' Adicionado ao Carinho : {total}MT  {PRODUTO.nome_comercial}')
                        info = True
                        data = Stok.objects.all().order_by('-id')
                        data_lista = []
                        for c in data:
                            if c.id_anfitriao == usuario.id_anfitriao:
                                data_lista.append(c)
                        context ={'usuario':usuario,'data':data_lista,'element':element,'info':info,'data_carinho':data_carinho}
                        # return render(request,'multcaixa/caixa_todos.html',context)
                        return redirect(Caixa_todos_HTML)


                if Quantidade > Quant_Orginal:
                    element = id
                    messages.info(request,f' A quantidade desejada é maior que : {Quant_Orginal}')
                    info = False
                    data = Stok.objects.all().order_by('-id')
                    data_lista = []
                    for c in data:
                        if c.id_anfitriao == usuario.id_anfitriao:
                            data_lista.append(c)
                    context ={'usuario':usuario,'data':data_lista,'element':element,'info':info,'data_carinho':data_carinho}
                    # return render(request,'multcaixa/caixa_todos.html',context)
                    return redirect(Caixa_todos_HTML)



                else:
                    element = id
                    messages.info(request,f'erro ao vender {Quantidade}')
                    info = False
                    data = Stok.objects.all().order_by('-id')
                    data_lista = []
                    for c in data:
                        if c.id_anfitriao == usuario.id_anfitriao:
                            data_lista.append(c)
                    context ={'usuario':usuario,'data':data_lista,'element':element,'info':info,'data_carinho':data_carinho}
                    return redirect(Caixa_todos_HTML)





            context ={'usuario':usuario,'data':data,'data_carinho':data_carinho}
            return redirect(Caixa_todos_HTML)

        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')
# carinh
def Caixa_carinho_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data_del = request.GET.get('apagar')
            search = request.GET.get('search')
            categorias = Categoria_stock.objects.filter(id_anfitriao=usuario.id_anfitriao)


            data_lista = []
            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            total = 0
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
                    total = total + item.preco

            data_paginator = Paginator(data_carinho,100)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            if data_del:
                PRODUTO_ANT = Produto_vendido_carinho.objects.get(id=data_del,id_anfitriao=usuario.id_anfitriao,responsavel=resp)
                if PRODUTO_ANT.responsavel == resp:
                    PRODUTO = Stok.objects.get(id=PRODUTO_ANT.id_P,id_anfitriao=usuario.id_anfitriao)
                    PRODUTO.quantidade = PRODUTO.quantidade + PRODUTO_ANT.quantidade
                    PRODUTO.save()
                    PRODUTO_ANT.delete()
                return redirect(Caixa_carinho_HTML)


            if search:
                data = data.filter(nome_generico__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(c)
            else:
                data = Produto_vendido_carinho.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                        data_lista.append(c)

            lista_pacientes_user = Usuario.objects.all().order_by('-id')
            lista_pacientes = []
            for item_p in lista_pacientes_user:
                lista_pacientes.append(item_p)
                
            context ={'usuario':usuario,'page':page,'data_carinho':data_carinho,'data_carinho_quantidade':data_carinho_quantidade,'total':total,'lista_pacientes':lista_pacientes,'categorias':categorias}
            return render(request,'multcaixa/caixa_carinho.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Caixa_todos_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Stok.objects.all().order_by('-id')
            categorias = Categoria_stock.objects.filter(id_anfitriao=usuario.id_anfitriao)

            search = request.GET.get('search')
            data_lista = []
            #carinho
            total = 0
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    total = total + item.preco
                    data_carinho_quantidade = data_carinho_quantidade + 1

            if search:

                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(id__icontains=search)
                if 'g ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_generico__icontains=search)
                if 'c ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(nome_comercial__icontains=search)
                else:
                    data = data.filter(Q(nome_generico__icontains=search)|Q(nome_comercial__icontains=search)|Q(id__icontains=search))


                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao:
                        data_lista.append(c)
            else:
                data = Stok.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao :
                        data_lista.append(c)

            context ={'usuario':usuario,'data':data_lista,'data_carinho':data_carinho,'total':total,'categorias':categorias}
            if usuario.typeview_caixa == 0:return render(request,'multcaixa/caixa_todos.html',context)
            if usuario.typeview_caixa == 1:return render(request,'multcaixa/caixa_todos1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Detalhes_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio'  and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio'  and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Produto_vendido_fixo.objects.all().order_by('-id')
            search = request.GET.get('search')
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            # carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho
            if search:
                data = data.filter(nome_produto__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,105)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)
            else:
                data = Produto_vendido_fixo.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,105)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)



            context = {'usuario':usuario,'page':page,'data_carinho':data_carinho}
            return render(request,'multcaixa/detalhes_fixos.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Entradas_diarias_fixos_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio' and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio'  and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Produto_vendido_fixo.objects.all().order_by('-id')
            search = request.GET.get('search')
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1

            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            total = 0
            quantidade_p = 0
            #carinho
            if search:
                data = data.filter(id__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,105)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)
            else:

                data = Produto_vendido_fixo.objects.all().order_by('-id')
                for c in data:
                    d_in = str(c.data_venda).split()
                    d_in = d_in[0]
                    
                    if  data_v == d_in and c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                        total = total + c.preco
                        quantidade_p = quantidade_p + c.quantidade
                data_paginator = Paginator(data_lista,100)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)





            context = {'usuario':usuario,'page':page,'data_carinho':data_carinho,'total':total,'quantidade':quantidade_p}
            return render(request,'multcaixa/entradas_diarias_fixos.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')


def Detalhes_stock_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio'  and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio'  and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            data = Facturas_diarias.objects.all().order_by('-id')
            search = request.GET.get('search')
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1
            #carinho
            if search:
                data = data.filter(id__icontains=search)
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,105)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)
            else:
                data = Facturas_diarias.objects.all().order_by('-id')
                for c in data:
                    if c.id_anfitriao == usuario.id_anfitriao and c.responsavel == resp:
                        data_lista.append(c)
                data_paginator = Paginator(data_lista,100)
                page_num = request.GET.get('page')
                page = data_paginator.get_page(page_num)





            context = {'usuario':usuario,'page':page,'data_carinho':data_carinho}
            return render(request,'multcaixa/detalhes_stock.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Detalhes_factura_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
        if usuario.type_sys== 'multscor_portfolio' and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':
            venda = Facturas_diarias.objects.get(id=id)
            
            imprimir_fact = request.GET.get('imprimir')
            
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1


            #
            fact = str(venda.factura)
            fact = fact.replace(',','')
            fact = fact.replace(':','')
            fact  = str(fact).split()

            precos = str(venda.preco)
            precos = precos.replace(',','')
            precos = precos.replace(':','')
            precos  = str(precos).split()

            quantidades = str(venda.quantidade)
            quantidades = quantidades.replace(',','')
            quantidades = quantidades.replace(':','')
            quantidades  = str(quantidades).split()

            contador = 0
            story = []
            itens = []
            itensp = []
            qt = []
            lis = []
            uni = []
            total = []
            produtos = []
            
            for line in fact:

                itens.append(line)
                sp = str(line).replace('_',' ')
                sp_ = quantidades[contador]
                if sp_ == 1 or sp_ == '1':
                    unidade = 'Qt'
                else:
                    unidade = 'Qt'

                story.append(f'{sp}  {quantidades[contador]} {unidade} : {precos[contador]}mt')
                qt.append(quantidades[contador])
                uni.append(precos[contador])
                
                produtos.append(line)
            
                contador = contador + 1

            itens = zip(produtos, qt,uni)
            
            if imprimir_fact:
                
                # Cria a resposta HTTP com tipo de conteúdo PDF
                response = HttpResponse(content_type='application/pdf')
                response['Content-Disposition'] = f'inline; filename=factura_{venda.id}.pdf'

                # Cria o canvas do PDF
                p = canvas.Canvas(response, pagesize=letter)
                
                # Adiciona o título e informações principais da fatura
                p.setFont("Helvetica-Bold", 16)
                p.drawString(30, 750, f"Fatura #{venda.id}")

                p.setFont("Helvetica", 12)
                p.drawString(30, 730, f"Farmácia Honuana")
                p.drawString(30, 710, f"Data: {venda.data}")

                # Adiciona a tabela de itens com cabeçalhos
                p.setFont("Helvetica-Bold", 10)
                p.drawString(30, 650, "Item")
                p.drawString(270, 650, "Quant")
                p.drawString(370, 650, "Pr.Uni")
                p.drawString(450, 650, "Total")  # Total na extrema direita

                # Linha de separação
                p.line(30, 645, 510, 645)

                # Adiciona as linhas da tabela dinamicamente
                y_position = 630
                p.setFont("Helvetica", 10)

                total_geral = 0  # Variável para somar o total geral da fatura

                for item, item1, item2 in itens:
                    # Exibe os dados do item (nome, quantidade, preço)
                    p.drawString(30, y_position, str(item))  # Nome do item
                    p.drawString(270, y_position, str(item1))  # Quantidade do item
                    preco_unitario = int(item2) / int(item1)

                    p.drawString(370, y_position, f"{int(preco_unitario)}")  # Preço unitário do item
                    
                    # Calcula o total do item (quantidade * preço)
                    p.drawString(450, y_position, f"{item2}")  # Exibe o total do item na extrema direita
                    
                    
                    
                    # Desenha uma linha de separação após cada item
                    p.line(30, y_position - 2, 510, y_position - 2)
                    
                    y_position -= 20  # Move para a próxima linha

                    # Verifica se a página está cheia e cria uma nova página se necessário
                    if y_position < 100:
                        p.showPage()
                        p.setFont("Helvetica-Bold", 10)
                        p.drawString(30, 750, "Item")
                        p.drawString(270, 750, "Quant")
                        p.drawString(370, 750, "Pr.Uni")
                        p.drawString(450, 750, "Total")
                        p.line(30, 745, 510, 745)
                        y_position = 730  # Reinicia a posição Y para a nova página

                # Adiciona uma linha de separação antes do total geral
                p.line(30, y_position - 2, 510, y_position - 2)

                # Exibe o total geral da fatura, alinhado à direita
                p.setFont("Helvetica-Bold", 12)
                p.drawString(410, y_position - 30, f"Total: {venda.total}")

                # Finaliza o PDF e retorna a resposta
                p.showPage()
                p.save()

                return response

                return response
            context = {'usuario':usuario,'id':id,'data_carinho':data_carinho,'venda':venda,'itens':itens}
            return render(request,'multcaixa/detalhe_factura.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')
#####
# admin

def Visao_geral_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':


            feixo_diario = Facturas_diarias.objects.filter(id_anfitriao=usuario.id_anfitriao)
            feixo_f = Feixo_diario_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data_servico = Produto_vendido_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)

            

            
            ano_corrent = datetime.now().year
            mstock = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            pv = Produto_vendido.objects.filter(id_anfitriao=usuario.id_anfitriao)
            lucros_stock = Feixo_diario.objects.filter(id_anfitriao=usuario.id_anfitriao)
            mes_fact_corrent = str(datetime.now())[5:7]
            ano_fact_corrent = str(datetime.now())[:4]
            
            for istock2 in lucros_stock:
                # mes_fact = str(istock.data_venda[3:5]).strip() 
                mes_fact2 = str(istock2.data_venda[3:5]).strip()
                ano_fact = str(istock2.data_venda[6:10]).strip()
                if ano_fact == ano_fact_corrent:
                    if mes_fact2 == '01':
                        mstock['jan'] = mstock['jan'] + istock2.lucro 
                    if mes_fact2 == '02':
                        mstock['fev'] = mstock['fev'] + istock2.lucro 
                    if mes_fact2 == '03':
                        mstock['mar'] = mstock['mar'] + istock2.lucro 
                    if mes_fact2 == '04':
                        mstock['abr'] = mstock['abr'] + istock2.lucro 
                    if mes_fact2 == '05':
                        mstock['mai'] = mstock['mai'] + istock2.lucro 
                    if mes_fact2 == '06':
                        mstock['jun'] = mstock['jun'] + istock2.lucro 
                    if mes_fact2 == '07':
                        mstock['jul'] = mstock['jul'] + istock2.lucro 
                    if mes_fact2 == '08':
                        mstock['ago'] = mstock['ago'] + istock2.lucro 
                    if mes_fact2 == '09':
                        mstock['set'] = mstock['set'] + istock2.lucro 
                    if mes_fact2 == '10':
                        mstock['out'] = mstock['out'] + istock2.lucro 
                    if mes_fact2 == '11':
                        mstock['nov'] = mstock['nov'] + istock2.lucro 
                    if mes_fact2 == '12':
                        mstock['dez'] = mstock['dez'] + istock2.lucro 

            for istock in pv:
                mes_fact = str(istock.data_venda[3:5]).strip() 
                # mes_fact2 = str(istock2.data_venda[3:5]).strip()
                ano_fact = str(istock.data_venda[6:10]).strip()
                if ano_fact == ano_fact_corrent:
                    # mes anterior
                    if mes_fact == '01':
                        mstock['jan'] = mstock['jan'] + istock.lucro
                    if mes_fact == '02':
                        mstock['fev'] = mstock['fev'] + istock.lucro
                    if mes_fact == '03':
                        mstock['mar'] = mstock['mar'] + istock.lucro
                    if mes_fact == '04':
                        mstock['abr'] = mstock['abr'] + istock.lucro
                    if mes_fact == '05':
                        mstock['mai'] = mstock['mai'] + istock.lucro
                    if mes_fact == '06':
                        mstock['jun'] = mstock['jun'] + istock.lucro
                    if mes_fact == '07':
                        mstock['jul'] = mstock['jul'] + istock.lucro
                    if mes_fact == '08':
                        mstock['ago'] = mstock['ago'] + istock.lucro
                    if mes_fact == '09':
                        mstock['set'] = mstock['set'] + istock.lucro
                    if mes_fact == '10':
                        mstock['out'] = mstock['out'] + istock.lucro
                    if mes_fact == '11':
                        mstock['nov'] = mstock['nov'] + istock.lucro
                    if mes_fact == '12':
                        mstock['dez'] = mstock['dez'] + istock.lucro
                

            feixo_data = Feixo_data.objects.filter(id_anfitriao=usuario.id_anfitriao)
            m = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            ms = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            mdes = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            for i in feixo_data:
                if i.data == f'01 {ano_corrent}':
                    m['jan'] = i.total
                if i.data == f'02 {ano_corrent}':
                    m['fev'] = i.total
                if i.data == f'03 {ano_corrent}':
                    m['mar'] = i.total
                if i.data == f'04 {ano_corrent}':
                    m['abr'] = i.total
                if i.data == f'05 {ano_corrent}':
                    m['mai'] = i.total
                if i.data == f'06 {ano_corrent}':
                    m['jun'] = i.total
                if i.data == f'07 {ano_corrent}':
                    m['jul'] = i.total
                if i.data == f'08 {ano_corrent}':
                    m['ago'] = i.total
                if i.data == f'09 {ano_corrent}':
                    m['set'] = i.total
                if i.data == f'10 {ano_corrent}':
                    m['out'] = i.total
                if i.data == f'11 {ano_corrent}':
                    m['nov'] = i.total
                if i.data == f'12 {ano_corrent}':
                    m['dez'] = i.total

            despesas = Despesas.objects.filter(id_anfitriao=usuario.id_anfitriao)

            for item_despesa in despesas:
                mes_fact = str(item_despesa.data[3:5]).strip()
                ano_fact = str(item_despesa.data[6:10]).strip()
                if mes_fact == mes_fact_corrent and ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        mdes['jan'] = mdes['jan'] + item_despesa.valor
                    if mes_fact == '02':
                        mdes['fev'] = mdes['fev'] + item_despesa.valor
                    if mes_fact == '03':
                        mdes['mar'] = mdes['mar'] + item_despesa.valor
                    if mes_fact == '04':
                        mdes['abr'] = mdes['abr'] + item_despesa.valor
                    if mes_fact == '05':
                        mdes['mai'] = mdes['mai'] + item_despesa.valor
                    if mes_fact == '06':
                        mdes['jun'] = mdes['jun'] + item_despesa.valor
                    if mes_fact == '07':
                        mdes['jul'] = mdes['jul'] + item_despesa.valor
                    if mes_fact == '08':
                        mdes['ago'] = mdes['ago'] + item_despesa.valor
                    if mes_fact == '09':
                        mdes['set'] = mdes['set'] + item_despesa.valor
                    if mes_fact == '10':
                        mdes['out'] = mdes['out'] + item_despesa.valor
                    if mes_fact == '11':
                        mdes['nov'] = mdes['nov'] + item_despesa.valor
                    if mes_fact == '12':
                        mdes['dez'] = mdes['dez'] + item_despesa.valor

            

            mes_fact_corrent = str(datetime.now())[5:7]
            ano_fact_corrent = str(datetime.now())[:4]

            for item_mes in feixo_diario:
                mes_fact = str(item_mes.data[3:5]).strip()
                ano_fact = str(item_mes.data[6:10]).strip()
                if mes_fact == mes_fact_corrent and ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        m['jan'] = m['jan'] + item_mes.total
                    if mes_fact == '02':
                        m['fev'] = m['fev'] + item_mes.total
                    if mes_fact == '03':
                        m['mar'] = m['mar'] + item_mes.total
                    if mes_fact == '04':
                        m['abr'] = m['abr'] + item_mes.total
                    if mes_fact == '05':
                        m['mai'] = m['mai'] + item_mes.total
                    if mes_fact == '06':
                        m['jun'] = m['jun'] + item_mes.total
                    if mes_fact == '07':
                        m['jul'] = m['jul'] + item_mes.total
                    if mes_fact == '08':
                        m['ago'] = m['ago'] + item_mes.total
                    if mes_fact == '09':
                        m['set'] = m['set'] + item_mes.total
                    if mes_fact == '10':
                        m['out'] = m['out'] + item_mes.total
                    if mes_fact == '11':
                        m['nov'] = m['nov'] + item_mes.total
                    if mes_fact == '12':
                        m['dez'] = m['dez'] + item_mes.total
            meses = m.keys()

            m1 = {'jan':10,'fev':2,'mar':20,'abr':50,'mai':12,'jun':10,'jul':0,'ago':90,'set':0,'out':0,'nov':0,'dez':0}

            
            for item_mes_s in data_servico:
                

                mes_fact = str(item_mes_s.data_venda[3:5]).strip()
                # mes_fact2 = str(item_mes_s2.data_venda[3:5]).strip()
                ano_fact = str(item_mes_s.data_venda[6:10]).strip()
                # ano_fact2 = str(item_mes_s2.data_venda[6:10]).strip()
                # print(mes_fact,mes_fact_corrent,ano_fact,ano_fact_corrent)
                if ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        ms['jan'] = ms['jan'] + item_mes_s.preco
                    if mes_fact == '02':
                        ms['fev'] = ms['fev'] + item_mes_s.preco
                    if mes_fact == '03':
                        ms['mar'] = ms['mar'] + item_mes_s.preco
                    if mes_fact == '04':
                        ms['abr'] = ms['abr'] + item_mes_s.preco
                    if mes_fact == '05':
                        ms['mai'] = ms['mai'] + item_mes_s.preco
                    if mes_fact == '06':
                        ms['jun'] = ms['jun'] + item_mes_s.preco
                    if mes_fact == '07':
                        ms['jul'] = ms['jul'] + item_mes_s.preco
                    if mes_fact == '08':
                        ms['ago'] = ms['ago'] + item_mes_s.preco
                    if mes_fact == '09':
                        ms['set'] = ms['set'] + item_mes_s.preco
                    if mes_fact == '10':
                        ms['out'] = ms['out'] + item_mes_s.preco
                    if mes_fact == '11':
                        ms['nov'] = ms['nov'] + item_mes_s.preco
                    if mes_fact == '12':
                        ms['dez'] = ms['dez'] + item_mes_s.preco
            for item_mes_s2 in feixo_f:

                # mes_fact = str(item_mes_s.data_venda[3:5]).strip()
                mes_fact2 = str(item_mes_s2.data_venda[3:5]).strip()
                # ano_fact = str(item_mes_s.data_venda[6:10]).strip()
                ano_fact2 = str(item_mes_s2.data_venda[6:10]).strip()
                # print(mes_fact,mes_fact_corrent,ano_fact,ano_fact_corrent)
                if  ano_fact2 == ano_fact_corrent:
                    
                    if mes_fact2 == '01':
                        ms['jan'] = ms['jan'] + item_mes_s2.preco
                    if mes_fact2 == '02':
                        ms['fev'] = ms['fev'] + item_mes_s2.preco
                    if mes_fact2 == '03':
                        ms['mar'] = ms['mar'] + item_mes_s2.preco
                    if mes_fact2 == '04':
                        ms['abr'] = ms['abr'] + item_mes_s2.preco
                    if mes_fact2 == '05':
                        ms['mai'] = ms['mai'] + item_mes_s2.preco
                    if mes_fact2 == '06':
                        ms['jun'] = ms['jun'] + item_mes_s2.preco
                    if mes_fact2 == '07':
                        ms['jul'] = ms['jul'] + item_mes_s2.preco
                    if mes_fact2 == '08':
                        ms['ago'] = ms['ago'] + item_mes_s2.preco
                    if mes_fact2 == '09':
                        ms['set'] = ms['set'] + item_mes_s2.preco
                    if mes_fact2 == '10':
                        ms['out'] = ms['out'] + item_mes_s2.preco
                    if mes_fact2 == '11':
                        ms['nov'] = ms['nov'] + item_mes_s2.preco
                    if mes_fact2 == '12':
                        ms['dez'] = ms['dez'] + item_mes_s2.preco
                    

            meses_s = ms.keys() #estatistica dos meses
            months = ms.values() # estatistica dos servicos
            month = m.values() # estatistica das receitas
            monthstock = mstock.values() # estatistica lucro produtos
            monthdesp = mdes.values() # estatistica despesas 
            lucro_geral = {'jan':(ms['jan']+mstock['jan'])-mdes['jan'],'fev':(ms['fev']+mstock['fev'])-mdes['fev'],'mar':(ms['mar']+mstock['mar'])-mdes['mar'],'abr':(ms['abr']+mstock['abr'])-mdes['abr'],'mai':(ms['mai']+mstock['mai'])-mdes['mai'],'jun':(ms['jun']+mstock['jun'])-mdes['jun'],'jul':(ms['jul']+mstock['jul'])-mdes['jul'],'ago':(ms['ago']+mstock['ago'])-mdes['ago'],'set':(ms['set']+mstock['set'])-mdes['set'],'out':(ms['out']+mstock['out'])-mdes['out'],'nov':(ms['nov']+mstock['nov'])-mdes['nov'],'dez':(ms['dez']+mstock['dez'])-mdes['dez']}
            monthlucrogeral = lucro_geral.values()
            receita_total = sum(m.values()) + sum(ms.values())
            # Verifique se receita_total é zero antes de realizar a divisão
            if receita_total != 0:
                custo = (sum(m.values()) - sum(mstock.values())) / receita_total * 100
                
            else:
                # Caso receita_total seja zero, você pode definir custo como 0 ou outro valor padrão
                custo = 0  # ou None, dependendo da sua necessidade

            # Formatação para exibir o valor com 2 casas decimais
            custo = "{:.2f}".format(custo)

            # Verifica se receita_total não é zero antes de calcular as porcentagens
            if receita_total != 0:
                despesas_percentagem = (sum(mdes.values()) / receita_total) * 100
                lucro_percentagem = (sum(lucro_geral.values()) / receita_total) * 100
            else:
                # Se receita_total for zero, define as porcentagens como 0 ou outro valor desejado
                despesas_percentagem = 0  # ou None
                lucro_percentagem = 0     # ou None

            # Formatação para exibir as porcentagens com 2 casas decimais
            despesas_percentagem = "{:.2f}".format(despesas_percentagem)
            lucro_percentagem = "{:.2f}".format(lucro_percentagem)
            estado = ''
            
            critico = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) > receita_total
            equilibrio = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) == receita_total
            bom = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) < receita_total
            
            if critico:
                estado = 'critico'
            elif equilibrio and sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) == receita_total and receita_total !=0:
                estado = 'normal'
            elif bom:
                estado = 'bom'
            ano_atual = datetime.now().year
    
            # Define o intervalo de anos (por exemplo, de 2023 até o ano atual)
            ano_inicio = 2023  # Agora começa de 2023
            anos_range = [ano for ano in range(ano_inicio, ano_atual + 1)]  # Lista de anos de 2023 até o ano atual

            # Captura o ano selecionado via GET (caso exista)
            ano_selecionado = request.GET.get('ano', ano_atual)

            
            
            return render(request,'multcaixa/visao_geral.html',
            {
                'usuario':usuario,
                # 'estatistica_geral':data_lista,
                'estado':estado,
                'meses':meses,
                'month':month,
                'meses_s':meses_s,
                'months':months,
                'monthstock':monthstock,
                'monthdesp':monthdesp,
                'monthlucrogeral':monthlucrogeral,
                'receita_total':custo,
                'despesas_percentagem':despesas_percentagem,
                'lucro_percentagem':lucro_percentagem,

                'mes_valor':m,
                'm1':m1,
                'ano':ano_corrent,

                'ano_atual': ano_atual,
                'ano_selecionado': int(ano_selecionado),
                'anos_range': anos_range,
            })
        else:
            return redirect('login')
    else:
        return redirect('login')


def Visao_geral_return_HTML(request,ano):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':


            feixo_diario = Facturas_diarias.objects.filter(id_anfitriao=usuario.id_anfitriao)
            feixo_f = Feixo_diario_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data_servico = Produto_vendido_fixo.objects.filter(id_anfitriao=usuario.id_anfitriao)

            

            
            ano_corrent = str(ano)
            mstock = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            pv = Produto_vendido.objects.filter(id_anfitriao=usuario.id_anfitriao)
            lucros_stock = Feixo_diario.objects.filter(id_anfitriao=usuario.id_anfitriao)
            mes_fact_corrent = str(datetime.now())[5:7]
            ano_fact_corrent = str(ano)
            
            for istock2 in lucros_stock:
                # mes_fact = str(istock.data_venda[3:5]).strip() 
                mes_fact2 = str(istock2.data_venda[3:5]).strip()
                ano_fact = str(istock2.data_venda[6:10]).strip()
                if ano_fact == ano_fact_corrent:
                    if mes_fact2 == '01':
                        mstock['jan'] = mstock['jan'] + istock2.lucro 
                    if mes_fact2 == '02':
                        mstock['fev'] = mstock['fev'] + istock2.lucro 
                    if mes_fact2 == '03':
                        mstock['mar'] = mstock['mar'] + istock2.lucro 
                    if mes_fact2 == '04':
                        mstock['abr'] = mstock['abr'] + istock2.lucro 
                    if mes_fact2 == '05':
                        mstock['mai'] = mstock['mai'] + istock2.lucro 
                    if mes_fact2 == '06':
                        mstock['jun'] = mstock['jun'] + istock2.lucro 
                    if mes_fact2 == '07':
                        mstock['jul'] = mstock['jul'] + istock2.lucro 
                    if mes_fact2 == '08':
                        mstock['ago'] = mstock['ago'] + istock2.lucro 
                    if mes_fact2 == '09':
                        mstock['set'] = mstock['set'] + istock2.lucro 
                    if mes_fact2 == '10':
                        mstock['out'] = mstock['out'] + istock2.lucro 
                    if mes_fact2 == '11':
                        mstock['nov'] = mstock['nov'] + istock2.lucro 
                    if mes_fact2 == '12':
                        mstock['dez'] = mstock['dez'] + istock2.lucro 

            for istock in pv:
                mes_fact = str(istock.data_venda[3:5]).strip() 
                # mes_fact2 = str(istock2.data_venda[3:5]).strip()
                ano_fact = str(istock.data_venda[6:10]).strip()
                if ano_fact == ano_fact_corrent:
                    # mes anterior
                    if mes_fact == '01':
                        mstock['jan'] = mstock['jan'] + istock.lucro
                    if mes_fact == '02':
                        mstock['fev'] = mstock['fev'] + istock.lucro
                    if mes_fact == '03':
                        mstock['mar'] = mstock['mar'] + istock.lucro
                    if mes_fact == '04':
                        mstock['abr'] = mstock['abr'] + istock.lucro
                    if mes_fact == '05':
                        mstock['mai'] = mstock['mai'] + istock.lucro
                    if mes_fact == '06':
                        mstock['jun'] = mstock['jun'] + istock.lucro
                    if mes_fact == '07':
                        mstock['jul'] = mstock['jul'] + istock.lucro
                    if mes_fact == '08':
                        mstock['ago'] = mstock['ago'] + istock.lucro
                    if mes_fact == '09':
                        mstock['set'] = mstock['set'] + istock.lucro
                    if mes_fact == '10':
                        mstock['out'] = mstock['out'] + istock.lucro
                    if mes_fact == '11':
                        mstock['nov'] = mstock['nov'] + istock.lucro
                    if mes_fact == '12':
                        mstock['dez'] = mstock['dez'] + istock.lucro
                

            feixo_data = Feixo_data.objects.filter(id_anfitriao=usuario.id_anfitriao)
            m = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            ms = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            mdes = {'jan':0,'fev':0,'mar':0,'abr':0,'mai':0,'jun':0,'jul':0,'ago':0,'set':0,'out':0,'nov':0,'dez':0}
            for i in feixo_data:
                if i.data == f'01 {ano_corrent}':
                    m['jan'] = i.total
                if i.data == f'02 {ano_corrent}':
                    m['fev'] = i.total
                if i.data == f'03 {ano_corrent}':
                    m['mar'] = i.total
                if i.data == f'04 {ano_corrent}':
                    m['abr'] = i.total
                if i.data == f'05 {ano_corrent}':
                    m['mai'] = i.total
                if i.data == f'06 {ano_corrent}':
                    m['jun'] = i.total
                if i.data == f'07 {ano_corrent}':
                    m['jul'] = i.total
                if i.data == f'08 {ano_corrent}':
                    m['ago'] = i.total
                if i.data == f'09 {ano_corrent}':
                    m['set'] = i.total
                if i.data == f'10 {ano_corrent}':
                    m['out'] = i.total
                if i.data == f'11 {ano_corrent}':
                    m['nov'] = i.total
                if i.data == f'12 {ano_corrent}':
                    m['dez'] = i.total

            despesas = Despesas.objects.filter(id_anfitriao=usuario.id_anfitriao)

            for item_despesa in despesas:
                mes_fact = str(item_despesa.data[3:5]).strip()
                ano_fact = str(item_despesa.data[6:10]).strip()
                if mes_fact == mes_fact_corrent and ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        mdes['jan'] = mdes['jan'] + item_despesa.valor
                    if mes_fact == '02':
                        mdes['fev'] = mdes['fev'] + item_despesa.valor
                    if mes_fact == '03':
                        mdes['mar'] = mdes['mar'] + item_despesa.valor
                    if mes_fact == '04':
                        mdes['abr'] = mdes['abr'] + item_despesa.valor
                    if mes_fact == '05':
                        mdes['mai'] = mdes['mai'] + item_despesa.valor
                    if mes_fact == '06':
                        mdes['jun'] = mdes['jun'] + item_despesa.valor
                    if mes_fact == '07':
                        mdes['jul'] = mdes['jul'] + item_despesa.valor
                    if mes_fact == '08':
                        mdes['ago'] = mdes['ago'] + item_despesa.valor
                    if mes_fact == '09':
                        mdes['set'] = mdes['set'] + item_despesa.valor
                    if mes_fact == '10':
                        mdes['out'] = mdes['out'] + item_despesa.valor
                    if mes_fact == '11':
                        mdes['nov'] = mdes['nov'] + item_despesa.valor
                    if mes_fact == '12':
                        mdes['dez'] = mdes['dez'] + item_despesa.valor

            

            mes_fact_corrent = str(datetime.now())[5:7]
            ano_fact_corrent = str(ano)

            for item_mes in feixo_diario:
                mes_fact = str(item_mes.data[3:5]).strip()
                ano_fact = str(item_mes.data[6:10]).strip()
                if mes_fact == mes_fact_corrent and ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        m['jan'] = m['jan'] + item_mes.total
                    if mes_fact == '02':
                        m['fev'] = m['fev'] + item_mes.total
                    if mes_fact == '03':
                        m['mar'] = m['mar'] + item_mes.total
                    if mes_fact == '04':
                        m['abr'] = m['abr'] + item_mes.total
                    if mes_fact == '05':
                        m['mai'] = m['mai'] + item_mes.total
                    if mes_fact == '06':
                        m['jun'] = m['jun'] + item_mes.total
                    if mes_fact == '07':
                        m['jul'] = m['jul'] + item_mes.total
                    if mes_fact == '08':
                        m['ago'] = m['ago'] + item_mes.total
                    if mes_fact == '09':
                        m['set'] = m['set'] + item_mes.total
                    if mes_fact == '10':
                        m['out'] = m['out'] + item_mes.total
                    if mes_fact == '11':
                        m['nov'] = m['nov'] + item_mes.total
                    if mes_fact == '12':
                        m['dez'] = m['dez'] + item_mes.total
            meses = m.keys()

            m1 = {'jan':10,'fev':2,'mar':20,'abr':50,'mai':12,'jun':10,'jul':0,'ago':90,'set':0,'out':0,'nov':0,'dez':0}

            
            for item_mes_s in data_servico:
                

                mes_fact = str(item_mes_s.data_venda[3:5]).strip()
                # mes_fact2 = str(item_mes_s2.data_venda[3:5]).strip()
                ano_fact = str(item_mes_s.data_venda[6:10]).strip()
                # ano_fact2 = str(item_mes_s2.data_venda[6:10]).strip()
                # print(mes_fact,mes_fact_corrent,ano_fact,ano_fact_corrent)
                if ano_fact == ano_fact_corrent:
                    if mes_fact == '01':
                        ms['jan'] = ms['jan'] + item_mes_s.preco
                    if mes_fact == '02':
                        ms['fev'] = ms['fev'] + item_mes_s.preco
                    if mes_fact == '03':
                        ms['mar'] = ms['mar'] + item_mes_s.preco
                    if mes_fact == '04':
                        ms['abr'] = ms['abr'] + item_mes_s.preco
                    if mes_fact == '05':
                        ms['mai'] = ms['mai'] + item_mes_s.preco
                    if mes_fact == '06':
                        ms['jun'] = ms['jun'] + item_mes_s.preco
                    if mes_fact == '07':
                        ms['jul'] = ms['jul'] + item_mes_s.preco
                    if mes_fact == '08':
                        ms['ago'] = ms['ago'] + item_mes_s.preco
                    if mes_fact == '09':
                        ms['set'] = ms['set'] + item_mes_s.preco
                    if mes_fact == '10':
                        ms['out'] = ms['out'] + item_mes_s.preco
                    if mes_fact == '11':
                        ms['nov'] = ms['nov'] + item_mes_s.preco
                    if mes_fact == '12':
                        ms['dez'] = ms['dez'] + item_mes_s.preco
            for item_mes_s2 in feixo_f:

                # mes_fact = str(item_mes_s.data_venda[3:5]).strip()
                mes_fact2 = str(item_mes_s2.data_venda[3:5]).strip()
                # ano_fact = str(item_mes_s.data_venda[6:10]).strip()
                ano_fact2 = str(item_mes_s2.data_venda[6:10]).strip()
                # print(mes_fact,mes_fact_corrent,ano_fact,ano_fact_corrent)
                if  ano_fact2 == ano_fact_corrent:
                    
                    if mes_fact2 == '01':
                        ms['jan'] = ms['jan'] + item_mes_s2.preco
                    if mes_fact2 == '02':
                        ms['fev'] = ms['fev'] + item_mes_s2.preco
                    if mes_fact2 == '03':
                        ms['mar'] = ms['mar'] + item_mes_s2.preco
                    if mes_fact2 == '04':
                        ms['abr'] = ms['abr'] + item_mes_s2.preco
                    if mes_fact2 == '05':
                        ms['mai'] = ms['mai'] + item_mes_s2.preco
                    if mes_fact2 == '06':
                        ms['jun'] = ms['jun'] + item_mes_s2.preco
                    if mes_fact2 == '07':
                        ms['jul'] = ms['jul'] + item_mes_s2.preco
                    if mes_fact2 == '08':
                        ms['ago'] = ms['ago'] + item_mes_s2.preco
                    if mes_fact2 == '09':
                        ms['set'] = ms['set'] + item_mes_s2.preco
                    if mes_fact2 == '10':
                        ms['out'] = ms['out'] + item_mes_s2.preco
                    if mes_fact2 == '11':
                        ms['nov'] = ms['nov'] + item_mes_s2.preco
                    if mes_fact2 == '12':
                        ms['dez'] = ms['dez'] + item_mes_s2.preco
                    

            meses_s = ms.keys() #estatistica dos meses
            months = ms.values() # estatistica dos servicos
            month = m.values() # estatistica das receitas
            monthstock = mstock.values() # estatistica lucro produtos
            monthdesp = mdes.values() # estatistica despesas 
            lucro_geral = {'jan':(ms['jan']+mstock['jan'])-mdes['jan'],'fev':(ms['fev']+mstock['fev'])-mdes['fev'],'mar':(ms['mar']+mstock['mar'])-mdes['mar'],'abr':(ms['abr']+mstock['abr'])-mdes['abr'],'mai':(ms['mai']+mstock['mai'])-mdes['mai'],'jun':(ms['jun']+mstock['jun'])-mdes['jun'],'jul':(ms['jul']+mstock['jul'])-mdes['jul'],'ago':(ms['ago']+mstock['ago'])-mdes['ago'],'set':(ms['set']+mstock['set'])-mdes['set'],'out':(ms['out']+mstock['out'])-mdes['out'],'nov':(ms['nov']+mstock['nov'])-mdes['nov'],'dez':(ms['dez']+mstock['dez'])-mdes['dez']}
            monthlucrogeral = lucro_geral.values()
            receita_total = sum(m.values()) + sum(ms.values())
            # Verifique se receita_total é zero antes de realizar a divisão
            if receita_total != 0:
                custo = (sum(m.values()) - sum(mstock.values())) / receita_total * 100
            else:
                # Caso receita_total seja zero, você pode definir custo como 0 ou outro valor padrão
                custo = 0  # ou None, dependendo da sua necessidade

            # Formatação para exibir o valor com 2 casas decimais
            custo = "{:.2f}".format(custo)

            # Verifica se receita_total não é zero antes de calcular as porcentagens
            if receita_total != 0:
                despesas_percentagem = (sum(mdes.values()) / receita_total) * 100
                lucro_percentagem = (sum(lucro_geral.values()) / receita_total) * 100
            else:
                # Se receita_total for zero, define as porcentagens como 0 ou outro valor desejado
                despesas_percentagem = 0  # ou None
                lucro_percentagem = 0     # ou None

            # Formatação para exibir as porcentagens com 2 casas decimais
            despesas_percentagem = "{:.2f}".format(despesas_percentagem)
            lucro_percentagem = "{:.2f}".format(lucro_percentagem)

            estado = ''
            
            critico = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) > receita_total
            equilibrio = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) == receita_total
            bom = sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) < receita_total
            
            if critico:
                estado = 'critico'
            elif equilibrio and sum(mdes.values()) + (sum(m.values()) - sum(mstock.values())) == receita_total and receita_total !=0:
                estado = 'normal'
            elif bom:
                estado = 'bom'
            

            
            return render(request,'multcaixa/visao_geral_return.html',
            {
                'usuario':usuario,
                # 'estatistica_geral':data_lista,
                'meses':meses,
                'month':month,
                'meses_s':meses_s,
                'months':months,
                'monthstock':monthstock,
                'monthdesp':monthdesp,
                'monthlucrogeral':monthlucrogeral,
                'receita_total':custo,
                'despesas_percentagem':despesas_percentagem,
                'lucro_percentagem':lucro_percentagem,

                'mes_valor':m,
                'm1':m1,
                'ano':ano_corrent,
                'estado':estado,
                
            })
        else:
            return redirect('login')
    else:
        return redirect('login')

# visao geral dos meses
def Visao_geral_mes_HTML(request,mes):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':
            #
            
            
            if mes == 'jan':mes = 1
            if mes == 'fev':mes = 2
            if mes == 'mar':mes = 3
            if mes == 'abr':mes = 4
            if mes == 'mai':mes = 5
            if mes == 'jun':mes = 6
            if mes == 'jul':mes = 7
            if mes == 'ago':mes = 8
            if mes == 'set':mes = 9
            if mes == 'out':mes = 10
            if mes == 'nov':mes = 11
            if mes == 'dez':mes = 12

            hoje = datetime.now()

            mes_atual = mes
            ano_atual = hoje.year

            factura = Facturas.objects.filter(id_anfitriao=usuario.id_anfitriao)

            if len(f'{mes}') == 1:mes_fact_corrent = f'0{mes}'
            else:mes_fact_corrent = f'{mes}'
            
            
            ano_fact_corrent = f'{ano_atual}'
            lista = []
            for item_mes in factura:
                mes_fact = str(item_mes.data[3:5]).strip()
                ano_fact = str(item_mes.data[6:10]).strip()
                
                
                if mes_fact == mes_fact_corrent and ano_fact == ano_fact_corrent:   
                    lista.append(item_mes)
                    
                    
            
            
            # Cria um calendário para o mês corrente
            calendario = calendar.monthcalendar(ano_atual, mes_atual)

            # Obtém os dias da semana
            dias_da_semana = ["Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"]

            mes_ = []
            ano_ = []

            dia_semana_ = []
            cont = 0
            dia_semana1 = []
            semana1 = []

            dia_semana2 = []
            semana2 = []

            dia_semana3 = []
            semana3 = []

            dia_semana4 = []
            semana4 = []

            # Itera sobre cada semana no calendário
            for semana in calendario:
                for i, dia in enumerate(semana):
                    if dia != 0:  # Ignora os dias 0 (que não pertencem ao mês corrente)
                        dia_semana = dias_da_semana[i]
                        
                        if cont==0:
                            mes_.append(mes_atual)
                            ano_.append(ano_atual)

                        if dia<10:
                            total = 0
                            for item_dia in lista:
                                d_item = str(item_dia.data[0:2]).strip()
                                
                                if f'0{dia}' == d_item:
                                    
                                    total = item_dia.total + total
                                    
                            semana1.append(total)

                            total = 0

                            dia_semana1.append(f'{dia_semana}-{dia}')
                        if dia>9 and dia <17:
                            total = 0
                            for item_dia in lista:
                                d_item = str(item_dia.data[0:2]).strip()
                                if f'{dia}' == d_item:
                                    
                                    total = item_dia.total + total
                                    
                            semana2.append(total)

                            total = 0

                            dia_semana2.append(f'{dia_semana}-{dia}')
                        if dia>16 and dia <24:
                            total = 0
                            for item_dia in lista:
                                d_item = str(item_dia.data[0:2]).strip()
                                if f'{dia}' == d_item:
                                    
                                    total = item_dia.total + total
                                    
                            semana3.append(total)

                            total = 0

                            dia_semana3.append(f'{dia_semana}-{dia}')
                        if dia>23 and dia <32:
                            total = 0
                            for item_dia in lista:
                                d_item = str(item_dia.data[0:2]).strip()
                                if f'{dia}' == d_item:
                                    
                                    total = item_dia.total + total
                                    
                            semana4.append(total)

                            total = 0

                            dia_semana4.append(f'{dia_semana}-{dia}')
                            
                        cont = cont + 1
            
            return render(request,'multcaixa/visao_geral_meses.html',
            {
                'usuario':usuario,
                'semana1':semana1,
                'dia_semana1':dia_semana1,
                'semana2':semana2,
                'dia_semana2':dia_semana2,
                'semana3':semana3,
                'dia_semana3':dia_semana3,
                'semana4':semana4,
                'dia_semana4':dia_semana4,
                
            })
        else:
            return redirect('login')
    else:
        return redirect('login')
def Admin_stock_categ_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
           
            context ={'usuario':usuario}
            return render(request,'multcaixa/admin_stock_categ.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')
        
def Admin_stock_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
            data = Stok.objects.all().order_by('-id')
            data_lista = []
            total = 0
            cont = 0
            for item in data:
                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)
                    total = total + (item.preco * item.quantidade)
                    cont = cont + 1

            data_paginator = Paginator(data_lista,105)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context ={'usuario':usuario,'page':page,'total':total,'cont':cont}
            return render(request,'multcaixa/admin_stock1.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Admin_servico_categ_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
            
            context ={'usuario':usuario}
            return render(request,'multcaixa/admin_servico_categ.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Admin_servico_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
            data = Stok_fixo.objects.all().order_by('-id')
            data_lista = []
            total = 0
            cont = 0
            for item in data:
                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)
                    total = total + item.preco
                    cont = cont + 1

            data_paginator = Paginator(data_lista,105)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context = {'usuario':usuario,'page':page,'total':total,'cont':cont}
            return render(request,'multcaixa/admin_servico1.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Admin_venda_categ_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
            
            context ={'usuario':usuario}
            return render(request,'multcaixa/admin_venda_categ.html',context)
        else:
            return redirect('home')
    else:
        return redirect('login')

def Admin_venda_diaria_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' and pode_acessar_mensalidade or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:

            #automacao de feixo
            hoje_auto = datetime.now()
            primeiro_dia_proximo_mes = (hoje_auto.replace(day=1)+timedelta(days=31)).replace(day=1)

            ultimo_dia = primeiro_dia_proximo_mes - timedelta(days=1)
            d = datetime.now()
            data_v = d.strftime('%d')
            feixo_ = 0
            if ultimo_dia == data_v:
                feixo_ = 1
            else:feixo_ = 0

            # data_venda = Produto_vendido_fixo.objects.all().order_by('-id')
            data_venda = Facturas_diarias.objects.all().order_by('-id')
            data_lista = []
            total = 0
            quantidade = 0
            for item in data_venda:
                if item.id_anfitriao == usuario.id_anfitriao:
                    total = total + item.total
                    quantidade = quantidade + 1
                    data_lista.append(item)
            # for item in data_venda1:
            #     if item.id_anfitriao == usuario.id_anfitriao:
            #         data_lista.append(item)

            data_paginator = Paginator(data_lista, 100)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            context ={'usuario':usuario,'page':page,'total':total,'quantidade':quantidade,'feixo_':feixo_}


            return render(request,'multcaixa/admin_vendas_diarias1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def Feixo_Diario_Fixo_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)

        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        if usuario.pacote == 'medio' and pode_acessar_mensalidade and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()


        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1' or usuario.type_sys== 'multscor_portfolio' and  pode_acessar_mensalidade and usuario.status_trabalho == 'habilitado' and usuario.tipo_de_conta == 'caixa1-armazem':

            feixo_venda = Produto_vendido_fixo.objects.all().order_by('-id')

            lista = []
            data_historico = Feixo_diario_fixo.objects.all()
            for item in feixo_venda:
                if item.responsavel == f'{usuario.primeiro_nome} {usuario.apelido}' :
                    hist_create = Feixo_diario_fixo.objects.create(id_anfitriao=usuario.id_anfitriao,produto=item.produto,imagem=item.imagem,quantidade=item.quantidade,preco=item.preco,lucro=item.lucro,data_venda=item.data_venda,hora_venda=item.hora_venda,responsavel=item.responsavel)
                    PRODUTO = Produto_vendido_fixo.objects.get(id=item.id)
                    PRODUTO.delete()
            return redirect(Detalhes_HTML)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')


def Admin_Servico_Diario_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':

            # data_venda = Produto_vendido_fixo.objects.all().order_by('-id')
            data_venda = Produto_vendido_fixo.objects.all().order_by('-id')
            data_lista = []
            total = 0
            quantidade = 0
            for item in data_venda:
                if item.id_anfitriao == usuario.id_anfitriao:
                    total = total + item.preco
                    quantidade = quantidade + item.quantidade
                    data_lista.append(item)

            # for item in data_venda1:
            #     if item.id_anfitriao == usuario.id_anfitriao:
            #         data_lista.append(item)

            data_paginator = Paginator(data_lista, 100)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            context ={'usuario':usuario,'page':page,'total':total,'quantidade':quantidade}


            return render(request,'multcaixa/admin_servicos_diarios.html',context)
        else:
            return redirect('home')

    else:
        return redirect('login')


def Admin_funcionario_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys== 'multscor_portfolio'  and usuario.tipo_de_conta == 'supervisor':
            data_funcionarios = Usuario.objects.all().order_by('-id')
            data_lista = []
            contar_fun = 0
            for item in data_funcionarios:
                if item.id_anfitriao == usuario.id_anfitriao and item.type_sys=='multscor_portfolio' and item.tipo_de_conta != 'gestor':
                    data_lista.append(item)
                    contar_fun = contar_fun + 1


            data_paginator = Paginator(data_lista,100)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)
            abrir_popup = False
            if request.method == 'POST':
                abrir_popup = True
                username = request.POST.get('username')
                contacto = request.POST.get('contacto')
                primeiro_nome = request.POST.get('primeiro_nome')
                apelido = request.POST.get('apelido')
                email = request.POST.get('email')
                previlegio = request.POST.get('previlegio')
                password1 = request.POST.get('senha')
                password2 = request.POST.get('senhaconfirm')


                ver_usuario = User.objects.filter(username=username)
                ver_contacto = Usuario.objects.filter(contacto=contacto)

                if password1 != password2:
                    messages.info(request,'Palavra passe diferente!')

                elif ver_usuario:
                    messages.info(request,f'Usuario {username} ja existe no sistema!')
                    messages.info(request,'sugerimos que acreste algo ao nome do usuario')

                elif ver_contacto:
                    messages.info(request,f'O Contacto {contacto} ja existe no sistema!')

                else:
                    
                    if password1 == password2 and contar_fun < 2 and usuario.pacote == 'basico' or password1 == password2 and contar_fun < 4 and usuario.pacote == 'medio' or password1 == password2 and contar_fun < 8 and usuario.pacote == 'executivo':

                        user = User.objects.create_user(username=username,password=password1,email=email)
                        user.save()

                        userconf = User.objects.get(username=username)
                        user_cont = Usuario(contacto=contacto,id_pertence=userconf.id,id_anfitriao=usuario.id_anfitriao,tipo_de_conta=previlegio,type_sys='multscor_portfolio',primeiro_nome=primeiro_nome,apelido=apelido,pacote=usuario.pacote,data_pagamento=usuario.data_pagamento,data_validade_pagamento=usuario.data_validade_pagamento,mensalidade_pagamento=usuario.mensalidade_pagamento)
                        user_cont.save()
                        messages.info(request,f'Conta criada com sucesso!')

                        return redirect(Admin_funcionario_HTML)
                    else:
                        messages.info(request,f'O seu pacote permite apenas {contar_fun} Colaboradores!')

                        context ={'usuario':usuario,'page':page,'abrir_popup':abrir_popup}
                        return render(request,'multcaixa/admin_funcionario1.html',context)

            context ={'usuario':usuario,'page':page,'abrir_popup':abrir_popup}
            return render(request,'multcaixa/admin_funcionario1.html',context)
        else:
            return redirect('home')


    else:
        return redirect('login')



def Detalhes_factura_admin_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:
            venda = Facturas_diarias.objects.get(id=id)
            
            imprimir_fact = request.GET.get('imprimir')
            
            data_lista = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'

            #carinho
            data_carinho_ = Produto_vendido_carinho.objects.all().order_by('-id')
            data_carinho = []
            resp = f'{usuario.primeiro_nome} {usuario.apelido}'
            data_carinho_quantidade = 0
            for item in data_carinho_:
                if item.id_anfitriao == usuario.id_anfitriao and item.responsavel == resp:
                    data_carinho.append(item)
                    data_carinho_quantidade = data_carinho_quantidade + 1


            #
            fact = str(venda.factura)
            fact = fact.replace(',','')
            fact = fact.replace(':','')
            fact  = str(fact).split()

            precos = str(venda.preco)
            precos = precos.replace(',','')
            precos = precos.replace(':','')
            precos  = str(precos).split()

            quantidades = str(venda.quantidade)
            quantidades = quantidades.replace(',','')
            quantidades = quantidades.replace(':','')
            quantidades  = str(quantidades).split()

            contador = 0
            story = []
            itens = []
            itensp = []
            qt = []
            lis = []
            uni = []
            total = []
            produtos = []
            
            for line in fact:

                itens.append(line)
                sp = str(line).replace('_',' ')
                sp_ = quantidades[contador]
                if sp_ == 1 or sp_ == '1':
                    unidade = 'Qt'
                else:
                    unidade = 'Qt'

                story.append(f'{sp}  {quantidades[contador]} {unidade} : {precos[contador]}mt')
                qt.append(quantidades[contador])
                uni.append(precos[contador])
                
                produtos.append(line)
            
                contador = contador + 1

            itens = zip(produtos, qt,uni)
            
            if imprimir_fact:
                
                # Cria a resposta HTTP com tipo de conteúdo PDF
                response = HttpResponse(content_type='application/pdf')
                response['Content-Disposition'] = f'inline; filename=factura_{venda.id}.pdf'

                # Cria o canvas do PDF
                p = canvas.Canvas(response, pagesize=letter)
                
                # Adiciona o título e informações principais da fatura
                p.setFont("Helvetica-Bold", 16)
                p.drawString(30, 750, f"Fatura #{venda.id}")

                p.setFont("Helvetica", 12)
                p.drawString(30, 730, f"Farmácia Honuana")
                p.drawString(30, 710, f"Data: {venda.data}")

                # Adiciona a tabela de itens com cabeçalhos
                p.setFont("Helvetica-Bold", 10)
                p.drawString(30, 650, "Item")
                p.drawString(270, 650, "Quant")
                p.drawString(370, 650, "Pr.Uni")
                p.drawString(450, 650, "Total")  # Total na extrema direita

                # Linha de separação
                p.line(30, 645, 510, 645)

                # Adiciona as linhas da tabela dinamicamente
                y_position = 630
                p.setFont("Helvetica", 10)

                total_geral = 0  # Variável para somar o total geral da fatura

                for item, item1, item2 in itens:
                    # Exibe os dados do item (nome, quantidade, preço)
                    p.drawString(30, y_position, str(item))  # Nome do item
                    p.drawString(270, y_position, str(item1))  # Quantidade do item
                    preco_unitario = int(item2) / int(item1)

                    p.drawString(370, y_position, f"{int(preco_unitario)}")  # Preço unitário do item
                    
                    # Calcula o total do item (quantidade * preço)
                    p.drawString(450, y_position, f"{item2}")  # Exibe o total do item na extrema direita
                    
                    
                    
                    # Desenha uma linha de separação após cada item
                    p.line(30, y_position - 2, 510, y_position - 2)
                    
                    y_position -= 20  # Move para a próxima linha

                    # Verifica se a página está cheia e cria uma nova página se necessário
                    if y_position < 100:
                        p.showPage()
                        p.setFont("Helvetica-Bold", 10)
                        p.drawString(30, 750, "Item")
                        p.drawString(270, 750, "Quant")
                        p.drawString(370, 750, "Pr.Uni")
                        p.drawString(450, 750, "Total")
                        p.line(30, 745, 510, 745)
                        y_position = 730  # Reinicia a posição Y para a nova página

                # Adiciona uma linha de separação antes do total geral
                p.line(30, y_position - 2, 510, y_position - 2)

                # Exibe o total geral da fatura, alinhado à direita
                p.setFont("Helvetica-Bold", 12)
                p.drawString(410, y_position - 30, f"Total: {venda.total}")

                # Finaliza o PDF e retorna a resposta
                p.showPage()
                p.save()

                return response

                return response
            context = {'usuario':usuario,'id':id,'data_carinho':data_carinho,'venda':venda,'itens':itens}
            return render(request,'multcaixa/detalhe_factura_admin.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')

    else:
        return redirect('login')

def Admin_historico_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        

        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        
        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:
            data = Facturas.objects.all().order_by('-id')

            factura = Facturas.objects.all().order_by('-id')
            data_lista = []
            data_listaf = []

            search = request.GET.get('search')
            procura = request.GET.get('procura')
            

                    

                    

            if search:

                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data = data.filter(id__icontains=search)

                if 'data ' in search:
                    search = str(search[4:]).strip()
                    data = data.filter(data__icontains=search)
                if 'caixa ' in search:
                    search = str(search[6:]).strip()
                    data = data.filter(responsavel__icontains=search)
                else:

                    data = data.filter(Q(id__icontains=search)|Q(data__icontains=search)|Q(responsavel__icontains=search))

            for item in data:
                if item.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(item)


            data_paginator = Paginator(data_lista,105)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context ={'usuario':usuario,'page':page}

            return render(request,'multcaixa/admin_historico1.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')

def Admin_Servico_historico_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        imprimir = request.GET.get('imprimir')

        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)
        
        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor' and pode_acessar_mensalidade:
            data_servico = Feixo_diario_fixo.objects.all().order_by('-id')
            data_servico2 = Produto_vendido_fixo.objects.all().order_by('-id')

            factura = Facturas.objects.all().order_by('-id')
            data_lista = []
            data_listaf = []

            search = request.GET.get('search')
            procura = request.GET.get('procura')
            if search:
                if 'id ' in search:
                    search = str(search[3:]).strip()
                    data_servico = data_servico.filter(id__icontains=search)

                # if 'servico ' in search:
                #     search = str(search[7:]).strip()
                #     data_servico = data_servico.filter(produto__icontains=search)

                if 'data ' in search:
                    search = str(search[4:]).strip()
                    data_servico = data_servico.filter(data_venda__icontains=search)
                if 'caixa ' in search:
                    search = str(search[6:]).strip()
                    data_servico = data_servico.filter(responsavel__icontains=search)
                else:

                    data_servico = data_servico.filter(Q(id__icontains=search)|Q(data_venda__icontains=search)|Q(responsavel__icontains=search))



            for item in data_servico:
                if item.id_anfitriao == usuario.id_anfitriao :
                    data_lista.append(item)

            for item2 in data_servico2:
                if item2.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item2)

            data_paginator = Paginator(data_lista,105)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context ={'usuario':usuario,'page':page}

            return render(request,'multcaixa/admin_servicos_historico.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        return redirect('login')


def Eventos_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        ante = um_dias_antes_do_ultimo_dia_do_mes(usuario.data_validade_pagamento).strftime("%d/%m/%Y")
        pode_acessar_mensalidade = verificar_acesso_das_mensalidades(usuario.data_pagamento,ante)

        if usuario.type_sys== 'multscor_portfolio' and pode_acessar_mensalidade:
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            data_evento = Todos_Eventos.objects.all().order_by('-id')
            data_lista = []
            for item in data_evento:
                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)

            data_paginator = Paginator(data_lista,105)
            page_num = request.GET.get('page')
            page = data_paginator.get_page(page_num)

            context ={'usuario':usuario,'page':page}

            return render(request,'multcaixa/eventos.html',context)
        else:
            if not pode_acessar_mensalidade:
                context = {'usuario':usuario}
                return render(request,'multcaixa/notificacao_pagamento.html',context)
            else:return redirect('home')
    else:
        
        return redirect('login')

def His_mensal_PDF_HTML(request):
    buf = io.BytesIO()
    c = canvas.Canvas(buf, pagesize=letter, bottomup=0)
    textob = c.beginText()
    textob.setTextOrigin(inch,inch)
    textob.setFont("Helvetica",14)

    data = Feixo_diario_fixo.objects.all().order_by('-id')
    data_ = Feixo_diario.objects.all().order_by('-id')
    data_lista = []
    #add same lines
    for c in data:
        if c.id_anfitriao == usuario.id_anfitriao:
            data_lista.append(c)
    for c1 in data_:
        if c1.id_anfitriao == usuario.id_anfitriao:
            data_lista.append(c1)

    for line in data_lista:
        textob.textLine(line)

    c.drawText(textob)
    c.showPage()
    c.save()
    buf.seek(0)
    return FileResponse(buf, as_attachment=True, filename='recibo.pdf')
#

def Perfil_user_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
      
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                elif not pode_trabalhar:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

                
        if usuario.type_sys== 'multscor_portfolio':
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            ultimo_dia = ultimo_dia_do_mes().strftime("%d/%m/%Y")
            ante_penul = dois_dias_antes_do_ultimo_dia_do_mes().strftime("%d/%m/%Y")

            alerta_pagamento = verificar_acesso_das_mensalidades(ante_penul,ultimo_dia)
            if alerta_pagamento:
                messages.info(request,f'o seu plano esta prestes a expirar')
            

                        


            
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            context = {'usuario':usuario}
            return render(request,'multcaixa/perfil.html',context)
        else:
            return redirect('login')
    else:
        return redirect('login')


def Definicao_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio':

            if request.method == 'POST':

                usuario = Usuario.objects.get(id_pertence=request.user.id)
                id_us = usuario.id
                Data = Usuario.objects.get(id_pertence=request.user.id)

                if request.method == "POST":
                    primeiro_nome = request.POST.get('primeiro_nome')
                    apelido = request.POST.get('apelido')
                    provincia = request.POST.get('provincia')
                    contacto = request.POST.get('contacto')
                    contacto2 = request.POST.get('contacto2')
                    ficheiro = request.FILES.get('imagem')

                    email = request.POST.get('email')

                    senha_ant = request.POST.get('old_password')
                    senh_1 = request.POST.get('new_password1')
                    senh_2 = request.POST.get('new_password2')


                    Data_up = Usuario.objects.get(id=id_us)
                    Data_up_orgin = User.objects.get(id=Data_up.id_pertence)
                    if ficheiro:
                        Data_up.imagem = ficheiro
                        Data_up.save()
                    if primeiro_nome:
                        Data_up.primeiro_nome = primeiro_nome
                        Data_up.save()
                    else:pass
                    if apelido:
                        Data_up.apelido = apelido
                        Data_up.save()
                    else:pass
                    if provincia:
                        Data_up.provincia = provincia
                        Data_up.save()
                    else:pass
                    if contacto:
                        Data_up.contacto = contacto
                        Data_up.save()
                    else:pass

                    if email:
                        Data_up_orgin.email = email
                        Data_up_orgin.save()
                    else:pass


                    if senha_ant and senh_1 and senh_2:

                        existe_senha = request.user.password
                        form = PasswordChangeForm(data=request.POST,user=request.user)
                        if form.is_valid():
                            form.save()
                            update_session_auth_hash(request,form.user)
                            messages.info(request,f'senha atualizada!')
                        else:messages.info(request,f'Erro ao digitar a senha anterior!')
                        # if existe_senha == senha_ant:
                        #     if senh_1 == senh_2:
                        #         senh_up = User.objects.get(id=Data_up.id_pertence)
                        #         senh_up.password = senh_1
                        #         senh_up.save()
                        #         messages.info(request,f'senha atualizada!')
                        #     else:
                        #         messages.info(request,f'Palavra passe diferente!')
                        # else:
                        #     messages.info(request,f'Erro ao digitar a senha anterior!')

                    Data_up.save()
                    usuario = Usuario.objects.get(id=id_us)
                    return render(request,'multcaixa/def.html',{
                        'usuario':usuario,
                    })
            else:
                usuario = Usuario.objects.get(id_pertence=request.user.id)
                return render(request,'multcaixa/def.html',{
                    'usuario':usuario,
                })
        else:
            return redirect('login')
    else:
        return redirect('login')

def Ajuda_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.pacote == 'medio' and usuario.tipo_de_conta != 'gestor' or usuario.pacote == 'executivo' and usuario.tipo_de_conta != 'gestor':
            dia = ''
            dia = verificar_dia_semana(dia)
            if dia == 'Segunda-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_seg,usuario.hora_saida_seg)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Terça-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_ter,usuario.hora_saida_ter)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quarta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qua,usuario.hora_saida_qua)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Quinta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_qui,usuario.hora_saida_qui)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sexta-feira':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sex,usuario.hora_saida_sex)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Sabado':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_sab,usuario.hora_saida_sab)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()
            if dia == 'Domingo':
                pode_trabalhar = verificar_acesso_dos_horarios(usuario.hora_entrada_dom,usuario.hora_saida_dom)
                if pode_trabalhar:
                    usuario.status_trabalho = 'habilitado'
                    usuario.save()
                else:
                    usuario.status_trabalho = 'desabilitado'
                    usuario.save()

        if usuario.type_sys== 'multscor_portfolio':
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            return render(request,'multcaixa/ajuda.html',{
                'usuario':usuario,
            })
        else:
            return redirect('login')
    else:
        return redirect('login')

def Atlerar_senha_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio':
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            if request.method == 'POST':
                form = PasswordChangeForm(data=request.POST,user=request.user)
                if form.is_valid():
                    form.save()
                    update_session_auth_hash(request, form.user)
                    return redirect(Definicao_HTML)
                else:
                    return HttpResponse('erro ao alterar')

        else:
            return redirect('login')
    else:
        return redirect('login')

def Atualizar_perfil_HTML(request,id):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio':
            usuario = Usuario.objects.get(id=id)

            Data = Usuario.objects.get(id=id)

            if request.method == "POST":
                contacto = request.POST.get('contacto')

                Data_up = Usuario.objects.get(id=id)
                if contacto:
                    Data_up.contacto = contacto
                else:pass

                Data_up.save()

                return render(request,'multcaixa/editar_perfil.html')

            else:

                return render(request,'multcaixa/editar_perfil.html')
        else:
            return redirect('login')
    else:
        return redirect('login')

# pagamentos

def Wallet_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            
            USUARIOS = Usuario.objects.filter(id_anfitriao=usuario.id_anfitriao)
            Produtos_st = Produto_vendido.objects.filter(id_anfitriao=usuario.id_anfitriao)
            Produtos_car = Produto_vendido_carinho.objects.filter(id_anfitriao=usuario.id_anfitriao)
            Produtos_data = Feixo_data.objects.filter(id_anfitriao=usuario.id_anfitriao)
            Fact = Facturas.objects.filter(id_anfitriao=usuario.id_anfitriao)
            lista_fact = []
            total = 0
            for c in Produtos_st:
                total = total + int(c.quantidade)
            for c1 in Produtos_data:
                total = total + int(c1.quantidade)
           
            abrir_popup = False
                            
            if request.method == "POST":
                abrir_popup = True
                up_pacote1 = request.POST.get('pacote_choice1')
                up_pacote2 = request.POST.get('pacote_choice2')
                up_pacote3 = request.POST.get('pacote_choice3')
                d = datetime.now()
                data_v = d.strftime('%d/%m/%Y')
                hora_v = d.strftime('%H:%M:%S')
                
                # if up_pacote1:
                #     for item in US_adm:
                #         if item.type_sys == 'sty':
                #             Clientes.objects.create(id_anfitriao=usuario.id_anfitriao,id_pertence=usuario.id_pertence,assunto=f'Mudança de pacote: {usuario.pacote} para basico ',datas_anteriores=f'Pagou: {usuario.data_pagamento} Válido até: {usuario.data_validade_pagamento}',data=f'{data_v} {hora_v}')
                #             usuario.pacote = 'basico'
                #             usuario.mensalidade_pagamento = 1500
                #             # usuario.data_pagamento =
                #             usuario.save()
                # if up_pacote2:
                #     for item in US_adm:
                #         if item.type_sys == 'sty':
                #             Clientes.objects.create(id_anfitriao=usuario.id_anfitriao,id_pertence=usuario.id_pertence,assunto=f'Mudança de pacote: {usuario.pacote} para medio ',datas_anteriores=f'Pagou: {usuario.data_pagamento} Válido até: {usuario.data_validade_pagamento}',data=f'{data_v} {hora_v}')
                #             usuario.pacote = 'medio'
                #             usuario.mensalidade_pagamento = 2500
                #             usuario.save()

                # if up_pacote3:
                #     pass

            # calculando armazenamento e usuarios
            total_usuarios = 0
            for u in USUARIOS:
                if u.id_anfitriao == usuario.id_anfitriao and u.type_sys == usuario.type_sys and u.tipo_de_conta != 'gestor':
                    total_usuarios = total_usuarios + 1
                    # print(total_usuarios)

            if usuario.pacote == 'basico':max_usuario = 2
            if usuario.pacote == 'medio':max_usuario = 4
            if usuario.pacote == 'executivo':max_usuario = 8

            percentagem_us =   (total_usuarios / max_usuario) * 100
            percentagem_us = int(percentagem_us)

            


            
            esp_usado = total
            espaco = 0
            if usuario.pacote == 'basico':espaco = 60000
            if usuario.pacote == 'medio':espaco = 300000
            if usuario.pacote == 'executivo':espaco = 900000
            esp_disponivel = espaco - total 
            g = total / espaco 
            ar_ocupado = total / 30
            ar_disponivel = (espaco - total) / 30
            ar_ocupado = f'{ar_ocupado:.2f}'
            ar_disponivel = f'{ar_disponivel:.2f}'

            percentagem_esp_usado = (esp_usado / espaco) * 100
            valor_disponivel = espaco - esp_usado

            # Verificando se o total é zero
            if total != 0:
                percentagem_esp_disponivel = (valor_disponivel / total) * 100
            else:
                percentagem_esp_disponivel = 0  # ou um valor que faça sentido no seu caso

        

            percentagem_esp =   (total_usuarios / max_usuario) * 100

            return render(request,'multcaixa/wallet.html',{
                'usuario':usuario,
                'abrir_popup':abrir_popup,
                'esp_usado':esp_usado,
                'esp_disponivel':esp_disponivel,
                'max_usuario':max_usuario,
                'total_usuarios':total_usuarios,
                'percentagem_us':percentagem_us,
                'ar_disponivel':ar_disponivel,
                'ar_ocupado':ar_ocupado,

                
            })

            
                
        else:
            return redirect('login')
    else:
        return redirect('login')


# criando a expansao da multscor_farmacia

def Criar_Estabelecimento_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)

        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            if request.method == "POST":
                abrir_popup = True
                nome = request.POST.get('nome')
                provincia = request.POST.get('provincia')
                distrito = request.POST.get('distrito')
                bairro = request.POST.get('bairro')
                contacto = request.POST.get('contacto')

                pais = request.POST.get('pais')
                

                verificar = Estabelecimento_bib.objects.filter(id_anfitriao=usuario.id_anfitriao,nome=nome)
                if not verificar:
                    
                    # Criar a farmácia
                    farmacia = Estabelecimento_bib.objects.create(
                        id_anfitriao=usuario.id_anfitriao,
                        nome=nome,
                        contacto=contacto,
                        provincia=provincia,
                        distrito=distrito,
                        bairro=bairro
                    )

                    
                    messages.info(request,f'Farmácia cadastrada com sucesso!')
                    return redirect(Expandir_Estabelecimento_HTML)
                else:
                    multscor_farm = Estabelecimento_bib.objects.all().order_by('-id')
                    data_lista_farma = []
                    for item in multscor_farm:

                        if item.id_anfitriao == usuario.id_anfitriao:
                            data_lista_farma.append(item)

                    messages.info(request,f'{nome_farmacia_create} ja existe!')
                    return render(request,'multcaixa/expandir_estabelecimento.html',{
                        'usuario':usuario,
                        'abrir_popup':abrir_popup,
                        'multscor_farmacia':data_lista_farma,

                    })



            else:return redirect(Expandir_Estabelecimento_HTML)
        else:
            return redirect('login')
    else:
        return redirect('login')

def Atualizar_Estabelecimento_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor':
            usuario = Usuario.objects.get(id_pertence=request.user.id)

            multscor_farmacia = Estabelecimento_bib.objects.all().order_by('-id')
            data_lista_farma = []
            for item in multscor_farmacia:

                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista_farma.append(item)
            
            if request.method == "POST":
                abrir_popup = True
                far_up = Estabelecimento_bib.objects.get(id_anfitriao=usuario.id_anfitriao)
                nome_farmacia = request.POST.get('nome_farmacia')
                endereco = request.POST.get('endereco')
                contacto = request.POST.get('contacto')
                status = request.POST.get('status')
                deletar_img = request.POST.get('deletar_img')

                imagem = request.FILES.get('imagem')

                bem_vindo = request.POST.get('mensagem_boas_vindas')
                servico1 = request.POST.get('servico1')
                servico2 = request.POST.get('servico2')
                servico3 = request.POST.get('servico3')

                if nome_farmacia:
                    
                    far_up.nome_farmacia = nome_farmacia
                    far_up.save()
                if endereco:
                    far_up.endereco = endereco
                    far_up.save()
                if contacto:
                    far_up.contacto = contacto
                    far_up.save()
                if imagem:
                    far_up.imagem = imagem
                    far_up.save()
                if status:
                    far_up.status = status
                    far_up.save()
                if bem_vindo:
                    far_up.mensagem_boas_vindas = bem_vindo
                    far_up.save()
                if servico1:
                    far_up.servico1 = servico1
                    far_up.save()
                if servico2:
                    far_up.servico2 = servico2
                    far_up.save()
                if servico3:
                    far_up.servico3 = servico3
                    far_up.save()


                if deletar_img:
                    far_up.imagem.delete()

                else:
                    messages.info(request,f'Atualizado com sucesso!')
                    return render(request,'multcaixa/expandir_estabelecimento.html',{
                        'usuario':usuario,
                        'abrir_popup':abrir_popup,
                        'multscor_farmacia':data_lista_farma,

                    })
                    # return redirect(Expandir_Estabelecimento_HTML)



            else:return redirect(Expandir_Estabelecimento_HTML)
        else:
            return redirect('login')
    else:
        return redirect('login')


def Expandir_Estabelecimento_HTML(request):
    if request.user.is_authenticated :
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        
        
        if usuario.type_sys== 'multscor_portfolio' and usuario.id_anfitriao == request.user.id and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio'  and usuario.tipo_de_conta == 'supervisor':
            usuario = Usuario.objects.get(id_pertence=request.user.id)
            
            
            data_bairros_json = json.dumps(data_bairros)
            # data_provincias = data_provincias.values()
            # data_distritos = Distritos_de_Maputo_P.values()
            # data_bairros = Bairros_da_Matola.values()
            status_provincia = '1'
            data_farmacia = Estabelecimento_bib.objects.all().order_by('-id')
            data_lista= []
            
            apagar = request.GET.get('apagar')
            ID_farmacia = request.GET.get('id_farmacia_input')

            if apagar:
                farmacia_del = Estabelecimento_bib.objects.get(id=apagar)
                farmacia_del.delete()
                
                return redirect(Expandir_Estabelecimento_HTML)
            if request.method == "POST":
                abrir_popup = True
                modo = request.POST.get('modo')
                ID_farmacia = request.POST.get('id_farmacia_input')
                Nome = request.POST.get('nome')
                Provincia = request.POST.get('provincia')
                Distrito = request.POST.get('distrito')
                Bairro = request.POST.get('bairro')
                Avenida = request.POST.get('quarteirao')
                Contacto = request.POST.get('contacto')
                Status = request.POST.get('status')
                Imagem = request.FILES.get('imagem')
                Site_url = request.POST.get('site_url')
                pais = request.POST.get('pais')
                
                if modo == 'criar':
                    provincia_id = Provincia
                    distrito_id = Distrito
                    

                    # Obtendo o nome da província e do distrito a partir dos IDs
                    provincia_nome = data_provincias.get(provincia_id, None)
                    distrito_nome = None
                    if provincia_id in data_distritos:
                        distrito_nome = data_distritos[provincia_id].get(distrito_id, None)
                
                    verificar = Estabelecimento_bib.objects.filter(id_anfitriao=usuario.id_anfitriao,nome=Nome)
                    if not verificar:
                        
                        up = Estabelecimento_bib.objects.create(id_anfitriao=usuario.id_anfitriao,nome=Nome,contacto=Contacto,provincia=provincia_nome,distrito=Distrito,bairro=Bairro,status='nao-visivel',site_url='https:multscorfarmacia.com')

                        
                        return redirect(Expandir_Estabelecimento_HTML)
                    else:
                        
                        return redirect(Expandir_Estabelecimento_HTML)
                if modo == 'atualizar':
                    
                    farmacia_up = Estabelecimento_bib.objects.get(id=ID_farmacia,id_anfitriao=usuario.id_anfitriao)
                    if Nome:farmacia_up.nome = Nome
                    if Contacto:farmacia_up.contacto = Contacto
                    
                    if Bairro  and not 'Selecione um bairro' in Bairro:farmacia_up.bairro = Bairro
                    if Avenida:farmacia_up.avenida = Avenida
                    if Status:farmacia_up.status = Status
                    if Imagem:farmacia_up.imagem = Imagem
                    if Site_url:farmacia_up.site_url = Site_url
                    farmacia_up.save()

                    return redirect(Expandir_Estabelecimento_HTML)
                else:return redirect(Expandir_Estabelecimento_HTML)
                
                
                    

                   
            
            for item in data_farmacia:

                if item.id_anfitriao == usuario.id_anfitriao:
                    data_lista.append(item)

            return render(request,'multcaixa/expandir_estabelecimento.html',{
                'usuario':usuario,
                'data_lista':data_lista,
                'data_provincias': data_provincias,
                'data_distritos': data_distritos,
                'data_bairros':data_bairros_json,
                
            })
        else:
            return redirect('home')
    else:
        return redirect('login')

def Despesas_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio' and usuario.tipo_de_conta == 'gestor' or usuario.type_sys == 'multscor_portfolio' and usuario.tipo_de_conta == 'supervisor':
            despesas_lista = []
            data_despesas = Despesa.objects.filter(id_anfitriao=usuario.id_anfitriao)
            data = Despesa.objects.filter(id_anfitriao=usuario.id_anfitriao)
            d = datetime.now()
            data_v = d.strftime('%d/%m/%Y')
            hora_v = d.strftime('%H:%M:%S')
            resp_v = f'{usuario.primeiro_nome} {usuario.apelido}'
            
            if request.method == 'POST':
                nome = request.POST.get('nome')

                nome_up = request.POST.get('nome_up')
                atualizar = request.POST.get('atualizar')
                nova_despesa = request.POST.get('registrar')
                valor = request.POST.get('valor')
                if atualizar:
                    data_up = Despesa.objects.get(id_anfitriao=usuario.id_anfitriao,id=atualizar)
                    data_up.despesa = nome_up
                    data_up.save()
                    return redirect(Despesas_HTML)
                
                if nova_despesa and valor:
                    data_create = Despesas.objects.create(id_anfitriao=usuario.id_anfitriao,despesa=nome,id_resp=usuario.id_pertence,valor=valor,data=data_v)
                    Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{nome_up} = {valor}',responsavel=resp_v,tipo='Efectuou Despesa',data=f'{data_v} {hora_v}')
                    return redirect(Despesas_HTML)

                if nome:
                    data_create = Despesa.objects.create(id_anfitriao=usuario.id_anfitriao,despesa=nome,id_resp=usuario.id_pertence)
                
                return redirect(Despesas_HTML)

            apagar_ = request.GET.get('apagar')
            
            
            if apagar_:
                
                PRODUTO = Despesa.objects.get(id=apagar_,id_anfitriao=usuario.id_anfitriao)
                Evento = Todos_Eventos.objects.create(id_anfitriao=usuario.id_anfitriao,id_resp=usuario.id,evento=f'{PRODUTO.despesa}',responsavel=resp_v,tipo='Excluiu Despesa',data=f'{data_v} {hora_v}')
                
                PRODUTO.delete()
                messages.info(request,f' Excluido com Sucesso!')
                return redirect(Despesas_HTML)
            
            for item in data_despesas:
                despesas_lista.append(item)
            
                
            context = {'usuario':usuario,'despesas':despesas_lista}
            return render(request,'multcaixa/despesas.html',context)
        

        else:
            return redirect('login')
        
    else:
       return redirect('home')


def Editar_Web_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        

        if usuario.type_sys== 'multscor_portfolio':
            Slide_Pagina = web_h.demo_1_Slide_index.objects.all().order_by('-id')
            Item_Pagina = web_h.demo_1_Item_index.objects.all().order_by('-id')

            Produtos = web_h.demo_1_produto_index.objects.all().order_by('-id')
          
            lista_produtos = []
            for item in Produtos:
                lista_produtos.append(item)
            
            Verificar = web_h.demo_1_Slide_index.objects.filter(id=1)
            if not Verificar:
                Cabecalho_up = web_h.demo_1_Slide_index.objects.create(slide_titulo_1='Bem vindo')
                return redirect(Config_Web_HTML)
            else:Slide_Pagina = web_h.demo_1_Slide_index.objects.get(id=1)
            Verificar1 = web_h.demo_1_Item_index.objects.filter(id=1)
            if not Verificar1:
                Item_up = web_h.demo_1_Item_index.objects.create(item_titulo_1='Lep-top')
                return redirect(Config_Web_HTML)
            else:Item_Pagina = web_h.demo_1_Item_index.objects.get(id=1)
            Verificar2 = web_h.demo_1_rodape_index.objects.filter(id=1)
            if not Verificar2:
                Item_Rodape = web_h.demo_1_rodape_index.objects.create(email='info@multscor.com')
                return redirect(Config_Web_HTML)
            else:Item_Rodape = web_h.demo_1_rodape_index.objects.get(id=1)
            if request.method == 'POST':
                slide_titulo_1 = request.POST.get('slide_titulo_1')
                slide_titulo_2 = request.POST.get('slide_titulo_2')
                slide1_titulo_1 = request.POST.get('slide1_titulo_1')
                slide1_titulo_2 = request.POST.get('slide1_titulo_2')
                slide_imagem_1 = request.FILES.get('slide_imagem_1')
                slide_imagem_2 = request.FILES.get('slide_imagem_2')

                item_titulo_1 = request.POST.get('item_titulo_1')
                item_titulo_2 = request.POST.get('item_titulo_2')
                item1_titulo_1 = request.POST.get('item1_titulo_1')
                item1_titulo_2 = request.POST.get('item1_titulo_2')
                item2_titulo_1 = request.POST.get('item2_titulo_1')
                item2_titulo_2 = request.POST.get('item2_titulo_2')
                
                item_imagem = request.FILES.get('item_imagem')
                item1_imagem = request.FILES.get('item1_imagem')
                item2_imagem = request.FILES.get('item2_imagem')

                # produtos
                modo = request.POST.get('modo')
                add_produto_nome = request.POST.get('add_produto_nome')
                add_produto_preco = request.POST.get('add_produto_preco')
                add_produto_tipo = request.POST.get('add_produto_tipo')
                add_produto_descricao = request.POST.get('add_produto_descricao')
                add_produto_imagem = request.FILES.get('add_produto_imagem')
                add_produto_imagem_1 = request.FILES.get('add_produto_imagem_1')
                add_produto_imagem_2 = request.FILES.get('add_produto_imagem_2')
                if modo == 'add_produto':
                    verif = web_h.demo_1_produto_index.objects.filter(produto=add_produto_nome,tipo=add_produto_tipo)
                    if not verif:
                        if add_produto_imagem and add_produto_imagem_1 and add_produto_imagem_2:up1 = web_h.demo_1_produto_index.objects.create(produto=add_produto_nome,preco=add_produto_preco,tipo=add_produto_tipo,descricao=add_produto_descricao,imagem=add_produto_imagem,imagem_1=add_produto_imagem_1,imagem_2=add_produto_imagem_2)
                        if add_produto_imagem and not add_produto_imagem_1 and not add_produto_imagem_2:up1 = web_h.demo_1_produto_index.objects.create(produto=add_produto_nome,preco=add_produto_preco,tipo=add_produto_tipo,descricao=add_produto_descricao,imagem=add_produto_imagem,imagem_1=add_produto_imagem,imagem_2=add_produto_imagem)
                    return redirect(Editar_Web_HTML)
                if modo == 'add_rodape':
                    r_sobre = request.POST.get('sobre')
                    r_contacto = request.POST.get('contacto')
                    r_email = request.POST.get('email')
                    r_endereco = request.POST.get('endereco')
                    r_instagram = request.POST.get('instagram')
                    r_whatsapp = request.POST.get('whatsapp')
                    r_facebook = request.POST.get('facebok')

                    Item_Rodape_up = web_h.demo_1_rodape_index.objects.get(id=1)

                    Item_Rodape_up.email = r_email
                    Item_Rodape_up.contacto = r_contacto
                    Item_Rodape_up.sobre = r_sobre
                    Item_Rodape_up.endereco = r_endereco
                    Item_Rodape_up.instagram = r_instagram
                    Item_Rodape_up.facebook = r_facebook
                    Item_Rodape_up.whatsapp = r_whatsapp
                    Item_Rodape_up.save()

                    return redirect(Editar_Web_HTML)
                if modo == 'edd_produto':
                    edd_id = request.POST.get('ed_id')
                    edd_nome = request.POST.get('ed_nome')
                    edd_preco = request.POST.get('ed_preco')
                    edd_tipo = request.POST.get('ed_tipo')
                    edd_descricao = request.POST.get('ed_descricao')
                    edd_imagem = request.FILES.get('ed_imagem')
                    edd_imagem_1 = request.FILES.get('ed_imagem_1')
                    edd_imagem_2 = request.FILES.get('ed_imagem_2')

                    Produto_Up = web_h.demo_1_produto_index.objects.get(id=edd_id)
                    Produto_Up.produto = edd_nome
                    Produto_Up.preco = edd_preco
                    Produto_Up.descricao = edd_descricao
                    if edd_imagem:
                        Produto_Up.imagem.delete()
                        Produto_Up.save()
                        Produto_Up.imagem = edd_imagem
                    if edd_imagem_1:
                        Produto_Up.imagem_1.delete()
                        Produto_Up.save()
                        Produto_Up.imagem_1 = edd_imagem_1
                    if edd_imagem_2:
                        Produto_Up.imagem_2.delete()
                        Produto_Up.save()
                        Produto_Up.imagem_2 = edd_imagem_2

                    Produto_Up.save()
                    return redirect(Editar_Web_HTML)

                Item_Pagina_up = web_h.demo_1_Item_index.objects.get(id=1)
                if item_titulo_1:Item_Pagina_up.item_titulo_1 = item_titulo_1
                if item_titulo_1:Item_Pagina_up.item_titulo_2 = item_titulo_2
                if item1_titulo_1:Item_Pagina_up.item1_titulo_1 = item1_titulo_1
                if item1_titulo_2:Item_Pagina_up.item1_titulo_2 = item1_titulo_2
                if item2_titulo_1:Item_Pagina_up.item2_titulo_1 = item2_titulo_1
                if item2_titulo_2:Item_Pagina_up.item2_titulo_2 = item2_titulo_2

                if item_imagem:
                    Item_Pagina_up.imagem_1.delete()
                    Item_Pagina_up.save()
                    Item_Pagina_up.imagem_1 = item_imagem
                if item1_imagem:
                    Item_Pagina_up.imagem_2.delete()
                    Item_Pagina_up.save()
                    Item_Pagina_up.imagem_2 = item1_imagem
                if item2_imagem:
                    Item_Pagina_up.imagem_3.delete()
                    Item_Pagina_up.save()
                    Item_Pagina_up.imagem_3 = item2_imagem

                Slide_Pagina_up = web_h.demo_1_Slide_index.objects.get(id=1)
                if slide_titulo_1:Slide_Pagina_up.slide_titulo_1 = slide_titulo_1
                if slide_titulo_1:Slide_Pagina_up.slide_titulo_2 = slide_titulo_2
                if slide1_titulo_1:Slide_Pagina_up.slide1_titulo_1 = slide1_titulo_1
                if slide1_titulo_2:Slide_Pagina_up.slide1_titulo_2 = slide1_titulo_2
                if slide_imagem_1:
                    Slide_Pagina_up.imagem_1.delete()
                    Slide_Pagina_up.save()
                    Slide_Pagina_up.imagem_1 = slide_imagem_1
                if slide_imagem_2:
                    Slide_Pagina_up.imagem_2.delete()
                    Slide_Pagina_up.save()
                    Slide_Pagina_up.imagem_2 = slide_imagem_2



                Slide_Pagina_up.save()
                Item_Pagina_up.save()
                return redirect(Editar_Web_HTML)
                    
            context = {'usuario':usuario,'Slide_Pagina':Slide_Pagina,'Item_Pagina':Item_Pagina,'lista_produtos':lista_produtos,'Item_Rodape':Item_Rodape}
            return render(request,'multcaixa/Editar_website.html',context)
        

        else:
            return redirect('login')
        
    else:
       return redirect('home')
# politica e manual

def Manual_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio':
            manual_lista = []
            data = []
            for item in data:
                manual_lista.append(item)
            
                
            context = {'usuario':usuario,'manual':manual_lista}
            return render(request,'multcaixa/manual.html',context)
        

        else:
            return redirect('login')
        
    else:
       return redirect('home')

def Politica_p_HTML(request):
    if request.user.is_authenticated:
        usuario = Usuario.objects.get(id_pertence=request.user.id)
        if usuario.type_sys== 'multscor_portfolio':
            politica_lista = []
            data = []
            for item in data:
                politica_lista.append(item)
                
            
                
            context = {'usuario':usuario,'politica':politica_lista}
            return render(request,'multcaixa/politica_privacidade.html',context)
        

        else:
            return redirect('login')
        
    else:
       return redirect('home')
def handler404(request,exception):
    return render(request,'404.html')

def handler500(request,exception):
    return render(request,'500.html',status=500)