-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
wlodek.sp
committed
Aug 11, 2021
0 parents
commit 1c20035
Showing
838 changed files
with
406,947 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# jpk |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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__() | ||
|
||
|
Oops, something went wrong.