Exemplo n.º 1
0
        public void importGeneralRetainer(bool importClosedMatters)
        {
            if (importClosedMatters)
            {
                PLBilling.m_bAllowEntOnClosedMtr   = true;
                PLTimeEntry.m_bAllowEntOnClosedMtr = true;
                PLExpense.m_bAllowEntOnClosedMtr   = true;
                PLGBEnt.m_bAllowEntOnClosedMtr     = true;
            }

            //gen retainer doesnt have an invoice number or when received > applied. The diff is added as a gen retainer
            DataTable TableGenRetainer = new DataTable("GenRetainer");

            string sSelect = "SELECT * FROM GenRetainer";

            ReadAMTable(ref TableGenRetainer, sSelect);

            for (int nGenRetainer = 0; nGenRetainer < TableGenRetainer.Rows.Count; nGenRetainer++)
            {
                if (string.IsNullOrEmpty(TableGenRetainer.Rows[nGenRetainer]["InvoiceID"].ToString().Trim())) //if there is no invoice, it is a general retainer
                {
                    //add General bank item
                    //exID 1 for oldID and 2 for nickname
                    int bankAcctID = PLGBAcct.GetIDFromExtID1(TableGenRetainer.Rows[nGenRetainer]["BankAcct"].ToString().Trim());
                    if (bankAcctID == 0)
                    {
                        PCLaw.General.BankAcctID = 1;
                    }
                    else
                    {
                        PCLaw.General.BankAcctID = bankAcctID;
                    }
                    PCLaw.General.CheckNum       = TableGenRetainer.Rows[nGenRetainer]["checkno"].ToString().Trim();
                    PCLaw.General.ClientCheckNum = TableGenRetainer.Rows[nGenRetainer]["checkno"].ToString().Trim();
                    PCLaw.General.Date           = int.Parse(TableGenRetainer.Rows[nGenRetainer]["Date"].ToString().Trim());
                    //PCLaw.General.DateEntered = (Int32)(PLDate) rdr["AddingDateTime"];
                    PCLaw.General.EntryGSTCat   = TransactionData.eGST_CAT.NO;
                    PCLaw.General.EntryType     = PLGBEnt.eGBEntryType.GEN_RCPT;
                    PCLaw.General.PaidTo        = "Unapplied Gen Retainer";
                    PCLaw.General.PmtMethodFlag = PLGBEnt.ePmtMethod.Check;
                    PCLaw.General.TotalAmount   = Math.Abs(double.Parse(TableGenRetainer.Rows[nGenRetainer]["Payment"].ToString().Trim()));

                    //if (PCLaw.GenInf.UsingGST)
                    // PCLaw.General.GSTAmount = 0.00;

                    //add retainer allocation
                    PCLaw.General.Alloc.Amount    = Math.Abs(double.Parse(TableGenRetainer.Rows[nGenRetainer]["Payment"].ToString().Trim()));
                    PCLaw.General.Alloc.EntryType = PLGBAlloc.eGBAllocEntryType.GEN_RCPT_RTNR;

                    PCLaw.General.Alloc.Explanation = TableGenRetainer.Rows[nGenRetainer]["Explanation"].ToString().Trim();
                    if (PCLaw.General.Alloc.Explanation == "")
                    {
                        PCLaw.General.Alloc.Explanation = "Conversion - Unapplied GenRet";
                    }

                    PCLaw.General.Alloc.GLID     = PLGLAccts.GetExpRecovID();
                    PCLaw.General.Alloc.MatterID = PLMatter.GetIDFromExtID2(TableGenRetainer.Rows[nGenRetainer]["MatterID"].ToString().Trim());
                    PCLaw.General.AddGBAllocation();

                    PCLaw.General.AddRecord();
                    PCLaw.General.SendLast();
                }

                //if it has an invoice ID but the amount received is greater than the amount applied, the difference is added as a general retainer
                else
                {
                    double difference = Math.Abs(double.Parse(TableGenRetainer.Rows[nGenRetainer]["Payment"].ToString().Trim())) - Math.Abs(double.Parse(TableGenRetainer.Rows[nGenRetainer]["PaymentApplied"].ToString().Trim()));
                    if (difference != 0)
                    {
                        //exID 1 for oldID and 2 for nickname
                        int bankAcctID = PLGBAcct.GetIDFromExtID1(TableGenRetainer.Rows[nGenRetainer]["BankAcct"].ToString().Trim());
                        if (bankAcctID == 0)
                        {
                            PCLaw.General.BankAcctID = 1;
                        }
                        else
                        {
                            PCLaw.General.BankAcctID = bankAcctID;
                        }
                        //PCLaw.General.CheckNum = StringManip.NullToString(rdr["RefNo"]);
                        //PCLaw.General.ClientCheckNum = StringManip.NullToString(rdr["RefNo"]);
                        PCLaw.General.Date = int.Parse(TableGenRetainer.Rows[nGenRetainer]["Date"].ToString().Trim());
                        //PCLaw.General.DateEntered = (Int32)(PLDate) rdr["AddingDateTime"];
                        PCLaw.General.EntryGSTCat   = TransactionData.eGST_CAT.NO;
                        PCLaw.General.EntryType     = PLGBEnt.eGBEntryType.GEN_RCPT;
                        PCLaw.General.PaidTo        = "Unapplied Gen Retainer";
                        PCLaw.General.PmtMethodFlag = PLGBEnt.ePmtMethod.Check;
                        PCLaw.General.TotalAmount   = Math.Abs(double.Parse(TableGenRetainer.Rows[nGenRetainer]["Received"].ToString().Trim()));

                        if (PCLaw.GenInf.UsingGST)
                        {
                            PCLaw.General.GSTAmount = 0.00;
                        }

                        PCLaw.General.Alloc.Amount    = Math.Abs(difference);
                        PCLaw.General.Alloc.EntryType = PLGBAlloc.eGBAllocEntryType.GEN_RCPT_RTNR;

                        if (PCLaw.General.Alloc.Explanation == "")
                        {
                            PCLaw.General.Alloc.Explanation = "Conversion - Unapplied GenRet with Inv";
                        }

                        PCLaw.General.Alloc.GLID     = PLGLAccts.GetExpRecovID();
                        PCLaw.General.Alloc.MatterID = PLMatter.GetIDFromExtID2(TableGenRetainer.Rows[nGenRetainer]["MatterID"].ToString().Trim());
                        PCLaw.General.AddGBAllocation();

                        PCLaw.General.AddRecord();
                        PCLaw.General.SendLast();
                    }
                }
            }
        }
