Beispiel #1
0
    def get(self, request, *args, **kwargs):
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        if id:
            if not check_permission(request=request, permission='view_invoice'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            invoice = Invoice.objects.get_by_id(id=id, business=business)
            if invoice in Invoice.objects.ERRORS:
                return HttpResponse(status=404)
            else:
                if request.is_ajax():
                    return render_to_response("base/invoice/invoice_detalles.html", RequestContext(request,{'invoice':invoice}))
                return render_to_response("base/invoice/invoice_detalles_html.html", RequestContext(request,{'invoice':invoice}))
        else:
            print(check_permission(request=request, permission='list_invoice'))
            if not check_permission(request=request, permission='list_invoice'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            invoices = Invoice.objects.get_by_business(business=business)

            if request.is_ajax():
                return render_to_response("base/invoice/table_invoice.html",RequestContext(request, {'invoices':invoices}))

            return render_to_response("base/invoice/invoice_list.html",RequestContext(request, {'invoices':invoices}))
Beispiel #2
0
    def get(self, request, *args, **kwargs):
        id = kwargs.get('id')
        id_invoice = kwargs.get('id_invoice')
        print(id)
        flag_proposal = id != None

        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        model = ''
        tax_base = business.tax
        if flag_proposal:
            if not check_permission(request=request, permission='create_update_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            response = Proposal.objects.get_by_id(id, business=business)
            model = 'proposal'
            if response in Proposal.objects.ERRORS:
                return HttpResponse(status=404)

        else:
            if not check_permission(request=request, permission='create_update_invoice'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            response = Invoice.objects.get_by_id(id_invoice, business=business)
            model = 'invoice'
            if response in Invoice.objects.ERRORS:
                return HttpResponse(status=404)
            response = response.proposal


        form = ItemForm(initial={'tax':tax_base})
        # if request.is_ajax():
        #     return render_to_response("base/invoice/includes/items.html", RequestContext(request, {'items':response.get_items()}))

        return render_to_response("base/invoice/wizard/item_add_step.html", RequestContext(request, {'proposal':response,'form':form, 'model':model}))
Beispiel #3
0
    def get(self, request, *args, **kwargs):
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        if id:
            if not check_permission(request=request, permission='view_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            proposal = Proposal.objects.get_by_id(id=id, business=business)
            if proposal in Proposal.objects.ERRORS:
                return HttpResponse(status=404)

            if request.is_ajax():
                return render_to_response("base/invoice/proposal/proposal_detalles.html", RequestContext(request,{'proposal':proposal}))

            return render_to_response("base/invoice/proposal/proposal_detalles_html.html", RequestContext(request,{'proposal':proposal}))
        else:
            if not check_permission(request=request, permission='list_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            proposals = Proposal.objects.get_by_business(business=business)

            if request.is_ajax():
                return render_to_response("base/invoice/table.html",RequestContext(request, {'proposals':proposals}))

            return render_to_response("base/invoice/proposal_list.html", RequestContext(request,{'proposals':proposals,'model':"Proposals", 'description':"Listado de propuestas"}))
Beispiel #4
0
    def get(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='create_update_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
        user = request.user
        business = Business.objects.filter(owner=user).first()
        id = kwargs.get('id')
        editting = False
        if id:
            editting = True
            print(id)
            try:
                print("try")
                proposal = Proposal.objects.get_by_id(id=id, business=business)
                event = proposal.event
            except:
                print("except")
                return HttpResponse(status=404)

            form = ProposalEventForm(instance=event, initial={'business':business,'comment':proposal.client_message})
        else:
            print("else")
            form = ProposalEventForm(initial={'business':business})
        if request.is_ajax():
         
            return render_to_response('base/invoice/wizard/event_step.html', RequestContext(request, {'form':form,'model':'proposal','editting':editting}))

        return render_to_response('base/invoice/wizard/wizard.html', RequestContext(request, { 'id':id,'model':'proposal','editting':editting }))
Beispiel #5
0
    def get(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='create_update_invoice'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        user = request.user
        business = Business.objects.filter(owner=user).first()

        id = kwargs.get('id')
        if id:
            try:
                invoice = Invoice.objects.get_by_id(id=id, business=business)
                event = invoice.proposal.event
            except:
                return HttpResponse(status=404)
            form = InvoiceEventForm(instance=event, initial={'due_date':invoice.due_date,'business':business,'comment':invoice.proposal.client_message})

            if request.is_ajax():
                 return render_to_response('base/invoice/wizard/event_step.html', RequestContext(request, {'form':form,'model':'invoice','id':id, 'edit':True}))

        else:
            form = InvoiceEventForm(initial={'business':business})

            if request.is_ajax():
                return render_to_response('base/invoice/wizard/event_step.html', RequestContext(request, {'form':form,'model':'invoice','id':id}))

        return render_to_response('base/invoice/wizard/wizard.html', RequestContext(request, {'form':form,  'model':'invoice', 'id':id }))
Beispiel #6
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='create_update_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
        user = request.user
        business = Business.objects.filter(owner=user).first()
        form = ProposalEventForm(request.POST, initial={'business':business})
        errors = {}
        id = kwargs.get('id')



        proposal = None
        if id:

            proposal = Proposal.objects.get_by_id(id=id, business=business)
            if not proposal:
                return HttpResponse(status=404)

        if form.is_valid():

            response = Event.objects.create_or_update_proposal_from_event(form.cleaned_data, proposal=proposal)


            if response in Event.objects.ERRORS:

               errors['server'] = 'Intente de nuevo'
               return render_to_response('base/invoice/wizard/event_step.html', RequestContext(request, {'form':form,'errors':errors}),status=400)
            else:
                return JsonResponse(status=200, data={'proposal_id':response.id}, safe=False)
        else:
            print(form.errors.as_json())
            return render_to_response('base/invoice/wizard/event_step.html', RequestContext(request, {'form':form,'errors':errors}),status=400)
Beispiel #7
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='add_customer'):
            return HttpResponseRedirect(redirect_to=reverse('login'))
        form = CustomerForm(request.POST)
        errors = {}
        if form.is_valid():
            user = request.user
            business = Business.objects.filter(owner=user).first()
            response = Customer.objects.create_or_update_customer(
                form.cleaned_data, business)
            if response in Customer.objects.ERRORS:

                if response == Customer.objects.EMAIL_ERROR:
                    errors['unique_email'] = "Correo Repetido"

                return render_to_response("base/customer/form.html",
                                          RequestContext(
                                              request, {
                                                  'form': form,
                                                  'errors': errors
                                              }),
                                          status=400)

            # messages.success(request, 'Se ha creado satisfactoriamnte el cliente especificado')
            return JsonResponse(data={'id': response.id}, status=200)
        else:
            print("error")
            return render_to_response("base/customer/form.html",
                                      RequestContext(request, {
                                          'form': form,
                                          'errors': errors
                                      }),
                                      status=400)
Beispiel #8
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='edit_customer'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')

        user = request.user
        business = Business.objects.filter(owner=user).first()

        customer = Customer.objects.get_one_by_business_and_id(business=business, id=id)

        if customer:
            form = CustomerForm(request.POST)
            errors = {}
            if form.is_valid():
                response = Customer.objects.create_or_update_customer(form.cleaned_data,business, customer)
                if response in Customer.objects.ERRORS:
                    if response == Customer.objects.EMAIL_ERROR:
                        errors['unique_email'] = "Correo Repetido"
                    return render_to_response("base/customer/form.html", RequestContext(request,{'form':form,'errors':errors}))

                #messages.success(request, 'Se ha creado satisfactoriamnte el cliente especificado')
                return HttpResponseRedirect(redirect_to=reverse('customers'))
            else:
                return render_to_response("base/customer/form.html", RequestContext(request,{'form':form,'errors':errors}))
        else:
            return HttpResponse(status=404)
Beispiel #9
0
    def get(self, request, *args, **kwargs):
        pidb64 = kwargs.get('pidb64')
        tokenb64 = kwargs.get('token')
        id = kwargs.get('id')
        if id:
            if not check_permission(request=request, permission='deny_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
            user = request.user
            business = Business.objects.get_business_by_user(user=user)

            proposal = Proposal.objects.get_by_id(id=id, business=business)

            if proposal in Proposal.objects.ERRORS:
                return HttpResponse(status=404)
            response = proposal.deny_by_business();

            if response in Proposal.ERRORS:
                return JsonResponse(data={'error':response},status=400)
            return JsonResponse(data={'id':response.id})
        try:
            id = force_text(urlsafe_base64_decode(pidb64))
            token = force_text(urlsafe_base64_decode(tokenb64))

            response = Proposal.objects.deny_proposal(id=id, token=token)
            print(response)
            if response == Proposal.objects.ERROR_TOKEN:
                return render_to_response("base/invoice/proposal/failed.html")
            elif response == Proposal.objects.ERROR_EXPIRED:
                return render_to_response("base/invoice/proposal/failed.html")
            else:
                return render_to_response("base/invoice/proposal/denied_success.html")
        except Exception as e:
            print(e)
            return HttpResponse(status=400)
Beispiel #10
0
    def post(self, request, *args, **kwargs):
        user = request.user
        business = Business.objects.filter(owner=user).first()
        customer = None
        id = kwargs.get('id')
        if id:
            customer = Customer.objects.get_one_by_business_and_id(
                business=business, id=id)
        # print(request.body)
        if not check_permission(request=request, permission='add_customer'):
            return HttpResponse(status=401)
        print(request.body)
        data = json.loads(request.body.decode())
        print(data.get('birthday'))

        if data.get('birthday'):
            dt_value = DateTimeField().to_python(data.get('birthday'))
            dd_value = dt_value.date()
            dd_formatted = formats.date_format(dd_value, 'Y-m-d')
            data['birthday'] = dd_formatted

        if data.get('prefix'):
            data['prefix'] = data.get('prefix').get('id')
        if data.get('suffix'):
            data['suffix'] = data.get('suffix').get('id')
        # return HttpResponse()
        # state = N_State.objects.filter(id=data.get('state')).first()
        # if not state:
        #     return JsonResponse(status=400, data=[{'state':[{'messasge':'Campo requerido'}]}], safe=False)
        form = CustomerForm(data)

        if form.is_valid():
            print(form.cleaned_data)
            response = Customer.objects.create_or_update_customer(
                form.cleaned_data, business=business, customer=customer)
            if response in Customer.objects.ERRORS:
                if response == Customer.objects.EMAIL_ERROR:
                    return JsonResponse(status=400,
                                        data=[{
                                            'state': [{
                                                'messasge':
                                                'Correo Repetido'
                                            }]
                                        }],
                                        safe=False)
                return JsonResponse(status=400,
                                    data=[{
                                        'state': [{
                                            'messasge':
                                            'Error al procesar los datos'
                                        }]
                                    }],
                                    safe=False)
            return JsonResponse(status=201, data=response.serialize())
        else:
            return JsonResponse(form.errors.as_json(), status=400, safe=False)
Beispiel #11
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='remove_customer'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.filter(owner=user).first()

        Customer.objects.delete_by_business(id=id, business=business)
        # messages.success(request, 'Se ha eliminado satisfactoriamnte el cliente ')
        return HttpResponse(status=200)
Beispiel #12
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='update_profile'):
            return HttpResponseRedirect(redirect_to=reverse('login'))

        is_ajax = request.is_ajax()

        user = request.user
        business = Business.objects.filter(owner=user).first()
        logo_url = business.get_logo_url

        # need_payment = business.need_payment_order()
        # logo_url = business.logo.url[business.logo.url.find('/media/'+settings.PROFILE_DIR_NAME+'/'):]
        form = BusinessProfileForm(request.POST, request.FILES)
        errors = {}
        if form.is_valid():

            response = Business.objects.update_business_data(
                business, form.cleaned_data, logo=request.FILES.get('logo'))

            if response in Business.objects.ERRORS:
                if response == Business.objects.EMAIL_ERROR:
                    errors['email'] = "Correo Repetido"
                if is_ajax:
                    return JsonResponse([errors, form.errors], status=400)
                print(errors)
                print(response)
                return render_to_response(
                    "base/business/profile.html",
                    RequestContext(
                        request, {
                            'logo_url': logo_url,
                            'business': business,
                            'form': form,
                            'errors': errors
                        }))
            else:
                logo_url = response.get_logo_url
                if is_ajax:
                    return HttpResponse()
                return HttpResponseRedirect(redirect_to=reverse('dashboard'))
                #return render_to_response("base/business/profile.html", RequestContext(request, {'logo_url':logo_url,'business':business,'form':form}))
        else:
            if is_ajax:
                return JsonResponse(form.errors, status=400)
            return render_to_response(
                "base/business/profile.html",
                RequestContext(
                    request, {
                        'logo_url': logo_url,
                        'business': business,
                        'form': form,
                        'errors': errors
                    }))
Beispiel #13
0
 def get(self, request, *args, **kwargs):
     if not check_permission(request=request,
                             permission='update_subscription'):
         return HttpResponseRedirect(redirect_to=reverse('login'))
     business_id = kwargs.get('business_id')
     PUBLISHABLE_KEY = settings.STRIPE_PUBLISHABLE_KEY
     return render_to_response(
         'base/stripe_account/reopen_subscribe.html',
         RequestContext(request, {
             'PUBLISHABLE_KEY': PUBLISHABLE_KEY,
             'business_id': business_id
         }))
Beispiel #14
0
    def get(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='edit_customer'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.filter(owner=user).first()

        customer = Customer.objects.get_one_by_business_and_id(business=business, id=id)

        if customer:
            form = CustomerForm(instance=customer, initial=self.set_data_from_customer(customer))
            return render_to_response("base/customer/form.html", RequestContext(request,{'form':form}))
        else:
            return HttpResponse(status=404)
Beispiel #15
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='delete_proposal'):
           return HttpResponse(status=401)
        user = request.user
        business = Business.objects.filter(owner=user).first()

        data = json.loads(request.body.decode())

        ids = [prop.get('id') for prop in data]
        try:
            deleted = Proposal.objects.bulk_delete(ids_list=ids, business=business)
            return JsonResponse(status=200, data={'deleted':deleted})
        except Exception as e:
            print(e)
            return HttpResponse(status=400)
Beispiel #16
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='delete_proposal'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')
        if id:
            user = request.user
            business = Business.objects.get_business_by_user(user=user)

            proposal = Proposal.objects.get_by_id(id=id, business=business)
            response = Proposal.objects.cancell_proposal(proposal)

            if response in Proposal.objects.ERRORS:
                return HttpResponse(status=400)
            return HttpResponse()

        return HttpResponse()
Beispiel #17
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='delete_invoice'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')
        if id:
            user = request.user
            business = Business.objects.get_business_by_user(user=user)

            invoice = Invoice.objects.get_by_id(id=id, business=business)
            response = Invoice.objects.delete_invoice(invoice)

            if response in Invoice.objects.ERRORS:
                return HttpResponse(status=400)
            return HttpResponse()

        return HttpResponse()
Beispiel #18
0
    def post(self, request, *arg, **kwargs):
        if not check_permission(request=request, permission='mail_invoice'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        invoice = Invoice.objects.get_by_id(id=id, business=business)
        if invoice in Invoice.objects.ERRORS or not invoice.may_send_email():
            return HttpResponse(status=404)

        response = task_send_invoice(invoice)

        if response == OK:
            return JsonResponse(status=200, data={})
        else:
            return JsonResponse(status=500, data={})
Beispiel #19
0
    def post(self, request, *arg, **kwargs):
        if not check_permission(request=request, permission='mail_invoice'):
           return HttpResponse(status=401)
        id = kwargs.get('id')
        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        invoice = Invoice.objects.get_by_id(id=id, business=business)
        if invoice in Invoice.objects.ERRORS or not invoice.may_send_email():
            return HttpResponse(status=404)

        old_status = invoice.status
        invoice.prepare_to_send()

        response = task_send_invoice(invoice, old_status=old_status)

        if response == OK:
            return JsonResponse(status=200, data=invoice.proposal.serialize(Proposal.default_fields+['invoice']), safe=False)
        else:
            return JsonResponse(status=500, data={})
Beispiel #20
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='update_subscription'):
           return HttpResponseRedirect(redirect_to=reverse('login'))
        PUBLISHABLE_KEY = settings.STRIPE_PUBLISHABLE_KEY
        business_id = kwargs.get('business_id')
        business = Business.objects.get_business_by_id(id=business_id)
        stripeToken = request.POST.get('stripeToken')
        response = None
        try:
            with transaction.atomic():
                response = reopen_subscription(localcustomer=business.stripecustomer,newtoken=stripeToken)
                if response in ERRORS:
                    raise RuntimeError()
                business.set_stripe_customer(customer=response)

                return render_to_response('base/stripe_account/reopen_subscribe.html', RequestContext(request, {
                    'error':response,
                    'succeed':True,
                    'PUBLISHABLE_KEY':PUBLISHABLE_KEY,'business_id':business_id}))
        except:
            return render_to_response('base/stripe_account/reopen_subscribe.html', RequestContext(request, {'error':response,'PUBLISHABLE_KEY':PUBLISHABLE_KEY,'business_id':business_id}))
Beispiel #21
0
    def post(self, request, *arg, **kwargs):
        if not check_permission(request=request, permission='mail_proposal'):
                return HttpResponseRedirect(redirect_to=reverse('login'))
        id = kwargs.get('id')

        user = request.user
        business = Business.objects.get_business_by_user(user=user)

        proposal = Proposal.objects.get_by_id(id=id, business=business)
        proposal.event.schedule()
        if proposal in Proposal.objects.ERRORS or not proposal.may_send_email():
            return HttpResponse(status=404)

        old_status = proposal.status
        proposal.prepare_to_send()
        response = task_send_proposal(proposal, old_status=old_status)

        if response == OK:
            return JsonResponse(status=200, data={})
        else:
            return JsonResponse(status=500, data={})
Beispiel #22
0
    def post(self, request, *args, **kwargs):
        if not check_permission(request=request, permission='update_profile'):
            return HttpResponse(status=401)
        user  = request.user
        business = Business.objects.get_business_by_user(user=user)
        data = json.loads(request.body.decode())

        profile_data = self._extract_data(data=data)
        print('Es le usuario el que esta editado su profile:', user.email == profile_data.get('email'))

        # print(profile_data)

        form = BusinessProfileForm(profile_data)
        if form.is_valid():
            data_to_save = form.cleaned_data
            response = Business.objects.update_business_data(business=business, data=data_to_save)
            if response in Business.objects.ERRORS:
                if response == Business.objects.EMAIL_ERROR:
                    data = {'email':[{'code':'repeated', 'message':'Este correo ya esta en uso'}]}
                return JsonResponse(status=400, safe=False, data=json.JSONEncoder().encode(data))
            return HttpResponse(status=200)
        else:
            return JsonResponse(status=400, safe=False, data=form.errors.as_json())
Beispiel #23
0
 def get(self, request, *args, **kwargs):
     if not check_permission(request=request, permission='add_customer'):
        return HttpResponseRedirect(redirect_to=reverse('login'))
     form = CustomerForm()
     return render_to_response("base/customer/form.html", RequestContext(request, {'form':form}))