Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
wlodek.sp committed Aug 11, 2021
0 parents commit 1c20035
Show file tree
Hide file tree
Showing 838 changed files with 406,947 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# jpk
Empty file added app/__init__.py
Empty file.
26 changes: 26 additions & 0 deletions app/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.db import models
from django import forms
from django.utils.translation import ugettext_lazy as _

class MyUserAdmin(UserAdmin):
filter_horizontal= ()
list_display= ('username', 'first_name', 'last_name', 'email', 'is_superuser')
fieldsets= (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
formfield_overrides = {
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
}

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
34 changes: 34 additions & 0 deletions app/ajax.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import json

from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponse

from app.models import Plik, Firma


@login_required
def jpk_lista(request, firma):

# Pomijamy pola tekstowe ponieważ ich pobieranie/dekompresja stanowi duży narzut
pliki= Plik.objects.filter(firma__oznaczenie=firma).order_by('-id').only('id', 'utworzony', 'kod', 'dataod', 'datado', 'nazwa', 'rachunek', 'magazyn', 'wariant', 'cel_zlozenia', 'stan', 'odkad', 'czesc', 'utworzony_user', 'task')
data= [jpk.to_json() for jpk in pliki]

return HttpResponse(json.dumps({'data': data}),
content_type='application/json')


@login_required
def lista_firm(request):

return render_to_response('app/ajax/lista_firm.json',
{
'firmy': Firma.firmy()
},
context_instance= RequestContext(request),
content_type='application/json')
9 changes: 9 additions & 0 deletions app/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.apps import AppConfig


class AppConfig(AppConfig):
name = 'app'
22 changes: 22 additions & 0 deletions app/context_processors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

def alert(request):
"""
Dodanie do konteksu alertu do wyświetlenia po załadowaniu strony.
"""

alert= request.session.get('alert')
if alert:
del request.session['alert']
return {'alert': alert}
else:
return {}


def home(request):
if(not request.user.is_authenticated()):
return {'HOME_LABEL': 'KREZUS-FK'}
else:
return {}
144 changes: 144 additions & 0 deletions app/ctrl/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from app.models import Ctrl, Deklaracja, DeklaracjaPoz
from fk.models import SysPar, MagDok
import decimal


class CtrlTabeli(object):
"""
Kontrola tego co ma być uwzględnione oraz ustalanie podsumowania tabeli.
"""

def __init__(self, jpk):
self.MAX_LP= None
self.jpk= jpk
self.lp= 0
self.suma1= decimal.Decimal('0.00')
self.suma2= decimal.Decimal('0.00')

# Sprawdzenie czy istnieje baza danych pliku JPK
jpk.fkdbs('DBS')

def generator(self):
for pozycje in self.elementy:
for element in pozycje:
element.jpk= self.jpk
if self.MAX_LP and self.lp >= self.MAX_LP: return

if self.uwzglednij(pozycje, element):
self.lp += 1
element.lp= self.lp
self.sumuj(pozycje, element)
yield element

# self.uwzglednij(pozycje, None) # ewentualne wywołanie do podsumowania

def uwzglednij(self, pozycje, element):
return True

def sumuj(self, pozycje, element):
pass

def save_ctrl(self):
ctrl, _ = Ctrl.objects.get_or_create(plik= self.jpk, tabela= self.tabela)

ctrl.wiersze= self.lp
ctrl.suma1= self.suma1
ctrl.suma2= self.suma2
ctrl.save()

self.ctrl= ctrl

def do_deklaracji(self, dok, od_num, do_num, shift= 0):
"""
Uwzględnienie danego dokumentu w deklaracji.
Wszystkie niezerowe kwoty K_* są dodawane do odpowiednich pozycji deklaracji (P_*)
Kwoty z danego dokumentu są dosumowywane do pozycji deklaracji danego JPK pamiętanych
w modelu Deklaracja.
Dopiero po utworzeniu tych pozycji, mogą one być podsumowane i wwpisane do XML.
Niestety w XML deklaracja jest przed ewidencją.
"""
if dok.nr_faktury == 'KOREKTA ROCZNA':
return

for k in range(od_num, do_num+1):
kwota= getattr(dok, 'k_{}'.format(k))

if kwota != decimal.Decimal(0.00):
# Debile zmienili numerację pozycji, np. numery pozycji 43-48 ze starszych wersji
# teraz mają numery 40-45
numer= k + shift
# szukamy w Deklaracja pozycji, w której możemy zapisać daną kwotę
dek= Deklaracja.objects.filter(jpk= self.jpk, numer= numer)
if not dek:
dek= DeklaracjaPoz.pozycja_deklaracji(self.jpk, numer)
else:
dek= dek[0]
dek.kwota += kwota
dek.save()



class CtrlTabeliMag(CtrlTabeli):
"""
Kontrola sprzedaży VAT.
"""

def __init__(self, jpk, symbole, zmien_znak):
super(CtrlTabeliMag, self).__init__(jpk)

self.elementy= [
MagDok.objects.using(jpk.fkdbs('Mag')).filter(
data__gte= jpk.dataod,
data__lte= jpk.datado,
dzial= jpk.magazyn[:3],
stat= 'D'
)
.filter(**symbole)
.order_by('data', 'id'),
]

self.zmien_znak= zmien_znak
self.tabela= self.__class__.__name__.lower()

self.dokumenty= []

# cachowanie dokumentów bo i tak będą dwa przebiegi
for d in self.generator():
pass

def sumuj(self, pozycje, element):
self.suma1 += element.mag_wartosc

def uwzglednij(self, pozycje, dok):
"""
Dokument magazynowy
"""
super(CtrlTabeliMag, self).uwzglednij(pozycje, dok)

self.dokumenty.append(dok)

dok.wiersze_all= []
dok.mag_wartosc= decimal.Decimal(0)
for w in dok.wiersze.all():
if self.zmien_znak:
w.zmien_znak()
dok.mag_wartosc += w.wartosc
dok.wiersze_all.append(w)

return True



class Pozycje(object):

def __init__(self, pozycje):
self.pozycje= pozycje

def __iter__(self):
return self.pozycje.__iter__()


Loading

0 comments on commit 1c20035

Please sign in to comment.