أتمتة العاملين لحسابهم الخاص: كيفية دمج الضرائب مع مشروع تكنولوجيا المعلومات

من 1 كانون الثاني (يناير) 2019 ، صدر قانون لأربعة كيانات مكونة من الاتحاد الروسي (مناطق موسكو وموسكو وكالوغا ، وكذلك جمهورية تتارستان) ، والتي أدخلت ضريبة مهنية جديدة (NAP) كمشروع رائد. باختصار ، تتمثل مهمته الرئيسية في إنقاذ الشخصيات المهنية من جميع صعوبات الشركات الصغيرة: ضريبة بنسبة 6 ٪ (في حالة أصحاب المشاريع الخاصة) ، والمساهمات التقاعدية الإلزامية ، والتي يقترب كل عام فقط لشخص واحد من علامة 50 ألف روبل ، والإقرار الضريبي. وبالتالي ، تدعم الدولة الشركات الصغيرة من خلال تزويد أصحاب المشاريع الناشئة بفرض ضريبة منخفضة (4٪ للدخل من الأفراد و 6٪ للكيانات القانونية). إذا كنت تريد المزيد من التفاصيل ، يمكنك رؤية معلومات مفصلة على الإنترنت.

حتى الأفراد الذين يعملون في مجال تكنولوجيا المعلومات يحق لهم استخدام برامج العمل الوطنية. كيف يمكن أن تساعد؟ على سبيل المثال ، لقد قمت بتطوير خدمة تعمل على الإنترنت ، وتريد قبول المدفوعات. ليس عليك تسجيل كيان قانوني من أجل هذا النشاط الريادي وحل مجموعة من المشكلات من البداية. يكفي التسجيل كموظف يعمل لحسابه الخاص ، وفي الإفراج المشروط ، يدق يدويًا في كل خدمة أو منتج. في تلك اللحظة بالذات ، يعتقد مطور الخدمة: "هل يمكن أتمتة هذه العملية؟" والجواب هنا هو "بالطبع يمكنك!" المقالة ، في الواقع ، هي إخبارك بكيفية القيام بذلك.
ملاحظة مهمة: يستخدم مؤلف المقال المعرفة المكتسبة نتيجة دراسة التطبيق فقط من أجل حسن أتمتة الروتين. يريد نفس الدوافع لك.

الخطوة 1. تحديد حركة المرور HTTP


هنا سوف تحتاج إلى تطبيق دافعي الضرائب الرسمي "ضريبي". يمكنك تنزيله عبر Google Play.

بالنسبة لهذه المقالة ، سيكون كافياً تحديد sourceDeviceId (أظن أن هذا هو نفس معرف android) و refreshToken ، ومع ذلك ، يمكنك استكشاف جميع أساليب واجهة برمجة التطبيقات المقترحة من قبل التطبيق للدراسة. لتحديد ذلك ، تحتاج إلى تلقي طلبات HTTPS من الهاتف الذكي. لجهاز الأوراق المالية بدون حقوق الجذر ، يمكنك استخدام جهاز الكمبيوتر ، برنامج Fiddler المجاني. لفهم عمل البرنامج ، استخدمت دليلًا غير محدث تمامًا ، ومع ذلك ، كان يكفي اعتراض حركة مرور https على الهاتف الذكي وعرض التطبيق على شاشة الكمبيوتر.

بعد تثبيت كل ما تحتاجه للتسجيل باعتباره دافع الضرائب وإغلاق التطبيق. ثم قم بتنشيط برنامج Fiddler ، وإنشاء اتصال وكيل على هاتفك الذكي وبدء التطبيق مرة أخرى. سيقوم التطبيق بتقديم طلب تفويض برمز تحديث ، والذي يتم إنشاؤه في وقت هذه المقالة لمدة غير محدودة:

الصورة

كما ترون في لقطة الشاشة ، يحتوي التطبيق على المجال الأساسي lknpd.nalog.ru (نطاق فرعي لموقع خدمة الضرائب الروسية) وإصدار واجهة برمجة التطبيقات (API) 1. يتم استخدام ترخيص الطرق من قِبل Bearer ، ويتم إنشاء الرمز المميز له عبر طريقة / auth / token. البيانات من حقول الطلب sourceDeviceId و refreshToken ضرورية للغاية بالنسبة لك. لقد راجعت العمل refreshToken بعد 3 أيام من التجربة - إنه يعمل ، وبالتالي ، يمكن أخذ الرمز المميز لمدة ساعة بأمان ، ومن الواضح أنه يحتوي على refreshToken فعلي.

تبدو طريقة إرسال الطرود نفسها بهذا الشكل وتحتوي على جميع الحقول اللازمة:

الصورة

