Wątek przeniesiony 2023-09-14 11:59 z Nietuzinkowe tematy przez MarekR22.

Ile kosztowałoby napisanie integracji z KSeF w C#?

0

J.W. Ile to by kosztowało?

1

340k

1

@kzkzg: to ja powiem 339k

2

Pytanie co rozumiesz przez "integrację z KSeF"?
Tylko zmapowanie interface sieciowego czy jakąś logikę biznesową?

0

Zależy od liczby ludzi. Im więcej ludzi tym wyższy koszt.

0

@MarekR22: Zmapowanie, w postaci plików .dll coś na wzór:

using System.IO;
using System.Xml.Schema;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Linq;
using System.Net.Http;

namespace RESTAPI3
{
    [ComVisible(true)]
    [ProgId("RESTAPI3.Class1")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class Class1
    {
        private string body;
        private string bodyTok;
        private string GenTok;
        async void getchallenge(string bramka, string nip)
        {
            string datawej = @" {""contextIdentifier"": {""type"": ""onip"", ""identifier"": " + nip + "}}";
            var doc = new StringContent(datawej, Encoding.UTF8, "application/json");

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(bramka);
                var response = client.PostAsync("api/online/Session/AuthorisationChallenge/", doc).Result;

                if (response.IsSuccessStatusCode)
                //if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
                {
                    //Console.Write("Success");
                    this.body = await response.Content.ReadAsStringAsync();                    
                }
                else
                {
                    this.body = await response.Content.ReadAsStringAsync();
                }
            }
        }

        async void InitToken(string bramka)
        {
            string datawej = "";
            var doc = new StringContent(datawej, Encoding.UTF8, "application/octet-stream");

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(bramka);
                var response = client.PostAsync("api/online/Session/InitToken/", doc).Result;

                if (response.IsSuccessStatusCode)
                //if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
                {
                    //Console.Write("Success");
                    this.bodyTok = await response.Content.ReadAsStringAsync();
                }
                else
                {
                    this.bodyTok = await response.Content.ReadAsStringAsync();
                }
            }
        }

        async void generateToken(string bramka, string roleType, string description)
        {
            string aa = @" {""contextIdentifier"": {""type"": ""onip"", ""identifier"": " + description + "}}";
            string datawej = @" {""generateToken"": {""description"": ""opis"", ""credentialsRoleList"": [{""roleType"":""introspection"",""roleDescription"": ""opis""}]}}";
            var doc = new StringContent(datawej, Encoding.UTF8, "application/json");

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(bramka);
                var response = client.PostAsync("api/online/Credentials/GenerateToken/", doc).Result;

                if (response.IsSuccessStatusCode)
                //if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
                {

                    //Console.Write("Success");
                    this.GenTok = await response.Content.ReadAsStringAsync();

                }
                else
                {
                    this.GenTok = await response.Content.ReadAsStringAsync();
                }
            }
        }

        public string getchall(string bramka, string nip)
        {
            this.getchallenge(bramka,nip);
            return this.body;
        }
        
        public string InitTok(string bramka)
        {
            this.InitToken(bramka);
            return this.bodyTok;
        }
        
        public string genTok(string bramka, string roleType, string description)
        {
            this.generateToken(bramka, roleType, description);
            return this.GenTok;
        }
    }
}

Ten dll zwraca numer referencyjny z bramki dla podanego nipu. Do reszty nie wiem jak się zabrać. Chodziłoby o podpis XML, wysyłkę pojedynczej faktury, wysyłkę paczki faktur, pobranie UPO, pobranie faktur już wysłanych i nadawanie uprawnień. Bez generowania XML, to już jest.

0

Ja ci to zrobię za złotówkę plus VAT jak mi uzasadnisz "C# bo...?"

1 użytkowników online, w tym zalogowanych: 0, gości: 1