Esempio n. 1
0
        private async Task <ErrorCodes> SavePdfFileToVouchers(
            CrudAPI crudApi,
            docType_ns_VSKSkyrslaSvar reply)
        {
            var errorCode = ErrorCodes.NoSucces;

            byte[] docBytes = reply.PDFKvittun;
            var    vc       = new VouchersClient
            {
                _Data         = docBytes,
                Fileextension = FileextensionsTypes.PDF,
                Text          = "VSK skil",
                _Amount       = reply.NidurstadaSkila.Fjarhaedir.TilGreidslu ?? 0,
                _Content      = ContentTypes.Documents,
            };
            var success = false;

            while (!success)
            {
                errorCode = await crudApi.Insert(vc);

                success = errorCode == ErrorCodes.Succes;
                if (!success)
                {
                    UnicontaMessageBox.Show(
                        Localization.GetLocalization(Uniconta.Common.Language.Is).Lookup(errorCode.ToString()) + "\nReyna aftur?", // Try again?
                        "Villa við vistun",                                                                                        // Error while saving
                        messageBoxImage: MessageBoxImage.Error,
                        messageBoxButton: MessageBoxButton.YesNo
                        );
                }
            }
            return(errorCode);
        }
        public bool PreValidate()
        {
            if (!Country2Language.IsEU(companyCountryId))
            {
                UnicontaMessageBox.Show(Localization.lookup("AccountCountryNotEu"), Localization.lookup("Warning"));
                return(false);
            }

            if (string.IsNullOrWhiteSpace(companyRegNo))
            {
                UnicontaMessageBox.Show(string.Format(Localization.lookup("MissingOBJ"), Localization.lookup("CompanyRegNo")), Localization.lookup("Warning"));
                return(false);
            }

            return(true);
        }