يرجى ملاحظة أن جميع الحقول مطلوبة. قد يجعلك الحقل "الخدمات" ترغب في إرسال العديد من الخدمات في الصفيف ، ومع ذلك ، سيتم عرض الخدمة الأولى فقط على الشيك ، على الرغم من أن التكلفة النهائية ستكون كاملة. ومع ذلك ، فإن الخدمة رطبة إلى حد ما ، ولم يتم إطلاقها مؤخرًا إلا ، إلا أننا لم نتطرق إلى ذلك (على الرغم من أنها عار ، في الواقع ، هناك عدة وظائف ضرورية في بعض الأحيان).

يجب أيضًا الانتباه إلى الإجابة: approvedReceiptUuid: يحتوي الحقل على رمز تحقق فريد ، والذي يمكن الحصول عليه بدون أي صعوبات من خلال TIN و UUID للشيك.

الخطوة 2. تطوير البرنامج النصي


لإظهار مفهوم الأتمتة بسرعة ، يتم استخدام Python 3.7.2 مع مكتبة الطلبات:

import requests import datetime import shutil TIME_OFFSET = '+03:00' DEVICE_ID = '' REFRESH_TOKEN = '' API_PROVIDER = 'https://lknpd.nalog.ru/api/v1/' TOKEN = '' INN = '' def DO(method, params): headers = {"Authorization":"Bearer "+TOKEN} if TOKEN != '' else {} r = requests.post(API_PROVIDER+method, json=params, headers=headers) print(r.text) return r.json() def get_token(): reqparam = { "deviceInfo": { "appVersion": "1.0.0", "metaDetails": { "browser": "", "browserVersion": "", "os": "android" }, "sourceDeviceId": DEVICE_ID, "sourceType": "android" }, "refreshToken": REFRESH_TOKEN } res = DO('auth/token', reqparam) # TODO:  tokenExpireIn       return res['token'] # TODO:    TOKEN = get_token() def new_transaction(service, amount): trans_time = datetime.datetime.now().isoformat()[:-3]+TIME_OFFSET reqparam = { "ignoreMaxTotalIncomeRestriction": False, "operationTime": trans_time, "paymentType": "CASH", "requestTime": trans_time, "services": [ { "amount": amount, "name": service, "quantity": 1 } ], "totalAmount": amount } res = DO('income', reqparam) return res['approvedReceiptUuid'] def get_receipt(receipt_uuid): headers = {"Authorization":"Bearer "+TOKEN} r = requests.get( 'https://lknpd.nalog.ru/api/v1/receipt/'+INN+"/"+receipt_uuid+"/print", stream=True, headers=headers ) with open('receipt.png', 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f) if __name__ == '__main__': rec = new_transaction(' ', '1.00') get_receipt(rec) 

استبدل القيم المطلوبة - سيعمل البرنامج النصي كما ينبغي. يمكنك إضافة معالجات الأخطاء وتحسين التسليم - لا يظهر النص أعلاه سوى مبدأ العمل مع ضريبة API NAP.
ملاحظة ربما ستنشر الضريبة في المستقبل واجهة برمجة التطبيقات ، لكنها الآن لا تفعل ذلك لمجرد أن القليل من الناس يحتاجون إليها. لذلك ، تم تأجيل هذا العمل إلى وقت لاحق. ومع ذلك ، فإنني أسارع إلى الإشارة إلى أنه إذا تم نشر الدليل الرسمي ، فسيحتوي إما على معلومات مماثلة أو سيتم تحسينه بشكل طفيف ، من حيث التفويض ، بالتأكيد.

محدث: لقد عثرت على وثائق حول الأتمتة ، والتي تتم كتابتها ... يبدو الأمر وكأنه نائب باليد: متطور للغاية وغير منظم. سيكون هناك وقت - سأكتب مقالة جديرة بالأتمتة من خلال واجهة برمجة التطبيقات الرسمية. المفسد: كل شيء هو نفسه تقريبا الذي تعلمناه من خلال حركة المرور ، يتم وصف الطرق الرسمية فقط مع طلبات البريد الإلكتروني وغيرها من الصعوبات.


الخاتمة


في الختام ، أود أن أشير: لا تكرر هذا في المنزل فلا يوجد شيء مستحيل. حتى مثل هذا الشيء الروتيني يمكن أن يكون آليا بسهولة. انسخ الرمز ، وقم بتعديله بطريقتك الخاصة. ربما سأنفذ المكتبة حتى يكون الوصول إلى الأتمتة متاحًا للجميع. أتطلع إلى انتقاداتك الموضوعية ومواصلة البحث في واجهة برمجة التطبيقات. هدفي التالي هو جعل مبدأ التفويض مثاليًا وإنشاء مكتبة لبيثون.

Source: https://habr.com/ru/post/ar436656/


All Articles