sobota 23. června 2018

Raiffaisen Bank XML

Pokud nemáte podnikatelský účet, tak máte možnost exportovat bankovní výpisi u Raiffaisen Bank pouze do PDF nebo XML. XML soubor, ale nelze načíst do ekonomického systému jako je např. Money S3 nebo Stormware Pohoda.
Raiffaisen bank tímto nutí majitele účtů aby platili za možnost integrace s ERP systémy cca 150,-Kč / mes za podnikatelský účet. 
Řešením je transformace XML souboru do formátu ABO, který umí načíst asi každý účetní systém. Bohužel ke XML formátu Raifka neposkytuje dokumentaci. Tak nezbývá nic jiného než si na význam jednotlivých informací ve výpise přijít sám. Aby jste nemuseli absoluovat stejný výzkum jako já, tak tady uvádím výsledek mého zkoumání.

Struktura souboru

<?xml version='1.0' encoding='ISO-8859-1'?>
<OFX>
<STMTRS>
<BANKACCTFROM>
<BANKID>5500</BANKID>
<ACCTID>000000 1578954234</ACCTID>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>31.03.2015</DTSTART>
<DTEND>30.04.2015</DTEND>
<BALOPEN>15.65</BALOPEN>
<BALCLOSE>112.8</BALCLOSE>
...
<STMTTRN>
<TRNTYPE>CREDIT</TRNTYPE>
<DTPOSTED>20140330</DTPOSTED>
<DTAVAIL>20140330</DTAVAIL>
<TRNAMT>49980</TRNAMT>
<TRNSPSYM>0000000000</TRNSPSYM>
<TRNVASYM>0143459756</TRNVASYM>
<TRNCOSYM>0000000308</TRNCOSYM>
<NAME>P&#345;&#237;choz&#237; platba</NAME>
<BANKACCTO>
<BANKID>0100</BANKID>
<ACCTID>9446534895</ACCTID>
<ACCTKEY>000000</ACCTKEY>
</BANKACCTO>
<MEMO/>
<CURRENCY>CZK</CURRENCY>
</STMTTRN>
...
</BANKTRANLIST>
</STMTRS>
</OFX>

Popis hlavičky souboru

BANKID = kód banky
ACCTID = číslo účtu včetně předčíslí oddělené mezerou

Popis Bonkovního výpisu

DTSTART = Datum začátku výpisu ve forátu 28.01.2013
DTEND  = Datum začátku výpisu ve forátu 31.02.2013
BALOPEN = počáteční stav účtu ve formátu 170.95
BALCLOSE = konečný stav účtu ve formátu 268.79

Popis položek výpisu

DTPOSTED = Den účtování (dříve) (20130230 = 30.02.2013)
DTAVAIL = Den valuty (později ) (20130230 = 30.02.2013)

TRNAMT = Objem transakce * 1/100 (216 = 2,16)
CURRENCY = Měna transakce - nevypovídá o tom jestli se jedná o zahraniční nebo tuzemskou platbu a zda kód banky a bankovní účet obsahuje IBAN a BIC nebo numerické číslo tuzemského účtu

TRNSPSYM = Specifický symbol (nepovinný)
TRNVASYM = Variabilní symbol (nepovinný)
TRNCOSYM = Constantní symbol (nepovinný)
TRNTYPE = DEBIT / CREDIT

ACCTKEY = Předčíslí bankovního účtu (nepovinný)
ACCTID = Číslo bankovního účtu nebo IBAN (nepovinný)
BANKID = Kód banky nebo BIC (nepovinný)

MEMO = Detail transakce (nepovinný)
<MEMO>DA&#327; Z &#218;ROK&#366;</MEMO>
NAME = Typ transakce
<NAME>Provoz &#250;&#269;tu</NAME>
<NAME>P&#345;&#237;choz&#237; platba</NAME>
<NAME>Odchoz&#237; platba</NAME>

Platba kartou

Nemá nastaveny symboly ani informace o protiúčtu<TRNSPSYM/>
<TRNVASYM/>
<TRNCOSYM/>
<NAME>Platba PK u obchodn&#237;ka</NAME>
<BANKACCTO>
<BANKID/>
<ACCTID/>
<ACCTKEY/>
</BANKACCTO>

BIC

ISO 9362

Např. 
Fio banka - FIOZSKBA
mBank - BREXSKBX

SWIFT

https://cs.wikipedia.org/wiki/SWIFT

Závěrem

Pokud Vám tento článek v něčem pomohl, budu rád pokud mi to napíšete do komentáře. Pokud najdete nějakou chybu nebo máte připomínku tak mi napište a já článek opravím aby se se stejnou chybou nemuseli mordovat ostatní co si ho přečtou. 

pátek 9. března 2018

Nic neříkající chybová hláška při chybě v migračním scriptu