Esempio n. 3
0
        async void calc(DateTime fromDate, DateTime toDate)
        {
            SetBusy();

            var employee = (master as Uniconta.DataModel.Employee)?._Number;

            var propValuePairList = new List <PropValuePair>()
            {
                PropValuePair.GenereteWhereElements("Date", typeof(DateTime), string.Concat(fromDate.ToShortDateString(), "..", toDate.ToShortDateString())),
                PropValuePair.GenereteWhereElements("Deleted", typeof(int), "0")
            };
            var invoiceHeaders = await api.Query <DebtorInvoiceClient>(dgEmployeeCommissionGrid.masterRecords, propValuePairList);

            var commlstLine = new List <EmployeeCommissionClient>(1000);
            var commlstHead = new List <EmployeeCommissionClient>(1000);
            var commAll     = (IEnumerable <EmployeeCommissionClient>)dgEmployeeCommissionGrid.ItemsSource;

            foreach (var rec in commAll)
            {
                if (rec._Disabled)
                {
                    continue;
                }

                if (rec._FromDate != DateTime.MinValue && rec._FromDate > toDate)
                {
                    continue;
                }

                if (rec._ToDate != DateTime.MinValue && rec._ToDate < fromDate)
                {
                    continue;
                }

                if (employee != null && employee != rec._Employee)
                {
                    continue;
                }

                if (rec._PerLine)
                {
                    commlstLine.Add(rec);
                }
                else
                {
                    commlstHead.Add(rec);
                }
            }

            var sort = new EmployeeCommissionClientSort();

            commlstLine.Sort(sort);
            commlstHead.Sort(sort);

            var debtors = api.GetCache(typeof(Uniconta.DataModel.Debtor));

            var calComs = new List <CalCommissionClient>();

            if (commlstLine.Count > 0)
            {
                propValuePairList.RemoveAt(1); // remove Deleted
                propValuePairList.Add(PropValuePair.GenereteWhereElements("MovementType", typeof(int), "1"));

                var trans = await api.Query <InvTransClient>(dgEmployeeCommissionGrid.masterRecords, propValuePairList); //sandt

                if (trans != null)
                {
                    var invItems = api.GetCache(typeof(Uniconta.DataModel.InvItem));

                    // lets sort invoices so we can find employee on invoice header
                    var invSort = new InvoiceSort();
                    DebtorInvoiceClient invKey = null;
                    if (invoiceHeaders != null && invoiceHeaders.Length > 0)
                    {
                        Array.Sort(invoiceHeaders, invSort);
                        invKey = new DebtorInvoiceClient();
                    }

                    foreach (var tran in trans)
                    {
                        var    item      = tran._Item;
                        var    acc       = tran._DCAccount;
                        var    emp       = tran._Employee;
                        string debGroup  = null;
                        string itemGroup = null;

                        if (item != null)
                        {
                            var inv = (InvItem)invItems.Get(item);
                            itemGroup = inv?._Group;
                        }
                        if (acc != null)
                        {
                            var deb = (Debtor)debtors.Get(acc);
                            debGroup = deb?._Group;
                        }
                        if (emp == null && invKey != null)
                        {
                            invKey._InvoiceNumber = tran._InvoiceNumber;
                            invKey._DCAccount     = tran._DCAccount;
                            invKey._Date          = tran._Date;
                            var pos = Array.BinarySearch(invoiceHeaders, invKey, invSort);
                            if (pos >= 0 && pos < invoiceHeaders.Length)
                            {
                                var rec = invoiceHeaders[pos];
                                emp = tran._Employee = rec._Employee;
                            }
                        }

                        foreach (var c in commlstLine)
                        {
                            var cmp = string.Compare(c._Employee, emp);
                            if (cmp > 0)
                            {
                                break;
                            }

                            if (cmp == 0 &&
                                CompareKey(c._Item, item) && CompareKey(c._Account, acc) && CompareKey(c._ItemGroup, itemGroup) &&
                                CompareKey(c._DebGroup, debGroup))
                            {
                                var calculatedCommission = CalculateCommissionInvTran(tran, c);
                                if (calculatedCommission == null || calculatedCommission._Commission == 0)
                                {
                                    continue;
                                }

                                calComs.Add(calculatedCommission);

                                if (!c._KeepLooking)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            if (commlstHead.Count > 0 && invoiceHeaders != null)
            {
                foreach (var it in invoiceHeaders)
                {
                    string debGroup = null;
                    var    emp      = it._Employee;
                    var    acc      = it._DCAccount;
                    if (acc != null)
                    {
                        var deb = (Debtor)debtors.Get(acc);
                        debGroup = deb?._Group;
                    }

                    foreach (var c in commlstHead)
                    {
                        var cmp = string.Compare(c._Employee, emp);
                        if (cmp > 0)
                        {
                            break;
                        }

                        if (cmp == 0 && CompareKey(c._Account, acc) && CompareKey(c._DebGroup, debGroup))
                        {
                            var calculatedCommission = CalculateCommissionDebInvoice(it, c);
                            if (calculatedCommission == null || calculatedCommission._Commission == 0)
                            {
                                continue;
                            }

                            calComs.Add(calculatedCommission);

                            if (!c._KeepLooking)
                            {
                                break;
                            }
                        }
                    }
                }
            }
            ClearBusy();

            if (calComs.Count == 0)
            {
                UnicontaMessageBox.Show(Localization.lookup("NoRecordExport"), Uniconta.ClientTools.Localization.lookup("Message"));
                return;
            }
            var arr = calComs.ToArray();

            Array.Sort(arr, new CalCommissionClientSort());
            AddDockItem(TabControls.CalculatedCommissionPage, new object[] { arr }, Uniconta.ClientTools.Localization.lookup("CalculateCommission"), null, true);
        }
        public void Validate(IEnumerable <IntrastatClient> intralst, bool compressed, bool onlyValidate)
        {
            var countErr = 0;

            foreach (var intra in intralst)
            {
                var hasErrors = false;
                intra.SystemInfo = null;

                if (compressed && intra.Compressed == false)
                {
                    hasErrors = true;
                    if (intra.SystemInfo == VALIDATE_OK)
                    {
                        intra.SystemInfo = Localization.lookup("CompressPosting");
                    }
                    else
                    {
                        intra.SystemInfo += Environment.NewLine + Localization.lookup("CompressPosting");
                    }
                }

                if (intra.IsTriangularTrade)
                {
                    intra.SystemInfo = Localization.lookup("TriangleTrade");
                    continue;
                }

                if (intra.ItemCode == null)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += string.Format(Localization.lookup("OBJisEmpty"), Localization.lookup("TariffNumber"));
                }
                else
                {
                    intra.ItemCode = Regex.Replace(intra.ItemCode, "[^0-9]", "");
                }

                if (intra.ItemCode != null && intra.ItemCode.Length != 8)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += string.Format(Localization.lookup("InvalidValue"), Localization.lookup("TariffNumber"), intra.ItemCode);
                }

                if (intra.Country == CountryCode.Unknown)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += intra.SystemInfo + Localization.lookup("CountryNotSet");
                }
                if (intra.Country == companyCountryId)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += intra.SystemInfo + Localization.lookup("OwnCountryProblem");
                }
                if (!Country2Language.IsEU(intra.Country))
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += Localization.lookup("NonEUCountry");
                }

                if (intra.CountryOfOrigin == CountryCode.Unknown && intra._CountryOfOriginUNK == IntraUnknownCountry.None)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += string.Format(Localization.lookup("MissingOBJ"), Localization.lookup("CountryOfOrigin"));
                }

                if (intra.InvAmount == 0)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += Localization.lookup("NoValues");
                }

                if (intra.NetWeight == 0 && intra.IntraUnit == 0 && (string.IsNullOrWhiteSpace(intra.ItemCode) || !intra.ItemCode.Contains("99500000")))
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += string.Format(Localization.lookup("MissingOBJ"), Localization.lookup("Weight"));
                }

                if (intra.TransType == null)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += Localization.lookup("EmptyTransferType");
                }

                if (!string.IsNullOrWhiteSpace(intra.TransType) && intra.TransType.Length != 2)
                {
                    hasErrors         = true;
                    intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                    intra.SystemInfo += string.Format(Localization.lookup("InvalidValue"), Localization.lookup("TransferType"), intra.TransType);
                }

                if (intra.ImportOrExport == ImportOrExportIntrastat.Export)
                {
                    if (string.IsNullOrWhiteSpace(intra.fDebtorRegNo))
                    {
                        hasErrors         = true;
                        intra.SystemInfo += intra.SystemInfo != null ? Environment.NewLine : null;
                        intra.SystemInfo += string.Format(Localization.lookup("MissingOBJ"), Localization.lookup("DebtorRegNo"));
                    }
                }

                if (hasErrors)
                {
                    countErr++;
                }
                else
                {
                    intra.SystemInfo = VALIDATE_OK;
                }
            }
        }
        private List <PaymentStatus> ReadStatusReport(XmlDocument xmlDoc)
        {
            this.xmlDoc = xmlDoc;

            List <PaymentStatus> paymentStatusList = new List <PaymentStatus>();

            ns = new XmlNamespaceManager(xmlDoc.NameTable);
            ns.AddNamespace("ns", XMLNS_ver00200103);

            var HeaderMsgId          = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:GrpHdr/ns:MsgId");
            var HeaderCreatedDate    = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:GrpHdr/ns:CreDtTm");
            var HeaderBankID         = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:GrpHdr/ns:InitgPty/ns:Id/ns:OrgId/ns:BICOrBEI");
            var HeaderCustomerID     = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:GrpHdr/ns:InitgPty/ns:Id/ns:OrgId/ns:Othr/ns:Id");
            var HeaderschmeNmCd      = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:GrpHdr/ns:InitgPty/ns:Id/ns:OrgId/ns:Othr/ns:SchmeNm/ns:Cd");
            var HeaderOrigMsgId      = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:OrgnlMsgId");
            var HeaderPaymFormat     = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:OrgnlMsgNmId");
            var HeaderNumbOfPayments = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:OrgnlNbOfTxs");
            var HeaderGroupStatus    = getNodeValue("//ns:Document/ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:orgnlGrp_GrpSts");

            foreach (XmlNode orgnlPmtInfAndSts in xmlDoc.SelectNodes("//ns:Document/ns:CstmrPmtStsRpt/ns:OrgnlPmtInfAndSts", ns))
            {
                paymentStatus = new PaymentStatus();

                //Header >>
                paymentStatus.HeaderMsgId          = HeaderMsgId;
                paymentStatus.HeaderCreatedDate    = HeaderCreatedDate;
                paymentStatus.HeaderBankID         = HeaderBankID;
                paymentStatus.HeaderCustomerID     = HeaderCustomerID;
                paymentStatus.HeaderschmeNmCd      = HeaderschmeNmCd;
                paymentStatus.HeaderOrigMsgId      = HeaderOrigMsgId;
                paymentStatus.HeaderPaymFormat     = HeaderPaymFormat;
                paymentStatus.HeaderNumbOfPayments = HeaderNumbOfPayments;
                paymentStatus.HeaderGroupStatus    = HeaderGroupStatus;
                //Header <<

                //Trans >>
                paymentStatus.TransInstrId       = getNodeValue(orgnlPmtInfAndSts, "ns:OrgnlPmtInfId");
                paymentStatus.TransEndToEndId    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlEndToEndId");
                paymentStatus.TransStatus        = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:TxSts");
                paymentStatus.TransStatusCode    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:StsRsnInf/ns:Rsn/ns:Cd");
                paymentStatus.TransStatusCodeAdd = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:StsRsnInf/ns:AddtlInf");
                var amount = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:Amt/ns:InstdAmt");
                paymentStatus.TransAmount      = Uniconta.Common.Utility.NumberConvert.ToDouble(amount);
                paymentStatus.TransCcy         = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:Amt/ns:InstdAmt", "Ccy");
                paymentStatus.TransReqPaymDate = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:ReqdExctnDt");
                paymentStatus.TransDbtrName    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:Dbtr/ns:Nm");
                paymentStatus.TransDbtrIBAN    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:DbtrAcct/ns:Id/ns:IBAN");
                paymentStatus.TransDbtrBIC     = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:DbtrAgt/ns:FinInstnId/ns:BIC");
                paymentStatus.TransCdtrName    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:Cdtr/ns:Nm");
                paymentStatus.TransCdtrBBAN    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:CdtrAcct/ns:Id/ns:Othr/ns:Id");
                paymentStatus.TransCdtrIBAN    = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:CdtrAcct/ns:Id/ns:IBAN");
                paymentStatus.TransCdtrAccType = getNodeValue(orgnlPmtInfAndSts, "ns:TxInfAndSts/ns:OrgnlTxRef/ns:CdtrAcct/ns:Id/ns:Othr/ns:SchmeNm/ns:Cd"); //IBAN, BBAN or OCR
                //Trans <<

                // Status translation >>
                switch (paymentStatus.TransStatus)
                {
                case PAYMSTATUSID_ACSC:
                    paymentStatus.TransStatusDescriptionShort = Localization.lookup("Paid");
                    paymentStatus.TransStatusDescription      = Localization.lookup("PaymentExecuted");
                    break;

                case PAYMSTATUSID_ACSP:
                    paymentStatus.TransStatusDescriptionShort = Localization.lookup("Pending");
                    paymentStatus.TransStatusDescription      = Localization.lookup("PaymentAcceptedBank");
                    break;

                case PAYMSTATUSID_RJCT:
                    paymentStatus.TransStatusDescriptionShort = Localization.lookup("Rejected");
                    paymentStatus.TransStatusDescription      = Localization.lookup("PaymentRejectedBank");
                    break;

                case PAYMSTATUSID_PDNG:
                    paymentStatus.TransStatusDescriptionShort = Localization.lookup("Pending");
                    paymentStatus.TransStatusDescription      = Localization.lookup("PendingApproval");
                    break;

                case PAYMSTATUSID_ACWC:
                    paymentStatus.TransStatusDescriptionShort = Localization.lookup("Pending");
                    paymentStatus.TransStatusDescription      = string.Format("{0}. {1}", Localization.lookup("PaymentAcceptedBank"), Localization.lookup("NoCharges"));
                    break;
                }
                // Status translation <<

                paymentStatusList.Add(paymentStatus);
            }

            return(paymentStatusList);
        }