Exemplo n.º 2
0
        }//end constructor

        public override void AddRecords(bool bPCLawMoreUptoDate)
        {
            if (PCLaw == null)
            {
                return;
            }


            DataTable     Table           = new DataTable("GLAcct");
            string        sSelect         = "";
            int           nGLAccount      = 0;
            List <string> existingGLAccts = new List <string>();

            //get all existing gl account names from pclaw
            while (PCLaw.GLAccts.GetNextRecord() == 0)
            {
                existingGLAccts.Add(PCLaw.GLAccts.Name.Trim());
            }

            sSelect = "SELECT * FROM [GLAcct]";
            ReadAMTable(ref Table, sSelect);

            //get each gl, see if they already exist, check to see if the shortname exists and add the gl account
            //if its a bank account then add it accordingly and add the gl reference, else add it as a gl account only

            //we add bank accounts first, then gl accounts (including bank accounts)
            for (nGLAccount = 0; nGLAccount < Table.Rows.Count; nGLAccount++) //only add the ones that arent already in pclaw
            {
                bool match = false;
                foreach (string tol in existingGLAccts)
                {
                    if (tol.Equals(Table.Rows[nGLAccount]["GLName"].ToString().Trim(), StringComparison.OrdinalIgnoreCase))
                    {
                        match = true;
                        break;
                    } //end if
                }     //end foreach

                if (!match && !string.IsNullOrEmpty(Table.Rows[nGLAccount]["BankType"].ToString().Trim()))//since there is a bank type, we know its a bank account
                {
                    //add bank accounts first then add all GL accounts including bank accounts
                    switch (Table.Rows[nGLAccount]["BankType"].ToString().Trim())
                    {
                    case "G":
                        PCLaw.GBAcct.NickName = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                        if (!string.IsNullOrEmpty(Table.Rows[nGLAccount]["BankAccountNumber"].ToString().Trim()))
                        {
                            PCLaw.GBAcct.BankAcctNumber = Table.Rows[nGLAccount]["BankAccountNumber"].ToString().Trim();
                        }
                        else
                        {
                            PCLaw.GBAcct.BankAcctNumber = "99999";
                        }
                        PCLaw.GBAcct.BankName = Table.Rows[nGLAccount]["GLName"].ToString().Trim();
                        //see if the nickname already exists and if it does, generate a new one for this entry
                        if (PLConvert.PLGLAccts.GetIDFromNN(Table.Rows[nGLAccount]["NickName"].ToString().Trim()) == 0)
                        {
                            PCLaw.GBAcct.GLNN = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                        }
                        else
                        {
                            int NNcount = 0;
                            while (true)
                            {
                                NNcount++;
                                if (PLConvert.PLGLAccts.GetIDFromNN(PCLaw.GBAcct.GLNN) == 0)
                                {
                                    break;
                                }
                                else
                                {
                                    PCLaw.GBAcct.GLNN = Table.Rows[nGLAccount]["Nickname"].ToString().Trim() + NNcount.ToString();
                                }
                            } //end while
                        }     //end else

                        PCLaw.GBAcct.ExternalID_1 = Table.Rows[nGLAccount]["GLAcctID"].ToString().Trim();
                        PCLaw.GBAcct.ExternalID_2 = Table.Rows[nGLAccount]["NickName"].ToString().Trim();

                        PCLaw.GBAcct.ID = PLGBAcct.GetIDFromNN(PCLaw.GBAcct.NickName.ToUpper());

                        PCLaw.GBAcct.AddRecord();
                        break;

                    case "T":
                        PCLaw.TBAcct.NickName = Table.Rows[nGLAccount]["NickName"].ToString().Trim();

                        PCLaw.TBAcct.BankAcctNumber = Table.Rows[nGLAccount]["BankAccountNumber"].ToString().Trim();
                        PCLaw.TBAcct.BankName       = Table.Rows[nGLAccount]["GLName"].ToString().Trim();

                        if (PLConvert.PLGLAccts.GetIDFromNN(Table.Rows[nGLAccount]["NickName"].ToString().Trim()) == 0)
                        {
                            PCLaw.TBAcct.GLNN = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                        }
                        else
                        {
                            int NNcount = 0;
                            while (true)
                            {
                                NNcount++;
                                if (PLConvert.PLGLAccts.GetIDFromNN(PCLaw.TBAcct.GLNN) == 0)
                                {
                                    break;
                                }
                                else
                                {
                                    PCLaw.TBAcct.GLNN = Table.Rows[nGLAccount]["Nickname"].ToString().Trim() + NNcount.ToString();
                                }
                            } //end while
                        }     //end else

                        PCLaw.TBAcct.ExternalID_1 = Table.Rows[nGLAccount]["GLAcctID"].ToString().Trim();
                        PCLaw.TBAcct.ExternalID_2 = Table.Rows[nGLAccount]["NickName"].ToString().Trim();

                        PCLaw.TBAcct.ID = PLTBAcct.GetIDFromNN(PCLaw.TBAcct.NickName.ToUpper());

                        PCLaw.TBAcct.AddRecord();
                        break;

                    default:     //there are no other accounts so if you get here, you did something wrong
                        break;
                    }//end switch
                } //end if
            }     //end foreach
            PCLaw.GBAcct.SendLast();
            PCLaw.TBAcct.SendLast();
            //done with bank accounts, now add glaccounts. You dont need to add bank acounts as gl accounts.
            //When we added the bank accounts, they were automatically added to the gl
            for (nGLAccount = 0; nGLAccount < Table.Rows.Count; nGLAccount++)
            {
                bool match = false;
                foreach (string tol in existingGLAccts)
                {
                    if (tol.Equals(Table.Rows[nGLAccount]["GLName"].ToString().Trim(), StringComparison.OrdinalIgnoreCase))
                    {
                        match = true;
                        break;
                    } //end if
                }     //end foreach

                if (!match && string.IsNullOrEmpty(Table.Rows[nGLAccount]["BankType"].ToString().Trim()))
                {
                    PCLaw.GLAccts.Name = Table.Rows[nGLAccount]["GLName"].ToString().Trim();
                    if (PCLaw.GLAccts.Name.Equals(""))
                    {
                        PCLaw.GLAccts.Name = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                    }
                    switch (Table.Rows[nGLAccount]["GLType"].ToString().Trim())
                    {
                    case "1":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.CURRENT_ASSET;
                        break;

                    case "2":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.SHORT_LIABILITY;
                        break;

                    case "3":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.EQUITY;
                        break;

                    case "4":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.INCOME;
                        break;

                    case "5":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.EXPENSE;
                        break;

                    case "6":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.LONG_LIABILITY;
                        break;

                    case "7":
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.FIXED_ASSET;
                        break;

                    default:
                        PCLaw.GLAccts.AcctType = PLGLAccts.eACCOUNT_TYPE.EXPENSE;
                        break;
                    }//end switch

                    existingGLAccts.Clear(); //we are done with it

                    //PCLaw.GLAccts.SpecialAcct = PLGLAccts.eSPEC_ACCT.NOT_SET; //todo. any way to tell how to get this done?
                    PCLaw.GLAccts.NickName = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                    if (PLConvert.PLGLAccts.GetIDFromNN(Table.Rows[nGLAccount]["NickName"].ToString().Trim()) == 0)
                    {
                        PCLaw.GLAccts.NickName = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                    }
                    else
                    {
                        int NNcount = 0;
                        while (true)
                        {
                            NNcount++;
                            if (PLConvert.PLGLAccts.GetIDFromNN(PCLaw.GLAccts.NickName) == 0)
                            {
                                break;
                            }
                            else
                            {
                                PCLaw.GLAccts.NickName = Table.Rows[nGLAccount]["Nickname"].ToString().Trim() + NNcount.ToString();
                            }
                        } //end while
                    }     //end else
                    PCLaw.GLAccts.DepartmentNN = PLConvert.PLDepartment.GetNNFromID(1);
                    //  if (!string.IsNullOrEmpty(Table.Rows[nGLAccount]["SubAccount"].ToString().Trim()))
                    //     PCLaw.GLAccts.SuBAcctOfNN = Table.Rows[nGLAccount]["SubAccount"].ToString().Trim();
                    //MessageBox.Show(PCLaw.GLAccts.DepartmentNN);
                    //PCLaw.GLAccts.ID = PLGLAccts.GetIDFromNN(PCLaw.GLAccts.NickName);
                    PCLaw.GLAccts.ExternalID_1 = Table.Rows[nGLAccount]["NickName"].ToString().Trim();
                    PCLaw.GLAccts.ExternalID_2 = Table.Rows[nGLAccount]["GLAcctID"].ToString().Trim();

                    PCLaw.GLAccts.AddRecord();
                } //end if
            }     //end for

            PCLaw.GLAccts.SendLast();
        }//end method