Chybová hláška
Either the parameter@objname is ambiguous or the claimed @objtype (COLUMN) is wrong.
je důsledkem neúspěšné migrace na základě instrukce:
RenameColumn(table: "dbo.CompanyTextTemplate", name: "CompanyId", newName: "AgendaId");
Která je přeložena na SQL dotaz:
EXECUTE sp_rename @objname = N'dbo.CompanyTextTemplate.CompanyId', @newname = N'AgendaId', @objtype = N'COLUMN'

Který se neprovede protože neexistuje sloupec  CompanyId jelikož již byl přejmenován.

Zdroj:
https://stackoverflow.com/questions/3091609/how-can-i-solve-either-the-parameter-objname-is-ambiguous-or-the-claimed-objt

čtvrtek 8. března 2018

Globalizace MVC aplikace

Nastavení ve WebConfigu

<system.web>
<globalization uiCulture="en" culture="en-AU" />
</system.web>

Přebije  výchozí nastavení systému. Pokud OS má výchozí jazyk EN pak IIS spouští aplikace jako anglické pokud není uvedeno ve WebConfigu explicitně jinak nebo nedojde k přepnutí během běhu programu.

např. v Global.asax  v metodě Application_BeginRequest
protected void Application_BeginRequest()
        {
           // nastavení jiné Culture
        }

úterý 6. března 2018

Jak vyhledat záznam podle počátečního písmene bez ohledu na diakritiku nebo velikost písmene?

Řetězce v požadovaném sloupci např. Title je potřeba porovnávat CI (Case Insensitive) - bez ohledu na velikost, AI (Accent Insensitive) - bez ohledu na diakritiku.


SELECT *
FROM [dbo].[Company]
WHERE [Title] COLLATE Latin1_General_CI_AI LIKE 'c%'

Zdroj:
https://stackoverflow.com/questions/3578582/how-can-i-remove-accents-on-a-string
https://stackoverflow.com/questions/14400856/entity-framework-case-insensitive-contains

středa 31. ledna 2018

Jak zjistím jak dlouho se to bude tisknout a kolik mě to bude stát?


Cura

Cura Vám umožní měnit nastavení tisku a sledovat jak se mění doba tisku a spotřeba materiálu.
Model na obrázku se bude například tisknout 6 hodin a 15 minu. To ale jen díky tomu že infill (výplň modelu) máme nastavenou na 10%.

Při jeho tisku se spotřebuje 78g materiálu.
Pokud tiskneme z PLA kde 750g stojí 550,- pak nás jeden gram stojí 0,74 Kč z toho pak spočítáme cenu materiálu na vytisknutí modelu 57,72 Kč

Pokud by jsem chtěli plnou výplň (infill 100%) tak se model bude tisknout celý den a spotřebujeme polovinu špulky (cca 350g) tisk by nás potom přišel na 260.- Kč

https://ultimaker.com/en/products/ultimaker-cura-software

středa 13. prosince 2017

pondělí 4. prosince 2017

Vývoj aplikace pro Android - Začátek

Instalace Android Studia

https://developer.android.com/studio/install.html

Zapnout na telefonu vývojářský režim

  1. Otevři nastavení telefonu.
  2. Sjeď úplně dolů kde je O zařízení
  3. Sjeď dolů na číslo sestavení a ťukni na něj 7x
  4. Vrať se zpět kde se objeví nová položka menu Vývojářské možnosti
https://developer.android.com/studio/debug/dev-options.html#general

Časový rozvrh (~2,5hod)

  1. Stažení aplikace Android Studio - 20min
  2. Instalace Android studio - 4min
  3. Inicializace Android Studia - 25min
  4. Zprovoznění debugování a emulátoru - 70min
  5. Vývoj jednoduché výpočetní aplikace - 23min

Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="20dp"
android:orientation="vertical" >
https://developer.android.com/guide/topics/ui/layout/linear.html

String to Float

Float f = Float.parseFloat(s);
https://stackoverflow.com/questions/10735679/how-to-convert-string-into-float-value-in-android

Button Click Event

Frontend
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btnCalculate_Click"
android:text="Vypočítat"
/>
Backend
public void btnCalculate_Click(View v)
{
txtResult = (TextView)findViewById(R.id.txtResult);
txtWeight1 = (TextView)findViewById(R.id.txtWeight1);
txtWeight2 = (TextView)findViewById(R.id.txtWeight2);
float weight1 = Float.parseFloat(txtWeight1.getText().toString());
float weight2 = Float.parseFloat(txtWeight2.getText().toString());
float value = (weight2-weight1)/weight2*100;
txtResult.setText("Výsledek je: " + value + "%");
}
https://www.youtube.com/watch?v=RCyuqMVGl4g
https://www.youtube.com/watch?v=6qo_Opqjhew